| // βββ Tools Command ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| import { ToolRegistry } from '../../core/tools/index.js'; | |
| import { readFileTool, writeFileTool, listDirTool } from '../../tools/fs/index.js'; | |
| import { shellExecTool } from '../../tools/shell/index.js'; | |
| import { webFetchTool } from '../../tools/web/index.js'; | |
| export async function toolsCommand(): Promise<void> { | |
| const registry = new ToolRegistry(); | |
| registry.register(readFileTool); | |
| registry.register(writeFileTool); | |
| registry.register(listDirTool); | |
| registry.register(shellExecTool); | |
| registry.register(webFetchTool); | |
| console.log('\n\x1b[1mAvailable Tools:\x1b[0m\n'); | |
| for (const tool of registry.list()) { | |
| const permColor = tool.permission === 'read' ? '32' : tool.permission === 'write' ? '33' : tool.permission === 'exec' ? '31' : tool.permission === 'network' ? '35' : '31'; | |
| console.log(` ${tool.renderer?.icon ?? 'π§'} \x1b[1m${tool.name}\x1b[0m \x1b[${permColor}m[${tool.permission}]\x1b[0m`); | |
| console.log(` ${tool.description}`); | |
| console.log(` \x1b[90mtimeout: ${tool.timeout}ms | retries: ${tool.retries} | side-effect: ${tool.sideEffect}\x1b[0m`); | |
| console.log(); | |
| } | |
| } | |