@google/gemini-cli-core 0.62.0-nightly.20260925.gbedef96ef → 0.62.0

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.
Files changed (37) hide show
  1. package/dist/docs/changelogs/index.md +0 -16
  2. package/dist/docs/changelogs/latest.md +55 -34
  3. package/dist/docs/changelogs/preview.md +3 -7
  4. package/dist/src/agents/local-executor.js +6 -44
  5. package/dist/src/agents/local-executor.js.map +1 -1
  6. package/dist/src/agents/local-executor.test.js +6 -10
  7. package/dist/src/agents/local-executor.test.js.map +1 -1
  8. package/dist/src/context/chatCompressionService.d.ts +0 -26
  9. package/dist/src/context/chatCompressionService.js +3 -190
  10. package/dist/src/context/chatCompressionService.js.map +1 -1
  11. package/dist/src/context/chatCompressionService.test.js +1 -350
  12. package/dist/src/context/chatCompressionService.test.js.map +1 -1
  13. package/dist/src/generated/git-commit.d.ts +2 -2
  14. package/dist/src/generated/git-commit.js +2 -2
  15. package/dist/src/generated/git-commit.js.map +1 -1
  16. package/dist/src/scheduler/tool-executor.js +3 -67
  17. package/dist/src/scheduler/tool-executor.js.map +1 -1
  18. package/dist/src/scheduler/tool-executor.test.js +0 -143
  19. package/dist/src/scheduler/tool-executor.test.js.map +1 -1
  20. package/dist/src/services/shellExecutionService.js +3 -37
  21. package/dist/src/services/shellExecutionService.js.map +1 -1
  22. package/dist/src/utils/constants.d.ts +0 -5
  23. package/dist/src/utils/constants.js +0 -5
  24. package/dist/src/utils/constants.js.map +1 -1
  25. package/dist/src/utils/gitUtils.js +0 -1
  26. package/dist/src/utils/gitUtils.js.map +1 -1
  27. package/dist/src/utils/tool-utils.d.ts +0 -16
  28. package/dist/src/utils/tool-utils.js +0 -113
  29. package/dist/src/utils/tool-utils.js.map +1 -1
  30. package/dist/src/utils/tool-utils.test.js +1 -150
  31. package/dist/src/utils/tool-utils.test.js.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +1 -1
  34. package/dist/google-gemini-cli-core-0.62.0-nightly.20260918.g9450ade79.tgz +0 -0
  35. package/dist/src/agents/memory-leak-regression.test.d.ts +0 -6
  36. package/dist/src/agents/memory-leak-regression.test.js +0 -314
  37. package/dist/src/agents/memory-leak-regression.test.js.map +0 -1
@@ -19,187 +19,7 @@ import { PreCompressTrigger } from '../hooks/types.js';
19
19
  * Default threshold for compression token count as a fraction of the model's
20
20
  * token limit. If the chat history exceeds this threshold, it will be compressed.
21
21
  */
