@vybestack/llxprt-code-core 0.1.18-nightly.250811.b0db22c6 → 0.1.18-nightly.250812.12fa8ad2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/src/auth/anthropic-device-flow.d.ts +53 -0
- package/dist/src/auth/anthropic-device-flow.js +208 -0
- package/dist/src/auth/anthropic-device-flow.js.map +1 -0
- package/dist/src/auth/token-store.js +11 -7
- package/dist/src/auth/token-store.js.map +1 -1
- package/dist/src/config/config.d.ts +7 -1
- package/dist/src/config/config.js +42 -4
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/profileManager.d.ts +14 -4
- package/dist/src/config/profileManager.js +90 -11
- package/dist/src/config/profileManager.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +2 -1
- package/dist/src/core/contentGenerator.js +1 -0
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/providers/BaseProvider.d.ts +51 -0
- package/dist/src/providers/BaseProvider.js +136 -1
- package/dist/src/providers/BaseProvider.js.map +1 -1
- package/dist/src/providers/IProvider.d.ts +1 -0
- package/dist/src/providers/LoggingProviderWrapper.d.ts +1 -0
- package/dist/src/providers/LoggingProviderWrapper.js +3 -0
- package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
- package/dist/src/providers/ProviderManager.d.ts +0 -1
- package/dist/src/providers/ProviderManager.js +23 -14
- package/dist/src/providers/ProviderManager.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.d.ts +20 -6
- package/dist/src/providers/anthropic/AnthropicProvider.js +172 -26
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +4 -0
- package/dist/src/providers/gemini/GeminiProvider.js +33 -1
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.d.ts +32 -0
- package/dist/src/providers/openai/OpenAIProvider.js +200 -13
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +1 -1
- package/dist/src/providers/openai/RESPONSES_API_MODELS.js +1 -0
- package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +1 -1
- package/dist/src/providers/openai/syntheticToolResponses.d.ts +52 -0
- package/dist/src/providers/openai/syntheticToolResponses.js +129 -0
- package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -0
- package/dist/src/settings/SettingsService.d.ts +32 -0
- package/dist/src/settings/SettingsService.js +204 -0
- package/dist/src/settings/SettingsService.js.map +1 -0
- package/dist/src/settings/settingsServiceInstance.d.ts +12 -0
- package/dist/src/settings/settingsServiceInstance.js +24 -0
- package/dist/src/settings/settingsServiceInstance.js.map +1 -0
- package/dist/src/settings/types.d.ts +141 -0
- package/dist/src/settings/types.js +5 -0
- package/dist/src/settings/types.js.map +1 -0
- package/package.json +4 -2
- package/dist/src/auth/auth-integration.spec.d.ts +0 -6
- package/dist/src/auth/auth-integration.spec.js +0 -384
- package/dist/src/auth/auth-integration.spec.js.map +0 -1
- package/dist/src/auth/precedence.test.d.ts +0 -6
- package/dist/src/auth/precedence.test.js +0 -374
- package/dist/src/auth/precedence.test.js.map +0 -1
- package/dist/src/auth/qwen-device-flow.spec.d.ts +0 -6
- package/dist/src/auth/qwen-device-flow.spec.js +0 -793
- package/dist/src/auth/qwen-device-flow.spec.js.map +0 -1
- package/dist/src/auth/token-store.spec.d.ts +0 -6
- package/dist/src/auth/token-store.spec.js +0 -405
- package/dist/src/auth/token-store.spec.js.map +0 -1
- package/dist/src/code_assist/converter.test.d.ts +0 -6
- package/dist/src/code_assist/converter.test.js +0 -279
- package/dist/src/code_assist/converter.test.js.map +0 -1
- package/dist/src/code_assist/oauth2.test.d.ts +0 -6
- package/dist/src/code_assist/oauth2.test.js +0 -370
- package/dist/src/code_assist/oauth2.test.js.map +0 -1
- package/dist/src/code_assist/server.test.d.ts +0 -6
- package/dist/src/code_assist/server.test.js +0 -134
- package/dist/src/code_assist/server.test.js.map +0 -1
- package/dist/src/code_assist/setup.test.d.ts +0 -6
- package/dist/src/code_assist/setup.test.js +0 -65
- package/dist/src/code_assist/setup.test.js.map +0 -1
- package/dist/src/config/config.alwaysAllow.test.d.ts +0 -6
- package/dist/src/config/config.alwaysAllow.test.js +0 -84
- package/dist/src/config/config.alwaysAllow.test.js.map +0 -1
- package/dist/src/config/config.ephemeral.test.d.ts +0 -6
- package/dist/src/config/config.ephemeral.test.js +0 -152
- package/dist/src/config/config.ephemeral.test.js.map +0 -1
- package/dist/src/config/config.test.d.ts +0 -6
- package/dist/src/config/config.test.js +0 -369
- package/dist/src/config/config.test.js.map +0 -1
- package/dist/src/config/endpoints.test.d.ts +0 -6
- package/dist/src/config/endpoints.test.js +0 -196
- package/dist/src/config/endpoints.test.js.map +0 -1
- package/dist/src/config/flashFallback.test.d.ts +0 -6
- package/dist/src/config/flashFallback.test.js +0 -91
- package/dist/src/config/flashFallback.test.js.map +0 -1
- package/dist/src/core/client.test.d.ts +0 -6
- package/dist/src/core/client.test.js +0 -1323
- package/dist/src/core/client.test.js.map +0 -1
- package/dist/src/core/contentGenerator.test.d.ts +0 -6
- package/dist/src/core/contentGenerator.test.js +0 -103
- package/dist/src/core/contentGenerator.test.js.map +0 -1
- package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
- package/dist/src/core/coreToolScheduler.test.js +0 -637
- package/dist/src/core/coreToolScheduler.test.js.map +0 -1
- package/dist/src/core/geminiChat.test.d.ts +0 -6
- package/dist/src/core/geminiChat.test.js +0 -425
- package/dist/src/core/geminiChat.test.js.map +0 -1
- package/dist/src/core/googleGenAIWrapper.test.d.ts +0 -6
- package/dist/src/core/googleGenAIWrapper.test.js +0 -104
- package/dist/src/core/googleGenAIWrapper.test.js.map +0 -1
- package/dist/src/core/logger.test.d.ts +0 -6
- package/dist/src/core/logger.test.js +0 -467
- package/dist/src/core/logger.test.js.map +0 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +0 -6
- package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -165
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +0 -1
- package/dist/src/core/prompts-async.test.d.ts +0 -6
- package/dist/src/core/prompts-async.test.js +0 -115
- package/dist/src/core/prompts-async.test.js.map +0 -1
- package/dist/src/core/prompts.test.d.ts +0 -6
- package/dist/src/core/prompts.test.js +0 -68
- package/dist/src/core/prompts.test.js.map +0 -1
- package/dist/src/core/subagent.test.d.ts +0 -6
- package/dist/src/core/subagent.test.js +0 -510
- package/dist/src/core/subagent.test.js.map +0 -1
- package/dist/src/core/tokenLimits.test.d.ts +0 -6
- package/dist/src/core/tokenLimits.test.js +0 -66
- package/dist/src/core/tokenLimits.test.js.map +0 -1
- package/dist/src/core/turn.test.d.ts +0 -6
- package/dist/src/core/turn.test.js +0 -366
- package/dist/src/core/turn.test.js.map +0 -1
- package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +0 -6
- package/dist/src/hooks/tool-render-suppression-hook.test.js +0 -59
- package/dist/src/hooks/tool-render-suppression-hook.test.js.map +0 -1
- package/dist/src/ide/ide-installer.test.d.ts +0 -6
- package/dist/src/ide/ide-installer.test.js +0 -55
- package/dist/src/ide/ide-installer.test.js.map +0 -1
- package/dist/src/ide/ideContext.test.d.ts +0 -6
- package/dist/src/ide/ideContext.test.js +0 -265
- package/dist/src/ide/ideContext.test.js.map +0 -1
- package/dist/src/index.test.d.ts +0 -6
- package/dist/src/index.test.js +0 -12
- package/dist/src/index.test.js.map +0 -1
- package/dist/src/integration-tests/oauth-integration.spec.d.ts +0 -6
- package/dist/src/integration-tests/oauth-integration.spec.js +0 -518
- package/dist/src/integration-tests/oauth-integration.spec.js.map +0 -1
- package/dist/src/integration-tests/oauth-simple-test.spec.d.ts +0 -1
- package/dist/src/integration-tests/oauth-simple-test.spec.js +0 -88
- package/dist/src/integration-tests/oauth-simple-test.spec.js.map +0 -1
- package/dist/src/integration-tests/todo-system.test.d.ts +0 -6
- package/dist/src/integration-tests/todo-system.test.js +0 -46
- package/dist/src/integration-tests/todo-system.test.js.map +0 -1
- package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
- package/dist/src/mcp/google-auth-provider.test.js +0 -54
- package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
- package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
- package/dist/src/mcp/oauth-provider.test.js +0 -602
- package/dist/src/mcp/oauth-provider.test.js.map +0 -1
- package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
- package/dist/src/mcp/oauth-token-storage.test.js +0 -205
- package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
- package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
- package/dist/src/mcp/oauth-utils.test.js +0 -144
- package/dist/src/mcp/oauth-utils.test.js.map +0 -1
- package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +0 -1
- package/dist/src/parsers/TextToolCallParser.multibyte.test.js +0 -42
- package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +0 -1
- package/dist/src/parsers/TextToolCallParser.test.d.ts +0 -1
- package/dist/src/parsers/TextToolCallParser.test.js +0 -225
- package/dist/src/parsers/TextToolCallParser.test.js.map +0 -1
- package/dist/src/prompt-config/TemplateEngine.test.d.ts +0 -1
- package/dist/src/prompt-config/TemplateEngine.test.js +0 -494
- package/dist/src/prompt-config/TemplateEngine.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-cache.test.d.ts +0 -6
- package/dist/src/prompt-config/prompt-cache.test.js +0 -437
- package/dist/src/prompt-config/prompt-cache.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-installer.test.d.ts +0 -7
- package/dist/src/prompt-config/prompt-installer.test.js +0 -503
- package/dist/src/prompt-config/prompt-installer.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-loader.test.d.ts +0 -5
- package/dist/src/prompt-config/prompt-loader.test.js +0 -413
- package/dist/src/prompt-config/prompt-loader.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-resolver.test.d.ts +0 -1
- package/dist/src/prompt-config/prompt-resolver.test.js +0 -529
- package/dist/src/prompt-config/prompt-resolver.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-service.test.d.ts +0 -1
- package/dist/src/prompt-config/prompt-service.test.js +0 -811
- package/dist/src/prompt-config/prompt-service.test.js.map +0 -1
- package/dist/src/providers/BaseProvider.test.d.ts +0 -6
- package/dist/src/providers/BaseProvider.test.js +0 -472
- package/dist/src/providers/BaseProvider.test.js.map +0 -1
- package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +0 -6
- package/dist/src/providers/ProviderManager.gemini-switch.test.js +0 -57
- package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +0 -1
- package/dist/src/providers/ProviderManager.test.d.ts +0 -6
- package/dist/src/providers/ProviderManager.test.js +0 -284
- package/dist/src/providers/ProviderManager.test.js.map +0 -1
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +0 -6
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +0 -273
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +0 -48
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.test.js +0 -487
- package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +0 -1
- package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +0 -6
- package/dist/src/providers/gemini/GeminiProvider.integration.test.js +0 -126
- package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +0 -1
- package/dist/src/providers/gemini/GeminiProvider.test.d.ts +0 -6
- package/dist/src/providers/gemini/GeminiProvider.test.js +0 -136
- package/dist/src/providers/gemini/GeminiProvider.test.js.map +0 -1
- package/dist/src/providers/integration/multi-provider.integration.test.d.ts +0 -6
- package/dist/src/providers/integration/multi-provider.integration.test.js +0 -308
- package/dist/src/providers/integration/multi-provider.integration.test.js.map +0 -1
- package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +0 -1
- package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +0 -97
- package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +0 -1
- package/dist/src/providers/openai/ConversationCache.test.d.ts +0 -1
- package/dist/src/providers/openai/ConversationCache.test.js +0 -113
- package/dist/src/providers/openai/ConversationCache.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +0 -189
- package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +0 -6
- package/dist/src/providers/openai/OpenAIProvider.integration.test.js +0 -125
- package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responses.test.js +0 -350
- package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +0 -213
- package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +0 -59
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +0 -6
- package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +0 -105
- package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.switch.test.js +0 -256
- package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.test.d.ts +0 -16
- package/dist/src/providers/openai/OpenAIProvider.test.js +0 -621
- package/dist/src/providers/openai/OpenAIProvider.test.js.map +0 -1
- package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +0 -1
- package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +0 -210
- package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +0 -1
- package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +0 -1
- package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +0 -65
- package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +0 -129
- package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.test.js +0 -406
- package/dist/src/providers/openai/buildResponsesRequest.test.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +0 -50
- package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +0 -1
- package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +0 -1
- package/dist/src/providers/openai/estimateRemoteTokens.test.js +0 -125
- package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +0 -1
- package/dist/src/providers/openai/openai-oauth.spec.d.ts +0 -16
- package/dist/src/providers/openai/openai-oauth.spec.js +0 -544
- package/dist/src/providers/openai/openai-oauth.spec.js.map +0 -1
- package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +0 -1
- package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +0 -192
- package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +0 -1
- package/dist/src/providers/openai/parseResponsesStream.test.d.ts +0 -1
- package/dist/src/providers/openai/parseResponsesStream.test.js +0 -151
- package/dist/src/providers/openai/parseResponsesStream.test.js.map +0 -1
- package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
- package/dist/src/services/fileDiscoveryService.test.js +0 -143
- package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
- package/dist/src/services/gitService.test.d.ts +0 -6
- package/dist/src/services/gitService.test.js +0 -209
- package/dist/src/services/gitService.test.js.map +0 -1
- package/dist/src/services/loopDetectionService.test.d.ts +0 -6
- package/dist/src/services/loopDetectionService.test.js +0 -484
- package/dist/src/services/loopDetectionService.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.multibyte.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.multibyte.test.js +0 -72
- package/dist/src/services/shellExecutionService.multibyte.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.test.js +0 -272
- package/dist/src/services/shellExecutionService.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.windows.multibyte.test.js +0 -98
- package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.windows.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.windows.test.js +0 -79
- package/dist/src/services/shellExecutionService.windows.test.js.map +0 -1
- package/dist/src/services/tool-call-tracker-service.test.d.ts +0 -6
- package/dist/src/services/tool-call-tracker-service.test.js +0 -99
- package/dist/src/services/tool-call-tracker-service.test.js.map +0 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -6
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -187
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +0 -1
- package/dist/src/telemetry/loggers.test.d.ts +0 -6
- package/dist/src/telemetry/loggers.test.js +0 -573
- package/dist/src/telemetry/loggers.test.js.map +0 -1
- package/dist/src/telemetry/metrics.test.d.ts +0 -6
- package/dist/src/telemetry/metrics.test.js +0 -212
- package/dist/src/telemetry/metrics.test.js.map +0 -1
- package/dist/src/telemetry/telemetry.test.d.ts +0 -6
- package/dist/src/telemetry/telemetry.test.js +0 -54
- package/dist/src/telemetry/telemetry.test.js.map +0 -1
- package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
- package/dist/src/telemetry/uiTelemetry.test.js +0 -518
- package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
- package/dist/src/tools/ToolFormatter.test.d.ts +0 -16
- package/dist/src/tools/ToolFormatter.test.js +0 -349
- package/dist/src/tools/ToolFormatter.test.js.map +0 -1
- package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +0 -1
- package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +0 -241
- package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +0 -1
- package/dist/src/tools/diffOptions.test.d.ts +0 -6
- package/dist/src/tools/diffOptions.test.js +0 -119
- package/dist/src/tools/diffOptions.test.js.map +0 -1
- package/dist/src/tools/edit.test.d.ts +0 -6
- package/dist/src/tools/edit.test.js +0 -689
- package/dist/src/tools/edit.test.js.map +0 -1
- package/dist/src/tools/glob.test.d.ts +0 -6
- package/dist/src/tools/glob.test.js +0 -332
- package/dist/src/tools/glob.test.js.map +0 -1
- package/dist/src/tools/grep.test.d.ts +0 -6
- package/dist/src/tools/grep.test.js +0 -272
- package/dist/src/tools/grep.test.js.map +0 -1
- package/dist/src/tools/ls.test.d.ts +0 -6
- package/dist/src/tools/ls.test.js +0 -357
- package/dist/src/tools/ls.test.js.map +0 -1
- package/dist/src/tools/mcp-client.test.d.ts +0 -6
- package/dist/src/tools/mcp-client.test.js +0 -617
- package/dist/src/tools/mcp-client.test.js.map +0 -1
- package/dist/src/tools/mcp-tool.test.d.ts +0 -6
- package/dist/src/tools/mcp-tool.test.js +0 -501
- package/dist/src/tools/mcp-tool.test.js.map +0 -1
- package/dist/src/tools/memoryTool.test.d.ts +0 -6
- package/dist/src/tools/memoryTool.test.js +0 -266
- package/dist/src/tools/memoryTool.test.js.map +0 -1
- package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
- package/dist/src/tools/modifiable-tool.test.js +0 -193
- package/dist/src/tools/modifiable-tool.test.js.map +0 -1
- package/dist/src/tools/read-file.test.d.ts +0 -6
- package/dist/src/tools/read-file.test.js +0 -319
- package/dist/src/tools/read-file.test.js.map +0 -1
- package/dist/src/tools/read-many-files.test.d.ts +0 -6
- package/dist/src/tools/read-many-files.test.js +0 -644
- package/dist/src/tools/read-many-files.test.js.map +0 -1
- package/dist/src/tools/shell.multibyte.test.d.ts +0 -6
- package/dist/src/tools/shell.multibyte.test.js +0 -75
- package/dist/src/tools/shell.multibyte.test.js.map +0 -1
- package/dist/src/tools/shell.test.d.ts +0 -6
- package/dist/src/tools/shell.test.js +0 -367
- package/dist/src/tools/shell.test.js.map +0 -1
- package/dist/src/tools/todo-pause.spec.d.ts +0 -6
- package/dist/src/tools/todo-pause.spec.js +0 -287
- package/dist/src/tools/todo-pause.spec.js.map +0 -1
- package/dist/src/tools/todo-read.test.d.ts +0 -6
- package/dist/src/tools/todo-read.test.js +0 -162
- package/dist/src/tools/todo-read.test.js.map +0 -1
- package/dist/src/tools/todo-schemas.test.d.ts +0 -6
- package/dist/src/tools/todo-schemas.test.js +0 -341
- package/dist/src/tools/todo-schemas.test.js.map +0 -1
- package/dist/src/tools/todo-store.test.d.ts +0 -6
- package/dist/src/tools/todo-store.test.js +0 -169
- package/dist/src/tools/todo-store.test.js.map +0 -1
- package/dist/src/tools/todo-write.test.d.ts +0 -6
- package/dist/src/tools/todo-write.test.js +0 -226
- package/dist/src/tools/todo-write.test.js.map +0 -1
- package/dist/src/tools/tool-registry.test.d.ts +0 -6
- package/dist/src/tools/tool-registry.test.js +0 -468
- package/dist/src/tools/tool-registry.test.js.map +0 -1
- package/dist/src/tools/tools.test.d.ts +0 -6
- package/dist/src/tools/tools.test.js +0 -117
- package/dist/src/tools/tools.test.js.map +0 -1
- package/dist/src/tools/web-fetch.integration.test.d.ts +0 -6
- package/dist/src/tools/web-fetch.integration.test.js +0 -532
- package/dist/src/tools/web-fetch.integration.test.js.map +0 -1
- package/dist/src/tools/web-search.test.d.ts +0 -6
- package/dist/src/tools/web-search.test.js +0 -230
- package/dist/src/tools/web-search.test.js.map +0 -1
- package/dist/src/tools/write-file.test.d.ts +0 -6
- package/dist/src/tools/write-file.test.js +0 -465
- package/dist/src/tools/write-file.test.js.map +0 -1
- package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
- package/dist/src/utils/bfsFileSearch.test.js +0 -191
- package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
- package/dist/src/utils/editCorrector.test.d.ts +0 -6
- package/dist/src/utils/editCorrector.test.js +0 -564
- package/dist/src/utils/editCorrector.test.js.map +0 -1
- package/dist/src/utils/editor.test.d.ts +0 -6
- package/dist/src/utils/editor.test.js +0 -445
- package/dist/src/utils/editor.test.js.map +0 -1
- package/dist/src/utils/environmentContext.test.d.ts +0 -6
- package/dist/src/utils/environmentContext.test.js +0 -139
- package/dist/src/utils/environmentContext.test.js.map +0 -1
- package/dist/src/utils/errorReporting.test.d.ts +0 -6
- package/dist/src/utils/errorReporting.test.js +0 -130
- package/dist/src/utils/errorReporting.test.js.map +0 -1
- package/dist/src/utils/fileUtils.test.d.ts +0 -6
- package/dist/src/utils/fileUtils.test.js +0 -363
- package/dist/src/utils/fileUtils.test.js.map +0 -1
- package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
- package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
- package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
- package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
- package/dist/src/utils/filesearch/fileSearch.test.js +0 -654
- package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
- package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
- package/dist/src/utils/filesearch/ignore.test.js +0 -57
- package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
- package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
- package/dist/src/utils/filesearch/result-cache.test.js +0 -47
- package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
- package/dist/src/utils/flashFallback.integration.test.d.ts +0 -6
- package/dist/src/utils/flashFallback.integration.test.js +0 -120
- package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
- package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
- package/dist/src/utils/generateContentResponseUtilities.test.js +0 -273
- package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
- package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
- package/dist/src/utils/getFolderStructure.test.js +0 -282
- package/dist/src/utils/getFolderStructure.test.js.map +0 -1
- package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
- package/dist/src/utils/gitIgnoreParser.test.js +0 -154
- package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
- package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
- package/dist/src/utils/memoryDiscovery.test.js +0 -181
- package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
- package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
- package/dist/src/utils/memoryImportProcessor.test.js +0 -715
- package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
- package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
- package/dist/src/utils/nextSpeakerChecker.test.js +0 -172
- package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
- package/dist/src/utils/partUtils.test.d.ts +0 -6
- package/dist/src/utils/partUtils.test.js +0 -130
- package/dist/src/utils/partUtils.test.js.map +0 -1
- package/dist/src/utils/paths.test.d.ts +0 -6
- package/dist/src/utils/paths.test.js +0 -153
- package/dist/src/utils/paths.test.js.map +0 -1
- package/dist/src/utils/retry.test.d.ts +0 -6
- package/dist/src/utils/retry.test.js +0 -322
- package/dist/src/utils/retry.test.js.map +0 -1
- package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
- package/dist/src/utils/safeJsonStringify.test.js +0 -61
- package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
- package/dist/src/utils/sanitization.test.d.ts +0 -6
- package/dist/src/utils/sanitization.test.js +0 -81
- package/dist/src/utils/sanitization.test.js.map +0 -1
- package/dist/src/utils/schemaValidator.test.d.ts +0 -6
- package/dist/src/utils/schemaValidator.test.js +0 -146
- package/dist/src/utils/schemaValidator.test.js.map +0 -1
- package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
- package/dist/src/utils/secure-browser-launcher.test.js +0 -149
- package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
- package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +0 -6
- package/dist/src/utils/shell-utils.shellReplacement.test.js +0 -149
- package/dist/src/utils/shell-utils.shellReplacement.test.js.map +0 -1
- package/dist/src/utils/shell-utils.test.d.ts +0 -6
- package/dist/src/utils/shell-utils.test.js +0 -200
- package/dist/src/utils/shell-utils.test.js.map +0 -1
- package/dist/src/utils/summarizer.test.d.ts +0 -6
- package/dist/src/utils/summarizer.test.js +0 -131
- package/dist/src/utils/summarizer.test.js.map +0 -1
- package/dist/src/utils/systemEncoding.test.d.ts +0 -6
- package/dist/src/utils/systemEncoding.test.js +0 -368
- package/dist/src/utils/systemEncoding.test.js.map +0 -1
- package/dist/src/utils/toolOutputLimiter.test.d.ts +0 -6
- package/dist/src/utils/toolOutputLimiter.test.js +0 -164
- package/dist/src/utils/toolOutputLimiter.test.js.map +0 -1
- package/dist/src/utils/unicodeUtils.test.d.ts +0 -6
- package/dist/src/utils/unicodeUtils.test.js +0 -120
- package/dist/src/utils/unicodeUtils.test.js.map +0 -1
- package/dist/src/utils/user_account.test.d.ts +0 -6
- package/dist/src/utils/user_account.test.js +0 -153
- package/dist/src/utils/user_account.test.js.map +0 -1
- package/dist/src/utils/user_id.test.d.ts +0 -6
- package/dist/src/utils/user_id.test.js +0 -21
- package/dist/src/utils/user_id.test.js.map +0 -1
- package/dist/src/utils/workspaceContext.test.d.ts +0 -6
- package/dist/src/utils/workspaceContext.test.js +0 -209
- package/dist/src/utils/workspaceContext.test.js.map +0 -1
|
@@ -1,544 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2025 Vybestack LLC
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
17
|
-
import { OpenAIProvider } from './OpenAIProvider.js';
|
|
18
|
-
import { NotYetImplemented } from '../../utils/errors.js';
|
|
19
|
-
import { TEST_PROVIDER_CONFIG } from '../test-utils/providerTestConfig.js';
|
|
20
|
-
// Mock OpenAI module
|
|
21
|
-
vi.mock('openai', () => ({
|
|
22
|
-
default: vi.fn().mockImplementation(() => ({
|
|
23
|
-
chat: {
|
|
24
|
-
completions: {
|
|
25
|
-
create: vi.fn(),
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
models: {
|
|
29
|
-
list: vi.fn(),
|
|
30
|
-
},
|
|
31
|
-
})),
|
|
32
|
-
}));
|
|
33
|
-
describe('OpenAI Provider OAuth Integration', () => {
|
|
34
|
-
let mockOAuthManager;
|
|
35
|
-
let originalEnv;
|
|
36
|
-
beforeEach(() => {
|
|
37
|
-
vi.clearAllMocks();
|
|
38
|
-
originalEnv = { ...process.env };
|
|
39
|
-
// Clear OPENAI_API_KEY for OAuth tests to work properly
|
|
40
|
-
delete process.env.OPENAI_API_KEY;
|
|
41
|
-
// Create a fresh mock OAuth manager for each test
|
|
42
|
-
mockOAuthManager = {
|
|
43
|
-
getToken: vi.fn(),
|
|
44
|
-
isAuthenticated: vi.fn(),
|
|
45
|
-
refreshToken: vi.fn(),
|
|
46
|
-
};
|
|
47
|
-
});
|
|
48
|
-
afterEach(() => {
|
|
49
|
-
// Restore original environment
|
|
50
|
-
process.env = originalEnv;
|
|
51
|
-
});
|
|
52
|
-
describe('Authentication Precedence', () => {
|
|
53
|
-
/**
|
|
54
|
-
* @requirement REQ-004.1
|
|
55
|
-
* @scenario Command line key takes precedence
|
|
56
|
-
* @given --key flag, env var, and OAuth all present
|
|
57
|
-
* @when isAuthenticated() called
|
|
58
|
-
* @then Uses command line key value
|
|
59
|
-
*/
|
|
60
|
-
it('should use command line API key when all auth methods present', async () => {
|
|
61
|
-
// Given: All auth methods available
|
|
62
|
-
const cliApiKey = 'cli-key-123';
|
|
63
|
-
process.env.OPENAI_API_KEY = 'env-key-456';
|
|
64
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-789');
|
|
65
|
-
// When: Creating provider with CLI key and OAuth manager
|
|
66
|
-
const provider = new OpenAIProvider(cliApiKey, undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
67
|
-
// Then: Should be authenticated (using CLI API key with highest precedence)
|
|
68
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
69
|
-
expect(isAuthenticated).toBe(true);
|
|
70
|
-
// Verify OAuth manager was not called since CLI key has precedence
|
|
71
|
-
expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
|
|
72
|
-
});
|
|
73
|
-
/**
|
|
74
|
-
* @requirement REQ-004.1
|
|
75
|
-
* @scenario Environment variable second precedence
|
|
76
|
-
* @given No --key flag, but OPENAI_API_KEY set
|
|
77
|
-
* @when isAuthenticated() called
|
|
78
|
-
* @then Uses environment variable value
|
|
79
|
-
* @and Ignores OAuth token if present
|
|
80
|
-
*/
|
|
81
|
-
it('should use environment variable when no CLI key provided', async () => {
|
|
82
|
-
// Given: Env var and OAuth available, no CLI key
|
|
83
|
-
process.env.OPENAI_API_KEY = 'env-key-456';
|
|
84
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-789');
|
|
85
|
-
// When: Creating provider without CLI key
|
|
86
|
-
const provider = new OpenAIProvider('', // Empty CLI key
|
|
87
|
-
undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
88
|
-
// Then: Should be authenticated (using environment variable with second precedence)
|
|
89
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
90
|
-
expect(isAuthenticated).toBe(true);
|
|
91
|
-
// Verify OAuth manager was not called since env var has precedence
|
|
92
|
-
expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
|
|
93
|
-
});
|
|
94
|
-
/**
|
|
95
|
-
* @requirement REQ-004.1
|
|
96
|
-
* @scenario OAuth token as fallback
|
|
97
|
-
* @given No --key flag, no env var
|
|
98
|
-
* @when isAuthenticated() called
|
|
99
|
-
* @then Uses OAuth token from manager
|
|
100
|
-
*/
|
|
101
|
-
it('should use OAuth token when no other auth methods available', async () => {
|
|
102
|
-
// Given: Only OAuth available
|
|
103
|
-
delete process.env.OPENAI_API_KEY;
|
|
104
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-789');
|
|
105
|
-
// When: Creating provider without CLI key or env var (defaults to standard OpenAI endpoint)
|
|
106
|
-
const provider = new OpenAIProvider('', // Empty CLI key
|
|
107
|
-
undefined, // Will default to standard OpenAI endpoint - does not support OAuth
|
|
108
|
-
TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
109
|
-
// Then: Should not be authenticated (OAuth not supported for standard OpenAI endpoints)
|
|
110
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
111
|
-
expect(isAuthenticated).toBe(false);
|
|
112
|
-
// OAuth manager should not be called since provider doesn't support OAuth for this endpoint
|
|
113
|
-
expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
|
|
114
|
-
});
|
|
115
|
-
/**
|
|
116
|
-
* @requirement REQ-004.1
|
|
117
|
-
* @scenario No authentication available
|
|
118
|
-
* @given No --key, no env var, no OAuth
|
|
119
|
-
* @when isAuthenticated() called
|
|
120
|
-
* @then Returns null, provider unavailable
|
|
121
|
-
*/
|
|
122
|
-
it('should return null when no authentication available', async () => {
|
|
123
|
-
// Given: No auth methods available
|
|
124
|
-
delete process.env.OPENAI_API_KEY;
|
|
125
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(null);
|
|
126
|
-
// When: Creating provider without any auth (defaults to standard OpenAI endpoint)
|
|
127
|
-
const provider = new OpenAIProvider('', // Empty CLI key
|
|
128
|
-
undefined, // Will default to standard OpenAI endpoint
|
|
129
|
-
TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
130
|
-
// Then: Should not be authenticated (no auth available, and OAuth not supported for standard OpenAI)
|
|
131
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
132
|
-
expect(isAuthenticated).toBe(false);
|
|
133
|
-
// OAuth manager should not be called since provider doesn't support OAuth for standard OpenAI
|
|
134
|
-
expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
describe('OAuth Token Usage and Lazy Triggering', () => {
|
|
138
|
-
/**
|
|
139
|
-
* @requirement REQ-004.3
|
|
140
|
-
* @scenario Lazy OAuth triggering during API call
|
|
141
|
-
* @given OAuth enabled but not yet authenticated
|
|
142
|
-
* @when Making API request that requires authentication
|
|
143
|
-
* @then OAuth flow triggered lazily before API call
|
|
144
|
-
* @and Token retrieved for use as API key
|
|
145
|
-
*/
|
|
146
|
-
it('should trigger OAuth flow lazily when API call requires authentication', async () => {
|
|
147
|
-
// Given: OAuth enabled but not yet authenticated
|
|
148
|
-
const qwenBaseUrl = 'https://dashscope.aliyuncs.com/compatible-mode/v1';
|
|
149
|
-
const oauthToken = 'lazy-oauth-token-123';
|
|
150
|
-
// Mock OAuth manager to indicate OAuth is enabled
|
|
151
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(oauthToken);
|
|
152
|
-
const mockIsOAuthEnabled = vi.fn().mockResolvedValue(true);
|
|
153
|
-
mockOAuthManager.isOAuthEnabled = mockIsOAuthEnabled;
|
|
154
|
-
// When: Creating provider and checking authentication (simulating API call prep)
|
|
155
|
-
const provider = new OpenAIProvider('', // Empty CLI key
|
|
156
|
-
qwenBaseUrl, // Qwen endpoint allows OAuth
|
|
157
|
-
TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
158
|
-
// Then: Should be authenticated through lazy OAuth triggering
|
|
159
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
160
|
-
expect(isAuthenticated).toBe(true);
|
|
161
|
-
// OAuth manager should have been called to get token
|
|
162
|
-
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
163
|
-
});
|
|
164
|
-
/**
|
|
165
|
-
* @requirement REQ-004.3
|
|
166
|
-
* @scenario OAuth skipped when higher priority auth available
|
|
167
|
-
* @given API key and OAuth both available
|
|
168
|
-
* @when Making API request
|
|
169
|
-
* @then Uses API key without triggering OAuth
|
|
170
|
-
*/
|
|
171
|
-
it('should skip OAuth when API key has higher precedence', async () => {
|
|
172
|
-
// Given: API key has higher precedence than OAuth
|
|
173
|
-
const apiKey = 'api-key-with-precedence';
|
|
174
|
-
const oauthToken = 'unused-oauth-token';
|
|
175
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(oauthToken);
|
|
176
|
-
// When: Creating provider with both API key and OAuth available
|
|
177
|
-
const provider = new OpenAIProvider(apiKey, 'https://dashscope.aliyuncs.com/compatible-mode/v1', TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
178
|
-
// Then: Should use API key without calling OAuth manager
|
|
179
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
180
|
-
expect(isAuthenticated).toBe(true);
|
|
181
|
-
// OAuth manager should not be called due to precedence
|
|
182
|
-
expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
|
|
183
|
-
});
|
|
184
|
-
/**
|
|
185
|
-
* @requirement REQ-004.3
|
|
186
|
-
* @scenario OAuth token used as API key in SDK
|
|
187
|
-
* @given Valid OAuth token from lazy triggering
|
|
188
|
-
* @when Token passed to OpenAI SDK
|
|
189
|
-
* @then SDK receives OAuth token as apiKey parameter
|
|
190
|
-
*/
|
|
191
|
-
it('should pass lazily-obtained OAuth token as API key to OpenAI SDK', async () => {
|
|
192
|
-
// Given: Valid OAuth token obtained through lazy triggering
|
|
193
|
-
const oauthToken = 'lazy-oauth-token-456';
|
|
194
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(oauthToken);
|
|
195
|
-
// When: Using OAuth token for Qwen endpoint
|
|
196
|
-
const provider = new OpenAIProvider('', 'https://dashscope.aliyuncs.com/compatible-mode/v1', TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
197
|
-
// Then: Should be authenticated with OAuth token available for SDK usage
|
|
198
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
199
|
-
expect(isAuthenticated).toBe(true);
|
|
200
|
-
// This token would be passed to OpenAI SDK constructor as apiKey
|
|
201
|
-
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
202
|
-
});
|
|
203
|
-
/**
|
|
204
|
-
* @requirement REQ-004.3
|
|
205
|
-
* @scenario OAuth disabled prevents lazy triggering
|
|
206
|
-
* @given OAuth disabled for provider
|
|
207
|
-
* @when API call attempted without other auth methods
|
|
208
|
-
* @then No OAuth flow triggered and authentication fails
|
|
209
|
-
*/
|
|
210
|
-
it('should not trigger OAuth when OAuth is disabled', async () => {
|
|
211
|
-
// Given: OAuth disabled, no other auth methods
|
|
212
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(null);
|
|
213
|
-
const mockIsOAuthEnabled = vi.fn().mockResolvedValue(false);
|
|
214
|
-
mockOAuthManager.isOAuthEnabled = mockIsOAuthEnabled;
|
|
215
|
-
// When: Creating provider with OAuth disabled
|
|
216
|
-
const provider = new OpenAIProvider('', 'https://dashscope.aliyuncs.com/compatible-mode/v1', TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
217
|
-
// Then: Should not authenticate without enabled OAuth
|
|
218
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
219
|
-
expect(isAuthenticated).toBe(false);
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
describe('Token Refresh', () => {
|
|
223
|
-
/**
|
|
224
|
-
* @requirement REQ-004.4
|
|
225
|
-
* @scenario Automatic token refresh
|
|
226
|
-
* @given OAuth token expires soon
|
|
227
|
-
* @when API call initiated
|
|
228
|
-
* @then Refreshes token before use
|
|
229
|
-
* @and Uses new token for request
|
|
230
|
-
*/
|
|
231
|
-
it('should automatically refresh expired OAuth token', async () => {
|
|
232
|
-
// Given: Token that will expire soon
|
|
233
|
-
const expiredToken = 'expired-token-123';
|
|
234
|
-
const newToken = 'refreshed-token-456';
|
|
235
|
-
vi.mocked(mockOAuthManager.getToken)
|
|
236
|
-
.mockResolvedValueOnce(expiredToken)
|
|
237
|
-
.mockResolvedValueOnce(newToken);
|
|
238
|
-
vi.mocked(mockOAuthManager.refreshToken).mockResolvedValue(newToken);
|
|
239
|
-
// When: Making API call with expired token
|
|
240
|
-
const _provider = new OpenAIProvider('', undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
241
|
-
// Then: Should fail with NotYetImplemented
|
|
242
|
-
expect(() => {
|
|
243
|
-
throw new NotYetImplemented('handleTokenRefresh not yet implemented');
|
|
244
|
-
}).toThrow(NotYetImplemented);
|
|
245
|
-
});
|
|
246
|
-
/**
|
|
247
|
-
* @requirement REQ-004.4
|
|
248
|
-
* @scenario Handle refresh failure
|
|
249
|
-
* @given Expired token, refresh fails
|
|
250
|
-
* @when API call attempted
|
|
251
|
-
* @then Provider becomes unavailable
|
|
252
|
-
* @and Returns appropriate error
|
|
253
|
-
*/
|
|
254
|
-
it('should handle token refresh failure gracefully', async () => {
|
|
255
|
-
// Given: Expired token that cannot be refreshed
|
|
256
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('expired-token');
|
|
257
|
-
vi.mocked(mockOAuthManager.refreshToken).mockRejectedValue(new Error('Refresh failed'));
|
|
258
|
-
// When: Attempting API call with failed refresh
|
|
259
|
-
const _provider = new OpenAIProvider('', undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
260
|
-
// Then: Should fail with NotYetImplemented
|
|
261
|
-
expect(() => {
|
|
262
|
-
throw new NotYetImplemented('handleRefreshFailure not yet implemented');
|
|
263
|
-
}).toThrow(NotYetImplemented);
|
|
264
|
-
});
|
|
265
|
-
});
|
|
266
|
-
describe('Provider Compatibility and BaseURL Validation', () => {
|
|
267
|
-
/**
|
|
268
|
-
* @requirement REQ-004.1
|
|
269
|
-
* @scenario Qwen endpoint detection and validation
|
|
270
|
-
* @given OPENAI_BASE_URL set to Qwen endpoint
|
|
271
|
-
* @when Provider validates OAuth compatibility
|
|
272
|
-
* @then Detects Qwen endpoint and allows OAuth usage
|
|
273
|
-
*/
|
|
274
|
-
it('should detect Qwen endpoints and validate OAuth usage', async () => {
|
|
275
|
-
// Given: Qwen base URL and OAuth token
|
|
276
|
-
const qwenBaseUrl = 'https://dashscope.aliyuncs.com/compatible-mode/v1';
|
|
277
|
-
const oauthToken = 'qwen-oauth-token-123';
|
|
278
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(oauthToken);
|
|
279
|
-
// When: Creating provider with Qwen URL and OAuth
|
|
280
|
-
const provider = new OpenAIProvider('', qwenBaseUrl, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
281
|
-
// Then: Should validate as Qwen-compatible endpoint and be authenticated via OAuth
|
|
282
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
283
|
-
expect(isAuthenticated).toBe(true);
|
|
284
|
-
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
285
|
-
});
|
|
286
|
-
/**
|
|
287
|
-
* @requirement REQ-004.1
|
|
288
|
-
* @scenario Default OpenAI endpoint with OAuth
|
|
289
|
-
* @given Standard OpenAI base URL
|
|
290
|
-
* @when Using OAuth authentication
|
|
291
|
-
* @then Should prevent OAuth usage and show appropriate error
|
|
292
|
-
*/
|
|
293
|
-
it('should prevent OAuth usage with standard OpenAI endpoints', async () => {
|
|
294
|
-
// Given: Standard OpenAI URL and OAuth token
|
|
295
|
-
const standardOpenAIUrl = 'https://api.openai.com/v1';
|
|
296
|
-
const oauthToken = 'oauth-token-123';
|
|
297
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(oauthToken);
|
|
298
|
-
// When: Creating provider with standard OpenAI URL and OAuth
|
|
299
|
-
const provider = new OpenAIProvider('', standardOpenAIUrl, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
300
|
-
// Then: Should not be authenticated without API key (OAuth not used for standard OpenAI)
|
|
301
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
302
|
-
expect(isAuthenticated).toBe(false);
|
|
303
|
-
// OAuth manager should not be called for standard OpenAI
|
|
304
|
-
expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
|
|
305
|
-
});
|
|
306
|
-
/**
|
|
307
|
-
* @requirement REQ-004.1
|
|
308
|
-
* @scenario Custom endpoint detection
|
|
309
|
-
* @given Custom base URL that's not Qwen
|
|
310
|
-
* @when Using OAuth authentication
|
|
311
|
-
* @then Should prevent OAuth usage for unknown custom endpoints
|
|
312
|
-
*/
|
|
313
|
-
it('should prevent OAuth usage for unrecognized custom endpoints', async () => {
|
|
314
|
-
// Given: Custom URL that's not Qwen
|
|
315
|
-
const customUrl = 'https://my-custom-ai.com/v1';
|
|
316
|
-
const oauthToken = 'oauth-token-123';
|
|
317
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(oauthToken);
|
|
318
|
-
// When: Creating provider with custom URL and OAuth
|
|
319
|
-
const provider = new OpenAIProvider('', customUrl, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
320
|
-
// Then: Should not be authenticated (OAuth not used for unrecognized endpoints)
|
|
321
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
322
|
-
expect(isAuthenticated).toBe(false);
|
|
323
|
-
});
|
|
324
|
-
/**
|
|
325
|
-
* @requirement REQ-004.1
|
|
326
|
-
* @scenario Qwen endpoint variants
|
|
327
|
-
* @given Different Qwen endpoint formats
|
|
328
|
-
* @when Validating OAuth compatibility
|
|
329
|
-
* @then Recognizes all valid Qwen endpoint patterns
|
|
330
|
-
*/
|
|
331
|
-
it('should recognize various Qwen endpoint formats', async () => {
|
|
332
|
-
const qwenEndpoints = [
|
|
333
|
-
'https://dashscope.aliyuncs.com/compatible-mode/v1',
|
|
334
|
-
'https://dashscope.aliyuncs.com/api/v1',
|
|
335
|
-
'https://api.qwen.com/v1',
|
|
336
|
-
];
|
|
337
|
-
const oauthToken = 'qwen-oauth-token-123';
|
|
338
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(oauthToken);
|
|
339
|
-
for (const endpoint of qwenEndpoints) {
|
|
340
|
-
// When: Creating provider with each Qwen endpoint variant
|
|
341
|
-
const provider = new OpenAIProvider('', endpoint, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
342
|
-
// Then: Should allow OAuth for all Qwen variants
|
|
343
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
344
|
-
expect(isAuthenticated).toBe(true);
|
|
345
|
-
}
|
|
346
|
-
});
|
|
347
|
-
/**
|
|
348
|
-
* @requirement REQ-006.1
|
|
349
|
-
* @scenario Backward compatibility with API keys
|
|
350
|
-
* @given Existing API key setup
|
|
351
|
-
* @when No OAuth manager provided
|
|
352
|
-
* @then Works exactly as before
|
|
353
|
-
*/
|
|
354
|
-
it('should maintain backward compatibility without OAuth manager', async () => {
|
|
355
|
-
// Given: Traditional API key setup, no OAuth manager
|
|
356
|
-
const apiKey = 'traditional-api-key-123';
|
|
357
|
-
// When: Creating provider without OAuth manager
|
|
358
|
-
const provider = new OpenAIProvider(apiKey, undefined, TEST_PROVIDER_CONFIG, undefined);
|
|
359
|
-
// Then: Should work exactly as before - provider should be authenticated with API key
|
|
360
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
361
|
-
expect(isAuthenticated).toBe(true);
|
|
362
|
-
});
|
|
363
|
-
});
|
|
364
|
-
describe('Authentication Status', () => {
|
|
365
|
-
/**
|
|
366
|
-
* @requirement REQ-004.1
|
|
367
|
-
* @scenario Check authentication status
|
|
368
|
-
* @given OAuth token present
|
|
369
|
-
* @when isAuthenticated() called
|
|
370
|
-
* @then Returns true
|
|
371
|
-
*/
|
|
372
|
-
it('should return true when OAuth token is available', async () => {
|
|
373
|
-
// Given: Valid OAuth token, no other auth
|
|
374
|
-
delete process.env.OPENAI_API_KEY;
|
|
375
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('valid-token');
|
|
376
|
-
// When: Checking authentication status with Qwen endpoint
|
|
377
|
-
const provider = new OpenAIProvider('', // Empty CLI key
|
|
378
|
-
'https://dashscope.aliyuncs.com/compatible-mode/v1', // Qwen endpoint that supports OAuth
|
|
379
|
-
TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
380
|
-
// Then: Should return true (OAuth token available)
|
|
381
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
382
|
-
expect(isAuthenticated).toBe(true);
|
|
383
|
-
// Verify OAuth manager was called
|
|
384
|
-
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
385
|
-
});
|
|
386
|
-
/**
|
|
387
|
-
* @requirement REQ-004.1
|
|
388
|
-
* @scenario Multiple auth sources status
|
|
389
|
-
* @given API key and OAuth both present
|
|
390
|
-
* @when isAuthenticated() called
|
|
391
|
-
* @then Returns true (uses precedence)
|
|
392
|
-
*/
|
|
393
|
-
it('should return true when multiple auth sources present', async () => {
|
|
394
|
-
// Given: Both API key and OAuth available
|
|
395
|
-
const apiKey = 'api-key-123';
|
|
396
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token');
|
|
397
|
-
// When: Checking status with multiple auth sources
|
|
398
|
-
const provider = new OpenAIProvider(apiKey, undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
399
|
-
// Then: Should return true (uses precedence - API key first)
|
|
400
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
401
|
-
expect(isAuthenticated).toBe(true);
|
|
402
|
-
// Verify OAuth manager was NOT called since API key has precedence
|
|
403
|
-
expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
|
|
404
|
-
});
|
|
405
|
-
/**
|
|
406
|
-
* @requirement REQ-004.1
|
|
407
|
-
* @scenario No authentication status
|
|
408
|
-
* @given No auth methods available
|
|
409
|
-
* @when isAuthenticated() called
|
|
410
|
-
* @then Returns false
|
|
411
|
-
*/
|
|
412
|
-
it('should return false when no authentication available', async () => {
|
|
413
|
-
// Given: No authentication methods
|
|
414
|
-
delete process.env.OPENAI_API_KEY;
|
|
415
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(null);
|
|
416
|
-
// When: Checking auth status with no auth but using Qwen endpoint
|
|
417
|
-
const provider = new OpenAIProvider('', // Empty CLI key
|
|
418
|
-
'https://dashscope.aliyuncs.com/compatible-mode/v1', // Qwen endpoint
|
|
419
|
-
TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
420
|
-
// Then: Should return false (no auth available, OAuth manager returned null)
|
|
421
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
422
|
-
expect(isAuthenticated).toBe(false);
|
|
423
|
-
// Verify OAuth manager was called but returned null
|
|
424
|
-
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
425
|
-
});
|
|
426
|
-
});
|
|
427
|
-
describe('Error Handling', () => {
|
|
428
|
-
/**
|
|
429
|
-
* @requirement REQ-004.4
|
|
430
|
-
* @scenario Handle missing OAuth manager
|
|
431
|
-
* @given No OAuth manager provided
|
|
432
|
-
* @when Checking for OAuth token
|
|
433
|
-
* @then Falls back to other auth methods
|
|
434
|
-
* @and No errors thrown
|
|
435
|
-
*/
|
|
436
|
-
it('should gracefully handle missing OAuth manager', async () => {
|
|
437
|
-
// Given: No OAuth manager provided
|
|
438
|
-
process.env.OPENAI_API_KEY = 'fallback-env-key';
|
|
439
|
-
// When: Creating provider without OAuth manager
|
|
440
|
-
const provider = new OpenAIProvider('', // Empty CLI key
|
|
441
|
-
undefined, TEST_PROVIDER_CONFIG, undefined);
|
|
442
|
-
// Then: Should fall back to environment variable and be authenticated
|
|
443
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
444
|
-
expect(isAuthenticated).toBe(true);
|
|
445
|
-
});
|
|
446
|
-
/**
|
|
447
|
-
* @requirement REQ-004.3
|
|
448
|
-
* @scenario Invalid token format
|
|
449
|
-
* @given Malformed OAuth token
|
|
450
|
-
* @when Used for API request
|
|
451
|
-
* @then Request fails with auth error
|
|
452
|
-
*/
|
|
453
|
-
it('should handle malformed OAuth token gracefully', async () => {
|
|
454
|
-
// Given: Malformed OAuth token
|
|
455
|
-
const malformedToken = 'invalid-token-format-!@#$%';
|
|
456
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(malformedToken);
|
|
457
|
-
// When: Using malformed token for API request
|
|
458
|
-
const _provider = new OpenAIProvider('', undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
459
|
-
// Then: Should fail with NotYetImplemented
|
|
460
|
-
expect(() => {
|
|
461
|
-
throw new NotYetImplemented('handleInvalidTokenFormat not yet implemented');
|
|
462
|
-
}).toThrow(NotYetImplemented);
|
|
463
|
-
});
|
|
464
|
-
/**
|
|
465
|
-
* @requirement REQ-004.4
|
|
466
|
-
* @scenario OAuth manager throws error
|
|
467
|
-
* @given OAuth manager throws unexpected error
|
|
468
|
-
* @when Attempting to get token
|
|
469
|
-
* @then Falls back to other auth methods
|
|
470
|
-
* @and Logs error appropriately
|
|
471
|
-
*/
|
|
472
|
-
it('should handle OAuth manager errors gracefully', async () => {
|
|
473
|
-
// Given: OAuth manager that throws errors
|
|
474
|
-
vi.mocked(mockOAuthManager.getToken).mockRejectedValue(new Error('OAuth service unavailable'));
|
|
475
|
-
process.env.OPENAI_API_KEY = 'fallback-key';
|
|
476
|
-
// When: OAuth manager fails
|
|
477
|
-
const provider = new OpenAIProvider('', // Empty CLI key
|
|
478
|
-
undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
479
|
-
// Then: Should fall back to environment variable (OAuth errors are caught) and be authenticated
|
|
480
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
481
|
-
expect(isAuthenticated).toBe(true);
|
|
482
|
-
});
|
|
483
|
-
/**
|
|
484
|
-
* @requirement REQ-004.3
|
|
485
|
-
* @scenario Network error during token refresh
|
|
486
|
-
* @given Network connectivity issues
|
|
487
|
-
* @when Token refresh attempted
|
|
488
|
-
* @then Provider handles error appropriately
|
|
489
|
-
* @and Provides meaningful error message
|
|
490
|
-
*/
|
|
491
|
-
it('should handle network errors during token refresh', async () => {
|
|
492
|
-
// Given: Network error during refresh
|
|
493
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('expired-token');
|
|
494
|
-
vi.mocked(mockOAuthManager.refreshToken).mockRejectedValue(new Error('Network error: ECONNREFUSED'));
|
|
495
|
-
// When: Network fails during refresh
|
|
496
|
-
const _provider = new OpenAIProvider('', undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
497
|
-
// Then: Should fail with NotYetImplemented
|
|
498
|
-
expect(() => {
|
|
499
|
-
throw new NotYetImplemented('handleNetworkError not yet implemented');
|
|
500
|
-
}).toThrow(NotYetImplemented);
|
|
501
|
-
});
|
|
502
|
-
});
|
|
503
|
-
describe('Integration Scenarios', () => {
|
|
504
|
-
/**
|
|
505
|
-
* @requirement REQ-004.1
|
|
506
|
-
* @scenario Complete OAuth flow integration
|
|
507
|
-
* @given OAuth manager with full capabilities
|
|
508
|
-
* @when Provider is used for API calls
|
|
509
|
-
* @then All OAuth functionality works seamlessly
|
|
510
|
-
*/
|
|
511
|
-
it('should integrate OAuth functionality end-to-end', async () => {
|
|
512
|
-
// Given: Full OAuth setup
|
|
513
|
-
const validToken = 'valid-oauth-token-123';
|
|
514
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(validToken);
|
|
515
|
-
vi.mocked(mockOAuthManager.isAuthenticated).mockResolvedValue(true);
|
|
516
|
-
// When: Using provider with complete OAuth integration
|
|
517
|
-
const _provider = new OpenAIProvider('', undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
518
|
-
// Then: Should fail with NotYetImplemented
|
|
519
|
-
expect(() => {
|
|
520
|
-
throw new NotYetImplemented('performEndToEndOAuthTest not yet implemented');
|
|
521
|
-
}).toThrow(NotYetImplemented);
|
|
522
|
-
});
|
|
523
|
-
/**
|
|
524
|
-
* @requirement REQ-006.1
|
|
525
|
-
* @scenario Migration from API key to OAuth
|
|
526
|
-
* @given Provider initially using API key
|
|
527
|
-
* @when OAuth manager is added later
|
|
528
|
-
* @then Seamlessly switches to OAuth precedence
|
|
529
|
-
*/
|
|
530
|
-
it('should handle migration from API key to OAuth', async () => {
|
|
531
|
-
// Given: Initial API key setup
|
|
532
|
-
const apiKey = 'existing-api-key';
|
|
533
|
-
// When: OAuth manager is added
|
|
534
|
-
const oauthToken = 'new-oauth-token';
|
|
535
|
-
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(oauthToken);
|
|
536
|
-
const _provider = new OpenAIProvider(apiKey, undefined, TEST_PROVIDER_CONFIG, mockOAuthManager);
|
|
537
|
-
// Then: Should fail with NotYetImplemented
|
|
538
|
-
expect(() => {
|
|
539
|
-
throw new NotYetImplemented('testMigrationScenario not yet implemented');
|
|
540
|
-
}).toThrow(NotYetImplemented);
|
|
541
|
-
});
|
|
542
|
-
});
|
|
543
|
-
});
|
|
544
|
-
//# sourceMappingURL=openai-oauth.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai-oauth.spec.js","sourceRoot":"","sources":["../../../../src/providers/openai/openai-oauth.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|