@google/gemini-cli-core 0.1.20 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -29
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/src/code_assist/converter.d.ts +1 -0
- package/dist/src/code_assist/converter.js +1 -0
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +1 -0
- package/dist/src/code_assist/oauth2.js +37 -20
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +51 -8
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.js +1 -1
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/setup.js +47 -16
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js +114 -8
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/config/config.d.ts +8 -3
- package/dist/src/config/config.js +25 -12
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +83 -1
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/core/client.d.ts +7 -12
- package/dist/src/core/client.js +67 -30
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +354 -0
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +19 -11
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +39 -15
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.js +6 -2
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +46 -65
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/logger.d.ts +22 -1
- package/dist/src/core/logger.js +103 -17
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +86 -20
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +79 -36
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +4 -4
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +7 -0
- package/dist/src/generated/git-commit.js +10 -0
- package/dist/src/generated/git-commit.js.map +1 -0
- package/dist/src/ide/constants.d.ts +6 -0
- package/dist/src/ide/constants.js +7 -0
- package/dist/src/ide/constants.js.map +1 -0
- package/dist/src/ide/detect-ide.d.ts +2 -0
- package/dist/src/ide/detect-ide.js +22 -6
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.d.ts +6 -0
- package/dist/src/ide/detect-ide.test.js +65 -0
- package/dist/src/ide/detect-ide.test.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +5 -1
- package/dist/src/ide/ide-client.js +57 -21
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.d.ts +6 -0
- package/dist/src/ide/ide-client.test.js +43 -0
- package/dist/src/ide/ide-client.test.js.map +1 -0
- package/dist/src/ide/ide-installer.js +5 -4
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +14 -0
- package/dist/src/ide/process-utils.js +57 -0
- package/dist/src/ide/process-utils.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +0 -1
- package/dist/src/mcp/oauth-provider.js +176 -59
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +132 -62
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +3 -1
- package/dist/src/mcp/oauth-utils.js +50 -12
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +17 -2
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.js +5 -5
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +13 -3
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +23 -4
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +84 -33
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +11 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +143 -29
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +8 -2
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +17 -9
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +1 -0
- package/dist/src/telemetry/constants.js +1 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -2
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/integration.test.circular.js +1 -0
- package/dist/src/telemetry/integration.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +3 -1
- package/dist/src/telemetry/loggers.js +37 -4
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +27 -2
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +4 -0
- package/dist/src/telemetry/metrics.js +21 -8
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +31 -1
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sdk.js +64 -36
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/sdk.test.d.ts +6 -0
- package/dist/src/telemetry/sdk.test.js +82 -0
- package/dist/src/telemetry/sdk.test.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +40 -14
- package/dist/src/telemetry/types.js +46 -23
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/test-utils/tools.d.ts +21 -6
- package/dist/src/test-utils/tools.js +78 -13
- package/dist/src/test-utils/tools.js.map +1 -1
- package/dist/src/tools/edit.js +2 -2
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/glob.js +2 -2
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/grep.js +2 -2
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/ls.d.ts +3 -22
- package/dist/src/tools/ls.js +81 -77
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +62 -34
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client.js +40 -10
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +31 -1
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +3 -5
- package/dist/src/tools/mcp-tool.js +62 -21
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +110 -51
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +9 -13
- package/dist/src/tools/memoryTool.js +124 -117
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +28 -17
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/read-file.js +2 -2
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +4 -5
- package/dist/src/tools/read-many-files.js +112 -100
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +60 -37
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +4 -6
- package/dist/src/tools/shell.js +116 -105
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +52 -46
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +1 -0
- package/dist/src/tools/tool-error.js +1 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +8 -3
- package/dist/src/tools/tool-registry.js +56 -30
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +28 -86
- package/dist/src/tools/tools.js +67 -122
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.js +91 -2
- package/dist/src/tools/tools.test.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +4 -7
- package/dist/src/tools/web-fetch.js +62 -62
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +8 -4
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +4 -5
- package/dist/src/tools/web-search.js +51 -50
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/web-search.test.d.ts +6 -0
- package/dist/src/tools/web-search.test.js +139 -0
- package/dist/src/tools/web-search.test.js.map +1 -0
- package/dist/src/tools/write-file.d.ts +15 -10
- package/dist/src/tools/write-file.js +133 -141
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +57 -88
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/browser.js +4 -3
- package/dist/src/utils/browser.js.map +1 -1
- package/dist/src/utils/editCorrector.js +13 -13
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editor.js +1 -1
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +10 -10
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/errorParsing.d.ts +8 -0
- package/dist/src/utils/errorParsing.js +93 -0
- package/dist/src/utils/errorParsing.js.map +1 -0
- package/dist/src/utils/errorParsing.test.d.ts +6 -0
- package/dist/src/utils/errorParsing.test.js +172 -0
- package/dist/src/utils/errorParsing.test.js.map +1 -0
- package/dist/src/utils/filesearch/crawler.d.ts +15 -0
- package/dist/src/utils/filesearch/crawler.js +50 -0
- package/dist/src/utils/filesearch/crawler.js.map +1 -0
- package/dist/src/utils/filesearch/crawler.test.d.ts +6 -0
- package/dist/src/utils/filesearch/crawler.test.js +468 -0
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.d.ts +9 -53
- package/dist/src/utils/filesearch/fileSearch.js +63 -118
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +95 -197
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.d.ts +7 -0
- package/dist/src/utils/filesearch/ignore.js +25 -0
- package/dist/src/utils/filesearch/ignore.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.test.js +89 -2
- package/dist/src/utils/filesearch/ignore.test.js.map +1 -1
- package/dist/src/utils/filesearch/result-cache.d.ts +1 -2
- package/dist/src/utils/filesearch/result-cache.js +1 -3
- package/dist/src/utils/filesearch/result-cache.js.map +1 -1
- package/dist/src/utils/filesearch/result-cache.test.js +3 -4
- package/dist/src/utils/filesearch/result-cache.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.js +3 -3
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +3 -2
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +3 -7
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +17 -20
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
- package/dist/src/utils/paths.d.ts +7 -0
- package/dist/src/utils/paths.js +15 -0
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/paths.test.js +74 -2
- package/dist/src/utils/paths.test.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.d.ts +1 -5
- package/dist/src/utils/quotaErrorDetection.js.map +1 -1
- package/dist/src/utils/secure-browser-launcher.js +4 -3
- package/dist/src/utils/secure-browser-launcher.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +39 -0
- package/dist/src/utils/shell-utils.js +72 -2
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +132 -4
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/systemEncoding.js +1 -1
- package/dist/src/utils/systemEncoding.js.map +1 -1
- package/dist/src/utils/systemEncoding.test.js +23 -23
- package/dist/src/utils/systemEncoding.test.js.map +1 -1
- package/dist/src/utils/workspaceContext.d.ts +22 -7
- package/dist/src/utils/workspaceContext.js +81 -55
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/dist/src/utils/workspaceContext.test.js +221 -137
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -2
- package/dist/src/core/modelCheck.d.ts +0 -14
- package/dist/src/core/modelCheck.js +0 -62
- package/dist/src/core/modelCheck.js.map +0 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
7
|
+
import { initializeTelemetry, shutdownTelemetry } from './sdk.js';
|
|
8
|
+
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';
|
|
9
|
+
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';
|
|
10
|
+
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc';
|
|
11
|
+
import { OTLPTraceExporter as OTLPTraceExporterHttp } from '@opentelemetry/exporter-trace-otlp-http';
|
|
12
|
+
import { OTLPLogExporter as OTLPLogExporterHttp } from '@opentelemetry/exporter-logs-otlp-http';
|
|
13
|
+
import { OTLPMetricExporter as OTLPMetricExporterHttp } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
14
|
+
import { NodeSDK } from '@opentelemetry/sdk-node';
|
|
15
|
+
vi.mock('@opentelemetry/exporter-trace-otlp-grpc');
|
|
16
|
+
vi.mock('@opentelemetry/exporter-logs-otlp-grpc');
|
|
17
|
+
vi.mock('@opentelemetry/exporter-metrics-otlp-grpc');
|
|
18
|
+
vi.mock('@opentelemetry/exporter-trace-otlp-http');
|
|
19
|
+
vi.mock('@opentelemetry/exporter-logs-otlp-http');
|
|
20
|
+
vi.mock('@opentelemetry/exporter-metrics-otlp-http');
|
|
21
|
+
vi.mock('@opentelemetry/sdk-node');
|
|
22
|
+
describe('Telemetry SDK', () => {
|
|
23
|
+
let mockConfig;
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
vi.clearAllMocks();
|
|
26
|
+
mockConfig = {
|
|
27
|
+
getTelemetryEnabled: () => true,
|
|
28
|
+
getTelemetryOtlpEndpoint: () => 'http://localhost:4317',
|
|
29
|
+
getTelemetryOtlpProtocol: () => 'grpc',
|
|
30
|
+
getTelemetryOutfile: () => undefined,
|
|
31
|
+
getDebugMode: () => false,
|
|
32
|
+
getSessionId: () => 'test-session',
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
afterEach(async () => {
|
|
36
|
+
await shutdownTelemetry(mockConfig);
|
|
37
|
+
});
|
|
38
|
+
it('should use gRPC exporters when protocol is grpc', () => {
|
|
39
|
+
initializeTelemetry(mockConfig);
|
|
40
|
+
expect(OTLPTraceExporter).toHaveBeenCalledWith({
|
|
41
|
+
url: 'http://localhost:4317',
|
|
42
|
+
compression: 'gzip',
|
|
43
|
+
});
|
|
44
|
+
expect(OTLPLogExporter).toHaveBeenCalledWith({
|
|
45
|
+
url: 'http://localhost:4317',
|
|
46
|
+
compression: 'gzip',
|
|
47
|
+
});
|
|
48
|
+
expect(OTLPMetricExporter).toHaveBeenCalledWith({
|
|
49
|
+
url: 'http://localhost:4317',
|
|
50
|
+
compression: 'gzip',
|
|
51
|
+
});
|
|
52
|
+
expect(NodeSDK.prototype.start).toHaveBeenCalled();
|
|
53
|
+
});
|
|
54
|
+
it('should use HTTP exporters when protocol is http', () => {
|
|
55
|
+
vi.spyOn(mockConfig, 'getTelemetryEnabled').mockReturnValue(true);
|
|
56
|
+
vi.spyOn(mockConfig, 'getTelemetryOtlpProtocol').mockReturnValue('http');
|
|
57
|
+
vi.spyOn(mockConfig, 'getTelemetryOtlpEndpoint').mockReturnValue('http://localhost:4318');
|
|
58
|
+
initializeTelemetry(mockConfig);
|
|
59
|
+
expect(OTLPTraceExporterHttp).toHaveBeenCalledWith({
|
|
60
|
+
url: 'http://localhost:4318/',
|
|
61
|
+
});
|
|
62
|
+
expect(OTLPLogExporterHttp).toHaveBeenCalledWith({
|
|
63
|
+
url: 'http://localhost:4318/',
|
|
64
|
+
});
|
|
65
|
+
expect(OTLPMetricExporterHttp).toHaveBeenCalledWith({
|
|
66
|
+
url: 'http://localhost:4318/',
|
|
67
|
+
});
|
|
68
|
+
expect(NodeSDK.prototype.start).toHaveBeenCalled();
|
|
69
|
+
});
|
|
70
|
+
it('should parse gRPC endpoint correctly', () => {
|
|
71
|
+
vi.spyOn(mockConfig, 'getTelemetryOtlpEndpoint').mockReturnValue('https://my-collector.com');
|
|
72
|
+
initializeTelemetry(mockConfig);
|
|
73
|
+
expect(OTLPTraceExporter).toHaveBeenCalledWith(expect.objectContaining({ url: 'https://my-collector.com' }));
|
|
74
|
+
});
|
|
75
|
+
it('should parse HTTP endpoint correctly', () => {
|
|
76
|
+
vi.spyOn(mockConfig, 'getTelemetryOtlpProtocol').mockReturnValue('http');
|
|
77
|
+
vi.spyOn(mockConfig, 'getTelemetryOtlpEndpoint').mockReturnValue('https://my-collector.com');
|
|
78
|
+
initializeTelemetry(mockConfig);
|
|
79
|
+
expect(OTLPTraceExporterHttp).toHaveBeenCalledWith(expect.objectContaining({ url: 'https://my-collector.com/' }));
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=sdk.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.test.js","sourceRoot":"","sources":["../../../src/telemetry/sdk.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,13 @@ import { GenerateContentResponseUsageMetadata } from '@google/genai';
|
|
|
7
7
|
import { Config } from '../config/config.js';
|
|
8
8
|
import { CompletedToolCall } from '../core/coreToolScheduler.js';
|
|
9
9
|
import { ToolCallDecision } from './tool-call-decision.js';
|
|
10
|
-
export
|
|
10
|
+
export interface BaseTelemetryEvent {
|
|
11
|
+
'event.name': string;
|
|
12
|
+
/** Current timestamp in ISO 8601 format */
|
|
13
|
+
'event.timestamp': string;
|
|
14
|
+
}
|
|
15
|
+
type CommonFields = keyof BaseTelemetryEvent;
|
|
16
|
+
export declare class StartSessionEvent implements BaseTelemetryEvent {
|
|
11
17
|
'event.name': 'cli_config';
|
|
12
18
|
'event.timestamp': string;
|
|
13
19
|
model: string;
|
|
@@ -24,13 +30,13 @@ export declare class StartSessionEvent {
|
|
|
24
30
|
file_filtering_respect_git_ignore: boolean;
|
|
25
31
|
constructor(config: Config);
|
|
26
32
|
}
|
|
27
|
-
export declare class EndSessionEvent {
|
|
33
|
+
export declare class EndSessionEvent implements BaseTelemetryEvent {
|
|
28
34
|
'event.name': 'end_session';
|
|
29
35
|
'event.timestamp': string;
|
|
30
36
|
session_id?: string;
|
|
31
37
|
constructor(config?: Config);
|
|
32
38
|
}
|
|
33
|
-
export declare class UserPromptEvent {
|
|
39
|
+
export declare class UserPromptEvent implements BaseTelemetryEvent {
|
|
34
40
|
'event.name': 'user_prompt';
|
|
35
41
|
'event.timestamp': string;
|
|
36
42
|
prompt_length: number;
|
|
@@ -39,7 +45,7 @@ export declare class UserPromptEvent {
|
|
|
39
45
|
prompt?: string;
|
|
40
46
|
constructor(prompt_length: number, prompt_Id: string, auth_type?: string, prompt?: string);
|
|
41
47
|
}
|
|
42
|
-
export declare class ToolCallEvent {
|
|
48
|
+
export declare class ToolCallEvent implements BaseTelemetryEvent {
|
|
43
49
|
'event.name': 'tool_call';
|
|
44
50
|
'event.timestamp': string;
|
|
45
51
|
function_name: string;
|
|
@@ -55,7 +61,7 @@ export declare class ToolCallEvent {
|
|
|
55
61
|
};
|
|
56
62
|
constructor(call: CompletedToolCall);
|
|
57
63
|
}
|
|
58
|
-
export declare class ApiRequestEvent {
|
|
64
|
+
export declare class ApiRequestEvent implements BaseTelemetryEvent {
|
|
59
65
|
'event.name': 'api_request';
|
|
60
66
|
'event.timestamp': string;
|
|
61
67
|
model: string;
|
|
@@ -63,7 +69,7 @@ export declare class ApiRequestEvent {
|
|
|
63
69
|
request_text?: string;
|
|
64
70
|
constructor(model: string, prompt_id: string, request_text?: string);
|
|
65
71
|
}
|
|
66
|
-
export declare class ApiErrorEvent {
|
|
72
|
+
export declare class ApiErrorEvent implements BaseTelemetryEvent {
|
|
67
73
|
'event.name': 'api_error';
|
|
68
74
|
'event.timestamp': string;
|
|
69
75
|
model: string;
|
|
@@ -75,7 +81,7 @@ export declare class ApiErrorEvent {
|
|
|
75
81
|
auth_type?: string;
|
|
76
82
|
constructor(model: string, error: string, duration_ms: number, prompt_id: string, auth_type?: string, error_type?: string, status_code?: number | string);
|
|
77
83
|
}
|
|
78
|
-
export declare class ApiResponseEvent {
|
|
84
|
+
export declare class ApiResponseEvent implements BaseTelemetryEvent {
|
|
79
85
|
'event.name': 'api_response';
|
|
80
86
|
'event.timestamp': string;
|
|
81
87
|
model: string;
|
|
@@ -93,7 +99,7 @@ export declare class ApiResponseEvent {
|
|
|
93
99
|
auth_type?: string;
|
|
94
100
|
constructor(model: string, duration_ms: number, prompt_id: string, auth_type?: string, usage_data?: GenerateContentResponseUsageMetadata, response_text?: string, error?: string);
|
|
95
101
|
}
|
|
96
|
-
export declare class FlashFallbackEvent {
|
|
102
|
+
export declare class FlashFallbackEvent implements BaseTelemetryEvent {
|
|
97
103
|
'event.name': 'flash_fallback';
|
|
98
104
|
'event.timestamp': string;
|
|
99
105
|
auth_type: string;
|
|
@@ -104,14 +110,14 @@ export declare enum LoopType {
|
|
|
104
110
|
CHANTING_IDENTICAL_SENTENCES = "chanting_identical_sentences",
|
|
105
111
|
LLM_DETECTED_LOOP = "llm_detected_loop"
|
|
106
112
|
}
|
|
107
|
-
export declare class LoopDetectedEvent {
|
|
113
|
+
export declare class LoopDetectedEvent implements BaseTelemetryEvent {
|
|
108
114
|
'event.name': 'loop_detected';
|
|
109
115
|
'event.timestamp': string;
|
|
110
116
|
loop_type: LoopType;
|
|
111
117
|
prompt_id: string;
|
|
112
118
|
constructor(loop_type: LoopType, prompt_id: string);
|
|
113
119
|
}
|
|
114
|
-
export declare class NextSpeakerCheckEvent {
|
|
120
|
+
export declare class NextSpeakerCheckEvent implements BaseTelemetryEvent {
|
|
115
121
|
'event.name': 'next_speaker_check';
|
|
116
122
|
'event.timestamp': string;
|
|
117
123
|
prompt_id: string;
|
|
@@ -119,14 +125,26 @@ export declare class NextSpeakerCheckEvent {
|
|
|
119
125
|
result: string;
|
|
120
126
|
constructor(prompt_id: string, finish_reason: string, result: string);
|
|
121
127
|
}
|
|
122
|
-
export
|
|
128
|
+
export interface SlashCommandEvent extends BaseTelemetryEvent {
|
|
123
129
|
'event.name': 'slash_command';
|
|
124
130
|
'event.timestamp': string;
|
|
125
131
|
command: string;
|
|
126
132
|
subcommand?: string;
|
|
127
|
-
|
|
133
|
+
status?: SlashCommandStatus;
|
|
128
134
|
}
|
|
129
|
-
export declare
|
|
135
|
+
export declare function makeSlashCommandEvent({ command, subcommand, status, }: Omit<SlashCommandEvent, CommonFields>): SlashCommandEvent;
|
|
136
|
+
export declare enum SlashCommandStatus {
|
|
137
|
+
SUCCESS = "success",
|
|
138
|
+
ERROR = "error"
|
|
139
|
+
}
|
|
140
|
+
export interface ChatCompressionEvent extends BaseTelemetryEvent {
|
|
141
|
+
'event.name': 'chat_compression';
|
|
142
|
+
'event.timestamp': string;
|
|
143
|
+
tokens_before: number;
|
|
144
|
+
tokens_after: number;
|
|
145
|
+
}
|
|
146
|
+
export declare function makeChatCompressionEvent({ tokens_before, tokens_after, }: Omit<ChatCompressionEvent, CommonFields>): ChatCompressionEvent;
|
|
147
|
+
export declare class MalformedJsonResponseEvent implements BaseTelemetryEvent {
|
|
130
148
|
'event.name': 'malformed_json_response';
|
|
131
149
|
'event.timestamp': string;
|
|
132
150
|
model: string;
|
|
@@ -142,4 +160,12 @@ export declare class IdeConnectionEvent {
|
|
|
142
160
|
connection_type: IdeConnectionType;
|
|
143
161
|
constructor(connection_type: IdeConnectionType);
|
|
144
162
|
}
|
|
145
|
-
export
|
|
163
|
+
export declare class KittySequenceOverflowEvent {
|
|
164
|
+
'event.name': 'kitty_sequence_overflow';
|
|
165
|
+
'event.timestamp': string;
|
|
166
|
+
sequence_length: number;
|
|
167
|
+
truncated_sequence: string;
|
|
168
|
+
constructor(sequence_length: number, truncated_sequence: string);
|
|
169
|
+
}
|
|
170
|
+
export type TelemetryEvent = StartSessionEvent | EndSessionEvent | UserPromptEvent | ToolCallEvent | ApiRequestEvent | ApiErrorEvent | ApiResponseEvent | FlashFallbackEvent | LoopDetectedEvent | NextSpeakerCheckEvent | KittySequenceOverflowEvent | MalformedJsonResponseEvent | IdeConnectionEvent | SlashCommandEvent;
|
|
171
|
+
export {};
|
|
@@ -7,7 +7,7 @@ import { AuthType } from '../core/contentGenerator.js';
|
|
|
7
7
|
import { getDecisionFromOutcome, } from './tool-call-decision.js';
|
|
8
8
|
export class StartSessionEvent {
|
|
9
9
|
'event.name';
|
|
10
|
-
'event.timestamp';
|
|
10
|
+
'event.timestamp';
|
|
11
11
|
model;
|
|
12
12
|
embedding_model;
|
|
13
13
|
sandbox_enabled;
|
|
@@ -49,7 +49,7 @@ export class StartSessionEvent {
|
|
|
49
49
|
}
|
|
50
50
|
export class EndSessionEvent {
|
|
51
51
|
'event.name';
|
|
52
|
-
'event.timestamp';
|
|
52
|
+
'event.timestamp';
|
|
53
53
|
session_id;
|
|
54
54
|
constructor(config) {
|
|
55
55
|
this['event.name'] = 'end_session';
|
|
@@ -59,7 +59,7 @@ export class EndSessionEvent {
|
|
|
59
59
|
}
|
|
60
60
|
export class UserPromptEvent {
|
|
61
61
|
'event.name';
|
|
62
|
-
'event.timestamp';
|
|
62
|
+
'event.timestamp';
|
|
63
63
|
prompt_length;
|
|
64
64
|
prompt_id;
|
|
65
65
|
auth_type;
|
|
@@ -75,7 +75,7 @@ export class UserPromptEvent {
|
|
|
75
75
|
}
|
|
76
76
|
export class ToolCallEvent {
|
|
77
77
|
'event.name';
|
|
78
|
-
'event.timestamp';
|
|
78
|
+
'event.timestamp';
|
|
79
79
|
function_name;
|
|
80
80
|
function_args;
|
|
81
81
|
duration_ms;
|
|
@@ -117,7 +117,7 @@ export class ToolCallEvent {
|
|
|
117
117
|
}
|
|
118
118
|
export class ApiRequestEvent {
|
|
119
119
|
'event.name';
|
|
120
|
-
'event.timestamp';
|
|
120
|
+
'event.timestamp';
|
|
121
121
|
model;
|
|
122
122
|
prompt_id;
|
|
123
123
|
request_text;
|
|
@@ -131,7 +131,7 @@ export class ApiRequestEvent {
|
|
|
131
131
|
}
|
|
132
132
|
export class ApiErrorEvent {
|
|
133
133
|
'event.name';
|
|
134
|
-
'event.timestamp';
|
|
134
|
+
'event.timestamp';
|
|
135
135
|
model;
|
|
136
136
|
error;
|
|
137
137
|
error_type;
|
|
@@ -153,7 +153,7 @@ export class ApiErrorEvent {
|
|
|
153
153
|
}
|
|
154
154
|
export class ApiResponseEvent {
|
|
155
155
|
'event.name';
|
|
156
|
-
'event.timestamp';
|
|
156
|
+
'event.timestamp';
|
|
157
157
|
model;
|
|
158
158
|
status_code;
|
|
159
159
|
duration_ms;
|
|
@@ -187,7 +187,7 @@ export class ApiResponseEvent {
|
|
|
187
187
|
}
|
|
188
188
|
export class FlashFallbackEvent {
|
|
189
189
|
'event.name';
|
|
190
|
-
'event.timestamp';
|
|
190
|
+
'event.timestamp';
|
|
191
191
|
auth_type;
|
|
192
192
|
constructor(auth_type) {
|
|
193
193
|
this['event.name'] = 'flash_fallback';
|
|
@@ -203,7 +203,7 @@ export var LoopType;
|
|
|
203
203
|
})(LoopType || (LoopType = {}));
|
|
204
204
|
export class LoopDetectedEvent {
|
|
205
205
|
'event.name';
|
|
206
|
-
'event.timestamp';
|
|
206
|
+
'event.timestamp';
|
|
207
207
|
loop_type;
|
|
208
208
|
prompt_id;
|
|
209
209
|
constructor(loop_type, prompt_id) {
|
|
@@ -215,7 +215,7 @@ export class LoopDetectedEvent {
|
|
|
215
215
|
}
|
|
216
216
|
export class NextSpeakerCheckEvent {
|
|
217
217
|
'event.name';
|
|
218
|
-
'event.timestamp';
|
|
218
|
+
'event.timestamp';
|
|
219
219
|
prompt_id;
|
|
220
220
|
finish_reason;
|
|
221
221
|
result;
|
|
@@ -227,21 +227,31 @@ export class NextSpeakerCheckEvent {
|
|
|
227
227
|
this.result = result;
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
|
-
export
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
230
|
+
export function makeSlashCommandEvent({ command, subcommand, status, }) {
|
|
231
|
+
return {
|
|
232
|
+
'event.name': 'slash_command',
|
|
233
|
+
'event.timestamp': new Date().toISOString(),
|
|
234
|
+
command,
|
|
235
|
+
subcommand,
|
|
236
|
+
status,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
export var SlashCommandStatus;
|
|
240
|
+
(function (SlashCommandStatus) {
|
|
241
|
+
SlashCommandStatus["SUCCESS"] = "success";
|
|
242
|
+
SlashCommandStatus["ERROR"] = "error";
|
|
243
|
+
})(SlashCommandStatus || (SlashCommandStatus = {}));
|
|
244
|
+
export function makeChatCompressionEvent({ tokens_before, tokens_after, }) {
|
|
245
|
+
return {
|
|
246
|
+
'event.name': 'chat_compression',
|
|
247
|
+
'event.timestamp': new Date().toISOString(),
|
|
248
|
+
tokens_before,
|
|
249
|
+
tokens_after,
|
|
250
|
+
};
|
|
241
251
|
}
|
|
242
252
|
export class MalformedJsonResponseEvent {
|
|
243
253
|
'event.name';
|
|
244
|
-
'event.timestamp';
|
|
254
|
+
'event.timestamp';
|
|
245
255
|
model;
|
|
246
256
|
constructor(model) {
|
|
247
257
|
this['event.name'] = 'malformed_json_response';
|
|
@@ -256,7 +266,7 @@ export var IdeConnectionType;
|
|
|
256
266
|
})(IdeConnectionType || (IdeConnectionType = {}));
|
|
257
267
|
export class IdeConnectionEvent {
|
|
258
268
|
'event.name';
|
|
259
|
-
'event.timestamp';
|
|
269
|
+
'event.timestamp';
|
|
260
270
|
connection_type;
|
|
261
271
|
constructor(connection_type) {
|
|
262
272
|
this['event.name'] = 'ide_connection';
|
|
@@ -264,4 +274,17 @@ export class IdeConnectionEvent {
|
|
|
264
274
|
this.connection_type = connection_type;
|
|
265
275
|
}
|
|
266
276
|
}
|
|
277
|
+
export class KittySequenceOverflowEvent {
|
|
278
|
+
'event.name';
|
|
279
|
+
'event.timestamp'; // ISO 8601
|
|
280
|
+
sequence_length;
|
|
281
|
+
truncated_sequence;
|
|
282
|
+
constructor(sequence_length, truncated_sequence) {
|
|
283
|
+
this['event.name'] = 'kitty_sequence_overflow';
|
|
284
|
+
this['event.timestamp'] = new Date().toISOString();
|
|
285
|
+
this.sequence_length = sequence_length;
|
|
286
|
+
// Truncate to first 20 chars for logging (avoid logging sensitive data)
|
|
287
|
+
this.truncated_sequence = truncated_sequence.substring(0, 20);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
267
290
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/telemetry/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EACL,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/telemetry/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,21 +3,36 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { BaseDeclarativeTool, BaseToolInvocation, ToolCallConfirmationDetails, ToolInvocation, ToolResult } from '../tools/tools.js';
|
|
7
7
|
import { Schema } from '@google/genai';
|
|
8
|
+
import { ModifiableDeclarativeTool, ModifyContext } from '../tools/modifiable-tool.js';
|
|
8
9
|
/**
|
|
9
10
|
* A highly configurable mock tool for testing purposes.
|
|
10
11
|
*/
|
|
11
|
-
export declare class MockTool extends
|
|
12
|
+
export declare class MockTool extends BaseDeclarativeTool<{
|
|
12
13
|
[key: string]: unknown;
|
|
13
14
|
}, ToolResult> {
|
|
14
15
|
executeFn: import("vitest").Mock<(...args: any[]) => any>;
|
|
15
16
|
shouldConfirm: boolean;
|
|
16
17
|
constructor(name?: string, displayName?: string, description?: string, params?: Schema);
|
|
17
|
-
|
|
18
|
+
protected createInvocation(params: {
|
|
18
19
|
[key: string]: unknown;
|
|
19
|
-
}
|
|
20
|
-
shouldConfirmExecute(_params: {
|
|
20
|
+
}): ToolInvocation<{
|
|
21
21
|
[key: string]: unknown;
|
|
22
|
-
},
|
|
22
|
+
}, ToolResult>;
|
|
23
|
+
}
|
|
24
|
+
export declare class MockModifiableToolInvocation extends BaseToolInvocation<Record<string, unknown>, ToolResult> {
|
|
25
|
+
private readonly tool;
|
|
26
|
+
constructor(tool: MockModifiableTool, params: Record<string, unknown>);
|
|
27
|
+
execute(_abortSignal: AbortSignal): Promise<ToolResult>;
|
|
28
|
+
shouldConfirmExecute(_abortSignal: AbortSignal): Promise<ToolCallConfirmationDetails | false>;
|
|
29
|
+
getDescription(): string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Configurable mock modifiable tool for testing.
|
|
33
|
+
*/
|
|
34
|
+
export declare class MockModifiableTool extends MockTool implements ModifiableDeclarativeTool<Record<string, unknown>> {
|
|
35
|
+
constructor(name?: string);
|
|
36
|
+
getModifyContext(_abortSignal: AbortSignal): ModifyContext<Record<string, unknown>>;
|
|
37
|
+
protected createInvocation(params: Record<string, unknown>): ToolInvocation<Record<string, unknown>, ToolResult>;
|
|
23
38
|
}
|
|
@@ -4,38 +4,103 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { vi } from 'vitest';
|
|
7
|
-
import {
|
|
7
|
+
import { BaseDeclarativeTool, BaseToolInvocation, Kind, } from '../tools/tools.js';
|
|
8
8
|
import { Type } from '@google/genai';
|
|
9
|
+
class MockToolInvocation extends BaseToolInvocation {
|
|
10
|
+
tool;
|
|
11
|
+
constructor(tool, params) {
|
|
12
|
+
super(params);
|
|
13
|
+
this.tool = tool;
|
|
14
|
+
}
|
|
15
|
+
async execute(_abortSignal) {
|
|
16
|
+
const result = this.tool.executeFn(this.params);
|
|
17
|
+
return (result ?? {
|
|
18
|
+
llmContent: `Tool ${this.tool.name} executed successfully.`,
|
|
19
|
+
returnDisplay: `Tool ${this.tool.name} executed successfully.`,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async shouldConfirmExecute(_abortSignal) {
|
|
23
|
+
if (this.tool.shouldConfirm) {
|
|
24
|
+
return {
|
|
25
|
+
type: 'exec',
|
|
26
|
+
title: `Confirm ${this.tool.displayName}`,
|
|
27
|
+
command: this.tool.name,
|
|
28
|
+
rootCommand: this.tool.name,
|
|
29
|
+
onConfirm: async () => { },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
getDescription() {
|
|
35
|
+
return `A mock tool invocation for ${this.tool.name}`;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
9
38
|
/**
|
|
10
39
|
* A highly configurable mock tool for testing purposes.
|
|
11
40
|
*/
|
|
12
|
-
export class MockTool extends
|
|
41
|
+
export class MockTool extends BaseDeclarativeTool {
|
|
13
42
|
executeFn = vi.fn();
|
|
14
43
|
shouldConfirm = false;
|
|
15
44
|
constructor(name = 'mock-tool', displayName, description = 'A mock tool for testing.', params = {
|
|
16
45
|
type: Type.OBJECT,
|
|
17
46
|
properties: { param: { type: Type.STRING } },
|
|
18
47
|
}) {
|
|
19
|
-
super(name, displayName ?? name, description,
|
|
48
|
+
super(name, displayName ?? name, description, Kind.Other, params);
|
|
49
|
+
}
|
|
50
|
+
createInvocation(params) {
|
|
51
|
+
return new MockToolInvocation(this, params);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export class MockModifiableToolInvocation extends BaseToolInvocation {
|
|
55
|
+
tool;
|
|
56
|
+
constructor(tool, params) {
|
|
57
|
+
super(params);
|
|
58
|
+
this.tool = tool;
|
|
20
59
|
}
|
|
21
|
-
async execute(
|
|
22
|
-
const result = this.executeFn(params);
|
|
60
|
+
async execute(_abortSignal) {
|
|
61
|
+
const result = this.tool.executeFn(this.params);
|
|
23
62
|
return (result ?? {
|
|
24
|
-
llmContent: `Tool ${this.name} executed successfully.`,
|
|
25
|
-
returnDisplay: `Tool ${this.name} executed successfully.`,
|
|
63
|
+
llmContent: `Tool ${this.tool.name} executed successfully.`,
|
|
64
|
+
returnDisplay: `Tool ${this.tool.name} executed successfully.`,
|
|
26
65
|
});
|
|
27
66
|
}
|
|
28
|
-
async shouldConfirmExecute(
|
|
29
|
-
if (this.shouldConfirm) {
|
|
67
|
+
async shouldConfirmExecute(_abortSignal) {
|
|
68
|
+
if (this.tool.shouldConfirm) {
|
|
30
69
|
return {
|
|
31
|
-
type: '
|
|
32
|
-
title:
|
|
33
|
-
|
|
34
|
-
|
|
70
|
+
type: 'edit',
|
|
71
|
+
title: 'Confirm Mock Tool',
|
|
72
|
+
fileName: 'test.txt',
|
|
73
|
+
filePath: 'test.txt',
|
|
74
|
+
fileDiff: 'diff',
|
|
75
|
+
originalContent: 'originalContent',
|
|
76
|
+
newContent: 'newContent',
|
|
35
77
|
onConfirm: async () => { },
|
|
36
78
|
};
|
|
37
79
|
}
|
|
38
80
|
return false;
|
|
39
81
|
}
|
|
82
|
+
getDescription() {
|
|
83
|
+
return `A mock modifiable tool invocation for ${this.tool.name}`;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Configurable mock modifiable tool for testing.
|
|
88
|
+
*/
|
|
89
|
+
export class MockModifiableTool extends MockTool {
|
|
90
|
+
constructor(name = 'mockModifiableTool') {
|
|
91
|
+
super(name);
|
|
92
|
+
this.shouldConfirm = true;
|
|
93
|
+
}
|
|
94
|
+
getModifyContext(_abortSignal) {
|
|
95
|
+
return {
|
|
96
|
+
getFilePath: () => 'test.txt',
|
|
97
|
+
getCurrentContent: async () => 'old content',
|
|
98
|
+
getProposedContent: async () => 'new content',
|
|
99
|
+
createUpdatedParams: (_oldContent, modifiedProposedContent, _originalParams) => ({ newContent: modifiedProposedContent }),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
createInvocation(params) {
|
|
103
|
+
return new MockModifiableToolInvocation(this, params);
|
|
104
|
+
}
|
|
40
105
|
}
|
|
41
106
|
//# sourceMappingURL=tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/test-utils/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/test-utils/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/src/tools/edit.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import * as fs from 'fs';
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import * as Diff from 'diff';
|
|
9
|
-
import { BaseDeclarativeTool,
|
|
9
|
+
import { BaseDeclarativeTool, Kind, ToolConfirmationOutcome, } from './tools.js';
|
|
10
10
|
import { ToolErrorType } from './tool-error.js';
|
|
11
11
|
import { SchemaValidator } from '../utils/schemaValidator.js';
|
|
12
12
|
import { makeRelative, shortenPath } from '../utils/paths.js';
|
|
@@ -308,7 +308,7 @@ Expectation for required parameters:
|
|
|
308
308
|
3. \`new_string\` MUST be the exact literal text to replace \`old_string\` with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.
|
|
309
309
|
4. NEVER escape \`old_string\` or \`new_string\`, that would break the exact literal text requirement.
|
|
310
310
|
**Important:** If ANY of the above are not satisfied, the tool will fail. CRITICAL for \`old_string\`: Must uniquely identify the single instance to change. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail.
|
|
311
|
-
**Multiple replacements:** Set \`expected_replacements\` to the number of occurrences you want to replace. The tool will replace ALL occurrences that match \`old_string\` exactly. Ensure the number of replacements matches your expectation.`,
|
|
311
|
+
**Multiple replacements:** Set \`expected_replacements\` to the number of occurrences you want to replace. The tool will replace ALL occurrences that match \`old_string\` exactly. Ensure the number of replacements matches your expectation.`, Kind.Edit, {
|
|
312
312
|
properties: {
|
|
313
313
|
file_path: {
|
|
314
314
|
description: "The absolute path to the file to modify. Must start with '/'.",
|