latent.context.compaction¶
Message history compaction utilities.
All functions return new lists and never mutate input.
Functions¶
anchored_summarize¶
anchored_summarize(messages: list[dict[str, Any]], keep_last_n: int = 5, sections: list[str] | None = None, summary_fn: Callable[[str], str] | None = None) -> list[dict[str, Any]]
Structured iterative summarization with anchored sections.
Keeps system messages and the last keep_last_n messages intact. Middle messages are summarized into a structured summary with mandatory sections:
- Session Intent
- Files Modified
- Decisions Made
- Current State
- Next Steps
Parameters¶
messages:
OpenAI-style message list.
keep_last_n:
Number of most-recent messages to preserve verbatim.
sections:
Override the default section headings.
summary_fn:
Optional summary_fn(text) -> summary_text for LLM-backed
summarization. If None, a simple extractive approach is used
(first and last lines of the middle block).
Returns¶
list[dict[str, Any]] A new list with a summary system message injected.
compact_history¶
compact_history(messages: list[dict[str, Any]], target_tokens: int, strategy: Literal['oldest_first', 'tool_results_first'] = 'tool_results_first') -> list[dict[str, Any]]
Reduce message history to fit within target_tokens.
Strategies¶
tool_results_first Mask tool outputs (oldest first) until under budget, then drop oldest user/assistant pairs if still over. oldest_first Drop oldest non-system user/assistant message pairs first.
System messages are never dropped or modified.
Parameters¶
messages: OpenAI-style message list. target_tokens: Maximum token budget for the returned list. strategy: Compaction strategy to use.
Returns¶
list[dict[str, Any]] A new list that fits within target_tokens.
mask_observations¶
Replace old tool-result messages with one-line summaries.
Keeps the last keep_last_n tool results intact. Older ones are replaced
with a placeholder:
'[Tool output summarized: {n} chars from {tool_name}]'
Parameters¶
messages: OpenAI-style message list. keep_last_n: Number of most-recent tool results to preserve verbatim.
Returns¶
list[dict[str, Any]] A new list with older tool results masked.