Skip to content

fix(compaction): bound checkpoint inputs - #37

Merged
danielkov merged 1 commit into
mainfrom
fix/compaction-media
Aug 28, 2026
Merged

fix(compaction): bound checkpoint inputs#37
danielkov merged 1 commit into
mainfrom
fix/compaction-media

Conversation

@danielkov

Copy link
Copy Markdown
Contributor

Summary

Prevents checkpoint compaction requests from embedding inline media and file payloads, and adds bounded retention for tool results and summary prompts. Durable attachment references and recent tool context remain available without allowing historical payloads to dominate the request.

Motivation

Compaction previously serialized provider-native image data into a JSON text prompt. Large historical images could therefore make the checkpoint request exceed the model context window even when the normal conversation was only at the automatic 80% threshold.

Impact

Compaction is more resilient for long and attachment-heavy sessions. Historical tool results are reduced to 512 bytes, while the three newest results retain up to 8 KB each; inline historical attachment payloads are represented by placeholders during summarization. This behavior ships with the 0.1.99 patch version.

Technical details

Attachment projection

Summary rendering replaces inline media and file data with bounded descriptions while preserving URI and artifact-handle references. The same projection covers attachments nested in tool outputs, and the original transcript remains canonical if compaction fails.

Layered budgets

Each rendered transcript item has a fixed byte cap. The complete conversation prompt uses at most half of the provider-reported context window, capped at 256 KB, with a conservative fallback when usage metadata is unavailable. Middle truncation retains the initial objective and newest conversation state while budgeting the prior checkpoint separately.

@danielkov
danielkov merged commit 5bd3100 into main Aug 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant