A present zero-byte .jsonl.zstd file was treated as though no artifact existed because readRaw returned undefined when frame scanning found nothing. That contradicted both the plaintext path and the logical zstd reader, and it made the export endpoint answer 404 for on-disk corruption. Treat a present artifact without a complete header frame as corruption and reuse the zstd reader's existing diagnostic. The regression test now distinguishes an existing empty file from an absent path, and the bilingual JSONL storage contract records that zero-frame artifacts reject alongside other header and frame failures.
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.