@vybestack/llxprt-code-core 0.1.19-alpha → 0.1.19-gamma
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -2
- package/dist/index.d.ts +6 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/src/auth/anthropic-device-flow.d.ts +53 -0
- package/dist/src/auth/anthropic-device-flow.js +208 -0
- package/dist/src/auth/anthropic-device-flow.js.map +1 -0
- package/dist/src/auth/precedence.d.ts +55 -0
- package/dist/src/auth/precedence.js +211 -0
- package/dist/src/auth/precedence.js.map +1 -0
- package/dist/src/auth/qwen-device-flow.d.ts +45 -0
- package/dist/src/auth/qwen-device-flow.js +179 -0
- package/dist/src/auth/qwen-device-flow.js.map +1 -0
- package/dist/src/auth/token-store.d.ts +66 -0
- package/dist/src/auth/token-store.js +151 -0
- package/dist/src/auth/token-store.js.map +1 -0
- package/dist/src/auth/types.d.ts +130 -0
- package/dist/src/auth/types.js +60 -0
- package/dist/src/auth/types.js.map +1 -0
- package/dist/src/code_assist/converter.d.ts +2 -1
- package/dist/src/code_assist/converter.js +1 -1
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +2 -1
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/config/config.d.ts +61 -2
- package/dist/src/config/config.js +134 -4
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/endpoints.d.ts +60 -0
- package/dist/src/config/endpoints.js +126 -0
- package/dist/src/config/endpoints.js.map +1 -0
- package/dist/src/config/profileManager.d.ts +14 -4
- package/dist/src/config/profileManager.js +90 -11
- package/dist/src/config/profileManager.js.map +1 -1
- package/dist/src/core/client.js +9 -12
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +4 -1
- package/dist/src/core/contentGenerator.js +3 -0
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/logger.d.ts +1 -0
- package/dist/src/core/logger.js +18 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +24 -0
- package/dist/src/core/loggingContentGenerator.js +89 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +17 -0
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/subagent.js +12 -10
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +1 -1
- package/dist/src/ide/ide-client.js +21 -7
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/providers/BaseProvider.d.ts +149 -0
- package/dist/src/providers/BaseProvider.js +315 -0
- package/dist/src/providers/BaseProvider.js.map +1 -0
- package/dist/src/providers/IProvider.d.ts +1 -0
- package/dist/src/providers/IProviderManager.d.ts +5 -0
- package/dist/src/providers/LoggingProviderWrapper.d.ts +54 -0
- package/dist/src/providers/LoggingProviderWrapper.js +350 -0
- package/dist/src/providers/LoggingProviderWrapper.js.map +1 -0
- package/dist/src/providers/ProviderManager.d.ts +20 -1
- package/dist/src/providers/ProviderManager.js +236 -14
- package/dist/src/providers/ProviderManager.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.d.ts +20 -6
- package/dist/src/providers/anthropic/AnthropicProvider.js +172 -26
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +16 -7
- package/dist/src/providers/gemini/GeminiProvider.js +163 -148
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/logging/ProviderContentExtractor.d.ts +27 -0
- package/dist/src/providers/logging/ProviderContentExtractor.js +198 -0
- package/dist/src/providers/logging/ProviderContentExtractor.js.map +1 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.d.ts +43 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.js +98 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.js.map +1 -0
- package/dist/src/providers/openai/OpenAIProvider.d.ts +53 -6
- package/dist/src/providers/openai/OpenAIProvider.js +373 -40
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +1 -1
- package/dist/src/providers/openai/RESPONSES_API_MODELS.js +1 -0
- package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +1 -1
- package/dist/src/providers/openai/syntheticToolResponses.d.ts +52 -0
- package/dist/src/providers/openai/syntheticToolResponses.js +129 -0
- package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -0
- package/dist/src/providers/types.d.ts +47 -0
- package/dist/src/services/git-stats-service.d.ts +32 -0
- package/dist/src/services/git-stats-service.js +22 -0
- package/dist/src/services/git-stats-service.js.map +1 -0
- package/dist/src/services/loopDetectionService.js +10 -6
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +44 -8
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/settings/SettingsService.d.ts +32 -0
- package/dist/src/settings/SettingsService.js +204 -0
- package/dist/src/settings/SettingsService.js.map +1 -0
- package/dist/src/settings/settingsServiceInstance.d.ts +12 -0
- package/dist/src/settings/settingsServiceInstance.js +24 -0
- package/dist/src/settings/settingsServiceInstance.js.map +1 -0
- package/dist/src/settings/types.d.ts +141 -0
- package/dist/src/settings/types.js +5 -0
- package/dist/src/settings/types.js.map +1 -0
- package/dist/src/storage/ConversationFileWriter.d.ts +16 -0
- package/dist/src/storage/ConversationFileWriter.js +69 -0
- package/dist/src/storage/ConversationFileWriter.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +8 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +56 -3
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +11 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +5 -0
- package/dist/src/telemetry/constants.js +5 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +5 -1
- package/dist/src/telemetry/loggers.js +87 -1
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +2 -1
- package/dist/src/telemetry/metrics.js +7 -1
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
- package/dist/src/telemetry/tool-call-decision.js +29 -0
- package/dist/src/telemetry/tool-call-decision.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +56 -1
- package/dist/src/telemetry/types.js +123 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +2 -1
- package/dist/src/telemetry/uiTelemetry.js +1 -1
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/tools/diffOptions.d.ts +2 -0
- package/dist/src/tools/diffOptions.js +28 -0
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/edit.d.ts +4 -0
- package/dist/src/tools/edit.js +38 -8
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +4 -3
- package/dist/src/tools/mcp-client.js +23 -6
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/read-file.js +34 -2
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/todo-pause.d.ts +22 -0
- package/dist/src/tools/todo-pause.js +93 -0
- package/dist/src/tools/todo-pause.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +4 -0
- package/dist/src/tools/tool-error.js +4 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.js +3 -3
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +7 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +4 -0
- package/dist/src/tools/write-file.js +90 -16
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/types/modelParams.d.ts +2 -0
- package/dist/src/utils/environmentContext.js +1 -1
- package/dist/src/utils/errors.d.ts +3 -0
- package/dist/src/utils/errors.js +6 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +7 -0
- package/dist/src/utils/fileUtils.js +9 -0
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/package.json +4 -2
- package/dist/src/code_assist/converter.test.d.ts +0 -6
- package/dist/src/code_assist/converter.test.js +0 -232
- package/dist/src/code_assist/converter.test.js.map +0 -1
- package/dist/src/code_assist/oauth2.test.d.ts +0 -6
- package/dist/src/code_assist/oauth2.test.js +0 -370
- package/dist/src/code_assist/oauth2.test.js.map +0 -1
- package/dist/src/code_assist/server.test.d.ts +0 -6
- package/dist/src/code_assist/server.test.js +0 -131
- package/dist/src/code_assist/server.test.js.map +0 -1
- package/dist/src/code_assist/setup.test.d.ts +0 -6
- package/dist/src/code_assist/setup.test.js +0 -65
- package/dist/src/code_assist/setup.test.js.map +0 -1
- package/dist/src/config/config.alwaysAllow.test.d.ts +0 -6
- package/dist/src/config/config.alwaysAllow.test.js +0 -84
- package/dist/src/config/config.alwaysAllow.test.js.map +0 -1
- package/dist/src/config/config.test.d.ts +0 -6
- package/dist/src/config/config.test.js +0 -369
- package/dist/src/config/config.test.js.map +0 -1
- package/dist/src/config/flashFallback.test.d.ts +0 -6
- package/dist/src/config/flashFallback.test.js +0 -91
- package/dist/src/config/flashFallback.test.js.map +0 -1
- package/dist/src/core/client.test.d.ts +0 -6
- package/dist/src/core/client.test.js +0 -1322
- package/dist/src/core/client.test.js.map +0 -1
- package/dist/src/core/contentGenerator.test.d.ts +0 -6
- package/dist/src/core/contentGenerator.test.js +0 -103
- package/dist/src/core/contentGenerator.test.js.map +0 -1
- package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
- package/dist/src/core/coreToolScheduler.test.js +0 -637
- package/dist/src/core/coreToolScheduler.test.js.map +0 -1
- package/dist/src/core/geminiChat.test.d.ts +0 -6
- package/dist/src/core/geminiChat.test.js +0 -425
- package/dist/src/core/geminiChat.test.js.map +0 -1
- package/dist/src/core/googleGenAIWrapper.test.d.ts +0 -6
- package/dist/src/core/googleGenAIWrapper.test.js +0 -104
- package/dist/src/core/googleGenAIWrapper.test.js.map +0 -1
- package/dist/src/core/logger.test.d.ts +0 -6
- package/dist/src/core/logger.test.js +0 -438
- package/dist/src/core/logger.test.js.map +0 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +0 -6
- package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -165
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +0 -1
- package/dist/src/core/prompts-async.test.d.ts +0 -6
- package/dist/src/core/prompts-async.test.js +0 -115
- package/dist/src/core/prompts-async.test.js.map +0 -1
- package/dist/src/core/prompts.test.d.ts +0 -6
- package/dist/src/core/prompts.test.js +0 -68
- package/dist/src/core/prompts.test.js.map +0 -1
- package/dist/src/core/subagent.test.d.ts +0 -6
- package/dist/src/core/subagent.test.js +0 -519
- package/dist/src/core/subagent.test.js.map +0 -1
- package/dist/src/core/tokenLimits.test.d.ts +0 -6
- package/dist/src/core/tokenLimits.test.js +0 -66
- package/dist/src/core/tokenLimits.test.js.map +0 -1
- package/dist/src/core/turn.test.d.ts +0 -6
- package/dist/src/core/turn.test.js +0 -366
- package/dist/src/core/turn.test.js.map +0 -1
- package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +0 -6
- package/dist/src/hooks/tool-render-suppression-hook.test.js +0 -59
- package/dist/src/hooks/tool-render-suppression-hook.test.js.map +0 -1
- package/dist/src/ide/ide-installer.test.d.ts +0 -6
- package/dist/src/ide/ide-installer.test.js +0 -55
- package/dist/src/ide/ide-installer.test.js.map +0 -1
- package/dist/src/ide/ideContext.test.d.ts +0 -6
- package/dist/src/ide/ideContext.test.js +0 -265
- package/dist/src/ide/ideContext.test.js.map +0 -1
- package/dist/src/index.test.d.ts +0 -6
- package/dist/src/index.test.js +0 -12
- package/dist/src/index.test.js.map +0 -1
- package/dist/src/integration-tests/todo-system.test.d.ts +0 -6
- package/dist/src/integration-tests/todo-system.test.js +0 -46
- package/dist/src/integration-tests/todo-system.test.js.map +0 -1
- package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
- package/dist/src/mcp/google-auth-provider.test.js +0 -54
- package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
- package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
- package/dist/src/mcp/oauth-provider.test.js +0 -602
- package/dist/src/mcp/oauth-provider.test.js.map +0 -1
- package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
- package/dist/src/mcp/oauth-token-storage.test.js +0 -205
- package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
- package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
- package/dist/src/mcp/oauth-utils.test.js +0 -144
- package/dist/src/mcp/oauth-utils.test.js.map +0 -1
- package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +0 -1
- package/dist/src/parsers/TextToolCallParser.multibyte.test.js +0 -42
- package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +0 -1
- package/dist/src/parsers/TextToolCallParser.test.d.ts +0 -1
- package/dist/src/parsers/TextToolCallParser.test.js +0 -225
- package/dist/src/parsers/TextToolCallParser.test.js.map +0 -1
- package/dist/src/prompt-config/TemplateEngine.test.d.ts +0 -1
- package/dist/src/prompt-config/TemplateEngine.test.js +0 -494
- package/dist/src/prompt-config/TemplateEngine.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-cache.test.d.ts +0 -6
- package/dist/src/prompt-config/prompt-cache.test.js +0 -437
- package/dist/src/prompt-config/prompt-cache.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-installer.test.d.ts +0 -7
- package/dist/src/prompt-config/prompt-installer.test.js +0 -503
- package/dist/src/prompt-config/prompt-installer.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-loader.test.d.ts +0 -5
- package/dist/src/prompt-config/prompt-loader.test.js +0 -413
- package/dist/src/prompt-config/prompt-loader.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-resolver.test.d.ts +0 -1
- package/dist/src/prompt-config/prompt-resolver.test.js +0 -529
- package/dist/src/prompt-config/prompt-resolver.test.js.map +0 -1
- package/dist/src/prompt-config/prompt-service.test.d.ts +0 -1
- package/dist/src/prompt-config/prompt-service.test.js +0 -811
- package/dist/src/prompt-config/prompt-service.test.js.map +0 -1
- package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +0 -6
- package/dist/src/providers/ProviderManager.gemini-switch.test.js +0 -57
- package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +0 -1
- package/dist/src/providers/ProviderManager.test.d.ts +0 -6
- package/dist/src/providers/ProviderManager.test.js +0 -284
- package/dist/src/providers/ProviderManager.test.js.map +0 -1
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +0 -6
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +0 -273
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +0 -48
- package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.test.js +0 -487
- package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +0 -1
- package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +0 -6
- package/dist/src/providers/gemini/GeminiProvider.integration.test.js +0 -126
- package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +0 -1
- package/dist/src/providers/gemini/GeminiProvider.test.d.ts +0 -6
- package/dist/src/providers/gemini/GeminiProvider.test.js +0 -136
- package/dist/src/providers/gemini/GeminiProvider.test.js.map +0 -1
- package/dist/src/providers/integration/multi-provider.integration.test.d.ts +0 -6
- package/dist/src/providers/integration/multi-provider.integration.test.js +0 -292
- package/dist/src/providers/integration/multi-provider.integration.test.js.map +0 -1
- package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +0 -1
- package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +0 -97
- package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +0 -1
- package/dist/src/providers/openai/ConversationCache.test.d.ts +0 -1
- package/dist/src/providers/openai/ConversationCache.test.js +0 -113
- package/dist/src/providers/openai/ConversationCache.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +0 -189
- package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +0 -6
- package/dist/src/providers/openai/OpenAIProvider.integration.test.js +0 -125
- package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responses.test.js +0 -350
- package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +0 -213
- package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +0 -59
- package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +0 -6
- package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +0 -105
- package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +0 -1
- package/dist/src/providers/openai/OpenAIProvider.switch.test.js +0 -256
- package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.test.d.ts +0 -16
- package/dist/src/providers/openai/OpenAIProvider.test.js +0 -620
- package/dist/src/providers/openai/OpenAIProvider.test.js.map +0 -1
- package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +0 -1
- package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +0 -210
- package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +0 -1
- package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +0 -1
- package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +0 -65
- package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +0 -129
- package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.test.js +0 -406
- package/dist/src/providers/openai/buildResponsesRequest.test.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +0 -50
- package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +0 -1
- package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +0 -1
- package/dist/src/providers/openai/estimateRemoteTokens.test.js +0 -125
- package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +0 -1
- package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +0 -1
- package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +0 -192
- package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +0 -1
- package/dist/src/providers/openai/parseResponsesStream.test.d.ts +0 -1
- package/dist/src/providers/openai/parseResponsesStream.test.js +0 -151
- package/dist/src/providers/openai/parseResponsesStream.test.js.map +0 -1
- package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
- package/dist/src/services/fileDiscoveryService.test.js +0 -143
- package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
- package/dist/src/services/gitService.test.d.ts +0 -6
- package/dist/src/services/gitService.test.js +0 -209
- package/dist/src/services/gitService.test.js.map +0 -1
- package/dist/src/services/loopDetectionService.test.d.ts +0 -6
- package/dist/src/services/loopDetectionService.test.js +0 -345
- package/dist/src/services/loopDetectionService.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.multibyte.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.multibyte.test.js +0 -72
- package/dist/src/services/shellExecutionService.multibyte.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.test.js +0 -272
- package/dist/src/services/shellExecutionService.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.windows.multibyte.test.js +0 -98
- package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +0 -1
- package/dist/src/services/shellExecutionService.windows.test.d.ts +0 -6
- package/dist/src/services/shellExecutionService.windows.test.js +0 -79
- package/dist/src/services/shellExecutionService.windows.test.js.map +0 -1
- package/dist/src/services/tool-call-tracker-service.test.d.ts +0 -6
- package/dist/src/services/tool-call-tracker-service.test.js +0 -99
- package/dist/src/services/tool-call-tracker-service.test.js.map +0 -1
- package/dist/src/telemetry/loggers.test.d.ts +0 -6
- package/dist/src/telemetry/loggers.test.js +0 -572
- package/dist/src/telemetry/loggers.test.js.map +0 -1
- package/dist/src/telemetry/metrics.test.d.ts +0 -6
- package/dist/src/telemetry/metrics.test.js +0 -162
- package/dist/src/telemetry/metrics.test.js.map +0 -1
- package/dist/src/telemetry/telemetry.test.d.ts +0 -6
- package/dist/src/telemetry/telemetry.test.js +0 -54
- package/dist/src/telemetry/telemetry.test.js.map +0 -1
- package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
- package/dist/src/telemetry/uiTelemetry.test.js +0 -517
- package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
- package/dist/src/tools/ToolFormatter.test.d.ts +0 -16
- package/dist/src/tools/ToolFormatter.test.js +0 -349
- package/dist/src/tools/ToolFormatter.test.js.map +0 -1
- package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +0 -1
- package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +0 -241
- package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +0 -1
- package/dist/src/tools/edit.test.d.ts +0 -6
- package/dist/src/tools/edit.test.js +0 -688
- package/dist/src/tools/edit.test.js.map +0 -1
- package/dist/src/tools/glob.test.d.ts +0 -6
- package/dist/src/tools/glob.test.js +0 -332
- package/dist/src/tools/glob.test.js.map +0 -1
- package/dist/src/tools/grep.test.d.ts +0 -6
- package/dist/src/tools/grep.test.js +0 -272
- package/dist/src/tools/grep.test.js.map +0 -1
- package/dist/src/tools/ls.test.d.ts +0 -6
- package/dist/src/tools/ls.test.js +0 -357
- package/dist/src/tools/ls.test.js.map +0 -1
- package/dist/src/tools/mcp-client.test.d.ts +0 -6
- package/dist/src/tools/mcp-client.test.js +0 -575
- package/dist/src/tools/mcp-client.test.js.map +0 -1
- package/dist/src/tools/mcp-tool.test.d.ts +0 -6
- package/dist/src/tools/mcp-tool.test.js +0 -501
- package/dist/src/tools/mcp-tool.test.js.map +0 -1
- package/dist/src/tools/memoryTool.test.d.ts +0 -6
- package/dist/src/tools/memoryTool.test.js +0 -266
- package/dist/src/tools/memoryTool.test.js.map +0 -1
- package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
- package/dist/src/tools/modifiable-tool.test.js +0 -193
- package/dist/src/tools/modifiable-tool.test.js.map +0 -1
- package/dist/src/tools/read-file.test.d.ts +0 -6
- package/dist/src/tools/read-file.test.js +0 -313
- package/dist/src/tools/read-file.test.js.map +0 -1
- package/dist/src/tools/read-many-files.test.d.ts +0 -6
- package/dist/src/tools/read-many-files.test.js +0 -644
- package/dist/src/tools/read-many-files.test.js.map +0 -1
- package/dist/src/tools/shell.multibyte.test.d.ts +0 -6
- package/dist/src/tools/shell.multibyte.test.js +0 -75
- package/dist/src/tools/shell.multibyte.test.js.map +0 -1
- package/dist/src/tools/shell.test.d.ts +0 -6
- package/dist/src/tools/shell.test.js +0 -350
- package/dist/src/tools/shell.test.js.map +0 -1
- package/dist/src/tools/todo-read.test.d.ts +0 -6
- package/dist/src/tools/todo-read.test.js +0 -162
- package/dist/src/tools/todo-read.test.js.map +0 -1
- package/dist/src/tools/todo-schemas.test.d.ts +0 -6
- package/dist/src/tools/todo-schemas.test.js +0 -341
- package/dist/src/tools/todo-schemas.test.js.map +0 -1
- package/dist/src/tools/todo-store.test.d.ts +0 -6
- package/dist/src/tools/todo-store.test.js +0 -169
- package/dist/src/tools/todo-store.test.js.map +0 -1
- package/dist/src/tools/todo-write.test.d.ts +0 -6
- package/dist/src/tools/todo-write.test.js +0 -226
- package/dist/src/tools/todo-write.test.js.map +0 -1
- package/dist/src/tools/tool-registry.test.d.ts +0 -6
- package/dist/src/tools/tool-registry.test.js +0 -468
- package/dist/src/tools/tool-registry.test.js.map +0 -1
- package/dist/src/tools/tools.test.d.ts +0 -6
- package/dist/src/tools/tools.test.js +0 -117
- package/dist/src/tools/tools.test.js.map +0 -1
- package/dist/src/tools/web-fetch.integration.test.d.ts +0 -6
- package/dist/src/tools/web-fetch.integration.test.js +0 -532
- package/dist/src/tools/web-fetch.integration.test.js.map +0 -1
- package/dist/src/tools/web-search.test.d.ts +0 -6
- package/dist/src/tools/web-search.test.js +0 -229
- package/dist/src/tools/web-search.test.js.map +0 -1
- package/dist/src/tools/write-file.test.d.ts +0 -6
- package/dist/src/tools/write-file.test.js +0 -464
- package/dist/src/tools/write-file.test.js.map +0 -1
- package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
- package/dist/src/utils/bfsFileSearch.test.js +0 -191
- package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
- package/dist/src/utils/editCorrector.test.d.ts +0 -6
- package/dist/src/utils/editCorrector.test.js +0 -564
- package/dist/src/utils/editCorrector.test.js.map +0 -1
- package/dist/src/utils/editor.test.d.ts +0 -6
- package/dist/src/utils/editor.test.js +0 -445
- package/dist/src/utils/editor.test.js.map +0 -1
- package/dist/src/utils/environmentContext.test.d.ts +0 -6
- package/dist/src/utils/environmentContext.test.js +0 -139
- package/dist/src/utils/environmentContext.test.js.map +0 -1
- package/dist/src/utils/errorReporting.test.d.ts +0 -6
- package/dist/src/utils/errorReporting.test.js +0 -130
- package/dist/src/utils/errorReporting.test.js.map +0 -1
- package/dist/src/utils/fileUtils.test.d.ts +0 -6
- package/dist/src/utils/fileUtils.test.js +0 -363
- package/dist/src/utils/fileUtils.test.js.map +0 -1
- package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
- package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
- package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
- package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
- package/dist/src/utils/filesearch/fileSearch.test.js +0 -654
- package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
- package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
- package/dist/src/utils/filesearch/ignore.test.js +0 -57
- package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
- package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
- package/dist/src/utils/filesearch/result-cache.test.js +0 -47
- package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
- package/dist/src/utils/flashFallback.integration.test.d.ts +0 -6
- package/dist/src/utils/flashFallback.integration.test.js +0 -120
- package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
- package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
- package/dist/src/utils/generateContentResponseUtilities.test.js +0 -273
- package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
- package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
- package/dist/src/utils/getFolderStructure.test.js +0 -282
- package/dist/src/utils/getFolderStructure.test.js.map +0 -1
- package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
- package/dist/src/utils/gitIgnoreParser.test.js +0 -154
- package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
- package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
- package/dist/src/utils/memoryDiscovery.test.js +0 -181
- package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
- package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
- package/dist/src/utils/memoryImportProcessor.test.js +0 -715
- package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
- package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
- package/dist/src/utils/nextSpeakerChecker.test.js +0 -172
- package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
- package/dist/src/utils/partUtils.test.d.ts +0 -6
- package/dist/src/utils/partUtils.test.js +0 -130
- package/dist/src/utils/partUtils.test.js.map +0 -1
- package/dist/src/utils/paths.test.d.ts +0 -6
- package/dist/src/utils/paths.test.js +0 -153
- package/dist/src/utils/paths.test.js.map +0 -1
- package/dist/src/utils/retry.test.d.ts +0 -6
- package/dist/src/utils/retry.test.js +0 -322
- package/dist/src/utils/retry.test.js.map +0 -1
- package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
- package/dist/src/utils/safeJsonStringify.test.js +0 -61
- package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
- package/dist/src/utils/sanitization.test.d.ts +0 -6
- package/dist/src/utils/sanitization.test.js +0 -81
- package/dist/src/utils/sanitization.test.js.map +0 -1
- package/dist/src/utils/schemaValidator.test.d.ts +0 -6
- package/dist/src/utils/schemaValidator.test.js +0 -146
- package/dist/src/utils/schemaValidator.test.js.map +0 -1
- package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
- package/dist/src/utils/secure-browser-launcher.test.js +0 -149
- package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
- package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +0 -6
- package/dist/src/utils/shell-utils.shellReplacement.test.js +0 -149
- package/dist/src/utils/shell-utils.shellReplacement.test.js.map +0 -1
- package/dist/src/utils/shell-utils.test.d.ts +0 -6
- package/dist/src/utils/shell-utils.test.js +0 -200
- package/dist/src/utils/shell-utils.test.js.map +0 -1
- package/dist/src/utils/summarizer.test.d.ts +0 -6
- package/dist/src/utils/summarizer.test.js +0 -131
- package/dist/src/utils/summarizer.test.js.map +0 -1
- package/dist/src/utils/systemEncoding.test.d.ts +0 -6
- package/dist/src/utils/systemEncoding.test.js +0 -368
- package/dist/src/utils/systemEncoding.test.js.map +0 -1
- package/dist/src/utils/toolOutputLimiter.test.d.ts +0 -6
- package/dist/src/utils/toolOutputLimiter.test.js +0 -164
- package/dist/src/utils/toolOutputLimiter.test.js.map +0 -1
- package/dist/src/utils/unicodeUtils.test.d.ts +0 -6
- package/dist/src/utils/unicodeUtils.test.js +0 -120
- package/dist/src/utils/unicodeUtils.test.js.map +0 -1
- package/dist/src/utils/user_account.test.d.ts +0 -6
- package/dist/src/utils/user_account.test.js +0 -153
- package/dist/src/utils/user_account.test.js.map +0 -1
- package/dist/src/utils/user_id.test.d.ts +0 -6
- package/dist/src/utils/user_id.test.js +0 -21
- package/dist/src/utils/user_id.test.js.map +0 -1
- package/dist/src/utils/workspaceContext.test.d.ts +0 -6
- package/dist/src/utils/workspaceContext.test.js +0 -209
- package/dist/src/utils/workspaceContext.test.js.map +0 -1
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { parseResponsesStream } from './parseResponsesStream.js';
|
|
3
|
-
function createSSEStream(chunks) {
|
|
4
|
-
const encoder = new TextEncoder();
|
|
5
|
-
let index = 0;
|
|
6
|
-
return new ReadableStream({
|
|
7
|
-
async pull(controller) {
|
|
8
|
-
if (index < chunks.length) {
|
|
9
|
-
const chunk = chunks[index++];
|
|
10
|
-
controller.enqueue(encoder.encode(chunk));
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
controller.close();
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
describe('parseResponsesStream - Responses API Tool Calls', () => {
|
|
19
|
-
it('should parse complete tool calls from Responses API events', async () => {
|
|
20
|
-
const chunks = [
|
|
21
|
-
'data: {"type":"response.output_item.added","sequence_number":4,"output_index":1,"item":{"id":"fc_123","type":"function_call","status":"in_progress","arguments":"","call_id":"call_abc123","name":"get_weather"}}\n\n',
|
|
22
|
-
'event: response.function_call_arguments.delta\n',
|
|
23
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":5,"item_id":"fc_123","output_index":1,"delta":"{\\"location\\":"}\n\n',
|
|
24
|
-
'event: response.function_call_arguments.delta\n',
|
|
25
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":6,"item_id":"fc_123","output_index":1,"delta":"\\"San Francisco, CA\\"}"}\n\n',
|
|
26
|
-
'event: response.function_call_arguments.done\n',
|
|
27
|
-
'data: {"type":"response.function_call_arguments.done","sequence_number":7,"item_id":"fc_123","output_index":1,"arguments":"{\\"location\\":\\"San Francisco, CA\\"}"}\n\n',
|
|
28
|
-
'data: {"type":"response.output_item.done","sequence_number":8,"output_index":1,"item":{"id":"fc_123","type":"function_call","status":"completed","arguments":"{\\"location\\":\\"San Francisco, CA\\"}","call_id":"call_abc123","name":"get_weather"}}\n\n',
|
|
29
|
-
];
|
|
30
|
-
const stream = createSSEStream(chunks);
|
|
31
|
-
const messages = [];
|
|
32
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
33
|
-
messages.push(message);
|
|
34
|
-
}
|
|
35
|
-
// Should have one message with tool calls
|
|
36
|
-
const toolCallMessage = messages.find((m) => m.tool_calls);
|
|
37
|
-
expect(toolCallMessage).toBeDefined();
|
|
38
|
-
expect(toolCallMessage?.tool_calls).toHaveLength(1);
|
|
39
|
-
expect(toolCallMessage?.tool_calls?.[0]).toEqual({
|
|
40
|
-
id: 'call_abc123',
|
|
41
|
-
type: 'function',
|
|
42
|
-
function: {
|
|
43
|
-
name: 'get_weather',
|
|
44
|
-
arguments: '{"location":"San Francisco, CA"}',
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
it('should handle tool calls with streaming arguments', async () => {
|
|
49
|
-
const chunks = [
|
|
50
|
-
'data: {"type":"response.output_item.added","sequence_number":1,"output_index":0,"item":{"id":"fc_456","type":"function_call","status":"in_progress","arguments":"","call_id":"call_def456","name":"search_products"}}\n\n',
|
|
51
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":2,"item_id":"fc_456","output_index":0,"delta":"{\\"query\\":"}\n\n',
|
|
52
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":3,"item_id":"fc_456","output_index":0,"delta":"\\"laptop\\","}\n\n',
|
|
53
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":4,"item_id":"fc_456","output_index":0,"delta":"\\"max_price\\":"}\n\n',
|
|
54
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":5,"item_id":"fc_456","output_index":0,"delta":"1500}"}\n\n',
|
|
55
|
-
'data: {"type":"response.output_item.done","sequence_number":6,"output_index":0,"item":{"id":"fc_456","type":"function_call","status":"completed","arguments":"{\\"query\\":\\"laptop\\",\\"max_price\\":1500}","call_id":"call_def456","name":"search_products"}}\n\n',
|
|
56
|
-
];
|
|
57
|
-
const stream = createSSEStream(chunks);
|
|
58
|
-
const messages = [];
|
|
59
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
60
|
-
messages.push(message);
|
|
61
|
-
}
|
|
62
|
-
const toolCallMessage = messages.find((m) => m.tool_calls);
|
|
63
|
-
expect(toolCallMessage?.tool_calls?.[0]).toEqual({
|
|
64
|
-
id: 'call_def456',
|
|
65
|
-
type: 'function',
|
|
66
|
-
function: {
|
|
67
|
-
name: 'search_products',
|
|
68
|
-
arguments: '{"query":"laptop","max_price":1500}',
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
it('should handle multiple concurrent tool calls', async () => {
|
|
73
|
-
const chunks = [
|
|
74
|
-
// First tool call starts
|
|
75
|
-
'data: {"type":"response.output_item.added","sequence_number":1,"output_index":0,"item":{"id":"fc_001","type":"function_call","status":"in_progress","arguments":"","call_id":"call_001","name":"tool1"}}\n\n',
|
|
76
|
-
// Second tool call starts
|
|
77
|
-
'data: {"type":"response.output_item.added","sequence_number":2,"output_index":1,"item":{"id":"fc_002","type":"function_call","status":"in_progress","arguments":"","call_id":"call_002","name":"tool2"}}\n\n',
|
|
78
|
-
// Arguments for first tool
|
|
79
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":3,"item_id":"fc_001","output_index":0,"delta":"{\\"a\\":1}"}\n\n',
|
|
80
|
-
// Arguments for second tool
|
|
81
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":4,"item_id":"fc_002","output_index":1,"delta":"{\\"b\\":2}"}\n\n',
|
|
82
|
-
// Complete first tool
|
|
83
|
-
'data: {"type":"response.output_item.done","sequence_number":5,"output_index":0,"item":{"id":"fc_001","type":"function_call","status":"completed","arguments":"{\\"a\\":1}","call_id":"call_001","name":"tool1"}}\n\n',
|
|
84
|
-
// Complete second tool
|
|
85
|
-
'data: {"type":"response.output_item.done","sequence_number":6,"output_index":1,"item":{"id":"fc_002","type":"function_call","status":"completed","arguments":"{\\"b\\":2}","call_id":"call_002","name":"tool2"}}\n\n',
|
|
86
|
-
];
|
|
87
|
-
const stream = createSSEStream(chunks);
|
|
88
|
-
const messages = [];
|
|
89
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
90
|
-
messages.push(message);
|
|
91
|
-
}
|
|
92
|
-
const toolCallMessages = messages.filter((m) => m.tool_calls);
|
|
93
|
-
expect(toolCallMessages).toHaveLength(2);
|
|
94
|
-
const tool1 = toolCallMessages.find((m) => m.tool_calls?.[0].function.name === 'tool1');
|
|
95
|
-
expect(tool1?.tool_calls?.[0]).toEqual({
|
|
96
|
-
id: 'call_001',
|
|
97
|
-
type: 'function',
|
|
98
|
-
function: {
|
|
99
|
-
name: 'tool1',
|
|
100
|
-
arguments: '{"a":1}',
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
const tool2 = toolCallMessages.find((m) => m.tool_calls?.[0].function.name === 'tool2');
|
|
104
|
-
expect(tool2?.tool_calls?.[0]).toEqual({
|
|
105
|
-
id: 'call_002',
|
|
106
|
-
type: 'function',
|
|
107
|
-
function: {
|
|
108
|
-
name: 'tool2',
|
|
109
|
-
arguments: '{"b":2}',
|
|
110
|
-
},
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
it('should handle tool calls with empty arguments', async () => {
|
|
114
|
-
const chunks = [
|
|
115
|
-
'data: {"type":"response.output_item.added","sequence_number":1,"output_index":0,"item":{"id":"fc_empty","type":"function_call","status":"in_progress","arguments":"","call_id":"call_empty","name":"no_args_tool"}}\n\n',
|
|
116
|
-
'data: {"type":"response.output_item.done","sequence_number":2,"output_index":0,"item":{"id":"fc_empty","type":"function_call","status":"completed","arguments":"","call_id":"call_empty","name":"no_args_tool"}}\n\n',
|
|
117
|
-
];
|
|
118
|
-
const stream = createSSEStream(chunks);
|
|
119
|
-
const messages = [];
|
|
120
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
121
|
-
messages.push(message);
|
|
122
|
-
}
|
|
123
|
-
const toolCallMessage = messages.find((m) => m.tool_calls);
|
|
124
|
-
expect(toolCallMessage?.tool_calls?.[0]).toEqual({
|
|
125
|
-
id: 'call_empty',
|
|
126
|
-
type: 'function',
|
|
127
|
-
function: {
|
|
128
|
-
name: 'no_args_tool',
|
|
129
|
-
arguments: '',
|
|
130
|
-
},
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
it('should interleave text content and tool calls', async () => {
|
|
134
|
-
const chunks = [
|
|
135
|
-
'data: {"type":"response.output_text.delta","delta":"Let me search for that..."}\n\n',
|
|
136
|
-
'data: {"type":"response.output_item.added","sequence_number":2,"output_index":1,"item":{"id":"fc_search","type":"function_call","status":"in_progress","arguments":"","call_id":"call_search","name":"search"}}\n\n',
|
|
137
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":3,"item_id":"fc_search","output_index":1,"delta":"{\\"query\\":\\"test\\"}"}\n\n',
|
|
138
|
-
'data: {"type":"response.output_item.done","sequence_number":4,"output_index":1,"item":{"id":"fc_search","type":"function_call","status":"completed","arguments":"{\\"query\\":\\"test\\"}","call_id":"call_search","name":"search"}}\n\n',
|
|
139
|
-
];
|
|
140
|
-
const stream = createSSEStream(chunks);
|
|
141
|
-
const messages = [];
|
|
142
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
143
|
-
messages.push(message);
|
|
144
|
-
}
|
|
145
|
-
// Should have content message and tool call message
|
|
146
|
-
expect(messages.some((m) => m.content === 'Let me search for that...')).toBe(true);
|
|
147
|
-
expect(messages.some((m) => m.tool_calls)).toBe(true);
|
|
148
|
-
});
|
|
149
|
-
it('should handle usage data in response.completed event', async () => {
|
|
150
|
-
const chunks = [
|
|
151
|
-
'data: {"type":"response.output_item.added","sequence_number":1,"output_index":0,"item":{"id":"fc_test","type":"function_call","status":"in_progress","arguments":"","call_id":"call_test","name":"test_tool"}}\n\n',
|
|
152
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":2,"item_id":"fc_test","output_index":0,"delta":"{\\"test\\":true}"}\n\n',
|
|
153
|
-
'data: {"type":"response.output_item.done","sequence_number":3,"output_index":0,"item":{"id":"fc_test","type":"function_call","status":"completed","arguments":"{\\"test\\":true}","call_id":"call_test","name":"test_tool"}}\n\n',
|
|
154
|
-
'data: {"type":"response.completed","sequence_number":4,"response":{"id":"resp_123","object":"response","model":"o3","status":"completed","usage":{"input_tokens":62,"output_tokens":23,"total_tokens":85}}}\n\n',
|
|
155
|
-
];
|
|
156
|
-
const stream = createSSEStream(chunks);
|
|
157
|
-
const messages = [];
|
|
158
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
159
|
-
messages.push(message);
|
|
160
|
-
}
|
|
161
|
-
// Should have tool call message and usage message
|
|
162
|
-
expect(messages.some((m) => m.tool_calls)).toBe(true);
|
|
163
|
-
const usageMessage = messages.find((m) => m.usage);
|
|
164
|
-
expect(usageMessage?.usage).toEqual({
|
|
165
|
-
prompt_tokens: 62,
|
|
166
|
-
completion_tokens: 23,
|
|
167
|
-
total_tokens: 85,
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
it('should handle tool calls without call_id (using item id)', async () => {
|
|
171
|
-
const chunks = [
|
|
172
|
-
'data: {"type":"response.output_item.added","sequence_number":1,"output_index":0,"item":{"id":"fc_no_call_id","type":"function_call","status":"in_progress","arguments":"","name":"test_tool"}}\n\n',
|
|
173
|
-
'data: {"type":"response.function_call_arguments.delta","sequence_number":2,"item_id":"fc_no_call_id","output_index":0,"delta":"{\\"test\\":true}"}\n\n',
|
|
174
|
-
'data: {"type":"response.output_item.done","sequence_number":3,"output_index":0,"item":{"id":"fc_no_call_id","type":"function_call","status":"completed","arguments":"{\\"test\\":true}","name":"test_tool"}}\n\n',
|
|
175
|
-
];
|
|
176
|
-
const stream = createSSEStream(chunks);
|
|
177
|
-
const messages = [];
|
|
178
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
179
|
-
messages.push(message);
|
|
180
|
-
}
|
|
181
|
-
const toolCallMessage = messages.find((m) => m.tool_calls);
|
|
182
|
-
expect(toolCallMessage?.tool_calls?.[0]).toEqual({
|
|
183
|
-
id: 'fc_no_call_id', // Falls back to item.id when call_id is not provided
|
|
184
|
-
type: 'function',
|
|
185
|
-
function: {
|
|
186
|
-
name: 'test_tool',
|
|
187
|
-
arguments: '{"test":true}',
|
|
188
|
-
},
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
//# sourceMappingURL=parseResponsesStream.responsesToolCalls.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseResponsesStream.responsesToolCalls.test.js","sourceRoot":"","sources":["../../../../src/providers/openai/parseResponsesStream.responsesToolCalls.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { parseResponsesStream, parseErrorResponse, } from './parseResponsesStream.js';
|
|
3
|
-
import { ContentGeneratorRole } from '../ContentGeneratorRole.js';
|
|
4
|
-
function createSSEStream(chunks) {
|
|
5
|
-
const encoder = new TextEncoder();
|
|
6
|
-
let index = 0;
|
|
7
|
-
return new ReadableStream({
|
|
8
|
-
async pull(controller) {
|
|
9
|
-
if (index < chunks.length) {
|
|
10
|
-
const chunk = chunks[index++];
|
|
11
|
-
controller.enqueue(encoder.encode(chunk));
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
controller.close();
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
describe('parseResponsesStream', () => {
|
|
20
|
-
it.skip('should parse content chunks correctly', async () => {
|
|
21
|
-
// SKIPPING: Test data uses OpenAI chat completion format but parser expects Responses API format
|
|
22
|
-
const chunks = [
|
|
23
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hello"}}]}\n\n',
|
|
24
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" world"}}]}\n\n',
|
|
25
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}\n\n',
|
|
26
|
-
'data: [DONE]\n\n',
|
|
27
|
-
];
|
|
28
|
-
const stream = createSSEStream(chunks);
|
|
29
|
-
const messages = [];
|
|
30
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
31
|
-
messages.push(message);
|
|
32
|
-
}
|
|
33
|
-
expect(messages).toHaveLength(2);
|
|
34
|
-
expect(messages[0]).toEqual({
|
|
35
|
-
role: ContentGeneratorRole.ASSISTANT,
|
|
36
|
-
content: 'Hello',
|
|
37
|
-
});
|
|
38
|
-
expect(messages[1]).toEqual({
|
|
39
|
-
role: ContentGeneratorRole.ASSISTANT,
|
|
40
|
-
content: ' world',
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
it.skip('should parse tool calls correctly', async () => {
|
|
44
|
-
// SKIPPING: Test data uses OpenAI chat completion format but parser expects Responses API format
|
|
45
|
-
const chunks = [
|
|
46
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"id":"call_123","type":"function","function":{"name":"search","arguments":"{\\"q"}}]}}]}\n\n',
|
|
47
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"uery\\": \\"test\\"}"}}]}}]}\n\n',
|
|
48
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}\n\n',
|
|
49
|
-
'data: [DONE]\n\n',
|
|
50
|
-
];
|
|
51
|
-
const stream = createSSEStream(chunks);
|
|
52
|
-
const messages = [];
|
|
53
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
54
|
-
messages.push(message);
|
|
55
|
-
}
|
|
56
|
-
expect(messages).toHaveLength(1);
|
|
57
|
-
expect(messages[0]).toEqual({
|
|
58
|
-
role: ContentGeneratorRole.ASSISTANT,
|
|
59
|
-
content: '',
|
|
60
|
-
tool_calls: [
|
|
61
|
-
{
|
|
62
|
-
id: 'call_123',
|
|
63
|
-
type: 'function',
|
|
64
|
-
function: {
|
|
65
|
-
name: 'search',
|
|
66
|
-
arguments: '{"query": "test"}',
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
it.skip('should parse usage data correctly', async () => {
|
|
73
|
-
// SKIPPING: Test data uses OpenAI chat completion format but parser expects Responses API format
|
|
74
|
-
const chunks = [
|
|
75
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Test response"}}]}\n\n',
|
|
76
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":10,"completion_tokens":2,"total_tokens":12}}\n\n',
|
|
77
|
-
'data: [DONE]\n\n',
|
|
78
|
-
];
|
|
79
|
-
const stream = createSSEStream(chunks);
|
|
80
|
-
const messages = [];
|
|
81
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
82
|
-
messages.push(message);
|
|
83
|
-
}
|
|
84
|
-
// Should have content message and final message with usage
|
|
85
|
-
expect(messages.length).toBeGreaterThanOrEqual(2);
|
|
86
|
-
const lastMessage = messages[messages.length - 1];
|
|
87
|
-
expect(lastMessage.usage).toEqual({
|
|
88
|
-
prompt_tokens: 10,
|
|
89
|
-
completion_tokens: 2,
|
|
90
|
-
total_tokens: 12,
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
it.skip('should handle split chunks correctly', async () => {
|
|
94
|
-
// SKIPPING: Test data uses OpenAI chat completion format but parser expects Responses API format
|
|
95
|
-
const chunks = [
|
|
96
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta"',
|
|
97
|
-
':{"content":"Hello world"}}]}\n\ndata: [DONE]\n\n',
|
|
98
|
-
];
|
|
99
|
-
const stream = createSSEStream(chunks);
|
|
100
|
-
const messages = [];
|
|
101
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
102
|
-
messages.push(message);
|
|
103
|
-
}
|
|
104
|
-
expect(messages.length).toBeGreaterThanOrEqual(1);
|
|
105
|
-
expect(messages.some((m) => m.content === 'Hello world')).toBe(true);
|
|
106
|
-
});
|
|
107
|
-
it.skip('should skip invalid JSON chunks', async () => {
|
|
108
|
-
// SKIPPING: Test data uses OpenAI chat completion format but parser expects Responses API format
|
|
109
|
-
const chunks = [
|
|
110
|
-
'data: invalid json\n\n',
|
|
111
|
-
'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Valid"}}]}\n\n',
|
|
112
|
-
'data: [DONE]\n\n',
|
|
113
|
-
];
|
|
114
|
-
const stream = createSSEStream(chunks);
|
|
115
|
-
const messages = [];
|
|
116
|
-
for await (const message of parseResponsesStream(stream)) {
|
|
117
|
-
messages.push(message);
|
|
118
|
-
}
|
|
119
|
-
expect(messages).toHaveLength(1);
|
|
120
|
-
expect(messages[0].content).toBe('Valid');
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
describe('parseErrorResponse', () => {
|
|
124
|
-
it('should parse 409 conflict error', () => {
|
|
125
|
-
const error = parseErrorResponse(409, '{"error":{"message":"Conversation already exists"}}', 'Responses');
|
|
126
|
-
expect(error.message).toBe('Conflict: Conversation already exists');
|
|
127
|
-
});
|
|
128
|
-
it('should parse 410 gone error', () => {
|
|
129
|
-
const error = parseErrorResponse(410, '{"error":{"message":"Conversation expired"}}', 'Responses');
|
|
130
|
-
expect(error.message).toBe('Gone: Conversation expired');
|
|
131
|
-
});
|
|
132
|
-
it('should parse 429 rate limit error', () => {
|
|
133
|
-
const error = parseErrorResponse(429, '{"error":{"message":"Too many requests"}}', 'Responses');
|
|
134
|
-
expect(error.message).toBe('Rate limit exceeded: Too many requests');
|
|
135
|
-
});
|
|
136
|
-
it('should parse 5xx server errors', () => {
|
|
137
|
-
const error500 = parseErrorResponse(500, '{"error":{"message":"Internal error"}}', 'Responses');
|
|
138
|
-
expect(error500.message).toBe('Server error: Internal error');
|
|
139
|
-
const error503 = parseErrorResponse(503, '{"error":{"message":"Service unavailable"}}', 'Responses');
|
|
140
|
-
expect(error503.message).toBe('Server error: Service unavailable');
|
|
141
|
-
});
|
|
142
|
-
it('should handle invalid JSON in error response', () => {
|
|
143
|
-
const error = parseErrorResponse(500, 'Not JSON', 'Responses');
|
|
144
|
-
expect(error.message).toBe('Server error: Responses API error: 500');
|
|
145
|
-
});
|
|
146
|
-
it('should handle unknown status codes', () => {
|
|
147
|
-
const error = parseErrorResponse(418, '{"error":{"message":"I am a teapot"}}', 'Responses');
|
|
148
|
-
expect(error.message).toBe('I am a teapot');
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
//# sourceMappingURL=parseResponsesStream.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseResponsesStream.test.js","sourceRoot":"","sources":["../../../../src/providers/openai/parseResponsesStream.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
7
|
-
import * as fs from 'fs/promises';
|
|
8
|
-
import * as os from 'os';
|
|
9
|
-
import * as path from 'path';
|
|
10
|
-
import { FileDiscoveryService } from './fileDiscoveryService.js';
|
|
11
|
-
describe('FileDiscoveryService', () => {
|
|
12
|
-
let testRootDir;
|
|
13
|
-
let projectRoot;
|
|
14
|
-
async function createTestFile(filePath, content = '') {
|
|
15
|
-
const fullPath = path.join(projectRoot, filePath);
|
|
16
|
-
await fs.mkdir(path.dirname(fullPath), { recursive: true });
|
|
17
|
-
await fs.writeFile(fullPath, content);
|
|
18
|
-
return fullPath;
|
|
19
|
-
}
|
|
20
|
-
beforeEach(async () => {
|
|
21
|
-
testRootDir = await fs.mkdtemp(path.join(os.tmpdir(), 'file-discovery-test-'));
|
|
22
|
-
projectRoot = path.join(testRootDir, 'project');
|
|
23
|
-
await fs.mkdir(projectRoot, { recursive: true });
|
|
24
|
-
});
|
|
25
|
-
afterEach(async () => {
|
|
26
|
-
await fs.rm(testRootDir, { recursive: true, force: true });
|
|
27
|
-
});
|
|
28
|
-
describe('initialization', () => {
|
|
29
|
-
it('should initialize git ignore parser by default in a git repo', async () => {
|
|
30
|
-
await fs.mkdir(path.join(projectRoot, '.git'));
|
|
31
|
-
await createTestFile('.gitignore', 'node_modules/');
|
|
32
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
33
|
-
// Let's check the effect of the parser instead of mocking it.
|
|
34
|
-
expect(service.shouldGitIgnoreFile('node_modules/foo.js')).toBe(true);
|
|
35
|
-
expect(service.shouldGitIgnoreFile('src/foo.js')).toBe(false);
|
|
36
|
-
});
|
|
37
|
-
it('should not load git repo patterns when not in a git repo', async () => {
|
|
38
|
-
// No .git directory
|
|
39
|
-
await createTestFile('.gitignore', 'node_modules/');
|
|
40
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
41
|
-
// .gitignore is not loaded in non-git repos
|
|
42
|
-
expect(service.shouldGitIgnoreFile('node_modules/foo.js')).toBe(false);
|
|
43
|
-
});
|
|
44
|
-
it('should load .llxprtignore patterns even when not in a git repo', async () => {
|
|
45
|
-
await createTestFile('.llxprtignore', 'secrets.txt');
|
|
46
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
47
|
-
expect(service.shouldLlxprtIgnoreFile('secrets.txt')).toBe(true);
|
|
48
|
-
expect(service.shouldLlxprtIgnoreFile('src/index.js')).toBe(false);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
describe('filterFiles', () => {
|
|
52
|
-
beforeEach(async () => {
|
|
53
|
-
await fs.mkdir(path.join(projectRoot, '.git'));
|
|
54
|
-
await createTestFile('.gitignore', 'node_modules/\n.git/\ndist');
|
|
55
|
-
await createTestFile('.llxprtignore', 'logs/');
|
|
56
|
-
});
|
|
57
|
-
it('should filter out git-ignored and llxprt-ignored files by default', () => {
|
|
58
|
-
const files = [
|
|
59
|
-
'src/index.ts',
|
|
60
|
-
'node_modules/package/index.js',
|
|
61
|
-
'README.md',
|
|
62
|
-
'.git/config',
|
|
63
|
-
'dist/bundle.js',
|
|
64
|
-
'logs/latest.log',
|
|
65
|
-
].map((f) => path.join(projectRoot, f));
|
|
66
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
67
|
-
expect(service.filterFiles(files)).toEqual(['src/index.ts', 'README.md'].map((f) => path.join(projectRoot, f)));
|
|
68
|
-
});
|
|
69
|
-
it('should not filter files when respectGitIgnore is false', () => {
|
|
70
|
-
const files = [
|
|
71
|
-
'src/index.ts',
|
|
72
|
-
'node_modules/package/index.js',
|
|
73
|
-
'.git/config',
|
|
74
|
-
'logs/latest.log',
|
|
75
|
-
].map((f) => path.join(projectRoot, f));
|
|
76
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
77
|
-
const filtered = service.filterFiles(files, {
|
|
78
|
-
respectGitIgnore: false,
|
|
79
|
-
respectLlxprtIgnore: true, // still respect this one
|
|
80
|
-
});
|
|
81
|
-
expect(filtered).toEqual(['src/index.ts', 'node_modules/package/index.js', '.git/config'].map((f) => path.join(projectRoot, f)));
|
|
82
|
-
});
|
|
83
|
-
it('should not filter files when respectLlxprtIgnore is false', () => {
|
|
84
|
-
const files = [
|
|
85
|
-
'src/index.ts',
|
|
86
|
-
'node_modules/package/index.js',
|
|
87
|
-
'logs/latest.log',
|
|
88
|
-
].map((f) => path.join(projectRoot, f));
|
|
89
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
90
|
-
const filtered = service.filterFiles(files, {
|
|
91
|
-
respectGitIgnore: true,
|
|
92
|
-
respectLlxprtIgnore: false,
|
|
93
|
-
});
|
|
94
|
-
expect(filtered).toEqual(['src/index.ts', 'logs/latest.log'].map((f) => path.join(projectRoot, f)));
|
|
95
|
-
});
|
|
96
|
-
it('should handle empty file list', () => {
|
|
97
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
98
|
-
expect(service.filterFiles([])).toEqual([]);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
describe('shouldGitIgnoreFile & shouldLlxprtIgnoreFile', () => {
|
|
102
|
-
beforeEach(async () => {
|
|
103
|
-
await fs.mkdir(path.join(projectRoot, '.git'));
|
|
104
|
-
await createTestFile('.gitignore', 'node_modules/');
|
|
105
|
-
await createTestFile('.llxprtignore', '*.log');
|
|
106
|
-
});
|
|
107
|
-
it('should return true for git-ignored files', () => {
|
|
108
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
109
|
-
expect(service.shouldGitIgnoreFile(path.join(projectRoot, 'node_modules/package/index.js'))).toBe(true);
|
|
110
|
-
});
|
|
111
|
-
it('should return false for non-git-ignored files', () => {
|
|
112
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
113
|
-
expect(service.shouldGitIgnoreFile(path.join(projectRoot, 'src/index.ts'))).toBe(false);
|
|
114
|
-
});
|
|
115
|
-
it('should return true for llxprt-ignored files', () => {
|
|
116
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
117
|
-
expect(service.shouldLlxprtIgnoreFile(path.join(projectRoot, 'debug.log'))).toBe(true);
|
|
118
|
-
});
|
|
119
|
-
it('should return false for non-llxprt-ignored files', () => {
|
|
120
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
121
|
-
expect(service.shouldLlxprtIgnoreFile(path.join(projectRoot, 'src/index.ts'))).toBe(false);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
describe('edge cases', () => {
|
|
125
|
-
it('should handle relative project root paths', async () => {
|
|
126
|
-
await fs.mkdir(path.join(projectRoot, '.git'));
|
|
127
|
-
await createTestFile('.gitignore', 'ignored.txt');
|
|
128
|
-
const service = new FileDiscoveryService(path.relative(process.cwd(), projectRoot));
|
|
129
|
-
expect(service.shouldGitIgnoreFile(path.join(projectRoot, 'ignored.txt'))).toBe(true);
|
|
130
|
-
expect(service.shouldGitIgnoreFile(path.join(projectRoot, 'not-ignored.txt'))).toBe(false);
|
|
131
|
-
});
|
|
132
|
-
it('should handle filterFiles with undefined options', async () => {
|
|
133
|
-
await fs.mkdir(path.join(projectRoot, '.git'));
|
|
134
|
-
await createTestFile('.gitignore', 'ignored.txt');
|
|
135
|
-
const service = new FileDiscoveryService(projectRoot);
|
|
136
|
-
const files = ['src/index.ts', 'ignored.txt'].map((f) => path.join(projectRoot, f));
|
|
137
|
-
expect(service.filterFiles(files, undefined)).toEqual([
|
|
138
|
-
path.join(projectRoot, 'src/index.ts'),
|
|
139
|
-
]);
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
//# sourceMappingURL=fileDiscoveryService.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fileDiscoveryService.test.js","sourceRoot":"","sources":["../../../src/services/fileDiscoveryService.test.ts"],"names":[],"mappings":"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"}
|