@vybestack/llxprt-code-core 0.1.19-beta → 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/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/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/subagent.js +12 -10
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.js +9 -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/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 +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/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/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/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/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 -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 -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 -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,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Vybestack LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, beforeEach } from 'vitest';
|
|
7
|
-
import { Config } from './config.js';
|
|
8
|
-
describe('Config always allowed commands', () => {
|
|
9
|
-
let config;
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
config = new Config({
|
|
12
|
-
model: 'test-model',
|
|
13
|
-
question: 'test question',
|
|
14
|
-
embeddingModel: 'test-embedding',
|
|
15
|
-
targetDir: '.',
|
|
16
|
-
usageStatisticsEnabled: false,
|
|
17
|
-
sessionId: 'test-session',
|
|
18
|
-
debugMode: false,
|
|
19
|
-
cwd: '.',
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
describe('addAlwaysAllowedCommand', () => {
|
|
23
|
-
it('should add a command to the always allowed list', () => {
|
|
24
|
-
config.addAlwaysAllowedCommand('mv');
|
|
25
|
-
expect(config.isCommandAlwaysAllowed('mv')).toBe(true);
|
|
26
|
-
});
|
|
27
|
-
it('should handle multiple commands', () => {
|
|
28
|
-
config.addAlwaysAllowedCommand('mv');
|
|
29
|
-
config.addAlwaysAllowedCommand('cp');
|
|
30
|
-
config.addAlwaysAllowedCommand('rm');
|
|
31
|
-
expect(config.isCommandAlwaysAllowed('mv')).toBe(true);
|
|
32
|
-
expect(config.isCommandAlwaysAllowed('cp')).toBe(true);
|
|
33
|
-
expect(config.isCommandAlwaysAllowed('rm')).toBe(true);
|
|
34
|
-
});
|
|
35
|
-
it('should not duplicate commands', () => {
|
|
36
|
-
config.addAlwaysAllowedCommand('mv');
|
|
37
|
-
config.addAlwaysAllowedCommand('mv');
|
|
38
|
-
config.addAlwaysAllowedCommand('mv');
|
|
39
|
-
const commands = config.getAlwaysAllowedCommands();
|
|
40
|
-
expect(commands).toHaveLength(1);
|
|
41
|
-
expect(commands).toContain('mv');
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
describe('isCommandAlwaysAllowed', () => {
|
|
45
|
-
it('should return false for commands not in the list', () => {
|
|
46
|
-
expect(config.isCommandAlwaysAllowed('mv')).toBe(false);
|
|
47
|
-
expect(config.isCommandAlwaysAllowed('cp')).toBe(false);
|
|
48
|
-
});
|
|
49
|
-
it('should return true only for added commands', () => {
|
|
50
|
-
config.addAlwaysAllowedCommand('mv');
|
|
51
|
-
expect(config.isCommandAlwaysAllowed('mv')).toBe(true);
|
|
52
|
-
expect(config.isCommandAlwaysAllowed('cp')).toBe(false);
|
|
53
|
-
});
|
|
54
|
-
it('should be case sensitive', () => {
|
|
55
|
-
config.addAlwaysAllowedCommand('mv');
|
|
56
|
-
expect(config.isCommandAlwaysAllowed('mv')).toBe(true);
|
|
57
|
-
expect(config.isCommandAlwaysAllowed('MV')).toBe(false);
|
|
58
|
-
expect(config.isCommandAlwaysAllowed('Mv')).toBe(false);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
describe('getAlwaysAllowedCommands', () => {
|
|
62
|
-
it('should return empty array when no commands are allowed', () => {
|
|
63
|
-
expect(config.getAlwaysAllowedCommands()).toEqual([]);
|
|
64
|
-
});
|
|
65
|
-
it('should return all added commands', () => {
|
|
66
|
-
config.addAlwaysAllowedCommand('mv');
|
|
67
|
-
config.addAlwaysAllowedCommand('cp');
|
|
68
|
-
config.addAlwaysAllowedCommand('ls');
|
|
69
|
-
const commands = config.getAlwaysAllowedCommands();
|
|
70
|
-
expect(commands).toHaveLength(3);
|
|
71
|
-
expect(commands).toContain('mv');
|
|
72
|
-
expect(commands).toContain('cp');
|
|
73
|
-
expect(commands).toContain('ls');
|
|
74
|
-
});
|
|
75
|
-
it('should return a copy of the internal set', () => {
|
|
76
|
-
config.addAlwaysAllowedCommand('mv');
|
|
77
|
-
const commands1 = config.getAlwaysAllowedCommands();
|
|
78
|
-
commands1.push('cp'); // Modify the returned array
|
|
79
|
-
const commands2 = config.getAlwaysAllowedCommands();
|
|
80
|
-
expect(commands2).toEqual(['mv']); // Original should be unchanged
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
//# sourceMappingURL=config.alwaysAllow.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.alwaysAllow.test.js","sourceRoot":"","sources":["../../../src/config/config.alwaysAllow.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Vybestack LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, beforeEach } from 'vitest';
|
|
7
|
-
import { Config } from './config.js';
|
|
8
|
-
describe('Config - Ephemeral Settings', () => {
|
|
9
|
-
let config;
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
config = new Config({
|
|
12
|
-
model: 'test-model',
|
|
13
|
-
question: 'test question',
|
|
14
|
-
embeddingModel: 'test-embedding',
|
|
15
|
-
targetDir: '.',
|
|
16
|
-
usageStatisticsEnabled: false,
|
|
17
|
-
sessionId: 'test-session',
|
|
18
|
-
debugMode: false,
|
|
19
|
-
cwd: '.',
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
describe('todo-continuation setting', () => {
|
|
23
|
-
/**
|
|
24
|
-
* @requirement REQ-004.2
|
|
25
|
-
* @scenario Setting defaults to true when unset
|
|
26
|
-
* @given No todo-continuation setting configured
|
|
27
|
-
* @when getEphemeralSetting('todo-continuation') called
|
|
28
|
-
* @then Returns undefined (not true) - services handle the default logic
|
|
29
|
-
*/
|
|
30
|
-
it('should return undefined for unset todo-continuation setting', () => {
|
|
31
|
-
// When no setting is configured
|
|
32
|
-
const result = config.getEphemeralSetting('todo-continuation');
|
|
33
|
-
// Then it returns undefined (services handle default logic)
|
|
34
|
-
expect(result).toBeUndefined();
|
|
35
|
-
});
|
|
36
|
-
/**
|
|
37
|
-
* @requirement REQ-004.1
|
|
38
|
-
* @scenario Explicit true value preserved
|
|
39
|
-
* @given todo-continuation set to true
|
|
40
|
-
* @when getEphemeralSetting('todo-continuation') called
|
|
41
|
-
* @then Returns true
|
|
42
|
-
*/
|
|
43
|
-
it('should return true when explicitly set to true', () => {
|
|
44
|
-
// Given setting is explicitly set to true
|
|
45
|
-
config.setEphemeralSetting('todo-continuation', true);
|
|
46
|
-
// When getting the setting
|
|
47
|
-
const result = config.getEphemeralSetting('todo-continuation');
|
|
48
|
-
// Then it returns true
|
|
49
|
-
expect(result).toBe(true);
|
|
50
|
-
});
|
|
51
|
-
/**
|
|
52
|
-
* @requirement REQ-004.1
|
|
53
|
-
* @scenario Explicit false value preserved
|
|
54
|
-
* @given todo-continuation set to false
|
|
55
|
-
* @when getEphemeralSetting('todo-continuation') called
|
|
56
|
-
* @then Returns false
|
|
57
|
-
*/
|
|
58
|
-
it('should return false when explicitly set to false', () => {
|
|
59
|
-
// Given setting is explicitly set to false
|
|
60
|
-
config.setEphemeralSetting('todo-continuation', false);
|
|
61
|
-
// When getting the setting
|
|
62
|
-
const result = config.getEphemeralSetting('todo-continuation');
|
|
63
|
-
// Then it returns false
|
|
64
|
-
expect(result).toBe(false);
|
|
65
|
-
});
|
|
66
|
-
/**
|
|
67
|
-
* @requirement REQ-004.2
|
|
68
|
-
* @scenario Service treats undefined as true
|
|
69
|
-
* @given No setting configured
|
|
70
|
-
* @when todoContinuationService checks setting
|
|
71
|
-
* @then Continuation is enabled
|
|
72
|
-
*/
|
|
73
|
-
it('should demonstrate service behavior with undefined setting', () => {
|
|
74
|
-
// Given no setting configured
|
|
75
|
-
const ephemeralSetting = config.getEphemeralSetting('todo-continuation');
|
|
76
|
-
// When service checks the setting (simulating service logic)
|
|
77
|
-
const continuationEnabled = ephemeralSetting !== false; // This is how the service treats undefined
|
|
78
|
-
// Then continuation is enabled (undefined !== false is true)
|
|
79
|
-
expect(ephemeralSetting).toBeUndefined();
|
|
80
|
-
expect(continuationEnabled).toBe(true);
|
|
81
|
-
});
|
|
82
|
-
it('should demonstrate service behavior with explicit false', () => {
|
|
83
|
-
// Given setting is explicitly set to false
|
|
84
|
-
config.setEphemeralSetting('todo-continuation', false);
|
|
85
|
-
const ephemeralSetting = config.getEphemeralSetting('todo-continuation');
|
|
86
|
-
// When service checks the setting (simulating service logic)
|
|
87
|
-
const continuationEnabled = ephemeralSetting !== false; // This is how the service treats false
|
|
88
|
-
// Then continuation is disabled (false !== false is false)
|
|
89
|
-
expect(ephemeralSetting).toBe(false);
|
|
90
|
-
expect(continuationEnabled).toBe(false);
|
|
91
|
-
});
|
|
92
|
-
it('should demonstrate service behavior with explicit true', () => {
|
|
93
|
-
// Given setting is explicitly set to true
|
|
94
|
-
config.setEphemeralSetting('todo-continuation', true);
|
|
95
|
-
const ephemeralSetting = config.getEphemeralSetting('todo-continuation');
|
|
96
|
-
// When service checks the setting (simulating service logic)
|
|
97
|
-
const continuationEnabled = ephemeralSetting !== false; // This is how the service treats true
|
|
98
|
-
// Then continuation is enabled (true !== false is true)
|
|
99
|
-
expect(ephemeralSetting).toBe(true);
|
|
100
|
-
expect(continuationEnabled).toBe(true);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
describe('ephemeral settings persistence', () => {
|
|
104
|
-
it('should persist ephemeral setting values across get/set operations', () => {
|
|
105
|
-
// Given multiple ephemeral settings
|
|
106
|
-
config.setEphemeralSetting('todo-continuation', false);
|
|
107
|
-
config.setEphemeralSetting('shell-replacement', true);
|
|
108
|
-
config.setEphemeralSetting('tool-output-max-items', 100);
|
|
109
|
-
// When getting the settings
|
|
110
|
-
const todoContinuation = config.getEphemeralSetting('todo-continuation');
|
|
111
|
-
const shellReplacement = config.getEphemeralSetting('shell-replacement');
|
|
112
|
-
const maxItems = config.getEphemeralSetting('tool-output-max-items');
|
|
113
|
-
// Then all values are preserved
|
|
114
|
-
expect(todoContinuation).toBe(false);
|
|
115
|
-
expect(shellReplacement).toBe(true);
|
|
116
|
-
expect(maxItems).toBe(100);
|
|
117
|
-
});
|
|
118
|
-
it('should return copy of all ephemeral settings', () => {
|
|
119
|
-
// Given multiple ephemeral settings
|
|
120
|
-
config.setEphemeralSetting('todo-continuation', true);
|
|
121
|
-
config.setEphemeralSetting('custom-setting', 'test-value');
|
|
122
|
-
// When getting all settings
|
|
123
|
-
const allSettings = config.getEphemeralSettings();
|
|
124
|
-
// Then it returns a copy with all settings
|
|
125
|
-
expect(allSettings).toEqual({
|
|
126
|
-
'todo-continuation': true,
|
|
127
|
-
'custom-setting': 'test-value',
|
|
128
|
-
});
|
|
129
|
-
// And modifying the returned object doesn't affect the config
|
|
130
|
-
allSettings['new-setting'] = 'should-not-affect-config';
|
|
131
|
-
expect(config.getEphemeralSetting('new-setting')).toBeUndefined();
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
describe('type safety', () => {
|
|
135
|
-
it('should handle different value types for ephemeral settings', () => {
|
|
136
|
-
// Boolean values
|
|
137
|
-
config.setEphemeralSetting('todo-continuation', false);
|
|
138
|
-
expect(config.getEphemeralSetting('todo-continuation')).toBe(false);
|
|
139
|
-
// Number values
|
|
140
|
-
config.setEphemeralSetting('tool-output-max-items', 50);
|
|
141
|
-
expect(config.getEphemeralSetting('tool-output-max-items')).toBe(50);
|
|
142
|
-
// String values
|
|
143
|
-
config.setEphemeralSetting('auth-key', 'test-key');
|
|
144
|
-
expect(config.getEphemeralSetting('auth-key')).toBe('test-key');
|
|
145
|
-
// Object values
|
|
146
|
-
const headers = { 'Content-Type': 'application/json' };
|
|
147
|
-
config.setEphemeralSetting('custom-headers', headers);
|
|
148
|
-
expect(config.getEphemeralSetting('custom-headers')).toEqual(headers);
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
//# sourceMappingURL=config.ephemeral.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.ephemeral.test.js","sourceRoot":"","sources":["../../../src/config/config.ephemeral.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,369 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
7
|
-
import { Config } from './config.js';
|
|
8
|
-
import * as path from 'path';
|
|
9
|
-
import { setLlxprtMdFilename as mockSetGeminiMdFilename } from '../tools/memoryTool.js';
|
|
10
|
-
import { DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, } from '../telemetry/index.js';
|
|
11
|
-
import { AuthType, createContentGeneratorConfig, } from '../core/contentGenerator.js';
|
|
12
|
-
import { GeminiClient } from '../core/client.js';
|
|
13
|
-
import { GitService } from '../services/gitService.js';
|
|
14
|
-
import { IdeClient } from '../ide/ide-client.js';
|
|
15
|
-
vi.mock('fs', async (importOriginal) => {
|
|
16
|
-
const actual = await importOriginal();
|
|
17
|
-
return {
|
|
18
|
-
...actual,
|
|
19
|
-
existsSync: vi.fn().mockReturnValue(true),
|
|
20
|
-
statSync: vi.fn().mockReturnValue({
|
|
21
|
-
isDirectory: vi.fn().mockReturnValue(true),
|
|
22
|
-
}),
|
|
23
|
-
realpathSync: vi.fn((path) => path),
|
|
24
|
-
};
|
|
25
|
-
});
|
|
26
|
-
// Mock dependencies that might be called during Config construction or createServerConfig
|
|
27
|
-
vi.mock('../tools/tool-registry', () => {
|
|
28
|
-
const ToolRegistryMock = vi.fn();
|
|
29
|
-
ToolRegistryMock.prototype.registerTool = vi.fn();
|
|
30
|
-
ToolRegistryMock.prototype.discoverAllTools = vi.fn();
|
|
31
|
-
ToolRegistryMock.prototype.getAllTools = vi.fn(() => []); // Mock methods if needed
|
|
32
|
-
ToolRegistryMock.prototype.getTool = vi.fn();
|
|
33
|
-
ToolRegistryMock.prototype.getFunctionDeclarations = vi.fn(() => []);
|
|
34
|
-
return { ToolRegistry: ToolRegistryMock };
|
|
35
|
-
});
|
|
36
|
-
// Mock individual tools if their constructors are complex or have side effects
|
|
37
|
-
vi.mock('../tools/ls');
|
|
38
|
-
vi.mock('../tools/read-file');
|
|
39
|
-
vi.mock('../tools/grep');
|
|
40
|
-
vi.mock('../tools/glob');
|
|
41
|
-
vi.mock('../tools/edit');
|
|
42
|
-
vi.mock('../tools/shell');
|
|
43
|
-
vi.mock('../tools/write-file');
|
|
44
|
-
vi.mock('../tools/web-fetch');
|
|
45
|
-
vi.mock('../tools/read-many-files');
|
|
46
|
-
vi.mock('../tools/memoryTool', () => ({
|
|
47
|
-
MemoryTool: vi.fn(),
|
|
48
|
-
setLlxprtMdFilename: vi.fn(),
|
|
49
|
-
getCurrentLlxprtMdFilename: vi.fn(() => 'LLXPRT.md'), // Mock the original filename
|
|
50
|
-
DEFAULT_CONTEXT_FILENAME: 'LLXPRT.md',
|
|
51
|
-
LLXPRT_CONFIG_DIR: '.llxprt',
|
|
52
|
-
}));
|
|
53
|
-
vi.mock('../core/contentGenerator.js', async (importOriginal) => {
|
|
54
|
-
const actual = await importOriginal();
|
|
55
|
-
return {
|
|
56
|
-
...actual,
|
|
57
|
-
createContentGeneratorConfig: vi.fn(),
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
|
-
vi.mock('../core/client.js', () => ({
|
|
61
|
-
GeminiClient: vi.fn().mockImplementation(() => ({
|
|
62
|
-
initialize: vi.fn().mockResolvedValue(undefined),
|
|
63
|
-
isInitialized: vi.fn().mockReturnValue(false),
|
|
64
|
-
getHistory: vi.fn().mockReturnValue([]),
|
|
65
|
-
setHistory: vi.fn(),
|
|
66
|
-
})),
|
|
67
|
-
}));
|
|
68
|
-
vi.mock('../telemetry/index.js', async (importOriginal) => {
|
|
69
|
-
const actual = await importOriginal();
|
|
70
|
-
return {
|
|
71
|
-
...actual,
|
|
72
|
-
initializeTelemetry: vi.fn(),
|
|
73
|
-
};
|
|
74
|
-
});
|
|
75
|
-
vi.mock('../services/gitService.js', () => {
|
|
76
|
-
const GitServiceMock = vi.fn();
|
|
77
|
-
GitServiceMock.prototype.initialize = vi.fn();
|
|
78
|
-
return { GitService: GitServiceMock };
|
|
79
|
-
});
|
|
80
|
-
describe('Server Config (config.ts)', () => {
|
|
81
|
-
const MODEL = 'gemini-pro';
|
|
82
|
-
const SANDBOX = {
|
|
83
|
-
command: 'docker',
|
|
84
|
-
image: 'gemini-cli-sandbox',
|
|
85
|
-
};
|
|
86
|
-
const TARGET_DIR = '/path/to/target';
|
|
87
|
-
const DEBUG_MODE = false;
|
|
88
|
-
const QUESTION = 'test question';
|
|
89
|
-
const FULL_CONTEXT = false;
|
|
90
|
-
const USER_MEMORY = 'Test User Memory';
|
|
91
|
-
const TELEMETRY_SETTINGS = { enabled: false };
|
|
92
|
-
const EMBEDDING_MODEL = 'gemini-embedding';
|
|
93
|
-
const SESSION_ID = 'test-session-id';
|
|
94
|
-
const baseParams = {
|
|
95
|
-
cwd: '/tmp',
|
|
96
|
-
embeddingModel: EMBEDDING_MODEL,
|
|
97
|
-
sandbox: SANDBOX,
|
|
98
|
-
targetDir: TARGET_DIR,
|
|
99
|
-
debugMode: DEBUG_MODE,
|
|
100
|
-
question: QUESTION,
|
|
101
|
-
fullContext: FULL_CONTEXT,
|
|
102
|
-
userMemory: USER_MEMORY,
|
|
103
|
-
telemetry: TELEMETRY_SETTINGS,
|
|
104
|
-
sessionId: SESSION_ID,
|
|
105
|
-
model: MODEL,
|
|
106
|
-
ideClient: IdeClient.getInstance(false),
|
|
107
|
-
};
|
|
108
|
-
beforeEach(() => {
|
|
109
|
-
// Reset mocks if necessary
|
|
110
|
-
vi.clearAllMocks();
|
|
111
|
-
});
|
|
112
|
-
describe('initialize', () => {
|
|
113
|
-
it('should throw an error if checkpointing is enabled and GitService fails', async () => {
|
|
114
|
-
const gitError = new Error('Git is not installed');
|
|
115
|
-
GitService.prototype.initialize.mockRejectedValue(gitError);
|
|
116
|
-
const config = new Config({
|
|
117
|
-
...baseParams,
|
|
118
|
-
checkpointing: true,
|
|
119
|
-
});
|
|
120
|
-
await expect(config.initialize()).rejects.toThrow(gitError);
|
|
121
|
-
});
|
|
122
|
-
it('should not throw an error if checkpointing is disabled and GitService fails', async () => {
|
|
123
|
-
const gitError = new Error('Git is not installed');
|
|
124
|
-
GitService.prototype.initialize.mockRejectedValue(gitError);
|
|
125
|
-
const config = new Config({
|
|
126
|
-
...baseParams,
|
|
127
|
-
checkpointing: false,
|
|
128
|
-
});
|
|
129
|
-
await expect(config.initialize()).resolves.toBeUndefined();
|
|
130
|
-
});
|
|
131
|
-
it('should throw an error if initialized more than once', async () => {
|
|
132
|
-
const config = new Config({
|
|
133
|
-
...baseParams,
|
|
134
|
-
checkpointing: false,
|
|
135
|
-
});
|
|
136
|
-
await expect(config.initialize()).resolves.toBeUndefined();
|
|
137
|
-
await expect(config.initialize()).rejects.toThrow('Config was already initialized');
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
describe('refreshAuth', () => {
|
|
141
|
-
it('should refresh auth and update config', async () => {
|
|
142
|
-
const config = new Config(baseParams);
|
|
143
|
-
// Initialize config to create GeminiClient instance
|
|
144
|
-
await config.initialize();
|
|
145
|
-
const authType = AuthType.USE_GEMINI;
|
|
146
|
-
const newModel = 'gemini-flash';
|
|
147
|
-
const mockContentConfig = {
|
|
148
|
-
model: newModel,
|
|
149
|
-
apiKey: 'test-key',
|
|
150
|
-
};
|
|
151
|
-
createContentGeneratorConfig.mockReturnValue(mockContentConfig);
|
|
152
|
-
// Set fallback mode to true to ensure it gets reset
|
|
153
|
-
config.setFallbackMode(true);
|
|
154
|
-
expect(config.isInFallbackMode()).toBe(true);
|
|
155
|
-
await config.refreshAuth(authType);
|
|
156
|
-
expect(createContentGeneratorConfig).toHaveBeenCalledWith(config, authType);
|
|
157
|
-
// Verify that contentGeneratorConfig is updated with the new model
|
|
158
|
-
expect(config.getContentGeneratorConfig()).toEqual(mockContentConfig);
|
|
159
|
-
expect(config.getContentGeneratorConfig()?.model).toBe(newModel);
|
|
160
|
-
expect(config.getModel()).toBe(newModel); // getModel() should return the updated model
|
|
161
|
-
expect(GeminiClient).toHaveBeenCalledWith(config);
|
|
162
|
-
// Verify that fallback mode is reset
|
|
163
|
-
expect(config.isInFallbackMode()).toBe(false);
|
|
164
|
-
});
|
|
165
|
-
it('should preserve conversation history when refreshing auth', async () => {
|
|
166
|
-
const config = new Config(baseParams);
|
|
167
|
-
const authType = AuthType.USE_GEMINI;
|
|
168
|
-
const mockContentConfig = {
|
|
169
|
-
model: 'gemini-pro',
|
|
170
|
-
apiKey: 'test-key',
|
|
171
|
-
};
|
|
172
|
-
createContentGeneratorConfig.mockReturnValue(mockContentConfig);
|
|
173
|
-
// Mock the existing client with some history
|
|
174
|
-
const mockExistingHistory = [
|
|
175
|
-
{ role: 'user', parts: [{ text: 'Hello' }] },
|
|
176
|
-
{ role: 'model', parts: [{ text: 'Hi there!' }] },
|
|
177
|
-
{ role: 'user', parts: [{ text: 'How are you?' }] },
|
|
178
|
-
];
|
|
179
|
-
const mockExistingClient = {
|
|
180
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
181
|
-
getHistory: vi.fn().mockReturnValue(mockExistingHistory),
|
|
182
|
-
};
|
|
183
|
-
const mockNewClient = {
|
|
184
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
185
|
-
getHistory: vi.fn().mockReturnValue([]),
|
|
186
|
-
setHistory: vi.fn(),
|
|
187
|
-
initialize: vi.fn().mockResolvedValue(undefined),
|
|
188
|
-
};
|
|
189
|
-
// Set the existing client
|
|
190
|
-
config.geminiClient = mockExistingClient;
|
|
191
|
-
GeminiClient.mockImplementation(() => mockNewClient);
|
|
192
|
-
await config.refreshAuth(authType);
|
|
193
|
-
// Verify that existing history was retrieved
|
|
194
|
-
expect(mockExistingClient.getHistory).toHaveBeenCalled();
|
|
195
|
-
// Verify that new client was created and initialized
|
|
196
|
-
expect(GeminiClient).toHaveBeenCalledWith(config);
|
|
197
|
-
expect(mockNewClient.initialize).toHaveBeenCalledWith(mockContentConfig);
|
|
198
|
-
// Verify that history was restored to the new client
|
|
199
|
-
expect(mockNewClient.setHistory).toHaveBeenCalledWith(mockExistingHistory);
|
|
200
|
-
});
|
|
201
|
-
it('should handle case when no existing client is initialized', async () => {
|
|
202
|
-
const config = new Config(baseParams);
|
|
203
|
-
const authType = AuthType.USE_GEMINI;
|
|
204
|
-
const mockContentConfig = {
|
|
205
|
-
model: 'gemini-pro',
|
|
206
|
-
apiKey: 'test-key',
|
|
207
|
-
};
|
|
208
|
-
createContentGeneratorConfig.mockReturnValue(mockContentConfig);
|
|
209
|
-
const mockNewClient = {
|
|
210
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
211
|
-
getHistory: vi.fn().mockReturnValue([]),
|
|
212
|
-
setHistory: vi.fn(),
|
|
213
|
-
initialize: vi.fn().mockResolvedValue(undefined),
|
|
214
|
-
};
|
|
215
|
-
// No existing client
|
|
216
|
-
config.geminiClient = null;
|
|
217
|
-
GeminiClient.mockImplementation(() => mockNewClient);
|
|
218
|
-
await config.refreshAuth(authType);
|
|
219
|
-
// Verify that new client was created and initialized
|
|
220
|
-
expect(GeminiClient).toHaveBeenCalledWith(config);
|
|
221
|
-
expect(mockNewClient.initialize).toHaveBeenCalledWith(mockContentConfig);
|
|
222
|
-
// Verify that setHistory was not called since there was no existing history
|
|
223
|
-
expect(mockNewClient.setHistory).not.toHaveBeenCalled();
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
it('Config constructor should store userMemory correctly', () => {
|
|
227
|
-
const config = new Config(baseParams);
|
|
228
|
-
expect(config.getUserMemory()).toBe(USER_MEMORY);
|
|
229
|
-
// Verify other getters if needed
|
|
230
|
-
expect(config.getTargetDir()).toBe(path.resolve(TARGET_DIR)); // Check resolved path
|
|
231
|
-
});
|
|
232
|
-
it('Config constructor should default userMemory to empty string if not provided', () => {
|
|
233
|
-
const paramsWithoutMemory = { ...baseParams };
|
|
234
|
-
delete paramsWithoutMemory.userMemory;
|
|
235
|
-
const config = new Config(paramsWithoutMemory);
|
|
236
|
-
expect(config.getUserMemory()).toBe('');
|
|
237
|
-
});
|
|
238
|
-
it('Config constructor should call setLlxprtMdFilename with contextFileName if provided', () => {
|
|
239
|
-
const contextFileName = 'CUSTOM_AGENTS.md';
|
|
240
|
-
const paramsWithContextFile = {
|
|
241
|
-
...baseParams,
|
|
242
|
-
contextFileName,
|
|
243
|
-
};
|
|
244
|
-
new Config(paramsWithContextFile);
|
|
245
|
-
expect(mockSetGeminiMdFilename).toHaveBeenCalledWith(contextFileName);
|
|
246
|
-
});
|
|
247
|
-
it('Config constructor should not call setLlxprtMdFilename if contextFileName is not provided', () => {
|
|
248
|
-
new Config(baseParams); // baseParams does not have contextFileName
|
|
249
|
-
expect(mockSetGeminiMdFilename).not.toHaveBeenCalled();
|
|
250
|
-
});
|
|
251
|
-
it('should set default file filtering settings when not provided', () => {
|
|
252
|
-
const config = new Config(baseParams);
|
|
253
|
-
expect(config.getFileFilteringRespectGitIgnore()).toBe(true);
|
|
254
|
-
});
|
|
255
|
-
it('should set custom file filtering settings when provided', () => {
|
|
256
|
-
const paramsWithFileFiltering = {
|
|
257
|
-
...baseParams,
|
|
258
|
-
fileFiltering: {
|
|
259
|
-
respectGitIgnore: false,
|
|
260
|
-
},
|
|
261
|
-
};
|
|
262
|
-
const config = new Config(paramsWithFileFiltering);
|
|
263
|
-
expect(config.getFileFilteringRespectGitIgnore()).toBe(false);
|
|
264
|
-
});
|
|
265
|
-
it('should initialize WorkspaceContext with includeDirectories', () => {
|
|
266
|
-
const includeDirectories = ['/path/to/dir1', '/path/to/dir2'];
|
|
267
|
-
const paramsWithIncludeDirs = {
|
|
268
|
-
...baseParams,
|
|
269
|
-
includeDirectories,
|
|
270
|
-
};
|
|
271
|
-
const config = new Config(paramsWithIncludeDirs);
|
|
272
|
-
const workspaceContext = config.getWorkspaceContext();
|
|
273
|
-
const directories = workspaceContext.getDirectories();
|
|
274
|
-
// Should include the target directory plus the included directories
|
|
275
|
-
expect(directories).toHaveLength(3);
|
|
276
|
-
expect(directories).toContain(path.resolve(baseParams.targetDir));
|
|
277
|
-
expect(directories).toContain('/path/to/dir1');
|
|
278
|
-
expect(directories).toContain('/path/to/dir2');
|
|
279
|
-
});
|
|
280
|
-
it('Config constructor should set telemetry to true when provided as true', () => {
|
|
281
|
-
const paramsWithTelemetry = {
|
|
282
|
-
...baseParams,
|
|
283
|
-
telemetry: { enabled: true },
|
|
284
|
-
};
|
|
285
|
-
const config = new Config(paramsWithTelemetry);
|
|
286
|
-
expect(config.getTelemetryEnabled()).toBe(true);
|
|
287
|
-
});
|
|
288
|
-
it('Config constructor should set telemetry to false when provided as false', () => {
|
|
289
|
-
const paramsWithTelemetry = {
|
|
290
|
-
...baseParams,
|
|
291
|
-
telemetry: { enabled: false },
|
|
292
|
-
};
|
|
293
|
-
const config = new Config(paramsWithTelemetry);
|
|
294
|
-
expect(config.getTelemetryEnabled()).toBe(false);
|
|
295
|
-
});
|
|
296
|
-
it('Config constructor should default telemetry to default value if not provided', () => {
|
|
297
|
-
const paramsWithoutTelemetry = { ...baseParams };
|
|
298
|
-
delete paramsWithoutTelemetry.telemetry;
|
|
299
|
-
const config = new Config(paramsWithoutTelemetry);
|
|
300
|
-
expect(config.getTelemetryEnabled()).toBe(TELEMETRY_SETTINGS.enabled);
|
|
301
|
-
});
|
|
302
|
-
it('should have a getFileService method that returns FileDiscoveryService', () => {
|
|
303
|
-
const config = new Config(baseParams);
|
|
304
|
-
const fileService = config.getFileService();
|
|
305
|
-
expect(fileService).toBeDefined();
|
|
306
|
-
});
|
|
307
|
-
describe('Telemetry Settings', () => {
|
|
308
|
-
it('should return default telemetry target if not provided', () => {
|
|
309
|
-
const params = {
|
|
310
|
-
...baseParams,
|
|
311
|
-
telemetry: { enabled: true },
|
|
312
|
-
};
|
|
313
|
-
const config = new Config(params);
|
|
314
|
-
expect(config.getTelemetryTarget()).toBe(DEFAULT_TELEMETRY_TARGET);
|
|
315
|
-
});
|
|
316
|
-
it('should return provided OTLP endpoint', () => {
|
|
317
|
-
const endpoint = 'http://custom.otel.collector:4317';
|
|
318
|
-
const params = {
|
|
319
|
-
...baseParams,
|
|
320
|
-
telemetry: { enabled: true, otlpEndpoint: endpoint },
|
|
321
|
-
};
|
|
322
|
-
const config = new Config(params);
|
|
323
|
-
expect(config.getTelemetryOtlpEndpoint()).toBe(endpoint);
|
|
324
|
-
});
|
|
325
|
-
it('should return default OTLP endpoint if not provided', () => {
|
|
326
|
-
const params = {
|
|
327
|
-
...baseParams,
|
|
328
|
-
telemetry: { enabled: true },
|
|
329
|
-
};
|
|
330
|
-
const config = new Config(params);
|
|
331
|
-
expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
|
|
332
|
-
});
|
|
333
|
-
it('should return provided logPrompts setting', () => {
|
|
334
|
-
const params = {
|
|
335
|
-
...baseParams,
|
|
336
|
-
telemetry: { enabled: true, logPrompts: false },
|
|
337
|
-
};
|
|
338
|
-
const config = new Config(params);
|
|
339
|
-
expect(config.getTelemetryLogPromptsEnabled()).toBe(false);
|
|
340
|
-
});
|
|
341
|
-
it('should return default logPrompts setting (true) if not provided', () => {
|
|
342
|
-
const params = {
|
|
343
|
-
...baseParams,
|
|
344
|
-
telemetry: { enabled: true },
|
|
345
|
-
};
|
|
346
|
-
const config = new Config(params);
|
|
347
|
-
expect(config.getTelemetryLogPromptsEnabled()).toBe(true);
|
|
348
|
-
});
|
|
349
|
-
it('should return default logPrompts setting (true) if telemetry object is not provided', () => {
|
|
350
|
-
const paramsWithoutTelemetry = { ...baseParams };
|
|
351
|
-
delete paramsWithoutTelemetry.telemetry;
|
|
352
|
-
const config = new Config(paramsWithoutTelemetry);
|
|
353
|
-
expect(config.getTelemetryLogPromptsEnabled()).toBe(true);
|
|
354
|
-
});
|
|
355
|
-
it('should return default telemetry target if telemetry object is not provided', () => {
|
|
356
|
-
const paramsWithoutTelemetry = { ...baseParams };
|
|
357
|
-
delete paramsWithoutTelemetry.telemetry;
|
|
358
|
-
const config = new Config(paramsWithoutTelemetry);
|
|
359
|
-
expect(config.getTelemetryTarget()).toBe(DEFAULT_TELEMETRY_TARGET);
|
|
360
|
-
});
|
|
361
|
-
it('should return default OTLP endpoint if telemetry object is not provided', () => {
|
|
362
|
-
const paramsWithoutTelemetry = { ...baseParams };
|
|
363
|
-
delete paramsWithoutTelemetry.telemetry;
|
|
364
|
-
const config = new Config(paramsWithoutTelemetry);
|
|
365
|
-
expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
|
|
366
|
-
});
|
|
367
|
-
});
|
|
368
|
-
});
|
|
369
|
-
//# sourceMappingURL=config.test.js.map
|