codemate-ai 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +314 -0
- package/dist/src/agents/base/Agent.d.ts +13 -0
- package/dist/src/agents/base/Agent.d.ts.map +1 -0
- package/dist/src/agents/base/Agent.js +10 -0
- package/dist/src/agents/base/Agent.js.map +1 -0
- package/dist/src/agents/builtin/ExploreAgent.d.ts +13 -0
- package/dist/src/agents/builtin/ExploreAgent.d.ts.map +1 -0
- package/dist/src/agents/builtin/ExploreAgent.js +71 -0
- package/dist/src/agents/builtin/ExploreAgent.js.map +1 -0
- package/dist/src/agents/builtin/GeneralAgent.d.ts +13 -0
- package/dist/src/agents/builtin/GeneralAgent.d.ts.map +1 -0
- package/dist/src/agents/builtin/GeneralAgent.js +80 -0
- package/dist/src/agents/builtin/GeneralAgent.js.map +1 -0
- package/dist/src/agents/builtin/PlanAgent.d.ts +15 -0
- package/dist/src/agents/builtin/PlanAgent.d.ts.map +1 -0
- package/dist/src/agents/builtin/PlanAgent.js +85 -0
- package/dist/src/agents/builtin/PlanAgent.js.map +1 -0
- package/dist/src/application/Application.d.ts +28 -0
- package/dist/src/application/Application.d.ts.map +1 -0
- package/dist/src/application/Application.js +209 -0
- package/dist/src/application/Application.js.map +1 -0
- package/dist/src/application/Container.d.ts +14 -0
- package/dist/src/application/Container.d.ts.map +1 -0
- package/dist/src/application/Container.js +47 -0
- package/dist/src/application/Container.js.map +1 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +54 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/code/CodeEditor.d.ts +9 -0
- package/dist/src/code/CodeEditor.d.ts.map +1 -0
- package/dist/src/code/CodeEditor.js +61 -0
- package/dist/src/code/CodeEditor.js.map +1 -0
- package/dist/src/code/CodeLocator.d.ts +8 -0
- package/dist/src/code/CodeLocator.d.ts.map +1 -0
- package/dist/src/code/CodeLocator.js +111 -0
- package/dist/src/code/CodeLocator.js.map +1 -0
- package/dist/src/code/CodeParser.d.ts +6 -0
- package/dist/src/code/CodeParser.d.ts.map +1 -0
- package/dist/src/code/CodeParser.js +32 -0
- package/dist/src/code/CodeParser.js.map +1 -0
- package/dist/src/code/types.d.ts +21 -0
- package/dist/src/code/types.d.ts.map +1 -0
- package/dist/src/code/types.js +2 -0
- package/dist/src/code/types.js.map +1 -0
- package/dist/src/commands/base/SlashCommand.d.ts +14 -0
- package/dist/src/commands/base/SlashCommand.d.ts.map +1 -0
- package/dist/src/commands/base/SlashCommand.js +14 -0
- package/dist/src/commands/base/SlashCommand.js.map +1 -0
- package/dist/src/commands/model/ModelCommand.d.ts +10 -0
- package/dist/src/commands/model/ModelCommand.d.ts.map +1 -0
- package/dist/src/commands/model/ModelCommand.js +20 -0
- package/dist/src/commands/model/ModelCommand.js.map +1 -0
- package/dist/src/commands/performance/PerformanceCommand.d.ts +12 -0
- package/dist/src/commands/performance/PerformanceCommand.d.ts.map +1 -0
- package/dist/src/commands/performance/PerformanceCommand.js +22 -0
- package/dist/src/commands/performance/PerformanceCommand.js.map +1 -0
- package/dist/src/commands/session/ClearCommand.d.ts +9 -0
- package/dist/src/commands/session/ClearCommand.d.ts.map +1 -0
- package/dist/src/commands/session/ClearCommand.js +19 -0
- package/dist/src/commands/session/ClearCommand.js.map +1 -0
- package/dist/src/commands/session/ExitCommand.d.ts +9 -0
- package/dist/src/commands/session/ExitCommand.d.ts.map +1 -0
- package/dist/src/commands/session/ExitCommand.js +12 -0
- package/dist/src/commands/session/ExitCommand.js.map +1 -0
- package/dist/src/commands/session/HelpCommand.d.ts +9 -0
- package/dist/src/commands/session/HelpCommand.d.ts.map +1 -0
- package/dist/src/commands/session/HelpCommand.js +44 -0
- package/dist/src/commands/session/HelpCommand.js.map +1 -0
- package/dist/src/commands/session/SessionsCommand.d.ts +9 -0
- package/dist/src/commands/session/SessionsCommand.d.ts.map +1 -0
- package/dist/src/commands/session/SessionsCommand.js +26 -0
- package/dist/src/commands/session/SessionsCommand.js.map +1 -0
- package/dist/src/commands/snapshot/RewindCommand.d.ts +9 -0
- package/dist/src/commands/snapshot/RewindCommand.d.ts.map +1 -0
- package/dist/src/commands/snapshot/RewindCommand.js +43 -0
- package/dist/src/commands/snapshot/RewindCommand.js.map +1 -0
- package/dist/src/commands/snapshot/SnapshotsCommand.d.ts +9 -0
- package/dist/src/commands/snapshot/SnapshotsCommand.d.ts.map +1 -0
- package/dist/src/commands/snapshot/SnapshotsCommand.js +25 -0
- package/dist/src/commands/snapshot/SnapshotsCommand.js.map +1 -0
- package/dist/src/commands/spec/SpecCreateCommand.d.ts +9 -0
- package/dist/src/commands/spec/SpecCreateCommand.d.ts.map +1 -0
- package/dist/src/commands/spec/SpecCreateCommand.js +22 -0
- package/dist/src/commands/spec/SpecCreateCommand.js.map +1 -0
- package/dist/src/commands/spec/SpecListCommand.d.ts +9 -0
- package/dist/src/commands/spec/SpecListCommand.d.ts.map +1 -0
- package/dist/src/commands/spec/SpecListCommand.js +15 -0
- package/dist/src/commands/spec/SpecListCommand.js.map +1 -0
- package/dist/src/commands/spec/SpecShowCommand.d.ts +9 -0
- package/dist/src/commands/spec/SpecShowCommand.d.ts.map +1 -0
- package/dist/src/commands/spec/SpecShowCommand.js +21 -0
- package/dist/src/commands/spec/SpecShowCommand.js.map +1 -0
- package/dist/src/managers/AgentManager.d.ts +19 -0
- package/dist/src/managers/AgentManager.d.ts.map +1 -0
- package/dist/src/managers/AgentManager.js +47 -0
- package/dist/src/managers/AgentManager.js.map +1 -0
- package/dist/src/managers/PluginManager.d.ts +23 -0
- package/dist/src/managers/PluginManager.d.ts.map +1 -0
- package/dist/src/managers/PluginManager.js +80 -0
- package/dist/src/managers/PluginManager.js.map +1 -0
- package/dist/src/managers/SlashCommandManager.d.ts +19 -0
- package/dist/src/managers/SlashCommandManager.d.ts.map +1 -0
- package/dist/src/managers/SlashCommandManager.js +80 -0
- package/dist/src/managers/SlashCommandManager.js.map +1 -0
- package/dist/src/managers/SpecManager.d.ts +26 -0
- package/dist/src/managers/SpecManager.d.ts.map +1 -0
- package/dist/src/managers/SpecManager.js +134 -0
- package/dist/src/managers/SpecManager.js.map +1 -0
- package/dist/src/managers/ToolManager.d.ts +24 -0
- package/dist/src/managers/ToolManager.d.ts.map +1 -0
- package/dist/src/managers/ToolManager.js +97 -0
- package/dist/src/managers/ToolManager.js.map +1 -0
- package/dist/src/mcp/MCPClient.d.ts +17 -0
- package/dist/src/mcp/MCPClient.d.ts.map +1 -0
- package/dist/src/mcp/MCPClient.js +117 -0
- package/dist/src/mcp/MCPClient.js.map +1 -0
- package/dist/src/mcp/MCPManager.d.ts +12 -0
- package/dist/src/mcp/MCPManager.d.ts.map +1 -0
- package/dist/src/mcp/MCPManager.js +63 -0
- package/dist/src/mcp/MCPManager.js.map +1 -0
- package/dist/src/mcp/MCPTool.d.ts +15 -0
- package/dist/src/mcp/MCPTool.d.ts.map +1 -0
- package/dist/src/mcp/MCPTool.js +73 -0
- package/dist/src/mcp/MCPTool.js.map +1 -0
- package/dist/src/mcp/types.d.ts +42 -0
- package/dist/src/mcp/types.d.ts.map +1 -0
- package/dist/src/mcp/types.js +2 -0
- package/dist/src/mcp/types.js.map +1 -0
- package/dist/src/optimization/CompactionService.d.ts +10 -0
- package/dist/src/optimization/CompactionService.d.ts.map +1 -0
- package/dist/src/optimization/CompactionService.js +82 -0
- package/dist/src/optimization/CompactionService.js.map +1 -0
- package/dist/src/optimization/CompressionService.d.ts +18 -0
- package/dist/src/optimization/CompressionService.d.ts.map +1 -0
- package/dist/src/optimization/CompressionService.js +95 -0
- package/dist/src/optimization/CompressionService.js.map +1 -0
- package/dist/src/optimization/PerformanceMonitor.d.ts +22 -0
- package/dist/src/optimization/PerformanceMonitor.d.ts.map +1 -0
- package/dist/src/optimization/PerformanceMonitor.js +90 -0
- package/dist/src/optimization/PerformanceMonitor.js.map +1 -0
- package/dist/src/optimization/PruningService.d.ts +5 -0
- package/dist/src/optimization/PruningService.d.ts.map +1 -0
- package/dist/src/optimization/PruningService.js +59 -0
- package/dist/src/optimization/PruningService.js.map +1 -0
- package/dist/src/optimization/types.d.ts +49 -0
- package/dist/src/optimization/types.d.ts.map +1 -0
- package/dist/src/optimization/types.js +2 -0
- package/dist/src/optimization/types.js.map +1 -0
- package/dist/src/plugins/base/Plugin.d.ts +17 -0
- package/dist/src/plugins/base/Plugin.d.ts.map +1 -0
- package/dist/src/plugins/base/Plugin.js +19 -0
- package/dist/src/plugins/base/Plugin.js.map +1 -0
- package/dist/src/plugins/builtin/LoggerPlugin.d.ts +13 -0
- package/dist/src/plugins/builtin/LoggerPlugin.d.ts.map +1 -0
- package/dist/src/plugins/builtin/LoggerPlugin.js +19 -0
- package/dist/src/plugins/builtin/LoggerPlugin.js.map +1 -0
- package/dist/src/plugins/builtin/PerformancePlugin.d.ts +16 -0
- package/dist/src/plugins/builtin/PerformancePlugin.d.ts.map +1 -0
- package/dist/src/plugins/builtin/PerformancePlugin.js +50 -0
- package/dist/src/plugins/builtin/PerformancePlugin.js.map +1 -0
- package/dist/src/plugins/builtin/SecurityPlugin.d.ts +18 -0
- package/dist/src/plugins/builtin/SecurityPlugin.d.ts.map +1 -0
- package/dist/src/plugins/builtin/SecurityPlugin.js +42 -0
- package/dist/src/plugins/builtin/SecurityPlugin.js.map +1 -0
- package/dist/src/server/HTTPServer.d.ts +25 -0
- package/dist/src/server/HTTPServer.d.ts.map +1 -0
- package/dist/src/server/HTTPServer.js +231 -0
- package/dist/src/server/HTTPServer.js.map +1 -0
- package/dist/src/server/WebSocketServer.d.ts +16 -0
- package/dist/src/server/WebSocketServer.d.ts.map +1 -0
- package/dist/src/server/WebSocketServer.js +118 -0
- package/dist/src/server/WebSocketServer.js.map +1 -0
- package/dist/src/services/ConfigService.d.ts +23 -0
- package/dist/src/services/ConfigService.d.ts.map +1 -0
- package/dist/src/services/ConfigService.js +169 -0
- package/dist/src/services/ConfigService.js.map +1 -0
- package/dist/src/services/EventBus.d.ts +12 -0
- package/dist/src/services/EventBus.d.ts.map +1 -0
- package/dist/src/services/EventBus.js +63 -0
- package/dist/src/services/EventBus.js.map +1 -0
- package/dist/src/services/ModelService.d.ts +24 -0
- package/dist/src/services/ModelService.d.ts.map +1 -0
- package/dist/src/services/ModelService.js +188 -0
- package/dist/src/services/ModelService.js.map +1 -0
- package/dist/src/services/Paths.d.ts +17 -0
- package/dist/src/services/Paths.d.ts.map +1 -0
- package/dist/src/services/Paths.js +125 -0
- package/dist/src/services/Paths.js.map +1 -0
- package/dist/src/services/SessionService.d.ts +19 -0
- package/dist/src/services/SessionService.d.ts.map +1 -0
- package/dist/src/services/SessionService.js +137 -0
- package/dist/src/services/SessionService.js.map +1 -0
- package/dist/src/snapshot/FileHistory.d.ts +18 -0
- package/dist/src/snapshot/FileHistory.d.ts.map +1 -0
- package/dist/src/snapshot/FileHistory.js +118 -0
- package/dist/src/snapshot/FileHistory.js.map +1 -0
- package/dist/src/snapshot/types.d.ts +19 -0
- package/dist/src/snapshot/types.d.ts.map +1 -0
- package/dist/src/snapshot/types.js +2 -0
- package/dist/src/snapshot/types.js.map +1 -0
- package/dist/src/specs/types.d.ts +54 -0
- package/dist/src/specs/types.d.ts.map +1 -0
- package/dist/src/specs/types.js +8 -0
- package/dist/src/specs/types.js.map +1 -0
- package/dist/src/specs/utils/generator.d.ts +4 -0
- package/dist/src/specs/utils/generator.d.ts.map +1 -0
- package/dist/src/specs/utils/generator.js +106 -0
- package/dist/src/specs/utils/generator.js.map +1 -0
- package/dist/src/specs/utils/parser.d.ts +3 -0
- package/dist/src/specs/utils/parser.d.ts.map +1 -0
- package/dist/src/specs/utils/parser.js +152 -0
- package/dist/src/specs/utils/parser.js.map +1 -0
- package/dist/src/styles/base/OutputStyle.d.ts +15 -0
- package/dist/src/styles/base/OutputStyle.d.ts.map +1 -0
- package/dist/src/styles/base/OutputStyle.js +16 -0
- package/dist/src/styles/base/OutputStyle.js.map +1 -0
- package/dist/src/styles/builtin/index.d.ts +8 -0
- package/dist/src/styles/builtin/index.d.ts.map +1 -0
- package/dist/src/styles/builtin/index.js +61 -0
- package/dist/src/styles/builtin/index.js.map +1 -0
- package/dist/src/styles/managers/OutputStyleManager.d.ts +20 -0
- package/dist/src/styles/managers/OutputStyleManager.d.ts.map +1 -0
- package/dist/src/styles/managers/OutputStyleManager.js +110 -0
- package/dist/src/styles/managers/OutputStyleManager.js.map +1 -0
- package/dist/src/styles/utils/markdown.d.ts +18 -0
- package/dist/src/styles/utils/markdown.d.ts.map +1 -0
- package/dist/src/styles/utils/markdown.js +107 -0
- package/dist/src/styles/utils/markdown.js.map +1 -0
- package/dist/src/tools/base/Tool.d.ts +17 -0
- package/dist/src/tools/base/Tool.d.ts.map +1 -0
- package/dist/src/tools/base/Tool.js +31 -0
- package/dist/src/tools/base/Tool.js.map +1 -0
- package/dist/src/tools/code/EditCodeTool.d.ts +50 -0
- package/dist/src/tools/code/EditCodeTool.d.ts.map +1 -0
- package/dist/src/tools/code/EditCodeTool.js +38 -0
- package/dist/src/tools/code/EditCodeTool.js.map +1 -0
- package/dist/src/tools/file/DeleteFileTool.d.ts +18 -0
- package/dist/src/tools/file/DeleteFileTool.d.ts.map +1 -0
- package/dist/src/tools/file/DeleteFileTool.js +45 -0
- package/dist/src/tools/file/DeleteFileTool.js.map +1 -0
- package/dist/src/tools/file/EditFileTool.d.ts +24 -0
- package/dist/src/tools/file/EditFileTool.d.ts.map +1 -0
- package/dist/src/tools/file/EditFileTool.js +53 -0
- package/dist/src/tools/file/EditFileTool.js.map +1 -0
- package/dist/src/tools/file/ListFilesTool.d.ts +29 -0
- package/dist/src/tools/file/ListFilesTool.d.ts.map +1 -0
- package/dist/src/tools/file/ListFilesTool.js +34 -0
- package/dist/src/tools/file/ListFilesTool.js.map +1 -0
- package/dist/src/tools/file/ReadFileTool.d.ts +25 -0
- package/dist/src/tools/file/ReadFileTool.d.ts.map +1 -0
- package/dist/src/tools/file/ReadFileTool.js +38 -0
- package/dist/src/tools/file/ReadFileTool.js.map +1 -0
- package/dist/src/tools/file/WriteFileTool.d.ts +30 -0
- package/dist/src/tools/file/WriteFileTool.d.ts.map +1 -0
- package/dist/src/tools/file/WriteFileTool.js +39 -0
- package/dist/src/tools/file/WriteFileTool.js.map +1 -0
- package/dist/src/tools/interactive/AskUserTool.d.ts +18 -0
- package/dist/src/tools/interactive/AskUserTool.d.ts.map +1 -0
- package/dist/src/tools/interactive/AskUserTool.js +43 -0
- package/dist/src/tools/interactive/AskUserTool.js.map +1 -0
- package/dist/src/tools/interactive/ConfirmTool.d.ts +18 -0
- package/dist/src/tools/interactive/ConfirmTool.d.ts.map +1 -0
- package/dist/src/tools/interactive/ConfirmTool.js +53 -0
- package/dist/src/tools/interactive/ConfirmTool.js.map +1 -0
- package/dist/src/tools/network/FetchTool.d.ts +24 -0
- package/dist/src/tools/network/FetchTool.d.ts.map +1 -0
- package/dist/src/tools/network/FetchTool.js +56 -0
- package/dist/src/tools/network/FetchTool.js.map +1 -0
- package/dist/src/tools/network/WebSearchTool.d.ts +20 -0
- package/dist/src/tools/network/WebSearchTool.d.ts.map +1 -0
- package/dist/src/tools/network/WebSearchTool.js +69 -0
- package/dist/src/tools/network/WebSearchTool.js.map +1 -0
- package/dist/src/tools/search/GlobTool.d.ts +20 -0
- package/dist/src/tools/search/GlobTool.d.ts.map +1 -0
- package/dist/src/tools/search/GlobTool.js +62 -0
- package/dist/src/tools/search/GlobTool.js.map +1 -0
- package/dist/src/tools/search/GrepTool.d.ts +26 -0
- package/dist/src/tools/search/GrepTool.d.ts.map +1 -0
- package/dist/src/tools/search/GrepTool.js +97 -0
- package/dist/src/tools/search/GrepTool.js.map +1 -0
- package/dist/src/tools/spec/SpecReadTool.d.ts +16 -0
- package/dist/src/tools/spec/SpecReadTool.d.ts.map +1 -0
- package/dist/src/tools/spec/SpecReadTool.js +79 -0
- package/dist/src/tools/spec/SpecReadTool.js.map +1 -0
- package/dist/src/tools/spec/SpecUpdateTaskTool.d.ts +23 -0
- package/dist/src/tools/spec/SpecUpdateTaskTool.d.ts.map +1 -0
- package/dist/src/tools/spec/SpecUpdateTaskTool.js +42 -0
- package/dist/src/tools/spec/SpecUpdateTaskTool.js.map +1 -0
- package/dist/src/tools/special/ExitPlanTool.d.ts +15 -0
- package/dist/src/tools/special/ExitPlanTool.d.ts.map +1 -0
- package/dist/src/tools/special/ExitPlanTool.js +32 -0
- package/dist/src/tools/special/ExitPlanTool.js.map +1 -0
- package/dist/src/tools/special/SkillTool.d.ts +19 -0
- package/dist/src/tools/special/SkillTool.d.ts.map +1 -0
- package/dist/src/tools/special/SkillTool.js +45 -0
- package/dist/src/tools/special/SkillTool.js.map +1 -0
- package/dist/src/tools/system/BashTool.d.ts +18 -0
- package/dist/src/tools/system/BashTool.d.ts.map +1 -0
- package/dist/src/tools/system/BashTool.js +29 -0
- package/dist/src/tools/system/BashTool.js.map +1 -0
- package/dist/src/tools/system/EnvTool.d.ts +15 -0
- package/dist/src/tools/system/EnvTool.d.ts.map +1 -0
- package/dist/src/tools/system/EnvTool.js +47 -0
- package/dist/src/tools/system/EnvTool.js.map +1 -0
- package/dist/src/tools/system/ExecTool.d.ts +21 -0
- package/dist/src/tools/system/ExecTool.d.ts.map +1 -0
- package/dist/src/tools/system/ExecTool.js +41 -0
- package/dist/src/tools/system/ExecTool.js.map +1 -0
- package/dist/src/tools/task/TaskTool.d.ts +34 -0
- package/dist/src/tools/task/TaskTool.d.ts.map +1 -0
- package/dist/src/tools/task/TaskTool.js +105 -0
- package/dist/src/tools/task/TaskTool.js.map +1 -0
- package/dist/src/tools/task/TodoReadTool.d.ts +16 -0
- package/dist/src/tools/task/TodoReadTool.d.ts.map +1 -0
- package/dist/src/tools/task/TodoReadTool.js +43 -0
- package/dist/src/tools/task/TodoReadTool.js.map +1 -0
- package/dist/src/tools/task/TodoWriteTool.d.ts +25 -0
- package/dist/src/tools/task/TodoWriteTool.d.ts.map +1 -0
- package/dist/src/tools/task/TodoWriteTool.js +82 -0
- package/dist/src/tools/task/TodoWriteTool.js.map +1 -0
- package/dist/src/types/index.d.ts +175 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +31 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/ui/App.d.ts +8 -0
- package/dist/src/ui/App.d.ts.map +1 -0
- package/dist/src/ui/App.js +100 -0
- package/dist/src/ui/App.js.map +1 -0
- package/dist/src/ui/components/MessageList.d.ts +8 -0
- package/dist/src/ui/components/MessageList.d.ts.map +1 -0
- package/dist/src/ui/components/MessageList.js +13 -0
- package/dist/src/ui/components/MessageList.js.map +1 -0
- package/dist/src/ui/components/SessionList.d.ts +10 -0
- package/dist/src/ui/components/SessionList.d.ts.map +1 -0
- package/dist/src/ui/components/SessionList.js +23 -0
- package/dist/src/ui/components/SessionList.js.map +1 -0
- package/dist/src/ui/context/AppContext.d.ts +18 -0
- package/dist/src/ui/context/AppContext.d.ts.map +1 -0
- package/dist/src/ui/context/AppContext.js +22 -0
- package/dist/src/ui/context/AppContext.js.map +1 -0
- package/dist/src/ui/hooks/useSession.d.ts +6 -0
- package/dist/src/ui/hooks/useSession.d.ts.map +1 -0
- package/dist/src/ui/hooks/useSession.js +59 -0
- package/dist/src/ui/hooks/useSession.js.map +1 -0
- package/dist/src/utils/calculator.d.ts +3 -0
- package/dist/src/utils/calculator.d.ts.map +1 -0
- package/dist/src/utils/calculator.js +13 -0
- package/dist/src/utils/calculator.js.map +1 -0
- package/dist/src/utils/firstRun.d.ts +4 -0
- package/dist/src/utils/firstRun.d.ts.map +1 -0
- package/dist/src/utils/firstRun.js +32 -0
- package/dist/src/utils/firstRun.js.map +1 -0
- package/dist/src/utils/math.d.ts +2 -0
- package/dist/src/utils/math.d.ts.map +1 -0
- package/dist/src/utils/math.js +4 -0
- package/dist/src/utils/math.js.map +1 -0
- package/dist/src/utils/setup.d.ts +2 -0
- package/dist/src/utils/setup.d.ts.map +1 -0
- package/dist/src/utils/setup.js +87 -0
- package/dist/src/utils/setup.js.map +1 -0
- package/dist/src/utils/tokenCounter.d.ts +4 -0
- package/dist/src/utils/tokenCounter.d.ts.map +1 -0
- package/dist/src/utils/tokenCounter.js +27 -0
- package/dist/src/utils/tokenCounter.js.map +1 -0
- package/dist/tests/integration/agents.test.d.ts +2 -0
- package/dist/tests/integration/agents.test.d.ts.map +1 -0
- package/dist/tests/integration/agents.test.js +34 -0
- package/dist/tests/integration/agents.test.js.map +1 -0
- package/dist/tests/integration/cli.test.d.ts +2 -0
- package/dist/tests/integration/cli.test.d.ts.map +1 -0
- package/dist/tests/integration/cli.test.js +70 -0
- package/dist/tests/integration/cli.test.js.map +1 -0
- package/dist/tests/integration/commands.test.d.ts +2 -0
- package/dist/tests/integration/commands.test.d.ts.map +1 -0
- package/dist/tests/integration/commands.test.js +35 -0
- package/dist/tests/integration/commands.test.js.map +1 -0
- package/dist/tests/integration/mcp.test.d.ts +2 -0
- package/dist/tests/integration/mcp.test.d.ts.map +1 -0
- package/dist/tests/integration/mcp.test.js +44 -0
- package/dist/tests/integration/mcp.test.js.map +1 -0
- package/dist/tests/integration/output-styles.test.d.ts +2 -0
- package/dist/tests/integration/output-styles.test.d.ts.map +1 -0
- package/dist/tests/integration/output-styles.test.js +88 -0
- package/dist/tests/integration/output-styles.test.js.map +1 -0
- package/dist/tests/integration/plugins.test.d.ts +2 -0
- package/dist/tests/integration/plugins.test.d.ts.map +1 -0
- package/dist/tests/integration/plugins.test.js +42 -0
- package/dist/tests/integration/plugins.test.js.map +1 -0
- package/dist/tests/integration/specs.test.d.ts +2 -0
- package/dist/tests/integration/specs.test.d.ts.map +1 -0
- package/dist/tests/integration/specs.test.js +102 -0
- package/dist/tests/integration/specs.test.js.map +1 -0
- package/dist/tests/integration/ui.test.d.ts +2 -0
- package/dist/tests/integration/ui.test.d.ts.map +1 -0
- package/dist/tests/integration/ui.test.js +71 -0
- package/dist/tests/integration/ui.test.js.map +1 -0
- package/dist/tests/mocks/mock-mcp-server.d.ts +3 -0
- package/dist/tests/mocks/mock-mcp-server.d.ts.map +1 -0
- package/dist/tests/mocks/mock-mcp-server.js +127 -0
- package/dist/tests/mocks/mock-mcp-server.js.map +1 -0
- package/dist/tests/unit/application/Application.test.d.ts +2 -0
- package/dist/tests/unit/application/Application.test.d.ts.map +1 -0
- package/dist/tests/unit/application/Application.test.js +21 -0
- package/dist/tests/unit/application/Application.test.js.map +1 -0
- package/dist/tests/unit/application/Container.test.d.ts +2 -0
- package/dist/tests/unit/application/Container.test.d.ts.map +1 -0
- package/dist/tests/unit/application/Container.test.js +38 -0
- package/dist/tests/unit/application/Container.test.js.map +1 -0
- package/dist/tests/unit/code/CodeEditor.test.d.ts +2 -0
- package/dist/tests/unit/code/CodeEditor.test.d.ts.map +1 -0
- package/dist/tests/unit/code/CodeEditor.test.js +56 -0
- package/dist/tests/unit/code/CodeEditor.test.js.map +1 -0
- package/dist/tests/unit/code/CodeLocator.test.d.ts +2 -0
- package/dist/tests/unit/code/CodeLocator.test.d.ts.map +1 -0
- package/dist/tests/unit/code/CodeLocator.test.js +50 -0
- package/dist/tests/unit/code/CodeLocator.test.js.map +1 -0
- package/dist/tests/unit/code/CodeParser.test.d.ts +2 -0
- package/dist/tests/unit/code/CodeParser.test.d.ts.map +1 -0
- package/dist/tests/unit/code/CodeParser.test.js +27 -0
- package/dist/tests/unit/code/CodeParser.test.js.map +1 -0
- package/dist/tests/unit/managers/AgentManager.test.d.ts +2 -0
- package/dist/tests/unit/managers/AgentManager.test.d.ts.map +1 -0
- package/dist/tests/unit/managers/AgentManager.test.js +68 -0
- package/dist/tests/unit/managers/AgentManager.test.js.map +1 -0
- package/dist/tests/unit/managers/PluginManager.test.d.ts +2 -0
- package/dist/tests/unit/managers/PluginManager.test.d.ts.map +1 -0
- package/dist/tests/unit/managers/PluginManager.test.js +76 -0
- package/dist/tests/unit/managers/PluginManager.test.js.map +1 -0
- package/dist/tests/unit/managers/SlashCommandManager.test.d.ts +2 -0
- package/dist/tests/unit/managers/SlashCommandManager.test.d.ts.map +1 -0
- package/dist/tests/unit/managers/SlashCommandManager.test.js +47 -0
- package/dist/tests/unit/managers/SlashCommandManager.test.js.map +1 -0
- package/dist/tests/unit/managers/SpecManager.test.d.ts +2 -0
- package/dist/tests/unit/managers/SpecManager.test.d.ts.map +1 -0
- package/dist/tests/unit/managers/SpecManager.test.js +97 -0
- package/dist/tests/unit/managers/SpecManager.test.js.map +1 -0
- package/dist/tests/unit/managers/ToolManager.test.d.ts +2 -0
- package/dist/tests/unit/managers/ToolManager.test.d.ts.map +1 -0
- package/dist/tests/unit/managers/ToolManager.test.js +69 -0
- package/dist/tests/unit/managers/ToolManager.test.js.map +1 -0
- package/dist/tests/unit/mcp/MCPClient.test.d.ts +2 -0
- package/dist/tests/unit/mcp/MCPClient.test.d.ts.map +1 -0
- package/dist/tests/unit/mcp/MCPClient.test.js +40 -0
- package/dist/tests/unit/mcp/MCPClient.test.js.map +1 -0
- package/dist/tests/unit/services/ConfigService.test.d.ts +2 -0
- package/dist/tests/unit/services/ConfigService.test.d.ts.map +1 -0
- package/dist/tests/unit/services/ConfigService.test.js +104 -0
- package/dist/tests/unit/services/ConfigService.test.js.map +1 -0
- package/dist/tests/unit/services/EventBus.test.d.ts +2 -0
- package/dist/tests/unit/services/EventBus.test.d.ts.map +1 -0
- package/dist/tests/unit/services/EventBus.test.js +117 -0
- package/dist/tests/unit/services/EventBus.test.js.map +1 -0
- package/dist/tests/unit/services/ModelService.test.d.ts +2 -0
- package/dist/tests/unit/services/ModelService.test.d.ts.map +1 -0
- package/dist/tests/unit/services/ModelService.test.js +63 -0
- package/dist/tests/unit/services/ModelService.test.js.map +1 -0
- package/dist/tests/unit/services/Paths.test.d.ts +2 -0
- package/dist/tests/unit/services/Paths.test.d.ts.map +1 -0
- package/dist/tests/unit/services/Paths.test.js +33 -0
- package/dist/tests/unit/services/Paths.test.js.map +1 -0
- package/dist/tests/unit/services/SessionService.test.d.ts +2 -0
- package/dist/tests/unit/services/SessionService.test.d.ts.map +1 -0
- package/dist/tests/unit/services/SessionService.test.js +80 -0
- package/dist/tests/unit/services/SessionService.test.js.map +1 -0
- package/dist/tests/unit/snapshot/FileHistory.test.d.ts +2 -0
- package/dist/tests/unit/snapshot/FileHistory.test.d.ts.map +1 -0
- package/dist/tests/unit/snapshot/FileHistory.test.js +101 -0
- package/dist/tests/unit/snapshot/FileHistory.test.js.map +1 -0
- package/dist/tests/unit/specs/generator.test.d.ts +2 -0
- package/dist/tests/unit/specs/generator.test.d.ts.map +1 -0
- package/dist/tests/unit/specs/generator.test.js +70 -0
- package/dist/tests/unit/specs/generator.test.js.map +1 -0
- package/dist/tests/unit/specs/parser.test.d.ts +2 -0
- package/dist/tests/unit/specs/parser.test.d.ts.map +1 -0
- package/dist/tests/unit/specs/parser.test.js +85 -0
- package/dist/tests/unit/specs/parser.test.js.map +1 -0
- package/dist/tests/unit/styles/OutputStyle.test.d.ts +2 -0
- package/dist/tests/unit/styles/OutputStyle.test.d.ts.map +1 -0
- package/dist/tests/unit/styles/OutputStyle.test.js +33 -0
- package/dist/tests/unit/styles/OutputStyle.test.js.map +1 -0
- package/dist/tests/unit/styles/OutputStyleManager.test.d.ts +2 -0
- package/dist/tests/unit/styles/OutputStyleManager.test.d.ts.map +1 -0
- package/dist/tests/unit/styles/OutputStyleManager.test.js +75 -0
- package/dist/tests/unit/styles/OutputStyleManager.test.js.map +1 -0
- package/dist/tests/unit/tools/BashTool.test.d.ts +2 -0
- package/dist/tests/unit/tools/BashTool.test.d.ts.map +1 -0
- package/dist/tests/unit/tools/BashTool.test.js +35 -0
- package/dist/tests/unit/tools/BashTool.test.js.map +1 -0
- package/dist/tests/unit/tools/EditFileTool.test.d.ts +2 -0
- package/dist/tests/unit/tools/EditFileTool.test.d.ts.map +1 -0
- package/dist/tests/unit/tools/EditFileTool.test.js +48 -0
- package/dist/tests/unit/tools/EditFileTool.test.js.map +1 -0
- package/dist/tests/unit/tools/GrepTool.test.d.ts +2 -0
- package/dist/tests/unit/tools/GrepTool.test.d.ts.map +1 -0
- package/dist/tests/unit/tools/GrepTool.test.js +46 -0
- package/dist/tests/unit/tools/GrepTool.test.js.map +1 -0
- package/dist/tests/unit/tools/ListFilesTool.test.d.ts +2 -0
- package/dist/tests/unit/tools/ListFilesTool.test.d.ts.map +1 -0
- package/dist/tests/unit/tools/ListFilesTool.test.js +58 -0
- package/dist/tests/unit/tools/ListFilesTool.test.js.map +1 -0
- package/dist/tests/unit/tools/ReadFileTool.test.d.ts +2 -0
- package/dist/tests/unit/tools/ReadFileTool.test.d.ts.map +1 -0
- package/dist/tests/unit/tools/ReadFileTool.test.js +42 -0
- package/dist/tests/unit/tools/ReadFileTool.test.js.map +1 -0
- package/dist/tests/unit/tools/TodoWriteTool.test.d.ts +2 -0
- package/dist/tests/unit/tools/TodoWriteTool.test.d.ts.map +1 -0
- package/dist/tests/unit/tools/TodoWriteTool.test.js +54 -0
- package/dist/tests/unit/tools/TodoWriteTool.test.js.map +1 -0
- package/dist/tests/unit/tools/WriteFileTool.test.d.ts +2 -0
- package/dist/tests/unit/tools/WriteFileTool.test.d.ts.map +1 -0
- package/dist/tests/unit/tools/WriteFileTool.test.js +69 -0
- package/dist/tests/unit/tools/WriteFileTool.test.js.map +1 -0
- package/dist/tests/unit/ui/App.test.d.ts +2 -0
- package/dist/tests/unit/ui/App.test.d.ts.map +1 -0
- package/dist/tests/unit/ui/App.test.js +46 -0
- package/dist/tests/unit/ui/App.test.js.map +1 -0
- package/dist/tests/unit/ui/AppContext.test.d.ts +2 -0
- package/dist/tests/unit/ui/AppContext.test.d.ts.map +1 -0
- package/dist/tests/unit/ui/AppContext.test.js +39 -0
- package/dist/tests/unit/ui/AppContext.test.js.map +1 -0
- package/dist/tests/unit/ui/MessageList.test.d.ts +2 -0
- package/dist/tests/unit/ui/MessageList.test.d.ts.map +1 -0
- package/dist/tests/unit/ui/MessageList.test.js +23 -0
- package/dist/tests/unit/ui/MessageList.test.js.map +1 -0
- package/dist/tests/unit/ui/SessionList.test.d.ts +2 -0
- package/dist/tests/unit/ui/SessionList.test.d.ts.map +1 -0
- package/dist/tests/unit/ui/SessionList.test.js +49 -0
- package/dist/tests/unit/ui/SessionList.test.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Tool } from '../base/Tool';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import * as fs from 'node:fs/promises';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
export class ListFilesTool extends Tool {
|
|
6
|
+
name = 'list_files';
|
|
7
|
+
description = '列出目录中的所有文件和子目录。使用"."表示当前工作目录,或使用相对路径如"src"、"src/utils"';
|
|
8
|
+
schema = z.object({
|
|
9
|
+
path: z
|
|
10
|
+
.string()
|
|
11
|
+
.describe('目录路径(相对于当前工作目录)。使用"."表示当前目录,或使用相对路径如"src"、"src/utils"'),
|
|
12
|
+
});
|
|
13
|
+
async execute(input) {
|
|
14
|
+
console.log(`📂 Listing files in: ${input.path}`);
|
|
15
|
+
try {
|
|
16
|
+
const dirPath = path.resolve(input.path);
|
|
17
|
+
const entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
18
|
+
const files = entries.map((entry) => ({
|
|
19
|
+
name: entry.name,
|
|
20
|
+
type: entry.isDirectory() ? 'directory' : 'file',
|
|
21
|
+
}));
|
|
22
|
+
console.log(`✅ Found ${files.length} items in ${input.path}`);
|
|
23
|
+
return { files };
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.error(`❌ Failed to list files: ${input.path}`, error);
|
|
27
|
+
if (error instanceof Error) {
|
|
28
|
+
throw new Error(`Failed to list files: ${error.message}`);
|
|
29
|
+
}
|
|
30
|
+
throw new Error('Failed to list files: Unknown error');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=ListFilesTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListFilesTool.js","sourceRoot":"","sources":["../../../../src/tools/file/ListFilesTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAelC,MAAM,OAAO,aAAc,SAAQ,IAGlC;IAIC,IAAI,GAAG,YAAY,CAAC;IAKpB,WAAW,GACT,wDAAwD,CAAC;IAK3D,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,CACP,uDAAuD,CACxD;KACJ,CAAC,CAAC;IAQH,KAAK,CAAC,OAAO,CAAC,KAAuB;QAGnC,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAGzC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAGnE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACpC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAE,WAAqB,CAAC,CAAC,CAAE,MAAgB;aACvE,CAAC,CAAC,CAAC;YAEJ,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAE9D,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAG9D,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Tool } from '../base/Tool';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export declare class ReadFileTool extends Tool<{
|
|
4
|
+
path: string;
|
|
5
|
+
}, {
|
|
6
|
+
content: string;
|
|
7
|
+
size: number;
|
|
8
|
+
}> {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
schema: z.ZodObject<{
|
|
12
|
+
path: z.ZodString;
|
|
13
|
+
}, "strip", z.ZodTypeAny, {
|
|
14
|
+
path: string;
|
|
15
|
+
}, {
|
|
16
|
+
path: string;
|
|
17
|
+
}>;
|
|
18
|
+
execute(input: {
|
|
19
|
+
path: string;
|
|
20
|
+
}): Promise<{
|
|
21
|
+
content: string;
|
|
22
|
+
size: number;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ReadFileTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadFileTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/file/ReadFileTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,qBAAa,YAAa,SAAQ,IAAI,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;IAIzF,IAAI,SAAe;IAQnB,WAAW,SAAoD;IAO/D,MAAM;;;;;;OAEH;IAQG,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAiCnF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Tool } from '../base/Tool';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import * as fs from 'fs/promises';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
export class ReadFileTool extends Tool {
|
|
6
|
+
name = 'read_file';
|
|
7
|
+
description = '读取文件内容。使用相对路径,如"src/utils/file.ts"或"README.md"';
|
|
8
|
+
schema = z.object({
|
|
9
|
+
path: z.string().describe('文件路径(相对于当前工作目录),如"src/utils/file.ts"'),
|
|
10
|
+
});
|
|
11
|
+
async execute(input) {
|
|
12
|
+
console.log(`📖 Reading file: ${input.path}`);
|
|
13
|
+
try {
|
|
14
|
+
const fullPath = path.resolve(input.path);
|
|
15
|
+
try {
|
|
16
|
+
await fs.access(fullPath);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
throw new Error(`File not found: ${input.path}`);
|
|
20
|
+
}
|
|
21
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
22
|
+
const size = content.length;
|
|
23
|
+
console.log(`✅ Read ${size} characters from ${input.path}`);
|
|
24
|
+
return {
|
|
25
|
+
content,
|
|
26
|
+
size,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error(`❌ Failed to read file: ${input.path}`, error);
|
|
31
|
+
if (error instanceof Error) {
|
|
32
|
+
throw new Error(`Failed to read file: ${error.message}`);
|
|
33
|
+
}
|
|
34
|
+
throw new Error('Failed to read file: Unknown error');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ReadFileTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadFileTool.js","sourceRoot":"","sources":["../../../../src/tools/file/ReadFileTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAU7B,MAAM,OAAO,YAAa,SAAQ,IAAyD;IAIzF,IAAI,GAAG,WAAW,CAAC;IAQnB,WAAW,GAAG,gDAAgD,CAAC;IAO/D,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KAClE,CAAC,CAAC;IAQH,KAAK,CAAC,OAAO,CAAC,KAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAG1C,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;YAGD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;YAE5B,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAE5D,OAAO;gBACL,OAAO;gBACP,IAAI;aACL,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAE7D,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Tool } from '../base/Tool';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export declare class WriteFileTool extends Tool<{
|
|
4
|
+
path: string;
|
|
5
|
+
content: string;
|
|
6
|
+
}, {
|
|
7
|
+
success: boolean;
|
|
8
|
+
bytesWritten: number;
|
|
9
|
+
}> {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
schema: z.ZodObject<{
|
|
13
|
+
path: z.ZodString;
|
|
14
|
+
content: z.ZodString;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
content: string;
|
|
17
|
+
path: string;
|
|
18
|
+
}, {
|
|
19
|
+
content: string;
|
|
20
|
+
path: string;
|
|
21
|
+
}>;
|
|
22
|
+
execute(input: {
|
|
23
|
+
path: string;
|
|
24
|
+
content: string;
|
|
25
|
+
}): Promise<{
|
|
26
|
+
success: boolean;
|
|
27
|
+
bytesWritten: number;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=WriteFileTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WriteFileTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/file/WriteFileTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,qBAAa,aAAc,SAAQ,IAAI,CACrC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACjC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAC3C;IAMC,IAAI,SAAgB;IAOpB,WAAW,SACgD;IAS3D,MAAM;;;;;;;;;OAGH;IAQG,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC/D,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CAsCH"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Tool } from '../base/Tool';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import * as fs from 'node:fs/promises';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
export class WriteFileTool extends Tool {
|
|
6
|
+
name = 'write_file';
|
|
7
|
+
description = '写入文件内容。使用相对路径如"src/utils/file.ts"。如果文件不存在会自动创建,如果存在会覆盖';
|
|
8
|
+
schema = z.object({
|
|
9
|
+
path: z.string().describe('文件路径(相对于当前工作目录),如"src/utils/file.ts"'),
|
|
10
|
+
content: z.string().describe('文件内容'),
|
|
11
|
+
});
|
|
12
|
+
async execute(input) {
|
|
13
|
+
console.log(`✍️ Writing file: ${input.path}`);
|
|
14
|
+
try {
|
|
15
|
+
if (this.container) {
|
|
16
|
+
const fileHistory = this.container.getFileHistory();
|
|
17
|
+
await fileHistory.trackFile(input.path);
|
|
18
|
+
}
|
|
19
|
+
const filePath = path.resolve(input.path);
|
|
20
|
+
const dirPath = path.dirname(filePath);
|
|
21
|
+
await fs.mkdir(dirPath, { recursive: true });
|
|
22
|
+
await fs.writeFile(filePath, input.content, 'utf-8');
|
|
23
|
+
const bytesWritten = Buffer.byteLength(input.content, 'utf-8');
|
|
24
|
+
console.log(`✅ Wrote ${bytesWritten} bytes to ${input.path}`);
|
|
25
|
+
return {
|
|
26
|
+
success: true,
|
|
27
|
+
bytesWritten,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error(`❌ Failed to write file: ${input.path}`, error);
|
|
32
|
+
if (error instanceof Error) {
|
|
33
|
+
throw new Error(`Failed to write file: ${error.message}`);
|
|
34
|
+
}
|
|
35
|
+
throw new Error('Failed to write file: Unknown error');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=WriteFileTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WriteFileTool.js","sourceRoot":"","sources":["../../../../src/tools/file/WriteFileTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAgBlC,MAAM,OAAO,aAAc,SAAQ,IAGlC;IAMC,IAAI,GAAG,YAAY,CAAC;IAOpB,WAAW,GACT,wDAAwD,CAAC;IAS3D,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;KACrC,CAAC,CAAC;IAQH,KAAK,CAAC,OAAO,CAAC,KAAwC;QAIpD,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/C,IAAI,CAAC;YAEH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;gBACpD,MAAM,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAGvC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAG7C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAGrD,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/D,OAAO,CAAC,GAAG,CAAC,WAAW,YAAY,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAE9D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,YAAY;aACb,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAG9D,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Tool } from '../base/Tool';
|
|
3
|
+
export declare class AskUserTool extends Tool {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
schema: z.ZodObject<{
|
|
7
|
+
question: z.ZodString;
|
|
8
|
+
defaultAnswer: z.ZodOptional<z.ZodString>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
question: string;
|
|
11
|
+
defaultAnswer?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
question: string;
|
|
14
|
+
defaultAnswer?: string | undefined;
|
|
15
|
+
}>;
|
|
16
|
+
execute(input: z.infer<typeof this.schema>): Promise<any>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=AskUserTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AskUserTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/interactive/AskUserTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAiBpC,qBAAa,WAAY,SAAQ,IAAI;IACnC,IAAI,SAAc;IAClB,WAAW,SAA+C;IAE1D,MAAM;;;;;;;;;OAGH;IAEG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CA0ChE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as readline from 'node:readline/promises';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { Tool } from '../base/Tool';
|
|
4
|
+
export class AskUserTool extends Tool {
|
|
5
|
+
name = 'ask_user';
|
|
6
|
+
description = 'Ask user a question and wait for response';
|
|
7
|
+
schema = z.object({
|
|
8
|
+
question: z.string().describe('Question to ask the user'),
|
|
9
|
+
defaultAnswer: z.string().optional().describe('Default answer if user presses Enter'),
|
|
10
|
+
});
|
|
11
|
+
async execute(input) {
|
|
12
|
+
const { question, defaultAnswer } = input;
|
|
13
|
+
console.log(`❓ Asking user: ${question}`);
|
|
14
|
+
try {
|
|
15
|
+
const rl = readline.createInterface({
|
|
16
|
+
input: process.stdin,
|
|
17
|
+
output: process.stdout,
|
|
18
|
+
});
|
|
19
|
+
let prompt = question;
|
|
20
|
+
if (defaultAnswer) {
|
|
21
|
+
prompt += ` (default: ${defaultAnswer})`;
|
|
22
|
+
}
|
|
23
|
+
prompt += ': ';
|
|
24
|
+
const answer = await rl.question(prompt);
|
|
25
|
+
rl.close();
|
|
26
|
+
const finalAnswer = answer.trim() || defaultAnswer || '';
|
|
27
|
+
console.log(`✅ User answered: ${finalAnswer}`);
|
|
28
|
+
return {
|
|
29
|
+
success: true,
|
|
30
|
+
question,
|
|
31
|
+
answer: finalAnswer,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error(`❌ Failed to ask user:`, error);
|
|
36
|
+
if (error instanceof Error) {
|
|
37
|
+
throw new Error(`Failed to ask user: ${error.message}`);
|
|
38
|
+
}
|
|
39
|
+
throw new Error('Failed to ask user: Unknown error');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=AskUserTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AskUserTool.js","sourceRoot":"","sources":["../../../../src/tools/interactive/AskUserTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAiBpC,MAAM,OAAO,WAAY,SAAQ,IAAI;IACnC,IAAI,GAAG,UAAU,CAAC;IAClB,WAAW,GAAG,2CAA2C,CAAC;IAE1D,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACzD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACtF,CAAC,CAAC;IAEH,KAAK,CAAC,OAAO,CAAC,KAAkC;QAC9C,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;QAE1C,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;QAE1C,IAAI,CAAC;YAEH,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAGH,IAAI,MAAM,GAAG,QAAQ,CAAC;YACtB,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,IAAI,cAAc,aAAa,GAAG,CAAC;YAC3C,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;YAGf,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,EAAE,CAAC,KAAK,EAAE,CAAC;YAGX,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,IAAI,EAAE,CAAC;YAEzD,OAAO,CAAC,GAAG,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;YAE/C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ;gBACR,MAAM,EAAE,WAAW;aACpB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAE9C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Tool } from '../base/Tool';
|
|
3
|
+
export declare class ConfirmTool extends Tool {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
schema: z.ZodObject<{
|
|
7
|
+
message: z.ZodString;
|
|
8
|
+
defaultValue: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
message: string;
|
|
11
|
+
defaultValue?: boolean | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
message: string;
|
|
14
|
+
defaultValue?: boolean | undefined;
|
|
15
|
+
}>;
|
|
16
|
+
execute(input: z.infer<typeof this.schema>): Promise<any>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ConfirmTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/interactive/ConfirmTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAiBpC,qBAAa,WAAY,SAAQ,IAAI;IACnC,IAAI,SAAa;IACjB,WAAW,SAAwC;IAEnD,MAAM;;;;;;;;;OAGH;IAEG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAoDhE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as readline from 'node:readline/promises';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { Tool } from '../base/Tool';
|
|
4
|
+
export class ConfirmTool extends Tool {
|
|
5
|
+
name = 'confirm';
|
|
6
|
+
description = 'Ask user for confirmation (yes/no)';
|
|
7
|
+
schema = z.object({
|
|
8
|
+
message: z.string().describe('Confirmation message'),
|
|
9
|
+
defaultValue: z.boolean().optional().describe('Default value if user presses Enter'),
|
|
10
|
+
});
|
|
11
|
+
async execute(input) {
|
|
12
|
+
const { message, defaultValue = false } = input;
|
|
13
|
+
console.log(`❓ Confirming: ${message}`);
|
|
14
|
+
try {
|
|
15
|
+
const rl = readline.createInterface({
|
|
16
|
+
input: process.stdin,
|
|
17
|
+
output: process.stdout,
|
|
18
|
+
});
|
|
19
|
+
const defaultText = defaultValue ? 'Y/n' : 'y/N';
|
|
20
|
+
const prompt = `${message} (${defaultText}): `;
|
|
21
|
+
const answer = await rl.question(prompt);
|
|
22
|
+
rl.close();
|
|
23
|
+
const trimmed = answer.trim().toLowerCase();
|
|
24
|
+
let confirmed;
|
|
25
|
+
if (trimmed === '') {
|
|
26
|
+
confirmed = defaultValue;
|
|
27
|
+
}
|
|
28
|
+
else if (trimmed === 'y' || trimmed === 'yes') {
|
|
29
|
+
confirmed = true;
|
|
30
|
+
}
|
|
31
|
+
else if (trimmed === 'n' || trimmed === 'no') {
|
|
32
|
+
confirmed = false;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
confirmed = defaultValue;
|
|
36
|
+
}
|
|
37
|
+
console.log(`✅ User confirmed: ${confirmed}`);
|
|
38
|
+
return {
|
|
39
|
+
success: true,
|
|
40
|
+
message,
|
|
41
|
+
confirmed,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error(`❌ Failed to confirm:`, error);
|
|
46
|
+
if (error instanceof Error) {
|
|
47
|
+
throw new Error(`Failed to confirm: ${error.message}`);
|
|
48
|
+
}
|
|
49
|
+
throw new Error('Failed to confirm: Unknown error');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=ConfirmTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmTool.js","sourceRoot":"","sources":["../../../../src/tools/interactive/ConfirmTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAiBpC,MAAM,OAAO,WAAY,SAAQ,IAAI;IACnC,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,oCAAoC,CAAC;IAEnD,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACpD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACrF,CAAC,CAAC;IAEH,KAAK,CAAC,OAAO,CAAC,KAAkC;QAC9C,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;QAEhD,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;QAExC,IAAI,CAAC;YAEH,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAGH,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACjD,MAAM,MAAM,GAAG,GAAG,OAAO,KAAK,WAAW,KAAK,CAAC;YAG/C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,EAAE,CAAC,KAAK,EAAE,CAAC;YAGX,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,SAAkB,CAAC;YAEvB,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBAEnB,SAAS,GAAG,YAAY,CAAC;YAC3B,CAAC;iBAAM,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;gBAChD,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC/C,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;iBAAM,CAAC;gBAEN,SAAS,GAAG,YAAY,CAAC;YAC3B,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;YAE9C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,SAAS;aACV,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAE7C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Tool } from '../base/Tool';
|
|
3
|
+
export declare class FetchTool extends Tool {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
schema: z.ZodObject<{
|
|
7
|
+
url: z.ZodString;
|
|
8
|
+
method: z.ZodOptional<z.ZodEnum<["GET", "POST", "PUT", "DELETE"]>>;
|
|
9
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
10
|
+
body: z.ZodOptional<z.ZodString>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
url: string;
|
|
13
|
+
body?: string | undefined;
|
|
14
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | undefined;
|
|
15
|
+
headers?: Record<string, string> | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
url: string;
|
|
18
|
+
body?: string | undefined;
|
|
19
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | undefined;
|
|
20
|
+
headers?: Record<string, string> | undefined;
|
|
21
|
+
}>;
|
|
22
|
+
execute(input: z.infer<typeof this.schema>): Promise<any>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=FetchTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FetchTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/network/FetchTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAgBpC,qBAAa,SAAU,SAAQ,IAAI;IACjC,IAAI,SAAW;IACf,WAAW,SAAwB;IAEnC,MAAM;;;;;;;;;;;;;;;OAQH;IAEG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAmDhE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Tool } from '../base/Tool';
|
|
3
|
+
export class FetchTool extends Tool {
|
|
4
|
+
name = 'fetch';
|
|
5
|
+
description = 'Make HTTP requests';
|
|
6
|
+
schema = z.object({
|
|
7
|
+
url: z.string().describe('URL to fetch'),
|
|
8
|
+
method: z
|
|
9
|
+
.enum(['GET', 'POST', 'PUT', 'DELETE'])
|
|
10
|
+
.optional()
|
|
11
|
+
.describe('HTTP method'),
|
|
12
|
+
headers: z.record(z.string(), z.string()).optional().describe('HTTP headers'),
|
|
13
|
+
body: z.string().optional().describe('Request body (for POST/PUT)'),
|
|
14
|
+
});
|
|
15
|
+
async execute(input) {
|
|
16
|
+
const { url, method = 'GET', headers = {}, body } = input;
|
|
17
|
+
console.log(`🌐 Fetching: ${method} ${url}`);
|
|
18
|
+
try {
|
|
19
|
+
const options = {
|
|
20
|
+
method,
|
|
21
|
+
headers: {
|
|
22
|
+
'Content-Type': 'application/json',
|
|
23
|
+
...headers,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
if (body && (method === 'POST' || method === 'PUT')) {
|
|
27
|
+
options.body = body;
|
|
28
|
+
}
|
|
29
|
+
const response = await fetch(url, options);
|
|
30
|
+
const contentType = response.headers.get('content-type');
|
|
31
|
+
let data;
|
|
32
|
+
if (contentType?.includes('application/json')) {
|
|
33
|
+
data = await response.json();
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
data = await response.text();
|
|
37
|
+
}
|
|
38
|
+
console.log(`✅ Fetch completed: ${response.status}`);
|
|
39
|
+
return {
|
|
40
|
+
success: response.ok,
|
|
41
|
+
status: response.status,
|
|
42
|
+
statusText: response.statusText,
|
|
43
|
+
headers: Object.fromEntries(response.headers.entries()),
|
|
44
|
+
data,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error(`❌ Fetch failed:`, error);
|
|
49
|
+
if (error instanceof Error) {
|
|
50
|
+
throw new Error(`Fetch failed: ${error.message}`);
|
|
51
|
+
}
|
|
52
|
+
throw new Error('Fetch failed: Unknown error');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=FetchTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FetchTool.js","sourceRoot":"","sources":["../../../../src/tools/network/FetchTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAgBpC,MAAM,OAAO,SAAU,SAAQ,IAAI;IACjC,IAAI,GAAG,OAAO,CAAC;IACf,WAAW,GAAG,oBAAoB,CAAC;IAEnC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACxC,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAU,CAAC;aAC/C,QAAQ,EAAE;aACV,QAAQ,CAAC,aAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC7E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACpE,CAAC,CAAC;IAEH,KAAK,CAAC,OAAO,CAAC,KAAkC;QAC9C,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAE1D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC;YAEH,MAAM,OAAO,GAAgB;gBAC3B,MAAM;gBACN,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,GAAG,OAAO;iBACX;aACF,CAAC;YAGF,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACtB,CAAC;YAGD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAG3C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACzD,IAAI,IAAS,CAAC;YAEd,IAAI,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC9C,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAErD,OAAO;gBACL,OAAO,EAAE,QAAQ,CAAC,EAAE;gBACpB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvD,IAAI;aACL,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YAExC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Tool } from '../base/Tool';
|
|
3
|
+
export declare class WebSearchTool extends Tool {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
schema: z.ZodObject<{
|
|
7
|
+
query: z.ZodString;
|
|
8
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
query: string;
|
|
11
|
+
limit?: number | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
query: string;
|
|
14
|
+
limit?: number | undefined;
|
|
15
|
+
}>;
|
|
16
|
+
execute(input: z.infer<typeof this.schema>): Promise<any>;
|
|
17
|
+
private parseResults;
|
|
18
|
+
private decodeHtml;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=WebSearchTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSearchTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/network/WebSearchTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAqBpC,qBAAa,aAAc,SAAQ,IAAI;IACrC,IAAI,SAAgB;IACpB,WAAW,SAAqC;IAEhD,MAAM;;;;;;;;;OAGH;IAEG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IA6C/D,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,UAAU;CASnB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Tool } from '../base/Tool';
|
|
3
|
+
export class WebSearchTool extends Tool {
|
|
4
|
+
name = 'web_search';
|
|
5
|
+
description = 'Search the web using DuckDuckGo';
|
|
6
|
+
schema = z.object({
|
|
7
|
+
query: z.string().describe('Search query'),
|
|
8
|
+
limit: z.number().optional().describe('Number of results to return (default: 5)'),
|
|
9
|
+
});
|
|
10
|
+
async execute(input) {
|
|
11
|
+
const { query, limit = 5 } = input;
|
|
12
|
+
console.log(`🔍 Searching web: ${query}`);
|
|
13
|
+
try {
|
|
14
|
+
const searchUrl = `https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`;
|
|
15
|
+
const response = await fetch(searchUrl, {
|
|
16
|
+
headers: {
|
|
17
|
+
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36',
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
22
|
+
}
|
|
23
|
+
const html = await response.text();
|
|
24
|
+
const results = this.parseResults(html, limit);
|
|
25
|
+
console.log(`✅ Found ${results.length} results`);
|
|
26
|
+
return {
|
|
27
|
+
success: true,
|
|
28
|
+
query,
|
|
29
|
+
results,
|
|
30
|
+
count: results.length,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.error(`❌ Web search failed:`, error);
|
|
35
|
+
if (error instanceof Error) {
|
|
36
|
+
throw new Error(`Web search failed: ${error.message}`);
|
|
37
|
+
}
|
|
38
|
+
throw new Error('Web search failed: Unknown error');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
parseResults(html, limit) {
|
|
42
|
+
const results = [];
|
|
43
|
+
const resultRegex = /<div class="result[^"]*"[\s\S]*?<a class="result__a" href="([^"]+)"[^>]*>([^<]+)<\/a>[\s\S]*?<a class="result__snippet"[^>]*>([^<]+)<\/a>/g;
|
|
44
|
+
let match;
|
|
45
|
+
while ((match = resultRegex.exec(html)) !== null && results.length < limit) {
|
|
46
|
+
const [, urlPath, title, snippet] = match;
|
|
47
|
+
let url = urlPath;
|
|
48
|
+
if (url.startsWith('/url?uddg=')) {
|
|
49
|
+
url = decodeURIComponent(url.replace('/url?uddg=', ''));
|
|
50
|
+
}
|
|
51
|
+
results.push({
|
|
52
|
+
title: this.decodeHtml(title.trim()),
|
|
53
|
+
url: url.trim(),
|
|
54
|
+
snippet: this.decodeHtml(snippet.trim()),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return results;
|
|
58
|
+
}
|
|
59
|
+
decodeHtml(text) {
|
|
60
|
+
return text
|
|
61
|
+
.replace(/&/g, '&')
|
|
62
|
+
.replace(/</g, '<')
|
|
63
|
+
.replace(/>/g, '>')
|
|
64
|
+
.replace(/"/g, '"')
|
|
65
|
+
.replace(/'/g, "'")
|
|
66
|
+
.replace(/ /g, ' ');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=WebSearchTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSearchTool.js","sourceRoot":"","sources":["../../../../src/tools/network/WebSearchTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Tool } from '../base/Tool';
|
|
3
|
+
export declare class GlobTool extends Tool {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
schema: z.ZodObject<{
|
|
7
|
+
pattern: z.ZodString;
|
|
8
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
pattern: string;
|
|
11
|
+
cwd?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
pattern: string;
|
|
14
|
+
cwd?: string | undefined;
|
|
15
|
+
}>;
|
|
16
|
+
execute(input: z.infer<typeof this.schema>): Promise<any>;
|
|
17
|
+
private glob;
|
|
18
|
+
private findFiles;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=GlobTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/search/GlobTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAcpC,qBAAa,QAAS,SAAQ,IAAI;IAChC,IAAI,SAAU;IACd,WAAW,SAAqC;IAEhD,MAAM;;;;;;;;;OAGH;IAEG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;YA4BjD,IAAI;YAyBJ,SAAS;CAYxB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { Tool } from '../base/Tool';
|
|
5
|
+
export class GlobTool extends Tool {
|
|
6
|
+
name = 'glob';
|
|
7
|
+
description = 'Match files using glob patterns';
|
|
8
|
+
schema = z.object({
|
|
9
|
+
pattern: z.string().describe('Glob pattern (e.g., **/*.ts)'),
|
|
10
|
+
cwd: z.string().optional().describe('Working directory'),
|
|
11
|
+
});
|
|
12
|
+
async execute(input) {
|
|
13
|
+
const { pattern, cwd = process.cwd() } = input;
|
|
14
|
+
console.log(`🔍 Matching files: ${pattern}`);
|
|
15
|
+
try {
|
|
16
|
+
const files = await this.glob(pattern, cwd);
|
|
17
|
+
console.log(`✅ Found ${files.length} files`);
|
|
18
|
+
return {
|
|
19
|
+
success: true,
|
|
20
|
+
files,
|
|
21
|
+
count: files.length,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.error(`❌ Glob failed:`, error);
|
|
26
|
+
if (error instanceof Error) {
|
|
27
|
+
throw new Error(`Glob failed: ${error.message}`);
|
|
28
|
+
}
|
|
29
|
+
throw new Error('Glob failed: Unknown error');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async glob(pattern, cwd) {
|
|
33
|
+
const files = [];
|
|
34
|
+
if (pattern.startsWith('**/')) {
|
|
35
|
+
const ext = pattern.slice(3);
|
|
36
|
+
await this.findFiles(cwd, ext, files);
|
|
37
|
+
}
|
|
38
|
+
else if (pattern.startsWith('*.')) {
|
|
39
|
+
const ext = pattern.slice(1);
|
|
40
|
+
const entries = await fs.readdir(cwd);
|
|
41
|
+
for (const entry of entries) {
|
|
42
|
+
if (entry.endsWith(ext)) {
|
|
43
|
+
files.push(path.join(cwd, entry));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return files;
|
|
48
|
+
}
|
|
49
|
+
async findFiles(dir, ext, files) {
|
|
50
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
51
|
+
for (const entry of entries) {
|
|
52
|
+
const fullPath = path.join(dir, entry.name);
|
|
53
|
+
if (entry.isDirectory()) {
|
|
54
|
+
await this.findFiles(fullPath, ext, files);
|
|
55
|
+
}
|
|
56
|
+
else if (entry.name.endsWith(ext)) {
|
|
57
|
+
files.push(fullPath);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=GlobTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobTool.js","sourceRoot":"","sources":["../../../../src/tools/search/GlobTool.ts"],"names":[],"mappings":"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"}
|