| File | Role |
|---|---|
teaagent/context.py |
ContextCompactor, CompactionResult |
teaagent/context_bus.py |
ContextBus — pub/sub event bus |
teaagent/context_pack.py |
ContextPack — serialization/transfer |
teaagent/session.py |
Session — session lifecycle and persistence |
teaagent/scratchpad.py |
Scratchpad — ephemeral working memory |
CompactionResult— frozen dataclass:context,summary,pinned,tokens_saved,compression_ratioContextCompactor— dataclass withshould_compact(),estimate_tokens(),compact()methods
ContextBus—publish(event_type, data),subscribe(event_type, handler),unsubscribe()
Session—session_id,started_at,run_ids,user,save(),load(path)
Scratchpad— ephemeral key-value store, cleared between runs
context.py
└── stdlib: dataclasses
context_bus.py
└── stdlib: typing, threading
session.py
└── stdlib: json, pathlib, uuid, datetime
runner/_core.py— creates and maintains the agent context dict; callscompactor.compact()when neededchat_agent.py— builds context from chat historysubagents/_manager.py— creates sub-contexts for subagent runs
runner._core.AgentRunner
├── context = {} # plain dict
├── compactor = ContextCompactor(...)
└── per iteration:
context['observations'].append(llm_output)
if compactor.should_compact(token_count, max_tokens):
result = compactor.compact(context)
context = result.context