@nanocollective/nanocoder 1.20.4 → 1.22.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.md +1 -1
- package/README.md +157 -72
- package/assets/nanocoder-vscode.vsix +0 -0
- package/dist/ai-sdk-client/ai-sdk-client.d.ts.map +1 -1
- package/dist/ai-sdk-client/ai-sdk-client.js.map +1 -1
- package/dist/ai-sdk-client/chat/chat-handler.d.ts +1 -0
- package/dist/ai-sdk-client/chat/chat-handler.d.ts.map +1 -1
- package/dist/ai-sdk-client/chat/chat-handler.js +66 -7
- package/dist/ai-sdk-client/chat/chat-handler.js.map +1 -1
- package/dist/ai-sdk-client/error-handling/tool-error-detector.d.ts +8 -0
- package/dist/ai-sdk-client/error-handling/tool-error-detector.d.ts.map +1 -0
- package/dist/ai-sdk-client/error-handling/tool-error-detector.js +52 -0
- package/dist/ai-sdk-client/error-handling/tool-error-detector.js.map +1 -0
- package/dist/ai-sdk-client/providers/provider-factory.d.ts +6 -3
- package/dist/ai-sdk-client/providers/provider-factory.d.ts.map +1 -1
- package/dist/ai-sdk-client/providers/provider-factory.js +18 -4
- package/dist/ai-sdk-client/providers/provider-factory.js.map +1 -1
- package/dist/ai-sdk-client/tools/tool-prompt-formatter.d.ts +8 -0
- package/dist/ai-sdk-client/tools/tool-prompt-formatter.d.ts.map +1 -0
- package/dist/ai-sdk-client/tools/tool-prompt-formatter.js +97 -0
- package/dist/ai-sdk-client/tools/tool-prompt-formatter.js.map +1 -0
- package/dist/app/App.d.ts.map +1 -1
- package/dist/app/App.js +22 -12
- package/dist/app/App.js.map +1 -1
- package/dist/app/components/modal-selectors.d.ts +6 -7
- package/dist/app/components/modal-selectors.d.ts.map +1 -1
- package/dist/app/components/modal-selectors.js +10 -10
- package/dist/app/components/modal-selectors.js.map +1 -1
- package/dist/app/components/settings-selector.d.ts +6 -0
- package/dist/app/components/settings-selector.d.ts.map +1 -0
- package/dist/app/components/settings-selector.js +289 -0
- package/dist/app/components/settings-selector.js.map +1 -0
- package/dist/app/utils/app-util.d.ts.map +1 -1
- package/dist/app/utils/app-util.js +178 -13
- package/dist/app/utils/app-util.js.map +1 -1
- package/dist/cli.js +22 -0
- package/dist/cli.js.map +1 -1
- package/dist/client-factory.d.ts.map +1 -1
- package/dist/client-factory.js +23 -20
- package/dist/client-factory.js.map +1 -1
- package/dist/commands/clear.d.ts.map +1 -1
- package/dist/commands/clear.js +8 -5
- package/dist/commands/clear.js.map +1 -1
- package/dist/commands/compact.d.ts +24 -0
- package/dist/commands/compact.d.ts.map +1 -0
- package/dist/commands/compact.js +31 -0
- package/dist/commands/compact.js.map +1 -0
- package/dist/commands/custom-commands.d.ts.map +1 -1
- package/dist/commands/custom-commands.js +1 -1
- package/dist/commands/custom-commands.js.map +1 -1
- package/dist/commands/exit.d.ts +1 -0
- package/dist/commands/exit.d.ts.map +1 -1
- package/dist/commands/exit.js +14 -0
- package/dist/commands/exit.js.map +1 -1
- package/dist/commands/explorer.d.ts +3 -0
- package/dist/commands/explorer.d.ts.map +1 -0
- package/dist/commands/explorer.js +10 -0
- package/dist/commands/explorer.js.map +1 -0
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +1 -1
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +6 -3
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +6 -3
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lsp.d.ts.map +1 -1
- package/dist/commands/lsp.js +1 -1
- package/dist/commands/lsp.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +15 -21
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/model-database.d.ts.map +1 -1
- package/dist/commands/model-database.js +3 -3
- package/dist/commands/model-database.js.map +1 -1
- package/dist/commands/settings.d.ts +3 -0
- package/dist/commands/settings.d.ts.map +1 -0
- package/dist/commands/{theme.js → settings.js} +4 -4
- package/dist/commands/settings.js.map +1 -0
- package/dist/commands/setup-mcp.d.ts +3 -0
- package/dist/commands/setup-mcp.d.ts.map +1 -0
- package/dist/commands/setup-mcp.js +15 -0
- package/dist/commands/setup-mcp.js.map +1 -0
- package/dist/commands/setup-providers.d.ts +3 -0
- package/dist/commands/setup-providers.d.ts.map +1 -0
- package/dist/commands/{setup-config.js → setup-providers.js} +4 -4
- package/dist/commands/setup-providers.js.map +1 -0
- package/dist/commands/tasks.d.ts +3 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +117 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +31 -9
- package/dist/commands/usage.js.map +1 -1
- package/dist/components/assistant-message.d.ts.map +1 -1
- package/dist/components/assistant-message.js +39 -6
- package/dist/components/assistant-message.js.map +1 -1
- package/dist/components/checkpoint-selector.d.ts.map +1 -1
- package/dist/components/checkpoint-selector.js +3 -3
- package/dist/components/checkpoint-selector.js.map +1 -1
- package/dist/components/file-explorer/index.d.ts +3 -0
- package/dist/components/file-explorer/index.d.ts.map +1 -0
- package/dist/components/file-explorer/index.js +318 -0
- package/dist/components/file-explorer/index.js.map +1 -0
- package/dist/components/file-explorer/tree-item.d.ts +3 -0
- package/dist/components/file-explorer/tree-item.d.ts.map +1 -0
- package/dist/components/file-explorer/tree-item.js +42 -0
- package/dist/components/file-explorer/tree-item.js.map +1 -0
- package/dist/components/file-explorer/utils.d.ts +18 -0
- package/dist/components/file-explorer/utils.d.ts.map +1 -0
- package/dist/components/file-explorer/utils.js +51 -0
- package/dist/components/file-explorer/utils.js.map +1 -0
- package/dist/components/file-explorer.d.ts +2 -0
- package/dist/components/file-explorer.d.ts.map +1 -0
- package/dist/components/file-explorer.js +3 -0
- package/dist/components/file-explorer.js.map +1 -0
- package/dist/components/message-box.d.ts +1 -0
- package/dist/components/message-box.d.ts.map +1 -1
- package/dist/components/message-box.js +2 -2
- package/dist/components/message-box.js.map +1 -1
- package/dist/components/model-selector.d.ts.map +1 -1
- package/dist/components/model-selector.js +3 -3
- 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 +1 -1
- 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 +1 -1
- package/dist/components/security-disclaimer.js.map +1 -1
- package/dist/components/status.d.ts +11 -0
- package/dist/components/status.d.ts.map +1 -1
- package/dist/components/status.js +4 -4
- package/dist/components/status.js.map +1 -1
- package/dist/components/task-list-display.d.ts +8 -0
- package/dist/components/task-list-display.d.ts.map +1 -0
- package/dist/components/task-list-display.js +26 -0
- package/dist/components/task-list-display.js.map +1 -0
- package/dist/components/tool-message.d.ts.map +1 -1
- package/dist/components/tool-message.js +1 -1
- package/dist/components/tool-message.js.map +1 -1
- package/dist/components/ui/styled-title.js +38 -38
- package/dist/components/usage/progress-bar.d.ts.map +1 -1
- package/dist/components/usage/progress-bar.js +6 -3
- 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 +1 -1
- 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 +36 -16
- 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 +43 -12
- package/dist/components/user-message.js.map +1 -1
- package/dist/components/welcome-message.d.ts.map +1 -1
- package/dist/components/welcome-message.js +6 -2
- package/dist/components/welcome-message.js.map +1 -1
- package/dist/config/index.d.ts +7 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +100 -16
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-config-loader.d.ts +31 -0
- package/dist/config/mcp-config-loader.d.ts.map +1 -0
- package/dist/config/mcp-config-loader.js +341 -0
- package/dist/config/mcp-config-loader.js.map +1 -0
- package/dist/config/nanocoder-tools-config.d.ts +7 -0
- package/dist/config/nanocoder-tools-config.d.ts.map +1 -0
- package/dist/config/nanocoder-tools-config.js +14 -0
- package/dist/config/nanocoder-tools-config.js.map +1 -0
- package/dist/config/preferences.d.ts +4 -0
- package/dist/config/preferences.d.ts.map +1 -1
- package/dist/config/preferences.js +14 -0
- package/dist/config/preferences.js.map +1 -1
- package/dist/config/themes.d.ts.map +1 -1
- package/dist/config/themes.js +340 -0
- package/dist/config/themes.js.map +1 -1
- package/dist/config/validation.d.ts +11 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +71 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +63 -0
- package/dist/constants.js.map +1 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts +3 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts.map +1 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.js +52 -18
- package/dist/hooks/chat-handler/conversation/conversation-loop.js.map +1 -1
- package/dist/hooks/chat-handler/useChatHandler.d.ts.map +1 -1
- package/dist/hooks/chat-handler/useChatHandler.js +7 -0
- package/dist/hooks/chat-handler/useChatHandler.js.map +1 -1
- package/dist/hooks/useAppHandlers.d.ts +3 -2
- package/dist/hooks/useAppHandlers.d.ts.map +1 -1
- package/dist/hooks/useAppHandlers.js +67 -4
- package/dist/hooks/useAppHandlers.js.map +1 -1
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +14 -4
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useAppState.d.ts +6 -4
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +9 -6
- package/dist/hooks/useAppState.js.map +1 -1
- package/dist/hooks/useModeHandlers.d.ts +12 -10
- package/dist/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/hooks/useModeHandlers.js +52 -42
- package/dist/hooks/useModeHandlers.js.map +1 -1
- package/dist/hooks/useTerminalWidth.d.ts +1 -1
- package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
- package/dist/hooks/useTerminalWidth.js +2 -2
- package/dist/hooks/useTerminalWidth.js.map +1 -1
- package/dist/hooks/useUIState.d.ts +2 -0
- package/dist/hooks/useUIState.d.ts.map +1 -1
- package/dist/hooks/useUIState.js +11 -1
- package/dist/hooks/useUIState.js.map +1 -1
- package/dist/mcp/mcp-client.d.ts +2 -0
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +13 -1
- package/dist/mcp/mcp-client.js.map +1 -1
- package/dist/models/models-dev-client.d.ts.map +1 -1
- package/dist/models/models-dev-client.js +61 -37
- package/dist/models/models-dev-client.js.map +1 -1
- package/dist/services/bash-executor.d.ts.map +1 -1
- package/dist/services/bash-executor.js +7 -0
- package/dist/services/bash-executor.js.map +1 -1
- package/dist/test-utils/cli-test-harness.d.ts +181 -0
- package/dist/test-utils/cli-test-harness.d.ts.map +1 -0
- package/dist/test-utils/cli-test-harness.js +413 -0
- package/dist/test-utils/cli-test-harness.js.map +1 -0
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +10 -2
- package/dist/tools/execute-bash.js.map +1 -1
- package/dist/tools/git/git-add.d.ts +8 -0
- package/dist/tools/git/git-add.d.ts.map +1 -0
- package/dist/tools/git/git-add.js +141 -0
- package/dist/tools/git/git-add.js.map +1 -0
- package/dist/tools/git/git-branch.d.ts +8 -0
- package/dist/tools/git/git-branch.d.ts.map +1 -0
- package/dist/tools/git/git-branch.js +251 -0
- package/dist/tools/git/git-branch.js.map +1 -0
- package/dist/tools/git/git-commit.d.ts +8 -0
- package/dist/tools/git/git-commit.d.ts.map +1 -0
- package/dist/tools/git/git-commit.js +176 -0
- package/dist/tools/git/git-commit.js.map +1 -0
- package/dist/tools/git/git-diff.d.ts +8 -0
- package/dist/tools/git/git-diff.d.ts.map +1 -0
- package/dist/tools/git/git-diff.js +136 -0
- package/dist/tools/git/git-diff.js.map +1 -0
- package/dist/tools/git/git-log.d.ts +8 -0
- package/dist/tools/git/git-log.d.ts.map +1 -0
- package/dist/tools/git/git-log.js +146 -0
- package/dist/tools/git/git-log.js.map +1 -0
- package/dist/tools/git/git-pr.d.ts +8 -0
- package/dist/tools/git/git-pr.d.ts.map +1 -0
- package/dist/tools/git/git-pr.js +252 -0
- package/dist/tools/git/git-pr.js.map +1 -0
- package/dist/tools/git/git-pull.d.ts +8 -0
- package/dist/tools/git/git-pull.d.ts.map +1 -0
- package/dist/tools/git/git-pull.js +151 -0
- package/dist/tools/git/git-pull.js.map +1 -0
- package/dist/tools/git/git-push.d.ts +8 -0
- package/dist/tools/git/git-push.d.ts.map +1 -0
- package/dist/tools/git/git-push.js +157 -0
- package/dist/tools/git/git-push.js.map +1 -0
- package/dist/tools/git/git-reset.d.ts +8 -0
- package/dist/tools/git/git-reset.d.ts.map +1 -0
- package/dist/tools/git/git-reset.js +183 -0
- package/dist/tools/git/git-reset.js.map +1 -0
- package/dist/tools/git/git-stash.d.ts +8 -0
- package/dist/tools/git/git-stash.d.ts.map +1 -0
- package/dist/tools/git/git-stash.js +260 -0
- package/dist/tools/git/git-stash.js.map +1 -0
- package/dist/tools/git/git-status.d.ts +8 -0
- package/dist/tools/git/git-status.d.ts.map +1 -0
- package/dist/tools/git/git-status.js +233 -0
- package/dist/tools/git/git-status.js.map +1 -0
- package/dist/tools/git/index.d.ts +9 -12
- package/dist/tools/git/index.d.ts.map +1 -1
- package/dist/tools/git/index.js +43 -11
- package/dist/tools/git/index.js.map +1 -1
- package/dist/tools/git/utils.d.ts +136 -23
- package/dist/tools/git/utils.d.ts.map +1 -1
- package/dist/tools/git/utils.js +405 -360
- package/dist/tools/git/utils.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/string-replace.d.ts.map +1 -1
- package/dist/tools/string-replace.js +74 -17
- package/dist/tools/string-replace.js.map +1 -1
- package/dist/tools/tasks/create-task.d.ts +3 -0
- package/dist/tools/tasks/create-task.d.ts.map +1 -0
- package/dist/tools/tasks/create-task.js +101 -0
- package/dist/tools/tasks/create-task.js.map +1 -0
- package/dist/tools/tasks/delete-task.d.ts +3 -0
- package/dist/tools/tasks/delete-task.d.ts.map +1 -0
- package/dist/tools/tasks/delete-task.js +101 -0
- package/dist/tools/tasks/delete-task.js.map +1 -0
- package/dist/tools/tasks/index.d.ts +7 -0
- package/dist/tools/tasks/index.d.ts.map +1 -0
- package/dist/tools/tasks/index.js +6 -0
- package/dist/tools/tasks/index.js.map +1 -0
- package/dist/tools/tasks/list-tasks.d.ts +3 -0
- package/dist/tools/tasks/list-tasks.d.ts.map +1 -0
- package/dist/tools/tasks/list-tasks.js +67 -0
- package/dist/tools/tasks/list-tasks.js.map +1 -0
- package/dist/tools/tasks/storage.d.ts +7 -0
- package/dist/tools/tasks/storage.d.ts.map +1 -0
- package/dist/tools/tasks/storage.js +31 -0
- package/dist/tools/tasks/storage.js.map +1 -0
- package/dist/tools/tasks/types.d.ts +11 -0
- package/dist/tools/tasks/types.d.ts.map +1 -0
- package/dist/tools/tasks/types.js +2 -0
- package/dist/tools/tasks/types.js.map +1 -0
- package/dist/tools/tasks/update-task.d.ts +3 -0
- package/dist/tools/tasks/update-task.d.ts.map +1 -0
- package/dist/tools/tasks/update-task.js +142 -0
- package/dist/tools/tasks/update-task.js.map +1 -0
- package/dist/tools/tool-manager.d.ts +1 -0
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/write-file.d.ts.map +1 -1
- package/dist/tools/write-file.js +52 -3
- package/dist/tools/write-file.js.map +1 -1
- package/dist/types/app.d.ts +3 -2
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/config.d.ts +54 -27
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/file-explorer.d.ts +14 -0
- package/dist/types/file-explorer.d.ts.map +1 -0
- package/dist/types/file-explorer.js +2 -0
- package/dist/types/file-explorer.js.map +1 -0
- package/dist/types/mcp.d.ts +1 -0
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/ui.d.ts +2 -2
- package/dist/types/ui.d.ts.map +1 -1
- package/dist/utils/auto-compact.d.ts +23 -0
- package/dist/utils/auto-compact.d.ts.map +1 -0
- package/dist/utils/auto-compact.js +149 -0
- package/dist/utils/auto-compact.js.map +1 -0
- package/dist/utils/completion-note.d.ts +3 -0
- package/dist/utils/completion-note.d.ts.map +1 -0
- package/dist/utils/completion-note.js +39 -0
- package/dist/utils/completion-note.js.map +1 -0
- package/dist/utils/compression-backup.d.ts +14 -0
- package/dist/utils/compression-backup.d.ts.map +1 -0
- package/dist/utils/compression-backup.js +31 -0
- package/dist/utils/compression-backup.js.map +1 -0
- package/dist/utils/file-tree.d.ts +37 -0
- package/dist/utils/file-tree.d.ts.map +1 -0
- package/dist/utils/file-tree.js +122 -0
- package/dist/utils/file-tree.js.map +1 -0
- package/dist/utils/indentation-normalizer.d.ts +10 -0
- package/dist/utils/indentation-normalizer.d.ts.map +1 -1
- package/dist/utils/indentation-normalizer.js +48 -0
- package/dist/utils/indentation-normalizer.js.map +1 -1
- package/dist/utils/logging/config.d.ts +11 -0
- package/dist/utils/logging/config.d.ts.map +1 -1
- package/dist/utils/logging/config.js +19 -4
- package/dist/utils/logging/config.js.map +1 -1
- package/dist/utils/logging/logger-provider.d.ts +15 -0
- package/dist/utils/logging/logger-provider.d.ts.map +1 -1
- package/dist/utils/logging/logger-provider.js +48 -24
- package/dist/utils/logging/logger-provider.js.map +1 -1
- package/dist/utils/message-compression.d.ts +55 -0
- package/dist/utils/message-compression.d.ts.map +1 -0
- package/dist/utils/message-compression.js +401 -0
- package/dist/utils/message-compression.js.map +1 -0
- package/dist/vscode/protocol.d.ts +5 -1
- package/dist/vscode/protocol.d.ts.map +1 -1
- package/dist/vscode/vscode-server.d.ts +4 -0
- package/dist/vscode/vscode-server.d.ts.map +1 -1
- package/dist/vscode/vscode-server.js +10 -0
- package/dist/vscode/vscode-server.js.map +1 -1
- package/dist/wizards/mcp-wizard.d.ts +8 -0
- package/dist/wizards/mcp-wizard.d.ts.map +1 -0
- package/dist/wizards/mcp-wizard.js +256 -0
- package/dist/wizards/mcp-wizard.js.map +1 -0
- package/dist/wizards/provider-wizard.d.ts +8 -0
- package/dist/wizards/provider-wizard.d.ts.map +1 -0
- package/dist/wizards/provider-wizard.js +254 -0
- package/dist/wizards/provider-wizard.js.map +1 -0
- package/dist/wizards/steps/location-step.d.ts +10 -0
- package/dist/wizards/steps/location-step.d.ts.map +1 -0
- package/dist/{wizard → wizards}/steps/location-step.js +7 -10
- package/dist/wizards/steps/location-step.js.map +1 -0
- package/dist/{wizard → wizards}/steps/mcp-step.d.ts +3 -1
- package/dist/wizards/steps/mcp-step.d.ts.map +1 -0
- package/dist/{wizard → wizards}/steps/mcp-step.js +14 -11
- package/dist/wizards/steps/mcp-step.js.map +1 -0
- package/dist/wizards/steps/provider-step.d.ts +11 -0
- package/dist/wizards/steps/provider-step.d.ts.map +1 -0
- package/dist/{wizard → wizards}/steps/provider-step.js +12 -10
- package/dist/wizards/steps/provider-step.js.map +1 -0
- package/dist/{wizard → wizards}/steps/summary-step.d.ts +3 -2
- package/dist/wizards/steps/summary-step.d.ts.map +1 -0
- package/dist/{wizard → wizards}/steps/summary-step.js +2 -2
- package/dist/wizards/steps/summary-step.js.map +1 -0
- package/dist/{wizard → wizards}/templates/mcp-templates.d.ts +1 -0
- package/dist/wizards/templates/mcp-templates.d.ts.map +1 -0
- package/dist/wizards/templates/mcp-templates.js.map +1 -0
- package/dist/wizards/templates/provider-templates.d.ts.map +1 -0
- package/dist/{wizard → wizards}/templates/provider-templates.js +73 -8
- package/dist/wizards/templates/provider-templates.js.map +1 -0
- package/dist/wizards/utils/fetch-cloud-models.d.ts.map +1 -0
- package/dist/wizards/utils/fetch-cloud-models.js.map +1 -0
- package/dist/wizards/utils/fetch-local-models.d.ts.map +1 -0
- package/dist/wizards/utils/fetch-local-models.js.map +1 -0
- package/dist/wizards/validation.d.ts +72 -0
- package/dist/wizards/validation.d.ts.map +1 -0
- package/dist/{wizard → wizards}/validation.js +64 -1
- package/dist/wizards/validation.js.map +1 -0
- package/package.json +21 -6
- package/source/app/prompts/main-prompt.md +75 -68
- package/dist/commands/setup-config.d.ts +0 -3
- package/dist/commands/setup-config.d.ts.map +0 -1
- package/dist/commands/setup-config.js.map +0 -1
- package/dist/commands/theme.d.ts +0 -3
- package/dist/commands/theme.d.ts.map +0 -1
- package/dist/commands/theme.js.map +0 -1
- package/dist/commands/title-shape.d.ts +0 -3
- package/dist/commands/title-shape.d.ts.map +0 -1
- package/dist/commands/title-shape.js +0 -54
- package/dist/commands/title-shape.js.map +0 -1
- package/dist/components/theme-selector.d.ts +0 -8
- package/dist/components/theme-selector.d.ts.map +0 -1
- package/dist/components/theme-selector.js +0 -51
- package/dist/components/theme-selector.js.map +0 -1
- package/dist/components/title-shape-selector.d.ts +0 -8
- package/dist/components/title-shape-selector.d.ts.map +0 -1
- package/dist/components/title-shape-selector.js +0 -108
- package/dist/components/title-shape-selector.js.map +0 -1
- package/dist/tools/git/git-branch-suggest.d.ts +0 -9
- package/dist/tools/git/git-branch-suggest.d.ts.map +0 -1
- package/dist/tools/git/git-branch-suggest.js +0 -326
- package/dist/tools/git/git-branch-suggest.js.map +0 -1
- package/dist/tools/git/git-create-pr.d.ts +0 -9
- package/dist/tools/git/git-create-pr.d.ts.map +0 -1
- package/dist/tools/git/git-create-pr.js +0 -404
- package/dist/tools/git/git-create-pr.js.map +0 -1
- package/dist/tools/git/git-smart-commit.d.ts +0 -9
- package/dist/tools/git/git-smart-commit.d.ts.map +0 -1
- package/dist/tools/git/git-smart-commit.js +0 -308
- package/dist/tools/git/git-smart-commit.js.map +0 -1
- package/dist/tools/git/git-status-enhanced.d.ts +0 -9
- package/dist/tools/git/git-status-enhanced.d.ts.map +0 -1
- package/dist/tools/git/git-status-enhanced.js +0 -305
- package/dist/tools/git/git-status-enhanced.js.map +0 -1
- package/dist/tools/git/types.d.ts +0 -103
- package/dist/tools/git/types.d.ts.map +0 -1
- package/dist/tools/git/types.js +0 -7
- package/dist/tools/git/types.js.map +0 -1
- package/dist/utils/gradient-utils.d.ts +0 -25
- package/dist/utils/gradient-utils.d.ts.map +0 -1
- package/dist/utils/gradient-utils.js +0 -45
- package/dist/utils/gradient-utils.js.map +0 -1
- package/dist/wizard/config-wizard.d.ts +0 -8
- package/dist/wizard/config-wizard.d.ts.map +0 -1
- package/dist/wizard/config-wizard.js +0 -212
- package/dist/wizard/config-wizard.js.map +0 -1
- package/dist/wizard/steps/location-step.d.ts +0 -9
- package/dist/wizard/steps/location-step.d.ts.map +0 -1
- package/dist/wizard/steps/location-step.js.map +0 -1
- package/dist/wizard/steps/mcp-step.d.ts.map +0 -1
- package/dist/wizard/steps/mcp-step.js.map +0 -1
- package/dist/wizard/steps/provider-step.d.ts +0 -9
- package/dist/wizard/steps/provider-step.d.ts.map +0 -1
- package/dist/wizard/steps/provider-step.js.map +0 -1
- package/dist/wizard/steps/summary-step.d.ts.map +0 -1
- package/dist/wizard/steps/summary-step.js.map +0 -1
- package/dist/wizard/templates/mcp-templates.d.ts.map +0 -1
- package/dist/wizard/templates/mcp-templates.js.map +0 -1
- package/dist/wizard/templates/provider-templates.d.ts.map +0 -1
- package/dist/wizard/templates/provider-templates.js.map +0 -1
- package/dist/wizard/utils/fetch-cloud-models.d.ts.map +0 -1
- package/dist/wizard/utils/fetch-cloud-models.js.map +0 -1
- package/dist/wizard/utils/fetch-local-models.d.ts.map +0 -1
- package/dist/wizard/utils/fetch-local-models.js.map +0 -1
- package/dist/wizard/validation.d.ts +0 -64
- package/dist/wizard/validation.d.ts.map +0 -1
- package/dist/wizard/validation.js.map +0 -1
- /package/dist/{wizard → wizards}/templates/mcp-templates.js +0 -0
- /package/dist/{wizard → wizards}/templates/provider-templates.d.ts +0 -0
- /package/dist/{wizard → wizards}/utils/fetch-cloud-models.d.ts +0 -0
- /package/dist/{wizard → wizards}/utils/fetch-cloud-models.js +0 -0
- /package/dist/{wizard → wizards}/utils/fetch-local-models.d.ts +0 -0
- /package/dist/{wizard → wizards}/utils/fetch-local-models.js +0 -0
package/LICENSE.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
MIT License with Attribution
|
|
4
4
|
|
|
5
|
-
Copyright (c)
|
|
5
|
+
Copyright (c) 2026 Nano Collective
|
|
6
6
|
|
|
7
7
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
8
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -37,6 +37,7 @@ A local-first CLI coding agent that brings the power of agentic coding tools lik
|
|
|
37
37
|
- [Advanced Tool System](#advanced-tool-system)
|
|
38
38
|
- [Custom Command System](#custom-command-system)
|
|
39
39
|
- [Enhanced User Experience](#enhanced-user-experience)
|
|
40
|
+
- [Keyboard Shortcuts](#keyboard-shortcuts)
|
|
40
41
|
- [Developer Features](#developer-features)
|
|
41
42
|
- [VS Code Extension](#vs-code-extension)
|
|
42
43
|
- [Community](#community)
|
|
@@ -181,6 +182,46 @@ pnpm run dev
|
|
|
181
182
|
|
|
182
183
|
## Usage
|
|
183
184
|
|
|
185
|
+
### CLI Options
|
|
186
|
+
|
|
187
|
+
Nanocoder supports standard CLI arguments for quick information and help:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Show version information
|
|
191
|
+
nanocoder --version
|
|
192
|
+
nanocoder -v
|
|
193
|
+
|
|
194
|
+
# Show help and available options
|
|
195
|
+
nanocoder --help
|
|
196
|
+
nanocoder -h
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**CLI Options Reference:**
|
|
200
|
+
|
|
201
|
+
| Option | Short | Description |
|
|
202
|
+
|--------|-------|-------------|
|
|
203
|
+
| `--version` | `-v` | Display the installed version number |
|
|
204
|
+
| `--help` | `-h` | Show usage information and available options |
|
|
205
|
+
| `--vscode` | | Run in VS Code mode (for extension) |
|
|
206
|
+
| `--vscode-port` | | Specify VS Code server port |
|
|
207
|
+
| `run` | | Run in non-interactive mode |
|
|
208
|
+
|
|
209
|
+
**Common Use Cases:**
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# Check version in scripts
|
|
213
|
+
echo "Nanocoder version: $(nanocoder --version)"
|
|
214
|
+
|
|
215
|
+
# Get help in CI/CD pipelines
|
|
216
|
+
nanocoder --help
|
|
217
|
+
|
|
218
|
+
# Quick version check
|
|
219
|
+
nanocoder -v
|
|
220
|
+
|
|
221
|
+
# Discover available options
|
|
222
|
+
nanocoder -h
|
|
223
|
+
```
|
|
224
|
+
|
|
184
225
|
### Interactive Mode
|
|
185
226
|
|
|
186
227
|
To start Nanocoder in interactive mode (the default), simply run:
|
|
@@ -243,9 +284,16 @@ Nanocoder supports any OpenAI-compatible API through a unified provider configur
|
|
|
243
284
|
|
|
244
285
|
**Configuration Methods:**
|
|
245
286
|
|
|
246
|
-
1. **Interactive Setup (Recommended for new users)**: Run `/setup-
|
|
287
|
+
1. **Interactive Setup (Recommended for new users)**: Run `/setup-providers` inside Nanocoder for a guided wizard with provider templates. The wizard allows you to:
|
|
288
|
+
- Choose between project-level or global configuration
|
|
289
|
+
- Select from common provider templates (Ollama, OpenRouter, LM Studio, Kimi Code, etc.)
|
|
290
|
+
- Add custom OpenAI-compatible providers manually
|
|
291
|
+
- Edit or delete existing providers
|
|
292
|
+
- Fetch available models automatically from your provider
|
|
247
293
|
2. **Manual Configuration**: Create an `agents.config.json` file (see below for locations)
|
|
248
294
|
|
|
295
|
+
> **Note**: The `/setup-providers` wizard requires at least one provider to be configured before saving. You cannot exit without adding a provider.
|
|
296
|
+
|
|
249
297
|
**Configuration File Locations:**
|
|
250
298
|
|
|
251
299
|
Nanocoder looks for configuration in the following order (first found wins):
|
|
@@ -319,6 +367,13 @@ Nanocoder looks for configuration in the following order (first found wins):
|
|
|
319
367
|
"baseUrl": "https://api.poe.com/v1",
|
|
320
368
|
"apiKey": "your-poe-api-key",
|
|
321
369
|
"models": ["Claude-Sonnet-4", "GPT-4o", "Gemini-2.5-Pro"]
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"name": "Gemini",
|
|
373
|
+
"sdkProvider": "google",
|
|
374
|
+
"baseUrl": "https://generativelanguage.googleapis.com/v1beta",
|
|
375
|
+
"apiKey": "your-gemini-api-key",
|
|
376
|
+
"models": ["gemini-3-flash-preview", "gemini-3-pro-preview"]
|
|
322
377
|
}
|
|
323
378
|
]
|
|
324
379
|
}
|
|
@@ -339,6 +394,8 @@ Nanocoder looks for configuration in the following order (first found wins):
|
|
|
339
394
|
- **GitHub Models**: `"baseUrl": "https://models.github.ai/inference"` (requires PAT with `models:read` scope)
|
|
340
395
|
- **Z.ai**: `"baseUrl": "https://api.z.ai/api/paas/v4/"`
|
|
341
396
|
- **Z.ai Coding**: `"baseUrl": "https://api.z.ai/api/coding/paas/v4/"`
|
|
397
|
+
- **Kimi Code**: `"baseUrl": "https://api.kimi.com/coding/v1"`
|
|
398
|
+
- **Google Gemini**: `"sdkProvider": "google"` (get API key from [aistudio.google.com/apikey](https://aistudio.google.com/apikey))
|
|
342
399
|
|
|
343
400
|
**Provider Configuration:**
|
|
344
401
|
|
|
@@ -346,6 +403,10 @@ Nanocoder looks for configuration in the following order (first found wins):
|
|
|
346
403
|
- `baseUrl`: OpenAI-compatible API endpoint
|
|
347
404
|
- `apiKey`: API key (optional, may not be required)
|
|
348
405
|
- `models`: Available model list for `/model` command
|
|
406
|
+
- `disableToolModels`: List of model names to disable tool calling for (optional)
|
|
407
|
+
- `sdkProvider`: AI SDK provider package to use (optional, defaults to `openai-compatible`)
|
|
408
|
+
- `openai-compatible`: Default, works with any OpenAI-compatible API
|
|
409
|
+
- `google`: Use `@ai-sdk/google` for native Google Gemini support (required for Gemini 3 models with tool calling)
|
|
349
410
|
|
|
350
411
|
**Environment Variables:**
|
|
351
412
|
|
|
@@ -355,7 +416,7 @@ Keep API keys out of version control using environment variables. Variables are
|
|
|
355
416
|
- `NANOCODER_DATA_DIR`: Override the application data directory used for internal data like usage statistics.
|
|
356
417
|
|
|
357
418
|
**Syntax:** `$VAR_NAME`, `${VAR_NAME}`, or `${VAR_NAME:-default}`
|
|
358
|
-
**Supported in:** `baseUrl`, `apiKey`, `models`, MCP server `command`, `args`, `env`
|
|
419
|
+
**Supported in:** `baseUrl`, `apiKey`, `models`, `disableToolModels`, `MCP server`, `command`, `args`, `env`
|
|
359
420
|
|
|
360
421
|
See `.env.example` for setup instructions
|
|
361
422
|
|
|
@@ -441,84 +502,47 @@ For complete documentation, see [Pino Logging Guide](docs/pino-logging.md).
|
|
|
441
502
|
|
|
442
503
|
### MCP (Model Context Protocol) Servers
|
|
443
504
|
|
|
444
|
-
Nanocoder supports
|
|
505
|
+
Nanocoder supports MCP servers to extend its capabilities with additional tools. Configure servers using `.mcp.json` files at project or global level.
|
|
506
|
+
|
|
507
|
+
**Quick Start:**
|
|
508
|
+
|
|
509
|
+
1. Run `/setup-mcp` for an interactive wizard with templates
|
|
510
|
+
2. Or create `.mcp.json` in your project root:
|
|
445
511
|
|
|
446
512
|
```json
|
|
447
513
|
{
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
"command": "npx",
|
|
463
|
-
"args": ["@modelcontextprotocol/server-github"],
|
|
464
|
-
"env": {
|
|
465
|
-
"GITHUB_TOKEN": "your-github-token"
|
|
466
|
-
}
|
|
467
|
-
},
|
|
468
|
-
{
|
|
469
|
-
"name": "remote-search",
|
|
470
|
-
"transport": "http",
|
|
471
|
-
"url": "https://api.example.com/mcp",
|
|
472
|
-
"timeout": 30000
|
|
473
|
-
},
|
|
474
|
-
{
|
|
475
|
-
"name": "websocket-server",
|
|
476
|
-
"transport": "websocket",
|
|
477
|
-
"url": "wss://ws.example.com/mcp",
|
|
478
|
-
"timeout": 60000
|
|
479
|
-
}
|
|
480
|
-
]
|
|
481
|
-
}
|
|
514
|
+
"mcpServers": {
|
|
515
|
+
"filesystem": {
|
|
516
|
+
"transport": "stdio",
|
|
517
|
+
"command": "npx",
|
|
518
|
+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./src"],
|
|
519
|
+
"alwaysAllow": ["list_directory", "read_file"]
|
|
520
|
+
},
|
|
521
|
+
"github": {
|
|
522
|
+
"transport": "stdio",
|
|
523
|
+
"command": "npx",
|
|
524
|
+
"args": ["-y", "@modelcontextprotocol/server-github"],
|
|
525
|
+
"env": { "GITHUB_TOKEN": "$GITHUB_TOKEN" }
|
|
526
|
+
}
|
|
527
|
+
}
|
|
482
528
|
}
|
|
483
529
|
```
|
|
484
530
|
|
|
485
|
-
**
|
|
486
|
-
|
|
487
|
-
- `name`: Display name for the MCP server
|
|
488
|
-
- `transport`: Transport type (`stdio`, `http`, `websocket`)
|
|
489
|
-
- **For stdio transport:**
|
|
490
|
-
- `command`: Executable command to start the server
|
|
491
|
-
- `args`: Array of command-line arguments
|
|
492
|
-
- `env`: Environment variables for the server process
|
|
493
|
-
- **For http/websocket transport:**
|
|
494
|
-
- `url`: Server endpoint URL
|
|
495
|
-
- `timeout`: Connection timeout in milliseconds (optional)
|
|
496
|
-
|
|
497
|
-
**Transport Types:**
|
|
531
|
+
**Key Features:**
|
|
498
532
|
|
|
499
|
-
- **
|
|
500
|
-
- **
|
|
501
|
-
- **
|
|
533
|
+
- **Transport types**: `stdio` (local), `http`, `websocket` (remote)
|
|
534
|
+
- **Auto-approve tools**: Use `alwaysAllow` to skip confirmation for trusted tools
|
|
535
|
+
- **Environment variables**: Use `$VAR` or `${VAR:-default}` syntax
|
|
536
|
+
- **Hierarchical config**: Project-level (`.mcp.json`) overrides global (`~/.config/nanocoder/.mcp.json`)
|
|
502
537
|
|
|
503
|
-
|
|
538
|
+
**Commands:**
|
|
504
539
|
|
|
505
|
-
-
|
|
506
|
-
-
|
|
507
|
-
- Show connected servers and their tools with the `/mcp` command
|
|
508
|
-
- Display transport type and connection details in configuration summary
|
|
540
|
+
- `/setup-mcp` - Interactive configuration wizard (supports `Ctrl+E` for manual editing)
|
|
541
|
+
- `/mcp` - Show connected servers and their tools
|
|
509
542
|
|
|
510
|
-
Popular MCP servers:
|
|
543
|
+
Popular MCP servers: Filesystem, GitHub, Brave Search, Context7, DeepWiki, and [many more](https://github.com/modelcontextprotocol/servers).
|
|
511
544
|
|
|
512
|
-
|
|
513
|
-
- **GitHub**: Repository management (stdio)
|
|
514
|
-
- **Brave Search**: Web search capabilities (http)
|
|
515
|
-
- **Memory**: Persistent context storage
|
|
516
|
-
- **Context7**: Documentation lookup (http)
|
|
517
|
-
- **DeepWiki**: Wikipedia search (http)
|
|
518
|
-
- **Sequential Thinking**: Advanced reasoning (http)
|
|
519
|
-
- [View more MCP servers](https://github.com/modelcontextprotocol/servers)
|
|
520
|
-
|
|
521
|
-
> **Note**: MCP server configuration follows the same location hierarchy as AI provider setup above. Use `/setup-config` for an interactive configuration wizard with templates for both local and remote MCP servers, or manually edit `agents.config.json` at the project level (current directory) or user level (platform-specific paths listed above).
|
|
545
|
+
> **Full documentation**: See the [MCP Configuration Guide](docs/mcp-configuration.md) for detailed setup, examples, and troubleshooting.
|
|
522
546
|
|
|
523
547
|
### User Preferences
|
|
524
548
|
|
|
@@ -563,22 +587,24 @@ You can override this directory using `NANOCODER_DATA_DIR`.
|
|
|
563
587
|
|
|
564
588
|
- `/help` - Show available commands
|
|
565
589
|
- `/init` - Initialize project with intelligent analysis, create AGENTS.md and configuration files. Use `/init --force` to regenerate AGENTS.md if it already exists.
|
|
566
|
-
- `/setup-
|
|
590
|
+
- `/setup-providers` - Interactive wizard for configuring AI providers with templates
|
|
591
|
+
- `/setup-mcp` - Interactive wizard for configuring MCP servers with templates
|
|
567
592
|
- `/clear` - Clear chat history
|
|
568
593
|
- `/model` - Switch between available models
|
|
569
594
|
- `/provider` - Switch between configured AI providers
|
|
570
595
|
- `/status` - Display current status (CWD, provider, model, theme, available updates, AGENTS setup)
|
|
571
596
|
- `/model-database` - Browse coding models from OpenRouter (searchable, filterable by open/proprietary)
|
|
597
|
+
- `/settings` - Interactive menu to access Nanocoder theme settings (theme, title-shape, nanocoder-shape) and commands
|
|
572
598
|
- `/mcp` - Show connected MCP servers and their tools
|
|
573
599
|
- `/custom-commands` - List all custom commands
|
|
574
600
|
- `/checkpoint` - Save and restore conversation snapshots (see [Checkpointing](#checkpointing) section)
|
|
601
|
+
- `/compact` - Compress message history to reduce context usage (see [Context Compression](docs/context-compression.md))
|
|
575
602
|
- `/exit` - Exit the application
|
|
576
603
|
- `/export` - Export current session to markdown file
|
|
577
|
-
- `/theme` - Select a theme for the Nanocoder CLI
|
|
578
|
-
- `/title-shape` - Select a title shape style for the Nanocoder CLI (real-time preview)
|
|
579
604
|
- `/update` - Update Nanocoder to the latest version
|
|
580
605
|
- `/usage` – Get current model context usage visually
|
|
581
606
|
- `/lsp` – List connected LSP servers
|
|
607
|
+
- `/explorer` - Interactive file browser to navigate, preview, and select files for context
|
|
582
608
|
- `!command` - Execute bash commands directly without leaving Nanocoder (output becomes context for the LLM)
|
|
583
609
|
- `@file` - Include file contents in messages automatically via fuzzy search as you type
|
|
584
610
|
|
|
@@ -642,6 +668,50 @@ Nanocoder supports conversation checkpointing, allowing you to save snapshots of
|
|
|
642
668
|
/checkpoint list
|
|
643
669
|
```
|
|
644
670
|
|
|
671
|
+
#### File Explorer
|
|
672
|
+
|
|
673
|
+
The `/explorer` command opens an interactive file browser for navigating your project, previewing files with syntax highlighting, and selecting multiple files to add as context.
|
|
674
|
+
|
|
675
|
+
**Navigation:**
|
|
676
|
+
|
|
677
|
+
| Key | Action |
|
|
678
|
+
|-----|--------|
|
|
679
|
+
| ↑/↓ | Navigate through files and directories |
|
|
680
|
+
| Enter | Expand/collapse directory or preview file |
|
|
681
|
+
| Space | Toggle file/directory selection |
|
|
682
|
+
| / | Enter search mode (filters all files including nested) |
|
|
683
|
+
| Backspace | Collapse current directory |
|
|
684
|
+
| Esc | Exit explorer (selected files are added to input) |
|
|
685
|
+
|
|
686
|
+
**Features:**
|
|
687
|
+
|
|
688
|
+
- **Tree view**: Browse your project structure with expandable directories
|
|
689
|
+
- **File preview**: View file contents with syntax highlighting before selecting
|
|
690
|
+
- **Compressed indentation**: Preview displays content with compressed indentation (tabs/4-spaces become 2-spaces) for narrow terminals
|
|
691
|
+
- **Multi-select**: Select multiple files to add as context at once
|
|
692
|
+
- **Directory selection**: Press Space on a directory to select all files within it
|
|
693
|
+
- **Search**: Press `/` to filter files by name across the entire tree
|
|
694
|
+
- **Token estimation**: Shows estimated token count for selected files with warning for large selections (10k+ tokens)
|
|
695
|
+
- **VS Code integration**: When running with `--vscode`, previewing a file also opens it in VS Code for full-featured viewing
|
|
696
|
+
|
|
697
|
+
**Selection indicators:**
|
|
698
|
+
|
|
699
|
+
- `✓` - File or directory fully selected
|
|
700
|
+
- `◐` - Directory partially selected (some files within)
|
|
701
|
+
- `✗` - File not selected (in preview mode)
|
|
702
|
+
- `v` / `>` - Directory expanded / collapsed
|
|
703
|
+
|
|
704
|
+
**Example workflow:**
|
|
705
|
+
|
|
706
|
+
```bash
|
|
707
|
+
# Open the file explorer
|
|
708
|
+
/explorer
|
|
709
|
+
|
|
710
|
+
# Navigate to src/components, expand it
|
|
711
|
+
# Select multiple component files with Space
|
|
712
|
+
# Press Esc to add them to your input as @file mentions
|
|
713
|
+
```
|
|
714
|
+
|
|
645
715
|
#### Custom Commands
|
|
646
716
|
|
|
647
717
|
Nanocoder supports custom commands defined as markdown files in the `.nanocoder/commands` directory. Like `agents.config.json`, this directory is created per codebase, allowing you to create reusable prompts with parameters and organize them by category specific to each project.
|
|
@@ -722,6 +792,21 @@ Generate comprehensive unit tests for {{component}}. Include:
|
|
|
722
792
|
- **Auto-accept mode**: Automatically accepts more tool calls without confirmation for faster workflows
|
|
723
793
|
- **Plan mode**: AI suggests actions but doesn't execute tools - useful for planning and exploration
|
|
724
794
|
|
|
795
|
+
### Keyboard Shortcuts
|
|
796
|
+
|
|
797
|
+
| Action | Shortcut | Notes |
|
|
798
|
+
|--------|----------|-------|
|
|
799
|
+
| Submit prompt | Enter | |
|
|
800
|
+
| New line (multi-line input) | Ctrl+J | Most reliable across terminals |
|
|
801
|
+
| New line (multi-line input) | Shift+Enter | Terminal-dependent |
|
|
802
|
+
| New line (multi-line input) | Option/Alt+Enter | VS Code integrated terminal |
|
|
803
|
+
| Toggle development mode | Shift+Tab | Cycles through normal/auto-accept/plan |
|
|
804
|
+
| Cancel AI response | Esc | While AI is processing |
|
|
805
|
+
| Clear input | Esc (twice) | Press Esc twice to clear current input |
|
|
806
|
+
| History navigation | ↑/↓ | Navigate through prompt history |
|
|
807
|
+
|
|
808
|
+
> **Note on multi-line input**: Terminal support for Shift+Enter / Option/Alt+Enter varies in terminals and operating systems. If one of these shortcuts doesn't work in your terminal, try and use Ctrl+J which sends a literal newline character and works more reliably across platforms and software.
|
|
809
|
+
|
|
725
810
|
### Developer Features
|
|
726
811
|
|
|
727
812
|
- **TypeScript-first**: Full type safety and IntelliSense support
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk-client.d.ts","sourceRoot":"","sources":["../../source/ai-sdk-client/ai-sdk-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ai-sdk-client.d.ts","sourceRoot":"","sources":["../../source/ai-sdk-client/ai-sdk-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,SAAS,EACT,OAAO,EACP,eAAe,EACf,MAAM,eAAe,CAAC;AAKvB,qBAAa,WAAY,YAAW,SAAS;IAC5C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;gBAEf,cAAc,EAAE,gBAAgB;IA0C5C;;OAEG;YACW,iBAAiB;IAc/B,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAKrE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAgB7B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIvC;;OAEG;IACG,IAAI,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACpC,SAAS,EAAE,eAAe,EAC1B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC;IAiB3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAW7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk-client.js","sourceRoot":"","sources":["../../source/ai-sdk-client/ai-sdk-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ai-sdk-client.js","sourceRoot":"","sources":["../../source/ai-sdk-client/ai-sdk-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-handler.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,IAAI,CAAC;AAStC,OAAO,KAAK,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,OAAO,EACP,eAAe,EAEf,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-handler.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,IAAI,CAAC;AAStC,OAAO,KAAK,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,OAAO,EACP,eAAe,EAEf,MAAM,eAAe,CAAC;AA0BvB,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,gBAAgB,CAAC;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC/B,MAAM,EAAE,iBAAiB,GACvB,OAAO,CAAC,eAAe,CAAC,CAwV1B"}
|
|
@@ -5,35 +5,79 @@ import { convertToModelMessages } from '../converters/message-converter.js';
|
|
|
5
5
|
import { convertAISDKToolCalls, generateToolCallId, getToolResultOutput, } from '../converters/tool-converter.js';
|
|
6
6
|
import { extractRootError } from '../error-handling/error-extractor.js';
|
|
7
7
|
import { parseAPIError } from '../error-handling/error-parser.js';
|
|
8
|
+
import { isToolSupportError } from '../error-handling/tool-error-detector.js';
|
|
9
|
+
import { formatToolsForPrompt } from '../tools/tool-prompt-formatter.js';
|
|
8
10
|
import { createOnStepFinishHandler, createPrepareStepHandler, } from './streaming-handler.js';
|
|
9
11
|
import { processXMLToolCalls } from './tool-processor.js';
|
|
10
12
|
/**
|
|
11
13
|
* Main chat handler - orchestrates the entire chat flow
|
|
12
14
|
*/
|
|
13
15
|
export async function handleChat(params) {
|
|
14
|
-
const { model, currentModel, providerConfig, messages, tools, callbacks, signal, maxRetries, } = params;
|
|
16
|
+
const { model, currentModel, providerConfig, messages, tools, callbacks, signal, maxRetries, skipTools = false, } = params;
|
|
15
17
|
const logger = getLogger();
|
|
16
18
|
// Check if already aborted before starting
|
|
17
19
|
if (signal?.aborted) {
|
|
18
20
|
logger.debug('Chat request already aborted');
|
|
19
21
|
throw new Error('Operation was cancelled');
|
|
20
22
|
}
|
|
23
|
+
// Check if tools should be disabled
|
|
24
|
+
const shouldDisableTools = skipTools ||
|
|
25
|
+
providerConfig.disableTools ||
|
|
26
|
+
(providerConfig.disableToolModels &&
|
|
27
|
+
providerConfig.disableToolModels.includes(currentModel));
|
|
21
28
|
// Start performance tracking
|
|
22
29
|
const metrics = startMetrics();
|
|
23
30
|
const correlationId = getCorrelationId() || generateCorrelationId();
|
|
31
|
+
if (shouldDisableTools) {
|
|
32
|
+
logger.info('Tools disabled for request', {
|
|
33
|
+
model: currentModel,
|
|
34
|
+
reason: skipTools
|
|
35
|
+
? 'retry without tools'
|
|
36
|
+
: providerConfig.disableTools
|
|
37
|
+
? 'provider configuration'
|
|
38
|
+
: 'model configuration',
|
|
39
|
+
correlationId,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
24
42
|
logger.info('Chat request starting', {
|
|
25
43
|
model: currentModel,
|
|
26
44
|
messageCount: messages.length,
|
|
27
|
-
toolCount: Object.keys(tools).length,
|
|
45
|
+
toolCount: shouldDisableTools ? 0 : Object.keys(tools).length,
|
|
28
46
|
correlationId,
|
|
29
47
|
provider: providerConfig.name,
|
|
30
48
|
});
|
|
31
49
|
return await withNewCorrelationContext(async (_context) => {
|
|
32
50
|
try {
|
|
33
51
|
// Tools are already in AI SDK format - use directly
|
|
34
|
-
const aiTools =
|
|
52
|
+
const aiTools = shouldDisableTools
|
|
53
|
+
? undefined
|
|
54
|
+
: Object.keys(tools).length > 0
|
|
55
|
+
? tools
|
|
56
|
+
: undefined;
|
|
57
|
+
// When native tools are disabled but we have tools, inject definitions into system prompt
|
|
58
|
+
// This allows the model to still use tools via XML format
|
|
59
|
+
let messagesWithToolPrompt = messages;
|
|
60
|
+
if (shouldDisableTools && Object.keys(tools).length > 0) {
|
|
61
|
+
const toolPrompt = formatToolsForPrompt(tools);
|
|
62
|
+
if (toolPrompt) {
|
|
63
|
+
// Find and augment the system message with tool definitions
|
|
64
|
+
messagesWithToolPrompt = messages.map((msg, index) => {
|
|
65
|
+
if (msg.role === 'system' && index === 0) {
|
|
66
|
+
return {
|
|
67
|
+
...msg,
|
|
68
|
+
content: msg.content + toolPrompt,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return msg;
|
|
72
|
+
});
|
|
73
|
+
logger.debug('Injected tool definitions into system prompt', {
|
|
74
|
+
toolCount: Object.keys(tools).length,
|
|
75
|
+
promptLength: toolPrompt.length,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
35
79
|
// Convert messages to AI SDK v5 ModelMessage format
|
|
36
|
-
const modelMessages = convertToModelMessages(
|
|
80
|
+
const modelMessages = convertToModelMessages(messagesWithToolPrompt);
|
|
37
81
|
logger.debug('AI SDK request prepared', {
|
|
38
82
|
messageCount: modelMessages.length,
|
|
39
83
|
hasTools: !!aiTools,
|
|
@@ -52,6 +96,7 @@ export async function handleChat(params) {
|
|
|
52
96
|
// Can be used to add custom logging, metrics, or step tracking
|
|
53
97
|
onStepFinish: createOnStepFinishHandler(callbacks),
|
|
54
98
|
prepareStep: createPrepareStepHandler(),
|
|
99
|
+
headers: providerConfig.config.headers,
|
|
55
100
|
});
|
|
56
101
|
// Get the full text from the result
|
|
57
102
|
const fullText = result.text;
|
|
@@ -157,6 +202,20 @@ export async function handleChat(params) {
|
|
|
157
202
|
});
|
|
158
203
|
throw new Error('Operation was cancelled');
|
|
159
204
|
}
|
|
205
|
+
// Check if error indicates tool support issue and we haven't retried
|
|
206
|
+
if (!skipTools && isToolSupportError(error)) {
|
|
207
|
+
logger.warn('Tool support error detected, retrying without tools', {
|
|
208
|
+
model: currentModel,
|
|
209
|
+
error: error instanceof Error ? error.message : error,
|
|
210
|
+
correlationId,
|
|
211
|
+
provider: providerConfig.name,
|
|
212
|
+
});
|
|
213
|
+
// Retry without tools
|
|
214
|
+
return await handleChat({
|
|
215
|
+
...params,
|
|
216
|
+
skipTools: true, // Mark that we're retrying
|
|
217
|
+
});
|
|
218
|
+
}
|
|
160
219
|
// Handle tool-specific errors - NoSuchToolError
|
|
161
220
|
if (error instanceof NoSuchToolError) {
|
|
162
221
|
logger.error('Tool not found', {
|
|
@@ -168,8 +227,8 @@ export async function handleChat(params) {
|
|
|
168
227
|
// Provide helpful error message with available tools
|
|
169
228
|
const availableTools = Object.keys(tools).join(', ');
|
|
170
229
|
const errorMessage = availableTools
|
|
171
|
-
? `Tool "
|
|
172
|
-
: `Tool "
|
|
230
|
+
? `Tool "${error.toolName}" does not exist. Available tools: ${availableTools}`
|
|
231
|
+
: `Tool "${error.toolName}" does not exist and no tools are currently loaded.`;
|
|
173
232
|
throw new Error(errorMessage);
|
|
174
233
|
}
|
|
175
234
|
// Handle tool-specific errors - InvalidToolInputError
|
|
@@ -182,7 +241,7 @@ export async function handleChat(params) {
|
|
|
182
241
|
validationError: error.message,
|
|
183
242
|
});
|
|
184
243
|
// Provide clear validation error
|
|
185
|
-
throw new Error(`Invalid arguments for tool "
|
|
244
|
+
throw new Error(`Invalid arguments for tool "${error.toolName}": ${error.message}`);
|
|
186
245
|
}
|
|
187
246
|
// Handle tool-specific errors - ToolCallRepairError
|
|
188
247
|
if (error instanceof ToolCallRepairError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-handler.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"AACA,OAAO,EACN,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,mBAAmB,GACnB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAS3C,OAAO,EACN,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,yBAAyB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,sBAAsB,EAAC,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EACN,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,gBAAgB,EAAC,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAC,aAAa,EAAC,MAAM,mCAAmC,CAAC;AAChE,OAAO,EACN,yBAAyB,EACzB,wBAAwB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-handler.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects if an error indicates the model doesn't support tool calling
|
|
3
|
+
*
|
|
4
|
+
* This is used to automatically retry requests without tools when a model
|
|
5
|
+
* rejects tool definitions (common with some local models like deepseek-r1 via Ollama)
|
|
6
|
+
*/
|
|
7
|
+
export declare function isToolSupportError(error: unknown): boolean;
|
|
8
|
+
//# sourceMappingURL=tool-error-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-error-detector.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/error-handling/tool-error-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqD1D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects if an error indicates the model doesn't support tool calling
|
|
3
|
+
*
|
|
4
|
+
* This is used to automatically retry requests without tools when a model
|
|
5
|
+
* rejects tool definitions (common with some local models like deepseek-r1 via Ollama)
|
|
6
|
+
*/
|
|
7
|
+
export function isToolSupportError(error) {
|
|
8
|
+
if (!(error instanceof Error)) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
const message = error.message.toLowerCase();
|
|
12
|
+
// Pattern 1: 400 Bad Request with tool-related messages
|
|
13
|
+
if (message.includes('400') && message.includes('bad request')) {
|
|
14
|
+
const toolPatterns = [
|
|
15
|
+
/tool/i,
|
|
16
|
+
/function/i,
|
|
17
|
+
/invalid.*parameter/i,
|
|
18
|
+
/unexpected.*field/i,
|
|
19
|
+
/unrecognized/i,
|
|
20
|
+
];
|
|
21
|
+
for (const pattern of toolPatterns) {
|
|
22
|
+
if (pattern.test(message)) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Pattern 2: Direct mentions of tool/function not supported
|
|
28
|
+
const directPatterns = [
|
|
29
|
+
/tool.*not.*support/i,
|
|
30
|
+
/function.*not.*support/i,
|
|
31
|
+
/tool.*unsupported/i,
|
|
32
|
+
/function.*unsupported/i,
|
|
33
|
+
/invalid.*tool/i,
|
|
34
|
+
/invalid.*function/i,
|
|
35
|
+
/tool.*parameter.*invalid/i,
|
|
36
|
+
/function.*parameter.*invalid/i,
|
|
37
|
+
];
|
|
38
|
+
for (const pattern of directPatterns) {
|
|
39
|
+
if (pattern.test(message)) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Pattern 3: Ollama-specific error messages
|
|
44
|
+
// Ollama may return errors like: "invalid character 't' looking for beginning of value"
|
|
45
|
+
// when it encounters the 'tools' field in JSON
|
|
46
|
+
if (message.includes('invalid character') &&
|
|
47
|
+
message.includes('after top-level value')) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=tool-error-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-error-detector.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/error-handling/tool-error-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAChD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAE5C,wDAAwD;IACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAChE,MAAM,YAAY,GAAG;YACpB,OAAO;YACP,WAAW;YACX,qBAAqB;YACrB,oBAAoB;YACpB,eAAe;SACf,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC;IAED,4DAA4D;IAC5D,MAAM,cAAc,GAAG;QACtB,qBAAqB;QACrB,yBAAyB;QACzB,oBAAoB;QACpB,wBAAwB;QACxB,gBAAgB;QAChB,oBAAoB;QACpB,2BAA2B;QAC3B,+BAA+B;KAC/B,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,4CAA4C;IAC5C,wFAAwF;IACxF,+CAA+C;IAC/C,IACC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EACxC,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type GoogleGenerativeAIProvider } from '@ai-sdk/google';
|
|
2
|
+
import { type OpenAICompatibleProvider } from '@ai-sdk/openai-compatible';
|
|
2
3
|
import { type Agent } from 'undici';
|
|
3
4
|
import type { AIProviderConfig } from '../../types/index.js';
|
|
5
|
+
export type AIProvider = OpenAICompatibleProvider<string, string, string, string> | GoogleGenerativeAIProvider;
|
|
4
6
|
/**
|
|
5
|
-
* Creates an
|
|
7
|
+
* Creates an AI SDK provider based on the sdkProvider configuration.
|
|
8
|
+
* Defaults to 'openai-compatible' if not specified.
|
|
6
9
|
*/
|
|
7
|
-
export declare function createProvider(providerConfig: AIProviderConfig, undiciAgent: Agent):
|
|
10
|
+
export declare function createProvider(providerConfig: AIProviderConfig, undiciAgent: Agent): AIProvider;
|
|
8
11
|
//# sourceMappingURL=provider-factory.d.ts.map
|