@google/gemini-cli-core 0.0.3-preview.4 → 0.0.3
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 +2 -2
- package/README.md +12 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/src/code_assist/codeAssist.d.ts +2 -0
- 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 +3 -1
- package/dist/src/code_assist/converter.js +2 -1
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +10 -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.js +136 -0
- package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -0
- package/dist/src/code_assist/oauth2.js +92 -29
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +729 -339
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +1 -1
- package/dist/src/code_assist/server.js +24 -1
- 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/types.d.ts +17 -2
- package/dist/src/config/config.d.ts +72 -12
- package/dist/src/config/config.js +196 -64
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +305 -178
- package/dist/src/config/config.test.js.map +1 -1
- 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 +2 -0
- package/dist/src/config/storage.js +6 -1
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +4 -0
- package/dist/src/config/storage.test.js.map +1 -1
- 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 +16 -21
- package/dist/src/core/client.js +145 -232
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +393 -492
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +2 -3
- package/dist/src/core/contentGenerator.js +0 -4
- 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 +8 -3
- package/dist/src/core/coreToolScheduler.js +106 -5
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +233 -5
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +38 -32
- package/dist/src/core/geminiChat.js +209 -219
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +674 -386
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.js +13 -16
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +59 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.d.ts +5 -0
- package/dist/src/core/prompts.js +63 -42
- 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.js +7 -10
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/subagent.test.js +32 -22
- package/dist/src/core/subagent.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +21 -5
- package/dist/src/core/turn.js +45 -11
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +340 -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 +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 +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +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 +42 -14
- package/dist/src/ide/detect-ide.js +22 -68
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +11 -51
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +60 -18
- package/dist/src/ide/ide-client.js +275 -53
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +239 -6
- 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 +15 -11
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +30 -12
- 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 +0 -1
- package/dist/src/ide/process-utils.js +43 -25
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/ide/process-utils.test.js +90 -4
- package/dist/src/ide/process-utils.test.js.map +1 -1
- 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 +10 -2
- package/dist/src/index.js +11 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +15 -12
- package/dist/src/mcp/oauth-provider.js +63 -56
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +74 -35
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.d.ts +14 -10
- package/dist/src/mcp/oauth-token-storage.js +52 -20
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.test.js +255 -162
- package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
- package/dist/src/mcp/token-storage/base-token-storage.d.ts +1 -1
- package/dist/src/mcp/token-storage/base-token-storage.js +1 -1
- package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -1
- package/dist/src/mcp/token-storage/base-token-storage.test.js +1 -1
- package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -1
- 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 +4 -0
- package/dist/src/mcp/token-storage/types.js +5 -1
- package/dist/src/mcp/token-storage/types.js.map +1 -1
- 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/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 +7 -13
- package/dist/src/services/chatRecordingService.js +28 -19
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +62 -20
- 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 +31 -17
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/gitService.js +9 -12
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +10 -20
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.d.ts +5 -0
- package/dist/src/services/loopDetectionService.js +36 -20
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +41 -12
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +34 -2
- package/dist/src/services/shellExecutionService.js +192 -43
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +184 -55
- 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 +16 -2
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +143 -24
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +101 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +19 -2
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +48 -2
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +8 -0
- package/dist/src/telemetry/constants.js +8 -0
- package/dist/src/telemetry/constants.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 +7 -2
- package/dist/src/telemetry/index.js +7 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +8 -1
- package/dist/src/telemetry/loggers.js +140 -8
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +268 -39
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +4 -3
- package/dist/src/telemetry/metrics.js +33 -10
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +47 -25
- 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.js +16 -1
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/sdk.test.js +95 -0
- package/dist/src/telemetry/sdk.test.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +70 -6
- package/dist/src/telemetry/types.js +112 -8
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +1 -1
- package/dist/src/telemetry/uiTelemetry.js +6 -7
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +15 -15
- package/dist/src/telemetry/uiTelemetry.test.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 +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/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 +2 -2
- package/dist/src/tools/edit.js +35 -44
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +124 -13
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +5 -1
- package/dist/src/tools/glob.js +24 -17
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +51 -0
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/ls.js +19 -32
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +140 -280
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +5 -3
- 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 +5 -5
- package/dist/src/tools/mcp-client.js +40 -35
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +3 -3
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +3 -2
- package/dist/src/tools/mcp-tool.js +9 -9
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +28 -7
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.js +5 -33
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/read-file.js +8 -3
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +29 -0
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +1 -1
- package/dist/src/tools/read-many-files.js +18 -50
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +4 -4
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.d.ts +8 -0
- package/dist/src/tools/ripGrep.js +26 -1
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +107 -5
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +12 -2
- package/dist/src/tools/shell.js +20 -24
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +35 -70
- package/dist/src/tools/shell.test.js.map +1 -1
- 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-registry.d.ts +2 -1
- package/dist/src/tools/tool-registry.js +6 -5
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +14 -7
- package/dist/src/tools/tools.js +9 -2
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.js +4 -3
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +1 -1
- package/dist/src/tools/web-search.js +3 -1
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.js +14 -19
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +99 -19
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.js +11 -5
- package/dist/src/utils/bfsFileSearch.js.map +1 -1
- package/dist/src/utils/editCorrector.d.ts +7 -6
- package/dist/src/utils/editCorrector.js +61 -18
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +30 -79
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.js +31 -44
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +61 -75
- package/dist/src/utils/editor.test.js.map +1 -1
- 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/errors.d.ts +6 -0
- package/dist/src/utils/errors.js +10 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +20 -3
- package/dist/src/utils/fileUtils.js +154 -32
- 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/flashFallback.test.d.ts +6 -0
- package/dist/src/utils/{flashFallback.integration.test.js → flashFallback.test.js} +31 -27
- 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/gitIgnoreParser.d.ts +3 -7
- package/dist/src/utils/gitIgnoreParser.js +125 -34
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.test.js +66 -35
- package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
- 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 +5 -4
- package/dist/src/utils/memoryDiscovery.js +10 -9
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +50 -25
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.d.ts +2 -2
- 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/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/shell-utils.d.ts +5 -0
- package/dist/src/utils/shell-utils.js +23 -0
- package/dist/src/utils/shell-utils.js.map +1 -1
- 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/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/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -3
- package/dist/google-gemini-cli-core-0.3.0-preview.3.tgz +0 -0
- package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
- /package/dist/src/{utils/flashFallback.integration.test.d.ts → code_assist/oauth-credential-storage.test.d.ts} +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Tracks user activity state to determine when memory monitoring should be active
|
|
8
|
+
*/
|
|
9
|
+
export class ActivityDetector {
|
|
10
|
+
lastActivityTime = Date.now();
|
|
11
|
+
idleThresholdMs;
|
|
12
|
+
constructor(idleThresholdMs = 30000) {
|
|
13
|
+
this.idleThresholdMs = idleThresholdMs;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Record user activity (called by CLI when user types, adds messages, etc.)
|
|
17
|
+
*/
|
|
18
|
+
recordActivity() {
|
|
19
|
+
this.lastActivityTime = Date.now();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if user is currently active (activity within idle threshold)
|
|
23
|
+
*/
|
|
24
|
+
isUserActive() {
|
|
25
|
+
const timeSinceActivity = Date.now() - this.lastActivityTime;
|
|
26
|
+
return timeSinceActivity < this.idleThresholdMs;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get time since last activity in milliseconds
|
|
30
|
+
*/
|
|
31
|
+
getTimeSinceLastActivity() {
|
|
32
|
+
return Date.now() - this.lastActivityTime;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get last activity timestamp
|
|
36
|
+
*/
|
|
37
|
+
getLastActivityTime() {
|
|
38
|
+
return this.lastActivityTime;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Global activity detector instance (eagerly created with default threshold)
|
|
42
|
+
const globalActivityDetector = new ActivityDetector();
|
|
43
|
+
/**
|
|
44
|
+
* Get global activity detector instance
|
|
45
|
+
*/
|
|
46
|
+
export function getActivityDetector() {
|
|
47
|
+
return globalActivityDetector;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Record user activity (convenience function for CLI to call)
|
|
51
|
+
*/
|
|
52
|
+
export function recordUserActivity() {
|
|
53
|
+
globalActivityDetector.recordActivity();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if user is currently active (convenience function)
|
|
57
|
+
*/
|
|
58
|
+
export function isUserActive() {
|
|
59
|
+
return globalActivityDetector.isUserActive();
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=activity-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-detector.js","sourceRoot":"","sources":["../../../src/telemetry/activity-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACnB,gBAAgB,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,eAAe,CAAS;IAEzC,YAAY,kBAA0B,KAAK;QACzC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7D,OAAO,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,wBAAwB;QACtB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,sBAAsB,GAAqB,IAAI,gBAAgB,EAAE,CAAC;AAExE;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,sBAAsB,CAAC,cAAc,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,sBAAsB,CAAC,YAAY,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
7
|
+
import { ActivityDetector, getActivityDetector, recordUserActivity, isUserActive, } from './activity-detector.js';
|
|
8
|
+
describe('ActivityDetector', () => {
|
|
9
|
+
let detector;
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
detector = new ActivityDetector(1000); // 1 second idle threshold for testing
|
|
12
|
+
});
|
|
13
|
+
describe('constructor', () => {
|
|
14
|
+
it('should initialize with default idle threshold', () => {
|
|
15
|
+
const defaultDetector = new ActivityDetector();
|
|
16
|
+
expect(defaultDetector).toBeInstanceOf(ActivityDetector);
|
|
17
|
+
});
|
|
18
|
+
it('should initialize with custom idle threshold', () => {
|
|
19
|
+
const customDetector = new ActivityDetector(5000);
|
|
20
|
+
expect(customDetector).toBeInstanceOf(ActivityDetector);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('recordActivity', () => {
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
vi.useFakeTimers();
|
|
26
|
+
});
|
|
27
|
+
afterEach(() => {
|
|
28
|
+
vi.useRealTimers();
|
|
29
|
+
});
|
|
30
|
+
it('should update last activity time', () => {
|
|
31
|
+
const beforeTime = detector.getLastActivityTime();
|
|
32
|
+
vi.advanceTimersByTime(100);
|
|
33
|
+
detector.recordActivity();
|
|
34
|
+
const afterTime = detector.getLastActivityTime();
|
|
35
|
+
expect(afterTime).toBeGreaterThan(beforeTime);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('isUserActive', () => {
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
vi.useFakeTimers();
|
|
41
|
+
});
|
|
42
|
+
afterEach(() => {
|
|
43
|
+
vi.useRealTimers();
|
|
44
|
+
});
|
|
45
|
+
it('should return true immediately after construction', () => {
|
|
46
|
+
expect(detector.isUserActive()).toBe(true);
|
|
47
|
+
});
|
|
48
|
+
it('should return true within idle threshold', () => {
|
|
49
|
+
detector.recordActivity();
|
|
50
|
+
expect(detector.isUserActive()).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
it('should return false after idle threshold', () => {
|
|
53
|
+
// Advance time beyond idle threshold
|
|
54
|
+
vi.advanceTimersByTime(2000); // 2 seconds, threshold is 1 second
|
|
55
|
+
expect(detector.isUserActive()).toBe(false);
|
|
56
|
+
});
|
|
57
|
+
it('should return true again after recording new activity', () => {
|
|
58
|
+
// Go idle
|
|
59
|
+
vi.advanceTimersByTime(2000);
|
|
60
|
+
expect(detector.isUserActive()).toBe(false);
|
|
61
|
+
// Record new activity
|
|
62
|
+
detector.recordActivity();
|
|
63
|
+
expect(detector.isUserActive()).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('getTimeSinceLastActivity', () => {
|
|
67
|
+
beforeEach(() => {
|
|
68
|
+
vi.useFakeTimers();
|
|
69
|
+
});
|
|
70
|
+
afterEach(() => {
|
|
71
|
+
vi.useRealTimers();
|
|
72
|
+
});
|
|
73
|
+
it('should return time elapsed since last activity', () => {
|
|
74
|
+
detector.recordActivity();
|
|
75
|
+
vi.advanceTimersByTime(500);
|
|
76
|
+
const timeSince = detector.getTimeSinceLastActivity();
|
|
77
|
+
expect(timeSince).toBe(500);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('getLastActivityTime', () => {
|
|
81
|
+
it('should return the timestamp of last activity', () => {
|
|
82
|
+
const before = Date.now();
|
|
83
|
+
detector.recordActivity();
|
|
84
|
+
const activityTime = detector.getLastActivityTime();
|
|
85
|
+
const after = Date.now();
|
|
86
|
+
expect(activityTime).toBeGreaterThanOrEqual(before);
|
|
87
|
+
expect(activityTime).toBeLessThanOrEqual(after);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe('Global Activity Detector Functions', () => {
|
|
92
|
+
describe('global instance', () => {
|
|
93
|
+
it('should expose a global ActivityDetector via getActivityDetector', () => {
|
|
94
|
+
const detector = getActivityDetector();
|
|
95
|
+
expect(detector).toBeInstanceOf(ActivityDetector);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('getActivityDetector', () => {
|
|
99
|
+
it('should always return the global instance', () => {
|
|
100
|
+
const detector = getActivityDetector();
|
|
101
|
+
const detectorAgain = getActivityDetector();
|
|
102
|
+
expect(detectorAgain).toBe(detector);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('recordUserActivity', () => {
|
|
106
|
+
beforeEach(() => {
|
|
107
|
+
vi.useFakeTimers();
|
|
108
|
+
});
|
|
109
|
+
afterEach(() => {
|
|
110
|
+
vi.useRealTimers();
|
|
111
|
+
});
|
|
112
|
+
it('should record activity on existing detector', () => {
|
|
113
|
+
const detector = getActivityDetector();
|
|
114
|
+
const beforeTime = detector.getLastActivityTime();
|
|
115
|
+
vi.advanceTimersByTime(100);
|
|
116
|
+
recordUserActivity();
|
|
117
|
+
const afterTime = detector.getLastActivityTime();
|
|
118
|
+
expect(afterTime).toBeGreaterThan(beforeTime);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe('isUserActive', () => {
|
|
122
|
+
beforeEach(() => {
|
|
123
|
+
vi.useFakeTimers();
|
|
124
|
+
});
|
|
125
|
+
afterEach(() => {
|
|
126
|
+
vi.useRealTimers();
|
|
127
|
+
});
|
|
128
|
+
it('should reflect global detector state', () => {
|
|
129
|
+
expect(isUserActive()).toBe(true);
|
|
130
|
+
// Default idle threshold is 30s; advance beyond it
|
|
131
|
+
vi.advanceTimersByTime(31000);
|
|
132
|
+
expect(isUserActive()).toBe(false);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=activity-detector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-detector.test.js","sourceRoot":"","sources":["../../../src/telemetry/activity-detector.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Types of user activities that can be tracked
|
|
8
|
+
*/
|
|
9
|
+
export declare enum ActivityType {
|
|
10
|
+
USER_INPUT_START = "user_input_start",
|
|
11
|
+
USER_INPUT_END = "user_input_end",
|
|
12
|
+
MESSAGE_ADDED = "message_added",
|
|
13
|
+
TOOL_CALL_SCHEDULED = "tool_call_scheduled",
|
|
14
|
+
TOOL_CALL_COMPLETED = "tool_call_completed",
|
|
15
|
+
STREAM_START = "stream_start",
|
|
16
|
+
STREAM_END = "stream_end",
|
|
17
|
+
HISTORY_UPDATED = "history_updated",
|
|
18
|
+
MANUAL_TRIGGER = "manual_trigger"
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Types of user activities that can be tracked
|
|
8
|
+
*/
|
|
9
|
+
export var ActivityType;
|
|
10
|
+
(function (ActivityType) {
|
|
11
|
+
ActivityType["USER_INPUT_START"] = "user_input_start";
|
|
12
|
+
ActivityType["USER_INPUT_END"] = "user_input_end";
|
|
13
|
+
ActivityType["MESSAGE_ADDED"] = "message_added";
|
|
14
|
+
ActivityType["TOOL_CALL_SCHEDULED"] = "tool_call_scheduled";
|
|
15
|
+
ActivityType["TOOL_CALL_COMPLETED"] = "tool_call_completed";
|
|
16
|
+
ActivityType["STREAM_START"] = "stream_start";
|
|
17
|
+
ActivityType["STREAM_END"] = "stream_end";
|
|
18
|
+
ActivityType["HISTORY_UPDATED"] = "history_updated";
|
|
19
|
+
ActivityType["MANUAL_TRIGGER"] = "manual_trigger";
|
|
20
|
+
})(ActivityType || (ActivityType = {}));
|
|
21
|
+
//# sourceMappingURL=activity-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-types.js","sourceRoot":"","sources":["../../../src/telemetry/activity-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,YAUX;AAVD,WAAY,YAAY;IACtB,qDAAqC,CAAA;IACrC,iDAAiC,CAAA;IACjC,+CAA+B,CAAA;IAC/B,2DAA2C,CAAA;IAC3C,2DAA2C,CAAA;IAC3C,6CAA6B,CAAA;IAC7B,yCAAyB,CAAA;IACzB,mDAAmC,CAAA;IACnC,iDAAiC,CAAA;AACnC,CAAC,EAVW,YAAY,KAAZ,YAAY,QAUvB"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { HttpsProxyAgent } from 'https-proxy-agent';
|
|
7
|
-
import type { StartSessionEvent, UserPromptEvent, ToolCallEvent, ApiRequestEvent, ApiResponseEvent, ApiErrorEvent, LoopDetectedEvent, NextSpeakerCheckEvent, SlashCommandEvent, MalformedJsonResponseEvent, IdeConnectionEvent, ConversationFinishedEvent, KittySequenceOverflowEvent, ChatCompressionEvent, FileOperationEvent, InvalidChunkEvent, ContentRetryEvent, ContentRetryFailureEvent } from '../types.js';
|
|
7
|
+
import type { StartSessionEvent, UserPromptEvent, ToolCallEvent, ApiRequestEvent, ApiResponseEvent, ApiErrorEvent, LoopDetectedEvent, NextSpeakerCheckEvent, SlashCommandEvent, MalformedJsonResponseEvent, IdeConnectionEvent, ConversationFinishedEvent, KittySequenceOverflowEvent, ChatCompressionEvent, FileOperationEvent, InvalidChunkEvent, ContentRetryEvent, ContentRetryFailureEvent, ExtensionEnableEvent, ExtensionInstallEvent, ToolOutputTruncatedEvent, ExtensionUninstallEvent, ModelRoutingEvent } from '../types.js';
|
|
8
8
|
import { EventMetadataKey } from './event-metadata-key.js';
|
|
9
9
|
import type { Config } from '../../config/config.js';
|
|
10
10
|
export declare enum EventNames {
|
|
@@ -17,7 +17,9 @@ export declare enum EventNames {
|
|
|
17
17
|
API_ERROR = "api_error",
|
|
18
18
|
END_SESSION = "end_session",
|
|
19
19
|
FLASH_FALLBACK = "flash_fallback",
|
|
20
|
+
RIPGREP_FALLBACK = "ripgrep_fallback",
|
|
20
21
|
LOOP_DETECTED = "loop_detected",
|
|
22
|
+
LOOP_DETECTION_DISABLED = "loop_detection_disabled",
|
|
21
23
|
NEXT_SPEAKER_CHECK = "next_speaker_check",
|
|
22
24
|
SLASH_COMMAND = "slash_command",
|
|
23
25
|
MALFORMED_JSON_RESPONSE = "malformed_json_response",
|
|
@@ -27,7 +29,12 @@ export declare enum EventNames {
|
|
|
27
29
|
CONVERSATION_FINISHED = "conversation_finished",
|
|
28
30
|
INVALID_CHUNK = "invalid_chunk",
|
|
29
31
|
CONTENT_RETRY = "content_retry",
|
|
30
|
-
CONTENT_RETRY_FAILURE = "content_retry_failure"
|
|
32
|
+
CONTENT_RETRY_FAILURE = "content_retry_failure",
|
|
33
|
+
EXTENSION_ENABLE = "extension_enable",
|
|
34
|
+
EXTENSION_INSTALL = "extension_install",
|
|
35
|
+
EXTENSION_UNINSTALL = "extension_uninstall",
|
|
36
|
+
TOOL_OUTPUT_TRUNCATED = "tool_output_truncated",
|
|
37
|
+
MODEL_ROUTING = "model_routing"
|
|
31
38
|
}
|
|
32
39
|
export interface LogResponse {
|
|
33
40
|
nextRequestWaitMs?: number;
|
|
@@ -95,7 +102,9 @@ export declare class ClearcutLogger {
|
|
|
95
102
|
logApiErrorEvent(event: ApiErrorEvent): void;
|
|
96
103
|
logChatCompressionEvent(event: ChatCompressionEvent): void;
|
|
97
104
|
logFlashFallbackEvent(): void;
|
|
105
|
+
logRipgrepFallbackEvent(): void;
|
|
98
106
|
logLoopDetectedEvent(event: LoopDetectedEvent): void;
|
|
107
|
+
logLoopDetectionDisabledEvent(): void;
|
|
99
108
|
logNextSpeakerCheck(event: NextSpeakerCheckEvent): void;
|
|
100
109
|
logSlashCommandEvent(event: SlashCommandEvent): void;
|
|
101
110
|
logMalformedJsonResponseEvent(event: MalformedJsonResponseEvent): void;
|
|
@@ -106,6 +115,11 @@ export declare class ClearcutLogger {
|
|
|
106
115
|
logInvalidChunkEvent(event: InvalidChunkEvent): void;
|
|
107
116
|
logContentRetryEvent(event: ContentRetryEvent): void;
|
|
108
117
|
logContentRetryFailureEvent(event: ContentRetryFailureEvent): void;
|
|
118
|
+
logExtensionInstallEvent(event: ExtensionInstallEvent): void;
|
|
119
|
+
logExtensionUninstallEvent(event: ExtensionUninstallEvent): void;
|
|
120
|
+
logToolOutputTruncatedEvent(event: ToolOutputTruncatedEvent): void;
|
|
121
|
+
logModelRoutingEvent(event: ModelRoutingEvent): void;
|
|
122
|
+
logExtensionEnableEvent(event: ExtensionEnableEvent): void;
|
|
109
123
|
/**
|
|
110
124
|
* Adds default fields to data, and returns a new data array. This fields
|
|
111
125
|
* should exist on all log events.
|
|
@@ -10,7 +10,7 @@ import { UserAccountManager } from '../../utils/userAccountManager.js';
|
|
|
10
10
|
import { safeJsonStringify } from '../../utils/safeJsonStringify.js';
|
|
11
11
|
import { FixedDeque } from 'mnemonist';
|
|
12
12
|
import { GIT_COMMIT_INFO, CLI_VERSION } from '../../generated/git-commit.js';
|
|
13
|
-
import {
|
|
13
|
+
import { IDE_DEFINITIONS, detectIdeFromEnv } from '../../ide/detect-ide.js';
|
|
14
14
|
export var EventNames;
|
|
15
15
|
(function (EventNames) {
|
|
16
16
|
EventNames["START_SESSION"] = "start_session";
|
|
@@ -22,7 +22,9 @@ export var EventNames;
|
|
|
22
22
|
EventNames["API_ERROR"] = "api_error";
|
|
23
23
|
EventNames["END_SESSION"] = "end_session";
|
|
24
24
|
EventNames["FLASH_FALLBACK"] = "flash_fallback";
|
|
25
|
+
EventNames["RIPGREP_FALLBACK"] = "ripgrep_fallback";
|
|
25
26
|
EventNames["LOOP_DETECTED"] = "loop_detected";
|
|
27
|
+
EventNames["LOOP_DETECTION_DISABLED"] = "loop_detection_disabled";
|
|
26
28
|
EventNames["NEXT_SPEAKER_CHECK"] = "next_speaker_check";
|
|
27
29
|
EventNames["SLASH_COMMAND"] = "slash_command";
|
|
28
30
|
EventNames["MALFORMED_JSON_RESPONSE"] = "malformed_json_response";
|
|
@@ -33,6 +35,11 @@ export var EventNames;
|
|
|
33
35
|
EventNames["INVALID_CHUNK"] = "invalid_chunk";
|
|
34
36
|
EventNames["CONTENT_RETRY"] = "content_retry";
|
|
35
37
|
EventNames["CONTENT_RETRY_FAILURE"] = "content_retry_failure";
|
|
38
|
+
EventNames["EXTENSION_ENABLE"] = "extension_enable";
|
|
39
|
+
EventNames["EXTENSION_INSTALL"] = "extension_install";
|
|
40
|
+
EventNames["EXTENSION_UNINSTALL"] = "extension_uninstall";
|
|
41
|
+
EventNames["TOOL_OUTPUT_TRUNCATED"] = "tool_output_truncated";
|
|
42
|
+
EventNames["MODEL_ROUTING"] = "model_routing";
|
|
36
43
|
})(EventNames || (EventNames = {}));
|
|
37
44
|
/**
|
|
38
45
|
* Determine the surface that the user is currently using. Surface is effectively the
|
|
@@ -51,7 +58,7 @@ function determineSurface() {
|
|
|
51
58
|
return 'GitHub';
|
|
52
59
|
}
|
|
53
60
|
else if (process.env['TERM_PROGRAM'] === 'vscode') {
|
|
54
|
-
return detectIdeFromEnv() ||
|
|
61
|
+
return detectIdeFromEnv().name || IDE_DEFINITIONS.vscode.name;
|
|
55
62
|
}
|
|
56
63
|
else {
|
|
57
64
|
return 'SURFACE_NOT_SET';
|
|
@@ -359,11 +366,15 @@ export class ClearcutLogger {
|
|
|
359
366
|
gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_TYPE,
|
|
360
367
|
value: JSON.stringify(event.tool_type),
|
|
361
368
|
},
|
|
369
|
+
{
|
|
370
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_CONTENT_LENGTH,
|
|
371
|
+
value: JSON.stringify(event.content_length),
|
|
372
|
+
},
|
|
362
373
|
];
|
|
363
374
|
if (event.metadata) {
|
|
364
375
|
const metadataMapping = {
|
|
365
|
-
|
|
366
|
-
|
|
376
|
+
model_added_lines: EventMetadataKey.GEMINI_CLI_AI_ADDED_LINES,
|
|
377
|
+
model_removed_lines: EventMetadataKey.GEMINI_CLI_AI_REMOVED_LINES,
|
|
367
378
|
user_added_lines: EventMetadataKey.GEMINI_CLI_USER_ADDED_LINES,
|
|
368
379
|
user_removed_lines: EventMetadataKey.GEMINI_CLI_USER_REMOVED_LINES,
|
|
369
380
|
};
|
|
@@ -409,22 +420,6 @@ export class ClearcutLogger {
|
|
|
409
420
|
value: event.programming_language,
|
|
410
421
|
});
|
|
411
422
|
}
|
|
412
|
-
if (event.diff_stat) {
|
|
413
|
-
const metadataMapping = {
|
|
414
|
-
ai_added_lines: EventMetadataKey.GEMINI_CLI_AI_ADDED_LINES,
|
|
415
|
-
ai_removed_lines: EventMetadataKey.GEMINI_CLI_AI_REMOVED_LINES,
|
|
416
|
-
user_added_lines: EventMetadataKey.GEMINI_CLI_USER_ADDED_LINES,
|
|
417
|
-
user_removed_lines: EventMetadataKey.GEMINI_CLI_USER_REMOVED_LINES,
|
|
418
|
-
};
|
|
419
|
-
for (const [key, gemini_cli_key] of Object.entries(metadataMapping)) {
|
|
420
|
-
if (event.diff_stat[key] !== undefined) {
|
|
421
|
-
data.push({
|
|
422
|
-
gemini_cli_key,
|
|
423
|
-
value: JSON.stringify(event.diff_stat[key]),
|
|
424
|
-
});
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
423
|
const logEvent = this.createLogEvent(EventNames.FILE_OPERATION, data);
|
|
429
424
|
this.enqueueLogEvent(logEvent);
|
|
430
425
|
this.flushIfNeeded();
|
|
@@ -453,10 +448,6 @@ export class ClearcutLogger {
|
|
|
453
448
|
gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_DURATION_MS,
|
|
454
449
|
value: JSON.stringify(event.duration_ms),
|
|
455
450
|
},
|
|
456
|
-
{
|
|
457
|
-
gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_MESSAGE,
|
|
458
|
-
value: JSON.stringify(event.error),
|
|
459
|
-
},
|
|
460
451
|
{
|
|
461
452
|
gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_INPUT_TOKEN_COUNT,
|
|
462
453
|
value: JSON.stringify(event.input_token_count),
|
|
@@ -522,6 +513,12 @@ export class ClearcutLogger {
|
|
|
522
513
|
console.debug('Error flushing to Clearcut:', error);
|
|
523
514
|
});
|
|
524
515
|
}
|
|
516
|
+
logRipgrepFallbackEvent() {
|
|
517
|
+
this.enqueueLogEvent(this.createLogEvent(EventNames.RIPGREP_FALLBACK, []));
|
|
518
|
+
this.flushToClearcut().catch((error) => {
|
|
519
|
+
console.debug('Error flushing to Clearcut:', error);
|
|
520
|
+
});
|
|
521
|
+
}
|
|
525
522
|
logLoopDetectedEvent(event) {
|
|
526
523
|
const data = [
|
|
527
524
|
{
|
|
@@ -532,6 +529,11 @@ export class ClearcutLogger {
|
|
|
532
529
|
this.enqueueLogEvent(this.createLogEvent(EventNames.LOOP_DETECTED, data));
|
|
533
530
|
this.flushIfNeeded();
|
|
534
531
|
}
|
|
532
|
+
logLoopDetectionDisabledEvent() {
|
|
533
|
+
const data = [];
|
|
534
|
+
this.enqueueLogEvent(this.createLogEvent(EventNames.LOOP_DETECTION_DISABLED, data));
|
|
535
|
+
this.flushIfNeeded();
|
|
536
|
+
}
|
|
535
537
|
logNextSpeakerCheck(event) {
|
|
536
538
|
const data = [
|
|
537
539
|
{
|
|
@@ -676,6 +678,110 @@ export class ClearcutLogger {
|
|
|
676
678
|
this.enqueueLogEvent(this.createLogEvent(EventNames.CONTENT_RETRY_FAILURE, data));
|
|
677
679
|
this.flushIfNeeded();
|
|
678
680
|
}
|
|
681
|
+
logExtensionInstallEvent(event) {
|
|
682
|
+
const data = [
|
|
683
|
+
{
|
|
684
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_NAME,
|
|
685
|
+
value: event.extension_name,
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_VERSION,
|
|
689
|
+
value: event.extension_version,
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_SOURCE,
|
|
693
|
+
value: event.extension_source,
|
|
694
|
+
},
|
|
695
|
+
{
|
|
696
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_INSTALL_STATUS,
|
|
697
|
+
value: event.status,
|
|
698
|
+
},
|
|
699
|
+
];
|
|
700
|
+
this.enqueueLogEvent(this.createLogEvent(EventNames.EXTENSION_INSTALL, data));
|
|
701
|
+
this.flushIfNeeded();
|
|
702
|
+
}
|
|
703
|
+
logExtensionUninstallEvent(event) {
|
|
704
|
+
const data = [
|
|
705
|
+
{
|
|
706
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_NAME,
|
|
707
|
+
value: event.extension_name,
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_UNINSTALL_STATUS,
|
|
711
|
+
value: event.status,
|
|
712
|
+
},
|
|
713
|
+
];
|
|
714
|
+
this.enqueueLogEvent(this.createLogEvent(EventNames.EXTENSION_UNINSTALL, data));
|
|
715
|
+
this.flushIfNeeded();
|
|
716
|
+
}
|
|
717
|
+
logToolOutputTruncatedEvent(event) {
|
|
718
|
+
const data = [
|
|
719
|
+
{
|
|
720
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_NAME,
|
|
721
|
+
value: JSON.stringify(event.tool_name),
|
|
722
|
+
},
|
|
723
|
+
{
|
|
724
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_OUTPUT_TRUNCATED_ORIGINAL_LENGTH,
|
|
725
|
+
value: JSON.stringify(event.original_content_length),
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_OUTPUT_TRUNCATED_TRUNCATED_LENGTH,
|
|
729
|
+
value: JSON.stringify(event.truncated_content_length),
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_OUTPUT_TRUNCATED_THRESHOLD,
|
|
733
|
+
value: JSON.stringify(event.threshold),
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_OUTPUT_TRUNCATED_LINES,
|
|
737
|
+
value: JSON.stringify(event.lines),
|
|
738
|
+
},
|
|
739
|
+
];
|
|
740
|
+
this.enqueueLogEvent(this.createLogEvent(EventNames.TOOL_OUTPUT_TRUNCATED, data));
|
|
741
|
+
this.flushIfNeeded();
|
|
742
|
+
}
|
|
743
|
+
logModelRoutingEvent(event) {
|
|
744
|
+
const data = [
|
|
745
|
+
{
|
|
746
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_ROUTING_DECISION,
|
|
747
|
+
value: event.decision_model,
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_ROUTING_DECISION_SOURCE,
|
|
751
|
+
value: event.decision_source,
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_ROUTING_LATENCY_MS,
|
|
755
|
+
value: event.routing_latency_ms.toString(),
|
|
756
|
+
},
|
|
757
|
+
{
|
|
758
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_ROUTING_FAILURE,
|
|
759
|
+
value: event.failed.toString(),
|
|
760
|
+
},
|
|
761
|
+
];
|
|
762
|
+
if (event.error_message) {
|
|
763
|
+
data.push({
|
|
764
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_ROUTING_FAILURE_REASON,
|
|
765
|
+
value: event.error_message,
|
|
766
|
+
});
|
|
767
|
+
}
|
|
768
|
+
this.enqueueLogEvent(this.createLogEvent(EventNames.MODEL_ROUTING, data));
|
|
769
|
+
this.flushIfNeeded();
|
|
770
|
+
}
|
|
771
|
+
logExtensionEnableEvent(event) {
|
|
772
|
+
const data = [
|
|
773
|
+
{
|
|
774
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_NAME,
|
|
775
|
+
value: event.extension_name,
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_ENABLE_SETTING_SCOPE,
|
|
779
|
+
value: event.setting_scope,
|
|
780
|
+
},
|
|
781
|
+
];
|
|
782
|
+
this.enqueueLogEvent(this.createLogEvent(EventNames.EXTENSION_ENABLE, data));
|
|
783
|
+
this.flushIfNeeded();
|
|
784
|
+
}
|
|
679
785
|
/**
|
|
680
786
|
* Adds default fields to data, and returns a new data array. This fields
|
|
681
787
|
* should exist on all log events.
|
|
@@ -715,6 +821,19 @@ export class ClearcutLogger {
|
|
|
715
821
|
gemini_cli_key: EventMetadataKey.GEMINI_CLI_OS,
|
|
716
822
|
value: process.platform,
|
|
717
823
|
},
|
|
824
|
+
{
|
|
825
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_NODE_VERSION,
|
|
826
|
+
value: process.versions.node,
|
|
827
|
+
},
|
|
828
|
+
{
|
|
829
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_USER_SETTINGS,
|
|
830
|
+
value: safeJsonStringify([
|
|
831
|
+
{
|
|
832
|
+
smart_edit_enabled: this.config?.getUseSmartEdit() ?? false,
|
|
833
|
+
model_router_enabled: this.config?.getUseModelRouter() ?? false,
|
|
834
|
+
},
|
|
835
|
+
]),
|
|
836
|
+
},
|
|
718
837
|
];
|
|
719
838
|
return [...data, ...defaultLogMetadata];
|
|
720
839
|
}
|