@google/gemini-cli-core 0.0.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/LICENSE +202 -0
- package/README.md +320 -0
- package/dist/.last_build +0 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/src/__mocks__/fs/promises.d.ts +11 -0
- package/dist/src/__mocks__/fs/promises.js +17 -0
- package/dist/src/__mocks__/fs/promises.js.map +1 -0
- package/dist/src/code_assist/codeAssist.d.ts +12 -0
- package/dist/src/code_assist/codeAssist.js +31 -0
- package/dist/src/code_assist/codeAssist.js.map +1 -0
- package/dist/src/code_assist/converter.d.ts +74 -0
- package/dist/src/code_assist/converter.js +160 -0
- package/dist/src/code_assist/converter.js.map +1 -0
- package/dist/src/code_assist/converter.test.d.ts +6 -0
- package/dist/src/code_assist/converter.test.js +372 -0
- package/dist/src/code_assist/converter.test.js.map +1 -0
- 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 +22 -0
- package/dist/src/code_assist/oauth2.js +416 -0
- package/dist/src/code_assist/oauth2.js.map +1 -0
- package/dist/src/code_assist/oauth2.test.d.ts +6 -0
- package/dist/src/code_assist/oauth2.test.js +817 -0
- package/dist/src/code_assist/oauth2.test.js.map +1 -0
- package/dist/src/code_assist/server.d.ts +37 -0
- package/dist/src/code_assist/server.js +148 -0
- package/dist/src/code_assist/server.js.map +1 -0
- package/dist/src/code_assist/server.test.d.ts +6 -0
- package/dist/src/code_assist/server.test.js +159 -0
- package/dist/src/code_assist/server.test.js.map +1 -0
- package/dist/src/code_assist/setup.d.ts +20 -0
- package/dist/src/code_assist/setup.js +101 -0
- package/dist/src/code_assist/setup.js.map +1 -0
- package/dist/src/code_assist/setup.test.d.ts +6 -0
- package/dist/src/code_assist/setup.test.js +171 -0
- package/dist/src/code_assist/setup.test.js.map +1 -0
- package/dist/src/code_assist/types.d.ts +163 -0
- package/dist/src/code_assist/types.js +46 -0
- package/dist/src/code_assist/types.js.map +1 -0
- package/dist/src/config/config.d.ts +378 -0
- package/dist/src/config/config.js +765 -0
- package/dist/src/config/config.js.map +1 -0
- package/dist/src/config/config.test.d.ts +6 -0
- package/dist/src/config/config.test.js +712 -0
- package/dist/src/config/config.test.js.map +1 -0
- package/dist/src/config/flashFallback.test.d.ts +6 -0
- package/dist/src/config/flashFallback.test.js +87 -0
- package/dist/src/config/flashFallback.test.js.map +1 -0
- package/dist/src/config/models.d.ts +25 -0
- package/dist/src/config/models.js +39 -0
- package/dist/src/config/models.js.map +1 -0
- 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 +46 -0
- package/dist/src/core/baseLlmClient.js +112 -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 +253 -0
- package/dist/src/core/baseLlmClient.test.js.map +1 -0
- package/dist/src/core/client.d.ts +60 -0
- package/dist/src/core/client.js +602 -0
- package/dist/src/core/client.js.map +1 -0
- package/dist/src/core/client.test.d.ts +6 -0
- package/dist/src/core/client.test.js +1758 -0
- package/dist/src/core/client.test.js.map +1 -0
- package/dist/src/core/contentGenerator.d.ts +32 -0
- package/dist/src/core/contentGenerator.js +76 -0
- package/dist/src/core/contentGenerator.js.map +1 -0
- package/dist/src/core/contentGenerator.test.d.ts +6 -0
- package/dist/src/core/contentGenerator.test.js +122 -0
- package/dist/src/core/contentGenerator.test.js.map +1 -0
- package/dist/src/core/coreToolScheduler.d.ts +131 -0
- package/dist/src/core/coreToolScheduler.js +706 -0
- package/dist/src/core/coreToolScheduler.js.map +1 -0
- package/dist/src/core/coreToolScheduler.test.d.ts +6 -0
- package/dist/src/core/coreToolScheduler.test.js +1151 -0
- package/dist/src/core/coreToolScheduler.test.js.map +1 -0
- package/dist/src/core/geminiChat.d.ts +128 -0
- package/dist/src/core/geminiChat.js +537 -0
- package/dist/src/core/geminiChat.js.map +1 -0
- package/dist/src/core/geminiChat.test.d.ts +6 -0
- package/dist/src/core/geminiChat.test.js +1163 -0
- package/dist/src/core/geminiChat.test.js.map +1 -0
- package/dist/src/core/geminiRequest.d.ts +13 -0
- package/dist/src/core/geminiRequest.js +11 -0
- package/dist/src/core/geminiRequest.js.map +1 -0
- package/dist/src/core/logger.d.ts +60 -0
- package/dist/src/core/logger.js +360 -0
- package/dist/src/core/logger.js.map +1 -0
- package/dist/src/core/logger.test.d.ts +6 -0
- package/dist/src/core/logger.test.js +534 -0
- package/dist/src/core/logger.test.js.map +1 -0
- package/dist/src/core/loggingContentGenerator.d.ts +25 -0
- package/dist/src/core/loggingContentGenerator.js +94 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +10 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +24 -0
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +6 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.js +294 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -0
- package/dist/src/core/prompts.d.ts +17 -0
- package/dist/src/core/prompts.js +380 -0
- package/dist/src/core/prompts.js.map +1 -0
- package/dist/src/core/prompts.test.d.ts +6 -0
- package/dist/src/core/prompts.test.js +343 -0
- package/dist/src/core/prompts.test.js.map +1 -0
- package/dist/src/core/subagent.d.ts +236 -0
- package/dist/src/core/subagent.js +482 -0
- package/dist/src/core/subagent.js.map +1 -0
- package/dist/src/core/subagent.test.d.ts +6 -0
- package/dist/src/core/subagent.test.js +530 -0
- package/dist/src/core/subagent.test.js.map +1 -0
- package/dist/src/core/tokenLimits.d.ts +10 -0
- package/dist/src/core/tokenLimits.js +28 -0
- package/dist/src/core/tokenLimits.js.map +1 -0
- package/dist/src/core/turn.d.ts +141 -0
- package/dist/src/core/turn.js +188 -0
- package/dist/src/core/turn.js.map +1 -0
- package/dist/src/core/turn.test.d.ts +6 -0
- package/dist/src/core/turn.test.js +628 -0
- package/dist/src/core/turn.test.js.map +1 -0
- package/dist/src/fallback/handler.d.ts +7 -0
- package/dist/src/fallback/handler.js +51 -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 +7 -0
- package/dist/src/generated/git-commit.js +10 -0
- package/dist/src/generated/git-commit.js.map +1 -0
- package/dist/src/ide/constants.d.ts +9 -0
- package/dist/src/ide/constants.js +10 -0
- package/dist/src/ide/constants.js.map +1 -0
- package/dist/src/ide/detect-ide.d.ts +53 -0
- package/dist/src/ide/detect-ide.js +58 -0
- package/dist/src/ide/detect-ide.js.map +1 -0
- package/dist/src/ide/detect-ide.test.d.ts +6 -0
- package/dist/src/ide/detect-ide.test.js +69 -0
- package/dist/src/ide/detect-ide.test.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +109 -0
- package/dist/src/ide/ide-client.js +640 -0
- package/dist/src/ide/ide-client.js.map +1 -0
- package/dist/src/ide/ide-client.test.d.ts +6 -0
- package/dist/src/ide/ide-client.test.js +388 -0
- package/dist/src/ide/ide-client.test.js.map +1 -0
- package/dist/src/ide/ide-installer.d.ts +14 -0
- package/dist/src/ide/ide-installer.js +111 -0
- package/dist/src/ide/ide-installer.js.map +1 -0
- package/dist/src/ide/ide-installer.test.d.ts +6 -0
- package/dist/src/ide/ide-installer.test.js +131 -0
- package/dist/src/ide/ide-installer.test.js.map +1 -0
- package/dist/src/ide/ideContext.d.ts +44 -0
- package/dist/src/ide/ideContext.js +101 -0
- package/dist/src/ide/ideContext.js.map +1 -0
- package/dist/src/ide/ideContext.test.d.ts +6 -0
- package/dist/src/ide/ideContext.test.js +393 -0
- package/dist/src/ide/ideContext.test.js.map +1 -0
- package/dist/src/ide/process-utils.d.ts +21 -0
- package/dist/src/ide/process-utils.js +171 -0
- package/dist/src/ide/process-utils.js.map +1 -0
- 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 +87 -0
- package/dist/src/index.js +97 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/index.test.d.ts +6 -0
- package/dist/src/index.test.js +12 -0
- package/dist/src/index.test.js.map +1 -0
- package/dist/src/mcp/google-auth-provider.d.ts +23 -0
- package/dist/src/mcp/google-auth-provider.js +72 -0
- package/dist/src/mcp/google-auth-provider.js.map +1 -0
- package/dist/src/mcp/google-auth-provider.test.d.ts +6 -0
- package/dist/src/mcp/google-auth-provider.test.js +89 -0
- package/dist/src/mcp/google-auth-provider.test.js.map +1 -0
- package/dist/src/mcp/oauth-provider.d.ts +149 -0
- package/dist/src/mcp/oauth-provider.js +608 -0
- package/dist/src/mcp/oauth-provider.js.map +1 -0
- package/dist/src/mcp/oauth-provider.test.d.ts +6 -0
- package/dist/src/mcp/oauth-provider.test.js +711 -0
- package/dist/src/mcp/oauth-provider.test.js.map +1 -0
- package/dist/src/mcp/oauth-token-storage.d.ts +65 -0
- package/dist/src/mcp/oauth-token-storage.js +180 -0
- package/dist/src/mcp/oauth-token-storage.js.map +1 -0
- package/dist/src/mcp/oauth-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/oauth-token-storage.test.js +299 -0
- package/dist/src/mcp/oauth-token-storage.test.js.map +1 -0
- package/dist/src/mcp/oauth-utils.d.ts +119 -0
- package/dist/src/mcp/oauth-utils.js +235 -0
- package/dist/src/mcp/oauth-utils.js.map +1 -0
- package/dist/src/mcp/oauth-utils.test.d.ts +6 -0
- package/dist/src/mcp/oauth-utils.test.js +199 -0
- package/dist/src/mcp/oauth-utils.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/mocks/msw.d.ts +6 -0
- package/dist/src/mocks/msw.js +8 -0
- package/dist/src/mocks/msw.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 +83 -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 +470 -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 +8 -0
- package/dist/src/prompts/mcp-prompts.js +13 -0
- package/dist/src/prompts/mcp-prompts.js.map +1 -0
- package/dist/src/prompts/prompt-registry.d.ts +34 -0
- package/dist/src/prompts/prompt-registry.js +63 -0
- package/dist/src/prompts/prompt-registry.js.map +1 -0
- 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 +67 -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 +144 -0
- package/dist/src/services/chatRecordingService.js +330 -0
- package/dist/src/services/chatRecordingService.js.map +1 -0
- package/dist/src/services/chatRecordingService.test.d.ts +6 -0
- package/dist/src/services/chatRecordingService.test.js +332 -0
- package/dist/src/services/chatRecordingService.test.js.map +1 -0
- package/dist/src/services/fileDiscoveryService.d.ts +45 -0
- package/dist/src/services/fileDiscoveryService.js +105 -0
- package/dist/src/services/fileDiscoveryService.js.map +1 -0
- package/dist/src/services/fileDiscoveryService.test.d.ts +6 -0
- package/dist/src/services/fileDiscoveryService.test.js +143 -0
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -0
- package/dist/src/services/fileSystemService.d.ts +31 -0
- package/dist/src/services/fileSystemService.js +18 -0
- package/dist/src/services/fileSystemService.js.map +1 -0
- package/dist/src/services/fileSystemService.test.d.ts +6 -0
- package/dist/src/services/fileSystemService.test.js +41 -0
- package/dist/src/services/fileSystemService.test.js.map +1 -0
- package/dist/src/services/gitService.d.ts +23 -0
- package/dist/src/services/gitService.js +107 -0
- package/dist/src/services/gitService.js.map +1 -0
- package/dist/src/services/gitService.test.d.ts +6 -0
- package/dist/src/services/gitService.test.js +202 -0
- package/dist/src/services/gitService.test.js.map +1 -0
- package/dist/src/services/loopDetectionService.d.ts +103 -0
- package/dist/src/services/loopDetectionService.js +379 -0
- package/dist/src/services/loopDetectionService.js.map +1 -0
- package/dist/src/services/loopDetectionService.test.d.ts +6 -0
- package/dist/src/services/loopDetectionService.test.js +587 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -0
- package/dist/src/services/shellExecutionService.d.ts +100 -0
- package/dist/src/services/shellExecutionService.js +466 -0
- package/dist/src/services/shellExecutionService.js.map +1 -0
- package/dist/src/services/shellExecutionService.test.d.ts +6 -0
- package/dist/src/services/shellExecutionService.test.js +614 -0
- package/dist/src/services/shellExecutionService.test.js.map +1 -0
- 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 +135 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +892 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +17 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +507 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +107 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +275 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -0
- package/dist/src/telemetry/constants.d.ts +40 -0
- package/dist/src/telemetry/constants.js +41 -0
- package/dist/src/telemetry/constants.js.map +1 -0
- package/dist/src/telemetry/file-exporters.d.ts +29 -0
- package/dist/src/telemetry/file-exporters.js +62 -0
- package/dist/src/telemetry/file-exporters.js.map +1 -0
- 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 +26 -0
- package/dist/src/telemetry/index.js +26 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/integration.test.circular.d.ts +6 -0
- package/dist/src/telemetry/integration.test.circular.js +54 -0
- package/dist/src/telemetry/integration.test.circular.js.map +1 -0
- package/dist/src/telemetry/loggers.d.ts +33 -0
- package/dist/src/telemetry/loggers.js +536 -0
- package/dist/src/telemetry/loggers.js.map +1 -0
- package/dist/src/telemetry/loggers.test.circular.d.ts +6 -0
- package/dist/src/telemetry/loggers.test.circular.js +107 -0
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -0
- package/dist/src/telemetry/loggers.test.d.ts +6 -0
- package/dist/src/telemetry/loggers.test.js +887 -0
- package/dist/src/telemetry/loggers.test.js.map +1 -0
- package/dist/src/telemetry/metrics.d.ts +37 -0
- package/dist/src/telemetry/metrics.js +231 -0
- package/dist/src/telemetry/metrics.js.map +1 -0
- package/dist/src/telemetry/metrics.test.d.ts +6 -0
- package/dist/src/telemetry/metrics.test.js +264 -0
- package/dist/src/telemetry/metrics.test.js.map +1 -0
- 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 +9 -0
- package/dist/src/telemetry/sdk.js +178 -0
- package/dist/src/telemetry/sdk.js.map +1 -0
- package/dist/src/telemetry/sdk.test.d.ts +6 -0
- package/dist/src/telemetry/sdk.test.js +177 -0
- package/dist/src/telemetry/sdk.test.js.map +1 -0
- 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/telemetry.test.d.ts +6 -0
- package/dist/src/telemetry/telemetry.test.js +50 -0
- package/dist/src/telemetry/telemetry.test.js.map +1 -0
- 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 +284 -0
- package/dist/src/telemetry/types.js +487 -0
- package/dist/src/telemetry/types.js.map +1 -0
- package/dist/src/telemetry/uiTelemetry.d.ts +75 -0
- package/dist/src/telemetry/uiTelemetry.js +152 -0
- package/dist/src/telemetry/uiTelemetry.js.map +1 -0
- package/dist/src/telemetry/uiTelemetry.test.d.ts +6 -0
- package/dist/src/telemetry/uiTelemetry.test.js +558 -0
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -0
- package/dist/src/test-utils/config.d.ts +17 -0
- package/dist/src/test-utils/config.js +32 -0
- package/dist/src/test-utils/config.js.map +1 -0
- 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 +41 -0
- package/dist/src/test-utils/mock-tool.js +51 -0
- package/dist/src/test-utils/mock-tool.js.map +1 -0
- package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
- package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
- package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
- package/dist/src/test-utils/tools.d.ts +45 -0
- package/dist/src/test-utils/tools.js +105 -0
- package/dist/src/test-utils/tools.js.map +1 -0
- package/dist/src/tools/diffOptions.d.ts +9 -0
- package/dist/src/tools/diffOptions.js +46 -0
- package/dist/src/tools/diffOptions.js.map +1 -0
- package/dist/src/tools/diffOptions.test.d.ts +6 -0
- package/dist/src/tools/diffOptions.test.js +155 -0
- package/dist/src/tools/diffOptions.test.js.map +1 -0
- package/dist/src/tools/edit.d.ts +56 -0
- package/dist/src/tools/edit.js +414 -0
- package/dist/src/tools/edit.js.map +1 -0
- package/dist/src/tools/edit.test.d.ts +6 -0
- package/dist/src/tools/edit.test.js +824 -0
- package/dist/src/tools/edit.test.js.map +1 -0
- package/dist/src/tools/glob.d.ts +56 -0
- package/dist/src/tools/glob.js +243 -0
- package/dist/src/tools/glob.js.map +1 -0
- package/dist/src/tools/glob.test.d.ts +6 -0
- package/dist/src/tools/glob.test.js +426 -0
- package/dist/src/tools/glob.test.js.map +1 -0
- package/dist/src/tools/grep.d.ts +47 -0
- package/dist/src/tools/grep.js +517 -0
- package/dist/src/tools/grep.js.map +1 -0
- package/dist/src/tools/grep.test.d.ts +6 -0
- package/dist/src/tools/grep.test.js +295 -0
- package/dist/src/tools/grep.test.js.map +1 -0
- package/dist/src/tools/ls.d.ts +68 -0
- package/dist/src/tools/ls.js +214 -0
- package/dist/src/tools/ls.js.map +1 -0
- package/dist/src/tools/ls.test.d.ts +6 -0
- package/dist/src/tools/ls.test.js +249 -0
- package/dist/src/tools/ls.test.js.map +1 -0
- package/dist/src/tools/mcp-client-manager.d.ts +40 -0
- package/dist/src/tools/mcp-client-manager.js +83 -0
- package/dist/src/tools/mcp-client-manager.js.map +1 -0
- package/dist/src/tools/mcp-client-manager.test.d.ts +6 -0
- package/dist/src/tools/mcp-client-manager.test.js +58 -0
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -0
- package/dist/src/tools/mcp-client.d.ts +199 -0
- package/dist/src/tools/mcp-client.js +1000 -0
- package/dist/src/tools/mcp-client.js.map +1 -0
- package/dist/src/tools/mcp-client.test.d.ts +6 -0
- package/dist/src/tools/mcp-client.test.js +454 -0
- package/dist/src/tools/mcp-client.test.js.map +1 -0
- package/dist/src/tools/mcp-tool.d.ts +24 -0
- package/dist/src/tools/mcp-tool.js +240 -0
- package/dist/src/tools/mcp-tool.js.map +1 -0
- package/dist/src/tools/mcp-tool.test.d.ts +6 -0
- package/dist/src/tools/mcp-tool.test.js +597 -0
- package/dist/src/tools/mcp-tool.test.js.map +1 -0
- package/dist/src/tools/memoryTool.d.ts +40 -0
- package/dist/src/tools/memoryTool.js +268 -0
- package/dist/src/tools/memoryTool.js.map +1 -0
- package/dist/src/tools/memoryTool.test.d.ts +6 -0
- package/dist/src/tools/memoryTool.test.js +298 -0
- package/dist/src/tools/memoryTool.test.js.map +1 -0
- package/dist/src/tools/modifiable-tool.d.ts +32 -0
- package/dist/src/tools/modifiable-tool.js +88 -0
- package/dist/src/tools/modifiable-tool.js.map +1 -0
- package/dist/src/tools/modifiable-tool.test.d.ts +6 -0
- package/dist/src/tools/modifiable-tool.test.js +193 -0
- package/dist/src/tools/modifiable-tool.test.js.map +1 -0
- package/dist/src/tools/read-file.d.ts +35 -0
- package/dist/src/tools/read-file.js +132 -0
- package/dist/src/tools/read-file.js.map +1 -0
- package/dist/src/tools/read-file.test.d.ts +6 -0
- package/dist/src/tools/read-file.test.js +340 -0
- package/dist/src/tools/read-file.test.js.map +1 -0
- package/dist/src/tools/read-many-files.d.ts +60 -0
- package/dist/src/tools/read-many-files.js +382 -0
- package/dist/src/tools/read-many-files.js.map +1 -0
- package/dist/src/tools/read-many-files.test.d.ts +6 -0
- package/dist/src/tools/read-many-files.test.js +565 -0
- package/dist/src/tools/read-many-files.test.js.map +1 -0
- 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 +32 -0
- package/dist/src/tools/shell.js +316 -0
- package/dist/src/tools/shell.js.map +1 -0
- package/dist/src/tools/shell.test.d.ts +6 -0
- package/dist/src/tools/shell.test.js +301 -0
- package/dist/src/tools/shell.test.js.map +1 -0
- package/dist/src/tools/smart-edit.d.ts +72 -0
- package/dist/src/tools/smart-edit.js +594 -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 +419 -0
- package/dist/src/tools/smart-edit.test.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +43 -0
- package/dist/src/tools/tool-error.js +58 -0
- package/dist/src/tools/tool-error.js.map +1 -0
- package/dist/src/tools/tool-registry.d.ts +87 -0
- package/dist/src/tools/tool-registry.js +370 -0
- package/dist/src/tools/tool-registry.js.map +1 -0
- package/dist/src/tools/tool-registry.test.d.ts +6 -0
- package/dist/src/tools/tool-registry.test.js +332 -0
- package/dist/src/tools/tool-registry.test.js.map +1 -0
- package/dist/src/tools/tools.d.ts +281 -0
- package/dist/src/tools/tools.js +257 -0
- package/dist/src/tools/tools.js.map +1 -0
- package/dist/src/tools/tools.test.d.ts +6 -0
- package/dist/src/tools/tools.test.js +205 -0
- package/dist/src/tools/tools.test.js.map +1 -0
- package/dist/src/tools/web-fetch.d.ts +27 -0
- package/dist/src/tools/web-fetch.js +244 -0
- package/dist/src/tools/web-fetch.js.map +1 -0
- package/dist/src/tools/web-fetch.test.d.ts +6 -0
- package/dist/src/tools/web-fetch.test.js +114 -0
- package/dist/src/tools/web-fetch.test.js.map +1 -0
- package/dist/src/tools/web-search.d.ts +49 -0
- package/dist/src/tools/web-search.js +139 -0
- package/dist/src/tools/web-search.js.map +1 -0
- package/dist/src/tools/web-search.test.d.ts +6 -0
- package/dist/src/tools/web-search.test.js +207 -0
- package/dist/src/tools/web-search.test.js.map +1 -0
- package/dist/src/tools/write-file.d.ts +52 -0
- package/dist/src/tools/write-file.js +309 -0
- package/dist/src/tools/write-file.js.map +1 -0
- package/dist/src/tools/write-file.test.d.ts +6 -0
- package/dist/src/tools/write-file.test.js +611 -0
- package/dist/src/tools/write-file.test.js.map +1 -0
- package/dist/src/utils/LruCache.d.ts +13 -0
- package/dist/src/utils/LruCache.js +38 -0
- package/dist/src/utils/LruCache.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.d.ts +24 -0
- package/dist/src/utils/bfsFileSearch.js +95 -0
- package/dist/src/utils/bfsFileSearch.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.test.d.ts +6 -0
- package/dist/src/utils/bfsFileSearch.test.js +163 -0
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -0
- package/dist/src/utils/browser.d.ts +13 -0
- package/dist/src/utils/browser.js +50 -0
- package/dist/src/utils/browser.js.map +1 -0
- package/dist/src/utils/editCorrector.d.ts +54 -0
- package/dist/src/utils/editCorrector.js +588 -0
- package/dist/src/utils/editCorrector.js.map +1 -0
- package/dist/src/utils/editCorrector.test.d.ts +6 -0
- package/dist/src/utils/editCorrector.test.js +515 -0
- package/dist/src/utils/editCorrector.test.js.map +1 -0
- package/dist/src/utils/editor.d.ts +28 -0
- package/dist/src/utils/editor.js +173 -0
- package/dist/src/utils/editor.js.map +1 -0
- package/dist/src/utils/editor.test.d.ts +6 -0
- package/dist/src/utils/editor.test.js +431 -0
- package/dist/src/utils/editor.test.js.map +1 -0
- package/dist/src/utils/environmentContext.d.ts +21 -0
- package/dist/src/utils/environmentContext.js +90 -0
- package/dist/src/utils/environmentContext.js.map +1 -0
- package/dist/src/utils/environmentContext.test.d.ts +6 -0
- package/dist/src/utils/environmentContext.test.js +140 -0
- package/dist/src/utils/environmentContext.test.js.map +1 -0
- package/dist/src/utils/errorParsing.d.ts +8 -0
- package/dist/src/utils/errorParsing.js +93 -0
- package/dist/src/utils/errorParsing.js.map +1 -0
- package/dist/src/utils/errorParsing.test.d.ts +6 -0
- package/dist/src/utils/errorParsing.test.js +172 -0
- package/dist/src/utils/errorParsing.test.js.map +1 -0
- package/dist/src/utils/errorReporting.d.ts +14 -0
- package/dist/src/utils/errorReporting.js +88 -0
- package/dist/src/utils/errorReporting.js.map +1 -0
- package/dist/src/utils/errorReporting.test.d.ts +6 -0
- package/dist/src/utils/errorReporting.test.js +130 -0
- package/dist/src/utils/errorReporting.test.js.map +1 -0
- package/dist/src/utils/errors.d.ts +39 -0
- package/dist/src/utils/errors.js +96 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/fetch.d.ts +11 -0
- package/dist/src/utils/fetch.js +51 -0
- package/dist/src/utils/fetch.js.map +1 -0
- package/dist/src/utils/fileUtils.d.ts +69 -0
- package/dist/src/utils/fileUtils.js +405 -0
- package/dist/src/utils/fileUtils.js.map +1 -0
- package/dist/src/utils/fileUtils.test.d.ts +6 -0
- package/dist/src/utils/fileUtils.test.js +682 -0
- package/dist/src/utils/fileUtils.test.js.map +1 -0
- package/dist/src/utils/filesearch/crawlCache.d.ts +25 -0
- package/dist/src/utils/filesearch/crawlCache.js +57 -0
- package/dist/src/utils/filesearch/crawlCache.js.map +1 -0
- package/dist/src/utils/filesearch/crawlCache.test.d.ts +6 -0
- package/dist/src/utils/filesearch/crawlCache.test.js +103 -0
- package/dist/src/utils/filesearch/crawlCache.test.js.map +1 -0
- package/dist/src/utils/filesearch/crawler.d.ts +15 -0
- package/dist/src/utils/filesearch/crawler.js +50 -0
- package/dist/src/utils/filesearch/crawler.js.map +1 -0
- package/dist/src/utils/filesearch/crawler.test.d.ts +6 -0
- package/dist/src/utils/filesearch/crawler.test.js +468 -0
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.d.ts +38 -0
- package/dist/src/utils/filesearch/fileSearch.js +191 -0
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.test.d.ts +6 -0
- package/dist/src/utils/filesearch/fileSearch.test.js +642 -0
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -0
- package/dist/src/utils/filesearch/ignore.d.ts +42 -0
- package/dist/src/utils/filesearch/ignore.js +106 -0
- package/dist/src/utils/filesearch/ignore.js.map +1 -0
- package/dist/src/utils/filesearch/ignore.test.d.ts +6 -0
- package/dist/src/utils/filesearch/ignore.test.js +144 -0
- package/dist/src/utils/filesearch/ignore.test.js.map +1 -0
- package/dist/src/utils/filesearch/result-cache.d.ts +33 -0
- package/dist/src/utils/filesearch/result-cache.js +59 -0
- package/dist/src/utils/filesearch/result-cache.js.map +1 -0
- package/dist/src/utils/filesearch/result-cache.test.d.ts +6 -0
- package/dist/src/utils/filesearch/result-cache.test.js +46 -0
- package/dist/src/utils/filesearch/result-cache.test.js.map +1 -0
- package/dist/src/utils/flashFallback.test.d.ts +6 -0
- package/dist/src/utils/flashFallback.test.js +122 -0
- package/dist/src/utils/flashFallback.test.js.map +1 -0
- package/dist/src/utils/formatters.d.ts +6 -0
- package/dist/src/utils/formatters.js +16 -0
- package/dist/src/utils/formatters.js.map +1 -0
- package/dist/src/utils/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 +13 -0
- package/dist/src/utils/generateContentResponseUtilities.js +80 -0
- package/dist/src/utils/generateContentResponseUtilities.js.map +1 -0
- package/dist/src/utils/generateContentResponseUtilities.test.d.ts +6 -0
- package/dist/src/utils/generateContentResponseUtilities.test.js +235 -0
- package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -0
- package/dist/src/utils/getFolderStructure.d.ts +31 -0
- package/dist/src/utils/getFolderStructure.js +246 -0
- package/dist/src/utils/getFolderStructure.js.map +1 -0
- package/dist/src/utils/getFolderStructure.test.d.ts +6 -0
- package/dist/src/utils/getFolderStructure.test.js +282 -0
- package/dist/src/utils/getFolderStructure.test.js.map +1 -0
- package/dist/src/utils/getPty.d.ts +19 -0
- package/dist/src/utils/getPty.js +23 -0
- package/dist/src/utils/getPty.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.d.ts +16 -0
- package/dist/src/utils/gitIgnoreParser.js +152 -0
- package/dist/src/utils/gitIgnoreParser.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.test.d.ts +6 -0
- package/dist/src/utils/gitIgnoreParser.test.js +185 -0
- package/dist/src/utils/gitIgnoreParser.test.js.map +1 -0
- package/dist/src/utils/gitUtils.d.ts +17 -0
- package/dist/src/utils/gitUtils.js +61 -0
- package/dist/src/utils/gitUtils.js.map +1 -0
- 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 +121 -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 +105 -0
- package/dist/src/utils/llm-edit-fixer.test.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +16 -0
- package/dist/src/utils/memoryDiscovery.js +254 -0
- package/dist/src/utils/memoryDiscovery.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.test.d.ts +6 -0
- package/dist/src/utils/memoryDiscovery.test.js +244 -0
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -0
- package/dist/src/utils/memoryImportProcessor.d.ts +42 -0
- package/dist/src/utils/memoryImportProcessor.js +296 -0
- package/dist/src/utils/memoryImportProcessor.js.map +1 -0
- package/dist/src/utils/memoryImportProcessor.test.d.ts +6 -0
- package/dist/src/utils/memoryImportProcessor.test.js +573 -0
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -0
- package/dist/src/utils/messageInspectors.d.ts +8 -0
- package/dist/src/utils/messageInspectors.js +16 -0
- package/dist/src/utils/messageInspectors.js.map +1 -0
- package/dist/src/utils/nextSpeakerChecker.d.ts +12 -0
- package/dist/src/utils/nextSpeakerChecker.js +97 -0
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -0
- package/dist/src/utils/nextSpeakerChecker.test.d.ts +6 -0
- package/dist/src/utils/nextSpeakerChecker.test.js +179 -0
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -0
- package/dist/src/utils/partUtils.d.ts +35 -0
- package/dist/src/utils/partUtils.js +133 -0
- package/dist/src/utils/partUtils.js.map +1 -0
- package/dist/src/utils/partUtils.test.d.ts +6 -0
- package/dist/src/utils/partUtils.test.js +241 -0
- package/dist/src/utils/partUtils.test.js.map +1 -0
- 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 +58 -0
- package/dist/src/utils/paths.js +159 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/paths.test.d.ts +6 -0
- package/dist/src/utils/paths.test.js +225 -0
- package/dist/src/utils/paths.test.js.map +1 -0
- 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 +18 -0
- package/dist/src/utils/quotaErrorDetection.js +65 -0
- package/dist/src/utils/quotaErrorDetection.js.map +1 -0
- package/dist/src/utils/retry.d.ts +30 -0
- package/dist/src/utils/retry.js +276 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/retry.test.d.ts +6 -0
- package/dist/src/utils/retry.test.js +325 -0
- package/dist/src/utils/retry.test.js.map +1 -0
- package/dist/src/utils/safeJsonStringify.d.ts +13 -0
- package/dist/src/utils/safeJsonStringify.js +25 -0
- package/dist/src/utils/safeJsonStringify.js.map +1 -0
- package/dist/src/utils/safeJsonStringify.test.d.ts +6 -0
- package/dist/src/utils/safeJsonStringify.test.js +61 -0
- package/dist/src/utils/safeJsonStringify.test.js.map +1 -0
- package/dist/src/utils/schemaValidator.d.ts +15 -0
- package/dist/src/utils/schemaValidator.js +38 -0
- package/dist/src/utils/schemaValidator.js.map +1 -0
- package/dist/src/utils/secure-browser-launcher.d.ts +23 -0
- package/dist/src/utils/secure-browser-launcher.js +165 -0
- package/dist/src/utils/secure-browser-launcher.js.map +1 -0
- package/dist/src/utils/secure-browser-launcher.test.d.ts +6 -0
- package/dist/src/utils/secure-browser-launcher.test.js +149 -0
- package/dist/src/utils/secure-browser-launcher.test.js.map +1 -0
- package/dist/src/utils/session.d.ts +6 -0
- package/dist/src/utils/session.js +8 -0
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/shell-utils.d.ts +122 -0
- package/dist/src/utils/shell-utils.js +393 -0
- package/dist/src/utils/shell-utils.js.map +1 -0
- package/dist/src/utils/shell-utils.test.d.ts +6 -0
- package/dist/src/utils/shell-utils.test.js +332 -0
- package/dist/src/utils/shell-utils.test.js.map +1 -0
- package/dist/src/utils/summarizer.d.ts +25 -0
- package/dist/src/utils/summarizer.js +51 -0
- package/dist/src/utils/summarizer.js.map +1 -0
- package/dist/src/utils/summarizer.test.d.ts +6 -0
- package/dist/src/utils/summarizer.test.js +131 -0
- package/dist/src/utils/summarizer.test.js.map +1 -0
- package/dist/src/utils/systemEncoding.d.ts +40 -0
- package/dist/src/utils/systemEncoding.js +149 -0
- package/dist/src/utils/systemEncoding.js.map +1 -0
- package/dist/src/utils/systemEncoding.test.d.ts +6 -0
- package/dist/src/utils/systemEncoding.test.js +368 -0
- package/dist/src/utils/systemEncoding.test.js.map +1 -0
- package/dist/src/utils/terminalSerializer.d.ts +28 -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/testUtils.d.ts +29 -0
- package/dist/src/utils/testUtils.js +70 -0
- package/dist/src/utils/testUtils.js.map +1 -0
- package/dist/src/utils/textUtils.d.ts +18 -0
- package/dist/src/utils/textUtils.js +42 -0
- package/dist/src/utils/textUtils.js.map +1 -0
- 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/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/userAccountManager.test.js +223 -0
- package/dist/src/utils/userAccountManager.test.js.map +1 -0
- package/dist/src/utils/workspaceContext.d.ts +66 -0
- package/dist/src/utils/workspaceContext.js +171 -0
- package/dist/src/utils/workspaceContext.js.map +1 -0
- package/dist/src/utils/workspaceContext.test.d.ts +6 -0
- package/dist/src/utils/workspaceContext.test.js +318 -0
- package/dist/src/utils/workspaceContext.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, afterEach, vi } from 'vitest';
|
|
7
|
+
import mock from 'mock-fs';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import { WorkspaceContext } from './workspaceContext.js';
|
|
10
|
+
import { readPathFromWorkspace } from './pathReader.js';
|
|
11
|
+
import { StandardFileSystemService } from '../services/fileSystemService.js';
|
|
12
|
+
// --- Helper for creating a mock Config object ---
|
|
13
|
+
// We use the actual implementations of WorkspaceContext and FileSystemService
|
|
14
|
+
// to test the integration against mock-fs.
|
|
15
|
+
const createMockConfig = (cwd, otherDirs = [], mockFileService) => {
|
|
16
|
+
const workspace = new WorkspaceContext(cwd, otherDirs);
|
|
17
|
+
const fileSystemService = new StandardFileSystemService();
|
|
18
|
+
return {
|
|
19
|
+
getWorkspaceContext: () => workspace,
|
|
20
|
+
// TargetDir is used by processSingleFileContent to generate relative paths in errors/output
|
|
21
|
+
getTargetDir: () => cwd,
|
|
22
|
+
getFileSystemService: () => fileSystemService,
|
|
23
|
+
getFileService: () => mockFileService,
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
describe('readPathFromWorkspace', () => {
|
|
27
|
+
const CWD = path.resolve('/test/cwd');
|
|
28
|
+
const OTHER_DIR = path.resolve('/test/other');
|
|
29
|
+
const OUTSIDE_DIR = path.resolve('/test/outside');
|
|
30
|
+
afterEach(() => {
|
|
31
|
+
mock.restore();
|
|
32
|
+
vi.resetAllMocks();
|
|
33
|
+
});
|
|
34
|
+
it('should read a text file from the CWD', async () => {
|
|
35
|
+
mock({
|
|
36
|
+
[CWD]: {
|
|
37
|
+
'file.txt': 'hello from cwd',
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
const mockFileService = {
|
|
41
|
+
filterFiles: vi.fn((files) => files),
|
|
42
|
+
};
|
|
43
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
44
|
+
const result = await readPathFromWorkspace('file.txt', config);
|
|
45
|
+
// Expect [string] for text content
|
|
46
|
+
expect(result).toEqual(['hello from cwd']);
|
|
47
|
+
expect(mockFileService.filterFiles).toHaveBeenCalled();
|
|
48
|
+
});
|
|
49
|
+
it('should read a file from a secondary workspace directory', async () => {
|
|
50
|
+
mock({
|
|
51
|
+
[CWD]: {},
|
|
52
|
+
[OTHER_DIR]: {
|
|
53
|
+
'file.txt': 'hello from other dir',
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const mockFileService = {
|
|
57
|
+
filterFiles: vi.fn((files) => files),
|
|
58
|
+
};
|
|
59
|
+
const config = createMockConfig(CWD, [OTHER_DIR], mockFileService);
|
|
60
|
+
const result = await readPathFromWorkspace('file.txt', config);
|
|
61
|
+
expect(result).toEqual(['hello from other dir']);
|
|
62
|
+
});
|
|
63
|
+
it('should prioritize CWD when file exists in both CWD and secondary dir', async () => {
|
|
64
|
+
mock({
|
|
65
|
+
[CWD]: {
|
|
66
|
+
'file.txt': 'hello from cwd',
|
|
67
|
+
},
|
|
68
|
+
[OTHER_DIR]: {
|
|
69
|
+
'file.txt': 'hello from other dir',
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
const mockFileService = {
|
|
73
|
+
filterFiles: vi.fn((files) => files),
|
|
74
|
+
};
|
|
75
|
+
const config = createMockConfig(CWD, [OTHER_DIR], mockFileService);
|
|
76
|
+
const result = await readPathFromWorkspace('file.txt', config);
|
|
77
|
+
expect(result).toEqual(['hello from cwd']);
|
|
78
|
+
});
|
|
79
|
+
it('should read an image file and return it as inlineData (Part object)', async () => {
|
|
80
|
+
// Use a real PNG header for robustness
|
|
81
|
+
const imageData = Buffer.from([
|
|
82
|
+
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,
|
|
83
|
+
]);
|
|
84
|
+
mock({
|
|
85
|
+
[CWD]: {
|
|
86
|
+
'image.png': imageData,
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
const mockFileService = {
|
|
90
|
+
filterFiles: vi.fn((files) => files),
|
|
91
|
+
};
|
|
92
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
93
|
+
const result = await readPathFromWorkspace('image.png', config);
|
|
94
|
+
// Expect [Part] for image content
|
|
95
|
+
expect(result).toEqual([
|
|
96
|
+
{
|
|
97
|
+
inlineData: {
|
|
98
|
+
mimeType: 'image/png',
|
|
99
|
+
data: imageData.toString('base64'),
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
]);
|
|
103
|
+
});
|
|
104
|
+
it('should read a generic binary file and return an info string', async () => {
|
|
105
|
+
// Data that is clearly binary (null bytes)
|
|
106
|
+
const binaryData = Buffer.from([0x00, 0x01, 0x02, 0x03]);
|
|
107
|
+
mock({
|
|
108
|
+
[CWD]: {
|
|
109
|
+
'data.bin': binaryData,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
const mockFileService = {
|
|
113
|
+
filterFiles: vi.fn((files) => files),
|
|
114
|
+
};
|
|
115
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
116
|
+
const result = await readPathFromWorkspace('data.bin', config);
|
|
117
|
+
// Expect [string] containing the skip message from fileUtils
|
|
118
|
+
expect(result).toEqual(['Cannot display content of binary file: data.bin']);
|
|
119
|
+
});
|
|
120
|
+
it('should read a file from an absolute path if within workspace', async () => {
|
|
121
|
+
const absPath = path.join(OTHER_DIR, 'abs.txt');
|
|
122
|
+
mock({
|
|
123
|
+
[CWD]: {},
|
|
124
|
+
[OTHER_DIR]: {
|
|
125
|
+
'abs.txt': 'absolute content',
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
const mockFileService = {
|
|
129
|
+
filterFiles: vi.fn((files) => files),
|
|
130
|
+
};
|
|
131
|
+
const config = createMockConfig(CWD, [OTHER_DIR], mockFileService);
|
|
132
|
+
const result = await readPathFromWorkspace(absPath, config);
|
|
133
|
+
expect(result).toEqual(['absolute content']);
|
|
134
|
+
});
|
|
135
|
+
describe('Directory Expansion', () => {
|
|
136
|
+
it('should expand a directory and read the content of its files', async () => {
|
|
137
|
+
mock({
|
|
138
|
+
[CWD]: {
|
|
139
|
+
'my-dir': {
|
|
140
|
+
'file1.txt': 'content of file 1',
|
|
141
|
+
'file2.md': 'content of file 2',
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
const mockFileService = {
|
|
146
|
+
filterFiles: vi.fn((files) => files),
|
|
147
|
+
};
|
|
148
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
149
|
+
const result = await readPathFromWorkspace('my-dir', config);
|
|
150
|
+
// Convert to a single string for easier, order-independent checking
|
|
151
|
+
const resultText = result
|
|
152
|
+
.map((p) => {
|
|
153
|
+
if (typeof p === 'string')
|
|
154
|
+
return p;
|
|
155
|
+
if (typeof p === 'object' && p && 'text' in p)
|
|
156
|
+
return p.text;
|
|
157
|
+
// This part is important for handling binary/image data which isn't just text
|
|
158
|
+
if (typeof p === 'object' && p && 'inlineData' in p)
|
|
159
|
+
return '';
|
|
160
|
+
return p;
|
|
161
|
+
})
|
|
162
|
+
.join('');
|
|
163
|
+
expect(resultText).toContain('--- Start of content for directory: my-dir ---');
|
|
164
|
+
expect(resultText).toContain('--- file1.txt ---');
|
|
165
|
+
expect(resultText).toContain('content of file 1');
|
|
166
|
+
expect(resultText).toContain('--- file2.md ---');
|
|
167
|
+
expect(resultText).toContain('content of file 2');
|
|
168
|
+
expect(resultText).toContain('--- End of content for directory: my-dir ---');
|
|
169
|
+
});
|
|
170
|
+
it('should recursively expand a directory and read all nested files', async () => {
|
|
171
|
+
mock({
|
|
172
|
+
[CWD]: {
|
|
173
|
+
'my-dir': {
|
|
174
|
+
'file1.txt': 'content of file 1',
|
|
175
|
+
'sub-dir': {
|
|
176
|
+
'nested.txt': 'nested content',
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
const mockFileService = {
|
|
182
|
+
filterFiles: vi.fn((files) => files),
|
|
183
|
+
};
|
|
184
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
185
|
+
const result = await readPathFromWorkspace('my-dir', config);
|
|
186
|
+
const resultText = result
|
|
187
|
+
.map((p) => {
|
|
188
|
+
if (typeof p === 'string')
|
|
189
|
+
return p;
|
|
190
|
+
if (typeof p === 'object' && p && 'text' in p)
|
|
191
|
+
return p.text;
|
|
192
|
+
return '';
|
|
193
|
+
})
|
|
194
|
+
.join('');
|
|
195
|
+
expect(resultText).toContain('content of file 1');
|
|
196
|
+
expect(resultText).toContain('nested content');
|
|
197
|
+
expect(resultText).toContain(`--- ${path.join('sub-dir', 'nested.txt')} ---`);
|
|
198
|
+
});
|
|
199
|
+
it('should handle mixed content and include files from subdirectories', async () => {
|
|
200
|
+
const imageData = Buffer.from([
|
|
201
|
+
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,
|
|
202
|
+
]);
|
|
203
|
+
mock({
|
|
204
|
+
[CWD]: {
|
|
205
|
+
'mixed-dir': {
|
|
206
|
+
'info.txt': 'some text',
|
|
207
|
+
'photo.png': imageData,
|
|
208
|
+
'sub-dir': {
|
|
209
|
+
'nested.txt': 'this should be included',
|
|
210
|
+
},
|
|
211
|
+
'empty-sub-dir': {},
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
const mockFileService = {
|
|
216
|
+
filterFiles: vi.fn((files) => files),
|
|
217
|
+
};
|
|
218
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
219
|
+
const result = await readPathFromWorkspace('mixed-dir', config);
|
|
220
|
+
// Check for the text part
|
|
221
|
+
const textContent = result
|
|
222
|
+
.map((p) => {
|
|
223
|
+
if (typeof p === 'string')
|
|
224
|
+
return p;
|
|
225
|
+
if (typeof p === 'object' && p && 'text' in p)
|
|
226
|
+
return p.text;
|
|
227
|
+
return ''; // Ignore non-text parts for this assertion
|
|
228
|
+
})
|
|
229
|
+
.join('');
|
|
230
|
+
expect(textContent).toContain('some text');
|
|
231
|
+
expect(textContent).toContain('this should be included');
|
|
232
|
+
// Check for the image part
|
|
233
|
+
const imagePart = result.find((p) => typeof p === 'object' && 'inlineData' in p);
|
|
234
|
+
expect(imagePart).toEqual({
|
|
235
|
+
inlineData: {
|
|
236
|
+
mimeType: 'image/png',
|
|
237
|
+
data: imageData.toString('base64'),
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
it('should handle an empty directory', async () => {
|
|
242
|
+
mock({
|
|
243
|
+
[CWD]: {
|
|
244
|
+
'empty-dir': {},
|
|
245
|
+
},
|
|
246
|
+
});
|
|
247
|
+
const mockFileService = {
|
|
248
|
+
filterFiles: vi.fn((files) => files),
|
|
249
|
+
};
|
|
250
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
251
|
+
const result = await readPathFromWorkspace('empty-dir', config);
|
|
252
|
+
expect(result).toEqual([
|
|
253
|
+
{ text: '--- Start of content for directory: empty-dir ---\n' },
|
|
254
|
+
{ text: '--- End of content for directory: empty-dir ---' },
|
|
255
|
+
]);
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
describe('File Ignoring', () => {
|
|
259
|
+
it('should return an empty array for an ignored file', async () => {
|
|
260
|
+
mock({
|
|
261
|
+
[CWD]: {
|
|
262
|
+
'ignored.txt': 'ignored content',
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
const mockFileService = {
|
|
266
|
+
filterFiles: vi.fn(() => []), // Simulate the file being filtered out
|
|
267
|
+
};
|
|
268
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
269
|
+
const result = await readPathFromWorkspace('ignored.txt', config);
|
|
270
|
+
expect(result).toEqual([]);
|
|
271
|
+
expect(mockFileService.filterFiles).toHaveBeenCalledWith(['ignored.txt'], {
|
|
272
|
+
respectGitIgnore: true,
|
|
273
|
+
respectGeminiIgnore: true,
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
it('should not read ignored files when expanding a directory', async () => {
|
|
277
|
+
mock({
|
|
278
|
+
[CWD]: {
|
|
279
|
+
'my-dir': {
|
|
280
|
+
'not-ignored.txt': 'visible',
|
|
281
|
+
'ignored.log': 'invisible',
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
});
|
|
285
|
+
const mockFileService = {
|
|
286
|
+
filterFiles: vi.fn((files) => files.filter((f) => !f.endsWith('ignored.log'))),
|
|
287
|
+
};
|
|
288
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
289
|
+
const result = await readPathFromWorkspace('my-dir', config);
|
|
290
|
+
const resultText = result
|
|
291
|
+
.map((p) => {
|
|
292
|
+
if (typeof p === 'string')
|
|
293
|
+
return p;
|
|
294
|
+
if (typeof p === 'object' && p && 'text' in p)
|
|
295
|
+
return p.text;
|
|
296
|
+
return '';
|
|
297
|
+
})
|
|
298
|
+
.join('');
|
|
299
|
+
expect(resultText).toContain('visible');
|
|
300
|
+
expect(resultText).not.toContain('invisible');
|
|
301
|
+
expect(mockFileService.filterFiles).toHaveBeenCalled();
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
it('should throw an error for an absolute path outside the workspace', async () => {
|
|
305
|
+
const absPath = path.join(OUTSIDE_DIR, 'secret.txt');
|
|
306
|
+
mock({
|
|
307
|
+
[CWD]: {},
|
|
308
|
+
[OUTSIDE_DIR]: {
|
|
309
|
+
'secret.txt': 'secrets',
|
|
310
|
+
},
|
|
311
|
+
});
|
|
312
|
+
// OUTSIDE_DIR is not added to the config's workspace
|
|
313
|
+
const config = createMockConfig(CWD);
|
|
314
|
+
await expect(readPathFromWorkspace(absPath, config)).rejects.toThrow(`Absolute path is outside of the allowed workspace: ${absPath}`);
|
|
315
|
+
});
|
|
316
|
+
it('should throw an error if a relative path is not found anywhere', async () => {
|
|
317
|
+
mock({
|
|
318
|
+
[CWD]: {},
|
|
319
|
+
[OTHER_DIR]: {},
|
|
320
|
+
});
|
|
321
|
+
const config = createMockConfig(CWD, [OTHER_DIR]);
|
|
322
|
+
await expect(readPathFromWorkspace('not-found.txt', config)).rejects.toThrow('Path not found in workspace: not-found.txt');
|
|
323
|
+
});
|
|
324
|
+
// mock-fs permission simulation is unreliable on Windows.
|
|
325
|
+
it.skipIf(process.platform === 'win32')('should return an error string if reading a file with no permissions', async () => {
|
|
326
|
+
mock({
|
|
327
|
+
[CWD]: {
|
|
328
|
+
'unreadable.txt': mock.file({
|
|
329
|
+
content: 'you cannot read me',
|
|
330
|
+
mode: 0o222, // Write-only
|
|
331
|
+
}),
|
|
332
|
+
},
|
|
333
|
+
});
|
|
334
|
+
const mockFileService = {
|
|
335
|
+
filterFiles: vi.fn((files) => files),
|
|
336
|
+
};
|
|
337
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
338
|
+
// processSingleFileContent catches the error and returns an error string.
|
|
339
|
+
const result = await readPathFromWorkspace('unreadable.txt', config);
|
|
340
|
+
const textResult = result[0];
|
|
341
|
+
// processSingleFileContent formats errors using the relative path from the target dir (CWD).
|
|
342
|
+
expect(textResult).toContain('Error reading file unreadable.txt');
|
|
343
|
+
expect(textResult).toMatch(/(EACCES|permission denied)/i);
|
|
344
|
+
});
|
|
345
|
+
it('should return an error string for files exceeding the size limit', async () => {
|
|
346
|
+
// Mock a file slightly larger than the 20MB limit defined in fileUtils.ts
|
|
347
|
+
const largeContent = 'a'.repeat(21 * 1024 * 1024); // 21MB
|
|
348
|
+
mock({
|
|
349
|
+
[CWD]: {
|
|
350
|
+
'large.txt': largeContent,
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
const mockFileService = {
|
|
354
|
+
filterFiles: vi.fn((files) => files),
|
|
355
|
+
};
|
|
356
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
357
|
+
const result = await readPathFromWorkspace('large.txt', config);
|
|
358
|
+
const textResult = result[0];
|
|
359
|
+
// The error message comes directly from processSingleFileContent
|
|
360
|
+
expect(textResult).toBe('File size exceeds the 20MB limit.');
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
//# sourceMappingURL=pathReader.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathReader.test.js","sourceRoot":"","sources":["../../../src/utils/pathReader.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export declare const GEMINI_DIR = ".gemini";
|
|
7
|
+
export declare const GOOGLE_ACCOUNTS_FILENAME = "google_accounts.json";
|
|
8
|
+
/**
|
|
9
|
+
* Special characters that need to be escaped in file paths for shell compatibility.
|
|
10
|
+
* Includes: spaces, parentheses, brackets, braces, semicolons, ampersands, pipes,
|
|
11
|
+
* asterisks, question marks, dollar signs, backticks, quotes, hash, and other shell metacharacters.
|
|
12
|
+
*/
|
|
13
|
+
export declare const SHELL_SPECIAL_CHARS: RegExp;
|
|
14
|
+
/**
|
|
15
|
+
* Replaces the home directory with a tilde.
|
|
16
|
+
* @param path - The path to tildeify.
|
|
17
|
+
* @returns The tildeified path.
|
|
18
|
+
*/
|
|
19
|
+
export declare function tildeifyPath(path: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Shortens a path string if it exceeds maxLen, prioritizing the start and end segments.
|
|
22
|
+
* Example: /path/to/a/very/long/file.txt -> /path/.../long/file.txt
|
|
23
|
+
*/
|
|
24
|
+
export declare function shortenPath(filePath: string, maxLen?: number): string;
|
|
25
|
+
/**
|
|
26
|
+
* Calculates the relative path from a root directory to a target path.
|
|
27
|
+
* Ensures both paths are resolved before calculating.
|
|
28
|
+
* Returns '.' if the target path is the same as the root directory.
|
|
29
|
+
*
|
|
30
|
+
* @param targetPath The absolute or relative path to make relative.
|
|
31
|
+
* @param rootDirectory The absolute path of the directory to make the target path relative to.
|
|
32
|
+
* @returns The relative path from rootDirectory to targetPath.
|
|
33
|
+
*/
|
|
34
|
+
export declare function makeRelative(targetPath: string, rootDirectory: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Escapes special characters in a file path like macOS terminal does.
|
|
37
|
+
* Escapes: spaces, parentheses, brackets, braces, semicolons, ampersands, pipes,
|
|
38
|
+
* asterisks, question marks, dollar signs, backticks, quotes, hash, and other shell metacharacters.
|
|
39
|
+
*/
|
|
40
|
+
export declare function escapePath(filePath: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Unescapes special characters in a file path.
|
|
43
|
+
* Removes backslash escaping from shell metacharacters.
|
|
44
|
+
*/
|
|
45
|
+
export declare function unescapePath(filePath: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Generates a unique hash for a project based on its root path.
|
|
48
|
+
* @param projectRoot The absolute path to the project's root directory.
|
|
49
|
+
* @returns A SHA256 hash of the project root path.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getProjectHash(projectRoot: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Checks if a path is a subpath of another path.
|
|
54
|
+
* @param parentPath The parent path.
|
|
55
|
+
* @param childPath The child path.
|
|
56
|
+
* @returns True if childPath is a subpath of parentPath, false otherwise.
|
|
57
|
+
*/
|
|
58
|
+
export declare function isSubpath(parentPath: string, childPath: string): boolean;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import os from 'node:os';
|
|
8
|
+
import * as crypto from 'node:crypto';
|
|
9
|
+
export const GEMINI_DIR = '.gemini';
|
|
10
|
+
export const GOOGLE_ACCOUNTS_FILENAME = 'google_accounts.json';
|
|
11
|
+
/**
|
|
12
|
+
* Special characters that need to be escaped in file paths for shell compatibility.
|
|
13
|
+
* Includes: spaces, parentheses, brackets, braces, semicolons, ampersands, pipes,
|
|
14
|
+
* asterisks, question marks, dollar signs, backticks, quotes, hash, and other shell metacharacters.
|
|
15
|
+
*/
|
|
16
|
+
export const SHELL_SPECIAL_CHARS = /[ \t()[\]{};|*?$`'"#&<>!~]/;
|
|
17
|
+
/**
|
|
18
|
+
* Replaces the home directory with a tilde.
|
|
19
|
+
* @param path - The path to tildeify.
|
|
20
|
+
* @returns The tildeified path.
|
|
21
|
+
*/
|
|
22
|
+
export function tildeifyPath(path) {
|
|
23
|
+
const homeDir = os.homedir();
|
|
24
|
+
if (path.startsWith(homeDir)) {
|
|
25
|
+
return path.replace(homeDir, '~');
|
|
26
|
+
}
|
|
27
|
+
return path;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Shortens a path string if it exceeds maxLen, prioritizing the start and end segments.
|
|
31
|
+
* Example: /path/to/a/very/long/file.txt -> /path/.../long/file.txt
|
|
32
|
+
*/
|
|
33
|
+
export function shortenPath(filePath, maxLen = 35) {
|
|
34
|
+
if (filePath.length <= maxLen) {
|
|
35
|
+
return filePath;
|
|
36
|
+
}
|
|
37
|
+
const parsedPath = path.parse(filePath);
|
|
38
|
+
const root = parsedPath.root;
|
|
39
|
+
const separator = path.sep;
|
|
40
|
+
// Get segments of the path *after* the root
|
|
41
|
+
const relativePath = filePath.substring(root.length);
|
|
42
|
+
const segments = relativePath.split(separator).filter((s) => s !== ''); // Filter out empty segments
|
|
43
|
+
// Handle cases with no segments after root (e.g., "/", "C:\") or only one segment
|
|
44
|
+
if (segments.length <= 1) {
|
|
45
|
+
// Fall back to simple start/end truncation for very short paths or single segments
|
|
46
|
+
const keepLen = Math.floor((maxLen - 3) / 2);
|
|
47
|
+
// Ensure keepLen is not negative if maxLen is very small
|
|
48
|
+
if (keepLen <= 0) {
|
|
49
|
+
return filePath.substring(0, maxLen - 3) + '...';
|
|
50
|
+
}
|
|
51
|
+
const start = filePath.substring(0, keepLen);
|
|
52
|
+
const end = filePath.substring(filePath.length - keepLen);
|
|
53
|
+
return `${start}...${end}`;
|
|
54
|
+
}
|
|
55
|
+
const firstDir = segments[0];
|
|
56
|
+
const lastSegment = segments[segments.length - 1];
|
|
57
|
+
const startComponent = root + firstDir;
|
|
58
|
+
const endPartSegments = [];
|
|
59
|
+
// Base length: separator + "..." + lastDir
|
|
60
|
+
let currentLength = separator.length + lastSegment.length;
|
|
61
|
+
// Iterate backwards through segments (excluding the first one)
|
|
62
|
+
for (let i = segments.length - 2; i >= 0; i--) {
|
|
63
|
+
const segment = segments[i];
|
|
64
|
+
// Length needed if we add this segment: current + separator + segment
|
|
65
|
+
const lengthWithSegment = currentLength + separator.length + segment.length;
|
|
66
|
+
if (lengthWithSegment <= maxLen) {
|
|
67
|
+
endPartSegments.unshift(segment); // Add to the beginning of the end part
|
|
68
|
+
currentLength = lengthWithSegment;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
let result = endPartSegments.join(separator) + separator + lastSegment;
|
|
75
|
+
if (currentLength > maxLen) {
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
// Construct the final path
|
|
79
|
+
result = startComponent + separator + result;
|
|
80
|
+
// As a final check, if the result is somehow still too long
|
|
81
|
+
// truncate the result string from the beginning, prefixing with "...".
|
|
82
|
+
if (result.length > maxLen) {
|
|
83
|
+
return '...' + result.substring(result.length - maxLen - 3);
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Calculates the relative path from a root directory to a target path.
|
|
89
|
+
* Ensures both paths are resolved before calculating.
|
|
90
|
+
* Returns '.' if the target path is the same as the root directory.
|
|
91
|
+
*
|
|
92
|
+
* @param targetPath The absolute or relative path to make relative.
|
|
93
|
+
* @param rootDirectory The absolute path of the directory to make the target path relative to.
|
|
94
|
+
* @returns The relative path from rootDirectory to targetPath.
|
|
95
|
+
*/
|
|
96
|
+
export function makeRelative(targetPath, rootDirectory) {
|
|
97
|
+
const resolvedTargetPath = path.resolve(targetPath);
|
|
98
|
+
const resolvedRootDirectory = path.resolve(rootDirectory);
|
|
99
|
+
const relativePath = path.relative(resolvedRootDirectory, resolvedTargetPath);
|
|
100
|
+
// If the paths are the same, path.relative returns '', return '.' instead
|
|
101
|
+
return relativePath || '.';
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Escapes special characters in a file path like macOS terminal does.
|
|
105
|
+
* Escapes: spaces, parentheses, brackets, braces, semicolons, ampersands, pipes,
|
|
106
|
+
* asterisks, question marks, dollar signs, backticks, quotes, hash, and other shell metacharacters.
|
|
107
|
+
*/
|
|
108
|
+
export function escapePath(filePath) {
|
|
109
|
+
let result = '';
|
|
110
|
+
for (let i = 0; i < filePath.length; i++) {
|
|
111
|
+
const char = filePath[i];
|
|
112
|
+
// Count consecutive backslashes before this character
|
|
113
|
+
let backslashCount = 0;
|
|
114
|
+
for (let j = i - 1; j >= 0 && filePath[j] === '\\'; j--) {
|
|
115
|
+
backslashCount++;
|
|
116
|
+
}
|
|
117
|
+
// Character is already escaped if there's an odd number of backslashes before it
|
|
118
|
+
const isAlreadyEscaped = backslashCount % 2 === 1;
|
|
119
|
+
// Only escape if not already escaped
|
|
120
|
+
if (!isAlreadyEscaped && SHELL_SPECIAL_CHARS.test(char)) {
|
|
121
|
+
result += '\\' + char;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
result += char;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Unescapes special characters in a file path.
|
|
131
|
+
* Removes backslash escaping from shell metacharacters.
|
|
132
|
+
*/
|
|
133
|
+
export function unescapePath(filePath) {
|
|
134
|
+
return filePath.replace(new RegExp(`\\\\([${SHELL_SPECIAL_CHARS.source.slice(1, -1)}])`, 'g'), '$1');
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Generates a unique hash for a project based on its root path.
|
|
138
|
+
* @param projectRoot The absolute path to the project's root directory.
|
|
139
|
+
* @returns A SHA256 hash of the project root path.
|
|
140
|
+
*/
|
|
141
|
+
export function getProjectHash(projectRoot) {
|
|
142
|
+
return crypto.createHash('sha256').update(projectRoot).digest('hex');
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Checks if a path is a subpath of another path.
|
|
146
|
+
* @param parentPath The parent path.
|
|
147
|
+
* @param childPath The child path.
|
|
148
|
+
* @returns True if childPath is a subpath of parentPath, false otherwise.
|
|
149
|
+
*/
|
|
150
|
+
export function isSubpath(parentPath, childPath) {
|
|
151
|
+
const isWindows = os.platform() === 'win32';
|
|
152
|
+
const pathModule = isWindows ? path.win32 : path;
|
|
153
|
+
// On Windows, path.relative is case-insensitive. On POSIX, it's case-sensitive.
|
|
154
|
+
const relative = pathModule.relative(parentPath, childPath);
|
|
155
|
+
return (!relative.startsWith(`..${pathModule.sep}`) &&
|
|
156
|
+
relative !== '..' &&
|
|
157
|
+
!pathModule.isAbsolute(relative));
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"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"}
|