pi-mono/packages/durable/test
Mario Zechner 6c2fd73b0c feat(durable): deferred storage of throttled commits
A commit may be marked deferrable ({ persistence: { kind: "deferred", withinMs? } }) on Session, Conversation,
TaskRuntime and a tool's api.commit. When every write changes an existing conversation document with history
"latest" and fork "initial", it is adopted in memory and shown to watches at once, and stored with the next commit
that reads or writes the document, before the document leaves memory, at close, or within withinMs (default
settings.progress.persistWithinMs, 1000 ms). The generation partial throttle and the tool output throttle use it.

subscribeCommits() gets these commits only once stored, with exactly what was stored; internal observers get
memory-only publications. Spec §1/§13 changed, new §4.1. 32 streams over SQLite: storage transactions 562/s -> 99/s,
disk 14.3 -> 4.9 MB/s, CPU 29% -> 22% of one core. A crash loses up to about 1 s of streamed content.
2026-10-24 17:49:30 +00:00
..
examples feat(chord,durable): PendingOps folds pending ops for slow consumers; Watch delivers one call per busy period 2026-10-24 09:37:12 +00:00
fixtures feat(durable): first coding-agent tool turn (Package 16) 2026-09-29 21:24:32 +02:00
chat-support.ts feat(ai,agent,coding-agent): move client identity and provider attribution into pi-ai 2026-10-21 11:17:02 +00:00
codemode-bench.ts feat(durable): code mode result lists the script's tool calls 2026-10-11 22:00:44 +00:00
codemode-checkpoints.test.ts feat: checkpointWhen is required on Durable document definitions 2026-10-19 18:17:42 +00:00
codemode-describe.test.ts feat(durable): deferred tools and the tool_search extension 2026-10-12 08:05:26 +00:00
codemode-models.test.ts feat(durable): code mode listing, tool search, output, models.*, grammar; tool error rule 2026-10-12 00:06:09 +00:00
codemode.test.ts fix(durable): release the second slow call when the first finished, not after 200 polls 2026-10-17 23:54:43 +00:00
document-append-bench.ts feat: checkpointWhen is required on Durable document definitions 2026-10-19 18:17:42 +00:00
env-line-scan.test.ts feat(durable): bounded read tool via BinaryReader.scanLines 2026-10-04 23:15:37 +02:00
env-node-conformance.test.ts feat(durable): FileSystem.watch 2026-10-04 23:15:37 +02:00
env-node-spill.test.ts feat(durable): first coding-agent tool turn (Package 16) 2026-09-29 21:24:32 +02:00
env-node.test.ts fix(coding-agent): resolve Windows shells from installation directories 2026-10-19 21:55:12 +02:00
env-truncate.test.ts feat(chord,durable): move OutputBuffer and Progress to @earendil-works/chord/output 2026-10-15 09:59:46 +00:00
harness-blocked.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-callers.test.ts feat(durable): nested tool calls, structured output, callers; storage errors end the Session 2026-10-09 17:13:34 +00:00
harness-cancellation-barrier.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-compaction.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-context.test.ts fix(durable): lead with the system baseline after a compaction that keeps assistant messages 2026-10-14 09:47:25 +00:00
harness-conversations.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-deferred-progress.test.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
harness-events.test.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
harness-failed-run-inbox.test.ts fix(durable): review fixes for the crash-loop guard, reports, and blocked tasks 2026-10-18 00:53:14 +00:00
harness-generation-recovery.test.ts fix(durable): review fixes for the crash-loop guard, reports, and blocked tasks 2026-10-18 00:53:14 +00:00
harness-generation.test.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
harness-host-inputs.test.ts feat(ai,agent,coding-agent): move client identity and provider attribution into pi-ai 2026-10-21 11:17:02 +00:00
harness-inbox.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-input-entries.test.ts feat(durable): inputs placed as application entries, display-only writes appended at once 2026-10-11 13:12:44 +00:00
harness-inspect.test.ts feat(durable): extensions and per-conversation agents (Package 21) 2026-10-01 01:28:22 +02:00
harness-lifecycle.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-live-deltas.test.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
harness-nested-tools-restart.test.ts feat(durable): one document per nested call; TaskRuntime.ownedTasks() 2026-10-10 15:35:29 +00:00
harness-nested-tools.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-ownership.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-partial-changes.test.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
harness-prompt.test.ts feat(durable): deferred tools and the tool_search extension 2026-10-12 08:05:26 +00:00
harness-read-only.test.ts feat(durable): open a Harness read-only 2026-10-22 14:25:58 +02:00
harness-registry.test.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
harness-reports.test.ts feat(durable): ReportInfo says what happened, with typed reasons 2026-10-18 01:58:07 +00:00
harness-scheduler-indexes.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-scheduler-retention.test.ts fix(durable): reject waits that close a wait cycle 2026-10-12 10:15:26 +00:00
harness-sleep.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-storage-failure.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-structured-output.test.ts feat(durable): code mode listing, tool search, output, models.*, grammar; tool error rule 2026-10-12 00:06:09 +00:00
harness-structured.test.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
harness-submissions.test.ts feat(durable): structured concurrency: task ownership, waiting, completing holds, bottom-up abort (Package 19) 2026-09-30 13:50:29 +02:00
harness-support.ts feat(durable): nested tool calls, structured output, callers; storage errors end the Session 2026-10-09 17:13:34 +00:00
harness-task-graph.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-tasks-recovery.test.ts feat: checkpointWhen is required on Durable document definitions 2026-10-19 18:17:42 +00:00
harness-tasks.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
harness-telemetry-options.test.ts feat: Durable and pi-ai telemetry; Context.telemetry is always a span 2026-10-19 06:26:02 +00:00
harness-telemetry.test.ts feat: Durable and pi-ai telemetry; Context.telemetry is always a span 2026-10-19 06:26:02 +00:00
harness-tools-recovery.test.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
harness-tools.test.ts feat(ai,agent,coding-agent): move client identity and provider attribution into pi-ai 2026-10-21 11:17:02 +00:00
harness-view.test.ts feat(chord,durable): PendingOps folds pending ops for slow consumers; Watch delivers one call per busy period 2026-10-24 09:37:12 +00:00
heap-retained.ts feat(durable): bound the Session's document cache by use (documentRetentionMs) 2026-10-11 08:03:35 +00:00
images-wasm-module.test.ts feat(durable): read returns images, optional Photon image processor 2026-10-09 19:38:02 +00:00
indexeddb-storage.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
jsonl-storage.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
memory-storage.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
nested-images-bench.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
nested-tools-bench.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
provider-session-cache-e2e.test.ts fix(durable): run the Codex prompt-cache e2e test on gpt-6.1-sol 2026-10-16 19:42:02 +00:00
scheduler-fanout-bench.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
scheduler-memory-bench.ts feat(durable): bound the Session's document cache by use (documentRetentionMs) 2026-10-11 08:03:35 +00:00
session-adoption.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
session-checkpoints-migrations.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
session-deferred-commits.test.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
session-definitions.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
session-document-cache-bench.ts feat(durable): bound the Session's document cache by use (documentRetentionMs) 2026-10-11 08:03:35 +00:00
session-document-retention.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
session-documents.test.ts feat: checkpointWhen is required on Durable document definitions 2026-10-19 18:17:42 +00:00
session-forks.test.ts feat: checkpointWhen is required on Durable document definitions 2026-10-19 18:17:42 +00:00
session-support.ts feat(durable): deferred storage of throttled commits 2026-10-24 17:49:30 +00:00
session-tables.test.ts feat: checkpointWhen is required on Durable document definitions 2026-10-19 18:17:42 +00:00
session-watches.test.ts feat(chord,durable): PendingOps folds pending ops for slow consumers; Watch delivers one call per busy period 2026-10-24 09:37:12 +00:00
setup-document-retention.ts feat(durable): bound the Session's document cache by use (documentRetentionMs) 2026-10-11 08:03:35 +00:00
spec-usage.test.ts feat: checkpointWhen is required on Durable document definitions 2026-10-19 18:17:42 +00:00
sqlite-cloudflare.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
sqlite-facade.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
sqlite-migrations.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
sqlite-storage.test.ts feat: Durable storage adopt callback inside the commit, watch types in Chord, explicit watch retirement 2026-10-22 10:52:59 +00:00
storage-memory.ts feat(durable): export storage benchmark workloads 2026-09-24 14:26:22 +02:00
storage-runtime-boundary.test.ts feat(durable): first coding-agent tool turn (Package 16) 2026-09-29 21:24:32 +02:00
storage.bench.ts feat(durable): add typed IDs and explicit ownership 2026-09-25 17:58:29 +02:00
system-order-cache-e2e.test.ts feat(durable): nested tool calls, structured output, callers; storage errors end the Session 2026-10-09 17:13:34 +00:00
task-support.ts feat(durable): ReportInfo says what happened, with typed reasons 2026-10-18 01:58:07 +00:00
tool-output-bench.ts feat(durable): extensions and per-conversation agents (Package 21) 2026-10-01 01:28:22 +02:00
tool-search.test.ts feat(durable): deferred tools and the tool_search extension 2026-10-12 08:05:26 +00:00
tools-images.test.ts fix(durable): encode base64 with btoa, without retaining concatenation trees 2026-10-14 09:41:45 +00:00
tools-read-differential.test.ts feat(chord,durable): move OutputBuffer and Progress to @earendil-works/chord/output 2026-10-15 09:59:46 +00:00
tools.test.ts feat(durable): read returns images, optional Photon image processor 2026-10-09 19:38:02 +00:00
types.test.ts feat(durable): inputs placed as application entries, display-only writes appended at once 2026-10-11 13:12:44 +00:00