Merge remote-tracking branch 'origin/master' into session-surface

This commit is contained in:
Hypatia May
2026-06-18 09:29:22 +08:00
82 files changed
+716 -384

No files matched your search

@@ -242,7 +242,7 @@ export class SessionPersistenceSqlite extends SessionPersistence {
// agree — both append routes then continue with no special-casing. Synthesize
// the boundary events (a step/end if a step was open, then a
// turn/end {kind:'interrupted'}); the interrupted turn's real events are
// preserved, never truncated (ADR 0018).
// preserved, never truncated (the session-persistence RFC).
const closers = interruptedTurnClosers(preserved)
const balanced = [...preserved, ...closers]
@@ -151,7 +151,7 @@ export function rowToEvent(row: EventRow): SessionEvent {
* fully-written rows sit after the last `turn/end`. Those are PRESERVED — a
* single turn can be huge in a long-horizon task, so truncating it would
* destroy real work; the backend closes the orphaned open turn with a synthetic
* `turn/end {kind:'interrupted'}` on load (ADR 0018). The ONLY thing excluded is
* `turn/end {kind:'interrupted'}` on load (the session-persistence RFC). The ONLY thing excluded is
* a torn trailing fragment — a row whose `data` never parses, or a seq gap —
* AFTER the last committed `turn/end`; that bounds the preserved region and its
* seq is returned as `tornFrom` so `load` can physically delete it.