@google/gemini-cli-core 0.1.18 → 0.1.19
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 +199 -132
- package/dist/google-gemini-cli-core-0.1.18.tgz +0 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/src/code_assist/converter.d.ts +3 -2
- package/dist/src/code_assist/converter.js +2 -2
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +48 -1
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +1 -1
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/server.test.js +4 -1
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/setup.js +4 -4
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/config/config.d.ts +19 -0
- package/dist/src/config/config.js +29 -5
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +8 -0
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/core/client.d.ts +5 -4
- package/dist/src/core/client.js +162 -116
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +275 -30
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +3 -2
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +3 -2
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +21 -8
- package/dist/src/core/coreToolScheduler.js +170 -61
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +181 -37
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +7 -6
- package/dist/src/core/geminiChat.js +43 -43
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/logger.d.ts +1 -0
- package/dist/src/core/logger.js +18 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +29 -0
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +29 -0
- package/dist/src/core/loggingContentGenerator.js +97 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +20 -1
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +7 -31
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/subagent.d.ts +230 -0
- package/dist/src/core/subagent.js +447 -0
- package/dist/src/core/subagent.js.map +1 -0
- package/dist/src/core/subagent.test.d.ts +6 -0
- package/dist/src/core/subagent.test.js +515 -0
- package/dist/src/core/subagent.test.js.map +1 -0
- package/dist/src/core/turn.js +1 -0
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +4 -0
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +8 -1
- package/dist/src/ide/detect-ide.js +40 -3
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +20 -1
- package/dist/src/ide/ide-client.js +144 -18
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-installer.js +20 -1
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +37 -2
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +95 -0
- package/dist/src/ide/ideContext.js +45 -0
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/mcp/google-auth-provider.js +9 -0
- package/dist/src/mcp/google-auth-provider.js.map +1 -1
- package/dist/src/mcp/google-auth-provider.test.js +45 -10
- package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.js +14 -11
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +191 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +29 -9
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +8 -0
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +27 -2
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +187 -58
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +6 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +186 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +8 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js +7 -2
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +7 -2
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +3 -2
- package/dist/src/telemetry/metrics.js +7 -1
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +50 -0
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
- package/dist/src/telemetry/tool-call-decision.js +29 -0
- package/dist/src/telemetry/tool-call-decision.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +4 -7
- package/dist/src/telemetry/types.js +17 -21
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +4 -1
- package/dist/src/telemetry/uiTelemetry.js +3 -1
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +13 -2
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/tools.d.ts +23 -0
- package/dist/src/test-utils/tools.js +41 -0
- package/dist/src/test-utils/tools.js.map +1 -0
- package/dist/src/tools/diffOptions.d.ts +2 -0
- package/dist/src/tools/diffOptions.js +28 -0
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/diffOptions.test.d.ts +6 -0
- package/dist/src/tools/diffOptions.test.js +119 -0
- package/dist/src/tools/diffOptions.test.js.map +1 -0
- package/dist/src/tools/edit.d.ts +9 -33
- package/dist/src/tools/edit.js +143 -132
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +117 -51
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +3 -10
- package/dist/src/tools/glob.js +85 -89
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +22 -12
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +3 -35
- package/dist/src/tools/grep.js +111 -83
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +40 -23
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.js +8 -9
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +14 -3
- package/dist/src/tools/mcp-client.js +82 -6
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +340 -5
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +3 -8
- package/dist/src/tools/mcp-tool.js +5 -18
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +2 -2
- package/dist/src/tools/memoryTool.js +5 -5
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +10 -1
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/modifiable-tool.d.ts +8 -5
- package/dist/src/tools/modifiable-tool.js +4 -1
- package/dist/src/tools/modifiable-tool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +3 -3
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/read-file.d.ts +4 -6
- package/dist/src/tools/read-file.js +92 -45
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +192 -130
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.js +25 -20
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +22 -11
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/shell.js +11 -7
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +21 -0
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +4 -0
- package/dist/src/tools/tool-error.js +4 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +12 -20
- package/dist/src/tools/tool-registry.js +23 -76
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +19 -192
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +144 -43
- package/dist/src/tools/tools.js +181 -11
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.d.ts +6 -0
- package/dist/src/tools/tools.test.js +117 -0
- package/dist/src/tools/tools.test.js.map +1 -0
- package/dist/src/tools/web-fetch.js +3 -4
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search.js +1 -1
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +6 -2
- package/dist/src/tools/write-file.js +85 -20
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +113 -8
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.test.js +28 -56
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
- package/dist/src/utils/editCorrector.js +8 -9
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/environmentContext.d.ts +21 -0
- package/dist/src/utils/environmentContext.js +90 -0
- package/dist/src/utils/environmentContext.js.map +1 -0
- package/dist/src/utils/environmentContext.test.d.ts +6 -0
- package/dist/src/utils/environmentContext.test.js +139 -0
- package/dist/src/utils/environmentContext.test.js.map +1 -0
- package/dist/src/utils/fileUtils.d.ts +7 -0
- package/dist/src/utils/fileUtils.js +15 -12
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +6 -5
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/crawlCache.d.ts +1 -1
- package/dist/src/utils/filesearch/crawlCache.js +4 -1
- package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
- package/dist/src/utils/filesearch/crawlCache.test.js +10 -0
- package/dist/src/utils/filesearch/crawlCache.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +2 -0
- package/dist/src/utils/filesearch/fileSearch.js +32 -7
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +139 -0
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.js +4 -1
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.js +5 -6
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.test.js +2 -2
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/schemaValidator.d.ts +1 -8
- package/dist/src/utils/schemaValidator.js +1 -32
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/dist/google-gemini-cli-core-0.1.17.tgz +0 -0
|
@@ -7,29 +7,7 @@
|
|
|
7
7
|
import { describe, it, expect, vi } from 'vitest';
|
|
8
8
|
import { CoreToolScheduler, convertToFunctionResponse, } from './coreToolScheduler.js';
|
|
9
9
|
import { BaseTool, ToolConfirmationOutcome, Icon, ApprovalMode, } from '../index.js';
|
|
10
|
-
|
|
11
|
-
shouldConfirm = false;
|
|
12
|
-
executeFn = vi.fn();
|
|
13
|
-
constructor(name = 'mockTool') {
|
|
14
|
-
super(name, name, 'A mock tool', Icon.Hammer, {});
|
|
15
|
-
}
|
|
16
|
-
async shouldConfirmExecute(_params, _abortSignal) {
|
|
17
|
-
if (this.shouldConfirm) {
|
|
18
|
-
return {
|
|
19
|
-
type: 'exec',
|
|
20
|
-
title: 'Confirm Mock Tool',
|
|
21
|
-
command: 'do_thing',
|
|
22
|
-
rootCommand: 'do_thing',
|
|
23
|
-
onConfirm: async () => { },
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
async execute(params, _abortSignal) {
|
|
29
|
-
this.executeFn(params);
|
|
30
|
-
return { llmContent: 'Tool executed', returnDisplay: 'Tool executed' };
|
|
31
|
-
}
|
|
32
|
-
}
|
|
10
|
+
import { MockTool } from '../test-utils/tools.js';
|
|
33
11
|
class MockModifiableTool extends MockTool {
|
|
34
12
|
constructor(name = 'mockModifiableTool') {
|
|
35
13
|
super(name);
|
|
@@ -43,12 +21,13 @@ class MockModifiableTool extends MockTool {
|
|
|
43
21
|
createUpdatedParams: (_oldContent, modifiedProposedContent, _originalParams) => ({ newContent: modifiedProposedContent }),
|
|
44
22
|
};
|
|
45
23
|
}
|
|
46
|
-
async shouldConfirmExecute(
|
|
24
|
+
async shouldConfirmExecute() {
|
|
47
25
|
if (this.shouldConfirm) {
|
|
48
26
|
return {
|
|
49
27
|
type: 'edit',
|
|
50
28
|
title: 'Confirm Mock Tool',
|
|
51
29
|
fileName: 'test.txt',
|
|
30
|
+
filePath: 'test.txt',
|
|
52
31
|
fileDiff: 'diff',
|
|
53
32
|
originalContent: 'originalContent',
|
|
54
33
|
newContent: 'newContent',
|
|
@@ -62,14 +41,15 @@ describe('CoreToolScheduler', () => {
|
|
|
62
41
|
it('should cancel a tool call if the signal is aborted before confirmation', async () => {
|
|
63
42
|
const mockTool = new MockTool();
|
|
64
43
|
mockTool.shouldConfirm = true;
|
|
44
|
+
const declarativeTool = mockTool;
|
|
65
45
|
const toolRegistry = {
|
|
66
|
-
getTool: () =>
|
|
46
|
+
getTool: () => declarativeTool,
|
|
67
47
|
getFunctionDeclarations: () => [],
|
|
68
48
|
tools: new Map(),
|
|
69
49
|
discovery: {},
|
|
70
50
|
registerTool: () => { },
|
|
71
|
-
getToolByName: () =>
|
|
72
|
-
getToolByDisplayName: () =>
|
|
51
|
+
getToolByName: () => declarativeTool,
|
|
52
|
+
getToolByDisplayName: () => declarativeTool,
|
|
73
53
|
getTools: () => [],
|
|
74
54
|
discoverTools: async () => { },
|
|
75
55
|
getAllTools: () => [],
|
|
@@ -116,14 +96,15 @@ describe('CoreToolScheduler', () => {
|
|
|
116
96
|
describe('CoreToolScheduler with payload', () => {
|
|
117
97
|
it('should update args and diff and execute tool when payload is provided', async () => {
|
|
118
98
|
const mockTool = new MockModifiableTool();
|
|
99
|
+
const declarativeTool = mockTool;
|
|
119
100
|
const toolRegistry = {
|
|
120
|
-
getTool: () =>
|
|
101
|
+
getTool: () => declarativeTool,
|
|
121
102
|
getFunctionDeclarations: () => [],
|
|
122
103
|
tools: new Map(),
|
|
123
104
|
discovery: {},
|
|
124
105
|
registerTool: () => { },
|
|
125
|
-
getToolByName: () =>
|
|
126
|
-
getToolByDisplayName: () =>
|
|
106
|
+
getToolByName: () => declarativeTool,
|
|
107
|
+
getToolByDisplayName: () => declarativeTool,
|
|
127
108
|
getTools: () => [],
|
|
128
109
|
discoverTools: async () => { },
|
|
129
110
|
getAllTools: () => [],
|
|
@@ -154,7 +135,7 @@ describe('CoreToolScheduler with payload', () => {
|
|
|
154
135
|
prompt_id: 'prompt-id-2',
|
|
155
136
|
};
|
|
156
137
|
await scheduler.schedule([request], abortController.signal);
|
|
157
|
-
const confirmationDetails = await mockTool.shouldConfirmExecute(
|
|
138
|
+
const confirmationDetails = await mockTool.shouldConfirmExecute();
|
|
158
139
|
if (confirmationDetails) {
|
|
159
140
|
const payload = { newContent: 'final version' };
|
|
160
141
|
await scheduler.handleConfirmationResponse('1', confirmationDetails.onConfirm, ToolConfirmationOutcome.ProceedOnce, abortController.signal, payload);
|
|
@@ -334,6 +315,7 @@ describe('CoreToolScheduler edit cancellation', () => {
|
|
|
334
315
|
type: 'edit',
|
|
335
316
|
title: 'Confirm Edit',
|
|
336
317
|
fileName: 'test.txt',
|
|
318
|
+
filePath: 'test.txt',
|
|
337
319
|
fileDiff: '--- test.txt\n+++ test.txt\n@@ -1,1 +1,1 @@\n-old content\n+new content',
|
|
338
320
|
originalContent: 'old content',
|
|
339
321
|
newContent: 'new content',
|
|
@@ -348,14 +330,15 @@ describe('CoreToolScheduler edit cancellation', () => {
|
|
|
348
330
|
}
|
|
349
331
|
}
|
|
350
332
|
const mockEditTool = new MockEditTool();
|
|
333
|
+
const declarativeTool = mockEditTool;
|
|
351
334
|
const toolRegistry = {
|
|
352
|
-
getTool: () =>
|
|
335
|
+
getTool: () => declarativeTool,
|
|
353
336
|
getFunctionDeclarations: () => [],
|
|
354
337
|
tools: new Map(),
|
|
355
338
|
discovery: {},
|
|
356
339
|
registerTool: () => { },
|
|
357
|
-
getToolByName: () =>
|
|
358
|
-
getToolByDisplayName: () =>
|
|
340
|
+
getToolByName: () => declarativeTool,
|
|
341
|
+
getToolByDisplayName: () => declarativeTool,
|
|
359
342
|
getTools: () => [],
|
|
360
343
|
discoverTools: async () => { },
|
|
361
344
|
getAllTools: () => [],
|
|
@@ -409,17 +392,22 @@ describe('CoreToolScheduler YOLO mode', () => {
|
|
|
409
392
|
it('should execute tool requiring confirmation directly without waiting', async () => {
|
|
410
393
|
// Arrange
|
|
411
394
|
const mockTool = new MockTool();
|
|
395
|
+
mockTool.executeFn.mockReturnValue({
|
|
396
|
+
llmContent: 'Tool executed',
|
|
397
|
+
returnDisplay: 'Tool executed',
|
|
398
|
+
});
|
|
412
399
|
// This tool would normally require confirmation.
|
|
413
400
|
mockTool.shouldConfirm = true;
|
|
401
|
+
const declarativeTool = mockTool;
|
|
414
402
|
const toolRegistry = {
|
|
415
|
-
getTool: () =>
|
|
416
|
-
getToolByName: () =>
|
|
403
|
+
getTool: () => declarativeTool,
|
|
404
|
+
getToolByName: () => declarativeTool,
|
|
417
405
|
// Other properties are not needed for this test but are included for type consistency.
|
|
418
406
|
getFunctionDeclarations: () => [],
|
|
419
407
|
tools: new Map(),
|
|
420
408
|
discovery: {},
|
|
421
409
|
registerTool: () => { },
|
|
422
|
-
getToolByDisplayName: () =>
|
|
410
|
+
getToolByDisplayName: () => declarativeTool,
|
|
423
411
|
getTools: () => [],
|
|
424
412
|
discoverTools: async () => { },
|
|
425
413
|
getAllTools: () => [],
|
|
@@ -478,4 +466,160 @@ describe('CoreToolScheduler YOLO mode', () => {
|
|
|
478
466
|
}
|
|
479
467
|
});
|
|
480
468
|
});
|
|
469
|
+
describe('CoreToolScheduler request queueing', () => {
|
|
470
|
+
it('should queue a request if another is running', async () => {
|
|
471
|
+
let resolveFirstCall;
|
|
472
|
+
const firstCallPromise = new Promise((resolve) => {
|
|
473
|
+
resolveFirstCall = resolve;
|
|
474
|
+
});
|
|
475
|
+
const mockTool = new MockTool();
|
|
476
|
+
mockTool.executeFn.mockImplementation(() => firstCallPromise);
|
|
477
|
+
const declarativeTool = mockTool;
|
|
478
|
+
const toolRegistry = {
|
|
479
|
+
getTool: () => declarativeTool,
|
|
480
|
+
getToolByName: () => declarativeTool,
|
|
481
|
+
getFunctionDeclarations: () => [],
|
|
482
|
+
tools: new Map(),
|
|
483
|
+
discovery: {},
|
|
484
|
+
registerTool: () => { },
|
|
485
|
+
getToolByDisplayName: () => declarativeTool,
|
|
486
|
+
getTools: () => [],
|
|
487
|
+
discoverTools: async () => { },
|
|
488
|
+
getAllTools: () => [],
|
|
489
|
+
getToolsByServer: () => [],
|
|
490
|
+
};
|
|
491
|
+
const onAllToolCallsComplete = vi.fn();
|
|
492
|
+
const onToolCallsUpdate = vi.fn();
|
|
493
|
+
const mockConfig = {
|
|
494
|
+
getSessionId: () => 'test-session-id',
|
|
495
|
+
getUsageStatisticsEnabled: () => true,
|
|
496
|
+
getDebugMode: () => false,
|
|
497
|
+
getApprovalMode: () => ApprovalMode.YOLO, // Use YOLO to avoid confirmation prompts
|
|
498
|
+
};
|
|
499
|
+
const scheduler = new CoreToolScheduler({
|
|
500
|
+
config: mockConfig,
|
|
501
|
+
toolRegistry: Promise.resolve(toolRegistry),
|
|
502
|
+
onAllToolCallsComplete,
|
|
503
|
+
onToolCallsUpdate,
|
|
504
|
+
getPreferredEditor: () => 'vscode',
|
|
505
|
+
onEditorClose: vi.fn(),
|
|
506
|
+
});
|
|
507
|
+
const abortController = new AbortController();
|
|
508
|
+
const request1 = {
|
|
509
|
+
callId: '1',
|
|
510
|
+
name: 'mockTool',
|
|
511
|
+
args: { a: 1 },
|
|
512
|
+
isClientInitiated: false,
|
|
513
|
+
prompt_id: 'prompt-1',
|
|
514
|
+
};
|
|
515
|
+
const request2 = {
|
|
516
|
+
callId: '2',
|
|
517
|
+
name: 'mockTool',
|
|
518
|
+
args: { b: 2 },
|
|
519
|
+
isClientInitiated: false,
|
|
520
|
+
prompt_id: 'prompt-2',
|
|
521
|
+
};
|
|
522
|
+
// Schedule the first call, which will pause execution.
|
|
523
|
+
scheduler.schedule([request1], abortController.signal);
|
|
524
|
+
// Wait for the first call to be in the 'executing' state.
|
|
525
|
+
await vi.waitFor(() => {
|
|
526
|
+
const calls = onToolCallsUpdate.mock.calls.at(-1)?.[0];
|
|
527
|
+
expect(calls?.[0]?.status).toBe('executing');
|
|
528
|
+
});
|
|
529
|
+
// Schedule the second call while the first is "running".
|
|
530
|
+
const schedulePromise2 = scheduler.schedule([request2], abortController.signal);
|
|
531
|
+
// Ensure the second tool call hasn't been executed yet.
|
|
532
|
+
expect(mockTool.executeFn).toHaveBeenCalledTimes(1);
|
|
533
|
+
expect(mockTool.executeFn).toHaveBeenCalledWith({ a: 1 });
|
|
534
|
+
// Complete the first tool call.
|
|
535
|
+
resolveFirstCall({
|
|
536
|
+
llmContent: 'First call complete',
|
|
537
|
+
returnDisplay: 'First call complete',
|
|
538
|
+
});
|
|
539
|
+
// Wait for the second schedule promise to resolve.
|
|
540
|
+
await schedulePromise2;
|
|
541
|
+
// Wait for the second call to be in the 'executing' state.
|
|
542
|
+
await vi.waitFor(() => {
|
|
543
|
+
const calls = onToolCallsUpdate.mock.calls.at(-1)?.[0];
|
|
544
|
+
expect(calls?.[0]?.status).toBe('executing');
|
|
545
|
+
});
|
|
546
|
+
// Now the second tool call should have been executed.
|
|
547
|
+
expect(mockTool.executeFn).toHaveBeenCalledTimes(2);
|
|
548
|
+
expect(mockTool.executeFn).toHaveBeenCalledWith({ b: 2 });
|
|
549
|
+
// Let the second call finish.
|
|
550
|
+
const secondCallResult = {
|
|
551
|
+
llmContent: 'Second call complete',
|
|
552
|
+
returnDisplay: 'Second call complete',
|
|
553
|
+
};
|
|
554
|
+
// Since the mock is shared, we need to resolve the current promise.
|
|
555
|
+
// In a real scenario, a new promise would be created for the second call.
|
|
556
|
+
resolveFirstCall(secondCallResult);
|
|
557
|
+
// Wait for the second completion.
|
|
558
|
+
await vi.waitFor(() => {
|
|
559
|
+
expect(onAllToolCallsComplete).toHaveBeenCalledTimes(2);
|
|
560
|
+
});
|
|
561
|
+
// Verify the completion callbacks were called correctly.
|
|
562
|
+
expect(onAllToolCallsComplete.mock.calls[0][0][0].status).toBe('success');
|
|
563
|
+
expect(onAllToolCallsComplete.mock.calls[1][0][0].status).toBe('success');
|
|
564
|
+
});
|
|
565
|
+
it('should handle two synchronous calls to schedule', async () => {
|
|
566
|
+
const mockTool = new MockTool();
|
|
567
|
+
const declarativeTool = mockTool;
|
|
568
|
+
const toolRegistry = {
|
|
569
|
+
getTool: () => declarativeTool,
|
|
570
|
+
getToolByName: () => declarativeTool,
|
|
571
|
+
getFunctionDeclarations: () => [],
|
|
572
|
+
tools: new Map(),
|
|
573
|
+
discovery: {},
|
|
574
|
+
registerTool: () => { },
|
|
575
|
+
getToolByDisplayName: () => declarativeTool,
|
|
576
|
+
getTools: () => [],
|
|
577
|
+
discoverTools: async () => { },
|
|
578
|
+
getAllTools: () => [],
|
|
579
|
+
getToolsByServer: () => [],
|
|
580
|
+
};
|
|
581
|
+
const onAllToolCallsComplete = vi.fn();
|
|
582
|
+
const onToolCallsUpdate = vi.fn();
|
|
583
|
+
const mockConfig = {
|
|
584
|
+
getSessionId: () => 'test-session-id',
|
|
585
|
+
getUsageStatisticsEnabled: () => true,
|
|
586
|
+
getDebugMode: () => false,
|
|
587
|
+
getApprovalMode: () => ApprovalMode.YOLO,
|
|
588
|
+
};
|
|
589
|
+
const scheduler = new CoreToolScheduler({
|
|
590
|
+
config: mockConfig,
|
|
591
|
+
toolRegistry: Promise.resolve(toolRegistry),
|
|
592
|
+
onAllToolCallsComplete,
|
|
593
|
+
onToolCallsUpdate,
|
|
594
|
+
getPreferredEditor: () => 'vscode',
|
|
595
|
+
onEditorClose: vi.fn(),
|
|
596
|
+
});
|
|
597
|
+
const abortController = new AbortController();
|
|
598
|
+
const request1 = {
|
|
599
|
+
callId: '1',
|
|
600
|
+
name: 'mockTool',
|
|
601
|
+
args: { a: 1 },
|
|
602
|
+
isClientInitiated: false,
|
|
603
|
+
prompt_id: 'prompt-1',
|
|
604
|
+
};
|
|
605
|
+
const request2 = {
|
|
606
|
+
callId: '2',
|
|
607
|
+
name: 'mockTool',
|
|
608
|
+
args: { b: 2 },
|
|
609
|
+
isClientInitiated: false,
|
|
610
|
+
prompt_id: 'prompt-2',
|
|
611
|
+
};
|
|
612
|
+
// Schedule two calls synchronously.
|
|
613
|
+
const schedulePromise1 = scheduler.schedule([request1], abortController.signal);
|
|
614
|
+
const schedulePromise2 = scheduler.schedule([request2], abortController.signal);
|
|
615
|
+
// Wait for both promises to resolve.
|
|
616
|
+
await Promise.all([schedulePromise1, schedulePromise2]);
|
|
617
|
+
// Ensure the tool was called twice with the correct arguments.
|
|
618
|
+
expect(mockTool.executeFn).toHaveBeenCalledTimes(2);
|
|
619
|
+
expect(mockTool.executeFn).toHaveBeenCalledWith({ a: 1 });
|
|
620
|
+
expect(mockTool.executeFn).toHaveBeenCalledWith({ b: 2 });
|
|
621
|
+
// Ensure completion callbacks were called twice.
|
|
622
|
+
expect(onAllToolCallsComplete).toHaveBeenCalledTimes(2);
|
|
623
|
+
});
|
|
624
|
+
});
|
|
481
625
|
//# sourceMappingURL=coreToolScheduler.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coreToolScheduler.test.js","sourceRoot":"","sources":["../../../src/core/coreToolScheduler.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coreToolScheduler.test.js","sourceRoot":"","sources":["../../../src/core/coreToolScheduler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { GenerateContentResponse, Content, GenerateContentConfig, SendMessageParameters,
|
|
6
|
+
import { GenerateContentResponse, Content, GenerateContentConfig, SendMessageParameters, Tool } from '@google/genai';
|
|
7
7
|
import { ContentGenerator } from './contentGenerator.js';
|
|
8
8
|
import { Config } from '../config/config.js';
|
|
9
|
+
import { StructuredError } from './turn.js';
|
|
9
10
|
/**
|
|
10
11
|
* Chat session that enables sending messages to the model with previous
|
|
11
12
|
* conversation context.
|
|
@@ -20,15 +21,12 @@ export declare class GeminiChat {
|
|
|
20
21
|
private history;
|
|
21
22
|
private sendPromise;
|
|
22
23
|
constructor(config: Config, contentGenerator: ContentGenerator, generationConfig?: GenerateContentConfig, history?: Content[]);
|
|
23
|
-
private _getRequestTextFromContents;
|
|
24
|
-
private _logApiRequest;
|
|
25
|
-
private _logApiResponse;
|
|
26
|
-
private _logApiError;
|
|
27
24
|
/**
|
|
28
25
|
* Handles falling back to Flash model when persistent 429 errors occur for OAuth users.
|
|
29
26
|
* Uses a fallback handler if provided by the config; otherwise, returns null.
|
|
30
27
|
*/
|
|
31
28
|
private handleFlashFallback;
|
|
29
|
+
setSystemInstruction(sysInstr: string): void;
|
|
32
30
|
/**
|
|
33
31
|
* Sends a message to the model and returns the response.
|
|
34
32
|
*
|
|
@@ -109,9 +107,12 @@ export declare class GeminiChat {
|
|
|
109
107
|
addHistory(content: Content): void;
|
|
110
108
|
setHistory(history: Content[]): void;
|
|
111
109
|
setTools(tools: Tool[]): void;
|
|
112
|
-
|
|
110
|
+
maybeIncludeSchemaDepthContext(error: StructuredError): Promise<void>;
|
|
113
111
|
private processStreamResponse;
|
|
114
112
|
private recordHistory;
|
|
115
113
|
private isTextContent;
|
|
116
114
|
private isThoughtContent;
|
|
117
115
|
}
|
|
116
|
+
/** Visible for Testing */
|
|
117
|
+
export declare function isSchemaDepthError(errorMessage: string): boolean;
|
|
118
|
+
export declare function isInvalidArgumentError(errorMessage: string): boolean;
|
|
@@ -9,9 +9,8 @@ import { createUserContent, } from '@google/genai';
|
|
|
9
9
|
import { retryWithBackoff } from '../utils/retry.js';
|
|
10
10
|
import { isFunctionResponse } from '../utils/messageInspectors.js';
|
|
11
11
|
import { AuthType } from './contentGenerator.js';
|
|
12
|
-
import { logApiRequest, logApiResponse, logApiError, } from '../telemetry/loggers.js';
|
|
13
|
-
import { ApiErrorEvent, ApiRequestEvent, ApiResponseEvent, } from '../telemetry/types.js';
|
|
14
12
|
import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
|
|
13
|
+
import { hasCycleInSchema } from '../tools/tools.js';
|
|
15
14
|
/**
|
|
16
15
|
* Returns true if the response is valid, false otherwise.
|
|
17
16
|
*/
|
|
@@ -115,21 +114,6 @@ export class GeminiChat {
|
|
|
115
114
|
this.history = history;
|
|
116
115
|
validateHistory(history);
|
|
117
116
|
}
|
|
118
|
-
_getRequestTextFromContents(contents) {
|
|
119
|
-
return JSON.stringify(contents);
|
|
120
|
-
}
|
|
121
|
-
async _logApiRequest(contents, model, prompt_id) {
|
|
122
|
-
const requestText = this._getRequestTextFromContents(contents);
|
|
123
|
-
logApiRequest(this.config, new ApiRequestEvent(model, prompt_id, requestText));
|
|
124
|
-
}
|
|
125
|
-
async _logApiResponse(durationMs, prompt_id, usageMetadata, responseText) {
|
|
126
|
-
logApiResponse(this.config, new ApiResponseEvent(this.config.getModel(), durationMs, prompt_id, this.config.getContentGeneratorConfig()?.authType, usageMetadata, responseText));
|
|
127
|
-
}
|
|
128
|
-
_logApiError(durationMs, error, prompt_id) {
|
|
129
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
130
|
-
const errorType = error instanceof Error ? error.name : 'unknown';
|
|
131
|
-
logApiError(this.config, new ApiErrorEvent(this.config.getModel(), errorMessage, durationMs, prompt_id, this.config.getContentGeneratorConfig()?.authType, errorType));
|
|
132
|
-
}
|
|
133
117
|
/**
|
|
134
118
|
* Handles falling back to Flash model when persistent 429 errors occur for OAuth users.
|
|
135
119
|
* Uses a fallback handler if provided by the config; otherwise, returns null.
|
|
@@ -166,6 +150,9 @@ export class GeminiChat {
|
|
|
166
150
|
}
|
|
167
151
|
return null;
|
|
168
152
|
}
|
|
153
|
+
setSystemInstruction(sysInstr) {
|
|
154
|
+
this.generationConfig.systemInstruction = sysInstr;
|
|
155
|
+
}
|
|
169
156
|
/**
|
|
170
157
|
* Sends a message to the model and returns the response.
|
|
171
158
|
*
|
|
@@ -190,8 +177,6 @@ export class GeminiChat {
|
|
|
190
177
|
await this.sendPromise;
|
|
191
178
|
const userContent = createUserContent(params.message);
|
|
192
179
|
const requestContents = this.getHistory(true).concat(userContent);
|
|
193
|
-
this._logApiRequest(requestContents, this.config.getModel(), prompt_id);
|
|
194
|
-
const startTime = Date.now();
|
|
195
180
|
let response;
|
|
196
181
|
try {
|
|
197
182
|
const apiCall = () => {
|
|
@@ -209,19 +194,20 @@ export class GeminiChat {
|
|
|
209
194
|
};
|
|
210
195
|
response = await retryWithBackoff(apiCall, {
|
|
211
196
|
shouldRetry: (error) => {
|
|
212
|
-
|
|
197
|
+
// Check for known error messages and codes.
|
|
198
|
+
if (error instanceof Error && error.message) {
|
|
199
|
+
if (isSchemaDepthError(error.message))
|
|
200
|
+
return false;
|
|
213
201
|
if (error.message.includes('429'))
|
|
214
202
|
return true;
|
|
215
203
|
if (error.message.match(/5\d{2}/))
|
|
216
204
|
return true;
|
|
217
205
|
}
|
|
218
|
-
return false;
|
|
206
|
+
return false; // Don't retry other errors by default
|
|
219
207
|
},
|
|
220
208
|
onPersistent429: async (authType, error) => await this.handleFlashFallback(authType, error),
|
|
221
209
|
authType: this.config.getContentGeneratorConfig()?.authType,
|
|
222
210
|
});
|
|
223
|
-
const durationMs = Date.now() - startTime;
|
|
224
|
-
await this._logApiResponse(durationMs, prompt_id, response.usageMetadata, JSON.stringify(response));
|
|
225
211
|
this.sendPromise = (async () => {
|
|
226
212
|
const outputContent = response.candidates?.[0]?.content;
|
|
227
213
|
// Because the AFC input contains the entire curated chat history in
|
|
@@ -244,8 +230,6 @@ export class GeminiChat {
|
|
|
244
230
|
return response;
|
|
245
231
|
}
|
|
246
232
|
catch (error) {
|
|
247
|
-
const durationMs = Date.now() - startTime;
|
|
248
|
-
this._logApiError(durationMs, error, prompt_id);
|
|
249
233
|
this.sendPromise = Promise.resolve();
|
|
250
234
|
throw error;
|
|
251
235
|
}
|
|
@@ -276,8 +260,6 @@ export class GeminiChat {
|
|
|
276
260
|
await this.sendPromise;
|
|
277
261
|
const userContent = createUserContent(params.message);
|
|
278
262
|
const requestContents = this.getHistory(true).concat(userContent);
|
|
279
|
-
this._logApiRequest(requestContents, this.config.getModel(), prompt_id);
|
|
280
|
-
const startTime = Date.now();
|
|
281
263
|
try {
|
|
282
264
|
const apiCall = () => {
|
|
283
265
|
const modelToUse = this.config.getModel();
|
|
@@ -298,8 +280,10 @@ export class GeminiChat {
|
|
|
298
280
|
// If errors occur mid-stream, this setup won't resume the stream; it will restart it.
|
|
299
281
|
const streamResponse = await retryWithBackoff(apiCall, {
|
|
300
282
|
shouldRetry: (error) => {
|
|
301
|
-
// Check
|
|
302
|
-
if (error && error.message) {
|
|
283
|
+
// Check for known error messages and codes.
|
|
284
|
+
if (error instanceof Error && error.message) {
|
|
285
|
+
if (isSchemaDepthError(error.message))
|
|
286
|
+
return false;
|
|
303
287
|
if (error.message.includes('429'))
|
|
304
288
|
return true;
|
|
305
289
|
if (error.message.match(/5\d{2}/))
|
|
@@ -316,12 +300,10 @@ export class GeminiChat {
|
|
|
316
300
|
this.sendPromise = Promise.resolve(streamResponse)
|
|
317
301
|
.then(() => undefined)
|
|
318
302
|
.catch(() => undefined);
|
|
319
|
-
const result = this.processStreamResponse(streamResponse, userContent
|
|
303
|
+
const result = this.processStreamResponse(streamResponse, userContent);
|
|
320
304
|
return result;
|
|
321
305
|
}
|
|
322
306
|
catch (error) {
|
|
323
|
-
const durationMs = Date.now() - startTime;
|
|
324
|
-
this._logApiError(durationMs, error, prompt_id);
|
|
325
307
|
this.sendPromise = Promise.resolve();
|
|
326
308
|
throw error;
|
|
327
309
|
}
|
|
@@ -377,14 +359,29 @@ export class GeminiChat {
|
|
|
377
359
|
setTools(tools) {
|
|
378
360
|
this.generationConfig.tools = tools;
|
|
379
361
|
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
.
|
|
385
|
-
|
|
362
|
+
async maybeIncludeSchemaDepthContext(error) {
|
|
363
|
+
// Check for potentially problematic cyclic tools with cyclic schemas
|
|
364
|
+
// and include a recommendation to remove potentially problematic tools.
|
|
365
|
+
if (isSchemaDepthError(error.message) ||
|
|
366
|
+
isInvalidArgumentError(error.message)) {
|
|
367
|
+
const tools = (await this.config.getToolRegistry()).getAllTools();
|
|
368
|
+
const cyclicSchemaTools = [];
|
|
369
|
+
for (const tool of tools) {
|
|
370
|
+
if ((tool.schema.parametersJsonSchema &&
|
|
371
|
+
hasCycleInSchema(tool.schema.parametersJsonSchema)) ||
|
|
372
|
+
(tool.schema.parameters && hasCycleInSchema(tool.schema.parameters))) {
|
|
373
|
+
cyclicSchemaTools.push(tool.displayName);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
if (cyclicSchemaTools.length > 0) {
|
|
377
|
+
const extraDetails = `\n\nThis error was probably caused by cyclic schema references in one of the following tools, try disabling them with excludeTools:\n\n - ` +
|
|
378
|
+
cyclicSchemaTools.join(`\n - `) +
|
|
379
|
+
`\n`;
|
|
380
|
+
error.message += extraDetails;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
386
383
|
}
|
|
387
|
-
async *processStreamResponse(streamResponse, inputContent
|
|
384
|
+
async *processStreamResponse(streamResponse, inputContent) {
|
|
388
385
|
const outputContent = [];
|
|
389
386
|
const chunks = [];
|
|
390
387
|
let errorOccurred = false;
|
|
@@ -406,19 +403,15 @@ export class GeminiChat {
|
|
|
406
403
|
}
|
|
407
404
|
catch (error) {
|
|
408
405
|
errorOccurred = true;
|
|
409
|
-
const durationMs = Date.now() - startTime;
|
|
410
|
-
this._logApiError(durationMs, error, prompt_id);
|
|
411
406
|
throw error;
|
|
412
407
|
}
|
|
413
408
|
if (!errorOccurred) {
|
|
414
|
-
const durationMs = Date.now() - startTime;
|
|
415
409
|
const allParts = [];
|
|
416
410
|
for (const content of outputContent) {
|
|
417
411
|
if (content.parts) {
|
|
418
412
|
allParts.push(...content.parts);
|
|
419
413
|
}
|
|
420
414
|
}
|
|
421
|
-
await this._logApiResponse(durationMs, prompt_id, this.getFinalUsageMetadata(chunks), JSON.stringify(chunks));
|
|
422
415
|
}
|
|
423
416
|
this.recordHistory(inputContent, outputContent);
|
|
424
417
|
}
|
|
@@ -506,4 +499,11 @@ export class GeminiChat {
|
|
|
506
499
|
content.parts[0].thought === true);
|
|
507
500
|
}
|
|
508
501
|
}
|
|
502
|
+
/** Visible for Testing */
|
|
503
|
+
export function isSchemaDepthError(errorMessage) {
|
|
504
|
+
return errorMessage.includes('maximum schema depth exceeded');
|
|
505
|
+
}
|
|
506
|
+
export function isInvalidArgumentError(errorMessage) {
|
|
507
|
+
return errorMessage.includes('Request contains an invalid argument');
|
|
508
|
+
}
|
|
509
509
|
//# sourceMappingURL=geminiChat.js.map
|