zeph-context
Context budget, lifecycle management, compaction strategy, and stateless context assembler for the Zeph AI agent.
This crate contains the stateless and data-only parts of context management extracted from
zeph-core. It has no dependency on zeph-core — callers implement the IndexAccess trait and
populate ContextMemoryView before each assembly pass.
Modules
budget—ContextBudgetandBudgetAllocationfor token budget calculationmanager—ContextManagerstate machine andCompactionStatelifecycle trackingassembler—ContextAssemblerparallel fetch coordinator; classifies each slot into aTypedPage, enforces per-type fidelity invariants at compaction boundaries, and emits aCompactionAuditSinkrecord per compacted pageinput—ContextAssemblyInput,ContextMemoryView,IndexAccesstraitslot—ContextSlot,CompactionOutcome, message-chunking helperstyped_page—TypedPage(BLAKE3 content-hash id),PageTypeenum (ToolOutput,ConversationTurn,MemoryExcerpt,SystemContext), per-typePageInvariantimplementations, andInvariantRegistryaudit—CompactionAuditSink— bounded async mpsc channel that records one audit entry per compacted page; consumers can drain it for observability or compliance loggingerror—ContextError
ClawVM typed-page compaction
ContextAssembler::gather() classifies every context slot into a TypedPage keyed by a BLAKE3 content hash. Each PageType carries a PageInvariant that declares the minimum-fidelity guarantee for compaction:
| PageType | Invariant |
|---|---|
ToolOutput |
Preserve tool name, return code, and first/last N bytes of output |
ConversationTurn |
Preserve role, first sentence, and any code blocks |
MemoryExcerpt |
Preserve entity names and relationship predicates |
SystemContext |
Never compact — always injected verbatim |
At every compaction boundary the invariant is checked before the LLM compaction call. If the post-compaction result would violate the invariant the compaction is rejected and the original content is retained.
License
MIT OR Apache-2.0