@google/gemini-cli-core 0.0.3-preview.4 → 0.0.4
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
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { metrics, ValueType } from '@opentelemetry/api';
|
|
7
|
-
import { SERVICE_NAME, METRIC_TOOL_CALL_COUNT, METRIC_TOOL_CALL_LATENCY, METRIC_API_REQUEST_COUNT, METRIC_API_REQUEST_LATENCY, METRIC_TOKEN_USAGE, METRIC_SESSION_COUNT, METRIC_FILE_OPERATION_COUNT, EVENT_CHAT_COMPRESSION, METRIC_INVALID_CHUNK_COUNT, METRIC_CONTENT_RETRY_COUNT, METRIC_CONTENT_RETRY_FAILURE_COUNT, } from './constants.js';
|
|
7
|
+
import { SERVICE_NAME, METRIC_TOOL_CALL_COUNT, METRIC_TOOL_CALL_LATENCY, METRIC_API_REQUEST_COUNT, METRIC_API_REQUEST_LATENCY, METRIC_TOKEN_USAGE, METRIC_SESSION_COUNT, METRIC_FILE_OPERATION_COUNT, EVENT_CHAT_COMPRESSION, METRIC_INVALID_CHUNK_COUNT, METRIC_CONTENT_RETRY_COUNT, METRIC_CONTENT_RETRY_FAILURE_COUNT, METRIC_MODEL_ROUTING_LATENCY, METRIC_MODEL_ROUTING_FAILURE_COUNT, } from './constants.js';
|
|
8
8
|
export var FileOperation;
|
|
9
9
|
(function (FileOperation) {
|
|
10
10
|
FileOperation["CREATE"] = "create";
|
|
@@ -22,6 +22,8 @@ let chatCompressionCounter;
|
|
|
22
22
|
let invalidChunkCounter;
|
|
23
23
|
let contentRetryCounter;
|
|
24
24
|
let contentRetryFailureCounter;
|
|
25
|
+
let modelRoutingLatencyHistogram;
|
|
26
|
+
let modelRoutingFailureCounter;
|
|
25
27
|
let isMetricsInitialized = false;
|
|
26
28
|
function getCommonAttributes(config) {
|
|
27
29
|
return {
|
|
@@ -83,6 +85,15 @@ export function initializeMetrics(config) {
|
|
|
83
85
|
description: 'Counts occurrences of all content retries failing.',
|
|
84
86
|
valueType: ValueType.INT,
|
|
85
87
|
});
|
|
88
|
+
modelRoutingLatencyHistogram = meter.createHistogram(METRIC_MODEL_ROUTING_LATENCY, {
|
|
89
|
+
description: 'Latency of model routing decisions in milliseconds.',
|
|
90
|
+
unit: 'ms',
|
|
91
|
+
valueType: ValueType.INT,
|
|
92
|
+
});
|
|
93
|
+
modelRoutingFailureCounter = meter.createCounter(METRIC_MODEL_ROUTING_FAILURE_COUNT, {
|
|
94
|
+
description: 'Counts model routing failures.',
|
|
95
|
+
valueType: ValueType.INT,
|
|
96
|
+
});
|
|
86
97
|
const sessionCounter = meter.createCounter(METRIC_SESSION_COUNT, {
|
|
87
98
|
description: 'Count of CLI sessions started.',
|
|
88
99
|
valueType: ValueType.INT,
|
|
@@ -123,7 +134,7 @@ export function recordTokenUsageMetrics(config, model, tokenCount, type) {
|
|
|
123
134
|
type,
|
|
124
135
|
});
|
|
125
136
|
}
|
|
126
|
-
export function recordApiResponseMetrics(config, model, durationMs, statusCode
|
|
137
|
+
export function recordApiResponseMetrics(config, model, durationMs, statusCode) {
|
|
127
138
|
if (!apiRequestCounter ||
|
|
128
139
|
!apiRequestLatencyHistogram ||
|
|
129
140
|
!isMetricsInitialized)
|
|
@@ -131,7 +142,7 @@ export function recordApiResponseMetrics(config, model, durationMs, statusCode,
|
|
|
131
142
|
const metricAttributes = {
|
|
132
143
|
...getCommonAttributes(config),
|
|
133
144
|
model,
|
|
134
|
-
status_code: statusCode ??
|
|
145
|
+
status_code: statusCode ?? 'ok',
|
|
135
146
|
};
|
|
136
147
|
apiRequestCounter.add(1, metricAttributes);
|
|
137
148
|
apiRequestLatencyHistogram.record(durationMs, {
|
|
@@ -156,7 +167,7 @@ export function recordApiErrorMetrics(config, model, durationMs, statusCode, err
|
|
|
156
167
|
model,
|
|
157
168
|
});
|
|
158
169
|
}
|
|
159
|
-
export function recordFileOperationMetric(config, operation, lines, mimetype, extension,
|
|
170
|
+
export function recordFileOperationMetric(config, operation, lines, mimetype, extension, programming_language) {
|
|
160
171
|
if (!fileOperationCounter || !isMetricsInitialized)
|
|
161
172
|
return;
|
|
162
173
|
const attributes = {
|
|
@@ -169,12 +180,6 @@ export function recordFileOperationMetric(config, operation, lines, mimetype, ex
|
|
|
169
180
|
attributes['mimetype'] = mimetype;
|
|
170
181
|
if (extension !== undefined)
|
|
171
182
|
attributes['extension'] = extension;
|
|
172
|
-
if (diffStat !== undefined) {
|
|
173
|
-
attributes['ai_added_lines'] = diffStat.ai_added_lines;
|
|
174
|
-
attributes['ai_removed_lines'] = diffStat.ai_removed_lines;
|
|
175
|
-
attributes['user_added_lines'] = diffStat.user_added_lines;
|
|
176
|
-
attributes['user_removed_lines'] = diffStat.user_removed_lines;
|
|
177
|
-
}
|
|
178
183
|
if (programming_language !== undefined) {
|
|
179
184
|
attributes['programming_language'] = programming_language;
|
|
180
185
|
}
|
|
@@ -205,4 +210,22 @@ export function recordContentRetryFailure(config) {
|
|
|
205
210
|
return;
|
|
206
211
|
contentRetryFailureCounter.add(1, getCommonAttributes(config));
|
|
207
212
|
}
|
|
213
|
+
export function recordModelRoutingMetrics(config, event) {
|
|
214
|
+
if (!modelRoutingLatencyHistogram ||
|
|
215
|
+
!modelRoutingFailureCounter ||
|
|
216
|
+
!isMetricsInitialized)
|
|
217
|
+
return;
|
|
218
|
+
modelRoutingLatencyHistogram.record(event.routing_latency_ms, {
|
|
219
|
+
...getCommonAttributes(config),
|
|
220
|
+
'routing.decision_model': event.decision_model,
|
|
221
|
+
'routing.decision_source': event.decision_source,
|
|
222
|
+
});
|
|
223
|
+
if (event.failed) {
|
|
224
|
+
modelRoutingFailureCounter.add(1, {
|
|
225
|
+
...getCommonAttributes(config),
|
|
226
|
+
'routing.decision_source': event.decision_source,
|
|
227
|
+
'routing.error_message': event.error_message,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
208
231
|
//# sourceMappingURL=metrics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/telemetry/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,gBAAgB,CAAC;AAIxB,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,8BAAa,CAAA;IACb,kCAAiB,CAAA;AACnB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,IAAI,QAA2B,CAAC;AAChC,IAAI,eAAoC,CAAC;AACzC,IAAI,wBAA+C,CAAC;AACpD,IAAI,iBAAsC,CAAC;AAC3C,IAAI,0BAAiD,CAAC;AACtD,IAAI,iBAAsC,CAAC;AAC3C,IAAI,oBAAyC,CAAC;AAC9C,IAAI,sBAA2C,CAAC;AAChD,IAAI,mBAAwC,CAAC;AAC7C,IAAI,mBAAwC,CAAC;AAC7C,IAAI,0BAA+C,CAAC;AACpD,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC,SAAS,mBAAmB,CAAC,MAAc;IACzC,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IAAI,oBAAoB;QAAE,OAAO;IAEjC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,sBAAsB,EAAE;QAC5D,WAAW,EAAE,yDAAyD;QACtE,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IACH,wBAAwB,GAAG,KAAK,CAAC,eAAe,CAAC,wBAAwB,EAAE;QACzE,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IACH,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,wBAAwB,EAAE;QAChE,WAAW,EAAE,kDAAkD;QAC/D,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IACH,0BAA0B,GAAG,KAAK,CAAC,eAAe,CAChD,0BAA0B,EAC1B;QACE,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CACF,CAAC;IACF,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE;QAC1D,WAAW,EAAE,yCAAyC;QACtD,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IACH,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAAC,2BAA2B,EAAE;QACtE,WAAW,EAAE,gDAAgD;QAC7D,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IACH,sBAAsB,GAAG,KAAK,CAAC,aAAa,CAAC,sBAAsB,EAAE;QACnE,WAAW,EAAE,iCAAiC;QAC9C,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IAEH,kCAAkC;IAClC,mBAAmB,GAAG,KAAK,CAAC,aAAa,CAAC,0BAA0B,EAAE;QACpE,WAAW,EAAE,+CAA+C;QAC5D,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IACH,mBAAmB,GAAG,KAAK,CAAC,aAAa,CAAC,0BAA0B,EAAE;QACpE,WAAW,EAAE,4DAA4D;QACzE,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IACH,0BAA0B,GAAG,KAAK,CAAC,aAAa,CAC9C,kCAAkC,EAClC;QACE,WAAW,EAAE,oDAAoD;QACjE,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CACF,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,oBAAoB,EAAE;QAC/D,WAAW,EAAE,gCAAgC;QAC7C,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IACH,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,oBAAoB,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAc,EACd,IAAqD;IAErD,IAAI,CAAC,sBAAsB,IAAI,CAAC,oBAAoB;QAAE,OAAO;IAC7D,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5B,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,IAAI;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,YAAoB,EACpB,UAAkB,EAClB,OAAgB,EAChB,QAAyD,EACzD,SAA4B;IAE5B,IAAI,CAAC,eAAe,IAAI,CAAC,wBAAwB,IAAI,CAAC,oBAAoB;QACxE,OAAO;IAET,MAAM,gBAAgB,GAAe;QACnC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,aAAa,EAAE,YAAY;QAC3B,OAAO;QACP,QAAQ;QACR,SAAS;KACV,CAAC;IACF,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACzC,wBAAwB,CAAC,MAAM,CAAC,UAAU,EAAE;QAC1C,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,aAAa,EAAE,YAAY;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,KAAa,EACb,UAAkB,EAClB,IAAuD;IAEvD,IAAI,CAAC,iBAAiB,IAAI,CAAC,oBAAoB;QAAE,OAAO;IACxD,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,KAAK;QACL,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,KAAa,EACb,UAAkB,EAClB,UAA4B
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/telemetry/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
7
7
|
import { FileOperation } from './metrics.js';
|
|
8
8
|
import { makeFakeConfig } from '../test-utils/config.js';
|
|
9
|
+
import { ModelRoutingEvent } from './types.js';
|
|
9
10
|
const mockCounterAddFn = vi.fn();
|
|
10
11
|
const mockHistogramRecordFn = vi.fn();
|
|
11
12
|
const mockCreateCounterFn = vi.fn();
|
|
@@ -39,6 +40,7 @@ describe('Telemetry Metrics', () => {
|
|
|
39
40
|
let recordTokenUsageMetricsModule;
|
|
40
41
|
let recordFileOperationMetricModule;
|
|
41
42
|
let recordChatCompressionMetricsModule;
|
|
43
|
+
let recordModelRoutingMetricsModule;
|
|
42
44
|
beforeEach(async () => {
|
|
43
45
|
vi.resetModules();
|
|
44
46
|
vi.doMock('@opentelemetry/api', () => {
|
|
@@ -52,6 +54,7 @@ describe('Telemetry Metrics', () => {
|
|
|
52
54
|
recordFileOperationMetricModule = metricsJsModule.recordFileOperationMetric;
|
|
53
55
|
recordChatCompressionMetricsModule =
|
|
54
56
|
metricsJsModule.recordChatCompressionMetrics;
|
|
57
|
+
recordModelRoutingMetricsModule = metricsJsModule.recordModelRoutingMetrics;
|
|
55
58
|
const otelApiModule = await import('@opentelemetry/api');
|
|
56
59
|
mockCounterAddFn.mockClear();
|
|
57
60
|
mockCreateCounterFn.mockClear();
|
|
@@ -187,26 +190,16 @@ describe('Telemetry Metrics', () => {
|
|
|
187
190
|
mimetype: 'application/javascript',
|
|
188
191
|
});
|
|
189
192
|
});
|
|
190
|
-
it('should
|
|
193
|
+
it('should record file operation without diffStat', () => {
|
|
191
194
|
initializeMetricsModule(mockConfig);
|
|
192
195
|
mockCounterAddFn.mockClear();
|
|
193
|
-
|
|
194
|
-
ai_added_lines: 5,
|
|
195
|
-
ai_removed_lines: 2,
|
|
196
|
-
user_added_lines: 3,
|
|
197
|
-
user_removed_lines: 1,
|
|
198
|
-
};
|
|
199
|
-
recordFileOperationMetricModule(mockConfig, FileOperation.UPDATE, undefined, undefined, undefined, diffStat);
|
|
196
|
+
recordFileOperationMetricModule(mockConfig, FileOperation.UPDATE, undefined, undefined, undefined);
|
|
200
197
|
expect(mockCounterAddFn).toHaveBeenCalledWith(1, {
|
|
201
198
|
'session.id': 'test-session-id',
|
|
202
199
|
operation: FileOperation.UPDATE,
|
|
203
|
-
ai_added_lines: 5,
|
|
204
|
-
ai_removed_lines: 2,
|
|
205
|
-
user_added_lines: 3,
|
|
206
|
-
user_removed_lines: 1,
|
|
207
200
|
});
|
|
208
201
|
});
|
|
209
|
-
it('should
|
|
202
|
+
it('should record minimal file operation when optional parameters are undefined', () => {
|
|
210
203
|
initializeMetricsModule(mockConfig);
|
|
211
204
|
mockCounterAddFn.mockClear();
|
|
212
205
|
recordFileOperationMetricModule(mockConfig, FileOperation.UPDATE, 10, 'text/plain', 'txt', undefined);
|
|
@@ -218,23 +211,52 @@ describe('Telemetry Metrics', () => {
|
|
|
218
211
|
extension: 'txt',
|
|
219
212
|
});
|
|
220
213
|
});
|
|
221
|
-
it('should
|
|
214
|
+
it('should not include diffStat attributes when diffStat is not provided', () => {
|
|
222
215
|
initializeMetricsModule(mockConfig);
|
|
223
216
|
mockCounterAddFn.mockClear();
|
|
224
|
-
|
|
225
|
-
ai_added_lines: 0,
|
|
226
|
-
ai_removed_lines: 0,
|
|
227
|
-
user_added_lines: 0,
|
|
228
|
-
user_removed_lines: 0,
|
|
229
|
-
};
|
|
230
|
-
recordFileOperationMetricModule(mockConfig, FileOperation.UPDATE, undefined, undefined, undefined, diffStat);
|
|
217
|
+
recordFileOperationMetricModule(mockConfig, FileOperation.UPDATE, undefined, undefined, undefined);
|
|
231
218
|
expect(mockCounterAddFn).toHaveBeenCalledWith(1, {
|
|
232
219
|
'session.id': 'test-session-id',
|
|
233
220
|
operation: FileOperation.UPDATE,
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
describe('recordModelRoutingMetrics', () => {
|
|
225
|
+
const mockConfig = {
|
|
226
|
+
getSessionId: () => 'test-session-id',
|
|
227
|
+
};
|
|
228
|
+
it('should not record metrics if not initialized', () => {
|
|
229
|
+
const event = new ModelRoutingEvent('gemini-pro', 'default', 100, 'test-reason', false, undefined);
|
|
230
|
+
recordModelRoutingMetricsModule(mockConfig, event);
|
|
231
|
+
expect(mockHistogramRecordFn).not.toHaveBeenCalled();
|
|
232
|
+
expect(mockCounterAddFn).not.toHaveBeenCalled();
|
|
233
|
+
});
|
|
234
|
+
it('should record latency for a successful routing decision', () => {
|
|
235
|
+
initializeMetricsModule(mockConfig);
|
|
236
|
+
const event = new ModelRoutingEvent('gemini-pro', 'default', 150, 'test-reason', false, undefined);
|
|
237
|
+
recordModelRoutingMetricsModule(mockConfig, event);
|
|
238
|
+
expect(mockHistogramRecordFn).toHaveBeenCalledWith(150, {
|
|
239
|
+
'session.id': 'test-session-id',
|
|
240
|
+
'routing.decision_model': 'gemini-pro',
|
|
241
|
+
'routing.decision_source': 'default',
|
|
242
|
+
});
|
|
243
|
+
// The session counter is called once on init
|
|
244
|
+
expect(mockCounterAddFn).toHaveBeenCalledTimes(1);
|
|
245
|
+
});
|
|
246
|
+
it('should record latency and failure for a failed routing decision', () => {
|
|
247
|
+
initializeMetricsModule(mockConfig);
|
|
248
|
+
const event = new ModelRoutingEvent('gemini-pro', 'classifier', 200, 'test-reason', true, 'test-error');
|
|
249
|
+
recordModelRoutingMetricsModule(mockConfig, event);
|
|
250
|
+
expect(mockHistogramRecordFn).toHaveBeenCalledWith(200, {
|
|
251
|
+
'session.id': 'test-session-id',
|
|
252
|
+
'routing.decision_model': 'gemini-pro',
|
|
253
|
+
'routing.decision_source': 'classifier',
|
|
254
|
+
});
|
|
255
|
+
expect(mockCounterAddFn).toHaveBeenCalledTimes(2);
|
|
256
|
+
expect(mockCounterAddFn).toHaveBeenNthCalledWith(2, 1, {
|
|
257
|
+
'session.id': 'test-session-id',
|
|
258
|
+
'routing.decision_source': 'classifier',
|
|
259
|
+
'routing.error_message': 'test-error',
|
|
238
260
|
});
|
|
239
261
|
});
|
|
240
262
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.test.js","sourceRoot":"","sources":["../../../src/telemetry/metrics.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAa,MAAM,QAAQ,CAAC;AASzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.test.js","sourceRoot":"","sources":["../../../src/telemetry/metrics.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Rate limiter to prevent excessive telemetry recording
|
|
8
|
+
* Ensures we don't send metrics more frequently than specified limits
|
|
9
|
+
*/
|
|
10
|
+
export declare class RateLimiter {
|
|
11
|
+
private lastRecordTimes;
|
|
12
|
+
private readonly minIntervalMs;
|
|
13
|
+
private static readonly HIGH_PRIORITY_DIVISOR;
|
|
14
|
+
constructor(minIntervalMs?: number);
|
|
15
|
+
/**
|
|
16
|
+
* Check if we should record a metric based on rate limiting
|
|
17
|
+
* @param metricKey - Unique key for the metric type/context
|
|
18
|
+
* @param isHighPriority - If true, uses shorter interval for critical events
|
|
19
|
+
* @returns true if metric should be recorded
|
|
20
|
+
*/
|
|
21
|
+
shouldRecord(metricKey: string, isHighPriority?: boolean): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Force record a metric (bypasses rate limiting)
|
|
24
|
+
* Use sparingly for critical events
|
|
25
|
+
*/
|
|
26
|
+
forceRecord(metricKey: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get time until next allowed recording for a metric
|
|
29
|
+
*/
|
|
30
|
+
getTimeUntilNextAllowed(metricKey: string, isHighPriority?: boolean): number;
|
|
31
|
+
/**
|
|
32
|
+
* Get statistics about rate limiting
|
|
33
|
+
*/
|
|
34
|
+
getStats(): {
|
|
35
|
+
totalMetrics: number;
|
|
36
|
+
oldestRecord: number;
|
|
37
|
+
newestRecord: number;
|
|
38
|
+
averageInterval: number;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Clear all rate limiting state
|
|
42
|
+
*/
|
|
43
|
+
reset(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Remove old entries to prevent memory leaks
|
|
46
|
+
*/
|
|
47
|
+
cleanup(maxAgeMs?: number): void;
|
|
48
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Rate limiter to prevent excessive telemetry recording
|
|
8
|
+
* Ensures we don't send metrics more frequently than specified limits
|
|
9
|
+
*/
|
|
10
|
+
export class RateLimiter {
|
|
11
|
+
lastRecordTimes = new Map();
|
|
12
|
+
minIntervalMs;
|
|
13
|
+
static HIGH_PRIORITY_DIVISOR = 2;
|
|
14
|
+
constructor(minIntervalMs = 60000) {
|
|
15
|
+
if (minIntervalMs < 0) {
|
|
16
|
+
throw new Error('minIntervalMs must be non-negative.');
|
|
17
|
+
}
|
|
18
|
+
this.minIntervalMs = minIntervalMs;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if we should record a metric based on rate limiting
|
|
22
|
+
* @param metricKey - Unique key for the metric type/context
|
|
23
|
+
* @param isHighPriority - If true, uses shorter interval for critical events
|
|
24
|
+
* @returns true if metric should be recorded
|
|
25
|
+
*/
|
|
26
|
+
shouldRecord(metricKey, isHighPriority = false) {
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
const lastRecordTime = this.lastRecordTimes.get(metricKey) || 0;
|
|
29
|
+
// Use shorter interval for high priority events (e.g., memory leaks)
|
|
30
|
+
const interval = isHighPriority
|
|
31
|
+
? Math.round(this.minIntervalMs / RateLimiter.HIGH_PRIORITY_DIVISOR)
|
|
32
|
+
: this.minIntervalMs;
|
|
33
|
+
if (now - lastRecordTime >= interval) {
|
|
34
|
+
this.lastRecordTimes.set(metricKey, now);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Force record a metric (bypasses rate limiting)
|
|
41
|
+
* Use sparingly for critical events
|
|
42
|
+
*/
|
|
43
|
+
forceRecord(metricKey) {
|
|
44
|
+
this.lastRecordTimes.set(metricKey, Date.now());
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get time until next allowed recording for a metric
|
|
48
|
+
*/
|
|
49
|
+
getTimeUntilNextAllowed(metricKey, isHighPriority = false) {
|
|
50
|
+
const now = Date.now();
|
|
51
|
+
const lastRecordTime = this.lastRecordTimes.get(metricKey) || 0;
|
|
52
|
+
const interval = isHighPriority
|
|
53
|
+
? Math.round(this.minIntervalMs / RateLimiter.HIGH_PRIORITY_DIVISOR)
|
|
54
|
+
: this.minIntervalMs;
|
|
55
|
+
const nextAllowedTime = lastRecordTime + interval;
|
|
56
|
+
return Math.max(0, nextAllowedTime - now);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get statistics about rate limiting
|
|
60
|
+
*/
|
|
61
|
+
getStats() {
|
|
62
|
+
const recordTimes = Array.from(this.lastRecordTimes.values());
|
|
63
|
+
if (recordTimes.length === 0) {
|
|
64
|
+
return {
|
|
65
|
+
totalMetrics: 0,
|
|
66
|
+
oldestRecord: 0,
|
|
67
|
+
newestRecord: 0,
|
|
68
|
+
averageInterval: 0,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
const oldest = Math.min(...recordTimes);
|
|
72
|
+
const newest = Math.max(...recordTimes);
|
|
73
|
+
const totalSpan = newest - oldest;
|
|
74
|
+
const averageInterval = recordTimes.length > 1 ? totalSpan / (recordTimes.length - 1) : 0;
|
|
75
|
+
return {
|
|
76
|
+
totalMetrics: recordTimes.length,
|
|
77
|
+
oldestRecord: oldest,
|
|
78
|
+
newestRecord: newest,
|
|
79
|
+
averageInterval,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Clear all rate limiting state
|
|
84
|
+
*/
|
|
85
|
+
reset() {
|
|
86
|
+
this.lastRecordTimes.clear();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Remove old entries to prevent memory leaks
|
|
90
|
+
*/
|
|
91
|
+
cleanup(maxAgeMs = 3600000) {
|
|
92
|
+
const cutoffTime = Date.now() - maxAgeMs;
|
|
93
|
+
for (const [key, time] of this.lastRecordTimes.entries()) {
|
|
94
|
+
if (time < cutoffTime) {
|
|
95
|
+
this.lastRecordTimes.delete(key);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=rate-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/telemetry/rate-limiter.ts"],"names":[],"mappings":"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"}
|