( schemas: ToolSchema[], signalText: string, )
| 162 | trivial: boolean; |
| 163 | } |
| 164 | |
| 165 | export function selectRelevantToolNames(allNames: string[], signalText: string): RelevanceResult { |
| 166 | const text = ` ${signalText.toLowerCase()} `; |
| 167 | const selected = new Set<string>(); |
| 168 | |
| 169 | // Tier 1: CORE always. |
| 170 | for (const n of allNames) if (CORE_TOOLS.has(n)) selected.add(n); |
| 171 | |
| 172 | const trivial = isTrivial(signalText); |
| 173 | |
| 174 | // Tier 2: COMMON for any real (non-trivial) task — language-agnostic. |
| 175 | if (!trivial) { |
| 176 | for (const n of expand(COMMON_FAMILY_MEMBERS, allNames)) selected.add(n); |
| 177 | } |
| 178 | |
| 179 | // Tier 3: SPECIALIST only on explicit signal. |
| 180 | let matchedFamilies = 0; |
no test coverage detected