@google/gemini-cli-core 0.62.0-preview.0 → 0.63.0-nightly.20260926.g2fe7c2d3f
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/dist/docs/changelogs/index.md +16 -0
- package/dist/docs/changelogs/latest.md +34 -55
- package/dist/docs/changelogs/preview.md +65 -29
- package/dist/google-gemini-cli-core-0.63.0-nightly.20260923.gf50ba8608.tgz +0 -0
- package/dist/src/agents/local-executor.js +44 -6
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +10 -6
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/memory-leak-regression.test.d.ts +6 -0
- package/dist/src/agents/memory-leak-regression.test.js +314 -0
- package/dist/src/agents/memory-leak-regression.test.js.map +1 -0
- package/dist/src/context/chatCompressionService.d.ts +26 -0
- package/dist/src/context/chatCompressionService.js +190 -3
- package/dist/src/context/chatCompressionService.js.map +1 -1
- package/dist/src/context/chatCompressionService.test.js +350 -1
- package/dist/src/context/chatCompressionService.test.js.map +1 -1
- package/dist/src/core/client.js +13 -0
- package/dist/src/core/client.js.map +1 -1
- 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/policy/policy-engine.js +10 -3
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +63 -1
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/safety/built-in.js +12 -1
- package/dist/src/safety/built-in.js.map +1 -1
- package/dist/src/safety/built-in.test.js +53 -0
- package/dist/src/safety/built-in.test.js.map +1 -1
- package/dist/src/scheduler/scheduler.js +20 -1
- package/dist/src/scheduler/scheduler.js.map +1 -1
- package/dist/src/scheduler/scheduler.test.js +74 -0
- package/dist/src/scheduler/scheduler.test.js.map +1 -1
- package/dist/src/scheduler/tool-executor.js +67 -3
- package/dist/src/scheduler/tool-executor.js.map +1 -1
- package/dist/src/scheduler/tool-executor.test.js +143 -0
- package/dist/src/scheduler/tool-executor.test.js.map +1 -1
- package/dist/src/services/chatRecordingService.js +6 -1
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +36 -0
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +7 -1
- package/dist/src/services/shellExecutionService.js +76 -8
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +35 -4
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/tools/list-mcp-resources.js +2 -1
- package/dist/src/tools/list-mcp-resources.js.map +1 -1
- package/dist/src/tools/list-mcp-resources.test.js +2 -0
- package/dist/src/tools/list-mcp-resources.test.js.map +1 -1
- package/dist/src/tools/read-file.js +14 -6
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +26 -0
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-mcp-resource.js +4 -1
- package/dist/src/tools/read-mcp-resource.js.map +1 -1
- package/dist/src/tools/read-mcp-resource.test.js +21 -2
- package/dist/src/tools/read-mcp-resource.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +1 -0
- package/dist/src/tools/shell.js +29 -21
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +59 -3
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/shellBackgroundTools.integration.test.js +49 -0
- package/dist/src/tools/shellBackgroundTools.integration.test.js.map +1 -1
- package/dist/src/tools/web-search.js +2 -1
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/web-search.test.js +8 -4
- package/dist/src/tools/web-search.test.js.map +1 -1
- package/dist/src/utils/constants.d.ts +5 -0
- package/dist/src/utils/constants.js +5 -0
- package/dist/src/utils/constants.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +8 -1
- package/dist/src/utils/fileUtils.js +63 -7
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +119 -1
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/gitUtils.js +2 -3
- package/dist/src/utils/gitUtils.js.map +1 -1
- package/dist/src/utils/gitUtils.test.d.ts +6 -0
- package/dist/src/utils/gitUtils.test.js +194 -0
- package/dist/src/utils/gitUtils.test.js.map +1 -0
- package/dist/src/utils/paths.js +10 -2
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/paths.test.js +14 -0
- package/dist/src/utils/paths.test.js.map +1 -1
- package/dist/src/utils/security.d.ts +1 -0
- package/dist/src/utils/security.js +5 -3
- package/dist/src/utils/security.js.map +1 -1
- package/dist/src/utils/security.test.js +33 -3
- package/dist/src/utils/security.test.js.map +1 -1
- package/dist/src/utils/tool-utils.d.ts +16 -0
- package/dist/src/utils/tool-utils.js +113 -0
- package/dist/src/utils/tool-utils.js.map +1 -1
- package/dist/src/utils/tool-utils.test.js +150 -1
- package/dist/src/utils/tool-utils.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { expect, describe, it } from 'vitest';
|
|
7
|
-
import { doesToolInvocationMatch, getToolSuggestion } from './tool-utils.js';
|
|
7
|
+
import { doesToolInvocationMatch, getToolSuggestion, truncateToolOutput, truncateFunctionResponsePart, } from './tool-utils.js';
|
|
8
|
+
import { MAX_STORED_TOOL_OUTPUT_BYTES } from './constants.js';
|
|
8
9
|
import { ReadFileTool } from '../index.js';
|
|
9
10
|
import { createMockMessageBus } from '../test-utils/mock-message-bus.js';
|
|
10
11
|
describe('getToolSuggestion', () => {
|
|
@@ -85,4 +86,152 @@ describe('doesToolInvocationMatch', () => {
|
|
|
85
86
|
});
|
|
86
87
|
});
|
|
87
88
|
});
|
|
89
|
+
describe('truncateToolOutput', () => {
|
|
90
|
+
it('preserves text when within maxBytes limit', () => {
|
|
91
|
+
const input = 'short text';
|
|
92
|
+
expect(truncateToolOutput(input, 100)).toBe(input);
|
|
93
|
+
});
|
|
94
|
+
it('truncates ASCII text exceeding maxBytes and appends indicator', () => {
|
|
95
|
+
const input = 'a'.repeat(200);
|
|
96
|
+
const maxBytes = 100;
|
|
97
|
+
const result = truncateToolOutput(input, maxBytes);
|
|
98
|
+
expect(Buffer.byteLength(result, 'utf8')).toBeLessThanOrEqual(maxBytes);
|
|
99
|
+
expect(result).toContain('\n... [Tool output truncated to conserve memory]');
|
|
100
|
+
});
|
|
101
|
+
it('handles multi-byte graphemes cleanly without breaking clusters or creating replacement characters', () => {
|
|
102
|
+
// 👩👩👦👦 consists of 4 people emojis connected with Zero Width Joiner (\u200D), totaling 25 UTF-8 bytes.
|
|
103
|
+
const familyEmoji = '👩👩👦👦';
|
|
104
|
+
const accented = 'caffè';
|
|
105
|
+
const suffix = '\n... [Tool output truncated to conserve memory]';
|
|
106
|
+
const suffixBytes = Buffer.byteLength(suffix, 'utf8');
|
|
107
|
+
// Case 1: Not enough space for the full 25-byte emoji
|
|
108
|
+
// Available space for text is 10 bytes (< 25 bytes), input is 135 bytes
|
|
109
|
+
const inputLong = familyEmoji + ' extra text'.repeat(10);
|
|
110
|
+
const tightMaxBytes = suffixBytes + 10;
|
|
111
|
+
const resultTight = truncateToolOutput(inputLong, tightMaxBytes);
|
|
112
|
+
expect(resultTight).toBe(suffix);
|
|
113
|
+
expect(resultTight.includes('\uFFFD')).toBe(false);
|
|
114
|
+
expect(Buffer.byteLength(resultTight, 'utf8')).toBeLessThanOrEqual(tightMaxBytes);
|
|
115
|
+
// Case 2: Enough space for the emoji, but not enough for following text
|
|
116
|
+
const emojiBytes = Buffer.byteLength(familyEmoji, 'utf8');
|
|
117
|
+
const exactMaxBytes = suffixBytes + emojiBytes;
|
|
118
|
+
const resultExact = truncateToolOutput(inputLong, exactMaxBytes);
|
|
119
|
+
expect(resultExact).toBe(familyEmoji + suffix);
|
|
120
|
+
expect(resultExact.includes('\uFFFD')).toBe(false);
|
|
121
|
+
expect(Buffer.byteLength(resultExact, 'utf8')).toBeLessThanOrEqual(exactMaxBytes);
|
|
122
|
+
// Case 3: Large text with mixed emojis and accented characters
|
|
123
|
+
const largeMixed = `${familyEmoji} ${accented} `.repeat(2000);
|
|
124
|
+
const resultLarge = truncateToolOutput(largeMixed, MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
125
|
+
expect(Buffer.byteLength(resultLarge, 'utf8')).toBeLessThanOrEqual(MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
126
|
+
expect(resultLarge).toContain(suffix);
|
|
127
|
+
expect(resultLarge.includes('\uFFFD')).toBe(false);
|
|
128
|
+
expect(Buffer.from(resultLarge, 'utf8').toString('utf8')).toBe(resultLarge);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
describe('truncateFunctionResponsePart', () => {
|
|
132
|
+
it('recursively deep-truncates nested objects and arrays while leaving small values untouched', () => {
|
|
133
|
+
const largeA = 'A'.repeat(100_000);
|
|
134
|
+
const largeB = 'B'.repeat(100_000);
|
|
135
|
+
const largeC = 'C'.repeat(100_000);
|
|
136
|
+
const suffix = '\n... [Tool output truncated to conserve memory]';
|
|
137
|
+
const part = {
|
|
138
|
+
functionResponse: {
|
|
139
|
+
name: 'complexTool',
|
|
140
|
+
response: {
|
|
141
|
+
details: { logs: largeA, status: 'ok', count: 42 },
|
|
142
|
+
items: [largeB, 'small item', true],
|
|
143
|
+
deep: { a: [{ b: { c: largeC, flag: false } }] },
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
const truncatedPart = truncateFunctionResponsePart(part, MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
148
|
+
const res = truncatedPart.functionResponse?.response;
|
|
149
|
+
expect(res).toBeDefined();
|
|
150
|
+
// Nested object check: logs is truncated, status and count are untouched
|
|
151
|
+
const details = res['details'];
|
|
152
|
+
expect(typeof details.logs).toBe('string');
|
|
153
|
+
expect(details.logs.endsWith(suffix)).toBe(true);
|
|
154
|
+
expect(Buffer.byteLength(details.logs, 'utf8')).toBeLessThanOrEqual(MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
155
|
+
expect(details.status).toBe('ok');
|
|
156
|
+
expect(details.count).toBe(42);
|
|
157
|
+
// Nested array check: large string item is truncated, small item and boolean untouched
|
|
158
|
+
const items = res['items'];
|
|
159
|
+
const firstItem = items[0];
|
|
160
|
+
expect(typeof firstItem).toBe('string');
|
|
161
|
+
expect(firstItem.endsWith(suffix)).toBe(true);
|
|
162
|
+
expect(Buffer.byteLength(firstItem, 'utf8')).toBeLessThanOrEqual(MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
163
|
+
expect(items[1]).toBe('small item');
|
|
164
|
+
expect(items[2]).toBe(true);
|
|
165
|
+
// Deeply nested check: deep.a[0].b.c is truncated, flag is untouched
|
|
166
|
+
const deep = res['deep'];
|
|
167
|
+
const nestedC = deep.a[0].b.c;
|
|
168
|
+
expect(typeof nestedC).toBe('string');
|
|
169
|
+
expect(nestedC.endsWith(suffix)).toBe(true);
|
|
170
|
+
expect(Buffer.byteLength(nestedC, 'utf8')).toBeLessThanOrEqual(MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
171
|
+
expect(deep.a[0].b.flag).toBe(false);
|
|
172
|
+
});
|
|
173
|
+
it('returns original part reference when no nested truncation was needed', () => {
|
|
174
|
+
const part = {
|
|
175
|
+
functionResponse: {
|
|
176
|
+
name: 'smallTool',
|
|
177
|
+
response: {
|
|
178
|
+
details: { logs: 'short' },
|
|
179
|
+
items: ['item1', 123],
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
const result = truncateFunctionResponsePart(part, MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
184
|
+
expect(result).toBe(part);
|
|
185
|
+
});
|
|
186
|
+
it('leaves Buffer, Uint8Array, and non-plain object payloads intact without converting to dictionary objects', () => {
|
|
187
|
+
const bufferPayload = Buffer.from('raw binary content \x00\x01\x02');
|
|
188
|
+
const uint8Payload = new Uint8Array([10, 20, 30, 40]);
|
|
189
|
+
const datePayload = new Date(1700000000000);
|
|
190
|
+
const regexPayload = /test-pattern/gi;
|
|
191
|
+
const part = {
|
|
192
|
+
functionResponse: {
|
|
193
|
+
name: 'binaryTool',
|
|
194
|
+
response: {
|
|
195
|
+
buf: bufferPayload,
|
|
196
|
+
uint8: uint8Payload,
|
|
197
|
+
createdAt: datePayload,
|
|
198
|
+
pattern: regexPayload,
|
|
199
|
+
nested: {
|
|
200
|
+
subBuf: bufferPayload,
|
|
201
|
+
largeString: 'A'.repeat(100_000),
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
const result = truncateFunctionResponsePart(part, MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
207
|
+
const res = result.functionResponse?.response;
|
|
208
|
+
expect(res).toBeDefined();
|
|
209
|
+
// Verify instances are preserved and not turned into plain objects {}
|
|
210
|
+
expect(Buffer.isBuffer(res.buf)).toBe(true);
|
|
211
|
+
expect(Buffer.compare(res.buf, bufferPayload)).toBe(0);
|
|
212
|
+
expect(res.uint8 instanceof Uint8Array).toBe(true);
|
|
213
|
+
expect(Array.from(res.uint8)).toEqual([10, 20, 30, 40]);
|
|
214
|
+
expect(res.createdAt instanceof Date).toBe(true);
|
|
215
|
+
expect(res.createdAt.getTime()).toBe(1700000000000);
|
|
216
|
+
expect(res.pattern instanceof RegExp).toBe(true);
|
|
217
|
+
expect(res.pattern.source).toBe('test-pattern');
|
|
218
|
+
expect(Buffer.isBuffer(res.nested.subBuf)).toBe(true);
|
|
219
|
+
expect(res.nested.largeString.endsWith('\n... [Tool output truncated to conserve memory]')).toBe(true);
|
|
220
|
+
});
|
|
221
|
+
it('preserves primitive string response type when truncating', () => {
|
|
222
|
+
const largeStr = 'S'.repeat(100_000);
|
|
223
|
+
const part = {
|
|
224
|
+
functionResponse: {
|
|
225
|
+
name: 'stringTool',
|
|
226
|
+
response: largeStr,
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
const truncated = truncateFunctionResponsePart(part, MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
230
|
+
const res = truncated.functionResponse?.response;
|
|
231
|
+
expect(typeof res).toBe('string');
|
|
232
|
+
const strRes = res;
|
|
233
|
+
expect(strRes.endsWith('\n... [Tool output truncated to conserve memory]')).toBe(true);
|
|
234
|
+
expect(Buffer.byteLength(strRes, 'utf8')).toBeLessThanOrEqual(MAX_STORED_TOOL_OUTPUT_BYTES);
|
|
235
|
+
});
|
|
236
|
+
});
|
|
88
237
|
//# sourceMappingURL=tool-utils.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-utils.test.js","sourceRoot":"","sources":["../../../src/utils/tool-utils.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-utils.test.js","sourceRoot":"","sources":["../../../src/utils/tool-utils.test.ts"],"names":[],"mappings":"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"}
|