@vybestack/llxprt-code-core 0.1.14 → 0.1.16
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 +90 -2
- package/dist/src/code_assist/converter.d.ts +2 -1
- package/dist/src/code_assist/converter.js +2 -1
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +13 -10
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.d.ts +1 -1
- package/dist/src/code_assist/oauth2.test.js +15 -15
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +2 -2
- package/dist/src/code_assist/server.js +4 -4
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +9 -9
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/setup.js +1 -1
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js +2 -2
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/config/config.d.ts +37 -5
- package/dist/src/config/config.js +85 -15
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +33 -0
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/flashFallback.test.js +23 -47
- package/dist/src/config/flashFallback.test.js.map +1 -1
- package/dist/src/config/models.d.ts +1 -0
- package/dist/src/config/models.js +1 -0
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/profileManager.d.ts +42 -0
- package/dist/src/config/profileManager.js +114 -0
- package/dist/src/config/profileManager.js.map +1 -0
- package/dist/src/core/client.d.ts +15 -1
- package/dist/src/core/client.js +161 -45
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +291 -42
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +2 -2
- package/dist/src/core/contentGenerator.js +2 -7
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +6 -2
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +1 -3
- package/dist/src/core/coreToolScheduler.js +48 -19
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +90 -18
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.js +35 -2
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +2 -2
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/googleGenAIWrapper.d.ts +21 -0
- package/dist/src/core/googleGenAIWrapper.js +36 -0
- package/dist/src/core/googleGenAIWrapper.js.map +1 -0
- package/dist/src/core/googleGenAIWrapper.test.d.ts +6 -0
- package/dist/src/core/googleGenAIWrapper.test.js +104 -0
- package/dist/src/core/googleGenAIWrapper.test.js.map +1 -0
- package/dist/src/core/logger.d.ts +1 -0
- package/dist/src/core/logger.js +22 -8
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +60 -9
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +19 -4
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +8 -3
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts-async.test.d.ts +6 -0
- package/dist/src/core/prompts-async.test.js +115 -0
- package/dist/src/core/prompts-async.test.js.map +1 -0
- package/dist/src/core/prompts.d.ts +8 -1
- package/dist/src/core/prompts.js +97 -377
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +46 -192
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/tokenLimits.d.ts +1 -1
- package/dist/src/core/tokenLimits.js +6 -1
- package/dist/src/core/tokenLimits.js.map +1 -1
- package/dist/src/core/turn.d.ts +5 -1
- package/dist/src/core/turn.js +7 -2
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +2 -2
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +10 -0
- package/dist/src/ide/detect-ide.js +24 -0
- package/dist/src/ide/detect-ide.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +19 -7
- package/dist/src/ide/ide-client.js +110 -37
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-installer.d.ts +15 -0
- package/dist/src/ide/ide-installer.js +111 -0
- package/dist/src/ide/ide-installer.js.map +1 -0
- package/dist/src/ide/ide-installer.test.d.ts +6 -0
- package/dist/src/ide/ide-installer.test.js +78 -0
- package/dist/src/ide/ide-installer.test.js.map +1 -0
- package/dist/src/ide/ideContext.d.ts +212 -107
- package/dist/src/ide/ideContext.js +45 -44
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/ide/ideContext.test.js +254 -100
- package/dist/src/ide/ideContext.test.js.map +1 -1
- package/dist/src/index.d.ts +16 -0
- package/dist/src/index.js +20 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/{providers/IProviderConfig.js → integration-tests/todo-system.test.d.ts} +0 -1
- package/dist/src/integration-tests/todo-system.test.js +610 -0
- package/dist/src/integration-tests/todo-system.test.js.map +1 -0
- package/dist/src/mcp/oauth-provider.d.ts +5 -1
- package/dist/src/mcp/oauth-provider.js +39 -14
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +11 -10
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.d.ts +3 -1
- package/dist/src/mcp/oauth-token-storage.js +3 -1
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-utils.js +2 -2
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +1 -1
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/parsers/TextToolCallParser.d.ts +1 -0
- package/dist/src/parsers/TextToolCallParser.js +45 -3
- package/dist/src/parsers/TextToolCallParser.js.map +1 -1
- package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +1 -0
- package/dist/src/parsers/TextToolCallParser.multibyte.test.js +42 -0
- package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +1 -0
- package/dist/src/prompt-config/TemplateEngine.d.ts +35 -0
- package/dist/src/prompt-config/TemplateEngine.js +149 -0
- package/dist/src/prompt-config/TemplateEngine.js.map +1 -0
- package/dist/src/prompt-config/TemplateEngine.test.d.ts +1 -0
- package/dist/src/prompt-config/TemplateEngine.test.js +494 -0
- package/dist/src/prompt-config/TemplateEngine.test.js.map +1 -0
- package/dist/src/prompt-config/defaults/compression.md +58 -0
- package/dist/src/prompt-config/defaults/core-defaults.d.ts +5 -0
- package/dist/src/prompt-config/defaults/core-defaults.js +332 -0
- package/dist/src/prompt-config/defaults/core-defaults.js.map +1 -0
- package/dist/src/prompt-config/defaults/core.md +267 -0
- package/dist/src/prompt-config/defaults/env/git-repository.md +15 -0
- package/dist/src/prompt-config/defaults/env/ide-mode.md +3 -0
- package/dist/src/prompt-config/defaults/env/macos-seatbelt.md +3 -0
- package/dist/src/prompt-config/defaults/env/outside-of-sandbox.md +3 -0
- package/dist/src/prompt-config/defaults/env/sandbox.md +3 -0
- package/dist/src/prompt-config/defaults/index.d.ts +14 -0
- package/dist/src/prompt-config/defaults/index.js +21 -0
- package/dist/src/prompt-config/defaults/index.js.map +1 -0
- package/dist/src/prompt-config/defaults/provider-defaults.d.ts +5 -0
- package/dist/src/prompt-config/defaults/provider-defaults.js +26 -0
- package/dist/src/prompt-config/defaults/provider-defaults.js.map +1 -0
- package/dist/src/prompt-config/defaults/providers/gemini/models/gemini-2.5-flash/core.md +10 -0
- package/dist/src/prompt-config/defaults/service-defaults.d.ts +5 -0
- package/dist/src/prompt-config/defaults/service-defaults.js +52 -0
- package/dist/src/prompt-config/defaults/service-defaults.js.map +1 -0
- package/dist/src/prompt-config/defaults/tool-defaults.d.ts +5 -0
- package/dist/src/prompt-config/defaults/tool-defaults.js +81 -0
- package/dist/src/prompt-config/defaults/tool-defaults.js.map +1 -0
- package/dist/src/prompt-config/defaults/tools/edit.md +2 -0
- package/dist/src/prompt-config/defaults/tools/glob.md +2 -0
- package/dist/src/prompt-config/defaults/tools/grep.md +2 -0
- package/dist/src/prompt-config/defaults/tools/ls.md +1 -0
- package/dist/src/prompt-config/defaults/tools/memory.md +1 -0
- package/dist/src/prompt-config/defaults/tools/read-file.md +4 -0
- package/dist/src/prompt-config/defaults/tools/read-many-files.md +2 -0
- package/dist/src/prompt-config/defaults/tools/shell.md +5 -0
- package/dist/src/prompt-config/defaults/tools/todo-read.md +3 -0
- package/dist/src/prompt-config/defaults/tools/todo-write.md +50 -0
- package/dist/src/prompt-config/defaults/tools/web-fetch.md +3 -0
- package/dist/src/prompt-config/defaults/tools/web-search.md +3 -0
- package/dist/src/prompt-config/defaults/tools/write-file.md +4 -0
- package/dist/src/prompt-config/index.d.ts +16 -0
- package/dist/src/prompt-config/index.js +11 -0
- package/dist/src/prompt-config/index.js.map +1 -0
- package/dist/src/prompt-config/prompt-cache.d.ts +72 -0
- package/dist/src/prompt-config/prompt-cache.js +271 -0
- package/dist/src/prompt-config/prompt-cache.js.map +1 -0
- package/dist/src/prompt-config/prompt-cache.test.d.ts +6 -0
- package/dist/src/prompt-config/prompt-cache.test.js +437 -0
- package/dist/src/prompt-config/prompt-cache.test.js.map +1 -0
- package/dist/src/prompt-config/prompt-installer.d.ts +118 -0
- package/dist/src/prompt-config/prompt-installer.js +723 -0
- package/dist/src/prompt-config/prompt-installer.js.map +1 -0
- package/dist/src/prompt-config/prompt-installer.test.d.ts +7 -0
- package/dist/src/prompt-config/prompt-installer.test.js +503 -0
- package/dist/src/prompt-config/prompt-installer.test.js.map +1 -0
- package/dist/src/prompt-config/prompt-loader.d.ts +49 -0
- package/dist/src/prompt-config/prompt-loader.js +331 -0
- package/dist/src/prompt-config/prompt-loader.js.map +1 -0
- package/dist/src/prompt-config/prompt-loader.test.d.ts +5 -0
- package/dist/src/prompt-config/prompt-loader.test.js +413 -0
- package/dist/src/prompt-config/prompt-loader.test.js.map +1 -0
- package/dist/src/prompt-config/prompt-resolver.d.ts +74 -0
- package/dist/src/prompt-config/prompt-resolver.js +600 -0
- package/dist/src/prompt-config/prompt-resolver.js.map +1 -0
- package/dist/src/prompt-config/prompt-resolver.test.d.ts +1 -0
- package/dist/src/prompt-config/prompt-resolver.test.js +529 -0
- package/dist/src/prompt-config/prompt-resolver.test.js.map +1 -0
- package/dist/src/prompt-config/prompt-service.d.ts +108 -0
- package/dist/src/prompt-config/prompt-service.js +435 -0
- package/dist/src/prompt-config/prompt-service.js.map +1 -0
- package/dist/src/prompt-config/prompt-service.test.d.ts +1 -0
- package/dist/src/prompt-config/prompt-service.test.js +811 -0
- package/dist/src/prompt-config/prompt-service.test.js.map +1 -0
- package/dist/src/prompt-config/types.d.ts +30 -0
- package/dist/src/prompt-config/types.js +10 -0
- package/dist/src/prompt-config/types.js.map +1 -0
- package/dist/src/prompts/mcp-prompts.d.ts +8 -0
- package/dist/src/prompts/mcp-prompts.js +13 -0
- package/dist/src/prompts/mcp-prompts.js.map +1 -0
- package/dist/src/prompts/prompt-registry.d.ts +26 -0
- package/dist/src/prompts/prompt-registry.js +47 -0
- package/dist/src/prompts/prompt-registry.js.map +1 -0
- package/dist/src/providers/IProvider.d.ts +10 -0
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.js +24 -9
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.js.map +1 -1
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +1 -1
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.d.ts +14 -1
- package/dist/src/providers/anthropic/AnthropicProvider.js +28 -2
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +1 -0
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +48 -0
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +1 -0
- package/dist/src/providers/anthropic/AnthropicProvider.test.js +2 -1
- package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +11 -2
- package/dist/src/providers/gemini/GeminiProvider.integration.test.js +1 -1
- package/dist/src/providers/gemini/GeminiProvider.js +42 -25
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.d.ts +11 -0
- package/dist/src/providers/openai/OpenAIProvider.js +141 -24
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.responses.test.js +27 -3
- package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +2 -1
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.test.js +307 -7
- package/dist/src/providers/openai/OpenAIProvider.test.js.map +1 -1
- package/dist/src/providers/openai/buildResponsesRequest.js +19 -2
- package/dist/src/providers/openai/buildResponsesRequest.js.map +1 -1
- package/dist/src/providers/test-utils/providerTestConfig.d.ts +21 -0
- package/dist/src/providers/test-utils/providerTestConfig.js +23 -0
- package/dist/src/providers/test-utils/providerTestConfig.js.map +1 -0
- package/dist/src/providers/types/IProviderConfig.d.ts +6 -0
- package/dist/src/services/complexity-analyzer.d.ts +92 -0
- package/dist/src/services/complexity-analyzer.js +287 -0
- package/dist/src/services/complexity-analyzer.js.map +1 -0
- package/dist/src/services/fileDiscoveryService.test.js +101 -60
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
- package/dist/src/services/gitService.test.d.ts +1 -1
- package/dist/src/services/gitService.test.js +65 -102
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/index.d.ts +9 -0
- package/dist/src/services/index.js +8 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/loopDetectionService.d.ts +12 -0
- package/dist/src/services/loopDetectionService.js +62 -12
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +90 -11
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +34 -0
- package/dist/src/services/shellExecutionService.js +121 -0
- package/dist/src/services/shellExecutionService.js.map +1 -0
- package/dist/src/services/shellExecutionService.multibyte.test.d.ts +6 -0
- package/dist/src/services/shellExecutionService.multibyte.test.js +72 -0
- package/dist/src/services/shellExecutionService.multibyte.test.js.map +1 -0
- package/dist/src/services/shellExecutionService.test.d.ts +6 -0
- package/dist/src/services/shellExecutionService.test.js +264 -0
- package/dist/src/services/shellExecutionService.test.js.map +1 -0
- package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +6 -0
- package/dist/src/services/shellExecutionService.windows.multibyte.test.js +98 -0
- package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +1 -0
- package/dist/src/services/shellExecutionService.windows.test.d.ts +6 -0
- package/dist/src/services/shellExecutionService.windows.test.js +79 -0
- package/dist/src/services/shellExecutionService.windows.test.js.map +1 -0
- package/dist/src/services/todo-reminder-service.d.ts +42 -0
- package/dist/src/services/todo-reminder-service.js +77 -0
- package/dist/src/services/todo-reminder-service.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +4 -2
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +81 -34
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +6 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +19 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +2 -1
- package/dist/src/telemetry/constants.js +2 -1
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/file-exporters.d.ts +2 -2
- package/dist/src/telemetry/file-exporters.js +47 -20
- package/dist/src/telemetry/file-exporters.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -2
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +3 -2
- package/dist/src/telemetry/loggers.js +30 -6
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js +2 -0
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +13 -3
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/sdk.d.ts +1 -1
- package/dist/src/telemetry/sdk.js +71 -73
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/telemetry.test.js +7 -5
- package/dist/src/telemetry/telemetry.test.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +19 -4
- package/dist/src/telemetry/types.js +30 -4
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +3 -0
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
- package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
- package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
- package/dist/src/tools/edit.js +29 -4
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +104 -1
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.js +53 -17
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +32 -6
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +1 -1
- package/dist/src/tools/grep.js +81 -29
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +76 -9
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.js +4 -3
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.d.ts +6 -0
- package/dist/src/tools/ls.test.js +356 -0
- package/dist/src/tools/ls.test.js.map +1 -0
- package/dist/src/tools/mcp-client.d.ts +26 -2
- package/dist/src/tools/mcp-client.js +72 -24
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +87 -1
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +17 -2
- package/dist/src/tools/memoryTool.js +130 -13
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +88 -3
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +51 -62
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/read-file.js +8 -6
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +30 -2
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.js +22 -12
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +35 -2
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +8 -3
- package/dist/src/tools/shell.js +185 -114
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.multibyte.test.d.ts +6 -0
- package/dist/src/tools/shell.multibyte.test.js +74 -0
- package/dist/src/tools/shell.multibyte.test.js.map +1 -0
- package/dist/src/tools/shell.test.d.ts +1 -1
- package/dist/src/tools/shell.test.js +323 -138
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/todo-read.d.ts +4 -1
- package/dist/src/tools/todo-read.js +136 -20
- package/dist/src/tools/todo-read.js.map +1 -1
- package/dist/src/tools/todo-read.test.js +10 -6
- package/dist/src/tools/todo-read.test.js.map +1 -1
- package/dist/src/tools/todo-schemas.d.ts +4 -4
- package/dist/src/tools/todo-write.d.ts +3 -0
- package/dist/src/tools/todo-write.js +96 -9
- package/dist/src/tools/todo-write.js.map +1 -1
- package/dist/src/tools/todo-write.test.js +17 -13
- package/dist/src/tools/todo-write.test.js.map +1 -1
- package/dist/src/tools/tool-context.d.ts +14 -0
- package/dist/src/tools/tool-context.js +7 -0
- package/dist/src/tools/tool-context.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +22 -0
- package/dist/src/tools/tool-error.js +27 -0
- package/dist/src/tools/tool-error.js.map +1 -0
- package/dist/src/tools/tool-registry.d.ts +4 -1
- package/dist/src/tools/tool-registry.js +14 -5
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +10 -2
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +16 -1
- package/dist/src/tools/tools.js +2 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.js +18 -4
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/write-file.js +5 -3
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +36 -2
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/types/modelParams.d.ts +62 -0
- package/dist/src/types/modelParams.js +7 -0
- package/dist/src/types/modelParams.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.js +51 -27
- package/dist/src/utils/bfsFileSearch.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.test.js +59 -0
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
- package/dist/src/utils/editCorrector.js +2 -2
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editor.d.ts +1 -1
- package/dist/src/utils/editor.js +9 -0
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +21 -1
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/fileUtils.js +12 -1
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +29 -1
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/flashFallback.integration.test.js +8 -0
- package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
- package/dist/src/utils/formatters.d.ts +6 -0
- package/dist/src/utils/formatters.js +16 -0
- package/dist/src/utils/formatters.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +1 -1
- package/dist/src/utils/memoryDiscovery.js +61 -73
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +4 -3
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.d.ts +19 -12
- package/dist/src/utils/memoryImportProcessor.js +241 -82
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +595 -50
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.js +12 -27
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.test.js +8 -4
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/retry.d.ts +3 -0
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/sanitization.d.ts +20 -0
- package/dist/src/utils/sanitization.js +66 -0
- package/dist/src/utils/sanitization.js.map +1 -0
- package/dist/src/utils/sanitization.test.d.ts +6 -0
- package/dist/src/utils/sanitization.test.js +81 -0
- package/dist/src/utils/sanitization.test.js.map +1 -0
- package/dist/src/utils/secure-browser-launcher.d.ts +23 -0
- package/dist/src/utils/secure-browser-launcher.js +164 -0
- package/dist/src/utils/secure-browser-launcher.js.map +1 -0
- package/dist/src/utils/secure-browser-launcher.test.d.ts +6 -0
- package/dist/src/utils/secure-browser-launcher.test.js +149 -0
- package/dist/src/utils/secure-browser-launcher.test.js.map +1 -0
- package/dist/src/utils/shell-utils.d.ts +37 -3
- package/dist/src/utils/shell-utils.js +110 -47
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +146 -396
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/summarizer.js +2 -2
- package/dist/src/utils/summarizer.js.map +1 -1
- package/dist/src/utils/textUtils.d.ts +13 -0
- package/dist/src/utils/textUtils.js +28 -0
- package/dist/src/utils/textUtils.js.map +1 -0
- package/dist/src/utils/unicodeUtils.d.ts +44 -0
- package/dist/src/utils/unicodeUtils.js +93 -0
- package/dist/src/utils/unicodeUtils.js.map +1 -0
- package/dist/src/utils/unicodeUtils.test.d.ts +6 -0
- package/dist/src/utils/unicodeUtils.test.js +120 -0
- package/dist/src/utils/unicodeUtils.test.js.map +1 -0
- package/dist/src/utils/workspaceContext.d.ts +47 -0
- package/dist/src/utils/workspaceContext.js +106 -0
- package/dist/src/utils/workspaceContext.js.map +1 -0
- package/dist/src/utils/workspaceContext.test.d.ts +6 -0
- package/dist/src/utils/workspaceContext.test.js +209 -0
- package/dist/src/utils/workspaceContext.test.js.map +1 -0
- package/package.json +3 -2
- package/dist/src/providers/IProviderConfig.d.ts +0 -31
- package/dist/src/providers/IProviderConfig.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,494 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateEngine.test.js","sourceRoot":"","sources":["../../../src/prompt-config/TemplateEngine.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
You are the component that summarizes internal chat history into a given structure.
|
|
2
|
+
|
|
3
|
+
When the conversation history grows too large, you will be invoked to distill the entire history into a concise, structured XML snapshot. This snapshot is CRITICAL, as it will become the agent's _only_ memory of the past. The agent will resume its work based solely on this snapshot. All crucial details, plans, errors, and user directives MUST be preserved.
|
|
4
|
+
|
|
5
|
+
First, you will think through the entire history in a private <scratchpad>. Review the user's overall goal, the agent's actions, tool outputs, file modifications, and any unresolved questions. Identify every piece of information that is essential for future actions.
|
|
6
|
+
|
|
7
|
+
After your reasoning is complete, generate the final <state_snapshot> XML object. Be incredibly dense with information. Omit any irrelevant conversational filler.
|
|
8
|
+
|
|
9
|
+
The structure MUST be as follows:
|
|
10
|
+
|
|
11
|
+
<state_snapshot>
|
|
12
|
+
<overall_goal>
|
|
13
|
+
|
|
14
|
+
<!-- A single, concise sentence describing the user's high-level objective. -->
|
|
15
|
+
<!-- Example: "Refactor the authentication service to use a new JWT library." -->
|
|
16
|
+
|
|
17
|
+
</overall_goal>
|
|
18
|
+
|
|
19
|
+
<key_knowledge>
|
|
20
|
+
<!-- Crucial facts, conventions, and constraints the agent must remember based on the conversation history and interaction with the user. Use bullet points. -->
|
|
21
|
+
<!-- Example:
|
|
22
|
+
- Build Command: \`npm run build\`
|
|
23
|
+
- Testing: Tests are run with \`npm test\`. Test files must end in \`.test.ts\`.
|
|
24
|
+
- API Endpoint: The primary API endpoint is \`https://api.example.com/v2\`.
|
|
25
|
+
|
|
26
|
+
-->
|
|
27
|
+
</key_knowledge>
|
|
28
|
+
|
|
29
|
+
<file_system_state>
|
|
30
|
+
<!-- List files that have been created, read, modified, or deleted. Note their status and critical learnings. -->
|
|
31
|
+
<!-- Example:
|
|
32
|
+
- CWD: \`/home/user/project/src\`
|
|
33
|
+
- READ: \`package.json\` - Confirmed 'axios' is a dependency.
|
|
34
|
+
- MODIFIED: \`services/auth.ts\` - Replaced 'jsonwebtoken' with 'jose'.
|
|
35
|
+
- CREATED: \`tests/new-feature.test.ts\` - Initial test structure for the new feature.
|
|
36
|
+
-->
|
|
37
|
+
</file_system_state>
|
|
38
|
+
|
|
39
|
+
<recent_actions>
|
|
40
|
+
<!-- A summary of the last few significant agent actions and their outcomes. Focus on facts. -->
|
|
41
|
+
<!-- Example:
|
|
42
|
+
- Ran \`grep 'old_function'\` which returned 3 results in 2 files.
|
|
43
|
+
- Ran \`npm run test\`, which failed due to a snapshot mismatch in \`UserProfile.test.ts\`.
|
|
44
|
+
- Ran \`ls -F static/\` and discovered image assets are stored as \`.webp\`.
|
|
45
|
+
-->
|
|
46
|
+
</recent_actions>
|
|
47
|
+
|
|
48
|
+
<current_plan>
|
|
49
|
+
<!-- The agent's step-by-step plan. Mark completed steps. -->
|
|
50
|
+
<!-- Example:
|
|
51
|
+
1. [DONE] Identify all files using the deprecated 'UserAPI'.
|
|
52
|
+
2. [IN PROGRESS] Refactor \`src/components/UserProfile.tsx\` to use the new 'ProfileAPI'.
|
|
53
|
+
3. [TODO] Refactor the remaining files.
|
|
54
|
+
4. [TODO] Update tests to reflect the API change.
|
|
55
|
+
-->
|
|
56
|
+
</current_plan>
|
|
57
|
+
|
|
58
|
+
</state_snapshot>
|