@vybestack/llxprt-code-core 0.1.18-nightly.250811.b0db22c6 → 0.1.18-nightly.250812.12fa8ad2
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 +49 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/src/auth/anthropic-device-flow.d.ts +53 -0
- package/dist/src/auth/anthropic-device-flow.js +208 -0
- package/dist/src/auth/anthropic-device-flow.js.map +1 -0
- package/dist/src/auth/token-store.js +11 -7
- package/dist/src/auth/token-store.js.map +1 -1
- package/dist/src/config/config.d.ts +7 -1
- package/dist/src/config/config.js +42 -4
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/profileManager.d.ts +14 -4
- package/dist/src/config/profileManager.js +90 -11
- package/dist/src/config/profileManager.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +2 -1
- package/dist/src/core/contentGenerator.js +1 -0
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/providers/BaseProvider.d.ts +51 -0
- package/dist/src/providers/BaseProvider.js +136 -1
- package/dist/src/providers/BaseProvider.js.map +1 -1
- package/dist/src/providers/IProvider.d.ts +1 -0
- package/dist/src/providers/LoggingProviderWrapper.d.ts +1 -0
- package/dist/src/providers/LoggingProviderWrapper.js +3 -0
- package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
- package/dist/src/providers/ProviderManager.d.ts +0 -1
- package/dist/src/providers/ProviderManager.js +23 -14
- package/dist/src/providers/ProviderManager.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.d.ts +20 -6
- package/dist/src/providers/anthropic/AnthropicProvider.js +172 -26
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +4 -0
- package/dist/src/providers/gemini/GeminiProvider.js +33 -1
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.d.ts +32 -0
- package/dist/src/providers/openai/OpenAIProvider.js +200 -13
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +1 -1
- package/dist/src/providers/openai/RESPONSES_API_MODELS.js +1 -0
- package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +1 -1
- package/dist/src/providers/openai/syntheticToolResponses.d.ts +52 -0
- package/dist/src/providers/openai/syntheticToolResponses.js +129 -0
- package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -0
- package/dist/src/settings/SettingsService.d.ts +32 -0
- package/dist/src/settings/SettingsService.js +204 -0
- package/dist/src/settings/SettingsService.js.map +1 -0
- package/dist/src/settings/settingsServiceInstance.d.ts +12 -0
- package/dist/src/settings/settingsServiceInstance.js +24 -0
- package/dist/src/settings/settingsServiceInstance.js.map +1 -0
- package/dist/src/settings/types.d.ts +141 -0
- package/dist/src/settings/types.js +5 -0
- package/dist/src/settings/types.js.map +1 -0
- package/package.json +4 -2
- package/dist/src/auth/auth-integration.spec.d.ts +0 -6
- package/dist/src/auth/auth-integration.spec.js +0 -384
- package/dist/src/auth/auth-integration.spec.js.map +0 -1
- package/dist/src/auth/precedence.test.d.ts +0 -6
- package/dist/src/auth/precedence.test.js +0 -374
- package/dist/src/auth/precedence.test.js.map +0 -1
- package/dist/src/auth/qwen-device-flow.spec.d.ts +0 -6
- package/dist/src/auth/qwen-device-flow.spec.js +0 -793
- package/dist/src/auth/qwen-device-flow.spec.js.map +0 -1
- package/dist/src/auth/token-store.spec.d.ts +0 -6
- package/dist/src/auth/token-store.spec.js +0 -405
- package/dist/src/auth/token-store.spec.js.map +0 -1
- package/dist/src/code_assist/converter.test.d.ts +0 -6
- package/dist/src/code_assist/converter.test.js +0 -279
- package/dist/src/code_assist/converter.test.js.map +0 -1
- package/dist/src/code_assist/oauth2.test.d.ts +0 -6
- package/dist/src/code_assist/oauth2.test.js +0 -370
- package/dist/src/code_assist/oauth2.test.js.map +0 -1
- package/dist/src/code_assist/server.test.d.ts +0 -6
- package/dist/src/code_assist/server.test.js +0 -134
- package/dist/src/code_assist/server.test.js.map +0 -1
- package/dist/src/code_assist/setup.test.d.ts +0 -6
- package/dist/src/code_assist/setup.test.js +0 -65
- package/dist/src/code_assist/setup.test.js.map +0 -1
- package/dist/src/config/config.alwaysAllow.test.d.ts +0 -6
- package/dist/src/config/config.alwaysAllow.test.js +0 -84
- package/dist/src/config/config.alwaysAllow.test.js.map +0 -1
- package/dist/src/config/config.ephemeral.test.d.ts +0 -6
- package/dist/src/config/config.ephemeral.test.js +0 -152
- package/dist/src/config/config.ephemeral.test.js.map +0 -1
- package/dist/src/config/config.test.d.ts +0 -6
- package/dist/src/config/config.test.js +0 -369
- package/dist/src/config/config.test.js.map +0 -1
- package/dist/src/config/endpoints.test.d.ts +0 -6
- package/dist/src/config/endpoints.test.js +0 -196
- package/dist/src/config/endpoints.test.js.map +0 -1
- package/dist/src/config/flashFallback.test.d.ts +0 -6
- package/dist/src/config/flashFallback.test.js +0 -91
- package/dist/src/config/flashFallback.test.js.map +0 -1
- package/dist/src/core/client.test.d.ts +0 -6
- package/dist/src/core/client.test.js +0 -1323
- package/dist/src/core/client.test.js.map +0 -1
- package/dist/src/core/contentGenerator.test.d.ts +0 -6
- package/dist/src/core/contentGenerator.test.js +0 -103
- package/dist/src/core/contentGenerator.test.js.map +0 -1
- package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
- package/dist/src/core/coreToolScheduler.test.js +0 -637
- package/dist/src/core/coreToolScheduler.test.js.map +0 -1
- package/dist/src/core/geminiChat.test.d.ts +0 -6
- package/dist/src/core/geminiChat.test.js +0 -425
- package/dist/src/core/geminiChat.test.js.map +0 -1
- package/dist/src/core/googleGenAIWrapper.test.d.ts +0 -6
- package/dist/src/core/googleGenAIWrapper.test.js +0 -104
- package/dist/src/core/googleGenAIWrapper.test.js.map +0 -1
- package/dist/src/core/logger.test.d.ts +0 -6
- package/dist/src/core/logger.test.js +0 -467
- package/dist/src/core/logger.test.js.map +0 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +0 -6
- package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -165
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +0 -1
- package/dist/src/core/prompts-async.test.d.ts +0 -6
- package/dist/src/core/prompts-async.test.js +0 -115
- package/dist/src/core/prompts-async.test.js.map +0 -1
- package/dist/src/core/prompts.test.d.ts +0 -6
- package/dist/src/core/prompts.test.js +0 -68
- package/dist/src/core/prompts.test.js.map +0 -1
- package/dist/src/core/subagent.test.d.ts +0 -6
- package/dist/src/core/subagent.test.js +0 -510
- package/dist/src/core/subagent.test.js.map +0 -1
- package/dist/src/core/tokenLimits.test.d.ts +0 -6
- package/dist/src/core/tokenLimits.test.js +0 -66
- package/dist/src/core/tokenLimits.test.js.map +0 -1
- package/dist/src/core/turn.test.d.ts +0 -6
- package/dist/src/core/turn.test.js +0 -366
- package/dist/src/core/turn.test.js.map +0 -1
- package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +0 -6
- package/dist/src/hooks/tool-render-suppression-hook.test.js +0 -59
- package/dist/src/hooks/tool-render-suppression-hook.test.js.map +0 -1
- package/dist/src/ide/ide-installer.test.d.ts +0 -6
- package/dist/src/ide/ide-installer.test.js +0 -55
- package/dist/src/ide/ide-installer.test.js.map +0 -1
- package/dist/src/ide/ideContext.test.d.ts +0 -6
- package/dist/src/ide/ideContext.test.js +0 -265
- package/dist/src/ide/ideContext.test.js.map +0 -1
- package/dist/src/index.test.d.ts +0 -6
- package/dist/src/index.test.js +0 -12
- package/dist/src/index.test.js.map +0 -1
- package/dist/src/integration-tests/oauth-integration.spec.d.ts +0 -6
- package/dist/src/integration-tests/oauth-integration.spec.js +0 -518
- package/dist/src/integration-tests/oauth-integration.spec.js.map +0 -1
- package/dist/src/integration-tests/oauth-simple-test.spec.d.ts +0 -1
- package/dist/src/integration-tests/oauth-simple-test.spec.js +0 -88
- package/dist/src/integration-tests/oauth-simple-test.spec.js.map +0 -1
- package/dist/src/integration-tests/todo-system.test.d.ts +0 -6
- package/dist/src/integration-tests/todo-system.test.js +0 -46
- package/dist/src/integration-tests/todo-system.test.js.map +0 -1
- package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
- package/dist/src/mcp/google-auth-provider.test.js +0 -54
- package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
- package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
- package/dist/src/mcp/oauth-provider.test.js +0 -602
- package/dist/src/mcp/oauth-provider.test.js.map +0 -1
- package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
- package/dist/src/mcp/oauth-token-storage.test.js +0 -205
- package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
- package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
- package/dist/src/mcp/oauth-utils.test.js +0 -144
- package/dist/src/mcp/oauth-utils.test.js.map +0 -1
- package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +0 -1
- package/dist/src/parsers/TextToolCallParser.multibyte.test.js +0 -42
- package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +0 -1
- package/dist/src/parsers/TextToolCallParser.test.d.ts +0 -1
- package/dist/src/parsers/TextToolCallParser.test.js +0 -225
- package/dist/src/parsers/TextToolCallParser.test.js.map +0 -1
- package/dist/src/prompt-config/TemplateEngine.test.d.ts +0 -1
- package/dist/src/prompt-config/TemplateEngine.test.js +0 -494
- package/dist/src/prompt-config/TemplateEngine.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-cache.test.d.ts +0 -6
- package/dist/src/prompt-config/prompt-cache.test.js +0 -437
- package/dist/src/prompt-config/prompt-cache.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-installer.test.d.ts +0 -7
- package/dist/src/prompt-config/prompt-installer.test.js +0 -503
- package/dist/src/prompt-config/prompt-installer.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-loader.test.d.ts +0 -5
- package/dist/src/prompt-config/prompt-loader.test.js +0 -413
- package/dist/src/prompt-config/prompt-loader.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-resolver.test.d.ts +0 -1
- package/dist/src/prompt-config/prompt-resolver.test.js +0 -529
- package/dist/src/prompt-config/prompt-resolver.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-service.test.d.ts +0 -1
- package/dist/src/prompt-config/prompt-service.test.js +0 -811
- package/dist/src/prompt-config/prompt-service.test.js.map +0 -1
- package/dist/src/providers/BaseProvider.test.d.ts +0 -6
- package/dist/src/providers/BaseProvider.test.js +0 -472
- package/dist/src/providers/BaseProvider.test.js.map +0 -1
- package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +0 -6
- package/dist/src/providers/ProviderManager.gemini-switch.test.js +0 -57
- package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +0 -1
- package/dist/src/providers/ProviderManager.test.d.ts +0 -6
- package/dist/src/providers/ProviderManager.test.js +0 -284
- package/dist/src/providers/ProviderManager.test.js.map +0 -1
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +0 -6
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +0 -273
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +0 -48
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.test.js +0 -487
- package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +0 -1
- package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +0 -6
- package/dist/src/providers/gemini/GeminiProvider.integration.test.js +0 -126
- package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +0 -1
- package/dist/src/providers/gemini/GeminiProvider.test.d.ts +0 -6
- package/dist/src/providers/gemini/GeminiProvider.test.js +0 -136
- package/dist/src/providers/gemini/GeminiProvider.test.js.map +0 -1
- package/dist/src/providers/integration/multi-provider.integration.test.d.ts +0 -6
- package/dist/src/providers/integration/multi-provider.integration.test.js +0 -308
- package/dist/src/providers/integration/multi-provider.integration.test.js.map +0 -1
- package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +0 -1
- package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +0 -97
- package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +0 -1
- package/dist/src/providers/openai/ConversationCache.test.d.ts +0 -1
- package/dist/src/providers/openai/ConversationCache.test.js +0 -113
- package/dist/src/providers/openai/ConversationCache.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +0 -189
- package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +0 -6
- package/dist/src/providers/openai/OpenAIProvider.integration.test.js +0 -125
- package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responses.test.js +0 -350
- package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +0 -213
- package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +0 -59
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +0 -6
- package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +0 -105
- package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.switch.test.js +0 -256
- package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.test.d.ts +0 -16
- package/dist/src/providers/openai/OpenAIProvider.test.js +0 -621
- package/dist/src/providers/openai/OpenAIProvider.test.js.map +0 -1
- package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +0 -1
- package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +0 -210
- package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +0 -1
- package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +0 -1
- package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +0 -65
- package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +0 -129
- package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.test.js +0 -406
- package/dist/src/providers/openai/buildResponsesRequest.test.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +0 -50
- package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +0 -1
- package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +0 -1
- package/dist/src/providers/openai/estimateRemoteTokens.test.js +0 -125
- package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +0 -1
- package/dist/src/providers/openai/openai-oauth.spec.d.ts +0 -16
- package/dist/src/providers/openai/openai-oauth.spec.js +0 -544
- package/dist/src/providers/openai/openai-oauth.spec.js.map +0 -1
- package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +0 -1
- package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +0 -192
- package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +0 -1
- package/dist/src/providers/openai/parseResponsesStream.test.d.ts +0 -1
- package/dist/src/providers/openai/parseResponsesStream.test.js +0 -151
- package/dist/src/providers/openai/parseResponsesStream.test.js.map +0 -1
- package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
- package/dist/src/services/fileDiscoveryService.test.js +0 -143
- package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
- package/dist/src/services/gitService.test.d.ts +0 -6
- package/dist/src/services/gitService.test.js +0 -209
- package/dist/src/services/gitService.test.js.map +0 -1
- package/dist/src/services/loopDetectionService.test.d.ts +0 -6
- package/dist/src/services/loopDetectionService.test.js +0 -484
- package/dist/src/services/loopDetectionService.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.multibyte.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.multibyte.test.js +0 -72
- package/dist/src/services/shellExecutionService.multibyte.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.test.js +0 -272
- package/dist/src/services/shellExecutionService.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.windows.multibyte.test.js +0 -98
- package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.windows.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.windows.test.js +0 -79
- package/dist/src/services/shellExecutionService.windows.test.js.map +0 -1
- package/dist/src/services/tool-call-tracker-service.test.d.ts +0 -6
- package/dist/src/services/tool-call-tracker-service.test.js +0 -99
- package/dist/src/services/tool-call-tracker-service.test.js.map +0 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -6
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -187
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +0 -1
- package/dist/src/telemetry/loggers.test.d.ts +0 -6
- package/dist/src/telemetry/loggers.test.js +0 -573
- package/dist/src/telemetry/loggers.test.js.map +0 -1
- package/dist/src/telemetry/metrics.test.d.ts +0 -6
- package/dist/src/telemetry/metrics.test.js +0 -212
- package/dist/src/telemetry/metrics.test.js.map +0 -1
- package/dist/src/telemetry/telemetry.test.d.ts +0 -6
- package/dist/src/telemetry/telemetry.test.js +0 -54
- package/dist/src/telemetry/telemetry.test.js.map +0 -1
- package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
- package/dist/src/telemetry/uiTelemetry.test.js +0 -518
- package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
- package/dist/src/tools/ToolFormatter.test.d.ts +0 -16
- package/dist/src/tools/ToolFormatter.test.js +0 -349
- package/dist/src/tools/ToolFormatter.test.js.map +0 -1
- package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +0 -1
- package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +0 -241
- package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +0 -1
- package/dist/src/tools/diffOptions.test.d.ts +0 -6
- package/dist/src/tools/diffOptions.test.js +0 -119
- package/dist/src/tools/diffOptions.test.js.map +0 -1
- package/dist/src/tools/edit.test.d.ts +0 -6
- package/dist/src/tools/edit.test.js +0 -689
- package/dist/src/tools/edit.test.js.map +0 -1
- package/dist/src/tools/glob.test.d.ts +0 -6
- package/dist/src/tools/glob.test.js +0 -332
- package/dist/src/tools/glob.test.js.map +0 -1
- package/dist/src/tools/grep.test.d.ts +0 -6
- package/dist/src/tools/grep.test.js +0 -272
- package/dist/src/tools/grep.test.js.map +0 -1
- package/dist/src/tools/ls.test.d.ts +0 -6
- package/dist/src/tools/ls.test.js +0 -357
- package/dist/src/tools/ls.test.js.map +0 -1
- package/dist/src/tools/mcp-client.test.d.ts +0 -6
- package/dist/src/tools/mcp-client.test.js +0 -617
- package/dist/src/tools/mcp-client.test.js.map +0 -1
- package/dist/src/tools/mcp-tool.test.d.ts +0 -6
- package/dist/src/tools/mcp-tool.test.js +0 -501
- package/dist/src/tools/mcp-tool.test.js.map +0 -1
- package/dist/src/tools/memoryTool.test.d.ts +0 -6
- package/dist/src/tools/memoryTool.test.js +0 -266
- package/dist/src/tools/memoryTool.test.js.map +0 -1
- package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
- package/dist/src/tools/modifiable-tool.test.js +0 -193
- package/dist/src/tools/modifiable-tool.test.js.map +0 -1
- package/dist/src/tools/read-file.test.d.ts +0 -6
- package/dist/src/tools/read-file.test.js +0 -319
- package/dist/src/tools/read-file.test.js.map +0 -1
- package/dist/src/tools/read-many-files.test.d.ts +0 -6
- package/dist/src/tools/read-many-files.test.js +0 -644
- package/dist/src/tools/read-many-files.test.js.map +0 -1
- package/dist/src/tools/shell.multibyte.test.d.ts +0 -6
- package/dist/src/tools/shell.multibyte.test.js +0 -75
- package/dist/src/tools/shell.multibyte.test.js.map +0 -1
- package/dist/src/tools/shell.test.d.ts +0 -6
- package/dist/src/tools/shell.test.js +0 -367
- package/dist/src/tools/shell.test.js.map +0 -1
- package/dist/src/tools/todo-pause.spec.d.ts +0 -6
- package/dist/src/tools/todo-pause.spec.js +0 -287
- package/dist/src/tools/todo-pause.spec.js.map +0 -1
- package/dist/src/tools/todo-read.test.d.ts +0 -6
- package/dist/src/tools/todo-read.test.js +0 -162
- package/dist/src/tools/todo-read.test.js.map +0 -1
- package/dist/src/tools/todo-schemas.test.d.ts +0 -6
- package/dist/src/tools/todo-schemas.test.js +0 -341
- package/dist/src/tools/todo-schemas.test.js.map +0 -1
- package/dist/src/tools/todo-store.test.d.ts +0 -6
- package/dist/src/tools/todo-store.test.js +0 -169
- package/dist/src/tools/todo-store.test.js.map +0 -1
- package/dist/src/tools/todo-write.test.d.ts +0 -6
- package/dist/src/tools/todo-write.test.js +0 -226
- package/dist/src/tools/todo-write.test.js.map +0 -1
- package/dist/src/tools/tool-registry.test.d.ts +0 -6
- package/dist/src/tools/tool-registry.test.js +0 -468
- package/dist/src/tools/tool-registry.test.js.map +0 -1
- package/dist/src/tools/tools.test.d.ts +0 -6
- package/dist/src/tools/tools.test.js +0 -117
- package/dist/src/tools/tools.test.js.map +0 -1
- package/dist/src/tools/web-fetch.integration.test.d.ts +0 -6
- package/dist/src/tools/web-fetch.integration.test.js +0 -532
- package/dist/src/tools/web-fetch.integration.test.js.map +0 -1
- package/dist/src/tools/web-search.test.d.ts +0 -6
- package/dist/src/tools/web-search.test.js +0 -230
- package/dist/src/tools/web-search.test.js.map +0 -1
- package/dist/src/tools/write-file.test.d.ts +0 -6
- package/dist/src/tools/write-file.test.js +0 -465
- package/dist/src/tools/write-file.test.js.map +0 -1
- package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
- package/dist/src/utils/bfsFileSearch.test.js +0 -191
- package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
- package/dist/src/utils/editCorrector.test.d.ts +0 -6
- package/dist/src/utils/editCorrector.test.js +0 -564
- package/dist/src/utils/editCorrector.test.js.map +0 -1
- package/dist/src/utils/editor.test.d.ts +0 -6
- package/dist/src/utils/editor.test.js +0 -445
- package/dist/src/utils/editor.test.js.map +0 -1
- package/dist/src/utils/environmentContext.test.d.ts +0 -6
- package/dist/src/utils/environmentContext.test.js +0 -139
- package/dist/src/utils/environmentContext.test.js.map +0 -1
- package/dist/src/utils/errorReporting.test.d.ts +0 -6
- package/dist/src/utils/errorReporting.test.js +0 -130
- package/dist/src/utils/errorReporting.test.js.map +0 -1
- package/dist/src/utils/fileUtils.test.d.ts +0 -6
- package/dist/src/utils/fileUtils.test.js +0 -363
- package/dist/src/utils/fileUtils.test.js.map +0 -1
- package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
- package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
- package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
- package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
- package/dist/src/utils/filesearch/fileSearch.test.js +0 -654
- package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
- package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
- package/dist/src/utils/filesearch/ignore.test.js +0 -57
- package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
- package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
- package/dist/src/utils/filesearch/result-cache.test.js +0 -47
- package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
- package/dist/src/utils/flashFallback.integration.test.d.ts +0 -6
- package/dist/src/utils/flashFallback.integration.test.js +0 -120
- package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
- package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
- package/dist/src/utils/generateContentResponseUtilities.test.js +0 -273
- package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
- package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
- package/dist/src/utils/getFolderStructure.test.js +0 -282
- package/dist/src/utils/getFolderStructure.test.js.map +0 -1
- package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
- package/dist/src/utils/gitIgnoreParser.test.js +0 -154
- package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
- package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
- package/dist/src/utils/memoryDiscovery.test.js +0 -181
- package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
- package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
- package/dist/src/utils/memoryImportProcessor.test.js +0 -715
- package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
- package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
- package/dist/src/utils/nextSpeakerChecker.test.js +0 -172
- package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
- package/dist/src/utils/partUtils.test.d.ts +0 -6
- package/dist/src/utils/partUtils.test.js +0 -130
- package/dist/src/utils/partUtils.test.js.map +0 -1
- package/dist/src/utils/paths.test.d.ts +0 -6
- package/dist/src/utils/paths.test.js +0 -153
- package/dist/src/utils/paths.test.js.map +0 -1
- package/dist/src/utils/retry.test.d.ts +0 -6
- package/dist/src/utils/retry.test.js +0 -322
- package/dist/src/utils/retry.test.js.map +0 -1
- package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
- package/dist/src/utils/safeJsonStringify.test.js +0 -61
- package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
- package/dist/src/utils/sanitization.test.d.ts +0 -6
- package/dist/src/utils/sanitization.test.js +0 -81
- package/dist/src/utils/sanitization.test.js.map +0 -1
- package/dist/src/utils/schemaValidator.test.d.ts +0 -6
- package/dist/src/utils/schemaValidator.test.js +0 -146
- package/dist/src/utils/schemaValidator.test.js.map +0 -1
- package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
- package/dist/src/utils/secure-browser-launcher.test.js +0 -149
- package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
- package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +0 -6
- package/dist/src/utils/shell-utils.shellReplacement.test.js +0 -149
- package/dist/src/utils/shell-utils.shellReplacement.test.js.map +0 -1
- package/dist/src/utils/shell-utils.test.d.ts +0 -6
- package/dist/src/utils/shell-utils.test.js +0 -200
- package/dist/src/utils/shell-utils.test.js.map +0 -1
- package/dist/src/utils/summarizer.test.d.ts +0 -6
- package/dist/src/utils/summarizer.test.js +0 -131
- package/dist/src/utils/summarizer.test.js.map +0 -1
- package/dist/src/utils/systemEncoding.test.d.ts +0 -6
- package/dist/src/utils/systemEncoding.test.js +0 -368
- package/dist/src/utils/systemEncoding.test.js.map +0 -1
- package/dist/src/utils/toolOutputLimiter.test.d.ts +0 -6
- package/dist/src/utils/toolOutputLimiter.test.js +0 -164
- package/dist/src/utils/toolOutputLimiter.test.js.map +0 -1
- package/dist/src/utils/unicodeUtils.test.d.ts +0 -6
- package/dist/src/utils/unicodeUtils.test.js +0 -120
- package/dist/src/utils/unicodeUtils.test.js.map +0 -1
- package/dist/src/utils/user_account.test.d.ts +0 -6
- package/dist/src/utils/user_account.test.js +0 -153
- package/dist/src/utils/user_account.test.js.map +0 -1
- package/dist/src/utils/user_id.test.d.ts +0 -6
- package/dist/src/utils/user_id.test.js +0 -21
- package/dist/src/utils/user_id.test.js.map +0 -1
- package/dist/src/utils/workspaceContext.test.d.ts +0 -6
- package/dist/src/utils/workspaceContext.test.js +0 -209
- package/dist/src/utils/workspaceContext.test.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const RESPONSES_API_MODELS: readonly ["gpt-4o", "gpt-4o-mini", "gpt-4o-realtime", "gpt-4-turbo", "gpt-4-turbo-preview", "o3-pro", "o3", "o3-mini", "o1", "o1-mini", "gpt-4.1"];
|
|
1
|
+
export declare const RESPONSES_API_MODELS: readonly ["gpt-5", "gpt-4o", "gpt-4o-mini", "gpt-4o-realtime", "gpt-4-turbo", "gpt-4-turbo-preview", "o3-pro", "o3", "o3-mini", "o1", "o1-mini", "gpt-4.1"];
|
|
2
2
|
export type ResponsesApiModel = (typeof RESPONSES_API_MODELS)[number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RESPONSES_API_MODELS.js","sourceRoot":"","sources":["../../../../src/providers/openai/RESPONSES_API_MODELS.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,aAAa;IACb,qBAAqB;IACrB,QAAQ;IACR,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,SAAS;IACT,SAAS;CACD,CAAC"}
|
|
1
|
+
{"version":3,"file":"RESPONSES_API_MODELS.js","sourceRoot":"","sources":["../../../../src/providers/openai/RESPONSES_API_MODELS.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO;IACP,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,aAAa;IACb,qBAAqB;IACrB,QAAQ;IACR,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,SAAS;IACT,SAAS;CACD,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { IMessage } from '../../index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Interface for cancelled tool information
|
|
9
|
+
*/
|
|
10
|
+
export interface CancelledToolInfo {
|
|
11
|
+
toolCallId: string;
|
|
12
|
+
toolName?: string;
|
|
13
|
+
timestamp?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Creates synthetic tool responses for cancelled tool calls to maintain
|
|
17
|
+
* API compliance with OpenAI's Responses format requirements.
|
|
18
|
+
*
|
|
19
|
+
* The OpenAI API requires that every tool_call in an assistant message
|
|
20
|
+
* must have a corresponding tool message with matching tool_call_id.
|
|
21
|
+
* When tools are cancelled (e.g., via ESC key), we need to create
|
|
22
|
+
* synthetic responses to satisfy this requirement.
|
|
23
|
+
*/
|
|
24
|
+
export declare class SyntheticToolResponseHandler {
|
|
25
|
+
/**
|
|
26
|
+
* Creates synthetic tool responses for cancelled tools
|
|
27
|
+
* @param cancelledTools Array of cancelled tool information
|
|
28
|
+
* @returns Array of synthetic tool response messages
|
|
29
|
+
*/
|
|
30
|
+
static createSyntheticResponses(cancelledTools: CancelledToolInfo[]): IMessage[];
|
|
31
|
+
/**
|
|
32
|
+
* Identifies tool calls that need synthetic responses by comparing
|
|
33
|
+
* assistant messages with tool_calls against existing tool responses
|
|
34
|
+
* @param messages The conversation history
|
|
35
|
+
* @returns Array of tool call IDs that need synthetic responses
|
|
36
|
+
*/
|
|
37
|
+
static identifyMissingToolResponses(messages: IMessage[]): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Patches a message history to include synthetic responses for any
|
|
40
|
+
* tool calls that don't have corresponding tool responses
|
|
41
|
+
* @param messages The original message history
|
|
42
|
+
* @returns Patched message history with synthetic responses added
|
|
43
|
+
*/
|
|
44
|
+
static patchMessageHistory(messages: IMessage[]): IMessage[];
|
|
45
|
+
/**
|
|
46
|
+
* Adds a user-facing cancellation notice to the message history
|
|
47
|
+
* @param messages The message history
|
|
48
|
+
* @param cancelledCount Number of tools that were cancelled
|
|
49
|
+
* @returns Message history with cancellation notice added
|
|
50
|
+
*/
|
|
51
|
+
static addCancellationNotice(messages: IMessage[], cancelledCount: number): IMessage[];
|
|
52
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ContentGeneratorRole } from '../../index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Creates synthetic tool responses for cancelled tool calls to maintain
|
|
9
|
+
* API compliance with OpenAI's Responses format requirements.
|
|
10
|
+
*
|
|
11
|
+
* The OpenAI API requires that every tool_call in an assistant message
|
|
12
|
+
* must have a corresponding tool message with matching tool_call_id.
|
|
13
|
+
* When tools are cancelled (e.g., via ESC key), we need to create
|
|
14
|
+
* synthetic responses to satisfy this requirement.
|
|
15
|
+
*/
|
|
16
|
+
export class SyntheticToolResponseHandler {
|
|
17
|
+
/**
|
|
18
|
+
* Creates synthetic tool responses for cancelled tools
|
|
19
|
+
* @param cancelledTools Array of cancelled tool information
|
|
20
|
+
* @returns Array of synthetic tool response messages
|
|
21
|
+
*/
|
|
22
|
+
static createSyntheticResponses(cancelledTools) {
|
|
23
|
+
return cancelledTools.map((tool) => ({
|
|
24
|
+
role: 'tool',
|
|
25
|
+
tool_call_id: tool.toolCallId,
|
|
26
|
+
content: JSON.stringify({
|
|
27
|
+
status: 'cancelled',
|
|
28
|
+
message: 'Tool execution cancelled by user',
|
|
29
|
+
error_type: 'user_interruption',
|
|
30
|
+
tool_name: tool.toolName,
|
|
31
|
+
timestamp: tool.timestamp || new Date().toISOString(),
|
|
32
|
+
}),
|
|
33
|
+
// Mark as synthetic for debugging/filtering
|
|
34
|
+
_synthetic: true,
|
|
35
|
+
_cancelled: true,
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Identifies tool calls that need synthetic responses by comparing
|
|
40
|
+
* assistant messages with tool_calls against existing tool responses
|
|
41
|
+
* @param messages The conversation history
|
|
42
|
+
* @returns Array of tool call IDs that need synthetic responses
|
|
43
|
+
*/
|
|
44
|
+
static identifyMissingToolResponses(messages) {
|
|
45
|
+
const toolCallIds = new Set();
|
|
46
|
+
const toolResponseIds = new Set();
|
|
47
|
+
// Collect all tool call IDs from assistant messages
|
|
48
|
+
messages.forEach((msg) => {
|
|
49
|
+
if (msg.role === 'assistant' && msg.tool_calls) {
|
|
50
|
+
msg.tool_calls.forEach((toolCall) => {
|
|
51
|
+
if (toolCall.id) {
|
|
52
|
+
toolCallIds.add(toolCall.id);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
// Collect all tool response IDs
|
|
58
|
+
messages.forEach((msg) => {
|
|
59
|
+
if (msg.role === 'tool' && msg.tool_call_id) {
|
|
60
|
+
toolResponseIds.add(msg.tool_call_id);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
// Find tool calls without responses
|
|
64
|
+
const missingIds = [];
|
|
65
|
+
toolCallIds.forEach((id) => {
|
|
66
|
+
if (!toolResponseIds.has(id)) {
|
|
67
|
+
missingIds.push(id);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return missingIds;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Patches a message history to include synthetic responses for any
|
|
74
|
+
* tool calls that don't have corresponding tool responses
|
|
75
|
+
* @param messages The original message history
|
|
76
|
+
* @returns Patched message history with synthetic responses added
|
|
77
|
+
*/
|
|
78
|
+
static patchMessageHistory(messages) {
|
|
79
|
+
const missingToolIds = this.identifyMissingToolResponses(messages);
|
|
80
|
+
if (missingToolIds.length === 0) {
|
|
81
|
+
return messages;
|
|
82
|
+
}
|
|
83
|
+
// Find the last assistant message with tool calls
|
|
84
|
+
let lastAssistantIndex = -1;
|
|
85
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
86
|
+
if (messages[i].role === 'assistant' && messages[i].tool_calls) {
|
|
87
|
+
lastAssistantIndex = i;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (lastAssistantIndex === -1) {
|
|
92
|
+
return messages;
|
|
93
|
+
}
|
|
94
|
+
// Extract tool names from the assistant message
|
|
95
|
+
const toolNameMap = new Map();
|
|
96
|
+
const assistantMsg = messages[lastAssistantIndex];
|
|
97
|
+
if (assistantMsg.tool_calls) {
|
|
98
|
+
assistantMsg.tool_calls.forEach((toolCall) => {
|
|
99
|
+
if (toolCall.id && toolCall.function?.name) {
|
|
100
|
+
toolNameMap.set(toolCall.id, toolCall.function.name);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
// Create synthetic responses with tool names
|
|
105
|
+
const cancelledTools = missingToolIds.map((id) => ({
|
|
106
|
+
toolCallId: id,
|
|
107
|
+
toolName: toolNameMap.get(id),
|
|
108
|
+
}));
|
|
109
|
+
const syntheticResponses = this.createSyntheticResponses(cancelledTools);
|
|
110
|
+
// Insert synthetic responses right after the assistant message
|
|
111
|
+
const patchedMessages = [...messages];
|
|
112
|
+
patchedMessages.splice(lastAssistantIndex + 1, 0, ...syntheticResponses);
|
|
113
|
+
return patchedMessages;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Adds a user-facing cancellation notice to the message history
|
|
117
|
+
* @param messages The message history
|
|
118
|
+
* @param cancelledCount Number of tools that were cancelled
|
|
119
|
+
* @returns Message history with cancellation notice added
|
|
120
|
+
*/
|
|
121
|
+
static addCancellationNotice(messages, cancelledCount) {
|
|
122
|
+
const notice = {
|
|
123
|
+
role: ContentGeneratorRole.ASSISTANT,
|
|
124
|
+
content: `${cancelledCount} tool execution${cancelledCount > 1 ? 's were' : ' was'} cancelled. You can retry specific tools or continue with the conversation.`,
|
|
125
|
+
};
|
|
126
|
+
return [...messages, notice];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=syntheticToolResponses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntheticToolResponses.js","sourceRoot":"","sources":["../../../../src/providers/openai/syntheticToolResponses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { ISettingsService, GlobalSettings, ProviderSettings, SettingsChangeEvent, EventListener, EventUnsubscribe, DiagnosticsInfo } from './types.js';
|
|
3
|
+
export declare class SettingsService extends EventEmitter implements ISettingsService {
|
|
4
|
+
private settings;
|
|
5
|
+
private eventEmitter;
|
|
6
|
+
constructor();
|
|
7
|
+
get(key: string): unknown;
|
|
8
|
+
set(key: string, value: unknown): void;
|
|
9
|
+
getProviderSettings(provider: string): Record<string, unknown>;
|
|
10
|
+
setProviderSetting(provider: string, key: string, value: unknown): void;
|
|
11
|
+
clear(): void;
|
|
12
|
+
getAllGlobalSettings(): Record<string, unknown>;
|
|
13
|
+
private getNestedValue;
|
|
14
|
+
private setNestedValue;
|
|
15
|
+
on(event: 'settings_changed', listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
|
|
16
|
+
on(eventName: string | symbol, listener: (...args: unknown[]) => void): this;
|
|
17
|
+
off(event: string, listener: (...args: unknown[]) => void): this;
|
|
18
|
+
getSettings(): Promise<GlobalSettings>;
|
|
19
|
+
getSettings(provider: string): Promise<ProviderSettings>;
|
|
20
|
+
updateSettings(changes: Partial<GlobalSettings>): Promise<void>;
|
|
21
|
+
updateSettings(provider: string, changes: Partial<ProviderSettings>): Promise<void>;
|
|
22
|
+
switchProvider(newProvider: string): Promise<void>;
|
|
23
|
+
exportForProfile(): Promise<{
|
|
24
|
+
defaultProvider: string;
|
|
25
|
+
providers: Record<string, ProviderSettings>;
|
|
26
|
+
}>;
|
|
27
|
+
importFromProfile(profileData: unknown): Promise<void>;
|
|
28
|
+
setCurrentProfileName(profileName: string | null): void;
|
|
29
|
+
getCurrentProfileName(): string | null;
|
|
30
|
+
getDiagnosticsData(): Promise<DiagnosticsInfo>;
|
|
31
|
+
onSettingsChanged(listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
|
|
32
|
+
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
export class SettingsService extends EventEmitter {
|
|
3
|
+
settings;
|
|
4
|
+
eventEmitter;
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
// Lines 05-14: Initialize in-memory only, no repository parameter
|
|
8
|
+
this.settings = {
|
|
9
|
+
providers: {},
|
|
10
|
+
global: {},
|
|
11
|
+
activeProvider: null,
|
|
12
|
+
};
|
|
13
|
+
this.eventEmitter = new EventEmitter();
|
|
14
|
+
}
|
|
15
|
+
// Lines 16-23: Direct synchronous access to settings object
|
|
16
|
+
get(key) {
|
|
17
|
+
if (key.includes('.')) {
|
|
18
|
+
return this.getNestedValue(this.settings, key);
|
|
19
|
+
}
|
|
20
|
+
return this.settings.global[key];
|
|
21
|
+
}
|
|
22
|
+
// Lines 25-38: Store old value, update in-memory object, emit change event, NO file writes
|
|
23
|
+
set(key, value) {
|
|
24
|
+
const oldValue = this.get(key);
|
|
25
|
+
if (key.includes('.')) {
|
|
26
|
+
this.setNestedValue(this.settings, key, value);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.settings.global[key] = value;
|
|
30
|
+
}
|
|
31
|
+
this.eventEmitter.emit('change', {
|
|
32
|
+
key,
|
|
33
|
+
oldValue,
|
|
34
|
+
newValue: value,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// Lines 40-54: Provider-specific methods - direct manipulation of settings.providers
|
|
38
|
+
getProviderSettings(provider) {
|
|
39
|
+
return this.settings.providers[provider] || {};
|
|
40
|
+
}
|
|
41
|
+
setProviderSetting(provider, key, value) {
|
|
42
|
+
if (!this.settings.providers[provider]) {
|
|
43
|
+
this.settings.providers[provider] = {};
|
|
44
|
+
}
|
|
45
|
+
const oldValue = this.settings.providers[provider][key];
|
|
46
|
+
this.settings.providers[provider][key] = value;
|
|
47
|
+
this.eventEmitter.emit('provider-change', {
|
|
48
|
+
provider,
|
|
49
|
+
key,
|
|
50
|
+
oldValue,
|
|
51
|
+
newValue: value,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
// Lines 56-64: Clear method - reset to empty state, emit cleared event
|
|
55
|
+
clear() {
|
|
56
|
+
this.settings = {
|
|
57
|
+
providers: {},
|
|
58
|
+
global: {},
|
|
59
|
+
activeProvider: null,
|
|
60
|
+
};
|
|
61
|
+
this.eventEmitter.emit('cleared');
|
|
62
|
+
}
|
|
63
|
+
// Public method to get all global settings
|
|
64
|
+
getAllGlobalSettings() {
|
|
65
|
+
return { ...this.settings.global };
|
|
66
|
+
}
|
|
67
|
+
// Helper methods for nested key support
|
|
68
|
+
getNestedValue(obj, key) {
|
|
69
|
+
const keys = key.split('.');
|
|
70
|
+
let current = obj;
|
|
71
|
+
for (const k of keys) {
|
|
72
|
+
if (current && typeof current === 'object' && k in current) {
|
|
73
|
+
current = current[k];
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return current;
|
|
80
|
+
}
|
|
81
|
+
setNestedValue(obj, key, value) {
|
|
82
|
+
const keys = key.split('.');
|
|
83
|
+
let current = obj;
|
|
84
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
85
|
+
const k = keys[i];
|
|
86
|
+
if (!current[k] || typeof current[k] !== 'object') {
|
|
87
|
+
current[k] = {};
|
|
88
|
+
}
|
|
89
|
+
current = current[k];
|
|
90
|
+
}
|
|
91
|
+
current[keys[keys.length - 1]] = value;
|
|
92
|
+
}
|
|
93
|
+
on(event, listener) {
|
|
94
|
+
if (event === 'settings_changed') {
|
|
95
|
+
return this.onSettingsChanged(listener);
|
|
96
|
+
}
|
|
97
|
+
this.eventEmitter.on(event, listener);
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
off(event, listener) {
|
|
101
|
+
this.eventEmitter.off(event, listener);
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
getSettings(provider) {
|
|
105
|
+
if (provider === undefined) {
|
|
106
|
+
return Promise.resolve({
|
|
107
|
+
providers: this.settings.providers,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return Promise.resolve(this.getProviderSettings(provider));
|
|
111
|
+
}
|
|
112
|
+
updateSettings(providerOrChanges, changes) {
|
|
113
|
+
if (typeof providerOrChanges === 'string' && changes) {
|
|
114
|
+
// Provider-specific update
|
|
115
|
+
for (const [key, value] of Object.entries(changes)) {
|
|
116
|
+
this.setProviderSetting(providerOrChanges, key, value);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else if (providerOrChanges && typeof providerOrChanges === 'object') {
|
|
120
|
+
// Global update
|
|
121
|
+
for (const [key, value] of Object.entries(providerOrChanges)) {
|
|
122
|
+
this.set(key, value);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return Promise.resolve();
|
|
126
|
+
}
|
|
127
|
+
switchProvider(newProvider) {
|
|
128
|
+
this.set('activeProvider', newProvider);
|
|
129
|
+
return Promise.resolve();
|
|
130
|
+
}
|
|
131
|
+
exportForProfile() {
|
|
132
|
+
// Get activeProvider from global settings first, then fallback to direct field or default
|
|
133
|
+
const activeProvider = this.settings.global.activeProvider ||
|
|
134
|
+
this.settings.activeProvider ||
|
|
135
|
+
'openai';
|
|
136
|
+
return Promise.resolve({
|
|
137
|
+
defaultProvider: activeProvider,
|
|
138
|
+
providers: this.settings.providers,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
importFromProfile(profileData) {
|
|
142
|
+
// Don't clear ALL settings - just clear provider settings
|
|
143
|
+
// Keep global settings like activeProvider if it's already set correctly
|
|
144
|
+
this.settings.providers = {};
|
|
145
|
+
// Import profile data
|
|
146
|
+
if (profileData && typeof profileData === 'object') {
|
|
147
|
+
const data = profileData;
|
|
148
|
+
// Set the active provider
|
|
149
|
+
if (data.defaultProvider) {
|
|
150
|
+
this.set('activeProvider', data.defaultProvider);
|
|
151
|
+
this.settings.activeProvider = data.defaultProvider;
|
|
152
|
+
}
|
|
153
|
+
// Import provider settings
|
|
154
|
+
if (data.providers) {
|
|
155
|
+
for (const [provider, settings] of Object.entries(data.providers)) {
|
|
156
|
+
if (settings && typeof settings === 'object') {
|
|
157
|
+
for (const [key, value] of Object.entries(settings)) {
|
|
158
|
+
this.setProviderSetting(provider, key, value);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return Promise.resolve();
|
|
165
|
+
}
|
|
166
|
+
setCurrentProfileName(profileName) {
|
|
167
|
+
this.set('currentProfile', profileName);
|
|
168
|
+
}
|
|
169
|
+
getCurrentProfileName() {
|
|
170
|
+
return this.get('currentProfile');
|
|
171
|
+
}
|
|
172
|
+
getDiagnosticsData() {
|
|
173
|
+
// Get activeProvider from global settings (set via set() method) or fallback to direct field or default
|
|
174
|
+
const activeProvider = this.settings.global.activeProvider ||
|
|
175
|
+
this.settings.activeProvider ||
|
|
176
|
+
'openai';
|
|
177
|
+
const providerSettings = this.getProviderSettings(activeProvider);
|
|
178
|
+
// Get the model from provider settings, fallback to 'unknown' if not set
|
|
179
|
+
const model = providerSettings.model || 'unknown';
|
|
180
|
+
// Extract model parameters from provider settings (exclude 'model' itself)
|
|
181
|
+
const modelParams = {};
|
|
182
|
+
for (const [key, value] of Object.entries(providerSettings)) {
|
|
183
|
+
if (key !== 'model' && value !== undefined) {
|
|
184
|
+
modelParams[key] = value;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return Promise.resolve({
|
|
188
|
+
provider: activeProvider,
|
|
189
|
+
model,
|
|
190
|
+
profile: this.getCurrentProfileName(),
|
|
191
|
+
providerSettings,
|
|
192
|
+
ephemeralSettings: this.settings.global,
|
|
193
|
+
modelParams,
|
|
194
|
+
allSettings: {
|
|
195
|
+
providers: this.settings.providers,
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
onSettingsChanged(listener) {
|
|
200
|
+
this.eventEmitter.on('settings_changed', listener);
|
|
201
|
+
return () => this.eventEmitter.removeListener('settings_changed', listener);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=SettingsService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsService.js","sourceRoot":"","sources":["../../../src/settings/SettingsService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized SettingsService singleton instance
|
|
3
|
+
*/
|
|
4
|
+
import { SettingsService } from './SettingsService.js';
|
|
5
|
+
/**
|
|
6
|
+
* Get or create the global SettingsService singleton instance
|
|
7
|
+
*/
|
|
8
|
+
export declare function getSettingsService(): SettingsService;
|
|
9
|
+
/**
|
|
10
|
+
* Reset the settings service instance (for testing)
|
|
11
|
+
*/
|
|
12
|
+
export declare function resetSettingsService(): void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized SettingsService singleton instance
|
|
3
|
+
*/
|
|
4
|
+
import { SettingsService } from './SettingsService.js';
|
|
5
|
+
let settingsServiceInstance = null;
|
|
6
|
+
/**
|
|
7
|
+
* Get or create the global SettingsService singleton instance
|
|
8
|
+
*/
|
|
9
|
+
export function getSettingsService() {
|
|
10
|
+
if (!settingsServiceInstance) {
|
|
11
|
+
settingsServiceInstance = new SettingsService();
|
|
12
|
+
}
|
|
13
|
+
return settingsServiceInstance;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Reset the settings service instance (for testing)
|
|
17
|
+
*/
|
|
18
|
+
export function resetSettingsService() {
|
|
19
|
+
if (settingsServiceInstance) {
|
|
20
|
+
settingsServiceInstance.clear();
|
|
21
|
+
}
|
|
22
|
+
settingsServiceInstance = null;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=settingsServiceInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settingsServiceInstance.js","sourceRoot":"","sources":["../../../src/settings/settingsServiceInstance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,IAAI,uBAAuB,GAA2B,IAAI,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,uBAAuB,EAAE,CAAC;QAC5B,uBAAuB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IACD,uBAAuB,GAAG,IAAI,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settings service interfaces and types
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Global settings schema matching the specification
|
|
6
|
+
*/
|
|
7
|
+
export interface GlobalSettings {
|
|
8
|
+
defaultProvider?: string;
|
|
9
|
+
providers: Record<string, ProviderSettings>;
|
|
10
|
+
ui?: UISettings | null;
|
|
11
|
+
telemetry?: TelemetrySettings;
|
|
12
|
+
advanced?: AdvancedSettings;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Provider-specific settings
|
|
16
|
+
*/
|
|
17
|
+
export interface ProviderSettings {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
apiKey?: string;
|
|
20
|
+
baseUrl?: string;
|
|
21
|
+
model?: string;
|
|
22
|
+
maxTokens?: number;
|
|
23
|
+
temperature?: number;
|
|
24
|
+
toolFormat?: 'auto' | 'openai' | 'qwen' | 'hermes' | 'xml' | 'anthropic' | 'deepseek' | 'gemma' | 'llama';
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* UI-related settings
|
|
29
|
+
*/
|
|
30
|
+
export interface UISettings {
|
|
31
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
32
|
+
fontSize?: number;
|
|
33
|
+
compactMode?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Telemetry settings
|
|
37
|
+
*/
|
|
38
|
+
export interface TelemetrySettings {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
level?: 'minimal' | 'standard' | 'detailed';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Advanced settings
|
|
44
|
+
*/
|
|
45
|
+
export interface AdvancedSettings {
|
|
46
|
+
debug?: boolean;
|
|
47
|
+
logLevel?: 'error' | 'warn' | 'info' | 'debug';
|
|
48
|
+
maxRetries?: number;
|
|
49
|
+
timeout?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Event emitted when settings change
|
|
53
|
+
*/
|
|
54
|
+
export interface SettingsChangeEvent {
|
|
55
|
+
type: 'settings_changed';
|
|
56
|
+
changes: Partial<GlobalSettings>;
|
|
57
|
+
timestamp: Date;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Event listener function type
|
|
61
|
+
*/
|
|
62
|
+
export type EventListener<T = unknown> = (event: T) => void;
|
|
63
|
+
/**
|
|
64
|
+
* Event unsubscribe function type
|
|
65
|
+
*/
|
|
66
|
+
export type EventUnsubscribe = () => void;
|
|
67
|
+
/**
|
|
68
|
+
* Comprehensive diagnostics information from SettingsService
|
|
69
|
+
*/
|
|
70
|
+
export interface DiagnosticsInfo {
|
|
71
|
+
provider: string;
|
|
72
|
+
model: string;
|
|
73
|
+
profile: string | null;
|
|
74
|
+
providerSettings: ProviderSettings;
|
|
75
|
+
ephemeralSettings: Record<string, unknown>;
|
|
76
|
+
modelParams: Record<string, unknown>;
|
|
77
|
+
allSettings: GlobalSettings;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Settings service interface
|
|
81
|
+
*/
|
|
82
|
+
export interface ISettingsService {
|
|
83
|
+
/**
|
|
84
|
+
* Get current global settings
|
|
85
|
+
*/
|
|
86
|
+
getSettings(): Promise<GlobalSettings>;
|
|
87
|
+
getSettings(provider: string): Promise<ProviderSettings>;
|
|
88
|
+
/**
|
|
89
|
+
* Update global settings (partial update)
|
|
90
|
+
*/
|
|
91
|
+
updateSettings(updates: Partial<GlobalSettings>): Promise<void>;
|
|
92
|
+
updateSettings(provider: string, updates: Partial<ProviderSettings>): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Switch to a different provider and update settings
|
|
95
|
+
*/
|
|
96
|
+
switchProvider(providerId: string): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Subscribe to settings change events
|
|
99
|
+
*/
|
|
100
|
+
onSettingsChanged(listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
|
|
101
|
+
/**
|
|
102
|
+
* Subscribe to settings change events (legacy method)
|
|
103
|
+
*/
|
|
104
|
+
on(event: 'settings_changed', listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
|
|
105
|
+
/**
|
|
106
|
+
* Emit a settings change event
|
|
107
|
+
*/
|
|
108
|
+
emit(event: 'settings_changed', data: SettingsChangeEvent): void;
|
|
109
|
+
/**
|
|
110
|
+
* Get comprehensive diagnostics data from centralized source
|
|
111
|
+
*/
|
|
112
|
+
getDiagnosticsData?(): Promise<DiagnosticsInfo>;
|
|
113
|
+
/**
|
|
114
|
+
* Export current settings for profile storage
|
|
115
|
+
*/
|
|
116
|
+
exportForProfile?(): Promise<{
|
|
117
|
+
defaultProvider: string;
|
|
118
|
+
providers: Record<string, ProviderSettings>;
|
|
119
|
+
ui?: UISettings;
|
|
120
|
+
telemetry?: TelemetrySettings;
|
|
121
|
+
advanced?: AdvancedSettings;
|
|
122
|
+
}>;
|
|
123
|
+
/**
|
|
124
|
+
* Import settings from profile data
|
|
125
|
+
*/
|
|
126
|
+
importFromProfile?(profileData: {
|
|
127
|
+
defaultProvider: string;
|
|
128
|
+
providers: Record<string, ProviderSettings>;
|
|
129
|
+
ui?: UISettings;
|
|
130
|
+
telemetry?: TelemetrySettings;
|
|
131
|
+
advanced?: AdvancedSettings;
|
|
132
|
+
}): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Set the current profile name (for tracking)
|
|
135
|
+
*/
|
|
136
|
+
setCurrentProfileName?(profileName: string | null): void;
|
|
137
|
+
/**
|
|
138
|
+
* Get the current profile name
|
|
139
|
+
*/
|
|
140
|
+
getCurrentProfileName?(): string | null;
|
|
141
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/settings/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|