@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
package/dist/ai-sdk-client.js
CHANGED
|
@@ -1,17 +1,104 @@
|
|
|
1
|
+
import { getModelContextLimit } from './models/index.js';
|
|
2
|
+
import { XMLToolCallParser } from './tool-calling/xml-parser.js';
|
|
3
|
+
import { endMetrics, formatMemoryUsage, generateCorrelationId, getCorrelationId, getLogger, startMetrics, withNewCorrelationContext, } from './utils/logging/index.js';
|
|
1
4
|
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
|
|
2
|
-
import { generateText,
|
|
5
|
+
import { APICallError, RetryError, generateText, stepCountIs } from 'ai';
|
|
3
6
|
import { Agent, fetch as undiciFetch } from 'undici';
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Checks if an assistant message is empty (no content and no tool calls).
|
|
9
|
+
* Empty assistant messages cause API errors:
|
|
10
|
+
* "400 Bad Request: Assistant message must have either content or tool_calls, but not none."
|
|
11
|
+
*
|
|
12
|
+
* Exported for testing purposes.
|
|
13
|
+
*/
|
|
14
|
+
export function isEmptyAssistantMessage(message) {
|
|
15
|
+
if (message.role !== 'assistant') {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
// Check for content - handle both string and array content formats
|
|
19
|
+
const hasContent = Array.isArray(message.content)
|
|
20
|
+
? message.content.length > 0
|
|
21
|
+
: typeof message.content === 'string' && message.content.trim().length > 0;
|
|
22
|
+
// Tool calls are in a separate property for AI SDK messages
|
|
23
|
+
const hasToolCalls = 'toolCalls' in message &&
|
|
24
|
+
Array.isArray(message.toolCalls) &&
|
|
25
|
+
message.toolCalls.length > 0;
|
|
26
|
+
return !hasContent && !hasToolCalls;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Extracts the root cause error from AI SDK error wrappers.
|
|
30
|
+
* AI SDK wraps errors in RetryError which contains lastError.
|
|
31
|
+
*/
|
|
32
|
+
function extractRootError(error) {
|
|
33
|
+
// Handle AI SDK RetryError - extract the last error
|
|
34
|
+
if (RetryError.isInstance(error)) {
|
|
35
|
+
if (error.lastError) {
|
|
36
|
+
return extractRootError(error.lastError);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return error;
|
|
40
|
+
}
|
|
6
41
|
/**
|
|
7
42
|
* Parses API errors into user-friendly messages.
|
|
8
43
|
* Exported for testing purposes.
|
|
9
44
|
*/
|
|
10
45
|
export function parseAPIError(error) {
|
|
11
|
-
|
|
46
|
+
// First extract the root error from any wrappers
|
|
47
|
+
const rootError = extractRootError(error);
|
|
48
|
+
if (!(rootError instanceof Error)) {
|
|
12
49
|
return 'An unknown error occurred while communicating with the model';
|
|
13
50
|
}
|
|
14
|
-
|
|
51
|
+
// Handle AI SDK APICallError - it has statusCode and responseBody
|
|
52
|
+
if (APICallError.isInstance(rootError)) {
|
|
53
|
+
const statusCode = rootError.statusCode;
|
|
54
|
+
// Try to extract a clean message from responseBody or use the error message
|
|
55
|
+
let cleanMessage = rootError.message;
|
|
56
|
+
// Parse the response body if available for more details
|
|
57
|
+
if (rootError.responseBody) {
|
|
58
|
+
try {
|
|
59
|
+
const body = JSON.parse(rootError.responseBody);
|
|
60
|
+
if (body.error?.message) {
|
|
61
|
+
cleanMessage = body.error.message;
|
|
62
|
+
}
|
|
63
|
+
else if (body.message) {
|
|
64
|
+
cleanMessage = body.message;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// If not JSON, try to extract message from the raw response
|
|
69
|
+
const msgMatch = rootError.responseBody.match(/["']?message["']?\s*[:=]\s*["']([^"']+)["']/i);
|
|
70
|
+
if (msgMatch) {
|
|
71
|
+
cleanMessage = msgMatch[1];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Format based on status code
|
|
76
|
+
if (statusCode) {
|
|
77
|
+
switch (statusCode) {
|
|
78
|
+
case 400:
|
|
79
|
+
return `Bad request: ${cleanMessage}`;
|
|
80
|
+
case 401:
|
|
81
|
+
return 'Authentication failed: Invalid API key or credentials';
|
|
82
|
+
case 403:
|
|
83
|
+
return 'Access forbidden: Check your API permissions';
|
|
84
|
+
case 404:
|
|
85
|
+
return 'Model not found: The requested model may not exist or is unavailable';
|
|
86
|
+
case 429:
|
|
87
|
+
if (cleanMessage.includes('usage limit') ||
|
|
88
|
+
cleanMessage.includes('quota')) {
|
|
89
|
+
return `Rate limit: ${cleanMessage}`;
|
|
90
|
+
}
|
|
91
|
+
return 'Rate limit exceeded: Too many requests. Please wait and try again';
|
|
92
|
+
case 500:
|
|
93
|
+
case 502:
|
|
94
|
+
case 503:
|
|
95
|
+
return `Server error: ${cleanMessage}`;
|
|
96
|
+
default:
|
|
97
|
+
return `Request failed (${statusCode}): ${cleanMessage}`;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const errorMessage = rootError.message;
|
|
15
102
|
// Extract status code and clean message from common error patterns FIRST
|
|
16
103
|
// This ensures HTTP status codes are properly parsed before falling through
|
|
17
104
|
// to more generic pattern matching (like Ollama-specific errors)
|
|
@@ -29,6 +116,11 @@ export function parseAPIError(error) {
|
|
|
29
116
|
case '404':
|
|
30
117
|
return 'Model not found: The requested model may not exist or is unavailable';
|
|
31
118
|
case '429':
|
|
119
|
+
// Include the original message if it has useful details
|
|
120
|
+
if (cleanMessage.includes('usage limit') ||
|
|
121
|
+
cleanMessage.includes('quota')) {
|
|
122
|
+
return `Rate limit: ${cleanMessage}`;
|
|
123
|
+
}
|
|
32
124
|
return 'Rate limit exceeded: Too many requests. Please wait and try again';
|
|
33
125
|
case '500':
|
|
34
126
|
case '502':
|
|
@@ -127,18 +219,24 @@ export class AISDKClient {
|
|
|
127
219
|
cachedContextSize;
|
|
128
220
|
maxRetries;
|
|
129
221
|
constructor(providerConfig) {
|
|
222
|
+
const logger = getLogger();
|
|
130
223
|
this.providerConfig = providerConfig;
|
|
131
224
|
this.availableModels = providerConfig.models;
|
|
132
225
|
this.currentModel = providerConfig.models[0] || '';
|
|
133
226
|
this.cachedContextSize = 0;
|
|
134
227
|
// Default to 2 retries (same as AI SDK default), or use configured value
|
|
135
228
|
this.maxRetries = providerConfig.maxRetries ?? 2;
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
:
|
|
140
|
-
|
|
141
|
-
|
|
229
|
+
logger.info('AI SDK client initializing', {
|
|
230
|
+
models: this.availableModels,
|
|
231
|
+
defaultModel: this.currentModel,
|
|
232
|
+
provider: providerConfig.name || 'unknown',
|
|
233
|
+
baseUrl: providerConfig.config.baseURL ? '[REDACTED]' : undefined,
|
|
234
|
+
maxRetries: this.maxRetries,
|
|
235
|
+
});
|
|
236
|
+
const { connectionPool } = this.providerConfig;
|
|
237
|
+
const { requestTimeout, socketTimeout } = this.providerConfig;
|
|
238
|
+
const effectiveSocketTimeout = socketTimeout ?? requestTimeout;
|
|
239
|
+
const resolvedSocketTimeout = effectiveSocketTimeout === -1 ? 0 : (effectiveSocketTimeout ?? 120000);
|
|
142
240
|
this.undiciAgent = new Agent({
|
|
143
241
|
connect: {
|
|
144
242
|
timeout: resolvedSocketTimeout,
|
|
@@ -195,7 +293,14 @@ export class AISDKClient {
|
|
|
195
293
|
});
|
|
196
294
|
}
|
|
197
295
|
setModel(model) {
|
|
296
|
+
const logger = getLogger();
|
|
297
|
+
const previousModel = this.currentModel;
|
|
198
298
|
this.currentModel = model;
|
|
299
|
+
logger.info('Model changed', {
|
|
300
|
+
previousModel,
|
|
301
|
+
newModel: model,
|
|
302
|
+
provider: this.providerConfig.name,
|
|
303
|
+
});
|
|
199
304
|
// Update context size when model changes
|
|
200
305
|
void this.updateContextSize();
|
|
201
306
|
}
|
|
@@ -211,223 +316,266 @@ export class AISDKClient {
|
|
|
211
316
|
getAvailableModels() {
|
|
212
317
|
return Promise.resolve(this.availableModels);
|
|
213
318
|
}
|
|
214
|
-
async chat(messages, tools, signal) {
|
|
215
|
-
// Check if already aborted before starting
|
|
216
|
-
if (signal?.aborted) {
|
|
217
|
-
throw new Error('Operation was cancelled');
|
|
218
|
-
}
|
|
219
|
-
try {
|
|
220
|
-
// Get the language model instance from the provider
|
|
221
|
-
const model = this.provider(this.currentModel);
|
|
222
|
-
// Tools are already in AI SDK format - use directly
|
|
223
|
-
const aiTools = Object.keys(tools).length > 0 ? tools : undefined;
|
|
224
|
-
// Convert messages to AI SDK v5 ModelMessage format
|
|
225
|
-
const modelMessages = convertToModelMessages(messages);
|
|
226
|
-
// Use generateText for non-streaming
|
|
227
|
-
const result = await generateText({
|
|
228
|
-
model,
|
|
229
|
-
messages: modelMessages,
|
|
230
|
-
tools: aiTools,
|
|
231
|
-
abortSignal: signal,
|
|
232
|
-
maxRetries: this.maxRetries,
|
|
233
|
-
});
|
|
234
|
-
// Extract tool calls from result
|
|
235
|
-
const toolCalls = [];
|
|
236
|
-
if (result.toolCalls && result.toolCalls.length > 0) {
|
|
237
|
-
for (const toolCall of result.toolCalls) {
|
|
238
|
-
toolCalls.push({
|
|
239
|
-
// Some providers (like Ollama) don't provide toolCallId, so generate one
|
|
240
|
-
id: toolCall.toolCallId ||
|
|
241
|
-
`tool_${Date.now()}_${Math.random().toString(36).substring(7)}`,
|
|
242
|
-
function: {
|
|
243
|
-
name: toolCall.toolName,
|
|
244
|
-
// AI SDK v5 uses 'input' for tool arguments
|
|
245
|
-
arguments: toolCall.input,
|
|
246
|
-
},
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
// If no native tool calls but tools are available, try XML parsing
|
|
251
|
-
let content = result.text;
|
|
252
|
-
if (Object.keys(tools).length > 0 && toolCalls.length === 0 && content) {
|
|
253
|
-
// First check for malformed XML tool calls
|
|
254
|
-
const malformedError = XMLToolCallParser.detectMalformedToolCall(content);
|
|
255
|
-
if (malformedError) {
|
|
256
|
-
// Return malformed tool call with validation error
|
|
257
|
-
// This mimics how validators work - returns tool call that will show error
|
|
258
|
-
toolCalls.push({
|
|
259
|
-
id: 'malformed_xml_validation',
|
|
260
|
-
function: {
|
|
261
|
-
name: '__xml_validation_error__',
|
|
262
|
-
arguments: {
|
|
263
|
-
error: malformedError.error,
|
|
264
|
-
},
|
|
265
|
-
},
|
|
266
|
-
});
|
|
267
|
-
content = ''; // Clear content since it was malformed
|
|
268
|
-
}
|
|
269
|
-
else if (XMLToolCallParser.hasToolCalls(content)) {
|
|
270
|
-
// Try to parse well-formed XML tool calls
|
|
271
|
-
const parsedToolCalls = XMLToolCallParser.parseToolCalls(content);
|
|
272
|
-
const xmlToolCalls = XMLToolCallParser.convertToToolCalls(parsedToolCalls);
|
|
273
|
-
const cleanedContent = XMLToolCallParser.removeToolCallsFromContent(content);
|
|
274
|
-
content = cleanedContent;
|
|
275
|
-
toolCalls.push(...xmlToolCalls);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
return {
|
|
279
|
-
choices: [
|
|
280
|
-
{
|
|
281
|
-
message: {
|
|
282
|
-
role: 'assistant',
|
|
283
|
-
content,
|
|
284
|
-
tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
],
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
catch (error) {
|
|
291
|
-
// Check if this was a cancellation
|
|
292
|
-
if (error instanceof Error && error.name === 'AbortError') {
|
|
293
|
-
throw new Error('Operation was cancelled');
|
|
294
|
-
}
|
|
295
|
-
// Check for AI SDK's NoOutputGeneratedError (thrown when stream is aborted)
|
|
296
|
-
if (error instanceof Error &&
|
|
297
|
-
(error.name === 'AI_NoOutputGeneratedError' ||
|
|
298
|
-
error.message.includes('No output generated'))) {
|
|
299
|
-
throw new Error('Operation was cancelled');
|
|
300
|
-
}
|
|
301
|
-
// Log detailed error for debugging
|
|
302
|
-
console.error('AI SDK Error:', error);
|
|
303
|
-
if (error instanceof Error) {
|
|
304
|
-
console.error('Error message:', error.message);
|
|
305
|
-
console.error('Error stack:', error.stack);
|
|
306
|
-
}
|
|
307
|
-
// Parse and throw a user-friendly error
|
|
308
|
-
const userMessage = parseAPIError(error);
|
|
309
|
-
throw new Error(userMessage);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
319
|
/**
|
|
313
320
|
* Stream chat with real-time token updates
|
|
314
321
|
*/
|
|
315
|
-
async
|
|
322
|
+
async chat(messages, tools, callbacks, signal) {
|
|
323
|
+
const logger = getLogger();
|
|
316
324
|
// Check if already aborted before starting
|
|
317
325
|
if (signal?.aborted) {
|
|
326
|
+
logger.debug('Chat request already aborted');
|
|
318
327
|
throw new Error('Operation was cancelled');
|
|
319
328
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
329
|
+
// Start performance tracking
|
|
330
|
+
const metrics = startMetrics();
|
|
331
|
+
const correlationId = getCorrelationId() || generateCorrelationId();
|
|
332
|
+
logger.info('Chat request starting', {
|
|
333
|
+
model: this.currentModel,
|
|
334
|
+
messageCount: messages.length,
|
|
335
|
+
toolCount: Object.keys(tools).length,
|
|
336
|
+
correlationId,
|
|
337
|
+
provider: this.providerConfig.name,
|
|
338
|
+
});
|
|
339
|
+
return await withNewCorrelationContext(async (_context) => {
|
|
340
|
+
try {
|
|
341
|
+
// Get the language model instance from the provider
|
|
342
|
+
const model = this.provider(this.currentModel);
|
|
343
|
+
// Tools are already in AI SDK format - use directly
|
|
344
|
+
const aiTools = Object.keys(tools).length > 0 ? tools : undefined;
|
|
345
|
+
// Convert messages to AI SDK v5 ModelMessage format
|
|
346
|
+
const modelMessages = convertToModelMessages(messages);
|
|
347
|
+
logger.debug('AI SDK request prepared', {
|
|
348
|
+
messageCount: modelMessages.length,
|
|
349
|
+
hasTools: !!aiTools,
|
|
350
|
+
toolCount: aiTools ? Object.keys(aiTools).length : 0,
|
|
351
|
+
});
|
|
352
|
+
// Tools with needsApproval: false auto-execute in the loop
|
|
353
|
+
// Tools with needsApproval: true cause interruptions for manual approval
|
|
354
|
+
// stopWhen controls when the tool loop stops (max 10 steps)
|
|
355
|
+
const result = await generateText({
|
|
356
|
+
model,
|
|
357
|
+
messages: modelMessages,
|
|
358
|
+
tools: aiTools,
|
|
359
|
+
abortSignal: signal,
|
|
360
|
+
maxRetries: this.maxRetries,
|
|
361
|
+
temperature: 0.6,
|
|
362
|
+
stopWhen: stepCountIs(10), // Allow up to 10 tool execution steps
|
|
363
|
+
// Can be used to add custom logging, metrics, or step tracking
|
|
364
|
+
onStepFinish(step) {
|
|
365
|
+
// Log tool execution steps
|
|
366
|
+
if (step.toolCalls && step.toolCalls.length > 0) {
|
|
367
|
+
logger.trace('AI SDK tool step', {
|
|
368
|
+
stepType: 'tool_execution',
|
|
369
|
+
toolCount: step.toolCalls.length,
|
|
370
|
+
hasResults: !!step.toolResults,
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
// Display formatters for auto-executed tools (after execution with results)
|
|
374
|
+
if (step.toolCalls &&
|
|
375
|
+
step.toolResults &&
|
|
376
|
+
step.toolCalls.length === step.toolResults.length) {
|
|
377
|
+
step.toolCalls.forEach((toolCall, idx) => {
|
|
378
|
+
const toolResult = step.toolResults[idx];
|
|
379
|
+
const tc = {
|
|
380
|
+
id: toolCall.toolCallId ||
|
|
381
|
+
`tool_${Date.now()}_${Math.random()
|
|
382
|
+
.toString(36)
|
|
383
|
+
.substring(7)}`,
|
|
384
|
+
function: {
|
|
385
|
+
name: toolCall.toolName,
|
|
386
|
+
arguments: toolCall.input,
|
|
387
|
+
},
|
|
388
|
+
};
|
|
389
|
+
const resultStr = typeof toolResult.output === 'string'
|
|
390
|
+
? toolResult.output
|
|
391
|
+
: JSON.stringify(toolResult.output);
|
|
392
|
+
logger.debug('Tool executed', {
|
|
393
|
+
toolName: tc.function.name,
|
|
394
|
+
resultLength: resultStr.length,
|
|
395
|
+
});
|
|
396
|
+
callbacks.onToolExecuted?.(tc, resultStr);
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
},
|
|
400
|
+
prepareStep: ({ messages }) => {
|
|
401
|
+
// Filter out empty assistant messages that would cause API errors
|
|
402
|
+
// "Assistant message must have either content or tool_calls"
|
|
403
|
+
const filteredMessages = messages.filter(m => !isEmptyAssistantMessage(m));
|
|
404
|
+
// Log message filtering
|
|
405
|
+
if (filteredMessages.length !== messages.length) {
|
|
406
|
+
logger.debug('Filtered empty assistant messages', {
|
|
407
|
+
originalCount: messages.length,
|
|
408
|
+
filteredCount: filteredMessages.length,
|
|
409
|
+
removedCount: messages.length - filteredMessages.length,
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
// Return filtered messages if any were removed, otherwise no changes
|
|
413
|
+
if (filteredMessages.length !== messages.length) {
|
|
414
|
+
return { messages: filteredMessages };
|
|
415
|
+
}
|
|
416
|
+
return {}; // No modifications needed
|
|
417
|
+
},
|
|
418
|
+
});
|
|
419
|
+
// Get the full text from the result
|
|
420
|
+
const fullText = result.text;
|
|
421
|
+
logger.debug('AI SDK response received', {
|
|
422
|
+
responseLength: fullText.length,
|
|
423
|
+
hasToolCalls: !!(result.toolCalls && result.toolCalls.length > 0),
|
|
424
|
+
toolCallCount: result.toolCalls?.length || 0,
|
|
425
|
+
});
|
|
426
|
+
// Send the complete text to the callback
|
|
427
|
+
if (fullText) {
|
|
428
|
+
callbacks.onToken?.(fullText);
|
|
359
429
|
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
//
|
|
365
|
-
const
|
|
366
|
-
if (
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
430
|
+
// Get tool calls from result
|
|
431
|
+
const toolCallsResult = result.toolCalls;
|
|
432
|
+
// Can inspect result.steps to see auto-executed tool calls and results
|
|
433
|
+
// const steps = await result.steps;
|
|
434
|
+
// Extract tool calls
|
|
435
|
+
const toolCalls = [];
|
|
436
|
+
if (toolCallsResult && toolCallsResult.length > 0) {
|
|
437
|
+
logger.debug('Processing tool calls from response', {
|
|
438
|
+
toolCallCount: toolCallsResult.length,
|
|
439
|
+
});
|
|
440
|
+
for (const toolCall of toolCallsResult) {
|
|
441
|
+
const tc = {
|
|
442
|
+
// Some providers (like Ollama) don't provide toolCallId, so generate one
|
|
443
|
+
id: toolCall.toolCallId ||
|
|
444
|
+
`tool_${Date.now()}_${Math.random().toString(36).substring(7)}`,
|
|
445
|
+
function: {
|
|
446
|
+
name: toolCall.toolName,
|
|
447
|
+
// AI SDK v5 uses 'input' for tool arguments
|
|
448
|
+
arguments: toolCall.input,
|
|
375
449
|
},
|
|
376
|
-
}
|
|
377
|
-
};
|
|
378
|
-
toolCalls.push(malformedCall);
|
|
379
|
-
callbacks.onToolCall?.(malformedCall);
|
|
380
|
-
content = ''; // Clear content since it was malformed
|
|
381
|
-
}
|
|
382
|
-
else if (XMLToolCallParser.hasToolCalls(content)) {
|
|
383
|
-
// Try to parse well-formed XML tool calls
|
|
384
|
-
const parsedToolCalls = XMLToolCallParser.parseToolCalls(content);
|
|
385
|
-
const xmlToolCalls = XMLToolCallParser.convertToToolCalls(parsedToolCalls);
|
|
386
|
-
const cleanedContent = XMLToolCallParser.removeToolCallsFromContent(content);
|
|
387
|
-
content = cleanedContent;
|
|
388
|
-
for (const tc of xmlToolCalls) {
|
|
450
|
+
};
|
|
389
451
|
toolCalls.push(tc);
|
|
390
|
-
|
|
452
|
+
logger.debug('Tool call processed', {
|
|
453
|
+
toolName: tc.function.name,
|
|
454
|
+
hasArguments: !!tc.function.arguments,
|
|
455
|
+
});
|
|
456
|
+
// Note: onToolCall already fired in onStepFinish - no need to call again
|
|
391
457
|
}
|
|
392
458
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
{
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
459
|
+
// Check for XML tool calls if no native ones
|
|
460
|
+
let content = fullText;
|
|
461
|
+
if (Object.keys(tools).length > 0 &&
|
|
462
|
+
toolCalls.length === 0 &&
|
|
463
|
+
content) {
|
|
464
|
+
logger.debug('Checking for XML tool calls in response content');
|
|
465
|
+
// First check for malformed XML tool calls
|
|
466
|
+
const malformedError = XMLToolCallParser.detectMalformedToolCall(content);
|
|
467
|
+
if (malformedError) {
|
|
468
|
+
logger.warn('Malformed XML tool call detected', {
|
|
469
|
+
error: malformedError.error,
|
|
470
|
+
});
|
|
471
|
+
// Return malformed tool call with validation error
|
|
472
|
+
// This mimics how validators work - returns tool call that will show error
|
|
473
|
+
const malformedCall = {
|
|
474
|
+
id: 'malformed_xml_validation',
|
|
475
|
+
function: {
|
|
476
|
+
name: '__xml_validation_error__',
|
|
477
|
+
arguments: {
|
|
478
|
+
error: malformedError.error,
|
|
479
|
+
},
|
|
480
|
+
},
|
|
481
|
+
};
|
|
482
|
+
toolCalls.push(malformedCall);
|
|
483
|
+
callbacks.onToolCall?.(malformedCall);
|
|
484
|
+
content = ''; // Clear content since it was malformed
|
|
485
|
+
}
|
|
486
|
+
else if (XMLToolCallParser.hasToolCalls(content)) {
|
|
487
|
+
logger.debug('Parsing XML tool calls from content');
|
|
488
|
+
// Try to parse well-formed XML tool calls
|
|
489
|
+
const parsedToolCalls = XMLToolCallParser.parseToolCalls(content);
|
|
490
|
+
const xmlToolCalls = XMLToolCallParser.convertToToolCalls(parsedToolCalls);
|
|
491
|
+
const cleanedContent = XMLToolCallParser.removeToolCallsFromContent(content);
|
|
492
|
+
logger.debug('XML tool calls parsed', {
|
|
493
|
+
toolCallCount: xmlToolCalls.length,
|
|
494
|
+
contentLength: cleanedContent.length,
|
|
495
|
+
});
|
|
496
|
+
content = cleanedContent;
|
|
497
|
+
for (const tc of xmlToolCalls) {
|
|
498
|
+
toolCalls.push(tc);
|
|
499
|
+
callbacks.onToolCall?.(tc);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
// Calculate performance metrics
|
|
504
|
+
const finalMetrics = endMetrics(metrics);
|
|
505
|
+
logger.info('Chat request completed successfully', {
|
|
506
|
+
model: this.currentModel,
|
|
507
|
+
duration: `${finalMetrics.duration.toFixed(2)}ms`,
|
|
508
|
+
responseLength: content.length,
|
|
509
|
+
toolCallsFound: toolCalls.length,
|
|
510
|
+
memoryDelta: formatMemoryUsage(finalMetrics.memoryUsage || process.memoryUsage()),
|
|
511
|
+
correlationId,
|
|
512
|
+
provider: this.providerConfig.name,
|
|
513
|
+
});
|
|
514
|
+
callbacks.onFinish?.();
|
|
515
|
+
return {
|
|
516
|
+
choices: [
|
|
517
|
+
{
|
|
518
|
+
message: {
|
|
519
|
+
role: 'assistant',
|
|
520
|
+
content,
|
|
521
|
+
tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
522
|
+
},
|
|
402
523
|
},
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
};
|
|
406
|
-
}
|
|
407
|
-
catch (error) {
|
|
408
|
-
// Check if this was a cancellation
|
|
409
|
-
if (error instanceof Error && error.name === 'AbortError') {
|
|
410
|
-
throw new Error('Operation was cancelled');
|
|
524
|
+
],
|
|
525
|
+
};
|
|
411
526
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
527
|
+
catch (error) {
|
|
528
|
+
// Calculate performance metrics even for errors
|
|
529
|
+
const finalMetrics = endMetrics(metrics);
|
|
530
|
+
// Check if this was a user-initiated cancellation
|
|
531
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
532
|
+
logger.info('Chat request cancelled by user', {
|
|
533
|
+
model: this.currentModel,
|
|
534
|
+
duration: `${finalMetrics.duration.toFixed(2)}ms`,
|
|
535
|
+
correlationId,
|
|
536
|
+
provider: this.providerConfig.name,
|
|
537
|
+
});
|
|
538
|
+
throw new Error('Operation was cancelled');
|
|
539
|
+
}
|
|
540
|
+
// Log the error with performance metrics
|
|
541
|
+
logger.error('Chat request failed', {
|
|
542
|
+
model: this.currentModel,
|
|
543
|
+
duration: `${finalMetrics.duration.toFixed(2)}ms`,
|
|
544
|
+
error: error instanceof Error ? error.message : error,
|
|
545
|
+
errorName: error instanceof Error ? error.name : 'Unknown',
|
|
546
|
+
correlationId,
|
|
547
|
+
provider: this.providerConfig.name,
|
|
548
|
+
memoryDelta: formatMemoryUsage(finalMetrics.memoryUsage || process.memoryUsage()),
|
|
549
|
+
});
|
|
550
|
+
// AI SDK wraps errors in NoOutputGeneratedError with no useful cause
|
|
551
|
+
// Check if it's a cancellation without an underlying API error
|
|
552
|
+
if (error instanceof Error &&
|
|
553
|
+
(error.name === 'AI_NoOutputGeneratedError' ||
|
|
554
|
+
error.message.includes('No output generated'))) {
|
|
555
|
+
// Check if there's an underlying RetryError with the real cause
|
|
556
|
+
const rootError = extractRootError(error);
|
|
557
|
+
if (rootError === error) {
|
|
558
|
+
// No underlying error - this is just a cancellation
|
|
559
|
+
throw new Error('Operation was cancelled');
|
|
560
|
+
}
|
|
561
|
+
// There's a real error underneath, parse it
|
|
562
|
+
const userMessage = parseAPIError(rootError);
|
|
563
|
+
throw new Error(userMessage);
|
|
564
|
+
}
|
|
565
|
+
// Parse any other error (including RetryError and APICallError)
|
|
566
|
+
const userMessage = parseAPIError(error);
|
|
567
|
+
throw new Error(userMessage);
|
|
423
568
|
}
|
|
424
|
-
|
|
425
|
-
const userMessage = parseAPIError(error);
|
|
426
|
-
throw new Error(userMessage);
|
|
427
|
-
}
|
|
569
|
+
}, correlationId); // End of withNewCorrelationContext
|
|
428
570
|
}
|
|
429
|
-
|
|
571
|
+
clearContext() {
|
|
572
|
+
const logger = getLogger();
|
|
573
|
+
logger.debug('AI SDK client context cleared', {
|
|
574
|
+
model: this.currentModel,
|
|
575
|
+
provider: this.providerConfig.name,
|
|
576
|
+
});
|
|
430
577
|
// No internal state to clear
|
|
578
|
+
return Promise.resolve();
|
|
431
579
|
}
|
|
432
580
|
}
|
|
433
581
|
//# sourceMappingURL=ai-sdk-client.js.map
|