22
- export const DEFAULT_COMPRESSION_TOKEN_THRESHOLD = 0.5;
23
- /**
24
- * Number of recent tool response turns that must be preserved at full fidelity.
25
- */
26
- export const RECENT_TURNS_PROTECTED = 3;
27
- /**
28
- * Tools that retrieve file content, documentation, or search results whose outputs
29
- * are essential for multi-step reasoning and must be exempted from collapsing into snippets.
30
- */
31
- export const RETRIEVAL_TOOL_NAMES_EXEMPT_FROM_COLLAPSE = new Set([
32
- 'read_file',
33
- 'read_many_files',
34
- 'get_internal_docs',
35
- 'read_mcp_resource',
36
- 'grep',
37
- 'rip_grep',
38
- 'glob',
39
- 'search_file_content',
40
- 'find_files',
41
- ]);
42
- export function isExemptRetrievalTool(toolName, exemptTools = RETRIEVAL_TOOL_NAMES_EXEMPT_FROM_COLLAPSE) {
43
- if (!toolName) {
44
- return false;
45
- }
46
- const normalized = toolName.toLowerCase();
47
- if (exemptTools.has(normalized)) {
48
- return true;
49
- }
50
- return (normalized.endsWith('read_file') ||
51
- normalized.endsWith('read_files') ||
52
- normalized.endsWith('read_many_files') ||
53
- normalized.endsWith('read_resource'));
54
- }
55
- export const COLLAPSED_FUNCTION_RESPONSE_MAX_BYTES = 2048; // 2 KB
56
- /**
57
- * Computes the total byte size of text and payload content across all turns in history.
58
- */
59
- export function calculateHistoryByteSize(history) {
60
- let bytes = 0;
61
- for (const turn of history) {
62
- if (turn.parts) {
63
- for (const part of turn.parts) {
64
- if (part.text) {
65
- bytes += Buffer.byteLength(part.text, 'utf8');
66
- }
67
- if (part.functionResponse?.response) {
68
- const resp = part.functionResponse.response;
69
- if (typeof resp === 'string') {
70
- bytes += Buffer.byteLength(resp, 'utf8');
71
- }
72
- else if (typeof resp === 'object' && resp !== null) {
73
- try {
74
- bytes += Buffer.byteLength(JSON.stringify(resp), 'utf8');
75
- }
76
- catch {
77
- // ignore JSON errors
78
- }
79
- }
80
- }
81
- if (part.inlineData?.data) {
82
- bytes += Buffer.byteLength(part.inlineData.data, 'utf8');
83
- }
84
- }
85
- }
86
- }
87
- return bytes;
88
- }
89
- const defaultGraphemeSegmenter = new Intl.Segmenter(undefined, {
90
- granularity: 'grapheme',
91
- });
92
- /**
93
- * Collapses detailed logs in older functionResponse payloads from completed previous turns.
94
- * The most recent N tool response turns (default 3) and retrieval tools (read_file, etc.)
95
- * are preserved intact for immediate context fidelity and multi-step reasoning.
96
- */
97
- export function collapseOlderFunctionResponses(history, maxBytesPerOldResponse = COLLAPSED_FUNCTION_RESPONSE_MAX_BYTES, segmenter = defaultGraphemeSegmenter, protectedTurns = RECENT_TURNS_PROTECTED, exemptTools = RETRIEVAL_TOOL_NAMES_EXEMPT_FROM_COLLAPSE) {
98
- // Find all indices of user messages that contain functionResponse
99
- const toolIndices = [];
100
- for (let i = 0; i < history.length; i++) {
101
- if (history[i].role === 'user' &&
102
- history[i].parts?.some((p) => !!p.functionResponse)) {
103
- toolIndices.push(i);
104
- }
105
- }
106
- if (toolIndices.length <= protectedTurns) {
107
- return history;
108
- }
109
- // The last N tool indices represent recent tool turns that must be protected.
110
- // Only prior tool indices are older completed turns eligible for collapsing.
111
- const cutoffToolIndex = toolIndices[toolIndices.length - protectedTurns];
112
- const collapseString = (str) => {
113
- const totalBytes = Buffer.byteLength(str, 'utf8');
114
- if (totalBytes <= maxBytesPerOldResponse) {
115
- return str;
116
- }
117
- const previewBytes = maxBytesPerOldResponse;
118
- let preview = '';
119
- let currentBytes = 0;
120
- for (const { segment } of segmenter.segment(str)) {
121
- const segmentBytes = Buffer.byteLength(segment, 'utf8');
122
- if (currentBytes + segmentBytes > previewBytes) {
123
- break;
124
- }
125
- preview += segment;
126
- currentBytes += segmentBytes;
127
- }
128
- const omittedBytes = totalBytes - currentBytes;
129
- return `${preview}\n... [Tool output collapsed from previous turn: ${omittedBytes} bytes omitted to conserve memory] ...`;
130
- };
131
- const collapseValue = (val) => {
132
- if (typeof val === 'string') {
133
- return collapseString(val);
134
- }
135
- if (Array.isArray(val)) {
136
- let arrayModified = false;
137
- const newVal = val.map((item) => {
138
- const collapsed = collapseValue(item);
139
- if (collapsed !== item) {
140
- arrayModified = true;
141
- }
142
- return collapsed;
143
- });
144
- return arrayModified ? newVal : val;
145
- }
146
- if (typeof val === 'object' && val !== null) {
147
- const proto = Object.getPrototypeOf(val);
148
- if (proto !== Object.prototype && proto !== null) {
149
- return val;
150
- }
151
- let objModified = false;
152
- const copy = {};
153
- for (const [k, v] of Object.entries(val)) {
154
- const collapsed = collapseValue(v);
155
- if (collapsed !== v) {
156
- objModified = true;
157
- }
158
- copy[k] = collapsed;
159
- }
160
- return objModified ? copy : val;
161
- }
162
- return val;
163
- };
164
- let modified = false;
165
- const newHistory = history.map((content, idx) => {
166
- // Only process older tool response turns before the protected recent window
167
- if (idx >= cutoffToolIndex || content.role !== 'user' || !content.parts) {
168
- return content;
169
- }
170
- let partsModified = false;
171
- const newParts = content.parts.map((part) => {
172
- if (!part.functionResponse?.response) {
173
- return part;
174
- }
175
- // Exempt retrieval and file reading tools from collapsing
176
- if (isExemptRetrievalTool(part.functionResponse.name, exemptTools)) {
177
- return part;
178
- }
179
- const resp = part.functionResponse.response;
180
- const newResp = collapseValue(resp);
181
- if (newResp !== resp) {
182
- partsModified = true;
183
- return {
184
- ...part,
185
- functionResponse: {
186
- // eslint-disable-next-line @typescript-eslint/no-misused-spread
187
- ...part.functionResponse,
188
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
189
- response: newResp,
190
- },
191
- };
192
- }
193
- return part;
194
- });
195
- if (partsModified) {
196
- modified = true;
197
- return { ...content, parts: newParts };
198
- }
199
- return content;
200
- });
201
- return modified ? newHistory : history;
202
- }
22
+ const DEFAULT_COMPRESSION_TOKEN_THRESHOLD = 0.5;
203
23
  /**
204
24
  * The fraction of the latest chat history to keep. A value of 0.3
205
25
  * means that only the last 30% of the chat history will be kept after compression.
@@ -382,16 +202,12 @@ export class ChatCompressionService {
382
202
  // This fires for both manual and auto compression attempts
383
203
  const trigger = force ? PreCompressTrigger.Manual : PreCompressTrigger.Auto;
384
204
  await config.getHookSystem()?.firePreCompressEvent(trigger);
385
- const lastPromptTokenCount = chat.getLastPromptTokenCount();
386
- const originalTokenCount = lastPromptTokenCount > 0
387
- ? lastPromptTokenCount
388
- : estimateTokenCountSync(curatedHistory.flatMap((c) => c.parts || []));
205
+ const originalTokenCount = chat.getLastPromptTokenCount();
389
206
  // Don't compress if not forced and we are under the limit.
390
207
  if (!force) {
391
208
  const threshold = (await config.getCompressionThreshold()) ??
392
209
  DEFAULT_COMPRESSION_TOKEN_THRESHOLD;
393
- const isOverModelThreshold = originalTokenCount >= threshold * tokenLimit(model);
394
- if (!isOverModelThreshold) {
210
+ if (originalTokenCount < threshold * tokenLimit(model)) {
395
211
  return {
396
212
  newHistory: null,
397
213
  info: {
@@ -542,9 +358,6 @@ export class ChatCompressionService {
542
358
  };
543
359
  }
544
360
  else {
545
- // Explicitly dereference old history slices so V8 GC can immediately reclaim memory
546
- historyToCompressTruncated.length = 0;
547
- originalHistoryToCompress.length = 0;
548
361
  return {
549
362
  newHistory: extraHistory,
550
363
  info: {
@@ -1 +1 @@
1
- {"version":3,"file":"chatCompressionService.js","sourceRoot":"","sources":["../../../src/context/chatCompressionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatCompressionService.js","sourceRoot":"","sources":["../../../src/context/chatCompressionService.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
- import { ChatCompressionService, findCompressSplitPoint, modelStringToModelConfigAlias, collapseOlderFunctionResponses, RECENT_TURNS_PROTECTED, } from './chatCompressionService.js';
7
+ import { ChatCompressionService, findCompressSplitPoint, modelStringToModelConfigAlias, } from './chatCompressionService.js';
8
8
  import { CompressionStatus } from '../core/turn.js';
9
9
  import * as fileUtils from '../utils/fileUtils.js';
10
10
  import { getInitialChatHistory } from '../utils/environmentContext.js';
@@ -158,7 +158,6 @@ describe('ChatCompressionService', () => {
158
158
  getApprovedPlanPath: vi.fn().mockReturnValue('/path/to/plan.md'),
159
159
  };
160
160
  vi.mocked(getInitialChatHistory).mockImplementation(async (_config, extraHistory) => (extraHistory ? [...extraHistory] : []));
161
- vi.mocked(tokenLimit).mockReturnValue(1_000_000);
162
161
  });
163
162
  afterEach(() => {
164
163
  vi.restoreAllMocks();
@@ -615,353 +614,5 @@ describe('ChatCompressionService', () => {
615
614
  expect(summarizerGrepResponse?.response?.['output']).toContain('Output too large.');
616
615
  });
617
616
  });
618
- describe('collapseOlderFunctionResponses', () => {
619
- const createRecentToolTurns = (count = RECENT_TURNS_PROTECTED) => {
620
- const turns = [];
621
- for (let i = 1; i <= count; i++) {
622
- turns.push({
623
- role: 'model',
624
- parts: [{ text: `Intermediate model response ${i}` }],
625
- }, {
626
- role: 'user',
627
- parts: [
628
- {
629
- functionResponse: {
630
- name: 'shell',
631
- response: { output: `Recent tool response ${i}` },
632
- },
633
- },
634
- ],
635
- });
636
- }
637
- return turns;
638
- };
639
- it('truncates older responses on valid grapheme boundaries with multi-byte characters and emojis', () => {
640
- // 🔥 is a 4-byte emoji (\uD83D\uDD25)
641
- // Romanian diacritics: ă (2 bytes), î (2 bytes), ș (2 bytes), ț (2 bytes), â (2 bytes)
642
- const diacritics = 'ăîșțâ';
643
- const emojis = '🔥'.repeat(300);
644
- const multiBytePayload = `${diacritics} ${emojis} `.repeat(10); // > 12 KB
645
- const history = [
646
- {
647
- role: 'user',
648
- parts: [
649
- {
650
- functionResponse: {
651
- name: 'shell',
652
- response: { output: multiBytePayload },
653
- },
654
- },
655
- ],
656
- },
657
- ...createRecentToolTurns(3),
658
- ];
659
- const collapsedHistory = collapseOlderFunctionResponses(history);
660
- const oldResponse = collapsedHistory[0].parts?.[0]?.functionResponse
661
- ?.response;
662
- expect(oldResponse).toBeDefined();
663
- expect(oldResponse.output).toContain('[Tool output collapsed from previous turn:');
664
- // Extract the preview portion before the collapse indicator
665
- const preview = oldResponse.output.split('\n... [Tool output collapsed')[0];
666
- // Assert preview does not contain replacement character (\uFFFD)
667
- expect(preview.includes('\uFFFD')).toBe(false);
668
- // Assert preview contains no corrupt/unpaired surrogate halves (\uD800–\uDFFF)
669
- const hasLoneSurrogates = /(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])/.test(preview);
670
- expect(hasLoneSurrogates).toBe(false);
671
- // Assert preview is valid UTF-8 roundtrip
672
- expect(Buffer.from(preview, 'utf8').toString('utf8')).toBe(preview);
673
- // Assert latest tool turn is preserved untouched
674
- const latestResponse = collapsedHistory[collapsedHistory.length - 1]
675
- .parts?.[0]?.functionResponse?.response;
676
- expect(latestResponse.output).toBe('Recent tool response 3');
677
- });
678
- it('supports custom segmenter and functions identically with reused default segmenter', () => {
679
- const customSegmenter = new Intl.Segmenter(undefined, {
680
- granularity: 'grapheme',
681
- });
682
- const history = [
683
- {
684
- role: 'user',
685
- parts: [
686
- {
687
- functionResponse: {
688
- name: 'shell',
689
- response: { output: 'ABC '.repeat(2000) },
690
- },
691
- },
692
- ],
693
- },
694
- ...createRecentToolTurns(3),
695
- ];
696
- const resWithCustom = collapseOlderFunctionResponses(history, 2048, customSegmenter);
697
- const resWithDefault = collapseOlderFunctionResponses(history, 2048);
698
- expect(resWithCustom[0].parts?.[0]?.functionResponse?.response).toEqual(resWithDefault[0].parts?.[0]?.functionResponse?.response);
699
- });
700
- it('preserves primitive string response type when collapsing older responses', () => {
701
- const longString = 'output line '.repeat(1000);
702
- const history = [
703
- {
704
- role: 'user',
705
- parts: [
706
- {
707
- functionResponse: {
708
- name: 'rawTool',
709
- response: longString,
710
- },
711
- },
712
- ],
713
- },
714
- ...createRecentToolTurns(3),
715
- ];
716
- const collapsed = collapseOlderFunctionResponses(history, 512);
717
- const resp = collapsed[0].parts?.[0]?.functionResponse?.response;
718
- expect(typeof resp).toBe('string');
719
- expect(resp.includes('[Tool output collapsed from previous turn:')).toBe(true);
720
- });
721
- it('recursively collapses custom keys (stdout, stderr, logs, nested objects) in older responses while leaving latest turn intact', () => {
722
- const largeStdout = 'stdout line\n'.repeat(500);
723
- const largeStderr = 'stderr error\n'.repeat(500);
724
- const largeLog = 'log trace\n'.repeat(500);
725
- const largeNested = 'nested deep detail\n'.repeat(500);
726
- const history = [
727
- {
728
- role: 'user',
729
- parts: [
730
- {
731
- functionResponse: {
732
- name: 'customTool',
733
- response: {
734
- stdout: largeStdout,
735
- stderr: largeStderr,
736
- exitCode: 1,
737
- logs: [largeLog, 'small log'],
738
- meta: {
739
- details: {
740
- deepMessage: largeNested,
741
- timestamp: 123456789,
742
- },
743
- },
744
- },
745
- },
746
- },
747
- ],
748
- },
749
- { role: 'model', parts: [{ text: 'acknowledged' }] },
750
- {
751
- role: 'user',
752
- parts: [
753
- {
754
- functionResponse: {
755
- name: 'customTool',
756
- response: { output: 'recent 1' },
757
- },
758
- },
759
- ],
760
- },
761
- { role: 'model', parts: [{ text: 'acknowledged 2' }] },
762
- {
763
- role: 'user',
764
- parts: [
765
- {
766
- functionResponse: {
767
- name: 'customTool',
768
- response: { output: 'recent 2' },
769
- },
770
- },
771
- ],
772
- },
773
- { role: 'model', parts: [{ text: 'acknowledged 3' }] },
774
- {
775
- role: 'user',
776
- parts: [
777
- {
778
- functionResponse: {
779
- name: 'customTool',
780
- response: {
781
- stdout: largeStdout,
782
- meta: { deepMessage: largeNested },
783
- },
784
- },
785
- },
786
- ],
787
- },
788
- ];
789
- const collapsed = collapseOlderFunctionResponses(history, 512);
790
- // Verify older turn (index 0) was collapsed recursively
791
- const oldResp = collapsed[0].parts?.[0]?.functionResponse?.response;
792
- expect(oldResp).toBeDefined();
793
- expect(oldResp.stdout).toContain('[Tool output collapsed from previous turn:');
794
- expect(oldResp.stderr).toContain('[Tool output collapsed from previous turn:');
795
- expect(oldResp.logs[0]).toContain('[Tool output collapsed from previous turn:');
796
- expect(oldResp.logs[1]).toBe('small log');
797
- expect(oldResp.exitCode).toBe(1);
798
- expect(oldResp.meta.details.deepMessage).toContain('[Tool output collapsed from previous turn:');
799
- expect(oldResp.meta.details.timestamp).toBe(123456789);
800
- // Verify latest turn (index 6) was preserved intact
801
- const latestResp = collapsed[6].parts?.[0]?.functionResponse
802
- ?.response;
803
- expect(latestResp.stdout).toBe(largeStdout);
804
- expect(latestResp.meta.deepMessage).toBe(largeNested);
805
- });
806
- it('preserves object references when no properties in older responses exceed maxBytesPerOldResponse', () => {
807
- const history = [
808
- {
809
- role: 'user',
810
- parts: [
811
- {
812
- functionResponse: {
813
- name: 'customTool',
814
- response: {
815
- stdout: 'short',
816
- meta: { message: 'also short' },
817
- },
818
- },
819
- },
820
- ],
821
- },
822
- ...createRecentToolTurns(3),
823
- ];
824
- const collapsed = collapseOlderFunctionResponses(history, 2048);
825
- expect(collapsed).toBe(history);
826
- expect(collapsed[0]).toBe(history[0]);
827
- });
828
- it('preserves all tool responses intact when total tool turns <= RECENT_TURNS_PROTECTED (3)', () => {
829
- const largePayload = 'lots of tool output data '.repeat(200); // ~5 KB
830
- // 3 tool turns
831
- const history = [
832
- {
833
- role: 'user',
834
- parts: [
835
- {
836
- functionResponse: {
837
- name: 'shell',
838
- response: { output: largePayload },
839
- },
840
- },
841
- ],
842
- },
843
- { role: 'model', parts: [{ text: 'step 1 done' }] },
844
- {
845
- role: 'user',
846
- parts: [
847
- {
848
- functionResponse: {
849
- name: 'shell',
850
- response: { output: largePayload },
851
- },
852
- },
853
- ],
854
- },
855
- { role: 'model', parts: [{ text: 'step 2 done' }] },
856
- {
857
- role: 'user',
858
- parts: [
859
- {
860
- functionResponse: {
861
- name: 'shell',
862
- response: { output: largePayload },
863
- },
864
- },
865
- ],
866
- },
867
- ];
868
- const result = collapseOlderFunctionResponses(history);
869
- // All 3 turns should remain completely unmodified
870
- expect(result).toBe(history);
871
- expect(result[0].parts[0].functionResponse.response
872
- .output).toBe(largePayload);
873
- expect(result[2].parts[0].functionResponse.response
874
- .output).toBe(largePayload);
875
- expect(result[4].parts[0].functionResponse.response
876
- .output).toBe(largePayload);
877
- });
878
- it('exempts retrieval tools (read_file, read_many_files, grep, glob) from collapsing even in older turns', () => {
879
- const largeFileContent = 'const x = 1;\n'.repeat(500); // ~6.5 KB
880
- const history = [
881
- {
882
- role: 'user',
883
- parts: [
884
- {
885
- functionResponse: {
886
- name: 'read_file',
887
- response: { content: largeFileContent },
888
- },
889
- },
890
- ],
891
- },
892
- { role: 'model', parts: [{ text: 'read file A' }] },
893
- {
894
- role: 'user',
895
- parts: [
896
- {
897
- functionResponse: {
898
- name: 'grep',
899
- response: { output: largeFileContent },
900
- },
901
- },
902
- ],
903
- },
904
- ...createRecentToolTurns(3),
905
- ];
906
- const collapsed = collapseOlderFunctionResponses(history);
907
- // read_file and grep in older turns are exempt from collapse
908
- const readFileResp = collapsed[0].parts[0].functionResponse
909
- ?.response;
910
- expect(readFileResp.content).toBe(largeFileContent);
911
- const grepResp = collapsed[2].parts[0].functionResponse?.response;
912
- expect(grepResp.output).toBe(largeFileContent);
913
- });
914
- it('preserves multi-turn context retention across file reading workflows', () => {
915
- // Turn 1: read_file('fileA.ts') 15 KB
916
- const fileA = 'export const A = "value";\n'.repeat(600); // ~15 KB
917
- // Turn 2: read_file('fileB.ts') 15 KB
918
- const fileB = 'export const B = "value";\n'.repeat(600); // ~15 KB
919
- const history = [
920
- {
921
- role: 'user',
922
- parts: [
923
- {
924
- functionResponse: {
925
- name: 'read_file',
926
- response: { content: fileA },
927
- },
928
- },
929
- ],
930
- },
931
- { role: 'model', parts: [{ text: 'Inspected fileA.ts' }] },
932
- {
933
- role: 'user',
934
- parts: [
935
- {
936
- functionResponse: {
937
- name: 'read_file',
938
- response: { content: fileB },
939
- },
940
- },
941
- ],
942
- },
943
- { role: 'model', parts: [{ text: 'Inspected fileB.ts' }] },
944
- {
945
- role: 'user',
946
- parts: [
947
- {
948
- functionResponse: {
949
- name: 'shell',
950
- response: { output: 'build succeeded' },
951
- },
952
- },
953
- ],
954
- },
955
- ];
956
- // Even when collapsed is called, both read_file turns are retained at full fidelity
957
- const collapsed = collapseOlderFunctionResponses(history);
958
- const turn1Content = collapsed[0].parts[0].functionResponse.response.content;
959
- const turn2Content = collapsed[2].parts[0].functionResponse.response.content;
960
- expect(turn1Content).toBe(fileA);
961
- expect(turn2Content).toBe(fileB);
962
- expect(turn1Content).not.toContain('[Tool output collapsed');
963
- expect(turn2Content).not.toContain('[Tool output collapsed');
964
- });
965
- });
966
617
  });
967
618
  //# sourceMappingURL=chatCompressionService.test.js.map