@office-ai/aioncli-core 0.2.2 → 0.8.1
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/dist/index.d.ts +10 -3
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/src/agents/codebase-investigator.d.ts +11 -0
- package/dist/src/agents/codebase-investigator.js +73 -0
- package/dist/src/agents/codebase-investigator.js.map +1 -0
- package/dist/src/agents/executor.d.ts +88 -0
- package/dist/src/agents/executor.js +417 -0
- package/dist/src/agents/executor.js.map +1 -0
- package/dist/src/agents/executor.test.js +419 -0
- package/dist/src/agents/executor.test.js.map +1 -0
- package/dist/src/agents/invocation.d.ts +43 -0
- package/dist/src/agents/invocation.js +100 -0
- package/dist/src/agents/invocation.js.map +1 -0
- package/dist/src/agents/invocation.test.js +206 -0
- package/dist/src/agents/invocation.test.js.map +1 -0
- package/dist/src/agents/registry.d.ts +35 -0
- package/dist/src/agents/registry.js +58 -0
- package/dist/src/agents/registry.js.map +1 -0
- package/dist/src/agents/registry.test.js +146 -0
- package/dist/src/agents/registry.test.js.map +1 -0
- package/dist/src/agents/schema-utils.d.ts +39 -0
- package/dist/src/agents/schema-utils.js +57 -0
- package/dist/src/agents/schema-utils.js.map +1 -0
- package/dist/src/agents/schema-utils.test.d.ts +6 -0
- package/dist/src/agents/schema-utils.test.js +144 -0
- package/dist/src/agents/schema-utils.test.js.map +1 -0
- package/dist/src/agents/subagent-tool-wrapper.d.ts +36 -0
- package/dist/src/agents/subagent-tool-wrapper.js +47 -0
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
- package/dist/src/agents/subagent-tool-wrapper.test.d.ts +6 -0
- package/dist/src/agents/subagent-tool-wrapper.test.js +105 -0
- package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -0
- package/dist/src/agents/types.d.ts +116 -0
- package/dist/src/agents/types.js +17 -0
- package/dist/src/agents/types.js.map +1 -0
- package/dist/src/agents/utils.d.ts +15 -0
- package/dist/src/agents/utils.js +29 -0
- package/dist/src/agents/utils.js.map +1 -0
- package/dist/src/agents/utils.test.d.ts +6 -0
- package/dist/src/agents/utils.test.js +87 -0
- package/dist/src/agents/utils.test.js.map +1 -0
- package/dist/src/code_assist/codeAssist.d.ts +6 -3
- package/dist/src/code_assist/codeAssist.js +12 -0
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/converter.d.ts +4 -1
- package/dist/src/code_assist/converter.js +38 -5
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +93 -0
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/oauth-credential-storage.d.ts +25 -0
- package/dist/src/code_assist/oauth-credential-storage.js +109 -0
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -0
- package/dist/src/code_assist/oauth-credential-storage.test.d.ts +6 -0
- package/dist/src/code_assist/oauth-credential-storage.test.js +136 -0
- package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -0
- package/dist/src/code_assist/oauth2.d.ts +1 -1
- package/dist/src/code_assist/oauth2.js +107 -48
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +735 -343
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +4 -4
- package/dist/src/code_assist/server.js +25 -2
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +25 -0
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/setup.d.ts +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.map +1 -1
- package/dist/src/code_assist/types.d.ts +17 -2
- package/dist/src/config/config.d.ts +121 -25
- package/dist/src/config/config.js +298 -87
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +370 -131
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/constants.d.ts +11 -0
- package/dist/src/config/constants.js +16 -0
- package/dist/src/config/constants.js.map +1 -0
- package/dist/src/config/models.d.ts +16 -0
- package/dist/src/config/models.js +29 -0
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.d.ts +6 -0
- package/dist/src/config/models.test.js +55 -0
- package/dist/src/config/models.test.js.map +1 -0
- package/dist/src/config/storage.d.ts +34 -0
- package/dist/src/config/storage.js +95 -0
- package/dist/src/config/storage.js.map +1 -0
- package/dist/src/config/storage.test.d.ts +6 -0
- package/dist/src/config/storage.test.js +47 -0
- package/dist/src/config/storage.test.js.map +1 -0
- package/dist/src/confirmation-bus/index.d.ts +7 -0
- package/dist/src/confirmation-bus/index.js +8 -0
- package/dist/src/confirmation-bus/index.js.map +1 -0
- package/dist/src/confirmation-bus/message-bus.d.ts +17 -0
- package/dist/src/confirmation-bus/message-bus.js +81 -0
- package/dist/src/confirmation-bus/message-bus.js.map +1 -0
- package/dist/src/confirmation-bus/message-bus.test.d.ts +6 -0
- package/dist/src/confirmation-bus/message-bus.test.js +164 -0
- package/dist/src/confirmation-bus/message-bus.test.js.map +1 -0
- package/dist/src/confirmation-bus/types.d.ts +38 -0
- package/dist/src/confirmation-bus/types.js +15 -0
- package/dist/src/confirmation-bus/types.js.map +1 -0
- package/dist/src/core/baseLlmClient.d.ts +54 -0
- package/dist/src/core/baseLlmClient.js +190 -0
- package/dist/src/core/baseLlmClient.js.map +1 -0
- package/dist/src/core/baseLlmClient.test.d.ts +6 -0
- package/dist/src/core/baseLlmClient.test.js +316 -0
- package/dist/src/core/baseLlmClient.test.js.map +1 -0
- package/dist/src/core/client.d.ts +28 -28
- package/dist/src/core/client.js +187 -333
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +745 -500
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +4 -4
- package/dist/src/core/contentGenerator.js +6 -7
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +1 -3
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +20 -7
- package/dist/src/core/coreToolScheduler.js +216 -53
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +564 -88
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +54 -43
- package/dist/src/core/geminiChat.js +298 -280
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +1255 -321
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiRequest.js +1 -0
- package/dist/src/core/geminiRequest.js.map +1 -1
- package/dist/src/core/logger.d.ts +4 -2
- package/dist/src/core/logger.js +4 -3
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +17 -16
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +3 -3
- package/dist/src/core/loggingContentGenerator.js +15 -16
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -5
- package/dist/src/core/nonInteractiveToolExecutor.js +14 -122
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +158 -78
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/openaiContentGenerator.d.ts +4 -3
- package/dist/src/core/openaiContentGenerator.js +21 -14
- package/dist/src/core/openaiContentGenerator.js.map +1 -1
- package/dist/src/core/openaiContentGenerator.test.js +1 -0
- package/dist/src/core/openaiContentGenerator.test.js.map +1 -1
- package/dist/src/core/prompts.d.ts +5 -0
- package/dist/src/core/prompts.js +66 -44
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +130 -1
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/subagent.d.ts +24 -18
- package/dist/src/core/subagent.js +125 -90
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/subagent.test.js +59 -44
- package/dist/src/core/subagent.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +37 -13
- package/dist/src/core/turn.js +63 -28
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +359 -100
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/fallback/handler.d.ts +7 -0
- package/dist/src/fallback/handler.js +129 -0
- package/dist/src/fallback/handler.js.map +1 -0
- package/dist/src/fallback/handler.test.d.ts +6 -0
- package/dist/src/fallback/handler.test.js +130 -0
- package/dist/src/fallback/handler.test.js.map +1 -0
- package/dist/src/fallback/types.d.ts +14 -0
- package/dist/src/fallback/types.js +7 -0
- package/dist/src/fallback/types.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/ide/constants.d.ts +3 -0
- package/dist/src/ide/constants.js +3 -0
- package/dist/src/ide/constants.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +48 -12
- package/dist/src/ide/detect-ide.js +47 -66
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +79 -52
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +69 -23
- package/dist/src/ide/ide-client.js +372 -78
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +375 -30
- package/dist/src/ide/ide-client.test.js.map +1 -1
- package/dist/src/ide/ide-installer.d.ts +2 -2
- package/dist/src/ide/ide-installer.js +37 -24
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +104 -26
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +35 -365
- package/dist/src/ide/ideContext.js +60 -106
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/ide/ideContext.test.js +152 -24
- package/dist/src/ide/ideContext.test.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +7 -5
- package/dist/src/ide/process-utils.js +81 -50
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/ide/process-utils.test.d.ts +6 -0
- package/dist/src/ide/process-utils.test.js +158 -0
- package/dist/src/ide/process-utils.test.js.map +1 -0
- package/dist/src/ide/types.d.ts +486 -0
- package/dist/src/ide/types.js +138 -0
- package/dist/src/ide/types.js.map +1 -0
- package/dist/src/index.d.ts +20 -2
- package/dist/src/index.js +20 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/google-auth-provider.d.ts +3 -3
- package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +17 -13
- package/dist/src/mcp/oauth-provider.js +81 -69
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +212 -37
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.d.ts +14 -32
- package/dist/src/mcp/oauth-token-storage.js +54 -25
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.test.js +256 -162
- package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +9 -1
- package/dist/src/mcp/oauth-utils.js +42 -27
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +41 -1
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/mcp/sa-impersonation-provider.d.ts +33 -0
- package/dist/src/mcp/sa-impersonation-provider.js +130 -0
- package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
- package/dist/src/mcp/sa-impersonation-provider.test.d.ts +6 -0
- package/dist/src/mcp/sa-impersonation-provider.test.js +117 -0
- package/dist/src/mcp/sa-impersonation-provider.test.js.map +1 -0
- package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
- package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
- package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.js +160 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
- package/dist/src/mcp/token-storage/file-token-storage.js +144 -0
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/file-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/file-token-storage.test.js +235 -0
- package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +193 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/index.d.ts +11 -0
- package/dist/src/mcp/token-storage/index.js +12 -0
- package/dist/src/mcp/token-storage/index.js.map +1 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +31 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js +190 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js +254 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/types.d.ts +38 -0
- package/dist/src/mcp/token-storage/types.js +11 -0
- package/dist/src/mcp/token-storage/types.js.map +1 -0
- package/dist/src/output/json-formatter.d.ts +11 -0
- package/dist/src/output/json-formatter.js +30 -0
- package/dist/src/output/json-formatter.js.map +1 -0
- package/dist/src/output/json-formatter.test.d.ts +6 -0
- package/dist/src/output/json-formatter.test.js +266 -0
- package/dist/src/output/json-formatter.test.js.map +1 -0
- package/dist/src/output/types.d.ts +20 -0
- package/dist/src/output/types.js +11 -0
- package/dist/src/output/types.js.map +1 -0
- package/dist/src/policy/index.d.ts +7 -0
- package/dist/src/policy/index.js +8 -0
- package/dist/src/policy/index.js.map +1 -0
- package/dist/src/policy/policy-engine.d.ts +30 -0
- package/dist/src/policy/policy-engine.js +92 -0
- package/dist/src/policy/policy-engine.js.map +1 -0
- package/dist/src/policy/policy-engine.test.d.ts +6 -0
- package/dist/src/policy/policy-engine.test.js +515 -0
- package/dist/src/policy/policy-engine.test.js.map +1 -0
- package/dist/src/policy/stable-stringify.d.ts +58 -0
- package/dist/src/policy/stable-stringify.js +122 -0
- package/dist/src/policy/stable-stringify.js.map +1 -0
- package/dist/src/policy/types.d.ts +47 -0
- package/dist/src/policy/types.js +12 -0
- package/dist/src/policy/types.js.map +1 -0
- package/dist/src/prompts/mcp-prompts.d.ts +2 -2
- package/dist/src/prompts/prompt-registry.d.ts +1 -1
- package/dist/src/routing/modelRouterService.d.ts +23 -0
- package/dist/src/routing/modelRouterService.js +70 -0
- package/dist/src/routing/modelRouterService.js.map +1 -0
- package/dist/src/routing/modelRouterService.test.d.ts +6 -0
- package/dist/src/routing/modelRouterService.test.js +98 -0
- package/dist/src/routing/modelRouterService.test.js.map +1 -0
- package/dist/src/routing/routingStrategy.d.ts +62 -0
- package/dist/src/routing/routingStrategy.js +7 -0
- package/dist/src/routing/routingStrategy.js.map +1 -0
- package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
- package/dist/src/routing/strategies/classifierStrategy.js +173 -0
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
- package/dist/src/routing/strategies/classifierStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/classifierStrategy.test.js +192 -0
- package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/compositeStrategy.d.ts +26 -0
- package/dist/src/routing/strategies/compositeStrategy.js +68 -0
- package/dist/src/routing/strategies/compositeStrategy.js.map +1 -0
- package/dist/src/routing/strategies/compositeStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/compositeStrategy.test.js +123 -0
- package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/defaultStrategy.d.ts +12 -0
- package/dist/src/routing/strategies/defaultStrategy.js +20 -0
- package/dist/src/routing/strategies/defaultStrategy.js.map +1 -0
- package/dist/src/routing/strategies/defaultStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/defaultStrategy.test.js +26 -0
- package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/fallbackStrategy.d.ts +12 -0
- package/dist/src/routing/strategies/fallbackStrategy.js +25 -0
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -0
- package/dist/src/routing/strategies/fallbackStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/fallbackStrategy.test.js +55 -0
- package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/overrideStrategy.d.ts +15 -0
- package/dist/src/routing/strategies/overrideStrategy.js +28 -0
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -0
- package/dist/src/routing/strategies/overrideStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/overrideStrategy.test.js +42 -0
- package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -0
- package/dist/src/services/chatRecordingService.d.ts +8 -14
- package/dist/src/services/chatRecordingService.js +33 -21
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +69 -25
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.d.ts +10 -0
- package/dist/src/services/fileDiscoveryService.js +32 -18
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.test.js +3 -3
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
- package/dist/src/services/fileSystemService.d.ts +9 -0
- package/dist/src/services/fileSystemService.js +12 -1
- package/dist/src/services/fileSystemService.js.map +1 -1
- package/dist/src/services/fileSystemService.test.js +1 -1
- package/dist/src/services/fileSystemService.test.js.map +1 -1
- package/dist/src/services/gitService.d.ts +3 -1
- package/dist/src/services/gitService.js +30 -24
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +30 -37
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.d.ts +8 -2
- package/dist/src/services/loopDetectionService.js +64 -24
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +64 -13
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +36 -2
- package/dist/src/services/shellExecutionService.js +238 -47
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +197 -58
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/telemetry/activity-detector.d.ts +41 -0
- package/dist/src/telemetry/activity-detector.js +61 -0
- package/dist/src/telemetry/activity-detector.js.map +1 -0
- package/dist/src/telemetry/activity-detector.test.d.ts +6 -0
- package/dist/src/telemetry/activity-detector.test.js +136 -0
- package/dist/src/telemetry/activity-detector.test.js.map +1 -0
- package/dist/src/telemetry/activity-types.d.ts +19 -0
- package/dist/src/telemetry/activity-types.js +21 -0
- package/dist/src/telemetry/activity-types.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +34 -4
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +322 -15
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +321 -11
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +51 -2
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +124 -2
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/config.d.ts +31 -0
- package/dist/src/telemetry/config.js +76 -0
- package/dist/src/telemetry/config.js.map +1 -0
- package/dist/src/telemetry/config.test.d.ts +6 -0
- package/dist/src/telemetry/config.test.js +124 -0
- package/dist/src/telemetry/config.test.js.map +1 -0
- package/dist/src/telemetry/constants.d.ts +17 -7
- package/dist/src/telemetry/constants.js +18 -7
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/file-exporters.d.ts +5 -4
- package/dist/src/telemetry/file-exporters.js +1 -1
- package/dist/src/telemetry/file-exporters.js.map +1 -1
- package/dist/src/telemetry/gcp-exporters.d.ts +34 -0
- package/dist/src/telemetry/gcp-exporters.js +117 -0
- package/dist/src/telemetry/gcp-exporters.js.map +1 -0
- package/dist/src/telemetry/gcp-exporters.test.d.ts +6 -0
- package/dist/src/telemetry/gcp-exporters.test.js +318 -0
- package/dist/src/telemetry/gcp-exporters.test.js.map +1 -0
- package/dist/src/telemetry/high-water-mark-tracker.d.ts +43 -0
- package/dist/src/telemetry/high-water-mark-tracker.js +88 -0
- package/dist/src/telemetry/high-water-mark-tracker.js.map +1 -0
- package/dist/src/telemetry/high-water-mark-tracker.test.d.ts +6 -0
- package/dist/src/telemetry/high-water-mark-tracker.test.js +152 -0
- package/dist/src/telemetry/high-water-mark-tracker.test.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +12 -2
- package/dist/src/telemetry/index.js +16 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +17 -2
- package/dist/src/telemetry/loggers.js +316 -14
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js +3 -3
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +452 -48
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +323 -12
- package/dist/src/telemetry/metrics.js +464 -83
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +583 -38
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/rate-limiter.d.ts +48 -0
- package/dist/src/telemetry/rate-limiter.js +100 -0
- package/dist/src/telemetry/rate-limiter.js.map +1 -0
- package/dist/src/telemetry/rate-limiter.test.d.ts +6 -0
- package/dist/src/telemetry/rate-limiter.test.js +207 -0
- package/dist/src/telemetry/rate-limiter.test.js.map +1 -0
- package/dist/src/telemetry/sdk.d.ts +1 -1
- package/dist/src/telemetry/sdk.js +20 -2
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/sdk.test.js +108 -0
- package/dist/src/telemetry/sdk.test.js.map +1 -1
- package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
- package/dist/src/telemetry/telemetry-utils.js +14 -0
- package/dist/src/telemetry/telemetry-utils.js.map +1 -0
- package/dist/src/telemetry/telemetry-utils.test.d.ts +6 -0
- package/dist/src/telemetry/telemetry-utils.test.js +40 -0
- package/dist/src/telemetry/telemetry-utils.test.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +136 -8
- package/dist/src/telemetry/types.js +233 -11
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +3 -3
- package/dist/src/telemetry/uiTelemetry.js +7 -8
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +33 -29
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/config.d.ts +2 -1
- package/dist/src/test-utils/config.js.map +1 -1
- package/dist/src/test-utils/index.d.ts +6 -0
- package/dist/src/test-utils/index.js +7 -0
- package/dist/src/test-utils/index.js.map +1 -0
- package/dist/src/test-utils/mock-tool.d.ts +66 -0
- package/dist/src/test-utils/{tools.js → mock-tool.js} +45 -29
- package/dist/src/test-utils/mock-tool.js.map +1 -0
- package/dist/src/test-utils/mockWorkspaceContext.d.ts +1 -1
- package/dist/src/tools/diffOptions.d.ts +1 -1
- package/dist/src/tools/diffOptions.js +21 -13
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/diffOptions.test.js +58 -22
- package/dist/src/tools/diffOptions.test.js.map +1 -1
- package/dist/src/tools/edit.d.ts +6 -5
- package/dist/src/tools/edit.js +58 -40
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +192 -16
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +7 -2
- package/dist/src/tools/glob.js +42 -23
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +80 -4
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +3 -2
- package/dist/src/tools/grep.js +35 -15
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +26 -3
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.d.ts +3 -2
- package/dist/src/tools/ls.js +31 -39
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +145 -280
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +8 -6
- package/dist/src/tools/mcp-client-manager.js +13 -4
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +20 -1
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +18 -21
- package/dist/src/tools/mcp-client.js +87 -120
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +32 -152
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +6 -4
- package/dist/src/tools/mcp-tool.js +51 -13
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +166 -12
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +3 -2
- package/dist/src/tools/memoryTool.js +14 -37
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +16 -4
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/message-bus-integration.test.d.ts +6 -0
- package/dist/src/tools/message-bus-integration.test.js +183 -0
- package/dist/src/tools/message-bus-integration.test.js.map +1 -0
- package/dist/src/tools/modifiable-tool.d.ts +2 -2
- package/dist/src/tools/modifiable-tool.js +3 -3
- package/dist/src/tools/modifiable-tool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +4 -4
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/read-file.d.ts +3 -2
- package/dist/src/tools/read-file.js +33 -43
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +39 -7
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +3 -2
- package/dist/src/tools/read-many-files.js +52 -107
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +64 -11
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.d.ts +55 -0
- package/dist/src/tools/ripGrep.js +393 -0
- package/dist/src/tools/ripGrep.js.map +1 -0
- package/dist/src/tools/ripGrep.test.d.ts +6 -0
- package/dist/src/tools/ripGrep.test.js +976 -0
- package/dist/src/tools/ripGrep.test.js.map +1 -0
- package/dist/src/tools/shell.d.ts +13 -2
- package/dist/src/tools/shell.js +42 -32
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +57 -75
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/smart-edit.d.ts +91 -0
- package/dist/src/tools/smart-edit.js +702 -0
- package/dist/src/tools/smart-edit.js.map +1 -0
- package/dist/src/tools/smart-edit.test.d.ts +6 -0
- package/dist/src/tools/smart-edit.test.js +542 -0
- package/dist/src/tools/smart-edit.test.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +18 -1
- package/dist/src/tools/tool-error.js +27 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +10 -4
- package/dist/src/tools/tool-registry.js +20 -7
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +93 -10
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +33 -16
- package/dist/src/tools/tools.js +115 -5
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.js +1 -2
- package/dist/src/tools/tools.test.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +3 -2
- package/dist/src/tools/web-fetch.js +14 -10
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +55 -16
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +4 -3
- package/dist/src/tools/web-search.js +31 -8
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/web-search.test.js +69 -1
- package/dist/src/tools/web-search.test.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +4 -3
- package/dist/src/tools/write-file.js +17 -18
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +108 -24
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/tools/write-todos.d.ts +25 -0
- package/dist/src/tools/write-todos.js +150 -0
- package/dist/src/tools/write-todos.js.map +1 -0
- package/dist/src/tools/write-todos.test.d.ts +6 -0
- package/dist/src/tools/write-todos.test.js +89 -0
- package/dist/src/tools/write-todos.test.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.d.ts +2 -2
- package/dist/src/utils/bfsFileSearch.js +13 -7
- package/dist/src/utils/bfsFileSearch.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.test.js +3 -3
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
- package/dist/src/utils/editCorrector.d.ts +9 -8
- package/dist/src/utils/editCorrector.js +62 -19
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +33 -82
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.js +32 -45
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +62 -76
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/environmentContext.d.ts +2 -2
- package/dist/src/utils/errorParsing.js +2 -2
- package/dist/src/utils/errorParsing.js.map +1 -1
- package/dist/src/utils/errorParsing.test.js +7 -7
- package/dist/src/utils/errorParsing.test.js.map +1 -1
- package/dist/src/utils/errorReporting.d.ts +1 -1
- package/dist/src/utils/errors.d.ts +25 -0
- package/dist/src/utils/errors.js +42 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/fetch.js +1 -1
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +24 -12
- package/dist/src/utils/fileUtils.js +170 -79
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +347 -29
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.d.ts +1 -1
- package/dist/src/utils/filesearch/crawler.test.js +2 -2
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
- package/dist/src/utils/filesearch/fileSearch.js +14 -9
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +90 -0
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/flashFallback.test.d.ts +6 -0
- package/dist/src/utils/{flashFallback.integration.test.js → flashFallback.test.js} +33 -29
- package/dist/src/utils/flashFallback.test.js.map +1 -0
- package/dist/src/utils/geminiIgnoreParser.d.ts +18 -0
- package/dist/src/utils/geminiIgnoreParser.js +61 -0
- package/dist/src/utils/geminiIgnoreParser.js.map +1 -0
- package/dist/src/utils/geminiIgnoreParser.test.d.ts +6 -0
- package/dist/src/utils/geminiIgnoreParser.test.js +50 -0
- package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -0
- package/dist/src/utils/generateContentResponseUtilities.d.ts +1 -2
- package/dist/src/utils/generateContentResponseUtilities.js +1 -13
- package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
- package/dist/src/utils/generateContentResponseUtilities.test.js +2 -40
- package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
- package/dist/src/utils/getFolderStructure.d.ts +2 -2
- package/dist/src/utils/getFolderStructure.js +3 -3
- package/dist/src/utils/getFolderStructure.js.map +1 -1
- package/dist/src/utils/getFolderStructure.test.js +4 -4
- package/dist/src/utils/getFolderStructure.test.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.d.ts +3 -7
- package/dist/src/utils/gitIgnoreParser.js +126 -35
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.test.js +69 -38
- package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
- package/dist/src/utils/gitUtils.js +2 -2
- package/dist/src/utils/gitUtils.js.map +1 -1
- package/dist/src/utils/ignorePatterns.d.ts +103 -0
- package/dist/src/utils/ignorePatterns.js +220 -0
- package/dist/src/utils/ignorePatterns.js.map +1 -0
- package/dist/src/utils/ignorePatterns.test.d.ts +6 -0
- package/dist/src/utils/ignorePatterns.test.js +250 -0
- package/dist/src/utils/ignorePatterns.test.js.map +1 -0
- package/dist/src/utils/installationManager.d.ts +16 -0
- package/dist/src/utils/installationManager.js +50 -0
- package/dist/src/utils/installationManager.js.map +1 -0
- package/dist/src/utils/installationManager.test.d.ts +6 -0
- package/dist/src/utils/installationManager.test.js +83 -0
- package/dist/src/utils/installationManager.test.js.map +1 -0
- package/dist/src/utils/language-detection.d.ts +6 -0
- package/dist/src/utils/language-detection.js +101 -0
- package/dist/src/utils/language-detection.js.map +1 -0
- package/dist/src/utils/llm-edit-fixer.d.ts +26 -0
- package/dist/src/utils/llm-edit-fixer.js +131 -0
- package/dist/src/utils/llm-edit-fixer.js.map +1 -0
- package/dist/src/utils/llm-edit-fixer.test.d.ts +6 -0
- package/dist/src/utils/llm-edit-fixer.test.js +186 -0
- package/dist/src/utils/llm-edit-fixer.test.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +7 -6
- package/dist/src/utils/memoryDiscovery.js +68 -33
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +88 -26
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +15 -22
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +16 -141
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
- package/dist/src/utils/messageInspectors.d.ts +1 -1
- package/dist/src/utils/nextSpeakerChecker.d.ts +3 -3
- package/dist/src/utils/nextSpeakerChecker.js +8 -2
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.test.js +75 -64
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/partUtils.d.ts +22 -1
- package/dist/src/utils/partUtils.js +68 -0
- package/dist/src/utils/partUtils.js.map +1 -1
- package/dist/src/utils/partUtils.test.js +112 -1
- package/dist/src/utils/partUtils.test.js.map +1 -1
- package/dist/src/utils/pathReader.d.ts +17 -0
- package/dist/src/utils/pathReader.js +92 -0
- package/dist/src/utils/pathReader.js.map +1 -0
- package/dist/src/utils/pathReader.test.d.ts +6 -0
- package/dist/src/utils/pathReader.test.js +363 -0
- package/dist/src/utils/pathReader.test.js.map +1 -0
- package/dist/src/utils/paths.d.ts +0 -17
- package/dist/src/utils/paths.js +2 -28
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/promptIdContext.d.ts +7 -0
- package/dist/src/utils/promptIdContext.js +8 -0
- package/dist/src/utils/promptIdContext.js.map +1 -0
- package/dist/src/utils/quotaErrorDetection.d.ts +1 -1
- package/dist/src/utils/retry.d.ts +3 -1
- package/dist/src/utils/retry.js +60 -5
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +35 -3
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/schemaValidator.js +15 -1
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/src/utils/schemaValidator.test.d.ts +6 -0
- package/dist/src/utils/schemaValidator.test.js +113 -0
- package/dist/src/utils/schemaValidator.test.js.map +1 -0
- package/dist/src/utils/session.js +1 -1
- package/dist/src/utils/session.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +6 -1
- package/dist/src/utils/shell-utils.js +51 -30
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +9 -0
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/summarizer.d.ts +2 -2
- package/dist/src/utils/summarizer.test.js.map +1 -1
- package/dist/src/utils/systemEncoding.js +2 -2
- package/dist/src/utils/systemEncoding.js.map +1 -1
- package/dist/src/utils/systemEncoding.test.js +2 -2
- package/dist/src/utils/systemEncoding.test.js.map +1 -1
- package/dist/src/utils/terminalSerializer.d.ts +25 -0
- package/dist/src/utils/terminalSerializer.js +432 -0
- package/dist/src/utils/terminalSerializer.js.map +1 -0
- package/dist/src/utils/terminalSerializer.test.d.ts +6 -0
- package/dist/src/utils/terminalSerializer.test.js +176 -0
- package/dist/src/utils/terminalSerializer.test.js.map +1 -0
- package/dist/src/utils/textUtils.d.ts +5 -0
- package/dist/src/utils/textUtils.js +14 -0
- package/dist/src/utils/textUtils.js.map +1 -1
- package/dist/src/utils/textUtils.test.d.ts +6 -0
- package/dist/src/utils/textUtils.test.js +59 -0
- package/dist/src/utils/textUtils.test.js.map +1 -0
- package/dist/src/utils/thoughtUtils.d.ts +21 -0
- package/dist/src/utils/thoughtUtils.js +39 -0
- package/dist/src/utils/thoughtUtils.js.map +1 -0
- package/dist/src/utils/thoughtUtils.test.d.ts +6 -0
- package/dist/src/utils/thoughtUtils.test.js +78 -0
- package/dist/src/utils/thoughtUtils.test.js.map +1 -0
- package/dist/src/utils/tool-utils.d.ts +19 -0
- package/dist/src/utils/tool-utils.js +58 -0
- package/dist/src/utils/tool-utils.js.map +1 -0
- package/dist/src/utils/tool-utils.test.d.ts +6 -0
- package/dist/src/utils/tool-utils.test.js +61 -0
- package/dist/src/utils/tool-utils.test.js.map +1 -0
- package/dist/src/utils/userAccountManager.d.ts +20 -0
- package/dist/src/utils/userAccountManager.js +114 -0
- package/dist/src/utils/userAccountManager.js.map +1 -0
- package/dist/src/utils/userAccountManager.test.d.ts +6 -0
- package/dist/src/utils/{user_account.test.js → userAccountManager.test.js} +33 -30
- package/dist/src/utils/userAccountManager.test.js.map +1 -0
- package/dist/src/utils/workspaceContext.js +13 -7
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/dist/src/utils/workspaceContext.test.js +41 -16
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -9
- package/dist/src/core/modelCheck.d.ts +0 -14
- package/dist/src/core/modelCheck.js +0 -62
- package/dist/src/core/modelCheck.js.map +0 -1
- package/dist/src/test-utils/tools.d.ts +0 -44
- package/dist/src/test-utils/tools.js.map +0 -1
- package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
- package/dist/src/utils/user_account.d.ts +0 -9
- package/dist/src/utils/user_account.js +0 -109
- package/dist/src/utils/user_account.js.map +0 -1
- package/dist/src/utils/user_account.test.js.map +0 -1
- package/dist/src/utils/user_id.d.ts +0 -11
- package/dist/src/utils/user_id.js +0 -49
- package/dist/src/utils/user_id.js.map +0 -1
- 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/flashFallback.integration.test.d.ts → agents/executor.test.d.ts} +0 -0
- /package/dist/src/{utils/user_account.test.d.ts → agents/invocation.test.d.ts} +0 -0
- /package/dist/src/{utils/user_id.test.d.ts → agents/registry.test.d.ts} +0 -0
|
@@ -3,15 +3,22 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
7
|
-
import { Config } from './config.js';
|
|
8
|
-
import * as path from 'path';
|
|
6
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
7
|
+
import { Config, ApprovalMode } from './config.js';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
9
|
import { setGeminiMdFilename as mockSetGeminiMdFilename } from '../tools/memoryTool.js';
|
|
10
10
|
import { DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, } from '../telemetry/index.js';
|
|
11
11
|
import { AuthType, createContentGeneratorConfig, } from '../core/contentGenerator.js';
|
|
12
12
|
import { GeminiClient } from '../core/client.js';
|
|
13
13
|
import { GitService } from '../services/gitService.js';
|
|
14
14
|
import { ClearcutLogger } from '../telemetry/clearcut-logger/clearcut-logger.js';
|
|
15
|
+
import { ShellTool } from '../tools/shell.js';
|
|
16
|
+
import { ReadFileTool } from '../tools/read-file.js';
|
|
17
|
+
import { GrepTool } from '../tools/grep.js';
|
|
18
|
+
import { RipGrepTool, canUseRipgrep } from '../tools/ripGrep.js';
|
|
19
|
+
import { logRipgrepFallback } from '../telemetry/loggers.js';
|
|
20
|
+
import { RipgrepFallbackEvent } from '../telemetry/types.js';
|
|
21
|
+
import { ToolRegistry } from '../tools/tool-registry.js';
|
|
15
22
|
vi.mock('fs', async (importOriginal) => {
|
|
16
23
|
const actual = await importOriginal();
|
|
17
24
|
return {
|
|
@@ -39,7 +46,12 @@ vi.mock('../utils/memoryDiscovery.js', () => ({
|
|
|
39
46
|
// Mock individual tools if their constructors are complex or have side effects
|
|
40
47
|
vi.mock('../tools/ls');
|
|
41
48
|
vi.mock('../tools/read-file');
|
|
42
|
-
vi.mock('../tools/grep');
|
|
49
|
+
vi.mock('../tools/grep.js');
|
|
50
|
+
vi.mock('../tools/ripGrep.js', () => ({
|
|
51
|
+
canUseRipgrep: vi.fn(),
|
|
52
|
+
RipGrepTool: class MockRipGrepTool {
|
|
53
|
+
},
|
|
54
|
+
}));
|
|
43
55
|
vi.mock('../tools/glob');
|
|
44
56
|
vi.mock('../tools/edit');
|
|
45
57
|
vi.mock('../tools/shell');
|
|
@@ -53,16 +65,11 @@ vi.mock('../tools/memoryTool', () => ({
|
|
|
53
65
|
DEFAULT_CONTEXT_FILENAME: 'GEMINI.md',
|
|
54
66
|
GEMINI_CONFIG_DIR: '.gemini',
|
|
55
67
|
}));
|
|
56
|
-
vi.mock('../core/contentGenerator.js'
|
|
57
|
-
const actual = await importOriginal();
|
|
58
|
-
return {
|
|
59
|
-
...actual,
|
|
60
|
-
createContentGeneratorConfig: vi.fn(),
|
|
61
|
-
};
|
|
62
|
-
});
|
|
68
|
+
vi.mock('../core/contentGenerator.js');
|
|
63
69
|
vi.mock('../core/client.js', () => ({
|
|
64
70
|
GeminiClient: vi.fn().mockImplementation(() => ({
|
|
65
71
|
initialize: vi.fn().mockResolvedValue(undefined),
|
|
72
|
+
stripThoughtsFromHistory: vi.fn(),
|
|
66
73
|
})),
|
|
67
74
|
}));
|
|
68
75
|
vi.mock('../telemetry/index.js', async (importOriginal) => {
|
|
@@ -70,6 +77,16 @@ vi.mock('../telemetry/index.js', async (importOriginal) => {
|
|
|
70
77
|
return {
|
|
71
78
|
...actual,
|
|
72
79
|
initializeTelemetry: vi.fn(),
|
|
80
|
+
uiTelemetryService: {
|
|
81
|
+
getLastPromptTokenCount: vi.fn(),
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
vi.mock('../telemetry/loggers.js', async (importOriginal) => {
|
|
86
|
+
const actual = await importOriginal();
|
|
87
|
+
return {
|
|
88
|
+
...actual,
|
|
89
|
+
logRipgrepFallback: vi.fn(),
|
|
73
90
|
};
|
|
74
91
|
});
|
|
75
92
|
vi.mock('../services/gitService.js', () => {
|
|
@@ -77,6 +94,22 @@ vi.mock('../services/gitService.js', () => {
|
|
|
77
94
|
GitServiceMock.prototype.initialize = vi.fn();
|
|
78
95
|
return { GitService: GitServiceMock };
|
|
79
96
|
});
|
|
97
|
+
vi.mock('../ide/ide-client.js', () => ({
|
|
98
|
+
IdeClient: {
|
|
99
|
+
getInstance: vi.fn().mockResolvedValue({
|
|
100
|
+
getConnectionStatus: vi.fn(),
|
|
101
|
+
initialize: vi.fn(),
|
|
102
|
+
shutdown: vi.fn(),
|
|
103
|
+
}),
|
|
104
|
+
},
|
|
105
|
+
}));
|
|
106
|
+
import { BaseLlmClient } from '../core/baseLlmClient.js';
|
|
107
|
+
import { tokenLimit } from '../core/tokenLimits.js';
|
|
108
|
+
import { uiTelemetryService } from '../telemetry/index.js';
|
|
109
|
+
vi.mock('../core/baseLlmClient.js');
|
|
110
|
+
vi.mock('../core/tokenLimits.js', () => ({
|
|
111
|
+
tokenLimit: vi.fn(),
|
|
112
|
+
}));
|
|
80
113
|
describe('Server Config (config.ts)', () => {
|
|
81
114
|
const MODEL = 'gemini-pro';
|
|
82
115
|
const SANDBOX = {
|
|
@@ -142,144 +175,34 @@ describe('Server Config (config.ts)', () => {
|
|
|
142
175
|
it('should refresh auth and update config', async () => {
|
|
143
176
|
const config = new Config(baseParams);
|
|
144
177
|
const authType = AuthType.USE_GEMINI;
|
|
145
|
-
const newModel = 'gemini-flash';
|
|
146
178
|
const mockContentConfig = {
|
|
147
|
-
model: newModel,
|
|
148
179
|
apiKey: 'test-key',
|
|
149
180
|
};
|
|
150
|
-
createContentGeneratorConfig.mockReturnValue(mockContentConfig);
|
|
181
|
+
vi.mocked(createContentGeneratorConfig).mockReturnValue(mockContentConfig);
|
|
151
182
|
// Set fallback mode to true to ensure it gets reset
|
|
152
183
|
config.setFallbackMode(true);
|
|
153
184
|
expect(config.isInFallbackMode()).toBe(true);
|
|
154
185
|
await config.refreshAuth(authType);
|
|
155
186
|
expect(createContentGeneratorConfig).toHaveBeenCalledWith(config, authType);
|
|
156
|
-
// Verify that contentGeneratorConfig is updated
|
|
187
|
+
// Verify that contentGeneratorConfig is updated
|
|
157
188
|
expect(config.getContentGeneratorConfig()).toEqual(mockContentConfig);
|
|
158
|
-
expect(config.getContentGeneratorConfig().model).toBe(newModel);
|
|
159
|
-
expect(config.getModel()).toBe(newModel); // getModel() should return the updated model
|
|
160
189
|
expect(GeminiClient).toHaveBeenCalledWith(config);
|
|
161
190
|
// Verify that fallback mode is reset
|
|
162
191
|
expect(config.isInFallbackMode()).toBe(false);
|
|
163
192
|
});
|
|
164
|
-
it('should preserve conversation history when refreshing auth', async () => {
|
|
165
|
-
const config = new Config(baseParams);
|
|
166
|
-
const authType = AuthType.USE_GEMINI;
|
|
167
|
-
const mockContentConfig = {
|
|
168
|
-
model: 'gemini-pro',
|
|
169
|
-
apiKey: 'test-key',
|
|
170
|
-
};
|
|
171
|
-
createContentGeneratorConfig.mockReturnValue(mockContentConfig);
|
|
172
|
-
// Mock the existing client with some history
|
|
173
|
-
const mockExistingHistory = [
|
|
174
|
-
{ role: 'user', parts: [{ text: 'Hello' }] },
|
|
175
|
-
{ role: 'model', parts: [{ text: 'Hi there!' }] },
|
|
176
|
-
{ role: 'user', parts: [{ text: 'How are you?' }] },
|
|
177
|
-
];
|
|
178
|
-
const mockExistingClient = {
|
|
179
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
180
|
-
getHistory: vi.fn().mockReturnValue(mockExistingHistory),
|
|
181
|
-
};
|
|
182
|
-
const mockNewClient = {
|
|
183
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
184
|
-
getHistory: vi.fn().mockReturnValue([]),
|
|
185
|
-
setHistory: vi.fn(),
|
|
186
|
-
initialize: vi.fn().mockResolvedValue(undefined),
|
|
187
|
-
};
|
|
188
|
-
// Set the existing client
|
|
189
|
-
config.geminiClient = mockExistingClient;
|
|
190
|
-
GeminiClient.mockImplementation(() => mockNewClient);
|
|
191
|
-
await config.refreshAuth(authType);
|
|
192
|
-
// Verify that existing history was retrieved
|
|
193
|
-
expect(mockExistingClient.getHistory).toHaveBeenCalled();
|
|
194
|
-
// Verify that new client was created and initialized
|
|
195
|
-
expect(GeminiClient).toHaveBeenCalledWith(config);
|
|
196
|
-
expect(mockNewClient.initialize).toHaveBeenCalledWith(mockContentConfig);
|
|
197
|
-
// Verify that history was restored to the new client
|
|
198
|
-
expect(mockNewClient.setHistory).toHaveBeenCalledWith(mockExistingHistory, { stripThoughts: false });
|
|
199
|
-
});
|
|
200
|
-
it('should handle case when no existing client is initialized', async () => {
|
|
201
|
-
const config = new Config(baseParams);
|
|
202
|
-
const authType = AuthType.USE_GEMINI;
|
|
203
|
-
const mockContentConfig = {
|
|
204
|
-
model: 'gemini-pro',
|
|
205
|
-
apiKey: 'test-key',
|
|
206
|
-
};
|
|
207
|
-
createContentGeneratorConfig.mockReturnValue(mockContentConfig);
|
|
208
|
-
const mockNewClient = {
|
|
209
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
210
|
-
getHistory: vi.fn().mockReturnValue([]),
|
|
211
|
-
setHistory: vi.fn(),
|
|
212
|
-
initialize: vi.fn().mockResolvedValue(undefined),
|
|
213
|
-
};
|
|
214
|
-
// No existing client
|
|
215
|
-
config.geminiClient = null;
|
|
216
|
-
GeminiClient.mockImplementation(() => mockNewClient);
|
|
217
|
-
await config.refreshAuth(authType);
|
|
218
|
-
// Verify that new client was created and initialized
|
|
219
|
-
expect(GeminiClient).toHaveBeenCalledWith(config);
|
|
220
|
-
expect(mockNewClient.initialize).toHaveBeenCalledWith(mockContentConfig);
|
|
221
|
-
// Verify that setHistory was not called since there was no existing history
|
|
222
|
-
expect(mockNewClient.setHistory).not.toHaveBeenCalled();
|
|
223
|
-
});
|
|
224
193
|
it('should strip thoughts when switching from GenAI to Vertex', async () => {
|
|
225
194
|
const config = new Config(baseParams);
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
apiKey: 'test-key',
|
|
229
|
-
authType: AuthType.USE_GEMINI,
|
|
230
|
-
};
|
|
231
|
-
config.contentGeneratorConfig = mockContentConfig;
|
|
232
|
-
createContentGeneratorConfig.mockReturnValue({
|
|
233
|
-
...mockContentConfig,
|
|
234
|
-
authType: AuthType.LOGIN_WITH_GOOGLE,
|
|
235
|
-
});
|
|
236
|
-
const mockExistingHistory = [
|
|
237
|
-
{ role: 'user', parts: [{ text: 'Hello' }] },
|
|
238
|
-
];
|
|
239
|
-
const mockExistingClient = {
|
|
240
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
241
|
-
getHistory: vi.fn().mockReturnValue(mockExistingHistory),
|
|
242
|
-
};
|
|
243
|
-
const mockNewClient = {
|
|
244
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
245
|
-
getHistory: vi.fn().mockReturnValue([]),
|
|
246
|
-
setHistory: vi.fn(),
|
|
247
|
-
initialize: vi.fn().mockResolvedValue(undefined),
|
|
248
|
-
};
|
|
249
|
-
config.geminiClient = mockExistingClient;
|
|
250
|
-
GeminiClient.mockImplementation(() => mockNewClient);
|
|
195
|
+
vi.mocked(createContentGeneratorConfig).mockImplementation((_, authType) => ({ authType }));
|
|
196
|
+
await config.refreshAuth(AuthType.USE_GEMINI);
|
|
251
197
|
await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
|
|
252
|
-
expect(
|
|
198
|
+
expect(config.getGeminiClient().stripThoughtsFromHistory).toHaveBeenCalledWith();
|
|
253
199
|
});
|
|
254
200
|
it('should not strip thoughts when switching from Vertex to GenAI', async () => {
|
|
255
201
|
const config = new Config(baseParams);
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
apiKey: 'test-key',
|
|
259
|
-
authType: AuthType.LOGIN_WITH_GOOGLE,
|
|
260
|
-
};
|
|
261
|
-
config.contentGeneratorConfig = mockContentConfig;
|
|
262
|
-
createContentGeneratorConfig.mockReturnValue({
|
|
263
|
-
...mockContentConfig,
|
|
264
|
-
authType: AuthType.USE_GEMINI,
|
|
265
|
-
});
|
|
266
|
-
const mockExistingHistory = [
|
|
267
|
-
{ role: 'user', parts: [{ text: 'Hello' }] },
|
|
268
|
-
];
|
|
269
|
-
const mockExistingClient = {
|
|
270
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
271
|
-
getHistory: vi.fn().mockReturnValue(mockExistingHistory),
|
|
272
|
-
};
|
|
273
|
-
const mockNewClient = {
|
|
274
|
-
isInitialized: vi.fn().mockReturnValue(true),
|
|
275
|
-
getHistory: vi.fn().mockReturnValue([]),
|
|
276
|
-
setHistory: vi.fn(),
|
|
277
|
-
initialize: vi.fn().mockResolvedValue(undefined),
|
|
278
|
-
};
|
|
279
|
-
config.geminiClient = mockExistingClient;
|
|
280
|
-
GeminiClient.mockImplementation(() => mockNewClient);
|
|
202
|
+
vi.mocked(createContentGeneratorConfig).mockImplementation((_, authType) => ({ authType }));
|
|
203
|
+
await config.refreshAuth(AuthType.USE_VERTEX_AI);
|
|
281
204
|
await config.refreshAuth(AuthType.USE_GEMINI);
|
|
282
|
-
expect(
|
|
205
|
+
expect(config.getGeminiClient().stripThoughtsFromHistory).not.toHaveBeenCalledWith();
|
|
283
206
|
});
|
|
284
207
|
});
|
|
285
208
|
it('Config constructor should store userMemory correctly', () => {
|
|
@@ -358,6 +281,30 @@ describe('Server Config (config.ts)', () => {
|
|
|
358
281
|
const config = new Config(paramsWithoutTelemetry);
|
|
359
282
|
expect(config.getTelemetryEnabled()).toBe(TELEMETRY_SETTINGS.enabled);
|
|
360
283
|
});
|
|
284
|
+
it('Config constructor should set telemetry useCollector to true when provided', () => {
|
|
285
|
+
const paramsWithTelemetry = {
|
|
286
|
+
...baseParams,
|
|
287
|
+
telemetry: { enabled: true, useCollector: true },
|
|
288
|
+
};
|
|
289
|
+
const config = new Config(paramsWithTelemetry);
|
|
290
|
+
expect(config.getTelemetryUseCollector()).toBe(true);
|
|
291
|
+
});
|
|
292
|
+
it('Config constructor should set telemetry useCollector to false when provided', () => {
|
|
293
|
+
const paramsWithTelemetry = {
|
|
294
|
+
...baseParams,
|
|
295
|
+
telemetry: { enabled: true, useCollector: false },
|
|
296
|
+
};
|
|
297
|
+
const config = new Config(paramsWithTelemetry);
|
|
298
|
+
expect(config.getTelemetryUseCollector()).toBe(false);
|
|
299
|
+
});
|
|
300
|
+
it('Config constructor should default telemetry useCollector to false if not provided', () => {
|
|
301
|
+
const paramsWithTelemetry = {
|
|
302
|
+
...baseParams,
|
|
303
|
+
telemetry: { enabled: true },
|
|
304
|
+
};
|
|
305
|
+
const config = new Config(paramsWithTelemetry);
|
|
306
|
+
expect(config.getTelemetryUseCollector()).toBe(false);
|
|
307
|
+
});
|
|
361
308
|
it('should have a getFileService method that returns FileDiscoveryService', () => {
|
|
362
309
|
const config = new Config(baseParams);
|
|
363
310
|
const fileService = config.getFileService();
|
|
@@ -378,11 +325,12 @@ describe('Server Config (config.ts)', () => {
|
|
|
378
325
|
});
|
|
379
326
|
expect(config.getUsageStatisticsEnabled()).toBe(enabled);
|
|
380
327
|
});
|
|
381
|
-
it('logs the session start event', () => {
|
|
382
|
-
new Config({
|
|
328
|
+
it('logs the session start event', async () => {
|
|
329
|
+
const config = new Config({
|
|
383
330
|
...baseParams,
|
|
384
331
|
usageStatisticsEnabled: true,
|
|
385
332
|
});
|
|
333
|
+
await config.refreshAuth(AuthType.USE_GEMINI);
|
|
386
334
|
expect(ClearcutLogger.prototype.logStartSessionEvent).toHaveBeenCalledOnce();
|
|
387
335
|
});
|
|
388
336
|
});
|
|
@@ -469,5 +417,296 @@ describe('Server Config (config.ts)', () => {
|
|
|
469
417
|
expect(config.getTelemetryOtlpProtocol()).toBe('grpc');
|
|
470
418
|
});
|
|
471
419
|
});
|
|
420
|
+
describe('UseRipgrep Configuration', () => {
|
|
421
|
+
it('should default useRipgrep to true when not provided', () => {
|
|
422
|
+
const config = new Config(baseParams);
|
|
423
|
+
expect(config.getUseRipgrep()).toBe(true);
|
|
424
|
+
});
|
|
425
|
+
it('should set useRipgrep to false when provided as false', () => {
|
|
426
|
+
const paramsWithRipgrep = {
|
|
427
|
+
...baseParams,
|
|
428
|
+
useRipgrep: false,
|
|
429
|
+
};
|
|
430
|
+
const config = new Config(paramsWithRipgrep);
|
|
431
|
+
expect(config.getUseRipgrep()).toBe(false);
|
|
432
|
+
});
|
|
433
|
+
it('should set useRipgrep to true when explicitly provided as true', () => {
|
|
434
|
+
const paramsWithRipgrep = {
|
|
435
|
+
...baseParams,
|
|
436
|
+
useRipgrep: true,
|
|
437
|
+
};
|
|
438
|
+
const config = new Config(paramsWithRipgrep);
|
|
439
|
+
expect(config.getUseRipgrep()).toBe(true);
|
|
440
|
+
});
|
|
441
|
+
it('should default useRipgrep to true when undefined', () => {
|
|
442
|
+
const paramsWithUndefinedRipgrep = {
|
|
443
|
+
...baseParams,
|
|
444
|
+
useRipgrep: undefined,
|
|
445
|
+
};
|
|
446
|
+
const config = new Config(paramsWithUndefinedRipgrep);
|
|
447
|
+
expect(config.getUseRipgrep()).toBe(true);
|
|
448
|
+
});
|
|
449
|
+
});
|
|
450
|
+
describe('UseModelRouter Configuration', () => {
|
|
451
|
+
it('should default useModelRouter to false when not provided', () => {
|
|
452
|
+
const config = new Config(baseParams);
|
|
453
|
+
expect(config.getUseModelRouter()).toBe(false);
|
|
454
|
+
});
|
|
455
|
+
it('should set useModelRouter to true when provided as true', () => {
|
|
456
|
+
const paramsWithModelRouter = {
|
|
457
|
+
...baseParams,
|
|
458
|
+
useModelRouter: true,
|
|
459
|
+
};
|
|
460
|
+
const config = new Config(paramsWithModelRouter);
|
|
461
|
+
expect(config.getUseModelRouter()).toBe(true);
|
|
462
|
+
});
|
|
463
|
+
it('should set useModelRouter to false when explicitly provided as false', () => {
|
|
464
|
+
const paramsWithModelRouter = {
|
|
465
|
+
...baseParams,
|
|
466
|
+
useModelRouter: false,
|
|
467
|
+
};
|
|
468
|
+
const config = new Config(paramsWithModelRouter);
|
|
469
|
+
expect(config.getUseModelRouter()).toBe(false);
|
|
470
|
+
});
|
|
471
|
+
});
|
|
472
|
+
describe('createToolRegistry', () => {
|
|
473
|
+
it('should register a tool if coreTools contains an argument-specific pattern', async () => {
|
|
474
|
+
const params = {
|
|
475
|
+
...baseParams,
|
|
476
|
+
coreTools: ['ShellTool(git status)'],
|
|
477
|
+
};
|
|
478
|
+
const config = new Config(params);
|
|
479
|
+
await config.initialize();
|
|
480
|
+
// The ToolRegistry class is mocked, so we can inspect its prototype's methods.
|
|
481
|
+
const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
|
|
482
|
+
// Check that registerTool was called for ShellTool
|
|
483
|
+
const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
|
|
484
|
+
expect(wasShellToolRegistered).toBe(true);
|
|
485
|
+
// Check that registerTool was NOT called for ReadFileTool
|
|
486
|
+
const wasReadFileToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ReadFileTool));
|
|
487
|
+
expect(wasReadFileToolRegistered).toBe(false);
|
|
488
|
+
});
|
|
489
|
+
describe('with minified tool class names', () => {
|
|
490
|
+
beforeEach(() => {
|
|
491
|
+
Object.defineProperty(vi.mocked(ShellTool).prototype.constructor, 'name', {
|
|
492
|
+
value: '_ShellTool',
|
|
493
|
+
configurable: true,
|
|
494
|
+
});
|
|
495
|
+
});
|
|
496
|
+
afterEach(() => {
|
|
497
|
+
Object.defineProperty(vi.mocked(ShellTool).prototype.constructor, 'name', {
|
|
498
|
+
value: 'ShellTool',
|
|
499
|
+
});
|
|
500
|
+
});
|
|
501
|
+
it('should register a tool if coreTools contains the non-minified class name', async () => {
|
|
502
|
+
const params = {
|
|
503
|
+
...baseParams,
|
|
504
|
+
coreTools: ['ShellTool'],
|
|
505
|
+
};
|
|
506
|
+
const config = new Config(params);
|
|
507
|
+
await config.initialize();
|
|
508
|
+
const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
|
|
509
|
+
const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
|
|
510
|
+
expect(wasShellToolRegistered).toBe(true);
|
|
511
|
+
});
|
|
512
|
+
it('should not register a tool if excludeTools contains the non-minified class name', async () => {
|
|
513
|
+
const params = {
|
|
514
|
+
...baseParams,
|
|
515
|
+
coreTools: undefined, // all tools enabled by default
|
|
516
|
+
excludeTools: ['ShellTool'],
|
|
517
|
+
};
|
|
518
|
+
const config = new Config(params);
|
|
519
|
+
await config.initialize();
|
|
520
|
+
const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
|
|
521
|
+
const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
|
|
522
|
+
expect(wasShellToolRegistered).toBe(false);
|
|
523
|
+
});
|
|
524
|
+
it('should register a tool if coreTools contains an argument-specific pattern with the non-minified class name', async () => {
|
|
525
|
+
const params = {
|
|
526
|
+
...baseParams,
|
|
527
|
+
coreTools: ['ShellTool(git status)'],
|
|
528
|
+
};
|
|
529
|
+
const config = new Config(params);
|
|
530
|
+
await config.initialize();
|
|
531
|
+
const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
|
|
532
|
+
const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
|
|
533
|
+
expect(wasShellToolRegistered).toBe(true);
|
|
534
|
+
});
|
|
535
|
+
});
|
|
536
|
+
});
|
|
537
|
+
describe('getTruncateToolOutputThreshold', () => {
|
|
538
|
+
beforeEach(() => {
|
|
539
|
+
vi.clearAllMocks();
|
|
540
|
+
});
|
|
541
|
+
it('should return the calculated threshold when it is smaller than the default', () => {
|
|
542
|
+
const config = new Config(baseParams);
|
|
543
|
+
vi.mocked(tokenLimit).mockReturnValue(32000);
|
|
544
|
+
vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(1000);
|
|
545
|
+
// 4 * (32000 - 1000) = 4 * 31000 = 124000
|
|
546
|
+
// default is 4_000_000
|
|
547
|
+
expect(config.getTruncateToolOutputThreshold()).toBe(124000);
|
|
548
|
+
});
|
|
549
|
+
it('should return the default threshold when the calculated value is larger', () => {
|
|
550
|
+
const config = new Config(baseParams);
|
|
551
|
+
vi.mocked(tokenLimit).mockReturnValue(2_000_000);
|
|
552
|
+
vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(500_000);
|
|
553
|
+
// 4 * (2_000_000 - 500_000) = 4 * 1_500_000 = 6_000_000
|
|
554
|
+
// default is 4_000_000
|
|
555
|
+
expect(config.getTruncateToolOutputThreshold()).toBe(4_000_000);
|
|
556
|
+
});
|
|
557
|
+
it('should use a custom truncateToolOutputThreshold if provided', () => {
|
|
558
|
+
const customParams = {
|
|
559
|
+
...baseParams,
|
|
560
|
+
truncateToolOutputThreshold: 50000,
|
|
561
|
+
};
|
|
562
|
+
const config = new Config(customParams);
|
|
563
|
+
vi.mocked(tokenLimit).mockReturnValue(8000);
|
|
564
|
+
vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(2000);
|
|
565
|
+
// 4 * (8000 - 2000) = 4 * 6000 = 24000
|
|
566
|
+
// custom threshold is 50000
|
|
567
|
+
expect(config.getTruncateToolOutputThreshold()).toBe(24000);
|
|
568
|
+
vi.mocked(tokenLimit).mockReturnValue(32000);
|
|
569
|
+
vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(1000);
|
|
570
|
+
// 4 * (32000 - 1000) = 124000
|
|
571
|
+
// custom threshold is 50000
|
|
572
|
+
expect(config.getTruncateToolOutputThreshold()).toBe(50000);
|
|
573
|
+
});
|
|
574
|
+
});
|
|
575
|
+
});
|
|
576
|
+
describe('setApprovalMode with folder trust', () => {
|
|
577
|
+
const baseParams = {
|
|
578
|
+
sessionId: 'test',
|
|
579
|
+
targetDir: '.',
|
|
580
|
+
debugMode: false,
|
|
581
|
+
model: 'test-model',
|
|
582
|
+
cwd: '.',
|
|
583
|
+
};
|
|
584
|
+
it('should throw an error when setting YOLO mode in an untrusted folder', () => {
|
|
585
|
+
const config = new Config(baseParams);
|
|
586
|
+
vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
|
|
587
|
+
expect(() => config.setApprovalMode(ApprovalMode.YOLO)).toThrow('Cannot enable privileged approval modes in an untrusted folder.');
|
|
588
|
+
});
|
|
589
|
+
it('should throw an error when setting AUTO_EDIT mode in an untrusted folder', () => {
|
|
590
|
+
const config = new Config(baseParams);
|
|
591
|
+
vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
|
|
592
|
+
expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).toThrow('Cannot enable privileged approval modes in an untrusted folder.');
|
|
593
|
+
});
|
|
594
|
+
it('should NOT throw an error when setting DEFAULT mode in an untrusted folder', () => {
|
|
595
|
+
const config = new Config(baseParams);
|
|
596
|
+
vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
|
|
597
|
+
expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
|
|
598
|
+
});
|
|
599
|
+
it('should NOT throw an error when setting any mode in a trusted folder', () => {
|
|
600
|
+
const config = new Config(baseParams);
|
|
601
|
+
vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
|
|
602
|
+
expect(() => config.setApprovalMode(ApprovalMode.YOLO)).not.toThrow();
|
|
603
|
+
expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).not.toThrow();
|
|
604
|
+
expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
|
|
605
|
+
});
|
|
606
|
+
it('should NOT throw an error when setting any mode if trustedFolder is undefined', () => {
|
|
607
|
+
const config = new Config(baseParams);
|
|
608
|
+
vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true); // isTrustedFolder defaults to true
|
|
609
|
+
expect(() => config.setApprovalMode(ApprovalMode.YOLO)).not.toThrow();
|
|
610
|
+
expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).not.toThrow();
|
|
611
|
+
expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
|
|
612
|
+
});
|
|
613
|
+
describe('registerCoreTools', () => {
|
|
614
|
+
beforeEach(() => {
|
|
615
|
+
vi.clearAllMocks();
|
|
616
|
+
});
|
|
617
|
+
it('should register RipGrepTool when useRipgrep is true and it is available', async () => {
|
|
618
|
+
canUseRipgrep.mockResolvedValue(true);
|
|
619
|
+
const config = new Config({ ...baseParams, useRipgrep: true });
|
|
620
|
+
await config.initialize();
|
|
621
|
+
const calls = ToolRegistry.prototype.registerTool.mock.calls;
|
|
622
|
+
const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
|
|
623
|
+
const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
|
|
624
|
+
expect(wasRipGrepRegistered).toBe(true);
|
|
625
|
+
expect(wasGrepRegistered).toBe(false);
|
|
626
|
+
expect(logRipgrepFallback).not.toHaveBeenCalled();
|
|
627
|
+
});
|
|
628
|
+
it('should register GrepTool as a fallback when useRipgrep is true but it is not available', async () => {
|
|
629
|
+
canUseRipgrep.mockResolvedValue(false);
|
|
630
|
+
const config = new Config({ ...baseParams, useRipgrep: true });
|
|
631
|
+
await config.initialize();
|
|
632
|
+
const calls = ToolRegistry.prototype.registerTool.mock.calls;
|
|
633
|
+
const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
|
|
634
|
+
const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
|
|
635
|
+
expect(wasRipGrepRegistered).toBe(false);
|
|
636
|
+
expect(wasGrepRegistered).toBe(true);
|
|
637
|
+
expect(logRipgrepFallback).toHaveBeenCalledWith(config, expect.any(RipgrepFallbackEvent));
|
|
638
|
+
const event = logRipgrepFallback.mock.calls[0][1];
|
|
639
|
+
expect(event.error).toBeUndefined();
|
|
640
|
+
});
|
|
641
|
+
it('should register GrepTool as a fallback when canUseRipgrep throws an error', async () => {
|
|
642
|
+
const error = new Error('ripGrep check failed');
|
|
643
|
+
canUseRipgrep.mockRejectedValue(error);
|
|
644
|
+
const config = new Config({ ...baseParams, useRipgrep: true });
|
|
645
|
+
await config.initialize();
|
|
646
|
+
const calls = ToolRegistry.prototype.registerTool.mock.calls;
|
|
647
|
+
const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
|
|
648
|
+
const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
|
|
649
|
+
expect(wasRipGrepRegistered).toBe(false);
|
|
650
|
+
expect(wasGrepRegistered).toBe(true);
|
|
651
|
+
expect(logRipgrepFallback).toHaveBeenCalledWith(config, expect.any(RipgrepFallbackEvent));
|
|
652
|
+
const event = logRipgrepFallback.mock.calls[0][1];
|
|
653
|
+
expect(event.error).toBe(String(error));
|
|
654
|
+
});
|
|
655
|
+
it('should register GrepTool when useRipgrep is false', async () => {
|
|
656
|
+
const config = new Config({ ...baseParams, useRipgrep: false });
|
|
657
|
+
await config.initialize();
|
|
658
|
+
const calls = ToolRegistry.prototype.registerTool.mock.calls;
|
|
659
|
+
const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
|
|
660
|
+
const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
|
|
661
|
+
expect(wasRipGrepRegistered).toBe(false);
|
|
662
|
+
expect(wasGrepRegistered).toBe(true);
|
|
663
|
+
expect(canUseRipgrep).not.toHaveBeenCalled();
|
|
664
|
+
expect(logRipgrepFallback).not.toHaveBeenCalled();
|
|
665
|
+
});
|
|
666
|
+
});
|
|
667
|
+
});
|
|
668
|
+
describe('BaseLlmClient Lifecycle', () => {
|
|
669
|
+
const MODEL = 'gemini-pro';
|
|
670
|
+
const SANDBOX = {
|
|
671
|
+
command: 'docker',
|
|
672
|
+
image: 'gemini-cli-sandbox',
|
|
673
|
+
};
|
|
674
|
+
const TARGET_DIR = '/path/to/target';
|
|
675
|
+
const DEBUG_MODE = false;
|
|
676
|
+
const QUESTION = 'test question';
|
|
677
|
+
const FULL_CONTEXT = false;
|
|
678
|
+
const USER_MEMORY = 'Test User Memory';
|
|
679
|
+
const TELEMETRY_SETTINGS = { enabled: false };
|
|
680
|
+
const EMBEDDING_MODEL = 'gemini-embedding';
|
|
681
|
+
const SESSION_ID = 'test-session-id';
|
|
682
|
+
const baseParams = {
|
|
683
|
+
cwd: '/tmp',
|
|
684
|
+
embeddingModel: EMBEDDING_MODEL,
|
|
685
|
+
sandbox: SANDBOX,
|
|
686
|
+
targetDir: TARGET_DIR,
|
|
687
|
+
debugMode: DEBUG_MODE,
|
|
688
|
+
question: QUESTION,
|
|
689
|
+
fullContext: FULL_CONTEXT,
|
|
690
|
+
userMemory: USER_MEMORY,
|
|
691
|
+
telemetry: TELEMETRY_SETTINGS,
|
|
692
|
+
sessionId: SESSION_ID,
|
|
693
|
+
model: MODEL,
|
|
694
|
+
usageStatisticsEnabled: false,
|
|
695
|
+
};
|
|
696
|
+
it('should throw an error if getBaseLlmClient is called before refreshAuth', () => {
|
|
697
|
+
const config = new Config(baseParams);
|
|
698
|
+
expect(() => config.getBaseLlmClient()).toThrow('BaseLlmClient not initialized. Ensure authentication has occurred and ContentGenerator is ready.');
|
|
699
|
+
});
|
|
700
|
+
it('should successfully initialize BaseLlmClient after refreshAuth is called', async () => {
|
|
701
|
+
const config = new Config(baseParams);
|
|
702
|
+
const authType = AuthType.USE_GEMINI;
|
|
703
|
+
const mockContentConfig = { model: 'gemini-flash', apiKey: 'test-key' };
|
|
704
|
+
vi.mocked(createContentGeneratorConfig).mockReturnValue(mockContentConfig);
|
|
705
|
+
await config.refreshAuth(authType);
|
|
706
|
+
// Should not throw
|
|
707
|
+
const llmService = config.getBaseLlmClient();
|
|
708
|
+
expect(llmService).toBeDefined();
|
|
709
|
+
expect(BaseLlmClient).toHaveBeenCalledWith(config.getContentGenerator(), config);
|
|
710
|
+
});
|
|
472
711
|
});
|
|
473
712
|
//# sourceMappingURL=config.test.js.map
|