* Pure dispatch over the read tools — the switch, with no gate, no notices, no * allowlist/validation (the caller owns those). `codegraph_status` is handled * on the main thread in execute and never reaches here. May throw * NotIndexed/PathRefusal, which executeReadTool clas
(toolName: string, args: Record<string, unknown>)
| 1440 | * NotIndexed/PathRefusal, which {@link executeReadTool} classifies. |
| 1441 | */ |
| 1442 | private async dispatchTool(toolName: string, args: Record<string, unknown>): Promise<ToolResult> { |
| 1443 | switch (toolName) { |
| 1444 | case 'codegraph_search': return await this.handleSearch(args); |
| 1445 | case 'codegraph_callers': return await this.handleCallers(args); |
| 1446 | case 'codegraph_callees': return await this.handleCallees(args); |
| 1447 | case 'codegraph_impact': return await this.handleImpact(args); |
| 1448 | case 'codegraph_explore': return await this.handleExplore(args); |
| 1449 | case 'codegraph_node': return await this.handleNode(args); |
| 1450 | case 'codegraph_files': return await this.handleFiles(args); |
| 1451 | default: return this.errorResult(`Unknown tool: ${toolName}`); |
| 1452 | } |
| 1453 | } |
| 1454 | |
| 1455 | /** |
| 1456 | * Handle codegraph_search |
no test coverage detected