diff --git a/packages/core/src/context/processors/emergencyTruncationProcessor.ts b/packages/core/src/context/processors/emergencyTruncationProcessor.ts index ddabf6ef51..4f84a36076 100644 --- a/packages/core/src/context/processors/emergencyTruncationProcessor.ts +++ b/packages/core/src/context/processors/emergencyTruncationProcessor.ts @@ -39,11 +39,13 @@ export class EmergencyTruncationProcessor implements ContextProcessor { readonly id = 'EmergencyTruncationProcessor'; readonly name = 'EmergencyTruncationProcessor'; + private readonly env: ContextEnvironment; readonly options: EmergencyTruncationProcessorOptions; constructor( - _env: ContextEnvironment, + env: ContextEnvironment, options: EmergencyTruncationProcessorOptions, ) { + this.env = env; this.options = options; } diff --git a/packages/core/src/context/processors/historySquashingProcessor.ts b/packages/core/src/context/processors/historySquashingProcessor.ts index aacd38ffdb..07b603bd93 100644 --- a/packages/core/src/context/processors/historySquashingProcessor.ts +++ b/packages/core/src/context/processors/historySquashingProcessor.ts @@ -109,14 +109,12 @@ export class HistorySquashingProcessor implements ContextProcessor { } if (modified) { - const newTokens = this.env.tokenCalculator.estimateTokensForParts( newParts.map(p => { if (p.type === 'text') return { text: p.text }; if (p.type === 'inline_data') return { inlineData: { mimeType: p.mimeType, data: p.data } }; if (p.type === 'file_data') return { fileData: { mimeType: p.mimeType, fileUri: p.fileUri } }; return (p as Extract).part; - }) - ); + }); returnedNodes.push({ ...prompt, id: this.env.idGenerator.generateId(), diff --git a/packages/core/src/context/processors/semanticCompressionProcessor.test.ts b/packages/core/src/context/processors/semanticCompressionProcessor.test.ts index 5a04caffec..1ff1a267a9 100644 --- a/packages/core/src/context/processors/semanticCompressionProcessor.test.ts +++ b/packages/core/src/context/processors/semanticCompressionProcessor.test.ts @@ -73,19 +73,16 @@ describe('SemanticCompressionProcessor', () => { expect(compressedPrompt.id).not.toBe(prompt.id); expect(compressedPrompt.semanticParts[0].type).toBe('text'); expect((compressedPrompt.semanticParts[0] as any).text).toBe('Mocked Summary!'); - expect(compressedPrompt.metadata.transformations.length).toBe(1); // 2. Agent Thought const compressedThought = result[1] as AgentThought; expect(compressedThought.id).toBe('mock-uuid-2'); expect(compressedThought.id).not.toBe(thought.id); expect(compressedThought.text).toBe('Mocked Summary!'); - expect(compressedThought.metadata.transformations.length).toBe(1); const compressedTool = result[2] as ToolExecution; expect(compressedTool.id).toBe('mock-uuid-3'); expect(compressedTool.id).not.toBe(tool.id); expect(compressedTool.observation).toEqual({ summary: 'Mocked Summary!' }); - expect(compressedTool.metadata.transformations.length).toBe(1); expect(mockLlmClient.generateContent).toHaveBeenCalledTimes(3); }); diff --git a/packages/core/src/context/processors/stateSnapshotProcessor.ts b/packages/core/src/context/processors/stateSnapshotProcessor.ts index b415afa2bf..60311eec6a 100644 --- a/packages/core/src/context/processors/stateSnapshotProcessor.ts +++ b/packages/core/src/context/processors/stateSnapshotProcessor.ts @@ -133,7 +133,6 @@ export class StateSnapshotProcessor implements ContextProcessor, ContextWorker { try { const snapshotText = await this.synthesizeSnapshot(nodesToSummarize); const newId = this.env.idGenerator.generateId(); - const tokens = this.env.tokenCalculator.estimateTokensForString(snapshotText); const snapshotNode: Snapshot = { id: newId, logicalParentId: newId, diff --git a/packages/core/src/context/processors/toolMaskingProcessor.test.ts b/packages/core/src/context/processors/toolMaskingProcessor.test.ts index 8ff0a836d2..60ed185d1c 100644 --- a/packages/core/src/context/processors/toolMaskingProcessor.test.ts +++ b/packages/core/src/context/processors/toolMaskingProcessor.test.ts @@ -17,6 +17,7 @@ describe('ToolMaskingProcessor', () => { // 1 token = 1 char for simplicity // Fake token calculator says new tokens are 5 env.tokenCalculator.estimateTokensForParts = vi.fn().mockReturnValue(5); + env.tokenCalculator.getTokenCost = vi.fn().mockReturnValue(150); const processor = ToolMaskingProcessor.create(env, { stringLengthThresholdTokens: 10, diff --git a/packages/core/src/context/system-tests/__snapshots__/lifecycle.golden.test.ts.snap b/packages/core/src/context/system-tests/__snapshots__/lifecycle.golden.test.ts.snap index 3303803eae..8242c3da17 100644 --- a/packages/core/src/context/system-tests/__snapshots__/lifecycle.golden.test.ts.snap +++ b/packages/core/src/context/system-tests/__snapshots__/lifecycle.golden.test.ts.snap @@ -133,28 +133,28 @@ exports[`System Lifecycle Golden Tests > Scenario 1: Organic Growth with Huge To ], "tokenTrajectory": [ { - "tokensAfterBackground": 12, - "tokensBeforeBackground": 12, + "tokensAfterBackground": 14, + "tokensBeforeBackground": 14, "turnIndex": 0, }, { - "tokensAfterBackground": 25, - "tokensBeforeBackground": 25, + "tokensAfterBackground": 29, + "tokensBeforeBackground": 29, "turnIndex": 1, }, { - "tokensAfterBackground": 10070, - "tokensBeforeBackground": 10070, + "tokensAfterBackground": 10137, + "tokensBeforeBackground": 10137, "turnIndex": 2, }, { - "tokensAfterBackground": 13353, - "tokensBeforeBackground": 13353, + "tokensAfterBackground": 13422, + "tokensBeforeBackground": 13422, "turnIndex": 3, }, { - "tokensAfterBackground": 13367, - "tokensBeforeBackground": 13367, + "tokensAfterBackground": 13438, + "tokensBeforeBackground": 13438, "turnIndex": 4, }, ],