A turn is "trivial" (CORE only) when it's short AND carries no task signal. * Case-sensitive code checks (camelCase needs real caps) + substring keyword match * (no \b — \b doesn't work for Persian) so Persian task verbs are detected.
(signalText: string)
| 114 | // added the figma/canva MCP server — then a design/website-design ask surfaces them. |
| 115 | { members: ['mcp:figma:', 'mcp:canva:'], keywords: [ |
| 116 | 'figma', 'canva', 'design', 'website design', 'web design', 'landing page', 'mockup', |
| 117 | 'prototype', 'wireframe', 'ui design', 'design system', 'brand template', |
| 118 | 'طراحی', 'فیگما', 'کانوا', 'کانواس', 'دیزاین', 'ماکاپ', 'وبسایت', 'وبسایت', |
| 119 | 'طراحی سایت', 'طراحی وب', 'رابط کاربری', 'لندینگ', 'صفحه فرود'] }, |
| 120 | ]; |
| 121 | |
| 122 | function expand(members: string[], allNames: string[]): Set<string> { |
| 123 | const out = new Set<string>(); |
| 124 | for (const m of members) { |
| 125 | // Trailing `_` (built-in families like docker_) or `:` (MCP names like mcp:figma:) |
| 126 | // mark a prefix pattern; otherwise it's an exact tool name. |
| 127 | if (m.endsWith('_') || m.endsWith(':')) { for (const n of allNames) if (n.startsWith(m)) out.add(n); } |
| 128 | else if (allNames.includes(m)) out.add(m); |
| 129 | } |
| 130 | return out; |
| 131 | } |
| 132 |
no outgoing calls
no test coverage detected