| 47 | OTHER: ToolBucket; |
| 48 | }; |
| 49 | function getToolBuckets(): ToolBuckets { |
| 50 | return { |
| 51 | READ_ONLY: { |
| 52 | name: 'Read-only tools', |
| 53 | toolNames: new Set([GlobTool.name, GrepTool.name, ExitPlanModeV2Tool.name, FileReadTool.name, WebFetchTool.name, TodoWriteTool.name, WebSearchTool.name, TaskStopTool.name, TaskOutputTool.name, ListMcpResourcesTool.name, ReadMcpResourceTool.name]) |
| 54 | }, |
| 55 | EDIT: { |
| 56 | name: 'Edit tools', |
| 57 | toolNames: new Set([FileEditTool.name, FileWriteTool.name, NotebookEditTool.name]) |
| 58 | }, |
| 59 | EXECUTION: { |
| 60 | name: 'Execution tools', |
| 61 | toolNames: new Set([BashTool.name, "external" === 'ant' ? TungstenTool.name : undefined].filter(n => n !== undefined)) |
| 62 | }, |
| 63 | MCP: { |
| 64 | name: 'MCP tools', |
| 65 | toolNames: new Set(), |
| 66 | // Dynamic - no static list |
| 67 | isMcp: true |
| 68 | }, |
| 69 | OTHER: { |
| 70 | name: 'Other tools', |
| 71 | toolNames: new Set() // Dynamic - catch-all for uncategorized tools |
| 72 | } |
| 73 | }; |
| 74 | } |
| 75 | |
| 76 | // Helper to get MCP server buckets dynamically |
| 77 | function getMcpServerBuckets(tools: Tools): Array<{ |