Merge remote-tracking branch 'origin/master' into worktree/pr2177-export-fixes-20260811

# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/subsystems/persistence.i18n.yaml
#	packages/session/session-persistence-jsonl/README.i18n.yaml
#	packages/session/session-persistence/README.i18n.yaml
This commit is contained in:
Tianyi Cui
2026-08-11 16:18:28 +08:00
642 changed files with 1814 additions and 1429 deletions

View File

@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write packages/session/session-persistence/README.md
README.md: 09aa7ad8263454d6c5edbb2358033370504c0cb9
README.md: 6e1898f8a49e54f8fe90ff27cf8571c5959f27e9
README.zh.md: 901c41b6894d86bdc4ffb345314a3dd506e4a770

View File

@@ -80,6 +80,6 @@ Persistence does not mutate live request prefixes. A resumed loop can reuse prov
## Known Limitations and Deferred Work
- **No deletion or retention surface** — pruning stored sessions is out-of-band backend maintenance.
- **No deletion or retention API** — pruning stored sessions is out-of-band backend maintenance.
- **`list()` is unpaginated and unfiltered** — it returns every stored session's header; fine for local stores, unindexed at scale.
- **Repair-time synthetic closers are the only crash story** — a backend must synthesize `tool/result`/`step/end`/`turn/end` closers on load; there is no partial-turn resume that continues an interrupted turn instead of closing it.

View File

@@ -624,7 +624,7 @@ export class PersistenceCoordinator<TornMarker = unknown> {
this.installWritePath()
}
// --- public surface (the backend's service methods delegate here) ---
// --- Public API (the backend's service methods delegate here) ---
/**
* Register detached session metadata for lazy creation on the first append.

View File

@@ -87,7 +87,7 @@ class MemoryPersistence extends SessionPersistence implements PersistenceBackend
this.coordinator = new PersistenceCoordinator<never>(this.ctx, this)
}
// --- service surface (delegated to the coordinator) ---
// --- Service API (delegated to the coordinator) ---
locate(_meta: SessionHeader): undefined {
return undefined