Refresh PR #2258 onto master at 5427cbcc19 so the session-log export fixes are evaluated and mergeable against the current repository.\n\nPreserve master's SDK-toolchain removal, client theme bootstrap, and Python finish-reason changes intact. The only textual overlap is the generated config-catalog pairing record: both English and Chinese catalogs merge cleanly with the PR's compression setting and master's package moves, so regenerate that sidecar from the merged owners instead of choosing either stale hash.
session/ — durable session data plane
English | 中文
The durable family around core/session's live in-memory service: the persistence seam with its storage backends and checkpoint policy, the projection seam that serves whole log-derived values, log-backed titles, and outbound session telemetry. All product packages. session-query/ remains a sibling group: the read/tool surface is consumed independently of persistence internals.
Persistence
Durable session persistence, semantic checkpoint policy, and the shipped storage backends.
| Package | Role | ctx key |
|---|---|---|
session-persistence/ |
Defines the persistence service and shared write coordination | ctx.sessionPersistence |
session-checkpoint-policy/ |
Applies semantic durability checkpoints | wraps ctx.llm and ctx.tools |
session-persistence-jsonl/ |
Persists sessions in JSONL files | registers on ctx.sessionPersistence |
session-persistence-sqlite/ |
Persists sessions in SQLite | registers on ctx.sessionPersistence |
The session-persistence decision records the persistence design.
Projection
Serves current, log-derived per-session state to client carriers.
| Package | Role | ctx key |
|---|---|---|
session-projection/ |
Defines and drives session projection units | ctx.sessionProjections |
session-projection-cache/ |
Persists and restores projection checkpoints | ctx.sessionProjectionCache |
Titles
Derives durable session titles from the session log, with an optional model-backed provider.
| Package | Role | ctx key |
|---|---|---|
session-title/ |
Owns title state, fallback behavior, provider registration, and refresh | ctx.sessionTitle |
session-title-llm/ |
Provides shared model-backed title generation | — |
session-title-first-message-llm/ |
Titles a session from its first eligible human message | registers on ctx.sessionTitle |
session-title-all-messages-llm/ |
Titles a session from all eligible human messages | registers on ctx.sessionTitle |
Deployments may register one model-backed provider; the service retains a deterministic fallback when none is present.
Telemetry
Projects session activity into outbound telemetry and delegates delivery to a configured reporting backend. The telemetry decision records the reporting boundary; the mode decision records immediate, feedback-gated, and disabled delivery.
| Package | Role |
|---|---|
session-telemetry/ |
Defines capture, redaction, projection, and live or on-demand backend delivery. |
session-telemetry-otel/ |
Delivers telemetry through OpenTelemetry logs in FULL, FEEDBACK_ONLY, or DISABLED mode. |
The subsystem references: persistence.md, session-projection.md, session-title.md, and telemetry.md. Only one title provider may register at a time; the demo spine mounts the fallback service and leaves both model providers out of default composition.