@vybestack/llxprt-code-core 0.1.19-alpha → 0.1.19-gamma
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 +6 -0
- package/dist/index.js +5 -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/precedence.d.ts +55 -0
- package/dist/src/auth/precedence.js +211 -0
- package/dist/src/auth/precedence.js.map +1 -0
- package/dist/src/auth/qwen-device-flow.d.ts +45 -0
- package/dist/src/auth/qwen-device-flow.js +179 -0
- package/dist/src/auth/qwen-device-flow.js.map +1 -0
- package/dist/src/auth/token-store.d.ts +66 -0
- package/dist/src/auth/token-store.js +151 -0
- package/dist/src/auth/token-store.js.map +1 -0
- package/dist/src/auth/types.d.ts +130 -0
- package/dist/src/auth/types.js +60 -0
- package/dist/src/auth/types.js.map +1 -0
- package/dist/src/code_assist/converter.d.ts +2 -1
- package/dist/src/code_assist/converter.js +1 -1
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +2 -1
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/config/config.d.ts +61 -2
- package/dist/src/config/config.js +134 -4
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/endpoints.d.ts +60 -0
- package/dist/src/config/endpoints.js +126 -0
- package/dist/src/config/endpoints.js.map +1 -0
- 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/client.js +9 -12
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +4 -1
- package/dist/src/core/contentGenerator.js +3 -0
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/logger.d.ts +1 -0
- package/dist/src/core/logger.js +18 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +24 -0
- package/dist/src/core/loggingContentGenerator.js +89 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +17 -0
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/subagent.js +12 -10
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +1 -1
- package/dist/src/ide/ide-client.js +21 -7
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/providers/BaseProvider.d.ts +149 -0
- package/dist/src/providers/BaseProvider.js +315 -0
- package/dist/src/providers/BaseProvider.js.map +1 -0
- package/dist/src/providers/IProvider.d.ts +1 -0
- package/dist/src/providers/IProviderManager.d.ts +5 -0
- package/dist/src/providers/LoggingProviderWrapper.d.ts +54 -0
- package/dist/src/providers/LoggingProviderWrapper.js +350 -0
- package/dist/src/providers/LoggingProviderWrapper.js.map +1 -0
- package/dist/src/providers/ProviderManager.d.ts +20 -1
- package/dist/src/providers/ProviderManager.js +236 -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 +16 -7
- package/dist/src/providers/gemini/GeminiProvider.js +163 -148
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/logging/ProviderContentExtractor.d.ts +27 -0
- package/dist/src/providers/logging/ProviderContentExtractor.js +198 -0
- package/dist/src/providers/logging/ProviderContentExtractor.js.map +1 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.d.ts +43 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.js +98 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.js.map +1 -0
- package/dist/src/providers/openai/OpenAIProvider.d.ts +53 -6
- package/dist/src/providers/openai/OpenAIProvider.js +373 -40
- 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/providers/types.d.ts +47 -0
- package/dist/src/services/git-stats-service.d.ts +32 -0
- package/dist/src/services/git-stats-service.js +22 -0
- package/dist/src/services/git-stats-service.js.map +1 -0
- package/dist/src/services/loopDetectionService.js +10 -6
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +44 -8
- package/dist/src/services/shellExecutionService.js.map +1 -1
- 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/dist/src/storage/ConversationFileWriter.d.ts +16 -0
- package/dist/src/storage/ConversationFileWriter.js +69 -0
- package/dist/src/storage/ConversationFileWriter.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +8 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +56 -3
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +11 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +5 -0
- package/dist/src/telemetry/constants.js +5 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +5 -1
- package/dist/src/telemetry/loggers.js +87 -1
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +2 -1
- package/dist/src/telemetry/metrics.js +7 -1
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
- package/dist/src/telemetry/tool-call-decision.js +29 -0
- package/dist/src/telemetry/tool-call-decision.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +56 -1
- package/dist/src/telemetry/types.js +123 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +2 -1
- package/dist/src/telemetry/uiTelemetry.js +1 -1
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/tools/diffOptions.d.ts +2 -0
- package/dist/src/tools/diffOptions.js +28 -0
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/edit.d.ts +4 -0
- package/dist/src/tools/edit.js +38 -8
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +4 -3
- package/dist/src/tools/mcp-client.js +23 -6
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/read-file.js +34 -2
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/todo-pause.d.ts +22 -0
- package/dist/src/tools/todo-pause.js +93 -0
- package/dist/src/tools/todo-pause.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +4 -0
- package/dist/src/tools/tool-error.js +4 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.js +3 -3
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +7 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +4 -0
- package/dist/src/tools/write-file.js +90 -16
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/types/modelParams.d.ts +2 -0
- package/dist/src/utils/environmentContext.js +1 -1
- package/dist/src/utils/errors.d.ts +3 -0
- package/dist/src/utils/errors.js +6 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +7 -0
- package/dist/src/utils/fileUtils.js +9 -0
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/package.json +4 -2
- package/dist/src/code_assist/converter.test.d.ts +0 -6
- package/dist/src/code_assist/converter.test.js +0 -232
- 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 -131
- 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.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/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 -1322
- 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 -438
- 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 -519
- 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/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/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 -292
- 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 -620
- 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/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 -345
- 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/loggers.test.d.ts +0 -6
- package/dist/src/telemetry/loggers.test.js +0 -572
- 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 -162
- 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 -517
- 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/edit.test.d.ts +0 -6
- package/dist/src/tools/edit.test.js +0 -688
- 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 -575
- 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 -313
- 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 -350
- package/dist/src/tools/shell.test.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 -229
- 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 -464
- 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
|
@@ -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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export declare class ConversationFileWriter {
|
|
7
|
+
private logPath;
|
|
8
|
+
private currentLogFile;
|
|
9
|
+
constructor(logPath?: string);
|
|
10
|
+
private ensureLogDirectory;
|
|
11
|
+
writeEntry(entry: Record<string, unknown>): void;
|
|
12
|
+
writeRequest(provider: string, messages: unknown[], context?: Record<string, unknown>): void;
|
|
13
|
+
writeResponse(provider: string, response: unknown, metadata?: Record<string, unknown>): void;
|
|
14
|
+
writeToolCall(provider: string, toolName: string, context?: Record<string, unknown>): void;
|
|
15
|
+
}
|
|
16
|
+
export declare function getConversationFileWriter(logPath?: string): ConversationFileWriter;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import * as os from 'os';
|
|
9
|
+
export class ConversationFileWriter {
|
|
10
|
+
logPath;
|
|
11
|
+
currentLogFile;
|
|
12
|
+
constructor(logPath) {
|
|
13
|
+
this.logPath =
|
|
14
|
+
logPath || path.join(os.homedir(), '.llxprt', 'conversations');
|
|
15
|
+
this.currentLogFile = path.join(this.logPath, `conversation-${new Date().toISOString().split('T')[0]}.jsonl`);
|
|
16
|
+
this.ensureLogDirectory();
|
|
17
|
+
}
|
|
18
|
+
ensureLogDirectory() {
|
|
19
|
+
if (!fs.existsSync(this.logPath)) {
|
|
20
|
+
fs.mkdirSync(this.logPath, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
writeEntry(entry) {
|
|
24
|
+
try {
|
|
25
|
+
const logEntry = {
|
|
26
|
+
timestamp: new Date().toISOString(),
|
|
27
|
+
...entry,
|
|
28
|
+
};
|
|
29
|
+
const line = JSON.stringify(logEntry) + '\n';
|
|
30
|
+
fs.appendFileSync(this.currentLogFile, line);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error('Failed to write log entry:', error);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
writeRequest(provider, messages, context) {
|
|
37
|
+
this.writeEntry({
|
|
38
|
+
type: 'request',
|
|
39
|
+
provider,
|
|
40
|
+
messages,
|
|
41
|
+
context,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
writeResponse(provider, response, metadata) {
|
|
45
|
+
this.writeEntry({
|
|
46
|
+
type: 'response',
|
|
47
|
+
provider,
|
|
48
|
+
response,
|
|
49
|
+
metadata,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
writeToolCall(provider, toolName, context) {
|
|
53
|
+
this.writeEntry({
|
|
54
|
+
type: 'tool_call',
|
|
55
|
+
provider,
|
|
56
|
+
tool: toolName,
|
|
57
|
+
...context,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Singleton instance
|
|
62
|
+
let fileWriter = null;
|
|
63
|
+
export function getConversationFileWriter(logPath) {
|
|
64
|
+
if (!fileWriter) {
|
|
65
|
+
fileWriter = new ConversationFileWriter(logPath);
|
|
66
|
+
}
|
|
67
|
+
return fileWriter;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=ConversationFileWriter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationFileWriter.js","sourceRoot":"","sources":["../../../src/storage/ConversationFileWriter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,MAAM,OAAO,sBAAsB;IACzB,OAAO,CAAS;IAChB,cAAc,CAAS;IAE/B,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO;YACV,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAC7B,IAAI,CAAC,OAAO,EACZ,gBAAgB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAC/D,CAAC;QACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAA8B;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG;gBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,GAAG,KAAK;aACT,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;YAC7C,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,YAAY,CACV,QAAgB,EAChB,QAAmB,EACnB,OAAiC;QAEjC,IAAI,CAAC,UAAU,CAAC;YACd,IAAI,EAAE,SAAS;YACf,QAAQ;YACR,QAAQ;YACR,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CACX,QAAgB,EAChB,QAAiB,EACjB,QAAkC;QAElC,IAAI,CAAC,UAAU,CAAC;YACd,IAAI,EAAE,UAAU;YAChB,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CACX,QAAgB,EAChB,QAAgB,EAChB,OAAiC;QAEjC,IAAI,CAAC,UAAU,CAAC;YACd,IAAI,EAAE,WAAW;YACjB,QAAQ;YACR,IAAI,EAAE,QAAQ;YACd,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;CACF;AAED,qBAAqB;AACrB,IAAI,UAAU,GAAkC,IAAI,CAAC;AAErD,MAAM,UAAU,yBAAyB,CACvC,OAAgB;IAEhB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -10,14 +10,21 @@ import { Config } from '../../config/config.js';
|
|
|
10
10
|
export interface LogResponse {
|
|
11
11
|
nextRequestWaitMs?: number;
|
|
12
12
|
}
|
|
13
|
+
export interface LogEventEntry {
|
|
14
|
+
event_time_ms: number;
|
|
15
|
+
source_extension_json: string;
|
|
16
|
+
}
|
|
13
17
|
export declare class ClearcutLogger {
|
|
14
18
|
private static instance;
|
|
15
19
|
private config?;
|
|
16
20
|
private readonly events;
|
|
17
21
|
private last_flush_time;
|
|
18
22
|
private flush_interval_ms;
|
|
23
|
+
private max_events;
|
|
24
|
+
private max_retry_events;
|
|
19
25
|
private constructor();
|
|
20
26
|
static getInstance(_config?: Config): ClearcutLogger | undefined;
|
|
27
|
+
static clearInstance(): void;
|
|
21
28
|
enqueueLogEvent(event: any): void;
|
|
22
29
|
createLogEvent(name: string, data: object[]): object;
|
|
23
30
|
flushIfNeeded(): void;
|
|
@@ -36,5 +43,6 @@ export declare class ClearcutLogger {
|
|
|
36
43
|
logMalformedJsonResponseEvent(event: MalformedJsonResponseEvent): void;
|
|
37
44
|
logEndSessionEvent(event: EndSessionEvent): void;
|
|
38
45
|
getProxyAgent(): HttpsProxyAgent<string> | undefined;
|
|
46
|
+
private requeueFailedEvents;
|
|
39
47
|
shutdown(): void;
|
|
40
48
|
}
|
|
@@ -31,10 +31,33 @@ const malformed_json_response_event_name = 'malformed_json_response';
|
|
|
31
31
|
export class ClearcutLogger {
|
|
32
32
|
static instance;
|
|
33
33
|
config;
|
|
34
|
-
//
|
|
35
|
-
events =
|
|
34
|
+
// Telemetry is disabled - this is just a stub to maintain API compatibility
|
|
35
|
+
events = {
|
|
36
|
+
items: [],
|
|
37
|
+
toArray() {
|
|
38
|
+
return this.items;
|
|
39
|
+
},
|
|
40
|
+
get size() {
|
|
41
|
+
return this.items.length;
|
|
42
|
+
},
|
|
43
|
+
push(item) {
|
|
44
|
+
this.items.push(item);
|
|
45
|
+
if (this.items.length > 1000) {
|
|
46
|
+
// max_events
|
|
47
|
+
this.items.shift();
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
splice(start, deleteCount) {
|
|
51
|
+
return this.items.splice(start, deleteCount);
|
|
52
|
+
},
|
|
53
|
+
unshift(item) {
|
|
54
|
+
this.items.unshift(item);
|
|
55
|
+
},
|
|
56
|
+
};
|
|
36
57
|
last_flush_time = Date.now();
|
|
37
58
|
flush_interval_ms = 1000 * 60; // Wait at least a minute before flushing events.
|
|
59
|
+
max_events = 1000; // Maximum number of events to keep in memory
|
|
60
|
+
max_retry_events = 100; // Maximum number of events to retry
|
|
38
61
|
constructor(config) {
|
|
39
62
|
this.config = config;
|
|
40
63
|
}
|
|
@@ -50,6 +73,10 @@ export class ClearcutLogger {
|
|
|
50
73
|
return ClearcutLogger.instance;
|
|
51
74
|
*/
|
|
52
75
|
}
|
|
76
|
+
static clearInstance() {
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
78
|
+
delete ClearcutLogger.instance;
|
|
79
|
+
}
|
|
53
80
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Clearcut expects this format.
|
|
54
81
|
enqueueLogEvent(event) {
|
|
55
82
|
this.events.push([
|
|
@@ -95,7 +122,7 @@ export class ClearcutLogger {
|
|
|
95
122
|
if (this.config?.getDebugMode()) {
|
|
96
123
|
console.log('Flushing log events to Clearcut.');
|
|
97
124
|
}
|
|
98
|
-
const eventsToSend = [...this.events];
|
|
125
|
+
const eventsToSend = [...this.events.items];
|
|
99
126
|
if (eventsToSend.length === 0) {
|
|
100
127
|
return {};
|
|
101
128
|
}
|
|
@@ -314,6 +341,22 @@ export class ClearcutLogger {
|
|
|
314
341
|
value: JSON.stringify(event.error_type),
|
|
315
342
|
},
|
|
316
343
|
];
|
|
344
|
+
if (event.metadata) {
|
|
345
|
+
const metadataMapping = {
|
|
346
|
+
ai_added_lines: EventMetadataKey.GEMINI_CLI_AI_ADDED_LINES,
|
|
347
|
+
ai_removed_lines: EventMetadataKey.GEMINI_CLI_AI_REMOVED_LINES,
|
|
348
|
+
user_added_lines: EventMetadataKey.GEMINI_CLI_USER_ADDED_LINES,
|
|
349
|
+
user_removed_lines: EventMetadataKey.GEMINI_CLI_USER_REMOVED_LINES,
|
|
350
|
+
};
|
|
351
|
+
for (const [key, gemini_cli_key] of Object.entries(metadataMapping)) {
|
|
352
|
+
if (event.metadata[key] !== undefined) {
|
|
353
|
+
data.push({
|
|
354
|
+
gemini_cli_key,
|
|
355
|
+
value: JSON.stringify(event.metadata[key]),
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
317
360
|
const logEvent = this.createLogEvent(tool_call_event_name, data);
|
|
318
361
|
this.enqueueLogEvent(logEvent);
|
|
319
362
|
this.flushIfNeeded();
|
|
@@ -516,6 +559,16 @@ export class ClearcutLogger {
|
|
|
516
559
|
throw new Error('Unsupported proxy type');
|
|
517
560
|
}
|
|
518
561
|
}
|
|
562
|
+
requeueFailedEvents(failedEvents) {
|
|
563
|
+
const availableSpace = this.max_events - this.events.size;
|
|
564
|
+
const eventsToRequeue = Math.min(failedEvents.length, availableSpace, this.max_retry_events);
|
|
565
|
+
if (eventsToRequeue > 0) {
|
|
566
|
+
const startIndex = Math.max(0, failedEvents.length - eventsToRequeue);
|
|
567
|
+
for (let i = failedEvents.length - 1; i >= startIndex; i--) {
|
|
568
|
+
this.events.unshift(failedEvents[i]);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
}
|
|
519
572
|
shutdown() {
|
|
520
573
|
const event = new EndSessionEvent(this.config);
|
|
521
574
|
this.logEndSessionEvent(event);
|