22. Compact Subsystem

Why Compacting Is a Whole Subsystem

The files under services/compact/ show that context shrinking is not one function call. There are separate pieces for microcompact, auto-compact thresholds, prompt templates, warning state, cleanup, grouping, and session-memory-aware compacting.

What microCompact.ts Reveals

Microcompact is selective. It targets specific tool outputs, estimates token pressure, manages cache edits, and keeps compacting state consistent with prompt-cache behavior. That means the goal is not only to save tokens, but to do so without wrecking cache efficiency or losing critical context.

What autoCompact.ts Reveals

Auto-compact is guarded by context-window math, feature interactions, recursion guards, and circuit-breaker logic. The system explicitly avoids compacting inside compact-related flows and certain specialized modes. This is context management as operational control flow.

Main Lesson

Once a product supports long conversations and many tool results, context management becomes a product subsystem with its own policy, retry logic, budgets, and user-facing consequences.

Source Navigation

Recommended Source Files

  • source/services/compact/compact.ts
  • source/services/compact/autoCompact.ts
  • source/services/compact/microCompact.ts
  • source/services/compact/prompt.ts
  • source/services/compact/sessionMemoryCompact.ts

Next Files to Read

  • source/services/compact/postCompactCleanup.ts
  • source/services/api/promptCacheBreakDetection.ts
  • source/services/SessionMemory/sessionMemory.ts