@nanocollective/nanocoder 1.17.3 → 1.19.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/README.md +178 -13
- package/assets/nanocoder-vscode.vsix +0 -0
- package/dist/ai-sdk-client-empty-message.spec.d.ts +2 -0
- package/dist/ai-sdk-client-empty-message.spec.d.ts.map +1 -0
- package/dist/ai-sdk-client-empty-message.spec.js +124 -0
- package/dist/ai-sdk-client-empty-message.spec.js.map +1 -0
- package/dist/ai-sdk-client.d.ts +19 -3
- package/dist/ai-sdk-client.d.ts.map +1 -1
- package/dist/ai-sdk-client.js +359 -211
- package/dist/ai-sdk-client.js.map +1 -1
- package/dist/app/utils/appUtils.d.ts +1 -1
- package/dist/app/utils/appUtils.d.ts.map +1 -1
- package/dist/app/utils/appUtils.js +80 -14
- package/dist/app/utils/appUtils.js.map +1 -1
- package/dist/app.d.ts +22 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +369 -53
- package/dist/app.js.map +1 -1
- package/dist/cli.js +37 -2
- package/dist/cli.js.map +1 -1
- package/dist/cli.spec.d.ts +2 -0
- package/dist/cli.spec.d.ts.map +1 -0
- package/dist/cli.spec.js +101 -0
- package/dist/cli.spec.js.map +1 -0
- package/dist/client-factory.d.ts.map +1 -1
- package/dist/client-factory.js +2 -2
- package/dist/client-factory.js.map +1 -1
- package/dist/commands/checkpoint.d.ts +6 -0
- package/dist/commands/checkpoint.d.ts.map +1 -0
- package/dist/commands/checkpoint.js +277 -0
- package/dist/commands/checkpoint.js.map +1 -0
- package/dist/commands/clear.d.ts.map +1 -1
- package/dist/commands/clear.js +1 -1
- package/dist/commands/clear.js.map +1 -1
- package/dist/commands/custom-commands.d.ts.map +1 -1
- package/dist/commands/custom-commands.js +4 -4
- package/dist/commands/custom-commands.js.map +1 -1
- package/dist/commands/exit.d.ts.map +1 -1
- package/dist/commands/exit.js.map +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +2 -2
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +5 -5
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +2 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -2
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +15 -14
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lsp.d.ts.map +1 -1
- package/dist/commands/lsp.js +6 -6
- package/dist/commands/lsp.js.map +1 -1
- package/dist/commands/mcp.d.ts +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +6 -6
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/model-database.d.ts +8 -0
- package/dist/commands/model-database.d.ts.map +1 -0
- package/dist/commands/model-database.js +193 -0
- package/dist/commands/model-database.js.map +1 -0
- package/dist/commands/model.d.ts.map +1 -1
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/provider.d.ts.map +1 -1
- package/dist/commands/provider.js.map +1 -1
- package/dist/commands/setup-config.js +1 -1
- package/dist/commands/setup-config.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/theme.d.ts.map +1 -1
- package/dist/commands/theme.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +5 -5
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +4 -4
- package/dist/commands/usage.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +1 -1
- package/dist/commands.js.map +1 -1
- package/dist/components/assistant-message.d.ts.map +1 -1
- package/dist/components/assistant-message.js +5 -4
- package/dist/components/assistant-message.js.map +1 -1
- package/dist/components/bash-execution-indicator.d.ts.map +1 -1
- package/dist/components/bash-execution-indicator.js +2 -2
- package/dist/components/bash-execution-indicator.js.map +1 -1
- package/dist/components/cancelling-indicator.js +3 -3
- package/dist/components/cancelling-indicator.js.map +1 -1
- package/dist/components/chat-queue.d.ts.map +1 -1
- package/dist/components/chat-queue.js +1 -1
- package/dist/components/chat-queue.js.map +1 -1
- package/dist/components/checkpoint-display.d.ts +8 -0
- package/dist/components/checkpoint-display.d.ts.map +1 -0
- package/dist/components/checkpoint-display.js +29 -0
- package/dist/components/checkpoint-display.js.map +1 -0
- package/dist/components/checkpoint-selector.d.ts +11 -0
- package/dist/components/checkpoint-selector.d.ts.map +1 -0
- package/dist/components/checkpoint-selector.js +55 -0
- package/dist/components/checkpoint-selector.js.map +1 -0
- package/dist/components/error-message.d.ts.map +1 -1
- package/dist/components/error-message.js +4 -4
- package/dist/components/error-message.js.map +1 -1
- package/dist/components/info-message.d.ts.map +1 -1
- package/dist/components/info-message.js +4 -4
- package/dist/components/info-message.js.map +1 -1
- package/dist/components/model-selector.d.ts.map +1 -1
- package/dist/components/model-selector.js +7 -7
- package/dist/components/model-selector.js.map +1 -1
- package/dist/components/provider-selector.d.ts.map +1 -1
- package/dist/components/provider-selector.js +6 -6
- package/dist/components/provider-selector.js.map +1 -1
- package/dist/components/security-disclaimer.d.ts.map +1 -1
- package/dist/components/security-disclaimer.js +4 -4
- package/dist/components/security-disclaimer.js.map +1 -1
- package/dist/components/status.d.ts +5 -0
- package/dist/components/status.d.ts.map +1 -1
- package/dist/components/status.js +36 -7
- package/dist/components/status.js.map +1 -1
- package/dist/components/success-message.d.ts.map +1 -1
- package/dist/components/success-message.js +4 -4
- package/dist/components/success-message.js.map +1 -1
- package/dist/components/theme-selector.d.ts.map +1 -1
- package/dist/components/theme-selector.js +8 -8
- package/dist/components/theme-selector.js.map +1 -1
- package/dist/components/tool-confirmation.d.ts.map +1 -1
- package/dist/components/tool-confirmation.js +7 -7
- package/dist/components/tool-confirmation.js.map +1 -1
- package/dist/components/tool-execution-indicator.d.ts.map +1 -1
- package/dist/components/tool-execution-indicator.js +2 -2
- package/dist/components/tool-execution-indicator.js.map +1 -1
- package/dist/components/tool-message.d.ts.map +1 -1
- package/dist/components/tool-message.js +4 -5
- package/dist/components/tool-message.js.map +1 -1
- package/dist/components/ui/titled-box.d.ts +16 -0
- package/dist/components/ui/titled-box.d.ts.map +1 -0
- package/dist/components/ui/titled-box.js +10 -0
- package/dist/components/ui/titled-box.js.map +1 -0
- package/dist/components/usage/progress-bar.d.ts.map +1 -1
- package/dist/components/usage/progress-bar.js +3 -0
- package/dist/components/usage/progress-bar.js.map +1 -1
- package/dist/components/usage/usage-display.d.ts.map +1 -1
- package/dist/components/usage/usage-display.js +7 -4
- package/dist/components/usage/usage-display.js.map +1 -1
- package/dist/components/user-input.d.ts.map +1 -1
- package/dist/components/user-input.js +9 -8
- package/dist/components/user-input.js.map +1 -1
- package/dist/components/user-message.d.ts.map +1 -1
- package/dist/components/user-message.js +1 -1
- package/dist/components/user-message.js.map +1 -1
- package/dist/components/vscode-extension-prompt.js +3 -3
- package/dist/components/vscode-extension-prompt.js.map +1 -1
- package/dist/components/warning-message.d.ts.map +1 -1
- package/dist/components/warning-message.js +4 -4
- package/dist/components/warning-message.js.map +1 -1
- package/dist/components/welcome-message.d.ts.map +1 -1
- package/dist/components/welcome-message.js +4 -4
- package/dist/components/welcome-message.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +7 -7
- package/dist/config/index.js.map +1 -1
- package/dist/config/index.spec.js +4 -4
- package/dist/config/index.spec.js.map +1 -1
- package/dist/config/paths.spec.js +1 -1
- package/dist/config/paths.spec.js.map +1 -1
- package/dist/config/preferences.d.ts +0 -2
- package/dist/config/preferences.d.ts.map +1 -1
- package/dist/config/preferences.js +1 -11
- package/dist/config/preferences.js.map +1 -1
- package/dist/context/mode-context.d.ts +12 -0
- package/dist/context/mode-context.d.ts.map +1 -0
- package/dist/context/mode-context.js +21 -0
- package/dist/context/mode-context.js.map +1 -0
- package/dist/context/mode-context.spec.d.ts +2 -0
- package/dist/context/mode-context.spec.d.ts.map +1 -0
- package/dist/context/mode-context.spec.js +61 -0
- package/dist/context/mode-context.spec.js.map +1 -0
- package/dist/custom-commands/executor.d.ts.map +1 -1
- package/dist/custom-commands/executor.js.map +1 -1
- package/dist/custom-commands/loader.d.ts.map +1 -1
- package/dist/custom-commands/loader.js +1 -1
- package/dist/custom-commands/loader.js.map +1 -1
- package/dist/custom-commands/parser.d.ts.map +1 -1
- package/dist/custom-commands/parser.js.map +1 -1
- package/dist/hooks/useAppInitialization.d.ts +9 -5
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +119 -45
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useAppState.d.ts +28 -9
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +28 -8
- package/dist/hooks/useAppState.js.map +1 -1
- package/dist/hooks/useChatHandler.d.ts +5 -3
- package/dist/hooks/useChatHandler.d.ts.map +1 -1
- package/dist/hooks/useChatHandler.js +218 -118
- package/dist/hooks/useChatHandler.js.map +1 -1
- package/dist/hooks/useDirectoryTrust.js +1 -1
- package/dist/hooks/useDirectoryTrust.js.map +1 -1
- package/dist/hooks/useInputState.js +2 -2
- package/dist/hooks/useInputState.js.map +1 -1
- package/dist/hooks/useModeHandlers.d.ts +5 -5
- package/dist/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/hooks/useModeHandlers.js +12 -12
- package/dist/hooks/useModeHandlers.js.map +1 -1
- package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
- package/dist/hooks/useTerminalWidth.js +3 -3
- package/dist/hooks/useTerminalWidth.js.map +1 -1
- package/dist/hooks/useTheme.d.ts.map +1 -1
- package/dist/hooks/useTheme.js +1 -1
- package/dist/hooks/useTheme.js.map +1 -1
- package/dist/hooks/useToolHandler.d.ts +1 -1
- package/dist/hooks/useToolHandler.d.ts.map +1 -1
- package/dist/hooks/useToolHandler.js +4 -4
- package/dist/hooks/useToolHandler.js.map +1 -1
- package/dist/hooks/useUIState.d.ts +1 -1
- package/dist/hooks/useUIState.d.ts.map +1 -1
- package/dist/hooks/useUIState.js.map +1 -1
- package/dist/hooks/useVSCodeServer.js +2 -2
- package/dist/hooks/useVSCodeServer.js.map +1 -1
- package/dist/init/agents-template-generator.d.ts +1 -1
- package/dist/init/agents-template-generator.d.ts.map +1 -1
- package/dist/init/agents-template-generator.js.map +1 -1
- package/dist/init/existing-rules-extractor.js +1 -1
- package/dist/init/existing-rules-extractor.js.map +1 -1
- package/dist/init/file-scanner.js +2 -2
- package/dist/init/file-scanner.js.map +1 -1
- package/dist/init/framework-detector.js +1 -1
- package/dist/init/framework-detector.js.map +1 -1
- package/dist/init/project-analyzer.d.ts +1 -1
- package/dist/init/project-analyzer.d.ts.map +1 -1
- package/dist/init/project-analyzer.js +3 -3
- package/dist/init/project-analyzer.js.map +1 -1
- package/dist/lsp/lsp-client.d.ts +1 -1
- package/dist/lsp/lsp-client.d.ts.map +1 -1
- package/dist/lsp/lsp-client.js +1 -1
- package/dist/lsp/lsp-client.js.map +1 -1
- package/dist/lsp/lsp-client.spec.js +1 -2
- package/dist/lsp/lsp-client.spec.js.map +1 -1
- package/dist/lsp/lsp-manager.d.ts +1 -1
- package/dist/lsp/lsp-manager.d.ts.map +1 -1
- package/dist/lsp/lsp-manager.js.map +1 -1
- package/dist/lsp/lsp-manager.spec.js +1 -1
- package/dist/lsp/lsp-manager.spec.js.map +1 -1
- package/dist/lsp/protocol.spec.js +1 -1
- package/dist/lsp/protocol.spec.js.map +1 -1
- package/dist/lsp/server-discovery.spec.js +1 -1
- package/dist/lsp/server-discovery.spec.js.map +1 -1
- package/dist/markdown-parser/index.spec.js.map +1 -1
- package/dist/markdown-parser/table-parser.spec.js.map +1 -1
- package/dist/mcp/mcp-client.d.ts +3 -2
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +279 -96
- package/dist/mcp/mcp-client.js.map +1 -1
- package/dist/mcp/transport-factory.d.ts +1 -1
- package/dist/mcp/transport-factory.d.ts.map +1 -1
- package/dist/mcp/transport-factory.js +16 -3
- package/dist/mcp/transport-factory.js.map +1 -1
- package/dist/mcp/transport-factory.spec.js +30 -48
- package/dist/mcp/transport-factory.spec.js.map +1 -1
- package/dist/message-handler.d.ts +1 -1
- package/dist/message-handler.d.ts.map +1 -1
- package/dist/message-handler.js +1 -1
- package/dist/message-handler.js.map +1 -1
- package/dist/model-database/database-engine.d.ts +25 -0
- package/dist/model-database/database-engine.d.ts.map +1 -0
- package/dist/model-database/database-engine.js +37 -0
- package/dist/model-database/database-engine.js.map +1 -0
- package/dist/model-database/database-engine.spec.d.ts +2 -0
- package/dist/model-database/database-engine.spec.d.ts.map +1 -0
- package/dist/model-database/database-engine.spec.js +413 -0
- package/dist/model-database/database-engine.spec.js.map +1 -0
- package/dist/model-database/model-database.d.ts +30 -0
- package/dist/model-database/model-database.d.ts.map +1 -0
- package/dist/model-database/model-database.js +82 -0
- package/dist/model-database/model-database.js.map +1 -0
- package/dist/model-database/model-database.spec.d.ts +2 -0
- package/dist/model-database/model-database.spec.d.ts.map +1 -0
- package/dist/model-database/model-database.spec.js +322 -0
- package/dist/model-database/model-database.spec.js.map +1 -0
- package/dist/model-database/model-engine.d.ts +25 -0
- package/dist/model-database/model-engine.d.ts.map +1 -0
- package/dist/model-database/model-engine.js +49 -0
- package/dist/model-database/model-engine.js.map +1 -0
- package/dist/model-database/model-engine.spec.d.ts +2 -0
- package/dist/model-database/model-engine.spec.d.ts.map +1 -0
- package/dist/model-database/model-engine.spec.js +381 -0
- package/dist/model-database/model-engine.spec.js.map +1 -0
- package/dist/model-database/model-fetcher.d.ts +14 -0
- package/dist/model-database/model-fetcher.d.ts.map +1 -0
- package/dist/model-database/model-fetcher.js +249 -0
- package/dist/model-database/model-fetcher.js.map +1 -0
- package/dist/model-database/model-fetcher.spec.d.ts +2 -0
- package/dist/model-database/model-fetcher.spec.d.ts.map +1 -0
- package/dist/model-database/model-fetcher.spec.js +498 -0
- package/dist/model-database/model-fetcher.spec.js.map +1 -0
- package/dist/models/models-cache.d.ts +1 -1
- package/dist/models/models-cache.d.ts.map +1 -1
- package/dist/models/models-cache.js +1 -1
- package/dist/models/models-cache.js.map +1 -1
- package/dist/models/models-dev-client.d.ts.map +1 -1
- package/dist/models/models-dev-client.js +23 -7
- package/dist/models/models-dev-client.js.map +1 -1
- package/dist/prompt-history.js +2 -2
- package/dist/prompt-history.js.map +1 -1
- package/dist/services/checkpoint-manager.d.ts +68 -0
- package/dist/services/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/checkpoint-manager.js +345 -0
- package/dist/services/checkpoint-manager.js.map +1 -0
- package/dist/services/checkpoint-manager.spec.d.ts +2 -0
- package/dist/services/checkpoint-manager.spec.d.ts.map +1 -0
- package/dist/services/checkpoint-manager.spec.js +353 -0
- package/dist/services/checkpoint-manager.spec.js.map +1 -0
- package/dist/services/file-snapshot.d.ts +32 -0
- package/dist/services/file-snapshot.d.ts.map +1 -0
- package/dist/services/file-snapshot.js +161 -0
- package/dist/services/file-snapshot.js.map +1 -0
- package/dist/services/file-snapshot.spec.d.ts +2 -0
- package/dist/services/file-snapshot.spec.d.ts.map +1 -0
- package/dist/services/file-snapshot.spec.js +285 -0
- package/dist/services/file-snapshot.spec.js.map +1 -0
- package/dist/test-utils/render-with-theme.d.ts +7 -0
- package/dist/test-utils/render-with-theme.d.ts.map +1 -0
- package/dist/test-utils/render-with-theme.js +38 -0
- package/dist/test-utils/render-with-theme.js.map +1 -0
- package/dist/tokenization/tokenizer-factory.js +2 -2
- package/dist/tokenization/tokenizer-factory.js.map +1 -1
- package/dist/tokenization/tokenizer-factory.spec.js +2 -2
- package/dist/tokenization/tokenizer-factory.spec.js.map +1 -1
- package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts +1 -1
- package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts.map +1 -1
- package/dist/tokenization/tokenizers/anthropic-tokenizer.js.map +1 -1
- package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js.map +1 -1
- package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts +1 -1
- package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts.map +1 -1
- package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js.map +1 -1
- package/dist/tokenization/tokenizers/llama-tokenizer.d.ts +1 -1
- package/dist/tokenization/tokenizers/llama-tokenizer.d.ts.map +1 -1
- package/dist/tokenization/tokenizers/llama-tokenizer.js.map +1 -1
- package/dist/tokenization/tokenizers/llama-tokenizer.spec.js.map +1 -1
- package/dist/tokenization/tokenizers/openai-tokenizer.d.ts +1 -1
- package/dist/tokenization/tokenizers/openai-tokenizer.d.ts.map +1 -1
- package/dist/tokenization/tokenizers/openai-tokenizer.js.map +1 -1
- package/dist/tokenization/tokenizers/openai-tokenizer.spec.js.map +1 -1
- package/dist/tool-calling/json-parser.d.ts.map +1 -1
- package/dist/tool-calling/json-parser.js +12 -14
- package/dist/tool-calling/json-parser.js.map +1 -1
- package/dist/tool-calling/json-parser.spec.js +7 -7
- package/dist/tool-calling/json-parser.spec.js.map +1 -1
- package/dist/tool-calling/tool-parser.d.ts.map +1 -1
- package/dist/tool-calling/tool-parser.js +38 -10
- package/dist/tool-calling/tool-parser.js.map +1 -1
- package/dist/tool-calling/tool-parser.spec.js +82 -4
- package/dist/tool-calling/tool-parser.spec.js.map +1 -1
- package/dist/tool-calling/xml-parser.d.ts.map +1 -1
- package/dist/tool-calling/xml-parser.js +21 -23
- package/dist/tool-calling/xml-parser.js.map +1 -1
- package/dist/tool-calling/xml-parser.spec.js +23 -3
- package/dist/tool-calling/xml-parser.spec.js.map +1 -1
- package/dist/tools/create-file.d.ts +24 -2
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +20 -16
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/delete-lines.d.ts +18 -2
- package/dist/tools/delete-lines.d.ts.map +1 -1
- package/dist/tools/delete-lines.js +22 -17
- package/dist/tools/delete-lines.js.map +1 -1
- package/dist/tools/execute-bash.d.ts +2 -2
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +13 -12
- package/dist/tools/execute-bash.js.map +1 -1
- package/dist/tools/execute-function.spec.d.ts +2 -0
- package/dist/tools/execute-function.spec.d.ts.map +1 -0
- package/dist/tools/execute-function.spec.js +141 -0
- package/dist/tools/execute-function.spec.js.map +1 -0
- package/dist/tools/fetch-url.d.ts +16 -2
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +13 -13
- package/dist/tools/fetch-url.js.map +1 -1
- package/dist/tools/find-files.d.ts +18 -2
- package/dist/tools/find-files.d.ts.map +1 -1
- package/dist/tools/find-files.js +13 -11
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/index.d.ts +2 -3
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +35 -25
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insert-lines.d.ts +18 -2
- package/dist/tools/insert-lines.d.ts.map +1 -1
- package/dist/tools/insert-lines.js +21 -16
- package/dist/tools/insert-lines.js.map +1 -1
- package/dist/tools/lsp-get-diagnostics.d.ts +10 -2
- package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
- package/dist/tools/lsp-get-diagnostics.js +13 -11
- package/dist/tools/lsp-get-diagnostics.js.map +1 -1
- package/dist/tools/needs-approval.spec.d.ts +2 -0
- package/dist/tools/needs-approval.spec.d.ts.map +1 -0
- package/dist/tools/needs-approval.spec.js +308 -0
- package/dist/tools/needs-approval.spec.js.map +1 -0
- package/dist/tools/read-file.d.ts +2 -2
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +16 -18
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/replace-lines.d.ts +19 -2
- package/dist/tools/replace-lines.d.ts.map +1 -1
- package/dist/tools/replace-lines.js +21 -16
- package/dist/tools/replace-lines.js.map +1 -1
- package/dist/tools/search-file-contents.d.ts +20 -2
- package/dist/tools/search-file-contents.d.ts.map +1 -1
- package/dist/tools/search-file-contents.js +17 -14
- package/dist/tools/search-file-contents.js.map +1 -1
- package/dist/tools/tool-manager.d.ts +1 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +1 -1
- package/dist/tools/tool-manager.js.map +1 -1
- package/dist/tools/tool-registry.d.ts +1 -1
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/web-search.d.ts +2 -2
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +14 -14
- package/dist/tools/web-search.js.map +1 -1
- package/dist/types/app.d.ts +7 -4
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/checkpoint.d.ts +43 -0
- package/dist/types/checkpoint.d.ts.map +1 -0
- package/dist/types/checkpoint.js +2 -0
- package/dist/types/checkpoint.js.map +1 -0
- package/dist/types/config.d.ts +0 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/core-connection-status.spec.d.ts +2 -0
- package/dist/types/core-connection-status.spec.d.ts.map +1 -0
- package/dist/types/core-connection-status.spec.js +52 -0
- package/dist/types/core-connection-status.spec.js.map +1 -0
- package/dist/types/core.d.ts +34 -29
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +1 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/system.d.ts +5 -30
- package/dist/types/system.d.ts.map +1 -1
- package/dist/usage/calculator.spec.js +1 -1
- package/dist/usage/calculator.spec.js.map +1 -1
- package/dist/usage/storage.d.ts +1 -1
- package/dist/usage/storage.d.ts.map +1 -1
- package/dist/usage/storage.js +9 -3
- package/dist/usage/storage.js.map +1 -1
- package/dist/usage/storage.spec.js +3 -3
- package/dist/usage/storage.spec.js.map +1 -1
- package/dist/usage/tracker.d.ts.map +1 -1
- package/dist/usage/tracker.js +1 -1
- package/dist/usage/tracker.js.map +1 -1
- package/dist/usage/tracker.spec.js +4 -4
- package/dist/usage/tracker.spec.js.map +1 -1
- package/dist/utils/atomic-deletion.spec.js +1 -1
- package/dist/utils/atomic-deletion.spec.js.map +1 -1
- package/dist/utils/checkpoint-utils.d.ts +12 -0
- package/dist/utils/checkpoint-utils.d.ts.map +1 -0
- package/dist/utils/checkpoint-utils.js +85 -0
- package/dist/utils/checkpoint-utils.js.map +1 -0
- package/dist/utils/checkpoint-utils.spec.d.ts +2 -0
- package/dist/utils/checkpoint-utils.spec.d.ts.map +1 -0
- package/dist/utils/checkpoint-utils.spec.js +182 -0
- package/dist/utils/checkpoint-utils.spec.js.map +1 -0
- package/dist/utils/error-formatter.d.ts +35 -0
- package/dist/utils/error-formatter.d.ts.map +1 -1
- package/dist/utils/error-formatter.js +123 -0
- package/dist/utils/error-formatter.js.map +1 -1
- package/dist/utils/file-autocomplete.js +2 -2
- package/dist/utils/file-autocomplete.js.map +1 -1
- package/dist/utils/file-autocomplete.spec.js +1 -1
- package/dist/utils/file-autocomplete.spec.js.map +1 -1
- package/dist/utils/file-content-loader.js +1 -1
- package/dist/utils/file-content-loader.js.map +1 -1
- package/dist/utils/file-content-loader.spec.js +4 -4
- package/dist/utils/file-content-loader.spec.js.map +1 -1
- package/dist/utils/file-mention-handler.js.map +1 -1
- package/dist/utils/file-mention-handler.spec.js +4 -4
- package/dist/utils/file-mention-handler.spec.js.map +1 -1
- package/dist/utils/file-mention-parser.spec.js +2 -2
- package/dist/utils/file-mention-parser.spec.js.map +1 -1
- package/dist/utils/installation-detector.js +2 -2
- package/dist/utils/installation-detector.js.map +1 -1
- package/dist/utils/installation-detector.spec.js +10 -17
- package/dist/utils/installation-detector.spec.js.map +1 -1
- package/dist/utils/logging/config.d.ts +41 -0
- package/dist/utils/logging/config.d.ts.map +1 -0
- package/dist/utils/logging/config.js +188 -0
- package/dist/utils/logging/config.js.map +1 -0
- package/dist/utils/logging/config.spec.d.ts +2 -0
- package/dist/utils/logging/config.spec.d.ts.map +1 -0
- package/dist/utils/logging/config.spec.js +233 -0
- package/dist/utils/logging/config.spec.js.map +1 -0
- package/dist/utils/logging/console-facade.d.ts +93 -0
- package/dist/utils/logging/console-facade.d.ts.map +1 -0
- package/dist/utils/logging/console-facade.js +295 -0
- package/dist/utils/logging/console-facade.js.map +1 -0
- package/dist/utils/logging/console-facade.spec.d.ts +2 -0
- package/dist/utils/logging/console-facade.spec.d.ts.map +1 -0
- package/dist/utils/logging/console-facade.spec.js +143 -0
- package/dist/utils/logging/console-facade.spec.js.map +1 -0
- package/dist/utils/logging/correlation.d.ts +139 -0
- package/dist/utils/logging/correlation.d.ts.map +1 -0
- package/dist/utils/logging/correlation.js +410 -0
- package/dist/utils/logging/correlation.js.map +1 -0
- package/dist/utils/logging/correlation.spec.d.ts +2 -0
- package/dist/utils/logging/correlation.spec.d.ts.map +1 -0
- package/dist/utils/logging/correlation.spec.js +449 -0
- package/dist/utils/logging/correlation.spec.js.map +1 -0
- package/dist/utils/logging/formatters.d.ts +70 -0
- package/dist/utils/logging/formatters.d.ts.map +1 -0
- package/dist/utils/logging/formatters.js +186 -0
- package/dist/utils/logging/formatters.js.map +1 -0
- package/dist/utils/logging/formatters.spec.d.ts +2 -0
- package/dist/utils/logging/formatters.spec.d.ts.map +1 -0
- package/dist/utils/logging/formatters.spec.js +356 -0
- package/dist/utils/logging/formatters.spec.js.map +1 -0
- package/dist/utils/logging/health-monitor.d.ts +216 -0
- package/dist/utils/logging/health-monitor.d.ts.map +1 -0
- package/dist/utils/logging/health-monitor.js +760 -0
- package/dist/utils/logging/health-monitor.js.map +1 -0
- package/dist/utils/logging/health-monitor.spec.d.ts +2 -0
- package/dist/utils/logging/health-monitor.spec.d.ts.map +1 -0
- package/dist/utils/logging/health-monitor.spec.js +305 -0
- package/dist/utils/logging/health-monitor.spec.js.map +1 -0
- package/dist/utils/logging/index.d.ts +100 -0
- package/dist/utils/logging/index.d.ts.map +1 -0
- package/dist/utils/logging/index.js +186 -0
- package/dist/utils/logging/index.js.map +1 -0
- package/dist/utils/logging/index.spec.d.ts +2 -0
- package/dist/utils/logging/index.spec.d.ts.map +1 -0
- package/dist/utils/logging/index.spec.js +214 -0
- package/dist/utils/logging/index.spec.js.map +1 -0
- package/dist/utils/logging/integration.spec.d.ts +2 -0
- package/dist/utils/logging/integration.spec.d.ts.map +1 -0
- package/dist/utils/logging/integration.spec.js +312 -0
- package/dist/utils/logging/integration.spec.js.map +1 -0
- package/dist/utils/logging/log-method-factory.d.ts +43 -0
- package/dist/utils/logging/log-method-factory.d.ts.map +1 -0
- package/dist/utils/logging/log-method-factory.js +176 -0
- package/dist/utils/logging/log-method-factory.js.map +1 -0
- package/dist/utils/logging/log-method-factory.spec.d.ts +2 -0
- package/dist/utils/logging/log-method-factory.spec.d.ts.map +1 -0
- package/dist/utils/logging/log-method-factory.spec.js +428 -0
- package/dist/utils/logging/log-method-factory.spec.js.map +1 -0
- package/dist/utils/logging/log-query.d.ts +275 -0
- package/dist/utils/logging/log-query.d.ts.map +1 -0
- package/dist/utils/logging/log-query.js +621 -0
- package/dist/utils/logging/log-query.js.map +1 -0
- package/dist/utils/logging/log-query.spec.d.ts +2 -0
- package/dist/utils/logging/log-query.spec.d.ts.map +1 -0
- package/dist/utils/logging/log-query.spec.js +737 -0
- package/dist/utils/logging/log-query.spec.js.map +1 -0
- package/dist/utils/logging/logger-provider.d.ts +73 -0
- package/dist/utils/logging/logger-provider.d.ts.map +1 -0
- package/dist/utils/logging/logger-provider.js +298 -0
- package/dist/utils/logging/logger-provider.js.map +1 -0
- package/dist/utils/logging/logger-provider.spec.d.ts +2 -0
- package/dist/utils/logging/logger-provider.spec.d.ts.map +1 -0
- package/dist/utils/logging/logger-provider.spec.js +204 -0
- package/dist/utils/logging/logger-provider.spec.js.map +1 -0
- package/dist/utils/logging/performance.d.ts +147 -0
- package/dist/utils/logging/performance.d.ts.map +1 -0
- package/dist/utils/logging/performance.js +520 -0
- package/dist/utils/logging/performance.js.map +1 -0
- package/dist/utils/logging/performance.spec.d.ts +2 -0
- package/dist/utils/logging/performance.spec.d.ts.map +1 -0
- package/dist/utils/logging/performance.spec.js +139 -0
- package/dist/utils/logging/performance.spec.js.map +1 -0
- package/dist/utils/logging/pino-logger.d.ts +22 -0
- package/dist/utils/logging/pino-logger.d.ts.map +1 -0
- package/dist/utils/logging/pino-logger.js +372 -0
- package/dist/utils/logging/pino-logger.js.map +1 -0
- package/dist/utils/logging/pino-logger.spec.d.ts +2 -0
- package/dist/utils/logging/pino-logger.spec.d.ts.map +1 -0
- package/dist/utils/logging/pino-logger.spec.js +294 -0
- package/dist/utils/logging/pino-logger.spec.js.map +1 -0
- package/dist/utils/logging/redaction.d.ts +38 -0
- package/dist/utils/logging/redaction.d.ts.map +1 -0
- package/dist/utils/logging/redaction.js +210 -0
- package/dist/utils/logging/redaction.js.map +1 -0
- package/dist/utils/logging/redaction.spec.d.ts +2 -0
- package/dist/utils/logging/redaction.spec.d.ts.map +1 -0
- package/dist/utils/logging/redaction.spec.js +338 -0
- package/dist/utils/logging/redaction.spec.js.map +1 -0
- package/dist/utils/logging/request-tracker.d.ts +189 -0
- package/dist/utils/logging/request-tracker.d.ts.map +1 -0
- package/dist/utils/logging/request-tracker.js +569 -0
- package/dist/utils/logging/request-tracker.js.map +1 -0
- package/dist/utils/logging/request-tracker.spec.d.ts +2 -0
- package/dist/utils/logging/request-tracker.spec.d.ts.map +1 -0
- package/dist/utils/logging/request-tracker.spec.js +868 -0
- package/dist/utils/logging/request-tracker.spec.js.map +1 -0
- package/dist/utils/logging/transports.d.ts +55 -0
- package/dist/utils/logging/transports.d.ts.map +1 -0
- package/dist/utils/logging/transports.js +252 -0
- package/dist/utils/logging/transports.js.map +1 -0
- package/dist/utils/logging/transports.spec.d.ts +2 -0
- package/dist/utils/logging/transports.spec.d.ts.map +1 -0
- package/dist/utils/logging/transports.spec.js +390 -0
- package/dist/utils/logging/transports.spec.js.map +1 -0
- package/dist/utils/logging/types.d.ts +173 -0
- package/dist/utils/logging/types.d.ts.map +1 -0
- package/dist/utils/logging/types.js +5 -0
- package/dist/utils/logging/types.js.map +1 -0
- package/dist/utils/message-queue.d.ts +64 -4
- package/dist/utils/message-queue.d.ts.map +1 -1
- package/dist/utils/message-queue.js +282 -28
- package/dist/utils/message-queue.js.map +1 -1
- package/dist/utils/paste-utils.spec.js +1 -1
- package/dist/utils/paste-utils.spec.js.map +1 -1
- package/dist/utils/prompt-processor.d.ts +2 -3
- package/dist/utils/prompt-processor.d.ts.map +1 -1
- package/dist/utils/prompt-processor.js +4 -52
- package/dist/utils/prompt-processor.js.map +1 -1
- package/dist/utils/tool-cancellation.spec.js.map +1 -1
- package/dist/utils/tool-result-display.d.ts +2 -2
- package/dist/utils/tool-result-display.d.ts.map +1 -1
- package/dist/utils/tool-result-display.js +3 -3
- package/dist/utils/tool-result-display.js.map +1 -1
- package/dist/utils/update-checker.d.ts.map +1 -1
- package/dist/utils/update-checker.js +1 -1
- package/dist/utils/update-checker.js.map +1 -1
- package/dist/utils/update-checker.spec.js +2 -2
- package/dist/utils/update-checker.spec.js.map +1 -1
- package/dist/vscode/extension-installer.js +1 -1
- package/dist/vscode/extension-installer.js.map +1 -1
- package/dist/vscode/extension-installer.spec.js +1 -1
- package/dist/vscode/extension-installer.spec.js.map +1 -1
- package/dist/vscode/protocol.spec.js +1 -1
- package/dist/vscode/protocol.spec.js.map +1 -1
- package/dist/vscode/vscode-server.d.ts.map +1 -1
- package/dist/vscode/vscode-server.js +2 -2
- package/dist/vscode/vscode-server.js.map +1 -1
- package/dist/vscode/vscode-server.spec.js.map +1 -1
- package/dist/wizard/config-wizard.d.ts.map +1 -1
- package/dist/wizard/config-wizard.js +16 -12
- package/dist/wizard/config-wizard.js.map +1 -1
- package/dist/wizard/steps/location-step.js +4 -4
- package/dist/wizard/steps/location-step.js.map +1 -1
- package/dist/wizard/steps/mcp-step.d.ts.map +1 -1
- package/dist/wizard/steps/mcp-step.js +4 -4
- package/dist/wizard/steps/mcp-step.js.map +1 -1
- package/dist/wizard/steps/provider-step.d.ts.map +1 -1
- package/dist/wizard/steps/provider-step.js +4 -4
- package/dist/wizard/steps/provider-step.js.map +1 -1
- package/dist/wizard/steps/summary-step.d.ts.map +1 -1
- package/dist/wizard/steps/summary-step.js +2 -2
- package/dist/wizard/steps/summary-step.js.map +1 -1
- package/dist/wizard/templates/provider-templates.d.ts.map +1 -1
- package/dist/wizard/templates/provider-templates.js +66 -2
- package/dist/wizard/templates/provider-templates.js.map +1 -1
- package/dist/wizard/validation-array.spec.js +1 -1
- package/dist/wizard/validation-array.spec.js.map +1 -1
- package/dist/wizard/validation.spec.js +1 -1
- package/dist/wizard/validation.spec.js.map +1 -1
- package/package.json +28 -26
- package/source/app/prompts/main-prompt.md +29 -96
- package/dist/commands/recommendations.d.ts +0 -8
- package/dist/commands/recommendations.d.ts.map +0 -1
- package/dist/commands/recommendations.js +0 -311
- package/dist/commands/recommendations.js.map +0 -1
- package/dist/commands/streaming.d.ts +0 -3
- package/dist/commands/streaming.d.ts.map +0 -1
- package/dist/commands/streaming.js +0 -23
- package/dist/commands/streaming.js.map +0 -1
- package/dist/components/thinking-indicator.d.ts +0 -3
- package/dist/components/thinking-indicator.d.ts.map +0 -1
- package/dist/components/thinking-indicator.js +0 -69
- package/dist/components/thinking-indicator.js.map +0 -1
- package/dist/recommendations/model-database.d.ts +0 -8
- package/dist/recommendations/model-database.d.ts.map +0 -1
- package/dist/recommendations/model-database.js +0 -514
- package/dist/recommendations/model-database.js.map +0 -1
- package/dist/recommendations/model-engine.d.ts +0 -16
- package/dist/recommendations/model-engine.d.ts.map +0 -1
- package/dist/recommendations/model-engine.js +0 -185
- package/dist/recommendations/model-engine.js.map +0 -1
- package/dist/recommendations/recommendation-engine.d.ts +0 -39
- package/dist/recommendations/recommendation-engine.d.ts.map +0 -1
- package/dist/recommendations/recommendation-engine.js +0 -144
- package/dist/recommendations/recommendation-engine.js.map +0 -1
- package/dist/system/detector.d.ts +0 -18
- package/dist/system/detector.d.ts.map +0 -1
- package/dist/system/detector.js +0 -140
- package/dist/system/detector.js.map +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { tmpdir } from 'os';
|
|
2
|
+
import { resolve } from 'path';
|
|
3
|
+
import test from 'ava';
|
|
4
|
+
import { readFile, unlink, writeFile } from 'fs/promises';
|
|
5
|
+
import { createFileTool } from './create-file.js';
|
|
6
|
+
import { executeBashTool } from './execute-bash.js';
|
|
7
|
+
import { readFileTool } from './read-file.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Tests for AI SDK v6 Native Tools
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// These tests validate that the native AI SDK tools work correctly with their
|
|
12
|
+
// execute functions. Since tools now only export the native AI SDK tool,
|
|
13
|
+
// there's no separate handler to compare against.
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Bash Execute Function
|
|
16
|
+
// ============================================================================
|
|
17
|
+
test('execute_bash tool works correctly', async (t) => {
|
|
18
|
+
const result = (await executeBashTool.tool.execute({ command: 'echo "test"' }, {
|
|
19
|
+
toolCallId: 'test-1',
|
|
20
|
+
messages: [],
|
|
21
|
+
}));
|
|
22
|
+
t.truthy(result);
|
|
23
|
+
t.regex(result, /test/);
|
|
24
|
+
});
|
|
25
|
+
test('execute_bash includes exit code', async (t) => {
|
|
26
|
+
const result = (await executeBashTool.tool.execute({ command: 'echo "success"' }, {
|
|
27
|
+
toolCallId: 'test-2',
|
|
28
|
+
messages: [],
|
|
29
|
+
}));
|
|
30
|
+
t.truthy(result);
|
|
31
|
+
t.regex(result, /EXIT_CODE: 0/);
|
|
32
|
+
});
|
|
33
|
+
test('execute_bash captures stderr', async (t) => {
|
|
34
|
+
const result = (await executeBashTool.tool.execute({ command: 'echo "error" >&2' }, {
|
|
35
|
+
toolCallId: 'test-3',
|
|
36
|
+
messages: [],
|
|
37
|
+
}));
|
|
38
|
+
t.truthy(result);
|
|
39
|
+
t.regex(result, /STDERR:/);
|
|
40
|
+
t.regex(result, /error/);
|
|
41
|
+
});
|
|
42
|
+
test('execute_bash tool name constant is correct', t => {
|
|
43
|
+
t.is(executeBashTool.name, 'execute_bash');
|
|
44
|
+
});
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// Read File Execute Function
|
|
47
|
+
// ============================================================================
|
|
48
|
+
test('read_file reads existing file', async (t) => {
|
|
49
|
+
const testFile = resolve(tmpdir(), `nanocoder-test-${Date.now()}.txt`);
|
|
50
|
+
await writeFile(testFile, 'test content', 'utf-8');
|
|
51
|
+
try {
|
|
52
|
+
const result = (await readFileTool.tool.execute({ path: testFile }, {
|
|
53
|
+
toolCallId: 'test-4',
|
|
54
|
+
messages: [],
|
|
55
|
+
}));
|
|
56
|
+
t.truthy(result);
|
|
57
|
+
t.regex(result, /test content/);
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
await unlink(testFile).catch(() => { });
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
test('read_file handles non-existent file', async (t) => {
|
|
64
|
+
const nonExistentFile = resolve(tmpdir(), 'non-existent-file.txt');
|
|
65
|
+
await t.throwsAsync(async () => {
|
|
66
|
+
await readFileTool.tool.execute({ path: nonExistentFile }, {
|
|
67
|
+
toolCallId: 'test-5',
|
|
68
|
+
messages: [],
|
|
69
|
+
});
|
|
70
|
+
}, { message: /does not exist|no such file or directory|ENOENT/i });
|
|
71
|
+
});
|
|
72
|
+
test('read_file reads with line ranges', async (t) => {
|
|
73
|
+
const testFile = resolve(tmpdir(), `nanocoder-test-${Date.now()}.txt`);
|
|
74
|
+
await writeFile(testFile, 'line1\nline2\nline3\nline4\nline5', 'utf-8');
|
|
75
|
+
try {
|
|
76
|
+
const result = (await readFileTool.tool.execute({ path: testFile, start_line: 2, end_line: 4 }, {
|
|
77
|
+
toolCallId: 'test-6',
|
|
78
|
+
messages: [],
|
|
79
|
+
}));
|
|
80
|
+
t.truthy(result);
|
|
81
|
+
t.regex(result, /line2/);
|
|
82
|
+
t.regex(result, /line3/);
|
|
83
|
+
t.regex(result, /line4/);
|
|
84
|
+
t.notRegex(result, /line1/);
|
|
85
|
+
t.notRegex(result, /line5/);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
await unlink(testFile).catch(() => { });
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
test('read_file tool name constant is correct', t => {
|
|
92
|
+
t.is(readFileTool.name, 'read_file');
|
|
93
|
+
});
|
|
94
|
+
// ============================================================================
|
|
95
|
+
// Create File Execute Function
|
|
96
|
+
// ============================================================================
|
|
97
|
+
test('create_file creates file', async (t) => {
|
|
98
|
+
const testFile = resolve(tmpdir(), `nanocoder-test-${Date.now()}.txt`);
|
|
99
|
+
try {
|
|
100
|
+
const result = (await createFileTool.tool.execute({
|
|
101
|
+
path: testFile,
|
|
102
|
+
content: 'created by test',
|
|
103
|
+
}, {
|
|
104
|
+
toolCallId: 'test-7',
|
|
105
|
+
messages: [],
|
|
106
|
+
}));
|
|
107
|
+
t.is(result, 'File written successfully');
|
|
108
|
+
// Verify file was created
|
|
109
|
+
const content = await readFile(testFile, 'utf-8');
|
|
110
|
+
t.is(content, 'created by test');
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
await unlink(testFile).catch(() => { });
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
test('create_file overwrites existing file', async (t) => {
|
|
117
|
+
const testFile = resolve(tmpdir(), `nanocoder-test-${Date.now()}.txt`);
|
|
118
|
+
try {
|
|
119
|
+
// Create initial file
|
|
120
|
+
await writeFile(testFile, 'old content', 'utf-8');
|
|
121
|
+
// Overwrite with create_file
|
|
122
|
+
const result = (await createFileTool.tool.execute({
|
|
123
|
+
path: testFile,
|
|
124
|
+
content: 'new content',
|
|
125
|
+
}, {
|
|
126
|
+
toolCallId: 'test-8',
|
|
127
|
+
messages: [],
|
|
128
|
+
}));
|
|
129
|
+
t.is(result, 'File written successfully');
|
|
130
|
+
// Verify file was overwritten
|
|
131
|
+
const content = await readFile(testFile, 'utf-8');
|
|
132
|
+
t.is(content, 'new content');
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
await unlink(testFile).catch(() => { });
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
test('create_file tool name constant is correct', t => {
|
|
139
|
+
t.is(createFileTool.name, 'create_file');
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=execute-function.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-function.spec.js","sourceRoot":"","sources":["../../source/tools/execute-function.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface FetchArgs {
|
|
3
|
+
url: string;
|
|
4
|
+
}
|
|
5
|
+
export declare const fetchUrlTool: {
|
|
6
|
+
name: "fetch_url";
|
|
7
|
+
tool: import("ai").Tool<FetchArgs, string>;
|
|
8
|
+
formatter: (args: FetchArgs, result?: string) => Promise<React.ReactElement>;
|
|
9
|
+
validator: (args: FetchArgs) => Promise<{
|
|
10
|
+
valid: true;
|
|
11
|
+
} | {
|
|
12
|
+
valid: false;
|
|
13
|
+
error: string;
|
|
14
|
+
}>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
3
17
|
//# sourceMappingURL=fetch-url.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-url.d.ts","sourceRoot":"","sources":["../../source/tools/fetch-url.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch-url.d.ts","sourceRoot":"","sources":["../../source/tools/fetch-url.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,UAAU,SAAS;IAClB,GAAG,EAAE,MAAM,CAAC;CACZ;AA4JD,eAAO,MAAM,YAAY;;;sBA9ClB,SAAS,WACN,MAAM,KACb,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;sBAKvB,SAAS,KACb,OAAO,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAC,GAAG;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;CA2CxD,CAAC"}
|
package/dist/tools/fetch-url.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { convertToMarkdown } from '@nanocollective/get-md';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
3
4
|
import React from 'react';
|
|
4
|
-
import { Text, Box } from 'ink';
|
|
5
|
-
import { tool, jsonSchema } from '../types/core.js';
|
|
6
|
-
import { ThemeContext } from '../hooks/useTheme.js';
|
|
7
5
|
import ToolMessage from '../components/tool-message.js';
|
|
6
|
+
import { ThemeContext } from '../hooks/useTheme.js';
|
|
7
|
+
import { jsonSchema, tool } from '../types/core.js';
|
|
8
8
|
const executeFetchUrl = async (args) => {
|
|
9
9
|
// Validate URL
|
|
10
10
|
try {
|
|
@@ -33,7 +33,6 @@ const executeFetchUrl = async (args) => {
|
|
|
33
33
|
throw new Error(`Failed to fetch URL: ${message}`);
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
|
-
// AI SDK tool definition
|
|
37
36
|
const fetchUrlCoreTool = tool({
|
|
38
37
|
description: 'Fetch and parse markdown content from a URL',
|
|
39
38
|
inputSchema: jsonSchema({
|
|
@@ -46,7 +45,11 @@ const fetchUrlCoreTool = tool({
|
|
|
46
45
|
},
|
|
47
46
|
required: ['url'],
|
|
48
47
|
}),
|
|
49
|
-
//
|
|
48
|
+
// Low risk: read-only operation, never requires approval
|
|
49
|
+
needsApproval: false,
|
|
50
|
+
execute: async (args, _options) => {
|
|
51
|
+
return await executeFetchUrl(args);
|
|
52
|
+
},
|
|
50
53
|
});
|
|
51
54
|
// Create a component that will re-render when theme changes
|
|
52
55
|
const FetchUrlFormatter = React.memo(({ args, result }) => {
|
|
@@ -68,10 +71,10 @@ const FetchUrlFormatter = React.memo(({ args, result }) => {
|
|
|
68
71
|
const messageContent = (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.tool, children: "\u2692 fetch_url" }), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "URL: " }), _jsx(Text, { color: colors.white, children: url })] }), result && (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Content: " }), _jsxs(Text, { color: colors.white, children: [contentSize.toLocaleString(), " characters (~", estimatedTokens, ' ', "tokens)"] })] }), wasTruncated && (_jsx(Box, { children: _jsx(Text, { color: colors.warning, children: "\u26A0 Content was truncated to 100KB" }) }))] }))] }));
|
|
69
72
|
return _jsx(ToolMessage, { message: messageContent, hideBox: true });
|
|
70
73
|
});
|
|
71
|
-
const
|
|
74
|
+
const fetchUrlFormatter = (args, result) => {
|
|
72
75
|
return Promise.resolve(_jsx(FetchUrlFormatter, { args: args, result: result }));
|
|
73
76
|
};
|
|
74
|
-
const
|
|
77
|
+
const fetchUrlValidator = (args) => {
|
|
75
78
|
// Validate URL format
|
|
76
79
|
try {
|
|
77
80
|
const parsedUrl = new URL(args.url);
|
|
@@ -104,13 +107,10 @@ const validator = (args) => {
|
|
|
104
107
|
});
|
|
105
108
|
}
|
|
106
109
|
};
|
|
107
|
-
// Nanocoder tool definition with AI SDK core tool + custom extensions
|
|
108
110
|
export const fetchUrlTool = {
|
|
109
111
|
name: 'fetch_url',
|
|
110
|
-
tool: fetchUrlCoreTool,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
validator,
|
|
114
|
-
requiresConfirmation: false,
|
|
112
|
+
tool: fetchUrlCoreTool,
|
|
113
|
+
formatter: fetchUrlFormatter,
|
|
114
|
+
validator: fetchUrlValidator,
|
|
115
115
|
};
|
|
116
116
|
//# sourceMappingURL=fetch-url.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-url.js","sourceRoot":"","sources":["../../source/tools/fetch-url.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"fetch-url.js","sourceRoot":"","sources":["../../source/tools/fetch-url.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface FindFilesArgs {
|
|
3
|
+
pattern: string;
|
|
4
|
+
maxResults?: number;
|
|
5
|
+
}
|
|
6
|
+
interface FindFilesFormatterProps {
|
|
7
|
+
args: {
|
|
8
|
+
pattern: string;
|
|
9
|
+
maxResults?: number;
|
|
10
|
+
};
|
|
11
|
+
result?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const findFilesTool: {
|
|
14
|
+
name: "find_files";
|
|
15
|
+
tool: import("ai").Tool<FindFilesArgs, string>;
|
|
16
|
+
formatter: (args: FindFilesFormatterProps["args"], result?: string) => React.ReactElement;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
3
19
|
//# sourceMappingURL=find-files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-files.d.ts","sourceRoot":"","sources":["../../source/tools/find-files.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"find-files.d.ts","sourceRoot":"","sources":["../../source/tools/find-files.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmI1B,UAAU,aAAa;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAwDD,UAAU,uBAAuB;IAChC,IAAI,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAkDD,eAAO,MAAM,aAAa;;;sBATnB,uBAAuB,CAAC,MAAM,CAAC,WAC5B,MAAM,KACb,KAAK,CAAC,YAAY;CAWpB,CAAC"}
|
package/dist/tools/find-files.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { exec } from 'node:child_process';
|
|
3
|
-
import {
|
|
4
|
-
import { readFileSync, existsSync } from 'node:fs';
|
|
3
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
5
4
|
import { join } from 'node:path';
|
|
6
|
-
import
|
|
5
|
+
import { promisify } from 'node:util';
|
|
7
6
|
import ignore from 'ignore';
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import { ThemeContext } from '../hooks/useTheme.js';
|
|
7
|
+
import { Box, Text } from 'ink';
|
|
8
|
+
import React from 'react';
|
|
11
9
|
import ToolMessage from '../components/tool-message.js';
|
|
10
|
+
import { ThemeContext } from '../hooks/useTheme.js';
|
|
11
|
+
import { jsonSchema, tool } from '../types/core.js';
|
|
12
12
|
const execAsync = promisify(exec);
|
|
13
13
|
/**
|
|
14
14
|
* Load and parse .gitignore file, returns an ignore instance
|
|
@@ -134,7 +134,6 @@ const executeFindFiles = async (args) => {
|
|
|
134
134
|
throw new Error(`File search failed: ${errorMessage}`);
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
|
-
// AI SDK tool definition
|
|
138
137
|
const findFilesCoreTool = tool({
|
|
139
138
|
description: 'Find files and directories by path pattern or name. Use glob patterns like "*.tsx", "**/*.ts", "src/**/*.js", or "*.{ts,tsx}". Returns a list of matching file and directory paths. Does NOT search file contents - use search_file_contents for that.',
|
|
140
139
|
inputSchema: jsonSchema({
|
|
@@ -151,6 +150,11 @@ const findFilesCoreTool = tool({
|
|
|
151
150
|
},
|
|
152
151
|
required: ['pattern'],
|
|
153
152
|
}),
|
|
153
|
+
// Low risk: read-only operation, never requires approval
|
|
154
|
+
needsApproval: false,
|
|
155
|
+
execute: async (args, _options) => {
|
|
156
|
+
return await executeFindFiles(args);
|
|
157
|
+
},
|
|
154
158
|
});
|
|
155
159
|
const FindFilesFormatter = React.memo(({ args, result }) => {
|
|
156
160
|
const themeContext = React.useContext(ThemeContext);
|
|
@@ -170,7 +174,7 @@ const FindFilesFormatter = React.memo(({ args, result }) => {
|
|
|
170
174
|
const messageContent = (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.tool, children: "\u2692 find_files" }), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Pattern: " }), _jsx(Text, { color: colors.white, children: args.pattern })] }), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Results: " }), _jsx(Text, { color: colors.white, children: fileCount })] })] }));
|
|
171
175
|
return _jsx(ToolMessage, { message: messageContent, hideBox: true });
|
|
172
176
|
});
|
|
173
|
-
const
|
|
177
|
+
const findFilesFormatter = (args, result) => {
|
|
174
178
|
if (result && result.startsWith('Error:')) {
|
|
175
179
|
return _jsx(_Fragment, {});
|
|
176
180
|
}
|
|
@@ -179,8 +183,6 @@ const formatter = (args, result) => {
|
|
|
179
183
|
export const findFilesTool = {
|
|
180
184
|
name: 'find_files',
|
|
181
185
|
tool: findFilesCoreTool,
|
|
182
|
-
|
|
183
|
-
formatter,
|
|
184
|
-
requiresConfirmation: false,
|
|
186
|
+
formatter: findFilesFormatter,
|
|
185
187
|
};
|
|
186
188
|
//# sourceMappingURL=find-files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-files.js","sourceRoot":"","sources":["../../source/tools/find-files.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"find-files.js","sourceRoot":"","sources":["../../source/tools/find-files.tsx"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
+
import type { AISDKCoreTool, ToolHandler } from '../types/index.js';
|
|
1
2
|
import React from 'react';
|
|
2
|
-
import type { ToolHandler, ToolDefinition, AISDKCoreTool } from '../types/index.js';
|
|
3
|
-
export declare const toolDefinitions: ToolDefinition[];
|
|
4
|
-
export declare const toolRegistry: Record<string, ToolHandler>;
|
|
5
3
|
export declare const nativeToolsRegistry: Record<string, AISDKCoreTool>;
|
|
4
|
+
export declare const toolRegistry: Record<string, ToolHandler>;
|
|
6
5
|
export declare const toolFormatters: Record<string, (args: any) => string | Promise<string> | React.ReactElement | Promise<React.ReactElement>>;
|
|
7
6
|
export declare const toolValidators: Record<string, (args: any) => Promise<{
|
|
8
7
|
valid: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/tools/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/tools/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACX,aAAa,EAEb,WAAW,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CACN,CAAC;AAIzD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAepD,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,MAAM,CAClC,MAAM,EACN,CAEC,IAAI,EAAE,GAAG,KAEP,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,GACf,KAAK,CAAC,YAAY,GAClB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAmB9B,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,MAAM,CAClC,MAAM,EAEN,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC,CAarE,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { readFileTool } from '../tools/read-file.js';
|
|
2
1
|
import { createFileTool } from '../tools/create-file.js';
|
|
3
|
-
import { insertLinesTool } from '../tools/insert-lines.js';
|
|
4
|
-
import { replaceLinesTool } from '../tools/replace-lines.js';
|
|
5
2
|
import { deleteLinesTool } from '../tools/delete-lines.js';
|
|
6
3
|
import { executeBashTool } from '../tools/execute-bash.js';
|
|
7
|
-
import { webSearchTool } from '../tools/web-search.js';
|
|
8
4
|
import { fetchUrlTool } from '../tools/fetch-url.js';
|
|
9
5
|
import { findFilesTool } from '../tools/find-files.js';
|
|
10
|
-
import {
|
|
6
|
+
import { insertLinesTool } from '../tools/insert-lines.js';
|
|
11
7
|
import { getDiagnosticsTool } from '../tools/lsp-get-diagnostics.js';
|
|
12
|
-
|
|
8
|
+
import { readFileTool } from '../tools/read-file.js';
|
|
9
|
+
import { replaceLinesTool } from '../tools/replace-lines.js';
|
|
10
|
+
import { searchFileContentsTool } from '../tools/search-file-contents.js';
|
|
11
|
+
import { webSearchTool } from '../tools/web-search.js';
|
|
12
|
+
// Array of all tool exports from individual tool files
|
|
13
|
+
// Each tool exports: { name, tool, formatter?, validator? }
|
|
14
|
+
const allTools = [
|
|
13
15
|
readFileTool,
|
|
14
16
|
createFileTool,
|
|
15
17
|
insertLinesTool,
|
|
@@ -22,28 +24,36 @@ export const toolDefinitions = [
|
|
|
22
24
|
searchFileContentsTool,
|
|
23
25
|
getDiagnosticsTool,
|
|
24
26
|
];
|
|
27
|
+
// Export native AI SDK tools registry (for passing directly to AI SDK)
|
|
28
|
+
export const nativeToolsRegistry = Object.fromEntries(allTools.map(t => [t.name, t.tool]));
|
|
25
29
|
// Export handlers for manual execution (human-in-the-loop)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
// These are extracted from the AI SDK tools' execute functions
|
|
31
|
+
export const toolRegistry = Object.fromEntries(allTools.map(t => [
|
|
32
|
+
t.name,
|
|
33
|
+
// Extract the execute function from the AI SDK tool
|
|
34
|
+
// biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required
|
|
35
|
+
async (args) => {
|
|
36
|
+
// Call the tool's execute function with a dummy options object
|
|
37
|
+
// The actual options will be provided by AI SDK during automatic execution
|
|
38
|
+
// biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required
|
|
39
|
+
return await t.tool.execute(args, {
|
|
40
|
+
toolCallId: 'manual',
|
|
41
|
+
messages: [],
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
]));
|
|
29
45
|
// Export formatter registry for the UI
|
|
30
|
-
export const toolFormatters =
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const formatter = def.formatter;
|
|
34
|
-
if (!formatter) {
|
|
35
|
-
throw new Error(`Formatter is undefined for tool ${def.name}`);
|
|
46
|
+
export const toolFormatters = allTools.reduce((acc, t) => {
|
|
47
|
+
if ('formatter' in t && t.formatter) {
|
|
48
|
+
acc[t.name] = t.formatter;
|
|
36
49
|
}
|
|
37
|
-
return
|
|
38
|
-
})
|
|
50
|
+
return acc;
|
|
51
|
+
}, {});
|
|
39
52
|
// Export validator registry
|
|
40
|
-
export const toolValidators =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const validator = def.validator;
|
|
44
|
-
if (!validator) {
|
|
45
|
-
throw new Error(`Validator is undefined for tool ${def.name}`);
|
|
53
|
+
export const toolValidators = allTools.reduce((acc, t) => {
|
|
54
|
+
if ('validator' in t && t.validator) {
|
|
55
|
+
acc[t.name] = t.validator;
|
|
46
56
|
}
|
|
47
|
-
return
|
|
48
|
-
})
|
|
57
|
+
return acc;
|
|
58
|
+
}, {});
|
|
49
59
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAQjD,uDAAuD;AACvD,4DAA4D;AAC5D,MAAM,QAAQ,GAA0B;IACvC,YAAY;IACZ,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,aAAa;IACb,YAAY;IACZ,aAAa;IACb,sBAAsB;IACtB,kBAAkB;CAClB,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAC/B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEzD,2DAA2D;AAC3D,+DAA+D;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAgC,MAAM,CAAC,WAAW,CAC1E,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACjB,CAAC,CAAC,IAAI;IACN,oDAAoD;IACpD,sEAAsE;IACtE,KAAK,EAAE,IAAS,EAAE,EAAE;QACnB,+DAA+D;QAC/D,2EAA2E;QAC3E,sEAAsE;QACtE,OAAO,MAAO,CAAC,CAAC,IAAY,CAAC,OAAO,CAAC,IAAI,EAAE;YAC1C,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,EAAE;SACZ,CAAC,CAAC;IACJ,CAAC;CACD,CAAC,CACF,CAAC;AAEF,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GAUvB,QAAQ,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;IACV,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC,EACD,EAUC,CACD,CAAC;AAEF,4BAA4B;AAC5B,MAAM,CAAC,MAAM,cAAc,GAIvB,QAAQ,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;IACV,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC,EACD,EAIC,CACD,CAAC"}
|
|
@@ -1,3 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface InsertLinesArgs {
|
|
3
|
+
path: string;
|
|
4
|
+
line_number: number;
|
|
5
|
+
content: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const insertLinesTool: {
|
|
8
|
+
name: "insert_lines";
|
|
9
|
+
tool: import("ai").Tool<InsertLinesArgs, string>;
|
|
10
|
+
formatter: (args: InsertLinesArgs, result?: string) => Promise<React.ReactElement>;
|
|
11
|
+
validator: (args: InsertLinesArgs) => Promise<{
|
|
12
|
+
valid: true;
|
|
13
|
+
} | {
|
|
14
|
+
valid: false;
|
|
15
|
+
error: string;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
3
19
|
//# sourceMappingURL=insert-lines.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-lines.d.ts","sourceRoot":"","sources":["../../source/tools/insert-lines.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"insert-lines.d.ts","sourceRoot":"","sources":["../../source/tools/insert-lines.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,UAAU,eAAe;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CAChB;AAsbD,eAAO,MAAM,eAAe;;;sBA/GrB,eAAe,WACZ,MAAM,KACb,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;sBAkDvB,eAAe,KACnB,OAAO,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAC,GAAG;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;CA+DxD,CAAC"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { resolve } from 'node:path';
|
|
4
|
-
import { readFile, writeFile, access } from 'node:fs/promises';
|
|
5
2
|
import { constants } from 'node:fs';
|
|
3
|
+
import { access, readFile, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { resolve } from 'node:path';
|
|
6
5
|
import { highlight } from 'cli-highlight';
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
6
|
+
import { Box, Text } from 'ink';
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import ToolMessage from '../components/tool-message.js';
|
|
9
9
|
import { getColors } from '../config/index.js';
|
|
10
|
+
import { getCurrentMode } from '../context/mode-context.js';
|
|
11
|
+
import { jsonSchema, tool } from '../types/core.js';
|
|
10
12
|
import { getLanguageFromExtension } from '../utils/programming-language-helper.js';
|
|
11
|
-
import
|
|
12
|
-
import { isVSCodeConnected, sendFileChangeToVSCode, closeDiffInVSCode, } from '../vscode/index.js';
|
|
13
|
+
import { closeDiffInVSCode, isVSCodeConnected, sendFileChangeToVSCode, } from '../vscode/index.js';
|
|
13
14
|
const executeInsertLines = async (args) => {
|
|
14
15
|
const { path, line_number, content } = args;
|
|
15
16
|
// Validate line number
|
|
@@ -40,7 +41,6 @@ const executeInsertLines = async (args) => {
|
|
|
40
41
|
}
|
|
41
42
|
return `Successfully inserted ${insertLines.length} line${insertLines.length > 1 ? 's' : ''} at line ${line_number}.${fileContext}`;
|
|
42
43
|
};
|
|
43
|
-
// AI SDK tool definition
|
|
44
44
|
const insertLinesCoreTool = tool({
|
|
45
45
|
description: 'Insert new lines at a specific line number in a file',
|
|
46
46
|
inputSchema: jsonSchema({
|
|
@@ -61,7 +61,14 @@ const insertLinesCoreTool = tool({
|
|
|
61
61
|
},
|
|
62
62
|
required: ['path', 'line_number', 'content'],
|
|
63
63
|
}),
|
|
64
|
-
//
|
|
64
|
+
// Medium risk: file write operation, requires approval except in auto-accept mode
|
|
65
|
+
needsApproval: () => {
|
|
66
|
+
const mode = getCurrentMode();
|
|
67
|
+
return mode !== 'auto-accept'; // true in normal/plan, false in auto-accept
|
|
68
|
+
},
|
|
69
|
+
execute: async (args, _options) => {
|
|
70
|
+
return await executeInsertLines(args);
|
|
71
|
+
},
|
|
65
72
|
});
|
|
66
73
|
const InsertLinesFormatter = React.memo(({ preview }) => {
|
|
67
74
|
return preview;
|
|
@@ -169,7 +176,7 @@ async function formatInsertLinesPreview(args, result, colors) {
|
|
|
169
176
|
}
|
|
170
177
|
// Track VS Code change IDs for cleanup
|
|
171
178
|
const vscodeChangeIds = new Map();
|
|
172
|
-
const
|
|
179
|
+
const insertLinesFormatter = async (args, result) => {
|
|
173
180
|
const colors = getColors();
|
|
174
181
|
const { path } = args;
|
|
175
182
|
const absPath = resolve(path);
|
|
@@ -209,7 +216,7 @@ const formatter = async (args, result) => {
|
|
|
209
216
|
const preview = await formatInsertLinesPreview(args, result, colors);
|
|
210
217
|
return _jsx(InsertLinesFormatter, { preview: preview });
|
|
211
218
|
};
|
|
212
|
-
const
|
|
219
|
+
const insertLinesValidator = async (args) => {
|
|
213
220
|
const { path, line_number } = args;
|
|
214
221
|
// Check if file exists
|
|
215
222
|
const absPath = resolve(path);
|
|
@@ -259,12 +266,10 @@ const validator = async (args) => {
|
|
|
259
266
|
}
|
|
260
267
|
return { valid: true };
|
|
261
268
|
};
|
|
262
|
-
// Nanocoder tool definition with AI SDK core tool + custom extensions
|
|
263
269
|
export const insertLinesTool = {
|
|
264
270
|
name: 'insert_lines',
|
|
265
|
-
tool: insertLinesCoreTool,
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
validator,
|
|
271
|
+
tool: insertLinesCoreTool,
|
|
272
|
+
formatter: insertLinesFormatter,
|
|
273
|
+
validator: insertLinesValidator,
|
|
269
274
|
};
|
|
270
275
|
//# sourceMappingURL=insert-lines.js.map
|