@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,494 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
-
import { TemplateEngine } from './TemplateEngine.js';
|
|
3
|
-
describe('TemplateEngine', () => {
|
|
4
|
-
let engine;
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
engine = new TemplateEngine();
|
|
7
|
-
});
|
|
8
|
-
describe('basic variable substitution', () => {
|
|
9
|
-
it('should substitute known variables with actual values', () => {
|
|
10
|
-
/**
|
|
11
|
-
* @requirement REQ-004.1, REQ-004.2
|
|
12
|
-
* @scenario Template contains MODEL and PROVIDER variables
|
|
13
|
-
* @given Template: "You are running on {{PROVIDER}} using model {{MODEL}}"
|
|
14
|
-
* @when processTemplate() called with variables
|
|
15
|
-
* @then Returns: "You are running on anthropic using model claude-3-opus"
|
|
16
|
-
*/
|
|
17
|
-
const template = 'You are running on {{PROVIDER}} using model {{MODEL}}';
|
|
18
|
-
const variables = {
|
|
19
|
-
PROVIDER: 'anthropic',
|
|
20
|
-
MODEL: 'claude-3-opus',
|
|
21
|
-
};
|
|
22
|
-
const result = engine.processTemplate(template, variables);
|
|
23
|
-
expect(result).toBe('You are running on anthropic using model claude-3-opus');
|
|
24
|
-
});
|
|
25
|
-
it('should handle single variable substitution', () => {
|
|
26
|
-
/**
|
|
27
|
-
* @requirement REQ-004.1, REQ-004.2
|
|
28
|
-
* @scenario Template with only MODEL variable
|
|
29
|
-
* @given Template: "Current model: {{MODEL}}"
|
|
30
|
-
* @when processTemplate() called with MODEL value
|
|
31
|
-
* @then Returns: "Current model: gpt-4"
|
|
32
|
-
*/
|
|
33
|
-
const template = 'Current model: {{MODEL}}';
|
|
34
|
-
const variables = {
|
|
35
|
-
MODEL: 'gpt-4',
|
|
36
|
-
PROVIDER: 'openai',
|
|
37
|
-
};
|
|
38
|
-
const result = engine.processTemplate(template, variables);
|
|
39
|
-
expect(result).toBe('Current model: gpt-4');
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
describe('optional variable handling', () => {
|
|
43
|
-
it('should handle optional TOOL_NAME variable when provided', () => {
|
|
44
|
-
/**
|
|
45
|
-
* @requirement REQ-004.2
|
|
46
|
-
* @scenario Template with optional TOOL_NAME
|
|
47
|
-
* @given Template with TOOL_NAME variable
|
|
48
|
-
* @when Variable provided in context
|
|
49
|
-
* @then Substitutes the tool name
|
|
50
|
-
*/
|
|
51
|
-
const template = 'Use the {{TOOL_NAME}} tool carefully';
|
|
52
|
-
const variables = {
|
|
53
|
-
PROVIDER: 'gemini',
|
|
54
|
-
MODEL: 'gemini-pro',
|
|
55
|
-
TOOL_NAME: 'ReadFile',
|
|
56
|
-
};
|
|
57
|
-
const result = engine.processTemplate(template, variables);
|
|
58
|
-
expect(result).toBe('Use the ReadFile tool carefully');
|
|
59
|
-
});
|
|
60
|
-
it('should handle missing optional variables by replacing with empty string', () => {
|
|
61
|
-
/**
|
|
62
|
-
* @requirement REQ-004.2
|
|
63
|
-
* @scenario Template with optional variable not provided
|
|
64
|
-
* @given Template with TOOL_NAME but no value provided
|
|
65
|
-
* @when processTemplate called
|
|
66
|
-
* @then Replaces with empty string
|
|
67
|
-
*/
|
|
68
|
-
const template = 'Tool: {{TOOL_NAME}} for {{PROVIDER}}';
|
|
69
|
-
const variables = {
|
|
70
|
-
PROVIDER: 'ollama',
|
|
71
|
-
MODEL: 'llama2',
|
|
72
|
-
};
|
|
73
|
-
const result = engine.processTemplate(template, variables);
|
|
74
|
-
expect(result).toBe('Tool: for ollama');
|
|
75
|
-
});
|
|
76
|
-
it('should handle undefined variable values as empty strings', () => {
|
|
77
|
-
/**
|
|
78
|
-
* @requirement REQ-004.2
|
|
79
|
-
* @scenario Variable exists but value is undefined
|
|
80
|
-
* @given Template with variable whose value is undefined
|
|
81
|
-
* @when processTemplate called
|
|
82
|
-
* @then Treats undefined as empty string
|
|
83
|
-
*/
|
|
84
|
-
const template = 'Provider: {{PROVIDER}}, Tool: {{TOOL_NAME}}';
|
|
85
|
-
const variables = {
|
|
86
|
-
PROVIDER: 'azure',
|
|
87
|
-
MODEL: 'gpt-35-turbo',
|
|
88
|
-
TOOL_NAME: undefined,
|
|
89
|
-
};
|
|
90
|
-
const result = engine.processTemplate(template, variables);
|
|
91
|
-
expect(result).toBe('Provider: azure, Tool: ');
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
describe('malformed variable handling', () => {
|
|
95
|
-
it('should leave malformed variables unchanged', () => {
|
|
96
|
-
/**
|
|
97
|
-
* @requirement REQ-004.3
|
|
98
|
-
* @scenario Template contains malformed variable syntax
|
|
99
|
-
* @given Various malformed patterns
|
|
100
|
-
* @when processTemplate called
|
|
101
|
-
* @then Malformed parts remain unchanged
|
|
102
|
-
*/
|
|
103
|
-
const template = 'Valid {{MODEL}} but {{BROKEN and {{UNCLOSED';
|
|
104
|
-
const variables = {
|
|
105
|
-
MODEL: 'gpt-4',
|
|
106
|
-
PROVIDER: 'openai',
|
|
107
|
-
};
|
|
108
|
-
const result = engine.processTemplate(template, variables);
|
|
109
|
-
expect(result).toBe('Valid gpt-4 but {{BROKEN and {{UNCLOSED');
|
|
110
|
-
});
|
|
111
|
-
it('should handle nested brackets without processing inner content', () => {
|
|
112
|
-
/**
|
|
113
|
-
* @requirement REQ-004.3
|
|
114
|
-
* @scenario Nested variable brackets
|
|
115
|
-
* @given Template with {{{{VAR}}}}
|
|
116
|
-
* @when processTemplate called
|
|
117
|
-
* @then Only outer brackets processed
|
|
118
|
-
*/
|
|
119
|
-
const template = 'Nested {{{{MODEL}}}} here';
|
|
120
|
-
const variables = {
|
|
121
|
-
MODEL: 'claude',
|
|
122
|
-
PROVIDER: 'anthropic',
|
|
123
|
-
};
|
|
124
|
-
const result = engine.processTemplate(template, variables);
|
|
125
|
-
// Should process outer brackets, leaving {{claude}}
|
|
126
|
-
expect(result).toBe('Nested {{claude}} here');
|
|
127
|
-
});
|
|
128
|
-
it('should handle mismatched brackets', () => {
|
|
129
|
-
/**
|
|
130
|
-
* @requirement REQ-004.3
|
|
131
|
-
* @scenario Template with mismatched brackets
|
|
132
|
-
* @given }}{{MODEL}}{{ pattern
|
|
133
|
-
* @when processTemplate called
|
|
134
|
-
* @then Only properly formed variables substituted
|
|
135
|
-
*/
|
|
136
|
-
const template = '}}Start {{MODEL}} End{{';
|
|
137
|
-
const variables = {
|
|
138
|
-
MODEL: 'llama-2',
|
|
139
|
-
PROVIDER: 'meta',
|
|
140
|
-
};
|
|
141
|
-
const result = engine.processTemplate(template, variables);
|
|
142
|
-
expect(result).toBe('}}Start llama-2 End{{');
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
describe('edge cases', () => {
|
|
146
|
-
it('should handle empty template', () => {
|
|
147
|
-
/**
|
|
148
|
-
* @requirement REQ-004.1
|
|
149
|
-
* @scenario Empty template string
|
|
150
|
-
* @given Empty string template
|
|
151
|
-
* @when processTemplate called
|
|
152
|
-
* @then Returns empty string
|
|
153
|
-
*/
|
|
154
|
-
const result = engine.processTemplate('', {
|
|
155
|
-
MODEL: 'test',
|
|
156
|
-
PROVIDER: 'test',
|
|
157
|
-
});
|
|
158
|
-
expect(result).toBe('');
|
|
159
|
-
});
|
|
160
|
-
it('should handle template with no variables', () => {
|
|
161
|
-
/**
|
|
162
|
-
* @requirement REQ-004.1
|
|
163
|
-
* @scenario Template without any variables
|
|
164
|
-
* @given Plain text template
|
|
165
|
-
* @when processTemplate called
|
|
166
|
-
* @then Returns unchanged template
|
|
167
|
-
*/
|
|
168
|
-
const template = 'This is plain text with no variables';
|
|
169
|
-
const result = engine.processTemplate(template, {
|
|
170
|
-
MODEL: 'test',
|
|
171
|
-
PROVIDER: 'test',
|
|
172
|
-
});
|
|
173
|
-
expect(result).toBe(template);
|
|
174
|
-
});
|
|
175
|
-
it('should handle variables at start and end of template', () => {
|
|
176
|
-
/**
|
|
177
|
-
* @requirement REQ-004.1
|
|
178
|
-
* @scenario Variables at boundaries
|
|
179
|
-
* @given Template starting and ending with variables
|
|
180
|
-
* @when processTemplate called
|
|
181
|
-
* @then All variables substituted correctly
|
|
182
|
-
*/
|
|
183
|
-
const template = '{{PROVIDER}} is the provider and model is {{MODEL}}';
|
|
184
|
-
const variables = {
|
|
185
|
-
PROVIDER: 'azure',
|
|
186
|
-
MODEL: 'gpt-35-turbo',
|
|
187
|
-
};
|
|
188
|
-
const result = engine.processTemplate(template, variables);
|
|
189
|
-
expect(result).toBe('azure is the provider and model is gpt-35-turbo');
|
|
190
|
-
});
|
|
191
|
-
it('should handle null content', () => {
|
|
192
|
-
/**
|
|
193
|
-
* @requirement REQ-004.1
|
|
194
|
-
* @scenario Null template content
|
|
195
|
-
* @given null passed as template
|
|
196
|
-
* @when processTemplate called
|
|
197
|
-
* @then Returns empty string
|
|
198
|
-
*/
|
|
199
|
-
const result = engine.processTemplate(null, {
|
|
200
|
-
MODEL: 'test',
|
|
201
|
-
PROVIDER: 'test',
|
|
202
|
-
});
|
|
203
|
-
expect(result).toBe('');
|
|
204
|
-
});
|
|
205
|
-
it('should handle undefined content', () => {
|
|
206
|
-
/**
|
|
207
|
-
* @requirement REQ-004.1
|
|
208
|
-
* @scenario Undefined template content
|
|
209
|
-
* @given undefined passed as template
|
|
210
|
-
* @when processTemplate called
|
|
211
|
-
* @then Returns empty string
|
|
212
|
-
*/
|
|
213
|
-
const result = engine.processTemplate(undefined, {
|
|
214
|
-
MODEL: 'test',
|
|
215
|
-
PROVIDER: 'test',
|
|
216
|
-
});
|
|
217
|
-
expect(result).toBe('');
|
|
218
|
-
});
|
|
219
|
-
it('should handle null variables map', () => {
|
|
220
|
-
/**
|
|
221
|
-
* @requirement REQ-004.1
|
|
222
|
-
* @scenario Null variables map
|
|
223
|
-
* @given Valid template but null variables
|
|
224
|
-
* @when processTemplate called
|
|
225
|
-
* @then Variables treated as missing (empty string)
|
|
226
|
-
*/
|
|
227
|
-
const template = 'Model: {{MODEL}}';
|
|
228
|
-
const result = engine.processTemplate(template, null);
|
|
229
|
-
expect(result).toBe('Model: ');
|
|
230
|
-
});
|
|
231
|
-
it('should handle undefined variables map', () => {
|
|
232
|
-
/**
|
|
233
|
-
* @requirement REQ-004.1
|
|
234
|
-
* @scenario Undefined variables map
|
|
235
|
-
* @given Valid template but undefined variables
|
|
236
|
-
* @when processTemplate called
|
|
237
|
-
* @then Variables treated as missing (empty string)
|
|
238
|
-
*/
|
|
239
|
-
const template = 'Provider: {{PROVIDER}}';
|
|
240
|
-
const result = engine.processTemplate(template, undefined);
|
|
241
|
-
expect(result).toBe('Provider: ');
|
|
242
|
-
});
|
|
243
|
-
});
|
|
244
|
-
describe('complex templates', () => {
|
|
245
|
-
it('should handle multiple occurrences of same variable', () => {
|
|
246
|
-
/**
|
|
247
|
-
* @requirement REQ-004.1
|
|
248
|
-
* @scenario Same variable appears multiple times
|
|
249
|
-
* @given Template with repeated variables
|
|
250
|
-
* @when processTemplate called
|
|
251
|
-
* @then All occurrences substituted
|
|
252
|
-
*/
|
|
253
|
-
const template = '{{MODEL}} is great. I repeat, {{MODEL}} is great!';
|
|
254
|
-
const variables = {
|
|
255
|
-
MODEL: 'claude-3',
|
|
256
|
-
PROVIDER: 'anthropic',
|
|
257
|
-
};
|
|
258
|
-
const result = engine.processTemplate(template, variables);
|
|
259
|
-
expect(result).toBe('claude-3 is great. I repeat, claude-3 is great!');
|
|
260
|
-
});
|
|
261
|
-
it('should handle adjacent variables', () => {
|
|
262
|
-
/**
|
|
263
|
-
* @requirement REQ-004.1
|
|
264
|
-
* @scenario Variables with no space between
|
|
265
|
-
* @given {{VAR1}}{{VAR2}}
|
|
266
|
-
* @when processTemplate called
|
|
267
|
-
* @then Both substituted correctly
|
|
268
|
-
*/
|
|
269
|
-
const template = '{{PROVIDER}}{{MODEL}}';
|
|
270
|
-
const variables = {
|
|
271
|
-
PROVIDER: 'google/',
|
|
272
|
-
MODEL: 'palm2',
|
|
273
|
-
};
|
|
274
|
-
const result = engine.processTemplate(template, variables);
|
|
275
|
-
expect(result).toBe('google/palm2');
|
|
276
|
-
});
|
|
277
|
-
it('should handle all three variables in one template', () => {
|
|
278
|
-
/**
|
|
279
|
-
* @requirement REQ-004.2
|
|
280
|
-
* @scenario Template using all supported variables
|
|
281
|
-
* @given Template with PROVIDER, MODEL, and TOOL_NAME
|
|
282
|
-
* @when processTemplate called
|
|
283
|
-
* @then All variables substituted
|
|
284
|
-
*/
|
|
285
|
-
const template = 'Using {{PROVIDER}} provider with {{MODEL}} model for {{TOOL_NAME}} tool';
|
|
286
|
-
const variables = {
|
|
287
|
-
PROVIDER: 'anthropic',
|
|
288
|
-
MODEL: 'claude-3-sonnet',
|
|
289
|
-
TOOL_NAME: 'WebSearch',
|
|
290
|
-
};
|
|
291
|
-
const result = engine.processTemplate(template, variables);
|
|
292
|
-
expect(result).toBe('Using anthropic provider with claude-3-sonnet model for WebSearch tool');
|
|
293
|
-
});
|
|
294
|
-
it('should handle variables with whitespace inside brackets', () => {
|
|
295
|
-
/**
|
|
296
|
-
* @requirement REQ-004.1
|
|
297
|
-
* @scenario Variables with internal whitespace
|
|
298
|
-
* @given {{ MODEL }} with spaces
|
|
299
|
-
* @when processTemplate called
|
|
300
|
-
* @then Whitespace trimmed, variable substituted
|
|
301
|
-
*/
|
|
302
|
-
const template = 'Model: {{ MODEL }} and {{ PROVIDER }}';
|
|
303
|
-
const variables = {
|
|
304
|
-
MODEL: 'gpt-4',
|
|
305
|
-
PROVIDER: 'openai',
|
|
306
|
-
};
|
|
307
|
-
const result = engine.processTemplate(template, variables);
|
|
308
|
-
expect(result).toBe('Model: gpt-4 and openai');
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
describe('special characters in values', () => {
|
|
312
|
-
it('should handle special characters in variable values', () => {
|
|
313
|
-
/**
|
|
314
|
-
* @requirement REQ-004.1
|
|
315
|
-
* @scenario Variable values contain special characters
|
|
316
|
-
* @given Values with quotes, brackets, etc
|
|
317
|
-
* @when processTemplate called
|
|
318
|
-
* @then Values inserted as-is
|
|
319
|
-
*/
|
|
320
|
-
const template = 'Model: {{MODEL}}';
|
|
321
|
-
const variables = {
|
|
322
|
-
MODEL: 'model-with-"quotes"-and-{brackets}',
|
|
323
|
-
PROVIDER: 'test',
|
|
324
|
-
};
|
|
325
|
-
const result = engine.processTemplate(template, variables);
|
|
326
|
-
expect(result).toBe('Model: model-with-"quotes"-and-{brackets}');
|
|
327
|
-
});
|
|
328
|
-
it('should handle newlines in variable values', () => {
|
|
329
|
-
/**
|
|
330
|
-
* @requirement REQ-004.1
|
|
331
|
-
* @scenario Variable values contain newlines
|
|
332
|
-
* @given Values with line breaks
|
|
333
|
-
* @when processTemplate called
|
|
334
|
-
* @then Values inserted preserving newlines
|
|
335
|
-
*/
|
|
336
|
-
const template = 'Description: {{MODEL}}';
|
|
337
|
-
const variables = {
|
|
338
|
-
MODEL: 'line1\nline2\nline3',
|
|
339
|
-
PROVIDER: 'test',
|
|
340
|
-
};
|
|
341
|
-
const result = engine.processTemplate(template, variables);
|
|
342
|
-
expect(result).toBe('Description: line1\nline2\nline3');
|
|
343
|
-
});
|
|
344
|
-
it('should handle unicode in variable values', () => {
|
|
345
|
-
/**
|
|
346
|
-
* @requirement REQ-004.1
|
|
347
|
-
* @scenario Variable values contain unicode
|
|
348
|
-
* @given Values with emoji and unicode characters
|
|
349
|
-
* @when processTemplate called
|
|
350
|
-
* @then Values inserted preserving unicode
|
|
351
|
-
*/
|
|
352
|
-
const template = 'Model: {{MODEL}}';
|
|
353
|
-
const variables = {
|
|
354
|
-
MODEL: 'claude-3-🚀-日本語',
|
|
355
|
-
PROVIDER: 'anthropic',
|
|
356
|
-
};
|
|
357
|
-
const result = engine.processTemplate(template, variables);
|
|
358
|
-
expect(result).toBe('Model: claude-3-🚀-日本語');
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
describe('debug logging', () => {
|
|
362
|
-
let originalDebug;
|
|
363
|
-
let consoleSpy;
|
|
364
|
-
beforeEach(() => {
|
|
365
|
-
originalDebug = process.env.DEBUG;
|
|
366
|
-
consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
367
|
-
});
|
|
368
|
-
afterEach(() => {
|
|
369
|
-
process.env.DEBUG = originalDebug;
|
|
370
|
-
consoleSpy.mockRestore();
|
|
371
|
-
});
|
|
372
|
-
it('should log substitutions when DEBUG=1', () => {
|
|
373
|
-
/**
|
|
374
|
-
* @requirement REQ-010.4
|
|
375
|
-
* @scenario DEBUG environment variable is set
|
|
376
|
-
* @given DEBUG=1 and template with variables
|
|
377
|
-
* @when processTemplate called
|
|
378
|
-
* @then Logs variable substitutions
|
|
379
|
-
*/
|
|
380
|
-
process.env.DEBUG = '1';
|
|
381
|
-
const template = 'Provider: {{PROVIDER}}';
|
|
382
|
-
const variables = {
|
|
383
|
-
PROVIDER: 'anthropic',
|
|
384
|
-
MODEL: 'claude',
|
|
385
|
-
};
|
|
386
|
-
engine.processTemplate(template, variables);
|
|
387
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('PROVIDER'));
|
|
388
|
-
});
|
|
389
|
-
it('should not log when DEBUG is not set', () => {
|
|
390
|
-
/**
|
|
391
|
-
* @requirement REQ-010.4
|
|
392
|
-
* @scenario DEBUG environment variable is not set
|
|
393
|
-
* @given No DEBUG and template with variables
|
|
394
|
-
* @when processTemplate called
|
|
395
|
-
* @then No logging occurs
|
|
396
|
-
*/
|
|
397
|
-
delete process.env.DEBUG;
|
|
398
|
-
const template = 'Provider: {{PROVIDER}}';
|
|
399
|
-
const variables = {
|
|
400
|
-
PROVIDER: 'anthropic',
|
|
401
|
-
MODEL: 'claude',
|
|
402
|
-
};
|
|
403
|
-
engine.processTemplate(template, variables);
|
|
404
|
-
expect(consoleSpy).not.toHaveBeenCalled();
|
|
405
|
-
});
|
|
406
|
-
it('should log through options when debug option is true', () => {
|
|
407
|
-
/**
|
|
408
|
-
* @requirement REQ-010.4
|
|
409
|
-
* @scenario Debug option passed explicitly
|
|
410
|
-
* @given options.debug = true
|
|
411
|
-
* @when processTemplate called
|
|
412
|
-
* @then Logs variable substitutions
|
|
413
|
-
*/
|
|
414
|
-
const template = 'Model: {{MODEL}}';
|
|
415
|
-
const variables = {
|
|
416
|
-
MODEL: 'gpt-4',
|
|
417
|
-
PROVIDER: 'openai',
|
|
418
|
-
};
|
|
419
|
-
const options = { debug: true };
|
|
420
|
-
engine.processTemplate(template, variables, options);
|
|
421
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('MODEL'));
|
|
422
|
-
});
|
|
423
|
-
it('should log multiple substitutions', () => {
|
|
424
|
-
/**
|
|
425
|
-
* @requirement REQ-010.4
|
|
426
|
-
* @scenario Multiple variables substituted
|
|
427
|
-
* @given Template with multiple variables and DEBUG=1
|
|
428
|
-
* @when processTemplate called
|
|
429
|
-
* @then Logs each substitution
|
|
430
|
-
*/
|
|
431
|
-
process.env.DEBUG = '1';
|
|
432
|
-
const template = '{{PROVIDER}} uses {{MODEL}} with {{TOOL_NAME}}';
|
|
433
|
-
const variables = {
|
|
434
|
-
PROVIDER: 'google',
|
|
435
|
-
MODEL: 'gemini-pro',
|
|
436
|
-
TOOL_NAME: 'Search',
|
|
437
|
-
};
|
|
438
|
-
engine.processTemplate(template, variables);
|
|
439
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('PROVIDER'));
|
|
440
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('MODEL'));
|
|
441
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('TOOL_NAME'));
|
|
442
|
-
});
|
|
443
|
-
});
|
|
444
|
-
describe('variable extraction edge cases', () => {
|
|
445
|
-
it('should handle empty variable names', () => {
|
|
446
|
-
/**
|
|
447
|
-
* @requirement REQ-004.3
|
|
448
|
-
* @scenario Empty variable name between brackets
|
|
449
|
-
* @given Template with {{}}
|
|
450
|
-
* @when processTemplate called
|
|
451
|
-
* @then Empty brackets left unchanged
|
|
452
|
-
*/
|
|
453
|
-
const template = 'Empty {{}} variable';
|
|
454
|
-
const variables = { MODEL: 'test', PROVIDER: 'test' };
|
|
455
|
-
const result = engine.processTemplate(template, variables);
|
|
456
|
-
expect(result).toBe('Empty {{}} variable');
|
|
457
|
-
});
|
|
458
|
-
it('should handle very long variable names', () => {
|
|
459
|
-
/**
|
|
460
|
-
* @requirement REQ-004.1
|
|
461
|
-
* @scenario Variable with very long name
|
|
462
|
-
* @given Template with 100+ character variable name
|
|
463
|
-
* @when processTemplate called
|
|
464
|
-
* @then Variable processed normally
|
|
465
|
-
*/
|
|
466
|
-
const longVarName = 'A'.repeat(100);
|
|
467
|
-
const template = `Long {{${longVarName}}} variable`;
|
|
468
|
-
const variables = {
|
|
469
|
-
[longVarName]: 'replaced',
|
|
470
|
-
MODEL: 'test',
|
|
471
|
-
PROVIDER: 'test',
|
|
472
|
-
};
|
|
473
|
-
const result = engine.processTemplate(template, variables);
|
|
474
|
-
expect(result).toBe('Long replaced variable');
|
|
475
|
-
});
|
|
476
|
-
it('should handle consecutive bracket patterns', () => {
|
|
477
|
-
/**
|
|
478
|
-
* @requirement REQ-004.1
|
|
479
|
-
* @scenario Multiple {{ }} patterns in sequence
|
|
480
|
-
* @given {{{{}}}}{{MODEL}}{{{{}}}}
|
|
481
|
-
* @when processTemplate called
|
|
482
|
-
* @then Only valid variables substituted
|
|
483
|
-
*/
|
|
484
|
-
const template = '{{{{}}}}{{MODEL}}{{{{}}}}';
|
|
485
|
-
const variables = {
|
|
486
|
-
MODEL: 'claude',
|
|
487
|
-
PROVIDER: 'anthropic',
|
|
488
|
-
};
|
|
489
|
-
const result = engine.processTemplate(template, variables);
|
|
490
|
-
expect(result).toBe('{{{{}}}}claude{{{{}}}}');
|
|
491
|
-
});
|
|
492
|
-
});
|
|
493
|
-
});
|
|
494
|
-
//# sourceMappingURL=TemplateEngine.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateEngine.test.js","sourceRoot":"","sources":["../../../src/prompt-config/TemplateEngine.test.ts"],"names":[],"mappings":"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"}
|