@draht/agent-core 2026.9.5-1 → 2026.10.4-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-loop.d.ts +27 -2
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +167 -62
- package/dist/agent-loop.js.map +1 -1
- package/dist/agent.d.ts +14 -4
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +65 -19
- package/dist/agent.js.map +1 -1
- package/dist/harness/agent-harness.d.ts +713 -91
- package/dist/harness/agent-harness.d.ts.map +1 -1
- package/dist/harness/agent-harness.js +5 -950
- package/dist/harness/agent-harness.js.map +1 -1
- package/dist/harness/compaction/branch-summarization.d.ts +23 -10
- package/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/harness/compaction/branch-summarization.js +39 -36
- package/dist/harness/compaction/branch-summarization.js.map +1 -1
- package/dist/harness/compaction/compaction.d.ts +37 -18
- package/dist/harness/compaction/compaction.d.ts.map +1 -1
- package/dist/harness/compaction/compaction.js +74 -97
- package/dist/harness/compaction/compaction.js.map +1 -1
- package/dist/harness/config.d.ts +9 -0
- package/dist/harness/config.d.ts.map +1 -0
- package/dist/harness/config.js +35 -0
- package/dist/harness/config.js.map +1 -0
- package/dist/harness/context.d.ts +9 -0
- package/dist/harness/context.d.ts.map +1 -0
- package/dist/harness/context.js +13 -0
- package/dist/harness/context.js.map +1 -0
- package/dist/harness/env/nodejs.d.ts +25 -27
- package/dist/harness/env/nodejs.d.ts.map +1 -1
- package/dist/harness/env/nodejs.js +336 -103
- package/dist/harness/env/nodejs.js.map +1 -1
- package/dist/harness/events.d.ts +24 -0
- package/dist/harness/events.d.ts.map +1 -0
- package/dist/harness/events.js +233 -0
- package/dist/harness/events.js.map +1 -0
- package/dist/harness/execution/assistant.d.ts +42 -0
- package/dist/harness/execution/assistant.d.ts.map +1 -0
- package/dist/harness/execution/assistant.js +82 -0
- package/dist/harness/execution/assistant.js.map +1 -0
- package/dist/harness/execution/effect-gate.d.ts +22 -0
- package/dist/harness/execution/effect-gate.d.ts.map +1 -0
- package/dist/harness/execution/effect-gate.js +49 -0
- package/dist/harness/execution/effect-gate.js.map +1 -0
- package/dist/harness/execution/tools.d.ts +67 -0
- package/dist/harness/execution/tools.d.ts.map +1 -0
- package/dist/harness/execution/tools.js +119 -0
- package/dist/harness/execution/tools.js.map +1 -0
- package/dist/harness/hooks.d.ts +38 -0
- package/dist/harness/hooks.d.ts.map +1 -0
- package/dist/harness/hooks.js +406 -0
- package/dist/harness/hooks.js.map +1 -0
- package/dist/harness/messages.d.ts +4 -4
- package/dist/harness/messages.d.ts.map +1 -1
- package/dist/harness/messages.js +4 -3
- package/dist/harness/messages.js.map +1 -1
- package/dist/harness/pico3/bash.d.ts +10 -0
- package/dist/harness/pico3/bash.d.ts.map +1 -0
- package/dist/harness/pico3/bash.js +25 -0
- package/dist/harness/pico3/bash.js.map +1 -0
- package/dist/harness/pico3/bounded.d.ts +21 -0
- package/dist/harness/pico3/bounded.d.ts.map +1 -0
- package/dist/harness/pico3/bounded.js +98 -0
- package/dist/harness/pico3/bounded.js.map +1 -0
- package/dist/harness/pico3/chord.d.ts +41 -0
- package/dist/harness/pico3/chord.d.ts.map +1 -0
- package/dist/harness/pico3/chord.js +147 -0
- package/dist/harness/pico3/chord.js.map +1 -0
- package/dist/harness/pico3/context.d.ts +16 -0
- package/dist/harness/pico3/context.d.ts.map +1 -0
- package/dist/harness/pico3/context.js +88 -0
- package/dist/harness/pico3/context.js.map +1 -0
- package/dist/harness/pico3/harness.d.ts +198 -0
- package/dist/harness/pico3/harness.d.ts.map +1 -0
- package/dist/harness/pico3/harness.js +654 -0
- package/dist/harness/pico3/harness.js.map +1 -0
- package/dist/harness/pico3/hooks.d.ts +10 -0
- package/dist/harness/pico3/hooks.d.ts.map +1 -0
- package/dist/harness/pico3/hooks.js +33 -0
- package/dist/harness/pico3/hooks.js.map +1 -0
- package/dist/harness/pico3/index.d.ts +19 -0
- package/dist/harness/pico3/index.d.ts.map +1 -0
- package/dist/harness/pico3/index.js +15 -0
- package/dist/harness/pico3/index.js.map +1 -0
- package/dist/harness/pico3/jsonl.d.ts +58 -0
- package/dist/harness/pico3/jsonl.d.ts.map +1 -0
- package/dist/harness/pico3/jsonl.js +325 -0
- package/dist/harness/pico3/jsonl.js.map +1 -0
- package/dist/harness/pico3/kinds/collapse.d.ts +49 -0
- package/dist/harness/pico3/kinds/collapse.d.ts.map +1 -0
- package/dist/harness/pico3/kinds/collapse.js +191 -0
- package/dist/harness/pico3/kinds/collapse.js.map +1 -0
- package/dist/harness/pico3/kinds/entries.d.ts +78 -0
- package/dist/harness/pico3/kinds/entries.d.ts.map +1 -0
- package/dist/harness/pico3/kinds/entries.js +13 -0
- package/dist/harness/pico3/kinds/entries.js.map +1 -0
- package/dist/harness/pico3/kinds/frames.d.ts +9 -0
- package/dist/harness/pico3/kinds/frames.d.ts.map +1 -0
- package/dist/harness/pico3/kinds/frames.js +75 -0
- package/dist/harness/pico3/kinds/frames.js.map +1 -0
- package/dist/harness/pico3/kinds/generation.d.ts +94 -0
- package/dist/harness/pico3/kinds/generation.d.ts.map +1 -0
- package/dist/harness/pico3/kinds/generation.js +504 -0
- package/dist/harness/pico3/kinds/generation.js.map +1 -0
- package/dist/harness/pico3/kinds/job.d.ts +44 -0
- package/dist/harness/pico3/kinds/job.d.ts.map +1 -0
- package/dist/harness/pico3/kinds/job.js +143 -0
- package/dist/harness/pico3/kinds/job.js.map +1 -0
- package/dist/harness/pico3/kinds/plugin.d.ts +15 -0
- package/dist/harness/pico3/kinds/plugin.d.ts.map +1 -0
- package/dist/harness/pico3/kinds/plugin.js +35 -0
- package/dist/harness/pico3/kinds/plugin.js.map +1 -0
- package/dist/harness/pico3/kinds/post-tools.d.ts +22 -0
- package/dist/harness/pico3/kinds/post-tools.d.ts.map +1 -0
- package/dist/harness/pico3/kinds/post-tools.js +145 -0
- package/dist/harness/pico3/kinds/post-tools.js.map +1 -0
- package/dist/harness/pico3/kinds/task-api.d.ts +3 -0
- package/dist/harness/pico3/kinds/task-api.d.ts.map +1 -0
- package/dist/harness/pico3/kinds/task-api.js +45 -0
- package/dist/harness/pico3/kinds/task-api.js.map +1 -0
- package/dist/harness/pico3/kinds/tool.d.ts +43 -0
- package/dist/harness/pico3/kinds/tool.d.ts.map +1 -0
- package/dist/harness/pico3/kinds/tool.js +373 -0
- package/dist/harness/pico3/kinds/tool.js.map +1 -0
- package/dist/harness/pico3/legacy-tracker.d.ts +11 -0
- package/dist/harness/pico3/legacy-tracker.d.ts.map +1 -0
- package/dist/harness/pico3/legacy-tracker.js +41 -0
- package/dist/harness/pico3/legacy-tracker.js.map +1 -0
- package/dist/harness/pico3/membrane.d.ts +23 -0
- package/dist/harness/pico3/membrane.d.ts.map +1 -0
- package/dist/harness/pico3/membrane.js +141 -0
- package/dist/harness/pico3/membrane.js.map +1 -0
- package/dist/harness/pico3/memory.d.ts +53 -0
- package/dist/harness/pico3/memory.d.ts.map +1 -0
- package/dist/harness/pico3/memory.js +264 -0
- package/dist/harness/pico3/memory.js.map +1 -0
- package/dist/harness/pico3/scheduler.d.ts +49 -0
- package/dist/harness/pico3/scheduler.d.ts.map +1 -0
- package/dist/harness/pico3/scheduler.js +438 -0
- package/dist/harness/pico3/scheduler.js.map +1 -0
- package/dist/harness/pico3/session.d.ts +264 -0
- package/dist/harness/pico3/session.d.ts.map +1 -0
- package/dist/harness/pico3/session.js +1348 -0
- package/dist/harness/pico3/session.js.map +1 -0
- package/dist/harness/pico3/system.d.ts +126 -0
- package/dist/harness/pico3/system.d.ts.map +1 -0
- package/dist/harness/pico3/system.js +244 -0
- package/dist/harness/pico3/system.js.map +1 -0
- package/dist/harness/pico3/types.d.ts +973 -0
- package/dist/harness/pico3/types.d.ts.map +1 -0
- package/dist/harness/pico3/types.js +106 -0
- package/dist/harness/pico3/types.js.map +1 -0
- package/dist/harness/pico3/view.d.ts +34 -0
- package/dist/harness/pico3/view.d.ts.map +1 -0
- package/dist/harness/pico3/view.js +411 -0
- package/dist/harness/pico3/view.js.map +1 -0
- package/dist/harness/prompt-templates.d.ts +3 -2
- package/dist/harness/prompt-templates.d.ts.map +1 -1
- package/dist/harness/prompt-templates.js +18 -23
- package/dist/harness/prompt-templates.js.map +1 -1
- package/dist/harness/result.d.ts +133 -0
- package/dist/harness/result.d.ts.map +1 -0
- package/dist/harness/result.js +81 -0
- package/dist/harness/result.js.map +1 -0
- package/dist/harness/runtime/drive/boundary.d.ts +28 -0
- package/dist/harness/runtime/drive/boundary.d.ts.map +1 -0
- package/dist/harness/runtime/drive/boundary.js +173 -0
- package/dist/harness/runtime/drive/boundary.js.map +1 -0
- package/dist/harness/runtime/drive/checkpoint.d.ts +8 -0
- package/dist/harness/runtime/drive/checkpoint.d.ts.map +1 -0
- package/dist/harness/runtime/drive/checkpoint.js +133 -0
- package/dist/harness/runtime/drive/checkpoint.js.map +1 -0
- package/dist/harness/runtime/drive/deferred.d.ts +15 -0
- package/dist/harness/runtime/drive/deferred.d.ts.map +1 -0
- package/dist/harness/runtime/drive/deferred.js +179 -0
- package/dist/harness/runtime/drive/deferred.js.map +1 -0
- package/dist/harness/runtime/drive/generation.d.ts +8 -0
- package/dist/harness/runtime/drive/generation.d.ts.map +1 -0
- package/dist/harness/runtime/drive/generation.js +205 -0
- package/dist/harness/runtime/drive/generation.js.map +1 -0
- package/dist/harness/runtime/drive/reconcile.d.ts +5 -0
- package/dist/harness/runtime/drive/reconcile.d.ts.map +1 -0
- package/dist/harness/runtime/drive/reconcile.js +140 -0
- package/dist/harness/runtime/drive/reconcile.js.map +1 -0
- package/dist/harness/runtime/drive/recovery.d.ts +8 -0
- package/dist/harness/runtime/drive/recovery.d.ts.map +1 -0
- package/dist/harness/runtime/drive/recovery.js +85 -0
- package/dist/harness/runtime/drive/recovery.js.map +1 -0
- package/dist/harness/runtime/drive/response.d.ts +23 -0
- package/dist/harness/runtime/drive/response.d.ts.map +1 -0
- package/dist/harness/runtime/drive/response.js +394 -0
- package/dist/harness/runtime/drive/response.js.map +1 -0
- package/dist/harness/runtime/drive/retry.d.ts +4 -0
- package/dist/harness/runtime/drive/retry.d.ts.map +1 -0
- package/dist/harness/runtime/drive/retry.js +34 -0
- package/dist/harness/runtime/drive/retry.js.map +1 -0
- package/dist/harness/runtime/drive/structural.d.ts +32 -0
- package/dist/harness/runtime/drive/structural.d.ts.map +1 -0
- package/dist/harness/runtime/drive/structural.js +929 -0
- package/dist/harness/runtime/drive/structural.js.map +1 -0
- package/dist/harness/runtime/drive/terminal.d.ts +7 -0
- package/dist/harness/runtime/drive/terminal.d.ts.map +1 -0
- package/dist/harness/runtime/drive/terminal.js +49 -0
- package/dist/harness/runtime/drive/terminal.js.map +1 -0
- package/dist/harness/runtime/drive/tool-placement.d.ts +14 -0
- package/dist/harness/runtime/drive/tool-placement.d.ts.map +1 -0
- package/dist/harness/runtime/drive/tool-placement.js +219 -0
- package/dist/harness/runtime/drive/tool-placement.js.map +1 -0
- package/dist/harness/runtime/drive/tools.d.ts +6 -0
- package/dist/harness/runtime/drive/tools.d.ts.map +1 -0
- package/dist/harness/runtime/drive/tools.js +449 -0
- package/dist/harness/runtime/drive/tools.js.map +1 -0
- package/dist/harness/runtime/drive.d.ts +6 -0
- package/dist/harness/runtime/drive.d.ts.map +1 -0
- package/dist/harness/runtime/drive.js +93 -0
- package/dist/harness/runtime/drive.js.map +1 -0
- package/dist/harness/runtime/harness.d.ts +59 -0
- package/dist/harness/runtime/harness.d.ts.map +1 -0
- package/dist/harness/runtime/harness.js +311 -0
- package/dist/harness/runtime/harness.js.map +1 -0
- package/dist/harness/runtime/index.d.ts +2 -0
- package/dist/harness/runtime/index.d.ts.map +1 -0
- package/dist/harness/runtime/index.js +2 -0
- package/dist/harness/runtime/index.js.map +1 -0
- package/dist/harness/runtime/lane.d.ts +118 -0
- package/dist/harness/runtime/lane.d.ts.map +1 -0
- package/dist/harness/runtime/lane.js +1575 -0
- package/dist/harness/runtime/lane.js.map +1 -0
- package/dist/harness/runtime/progress.d.ts +15 -0
- package/dist/harness/runtime/progress.d.ts.map +1 -0
- package/dist/harness/runtime/progress.js +66 -0
- package/dist/harness/runtime/progress.js.map +1 -0
- package/dist/harness/runtime/reducer.d.ts +5 -0
- package/dist/harness/runtime/reducer.d.ts.map +1 -0
- package/dist/harness/runtime/reducer.js +240 -0
- package/dist/harness/runtime/reducer.js.map +1 -0
- package/dist/harness/runtime/restore.d.ts +24 -0
- package/dist/harness/runtime/restore.d.ts.map +1 -0
- package/dist/harness/runtime/restore.js +117 -0
- package/dist/harness/runtime/restore.js.map +1 -0
- package/dist/harness/runtime/transcript.d.ts +21 -0
- package/dist/harness/runtime/transcript.d.ts.map +1 -0
- package/dist/harness/runtime/transcript.js +72 -0
- package/dist/harness/runtime/transcript.js.map +1 -0
- package/dist/harness/runtime/types.d.ts +105 -0
- package/dist/harness/runtime/types.d.ts.map +1 -0
- package/dist/harness/runtime/types.js +61 -0
- package/dist/harness/runtime/types.js.map +1 -0
- package/dist/harness/session/commit.d.ts +53 -0
- package/dist/harness/session/commit.d.ts.map +1 -0
- package/dist/harness/session/commit.js +57 -0
- package/dist/harness/session/commit.js.map +1 -0
- package/dist/harness/session/context.d.ts +10 -0
- package/dist/harness/session/context.d.ts.map +1 -0
- package/dist/harness/session/context.js +49 -0
- package/dist/harness/session/context.js.map +1 -0
- package/dist/harness/session/fork-policy.d.ts +21 -0
- package/dist/harness/session/fork-policy.d.ts.map +1 -0
- package/dist/harness/session/fork-policy.js +55 -0
- package/dist/harness/session/fork-policy.js.map +1 -0
- package/dist/harness/session/fork.d.ts +16 -0
- package/dist/harness/session/fork.d.ts.map +1 -0
- package/dist/harness/session/fork.js +79 -0
- package/dist/harness/session/fork.js.map +1 -0
- package/dist/harness/session/in-memory-storage-state.d.ts +39 -0
- package/dist/harness/session/in-memory-storage-state.d.ts.map +1 -0
- package/dist/harness/session/in-memory-storage-state.js +276 -0
- package/dist/harness/session/in-memory-storage-state.js.map +1 -0
- package/dist/harness/session/index.d.ts +11 -0
- package/dist/harness/session/index.d.ts.map +1 -0
- package/dist/harness/session/index.js +9 -0
- package/dist/harness/session/index.js.map +1 -0
- package/dist/harness/session/jsonl/codec.d.ts +21 -0
- package/dist/harness/session/jsonl/codec.d.ts.map +1 -0
- package/dist/harness/session/jsonl/codec.js +45 -0
- package/dist/harness/session/jsonl/codec.js.map +1 -0
- package/dist/harness/session/jsonl/fork.d.ts +38 -0
- package/dist/harness/session/jsonl/fork.d.ts.map +1 -0
- package/dist/harness/session/jsonl/fork.js +264 -0
- package/dist/harness/session/jsonl/fork.js.map +1 -0
- package/dist/harness/session/jsonl/index.d.ts +4 -0
- package/dist/harness/session/jsonl/index.d.ts.map +1 -0
- package/dist/harness/session/jsonl/index.js +4 -0
- package/dist/harness/session/jsonl/index.js.map +1 -0
- package/dist/harness/session/jsonl/io.d.ts +14 -0
- package/dist/harness/session/jsonl/io.d.ts.map +1 -0
- package/dist/harness/session/jsonl/io.js +86 -0
- package/dist/harness/session/jsonl/io.js.map +1 -0
- package/dist/harness/session/jsonl/legacy-v3.d.ts +44 -0
- package/dist/harness/session/jsonl/legacy-v3.d.ts.map +1 -0
- package/dist/harness/session/jsonl/legacy-v3.js +462 -0
- package/dist/harness/session/jsonl/legacy-v3.js.map +1 -0
- package/dist/harness/session/jsonl/repo.d.ts +35 -0
- package/dist/harness/session/jsonl/repo.d.ts.map +1 -0
- package/dist/harness/session/jsonl/repo.js +301 -0
- package/dist/harness/session/jsonl/repo.js.map +1 -0
- package/dist/harness/session/jsonl/storage.d.ts +41 -0
- package/dist/harness/session/jsonl/storage.d.ts.map +1 -0
- package/dist/harness/session/jsonl/storage.js +200 -0
- package/dist/harness/session/jsonl/storage.js.map +1 -0
- package/dist/harness/session/jsonl/types.d.ts +39 -0
- package/dist/harness/session/jsonl/types.d.ts.map +1 -0
- package/dist/harness/session/jsonl/types.js +3 -0
- package/dist/harness/session/jsonl/types.js.map +1 -0
- package/dist/harness/session/memory.d.ts +48 -0
- package/dist/harness/session/memory.d.ts.map +1 -0
- package/dist/harness/session/memory.js +369 -0
- package/dist/harness/session/memory.js.map +1 -0
- package/dist/harness/session/mutation-line.d.ts +8 -0
- package/dist/harness/session/mutation-line.d.ts.map +1 -0
- package/dist/harness/session/mutation-line.js +21 -0
- package/dist/harness/session/mutation-line.js.map +1 -0
- package/dist/harness/session/session.d.ts +79 -46
- package/dist/harness/session/session.d.ts.map +1 -1
- package/dist/harness/session/session.js +320 -220
- package/dist/harness/session/session.js.map +1 -1
- package/dist/harness/session/testing/benchmark/datasets.d.ts +12 -0
- package/dist/harness/session/testing/benchmark/datasets.d.ts.map +1 -0
- package/dist/harness/session/testing/benchmark/datasets.js +24 -0
- package/dist/harness/session/testing/benchmark/datasets.js.map +1 -0
- package/dist/harness/session/testing/benchmark/session-repo.d.ts +42 -0
- package/dist/harness/session/testing/benchmark/session-repo.d.ts.map +1 -0
- package/dist/harness/session/testing/benchmark/session-repo.js +127 -0
- package/dist/harness/session/testing/benchmark/session-repo.js.map +1 -0
- package/dist/harness/session/testing/benchmark/storage.d.ts +25 -0
- package/dist/harness/session/testing/benchmark/storage.d.ts.map +1 -0
- package/dist/harness/session/testing/benchmark/storage.js +114 -0
- package/dist/harness/session/testing/benchmark/storage.js.map +1 -0
- package/dist/harness/session/testing/conformance/session-repo.d.ts +23 -0
- package/dist/harness/session/testing/conformance/session-repo.d.ts.map +1 -0
- package/dist/harness/session/testing/conformance/session-repo.js +809 -0
- package/dist/harness/session/testing/conformance/session-repo.js.map +1 -0
- package/dist/harness/session/testing/conformance/storage.d.ts +4 -0
- package/dist/harness/session/testing/conformance/storage.d.ts.map +1 -0
- package/dist/harness/session/testing/conformance/storage.js +600 -0
- package/dist/harness/session/testing/conformance/storage.js.map +1 -0
- package/dist/harness/session/testing/gating-storage.d.ts +26 -0
- package/dist/harness/session/testing/gating-storage.d.ts.map +1 -0
- package/dist/harness/session/testing/gating-storage.js +100 -0
- package/dist/harness/session/testing/gating-storage.js.map +1 -0
- package/dist/harness/session/testing/index.d.ts +10 -0
- package/dist/harness/session/testing/index.d.ts.map +1 -0
- package/dist/harness/session/testing/index.js +9 -0
- package/dist/harness/session/testing/index.js.map +1 -0
- package/dist/harness/session/testing/instrumented-storage.d.ts +11 -0
- package/dist/harness/session/testing/instrumented-storage.d.ts.map +1 -0
- package/dist/harness/session/testing/instrumented-storage.js +16 -0
- package/dist/harness/session/testing/instrumented-storage.js.map +1 -0
- package/dist/harness/session/testing/storage-decorator.d.ts +20 -0
- package/dist/harness/session/testing/storage-decorator.d.ts.map +1 -0
- package/dist/harness/session/testing/storage-decorator.js +41 -0
- package/dist/harness/session/testing/storage-decorator.js.map +1 -0
- package/dist/harness/session/testing/types.d.ts +12 -0
- package/dist/harness/session/testing/types.d.ts.map +1 -0
- package/dist/harness/session/testing/types.js +2 -0
- package/dist/harness/session/testing/types.js.map +1 -0
- package/dist/harness/session/types.d.ts +512 -0
- package/dist/harness/session/types.d.ts.map +1 -0
- package/dist/harness/session/types.js +9 -0
- package/dist/harness/session/types.js.map +1 -0
- package/dist/harness/session/values.d.ts +95 -0
- package/dist/harness/session/values.d.ts.map +1 -0
- package/dist/harness/session/values.js +81 -0
- package/dist/harness/session/values.js.map +1 -0
- package/dist/harness/skills.d.ts +6 -4
- package/dist/harness/skills.d.ts.map +1 -1
- package/dist/harness/skills.js +59 -44
- package/dist/harness/skills.js.map +1 -1
- package/dist/harness/telemetry.d.ts +1242 -0
- package/dist/harness/telemetry.d.ts.map +1 -0
- package/dist/harness/telemetry.js +527 -0
- package/dist/harness/telemetry.js.map +1 -0
- package/dist/harness/tools/bash.d.ts +4 -4
- package/dist/harness/tools/bash.d.ts.map +1 -1
- package/dist/harness/tools/bash.js +66 -93
- package/dist/harness/tools/bash.js.map +1 -1
- package/dist/harness/tools/edit.d.ts.map +1 -1
- package/dist/harness/tools/edit.js +10 -10
- package/dist/harness/tools/edit.js.map +1 -1
- package/dist/harness/tools/file-mutation-queue.d.ts +2 -1
- package/dist/harness/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/harness/tools/file-mutation-queue.js +5 -5
- package/dist/harness/tools/file-mutation-queue.js.map +1 -1
- package/dist/harness/tools/image.js +1 -1
- package/dist/harness/tools/image.js.map +1 -1
- package/dist/harness/tools/path-utils.d.ts +3 -2
- package/dist/harness/tools/path-utils.d.ts.map +1 -1
- package/dist/harness/tools/path-utils.js +5 -5
- package/dist/harness/tools/path-utils.js.map +1 -1
- package/dist/harness/tools/read.d.ts +2 -1
- package/dist/harness/tools/read.d.ts.map +1 -1
- package/dist/harness/tools/read.js +4 -6
- package/dist/harness/tools/read.js.map +1 -1
- package/dist/harness/tools/write.d.ts.map +1 -1
- package/dist/harness/tools/write.js +7 -7
- package/dist/harness/tools/write.js.map +1 -1
- package/dist/harness/types.d.ts +126 -502
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +10 -16
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/utils/adaptive-publisher.d.ts +24 -0
- package/dist/harness/utils/adaptive-publisher.d.ts.map +1 -0
- package/dist/harness/utils/adaptive-publisher.js +79 -0
- package/dist/harness/utils/adaptive-publisher.js.map +1 -0
- package/dist/harness/utils/output-capture.d.ts +31 -0
- package/dist/harness/utils/output-capture.d.ts.map +1 -0
- package/dist/harness/utils/output-capture.js +217 -0
- package/dist/harness/utils/output-capture.js.map +1 -0
- package/dist/harness/utils/shell-output.d.ts +12 -5
- package/dist/harness/utils/shell-output.d.ts.map +1 -1
- package/dist/harness/utils/shell-output.js +64 -174
- package/dist/harness/utils/shell-output.js.map +1 -1
- package/dist/harness/utils/truncate.d.ts +1 -0
- package/dist/harness/utils/truncate.d.ts.map +1 -1
- package/dist/harness/utils/truncate.js +1 -1
- package/dist/harness/utils/truncate.js.map +1 -1
- package/dist/harness/utils/usage.d.ts +4 -0
- package/dist/harness/utils/usage.d.ts.map +1 -0
- package/dist/harness/utils/usage.js +33 -0
- package/dist/harness/utils/usage.js.map +1 -0
- package/dist/index.d.ts +13 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -13
- package/dist/index.js.map +1 -1
- package/dist/proxy.d.ts +6 -3
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +8 -0
- package/dist/proxy.js.map +1 -1
- package/dist/search/index.d.ts +29 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +2 -0
- package/dist/search/index.js.map +1 -0
- package/dist/types.d.ts +107 -31
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +50 -4
- package/dist/harness/session/jsonl-repo.d.ts +0 -26
- package/dist/harness/session/jsonl-repo.d.ts.map +0 -1
- package/dist/harness/session/jsonl-repo.js +0 -100
- package/dist/harness/session/jsonl-repo.js.map +0 -1
- package/dist/harness/session/jsonl-storage.d.ts +0 -42
- package/dist/harness/session/jsonl-storage.d.ts.map +0 -1
- package/dist/harness/session/jsonl-storage.js +0 -286
- package/dist/harness/session/jsonl-storage.js.map +0 -1
- package/dist/harness/session/memory-repo.d.ts +0 -18
- package/dist/harness/session/memory-repo.d.ts.map +0 -1
- package/dist/harness/session/memory-repo.js +0 -44
- package/dist/harness/session/memory-repo.js.map +0 -1
- package/dist/harness/session/memory-storage.d.ts +0 -33
- package/dist/harness/session/memory-storage.d.ts.map +0 -1
- package/dist/harness/session/memory-storage.js +0 -163
- package/dist/harness/session/memory-storage.js.map +0 -1
- package/dist/harness/session/repo-utils.d.ts +0 -11
- package/dist/harness/session/repo-utils.d.ts.map +0 -1
- package/dist/harness/session/repo-utils.js +0 -39
- package/dist/harness/session/repo-utils.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/harness/pico3/session.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Context, isJsonValue } from \"@draht/chord\";\nimport { createContextKey, withContextValue, withoutAbortSignal } from \"@draht/chord/context\";\nimport { isBase, type Op } from \"@draht/chord/delta\";\nimport { deriveContext } from \"./context.ts\";\nimport { type Tracker, track } from \"./legacy-tracker.ts\";\nimport { Membrane } from \"./membrane.ts\";\nimport {\n\ttype AnyKind,\n\ttype Checkpoint,\n\tClosed,\n\tCollapseInProgress,\n\ttype ContextView,\n\ttype Conversation,\n\tConversationBusy,\n\ttype ConversationSpec,\n\ttype CoreTx,\n\ttype DocRef,\n\ttype Entry,\n\ttype EntryInput,\n\ttype EntryKind,\n\ttype EntryRef,\n\ttype EntryScan,\n\tFaulted,\n\tForbidden,\n\tGenerationInProgress,\n\ttype Id,\n\ttype Input,\n\ttype InputOf,\n\ttype Invoker,\n\ttype JsonObject,\n\ttype JsonValue,\n\ttype Namespace,\n\ttype NamespaceRegistration,\n\ttype NewEntry,\n\ttype OwnedConversationSpec,\n\ttype QueuedInput,\n\tReadAfterWrite,\n\ttype RewindableState,\n\ttype SendInput,\n\ttype Seq,\n\ttype SessionState,\n\ttype SlotOf,\n\ttype StickyState,\n\ttype Storage,\n\ttype Task,\n\ttype TaskOf,\n\ttype TaskPatch,\n\ttype TaskRef,\n\ttype TaskScan,\n\ttype TaskSpec,\n\ttype ToolSlot,\n\ttype ViewEvent,\n\ttype Write,\n} from \"./types.ts\";\n\n// ---------------------------------------------------------------------------\n// Document cache and defaults\n// ---------------------------------------------------------------------------\n\nconst docKey = (ref: DocRef) => (ref.doc === \"session\" ? \"session\" : `${ref.doc}:${ref.conversationId}`);\n\n/** Remove matching elements from a tracked array IN PLACE (never `arr = arr.filter(...)` on a tracked doc). */\nexport function removeWhere<T>(arr: T[], pred: (item: T) => boolean): void {\n\tfor (let i = arr.length - 1; i >= 0; i--) if (pred(arr[i]!)) arr.splice(i, 1);\n}\n\nconst CORE_KINDS = new Set([\"pi.generation\", \"pi.tool\", \"pi.post_tools\", \"pi.collapse\"]);\nconst CORE_CONFIG_VALIDATORS: Readonly<Record<string, (value: JsonValue) => boolean>> = {\n\tmodel: (value) => exactObject(value, [\"provider\", \"modelId\"]) && value.provider !== \"\" && value.modelId !== \"\",\n\tthinkingLevel: (value) =>\n\t\ttypeof value === \"string\" && [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"].includes(value),\n\tselectedTools: (value) => Array.isArray(value) && value.every((name) => typeof name === \"string\"),\n\tprofile: (value) => typeof value === \"string\",\n\tretry: (value) =>\n\t\texactObject(value, [\"enabled\", \"maxRetries\", \"baseDelayMs\"], [\"maxAgentDelayMs\"]) &&\n\t\ttypeof value.enabled === \"boolean\" &&\n\t\ttypeof value.maxRetries === \"number\" &&\n\t\tNumber.isSafeInteger(value.maxRetries) &&\n\t\tvalue.maxRetries >= 0 &&\n\t\tfiniteNonnegative(value.baseDelayMs) &&\n\t\t(value.maxAgentDelayMs === undefined || finiteNonnegative(value.maxAgentDelayMs)),\n\tthreshold: (value) => typeof value === \"number\" && Number.isFinite(value),\n\tkeepRecent: finiteNonnegative,\n\tsteeringMode: (value) => value === \"all\" || value === \"one-at-a-time\",\n\tfollowUpMode: (value) => value === \"all\" || value === \"one-at-a-time\",\n};\n\nfunction finiteNonnegative(value: JsonValue | undefined): boolean {\n\treturn typeof value === \"number\" && Number.isFinite(value) && value >= 0;\n}\nfunction exactObject(\n\tvalue: JsonValue,\n\trequired: readonly string[],\n\toptional: readonly string[] = [],\n): value is JsonObject {\n\tif (value === null || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst keys = Object.keys(value);\n\treturn (\n\t\trequired.every((key) => Object.hasOwn(value, key)) &&\n\t\tkeys.every((key) => required.includes(key) || optional.includes(key))\n\t);\n}\nexport const isCoreKind = (name: string) => CORE_KINDS.has(name);\n\n/** Declared config defaults, derived from the registered kinds. Nothing is duplicated elsewhere. */\nexport class Defaults {\n\treadonly rewindable: JsonObject = {};\n\treadonly sticky: JsonObject = {};\n\treadonly route = new Map<string, \"rewindable\" | \"sticky\">();\n\tprivate readonly owners = new Map<string, AnyKind>();\n\tconstructor(kinds: Iterable<AnyKind>) {\n\t\tfor (const kind of kinds) this.register(kind);\n\t}\n\tregister(kind: AnyKind): void {\n\t\tconst declarations = ([\"rewindable\", \"sticky\"] as const).flatMap((doc) =>\n\t\t\tObject.entries(kind.config?.[doc] ?? {}).map(([key, value]) => ({ doc, key, value })),\n\t\t);\n\t\tconst local = new Set<string>();\n\t\tfor (const { key } of declarations) {\n\t\t\tif (local.has(key) || this.route.has(key))\n\t\t\t\tthrow new Error(`config key \"${key}\" declared by more than one kind`);\n\t\t\tlocal.add(key);\n\t\t}\n\t\tfor (const { doc, key, value } of declarations) {\n\t\t\tthis.route.set(key, doc);\n\t\t\tthis.owners.set(key, kind);\n\t\t\tif (value !== undefined) this[doc][key] = structuredClone(value);\n\t\t}\n\t}\n\tunregister(kind: AnyKind): void {\n\t\tfor (const [key, owner] of this.owners) {\n\t\t\tif (owner !== kind) continue;\n\t\t\tthis.owners.delete(key);\n\t\t\tconst doc = this.route.get(key);\n\t\t\tthis.route.delete(key);\n\t\t\tif (doc !== undefined) delete this[doc][key];\n\t\t}\n\t}\n\tvalidate(key: string, value: unknown): value is JsonValue {\n\t\tif (!isJsonValue(value)) return false;\n\t\tconst core = CORE_CONFIG_VALIDATORS[key];\n\t\tif (core !== undefined) return core(value);\n\t\treturn this.route.has(key);\n\t}\n\tvalidateSeed(doc: \"rewindable\" | \"sticky\", seed: object): JsonObject {\n\t\tconst out: JsonObject = {};\n\t\tfor (const [key, value] of Object.entries(seed)) {\n\t\t\tif (value === undefined) continue;\n\t\t\tif (this.route.get(key) !== doc || !this.validate(key, value))\n\t\t\t\tthrow new TypeError(`invalid ${doc} config value for \"${key}\"`);\n\t\t\tout[key] = structuredClone(value);\n\t\t}\n\t\treturn out;\n\t}\n\t/** Fill declared keys that are absent (never `??`: a stored null is a value). */\n\tfill(doc: \"rewindable\" | \"sticky\", target: JsonObject) {\n\t\tfor (const [key, value] of Object.entries(this[doc])) if (!(key in target)) target[key] = structuredClone(value);\n\t}\n\tfreshRewindable(over: Partial<RewindableState> = {}, preservePlugins = false): RewindableState {\n\t\tconst base: JsonObject = { plugins: {} };\n\t\tthis.fill(\"rewindable\", base);\n\t\tconst { plugins, ...raw } = over;\n\t\tconst rest = preservePlugins ? (raw as JsonObject) : this.validateSeed(\"rewindable\", raw);\n\t\treturn {\n\t\t\t...base,\n\t\t\t...rest,\n\t\t\t...(preservePlugins && plugins !== undefined ? { plugins: structuredClone(plugins) } : {}),\n\t\t} as unknown as RewindableState;\n\t}\n\tfreshSticky(over: Partial<StickyState> = {}): StickyState {\n\t\tconst base: JsonObject = { inbox: [], turn: { tools: [] }, tasks: {}, plugins: {} };\n\t\tthis.fill(\"sticky\", base);\n\t\tconst { inbox: _inbox, turn: _turn, tasks: _tasks, plugins: _plugins, ...raw } = over;\n\t\treturn { ...base, ...this.validateSeed(\"sticky\", raw) } as unknown as StickyState;\n\t}\n}\n\nclass Docs {\n\tprivate readonly trackers = new Map<string, Tracker<object>>();\n\tprivate readonly storage: Storage;\n\tprivate readonly defaults: Defaults;\n\t/** Bytes of ops written since the last base, per document. Drives rebase+truncate. */\n\treadonly sinceBase = new Map<string, number>();\n\tconstructor(storage: Storage, defaults: Defaults) {\n\t\tthis.storage = storage;\n\t\tthis.defaults = defaults;\n\t}\n\tnoteOps(ref: DocRef, ops: Op[]) {\n\t\tconst key = docKey(ref);\n\t\tthis.sinceBase.set(key, isBase(ops) ? 0 : (this.sinceBase.get(key) ?? 0) + JSON.stringify(ops).length);\n\t}\n\trequestBase(ref: DocRef) {\n\t\tthis.trackers.get(docKey(ref))?.rebase();\n\t}\n\tasync get(ref: DocRef, ctx: Context): Promise<Tracker<object>> {\n\t\tconst key = docKey(ref);\n\t\tconst cached = this.trackers.get(key);\n\t\tif (cached !== undefined) return cached;\n\t\tconst stored = await this.storage.doc(ref, ctx);\n\t\tif (stored === undefined) throw new Error(`document ${key} does not exist`);\n\t\tif (ref.doc !== \"session\") this.defaults.fill(ref.doc, stored); // declared defaults are visible without being persisted\n\t\tconst t = track(stored as object);\n\t\tt.flush(); // consume the synthetic first flush; never persisted\n\t\tthis.trackers.set(key, t);\n\t\treturn t;\n\t}\n\tevict(ref: DocRef) {\n\t\tthis.trackers.delete(docKey(ref));\n\t}\n\tpeek(ref: DocRef): Tracker<object> | undefined {\n\t\treturn this.trackers.get(docKey(ref));\n\t}\n\tloaded(ref: DocRef): JsonObject | undefined {\n\t\treturn this.trackers.get(docKey(ref))?.target as JsonObject | undefined;\n\t}\n\tadopt(ref: DocRef, tracker: Tracker<object>) {\n\t\tthis.trackers.set(docKey(ref), tracker);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Transaction: one implementation, capability-checked per method.\n// ---------------------------------------------------------------------------\n\nexport interface CommitChanges {\n\tentries: Entry[];\n\ttasks: Task[];\n\tinputs: Input[];\n\tconversations: Conversation[];\n\tdocs: { ref: DocRef; ops: Op[] }[];\n\tevents: { conversationId: Id; event: ViewEvent }[];\n}\n\n/** Session-side conversation index: owner/parent graph for subtree checks and ancestry. */\nexport interface ConversationIndex {\n\tget(id: Id): Conversation | undefined;\n\t/** Conversation ids in the subtree rooted at `root` (inclusive), via ownership. */\n\tsubtree(root: Id): Set<Id>;\n\t/** Conversation ids from the root down to `id` (exclusive of `id`) via ownership. */\n\tancestors(id: Id): Id[];\n}\n\nconst HOST_TX_METHODS = [\n\t\"conversation\",\n\t\"entry\",\n\t\"entries\",\n\t\"newestEntry\",\n\t\"scanEntries\",\n\t\"context\",\n\t\"task\",\n\t\"tasks\",\n\t\"input\",\n\t\"rewindableAsOf\",\n\t\"snapshot\",\n\t\"plugins\",\n\t\"emit\",\n\t\"config\",\n\t\"write\",\n\t\"createTask\",\n\t\"createConversation\",\n] as const;\nconst TASK_TX_METHODS = [\"checkpoint\", \"slot\"] as const;\nconst CORE_TX_METHODS = [\n\t\"rewindable\",\n\t\"sticky\",\n\t\"session\",\n\t\"toolSlot\",\n\t\"appendEntry\",\n\t\"send\",\n\t\"resolveInputs\",\n\t\"boundary\",\n\t\"markTask\",\n\t\"setTask\",\n\t\"withdrawInput\",\n\t\"createOwnedConversation\",\n\t\"createForkConversation\",\n] as const;\nconst CALLBACK_TX_METHODS = new Set<string>([...HOST_TX_METHODS, ...TASK_TX_METHODS, ...CORE_TX_METHODS]);\n\nclass TxImpl implements CoreTx {\n\tprivate readonly writes: Write[] = [];\n\tprivate readonly touched = new Map<string, { ref: DocRef; tracker: Tracker<object> }>();\n\tprivate readonly membrane = new Membrane(\"tx\");\n\t// Overlays for direct reads: complete for the tables a closure reads after writing.\n\tprivate readonly createdTasks = new Map<Id, Task>();\n\tprivate readonly createdEntries = new Map<Id, Entry>();\n\tprivate readonly createdConversations = new Map<Id, Conversation>();\n\tprivate readonly inputsById = new Map<Id, Input>();\n\tprivate readonly inputsByRequest = new Map<string, Input>();\n\t/**\n\t * Transaction-local identity cache for heterogeneous namespace façades.\n\t * Keys are current namespace token objects, validated before lookup; values are\n\t * merged membrane wrappers. TxImpl owns the map and revoke() invalidates every value.\n\t */\n\tprivate readonly namespaceViews = new Map<object, object>();\n\tprivate readonly changedConfig = new Map<Id, Set<string>>();\n\t// Domains written: scans over them reject.\n\tprivate readonly wroteEntries = new Set<Id>();\n\tprivate wroteTasks = false;\n\tprivate poisoned: Error | undefined;\n\tprivate surfaceActive = true;\n\t/** Set while a terminal closure runs: the invoker's task counts as gone for busy(). */\n\tclosing = false;\n\treadonly changes: CommitChanges = { entries: [], tasks: [], inputs: [], conversations: [], docs: [], events: [] };\n\treadonly invoker: Invoker;\n\tprivate readonly storage: Storage;\n\tprivate readonly docs: Docs;\n\tprivate readonly defaults: Defaults;\n\tprivate readonly kinds: ReadonlyMap<string, AnyKind>;\n\tprivate readonly namespaces: ReadonlyMap<string, NamespaceRegistration>;\n\tprivate readonly liveTasks: ReadonlyMap<Id, Task>;\n\tprivate readonly conversations: ConversationIndex;\n\tprivate readonly now: () => number;\n\tprivate readonly ctx: Context;\n\n\tconstructor(\n\t\tinvoker: Invoker,\n\t\tstorage: Storage,\n\t\tdocs: Docs,\n\t\tdefaults: Defaults,\n\t\tkinds: ReadonlyMap<string, AnyKind>,\n\t\tnamespaces: ReadonlyMap<string, NamespaceRegistration>,\n\t\tliveTasks: ReadonlyMap<Id, Task>,\n\t\tconversations: ConversationIndex,\n\t\tnow: () => number,\n\t\tctx: Context,\n\t) {\n\t\tthis.invoker = invoker;\n\t\tthis.storage = storage;\n\t\tthis.docs = docs;\n\t\tthis.defaults = defaults;\n\t\tthis.kinds = kinds;\n\t\tthis.namespaces = namespaces;\n\t\tthis.liveTasks = liveTasks;\n\t\tthis.conversations = conversations;\n\t\tthis.now = now;\n\t\tthis.ctx = ctx;\n\t}\n\n\tcallbackSurface(): TxImpl {\n\t\tconst implementation = this as unknown as Record<string, unknown>;\n\t\tconst methods = new Map<string, (...args: unknown[]) => unknown>();\n\t\tconst target = Object.freeze(Object.create(null)) as object;\n\t\treturn new Proxy(target, {\n\t\t\tget: (_target, key) => {\n\t\t\t\tif (typeof key !== \"string\" || !CALLBACK_TX_METHODS.has(key)) return undefined;\n\t\t\t\tconst cached = methods.get(key);\n\t\t\t\tif (cached !== undefined) return cached;\n\t\t\t\tconst method = implementation[key];\n\t\t\t\tif (typeof method !== \"function\") throw new Error(`transaction method ${key} is missing`);\n\t\t\t\tconst bound = (...args: unknown[]) => {\n\t\t\t\t\tthis.assertSurfaceActive();\n\t\t\t\t\treturn Reflect.apply(method, this, args);\n\t\t\t\t};\n\t\t\t\tmethods.set(key, bound);\n\t\t\t\treturn bound;\n\t\t\t},\n\t\t}) as unknown as TxImpl;\n\t}\n\tcloseSurface(): void {\n\t\tthis.surfaceActive = false;\n\t}\n\tprivate assertSurfaceActive(): void {\n\t\tif (!this.surfaceActive) throw new TypeError(\"transaction used outside its callback\");\n\t}\n\n\t// --- capability & scope -------------------------------------------------\n\n\tprivate get core() {\n\t\treturn this.invoker.type === \"kernel\" || (this.invoker.type === \"task\" && this.invoker.core);\n\t}\n\tprivate assertCore(what: string) {\n\t\tif (!this.core) throw new Forbidden(`${what}: core turn machinery only`);\n\t}\n\tprivate assertNotHost(what: string) {\n\t\tif (this.invoker.type !== \"task\") throw new Forbidden(`${what} outside a task`);\n\t}\n\t/** A task may touch its own conversation and the subtree it owns. The host and core may touch anything. */\n\tprivate inScope(conversationId: Id): boolean {\n\t\tif (this.invoker.type !== \"task\" || this.invoker.core) return true;\n\t\tif (conversationId === this.invoker.conversationId || this.createdConversations.has(conversationId)) return true;\n\t\tconst task = this.createdTasks.get(this.invoker.id) ?? this.liveTasks.get(this.invoker.id);\n\t\tfor (const root of task?.owns ?? []) if (this.conversations.subtree(root).has(conversationId)) return true;\n\t\treturn false;\n\t}\n\tprivate assertScope(conversationId: Id, what: string) {\n\t\tif (!this.inScope(conversationId))\n\t\t\tthrow new Forbidden(`${what}: conversation ${conversationId} is outside this task's subtree`);\n\t}\n\tprivate assertEntryScope(entry: Entry, what: string) {\n\t\tif (this.inScope(entry.conversationId)) return;\n\t\tif (this.invoker.type !== \"task\" || this.invoker.core)\n\t\t\tthrow new Forbidden(`${what}: entry ${entry.id} is outside this task's subtree`);\n\t\tconst candidates = new Set<Id>([this.invoker.conversationId, ...this.createdConversations.keys()]);\n\t\tconst task = this.createdTasks.get(this.invoker.id) ?? this.liveTasks.get(this.invoker.id);\n\t\tfor (const root of task?.owns ?? []) for (const id of this.conversations.subtree(root)) candidates.add(id);\n\t\tfor (const candidate of candidates) {\n\t\t\tlet conversation = this.createdConversations.get(candidate) ?? this.conversations.get(candidate);\n\t\t\twhile (conversation?.parent !== undefined) {\n\t\t\t\tif (conversation.parent.conversationId === entry.conversationId && entry.id <= conversation.parent.at)\n\t\t\t\t\treturn;\n\t\t\t\tconversation = this.conversations.get(conversation.parent.conversationId);\n\t\t\t}\n\t\t}\n\t\tthrow new Forbidden(`${what}: entry ${entry.id} is not visible from this task's subtree`);\n\t}\n\tprivate poison(error: Error): never {\n\t\tthis.poisoned ??= error;\n\t\tthrow error;\n\t}\n\tprivate assertNoEntryWrites(conversationId: Id, read: string) {\n\t\tif (this.wroteEntries.has(conversationId)) this.poison(new ReadAfterWrite(read, \"entry append\"));\n\t}\n\tprivate assertNoTaskWrites(read: string) {\n\t\tif (this.wroteTasks) this.poison(new ReadAfterWrite(read, \"task write\"));\n\t}\n\tget poison_(): Error | undefined {\n\t\treturn this.poisoned;\n\t}\n\n\t// --- reads (direct reads see this transaction's writes) -------------------\n\n\tasync conversation(id: Id) {\n\t\tthis.assertScope(id, \"conversation\");\n\t\treturn this.createdConversations.get(id) ?? (await this.storage.conversation(id, this.ctx));\n\t}\n\tentry(id: Id): Promise<Entry | undefined>;\n\tentry<E extends Entry>(kind: EntryKind<E>, id: Id): Promise<E | undefined>;\n\tasync entry(a: Id | EntryKind, b?: Id): Promise<Entry | undefined> {\n\t\tconst id = typeof a === \"number\" ? a : b!;\n\t\tconst e = this.createdEntries.get(id) ?? (await this.storage.entries([id], this.ctx)).get(id);\n\t\tif (e !== undefined) this.assertEntryScope(e, \"entry\");\n\t\treturn typeof a === \"number\" || a.is(e) ? e : undefined;\n\t}\n\tasync entries(ids: readonly Id[]) {\n\t\tconst out = await this.storage.entries(\n\t\t\tids.filter((id) => !this.createdEntries.has(id)),\n\t\t\tthis.ctx,\n\t\t);\n\t\tfor (const id of ids) {\n\t\t\tconst c = this.createdEntries.get(id);\n\t\t\tif (c) out.set(id, c);\n\t\t}\n\t\tfor (const entry of out.values()) this.assertEntryScope(entry, \"entries\");\n\t\treturn out;\n\t}\n\tnewestEntry(conversationId: Id, opts?: { kind?: string; withHead?: boolean }): Promise<Entry | undefined>;\n\tnewestEntry<E extends Entry>(conversationId: Id, kind: EntryKind<E>): Promise<E | undefined>;\n\tasync newestEntry(\n\t\tconversationId: Id,\n\t\topts: { kind?: string; withHead?: boolean } | EntryKind = {},\n\t): Promise<Entry | undefined> {\n\t\tthis.assertScope(conversationId, \"newestEntry\");\n\t\tthis.assertNoEntryWrites(conversationId, \"newestEntry\");\n\t\tconst scan = \"is\" in opts ? { kind: opts.kind } : opts;\n\t\tconst [e] = await this.storage.scanEntries({ conversationId, ...scan, limit: 1 }, this.ctx);\n\t\treturn e;\n\t}\n\tscanEntries(scan: EntryScan) {\n\t\tthis.assertScope(scan.conversationId, \"scanEntries\");\n\t\tthis.assertNoEntryWrites(scan.conversationId, \"scanEntries\");\n\t\treturn this.storage.scanEntries(scan, this.ctx);\n\t}\n\tasync context(conversationId: Id, at?: Id): Promise<ContextView> {\n\t\tthis.assertScope(conversationId, \"context\");\n\t\tthis.assertNoEntryWrites(conversationId, \"context\");\n\t\treturn deriveContext(this.storage, conversationId, at, this.ctx);\n\t}\n\ttask(id: Id): Promise<Task | undefined>;\n\ttask<K extends AnyKind>(ref: TaskRef<K>): Promise<TaskOf<K> | undefined>;\n\tasync task(a: Id | TaskRef): Promise<Task | undefined> {\n\t\tconst id = typeof a === \"number\" ? a : a.id;\n\t\tconst task = this.createdTasks.get(id) ?? this.liveTasks.get(id) ?? (await this.storage.task(id, this.ctx));\n\t\tif (task !== undefined) this.assertScope(task.conversationId, \"task\");\n\t\treturn task;\n\t}\n\tasync tasks(scan: TaskScan) {\n\t\tthis.assertNoTaskWrites(\"tasks\");\n\t\tif (scan.conversationId !== undefined) this.assertScope(scan.conversationId, \"tasks\");\n\t\tconst rows = await this.storage.scanTasks(scan, this.ctx);\n\t\tconst seen = new Set(rows.map((t) => t.id));\n\t\tfor (const t of this.liveTasks.values())\n\t\t\tif (\n\t\t\t\t!seen.has(t.id) &&\n\t\t\t\t(scan.conversationId === undefined || t.conversationId === scan.conversationId) &&\n\t\t\t\t(scan.kind === undefined || t.kind === scan.kind)\n\t\t\t)\n\t\t\t\trows.push(t);\n\t\treturn rows.filter((t) => scan.status === undefined || scan.status.includes(t.status));\n\t}\n\tasync input(id: Id) {\n\t\tconst input = this.inputsById.get(id) ?? (await this.storage.input(id, this.ctx));\n\t\tif (input !== undefined) this.assertScope(input.conversationId, \"input\");\n\t\treturn input;\n\t}\n\tprivate async inputByRequest(conversationId: Id, requestId: string) {\n\t\tthis.assertScope(conversationId, \"inputByRequest\");\n\t\treturn (\n\t\t\tthis.inputsByRequest.get(`${conversationId}:${requestId}`) ??\n\t\t\t(await this.storage.inputByRequest(conversationId, requestId, this.ctx))\n\t\t);\n\t}\n\tasync rewindableAsOf(conversationId: Id, at: Id): Promise<RewindableState | undefined> {\n\t\tthis.assertScope(conversationId, \"rewindableAsOf\");\n\t\treturn this.storage.docAsOf(conversationId, at, this.ctx) as Promise<RewindableState | undefined>;\n\t}\n\n\tsnapshot(ref: { doc: \"rewindable\"; conversationId: Id }): RewindableState;\n\tsnapshot(ref: { doc: \"sticky\"; conversationId: Id }): StickyState;\n\tsnapshot(ref: { doc: \"session\" }): SessionState;\n\tsnapshot(ref: DocRef): object {\n\t\tif (ref.doc !== \"session\") this.assertScope(ref.conversationId, \"snapshot\");\n\t\tconst value = plain(this.doc(ref).state) as JsonObject;\n\t\tif (ref.doc !== \"session\") {\n\t\t\tthis.defaults.fill(ref.doc, value);\n\t\t\tif (this.invoker.type === \"task\") {\n\t\t\t\tfor (const [key, fallback] of Object.entries(this.invoker.kind.config?.[ref.doc] ?? {})) {\n\t\t\t\t\tif (!(key in value) && fallback !== undefined) value[key] = structuredClone(fallback);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\n\t// --- documents ----------------------------------------------------------\n\n\tprivate doc(ref: DocRef): Tracker<object> {\n\t\tconst key = docKey(ref);\n\t\tconst hit = this.touched.get(key);\n\t\tif (hit !== undefined) return hit.tracker;\n\t\tconst cached = this.docs.peek(ref);\n\t\tif (cached !== undefined) {\n\t\t\tthis.touched.set(key, { ref, tracker: cached });\n\t\t\treturn cached;\n\t\t}\n\t\tthrow new Error(`document ${key} not loaded; pass it in commit({ docs })`);\n\t}\n\tprivate view<T extends object>(ref: DocRef): T {\n\t\treturn this.membrane.wrap(this.doc(ref).state as T);\n\t}\n\tasync preload(refs: DocRef[]) {\n\t\tfor (const ref of refs) {\n\t\t\tconst key = docKey(ref);\n\t\t\tif (this.touched.has(key)) continue;\n\t\t\tthis.touched.set(key, { ref, tracker: await this.docs.get(ref, this.ctx) });\n\t\t}\n\t}\n\n\trewindable(conversationId: Id): RewindableState {\n\t\tthis.assertCore(\"rewindable document\");\n\t\treturn this.view<RewindableState>({ doc: \"rewindable\", conversationId });\n\t}\n\tsticky(conversationId: Id): StickyState {\n\t\tthis.assertCore(\"sticky document\");\n\t\treturn this.view<StickyState>({ doc: \"sticky\", conversationId });\n\t}\n\tsession(): SessionState {\n\t\tthis.assertCore(\"session document\");\n\t\treturn this.view<SessionState>({ doc: \"session\" });\n\t}\n\t/** Internal, unchecked. */\n\tprivate raw<T extends object>(ref: DocRef): T {\n\t\treturn this.view<T>(ref);\n\t}\n\n\tplugins<T extends JsonObject>(namespace: Namespace<T>): T {\n\t\tconst registration = this.namespaces.get(namespace.id);\n\t\tif (registration?.token !== namespace) throw new Forbidden(`namespace \"${namespace.id}\" is stale`);\n\t\tconst cached = this.namespaceViews.get(namespace);\n\t\tif (cached !== undefined) return cached as T;\n\t\tconst conversationId = this.invocationConversationId(`plugins(${namespace.id})`);\n\t\tconst target = {};\n\t\tfor (const [key, doc] of registration.routes) {\n\t\t\tconst ref: DocRef = doc === \"session\" ? { doc } : { doc, conversationId };\n\t\t\tconst document = this.raw<{ plugins: { [key: string]: JsonObject } }>(ref);\n\t\t\tif (!Object.hasOwn(document.plugins, namespace.id)) document.plugins[namespace.id] = {};\n\t\t\tconst slice = document.plugins[namespace.id]!;\n\t\t\tconst defaultValue = registration.defaults[doc][key];\n\t\t\tif (!(key in slice) && defaultValue !== undefined) slice[key] = plain(defaultValue);\n\t\t\tObject.defineProperty(target, key, {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => slice[key],\n\t\t\t\tset: (value: JsonValue) => {\n\t\t\t\t\tslice[key] = value;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tObject.preventExtensions(target);\n\t\tconst view = this.membrane.wrap(target);\n\t\tthis.namespaceViews.set(namespace, view);\n\t\treturn view as T;\n\t}\n\n\temit<T extends JsonObject>(namespace: Namespace<T>, name: string, data: JsonValue): void;\n\temit(event: ViewEvent): void;\n\temit<T extends JsonObject>(namespaceOrEvent: Namespace<T> | ViewEvent, name?: string, data?: JsonValue): void {\n\t\tconst conversationId = this.invocationConversationId(\"emit\");\n\t\tif (\"id\" in namespaceOrEvent && \"unregister\" in namespaceOrEvent) {\n\t\t\tif (this.namespaces.get(namespaceOrEvent.id)?.token !== namespaceOrEvent)\n\t\t\t\tthrow new Forbidden(`namespace \"${namespaceOrEvent.id}\" is stale`);\n\t\t\tif (name === undefined || data === undefined || !/^[a-z][a-z0-9_.-]*$/i.test(name))\n\t\t\t\tthrow new Error(\"invalid plugin event\");\n\t\t\tthis.changes.events.push({\n\t\t\t\tconversationId,\n\t\t\t\tevent: { type: `plugin.${namespaceOrEvent.id}.${name}`, data: plain(data) },\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.assertCore(\"core event\");\n\t\tthis.changes.events.push({ conversationId, event: plain(namespaceOrEvent) });\n\t}\n\n\tprivate invocationConversationId(what: string): Id {\n\t\tconst conversationId = this.invoker.conversationId;\n\t\tif (conversationId === undefined) throw new Forbidden(`${what}: no conversation is bound to this transaction`);\n\t\tthis.assertScope(conversationId, what);\n\t\treturn conversationId;\n\t}\n\n\tconfig(conversationId: Id) {\n\t\tthis.assertScope(conversationId, \"config\");\n\t\tconst definition = (key: string): { doc: \"rewindable\" | \"sticky\"; fallback: JsonValue | undefined } => {\n\t\t\tif (this.invoker.type === \"task\") {\n\t\t\t\tfor (const doc of [\"rewindable\", \"sticky\"] as const) {\n\t\t\t\t\tconst declared = this.invoker.kind.config?.[doc];\n\t\t\t\t\tif (declared !== undefined && Object.hasOwn(declared, key)) return { doc, fallback: declared[key] };\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst doc = this.defaults.route.get(key);\n\t\t\tif (doc === undefined) throw new Error(`unknown config key \"${key}\"`);\n\t\t\treturn { doc, fallback: this.defaults[doc][key] };\n\t\t};\n\t\tconst assertWritable = (key: string) => {\n\t\t\tif (this.invoker.type === \"task\" && !this.invoker.core)\n\t\t\t\tthrow new Forbidden(`config(${key}): ordinary tasks cannot write config`);\n\t\t};\n\t\treturn {\n\t\t\tget: (key: string) => {\n\t\t\t\tthis.assertSurfaceActive();\n\t\t\t\tconst { doc, fallback } = definition(key);\n\t\t\t\tconst document = this.doc({ doc, conversationId }).state as JsonObject;\n\t\t\t\treturn key in document ? plain(document[key]) : fallback === undefined ? undefined : plain(fallback);\n\t\t\t},\n\t\t\tset: (key: string, value: JsonValue) => {\n\t\t\t\tthis.assertSurfaceActive();\n\t\t\t\tassertWritable(key);\n\t\t\t\tconst { doc } = definition(key);\n\t\t\t\tif (!this.defaults.validate(key, value)) throw new TypeError(`invalid config value for \"${key}\"`);\n\t\t\t\tthis.raw<JsonObject>({ doc, conversationId })[key] = structuredClone(value);\n\t\t\t\tconst keys = this.changedConfig.get(conversationId) ?? new Set<string>();\n\t\t\t\tkeys.add(key);\n\t\t\t\tthis.changedConfig.set(conversationId, keys);\n\t\t\t},\n\t\t\treset: (key: string) => {\n\t\t\t\tthis.assertSurfaceActive();\n\t\t\t\tassertWritable(key);\n\t\t\t\tconst { doc } = definition(key);\n\t\t\t\tdelete this.raw<JsonObject>({ doc, conversationId })[key];\n\t\t\t\tconst keys = this.changedConfig.get(conversationId) ?? new Set<string>();\n\t\t\t\tkeys.add(key);\n\t\t\t\tthis.changedConfig.set(conversationId, keys);\n\t\t\t},\n\t\t};\n\t}\n\n\tslot<K extends AnyKind>(ref: TaskRef<K>): SlotOf<K> {\n\t\tthis.assertNotHost(\"slot\");\n\t\tconst inv = this.invoker as Extract<Invoker, { type: \"task\" }>;\n\t\tconst task = this.liveTasks.get(ref.id) ?? this.createdTasks.get(ref.id);\n\t\tif (task === undefined) throw new Error(`task ${ref.id} is not live`);\n\t\tif (!inv.core && ref.id !== inv.id) throw new Forbidden(\"slot: another task's slot\");\n\t\tconst s = this.raw<StickyState>({ doc: \"sticky\", conversationId: task.conversationId });\n\t\tif (!(String(ref.id) in s.tasks)) s.tasks[ref.id] = (ref.kind.slot ?? (() => ({})))(task.input as never);\n\t\treturn s.tasks[ref.id] as never;\n\t}\n\ttoolSlot(task: { conversationId: Id; input: { index: number } }): ToolSlot {\n\t\tthis.assertCore(\"toolSlot\");\n\t\tconst slot = this.raw<StickyState>({ doc: \"sticky\", conversationId: task.conversationId }).turn.tools[\n\t\t\ttask.input.index\n\t\t];\n\t\tif (slot === undefined) throw new Error(`no tool slot at index ${task.input.index}`);\n\t\treturn slot;\n\t}\n\n\t// --- writes -------------------------------------------------------------\n\n\tappendEntry(conversationId: Id, entry: NewEntry): Id;\n\tappendEntry<E extends Entry>(conversationId: Id, kind: EntryKind<E>, entry: EntryInput<E>): EntryRef<E>;\n\tappendEntry(conversationId: Id, a: NewEntry | EntryKind, b?: object): Id | EntryRef {\n\t\tthis.assertCore(\"appendEntry\");\n\t\tif (\"is\" in a)\n\t\t\treturn {\n\t\t\t\tid: this.appendEntryInternal(conversationId, { ...(b as object), kind: a.kind } as NewEntry),\n\t\t\t\tkind: a,\n\t\t\t};\n\t\treturn this.appendEntryInternal(conversationId, a);\n\t}\n\tprivate appendEntryInternal(conversationId: Id, entry: NewEntry): Id {\n\t\tif (this.invoker.type === \"task\" && !this.liveTasks.has(this.invoker.id) && !this.closing)\n\t\t\tthrow new Forbidden(\"appendEntry from a task that is not live\");\n\t\tconst id = this.storage.mintId();\n\t\tconst head = entry.head === \"self\" ? id : entry.head;\n\t\tconst { head: _h, ...rest } = entry;\n\t\tconst record = plain<Entry>({\n\t\t\t...rest,\n\t\t\tid,\n\t\t\tconversationId,\n\t\t\t...(head === undefined ? {} : { head }),\n\t\t\t...(this.invoker.type === \"task\" ? { byTaskId: this.invoker.id } : {}),\n\t\t});\n\t\tvalidateEntry(record);\n\t\tthis.writes.push({ type: \"entry\", entry: record });\n\t\tthis.changes.entries.push(record);\n\t\tif (record.head !== undefined)\n\t\t\tthis.changes.events.push({ conversationId, event: { type: \"head.moved\", entry: record } });\n\t\tthis.changes.events.push({ conversationId, event: { type: \"entry.added\", entry: record } });\n\t\tthis.createdEntries.set(id, record);\n\t\tthis.wroteEntries.add(conversationId);\n\t\treturn id;\n\t}\n\n\twrite(conversationId: Id, entry: NewEntry): Promise<Id>;\n\twrite<E extends Entry>(conversationId: Id, kind: EntryKind<E>, entry: EntryInput<E>): Promise<Id>;\n\tasync write(conversationId: Id, a: NewEntry | EntryKind, b?: object): Promise<Id> {\n\t\tthis.assertScope(conversationId, \"write\");\n\t\tconst entry: NewEntry = \"is\" in a ? ({ ...(b as object), kind: a.kind } as NewEntry) : a;\n\t\tif (!this.core) {\n\t\t\tif (entry.head !== undefined) throw new Forbidden(\"write: head entries are core only\");\n\t\t\tif (entry.edits !== undefined) throw new Forbidden(\"write: edits are core only\");\n\t\t\tif (entry.kind.startsWith(\"pi.\") && entry.kind !== \"pi.notice\")\n\t\t\t\tthrow new Forbidden(`write: kind ${entry.kind} is reserved`);\n\t\t\tif (entry.kind === \"pi.notice\" && (entry.model?.length !== 1 || entry.model[0]?.role !== \"user\")) {\n\t\t\t\tthrow new Forbidden(\"write: pi.notice requires exactly one user model message\");\n\t\t\t}\n\t\t}\n\t\tif (this.busy(conversationId)) {\n\t\t\tconst id = this.storage.mintId();\n\t\t\tthis.raw<StickyState>({ doc: \"sticky\", conversationId }).inbox.push({\n\t\t\t\tid,\n\t\t\t\tmode: \"write\",\n\t\t\t\tentry: structuredClone(entry) as QueuedInput extends { entry: infer E } ? E : never,\n\t\t\t});\n\t\t\tthis.putInput({ id, conversationId, status: \"queued\" });\n\t\t\tthis.changes.events.push({ conversationId, event: { type: \"input.queued\", input: id, mode: \"write\" } });\n\t\t\treturn id;\n\t\t}\n\t\tconst id = this.storage.mintId();\n\t\tconst e = this.appendEntryInternal(conversationId, entry);\n\t\tthis.putInput({ id, conversationId, status: \"done\", entry: e });\n\t\treturn id;\n\t}\n\n\tcheckpoint<C extends Checkpoint>(value: C) {\n\t\tthis.assertNotHost(\"checkpoint\");\n\t\tconst inv = this.invoker as Extract<Invoker, { type: \"task\" }>;\n\t\tif (inv.mode === \"abort\") throw new Forbidden(\"checkpoint from an abort invocation\");\n\t\tconst current = this.createdTasks.get(inv.id) ?? this.liveTasks.get(inv.id);\n\t\tif (current === undefined) throw new Error(\"task not live\");\n\t\tthis.setTaskInternal({ ...current, checkpoint: plain(value) });\n\t}\n\t/** Kernel-internal: replace a task's mutable fields. Persists only what changed. */\n\tsetTask(task: Task) {\n\t\tthis.assertCore(\"setTask\");\n\t\tthis.setTaskInternal(task);\n\t}\n\tsetTaskInternalForControl(task: Task) {\n\t\tthis.setTaskInternal(task);\n\t}\n\tprivate setTaskInternal(task: Task) {\n\t\ttask = plain(task);\n\t\tconst prev = this.createdTasks.get(task.id) ?? this.liveTasks.get(task.id);\n\t\tconst patch: Record<string, unknown> = { id: task.id };\n\t\tfor (const key of [\"status\", \"checkpoint\", \"abort\", \"outcome\", \"owns\"] as const) {\n\t\t\tif (JSON.stringify(prev?.[key]) === JSON.stringify(task[key])) continue;\n\t\t\tpatch[key] = key === \"checkpoint\" && task.checkpoint === undefined ? null : task[key];\n\t\t}\n\t\tif (task.status === \"terminal\") {\n\t\t\tpatch.status = \"terminal\";\n\t\t\tpatch.checkpoint = null;\n\t\t\tpatch.owns = task.owns;\n\t\t\tpatch.outcome = task.outcome;\n\t\t\tif (task.abort === true) patch.abort = true;\n\t\t\ttask = { ...task };\n\t\t\tdelete (task as { checkpoint?: Checkpoint }).checkpoint;\n\t\t}\n\t\tif (Object.keys(patch).length === 1) return;\n\t\tif (task.status === \"terminal\")\n\t\t\tdelete this.raw<StickyState>({ doc: \"sticky\", conversationId: task.conversationId }).tasks[task.id];\n\t\tthis.writes.push({ type: \"task.patch\", patch: patch as TaskPatch });\n\t\tthis.changes.tasks.push(task);\n\t\tif (task.status === \"terminal\" && prev?.status !== \"terminal\") {\n\t\t\tconst kind = this.kinds.get(task.kind);\n\t\t\tif (task.kind === \"pi.collapse\") {\n\t\t\t\tif (task.outcome?.status === \"completed\") {\n\t\t\t\t\tconst result = task.outcome.result as { summary: Id };\n\t\t\t\t\tthis.changes.events.push({\n\t\t\t\t\t\tconversationId: task.conversationId,\n\t\t\t\t\t\tevent: { type: \"compaction.finished\", taskId: task.id, summary: result.summary },\n\t\t\t\t\t});\n\t\t\t\t} else if (task.outcome?.status === \"failed\") {\n\t\t\t\t\tconst failure = task.outcome.failure as {\n\t\t\t\t\t\treason: \"stale\" | \"declined\" | \"provider\" | \"retries_exhausted\" | \"no_model\";\n\t\t\t\t\t\tdetail: string;\n\t\t\t\t\t};\n\t\t\t\t\tthis.changes.events.push({\n\t\t\t\t\t\tconversationId: task.conversationId,\n\t\t\t\t\t\tevent: { type: \"compaction.failed\", taskId: task.id, reason: failure.reason, detail: failure.detail },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if ((kind === undefined || kind.turn !== true) && task.outcome !== undefined) {\n\t\t\t\tthis.changes.events.push({\n\t\t\t\t\tconversationId: task.conversationId,\n\t\t\t\t\tevent: { type: \"task.ended\", taskId: task.id, kind: task.kind, outcome: task.outcome.status },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis.createdTasks.set(task.id, task); // overlay: later direct reads see the patch\n\t\tthis.wroteTasks = true;\n\t}\n\n\tcreateTask(spec: TaskSpec): Id;\n\tcreateTask<K extends AnyKind>(\n\t\tkind: K,\n\t\tinput: InputOf<K>,\n\t\topts?: { conversationId?: Id; background?: true; after?: Id[] },\n\t): TaskRef<K>;\n\tcreateTask(\n\t\ta: TaskSpec | AnyKind,\n\t\tinput?: JsonValue,\n\t\topts: { conversationId?: Id; background?: true; after?: Id[] } = {},\n\t): Id | TaskRef {\n\t\tif (\"initial\" in a) {\n\t\t\tconst registered = this.kinds.get(a.name);\n\t\t\tif (registered !== a) throw new Forbidden(`createTask: kind \"${a.name}\" is not the registered token`);\n\t\t\treturn { id: this.createTaskInternal({ kind: a.name, input: input as JsonValue, ...opts }), kind: a };\n\t\t}\n\t\tthis.assertCore(\"createTask by name\");\n\t\treturn this.createTaskInternal(a);\n\t}\n\tprivate createTaskInternal(spec: TaskSpec): Id {\n\t\tconst kind = this.kinds.get(spec.kind);\n\t\tif (kind === undefined) throw new Error(`unknown task kind ${spec.kind}`);\n\t\tif (isCoreKind(spec.kind) && !this.core) throw new Forbidden(`create core task ${spec.kind}`);\n\t\tconst conversationId =\n\t\t\tspec.conversationId ?? (this.invoker.type === \"task\" ? this.invoker.conversationId : undefined);\n\t\tif (conversationId === undefined) throw new Error(\"createTask: conversationId required\");\n\t\tthis.assertScope(conversationId, \"createTask\");\n\t\tif (spec.kind === \"pi.generation\" && this.hasLiveKind(conversationId, spec.kind))\n\t\t\tthrow new GenerationInProgress(conversationId);\n\t\tif (spec.kind === \"pi.collapse\" && this.hasLiveKind(conversationId, spec.kind))\n\t\t\tthrow new CollapseInProgress(conversationId);\n\t\tconst id = this.storage.mintId();\n\t\tconst task: Task = {\n\t\t\tid,\n\t\t\tconversationId,\n\t\t\tkind: spec.kind,\n\t\t\tinput: plain(spec.input),\n\t\t\tstatus: \"pending\",\n\t\t\tafter: [...(spec.after ?? [])],\n\t\t\towns: [],\n\t\t\t...(spec.background ? { background: true } : {}),\n\t\t};\n\t\tthis.writes.push({ type: \"task\", task });\n\t\tthis.changes.tasks.push(task);\n\t\tif (spec.kind === \"pi.collapse\") {\n\t\t\tconst input = spec.input as { reason: \"threshold\" | \"manual\" | \"overflow\"; through: Id };\n\t\t\tthis.changes.events.push({\n\t\t\t\tconversationId,\n\t\t\t\tevent: { type: \"compaction.started\", taskId: id, reason: input.reason, through: input.through },\n\t\t\t});\n\t\t} else if (kind.turn !== true) {\n\t\t\tthis.changes.events.push({\n\t\t\t\tconversationId,\n\t\t\t\tevent: {\n\t\t\t\t\ttype: \"task.started\",\n\t\t\t\t\ttaskId: id,\n\t\t\t\t\tkind: task.kind,\n\t\t\t\t\t...(task.background ? { background: true } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tthis.createdTasks.set(id, task);\n\t\tthis.wroteTasks = true;\n\t\treturn id;\n\t}\n\tprivate hasLiveKind(conversationId: Id, kind: string): boolean {\n\t\tfor (const task of this.liveTasks.values()) {\n\t\t\tif (task.conversationId !== conversationId || task.kind !== kind) continue;\n\t\t\tconst current = this.createdTasks.get(task.id) ?? task;\n\t\t\tif (current.status === \"terminal\") continue;\n\t\t\tif (this.closing && this.invoker.type === \"task\" && this.invoker.id === task.id) continue;\n\t\t\treturn true;\n\t\t}\n\t\tfor (const task of this.createdTasks.values()) {\n\t\t\tif (\n\t\t\t\ttask.conversationId === conversationId &&\n\t\t\t\ttask.kind === kind &&\n\t\t\t\ttask.status !== \"terminal\" &&\n\t\t\t\t!this.liveTasks.has(task.id)\n\t\t\t)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tcreateConversation(spec: ConversationSpec): Id {\n\t\tconst owner = this.invoker.type === \"task\" ? this.invoker.id : undefined;\n\t\tif (spec.parent !== undefined) this.assertScope(spec.parent.conversationId, \"createConversation: parent\");\n\t\treturn this.insertConversation(spec, owner, false);\n\t}\n\n\tcreateForkConversation(spec: ConversationSpec): Id {\n\t\tthis.assertCore(\"createForkConversation\");\n\t\treturn this.insertConversation(spec, undefined, true);\n\t}\n\n\tasync createOwnedConversation(ownerTaskId: Id, sourceConversationId: Id, spec: OwnedConversationSpec): Promise<Id> {\n\t\tthis.assertCore(\"createOwnedConversation\");\n\t\tconst owner = this.liveTasks.get(ownerTaskId) ?? this.createdTasks.get(ownerTaskId);\n\t\tif (owner === undefined || owner.status === \"terminal\" || owner.conversationId !== sourceConversationId)\n\t\t\tthrow new Forbidden(`task ${ownerTaskId} cannot create an owned conversation`);\n\t\tconst tip = spec.inherit ? await this.newestEntry(sourceConversationId) : undefined;\n\t\tconst inherited = tip === undefined ? undefined : await this.rewindableAsOf(sourceConversationId, tip.id);\n\t\tconst rawOverrides = structuredClone(spec.rewindable ?? {});\n\t\tdelete rawOverrides.plugins;\n\t\tconst overrides = this.defaults.validateSeed(\"rewindable\", rawOverrides);\n\t\tconst rewindable =\n\t\t\tinherited === undefined\n\t\t\t\t? overrides\n\t\t\t\t: { ...inherited, ...overrides, plugins: structuredClone(inherited.plugins) };\n\t\treturn this.insertConversation(\n\t\t\t{\n\t\t\t\t...(tip === undefined ? {} : { parent: { conversationId: sourceConversationId, at: tip.id } }),\n\t\t\t\trewindable,\n\t\t\t\tsticky: spec.sticky,\n\t\t\t},\n\t\t\townerTaskId,\n\t\t\tinherited !== undefined,\n\t\t);\n\t}\n\n\tprivate insertConversation(spec: ConversationSpec, owner: Id | undefined, preservePlugins: boolean): Id {\n\t\tconst id = this.storage.mintId();\n\t\tconst parent =\n\t\t\tspec.parent === undefined || spec.parent.at === \"start\"\n\t\t\t\t? undefined\n\t\t\t\t: { conversationId: spec.parent.conversationId, at: spec.parent.at };\n\t\tconst conversation: Conversation = {\n\t\t\tid,\n\t\t\t...(parent ? { parent } : {}),\n\t\t\t...(owner === undefined ? {} : { owner }),\n\t\t\t...(spec.sections?.length ? { sections: spec.sections } : {}),\n\t\t};\n\t\tthis.writes.push({ type: \"conversation\", conversation });\n\t\tthis.changes.conversations.push(conversation);\n\t\tthis.createdConversations.set(id, conversation);\n\t\tthis.seedDoc(\n\t\t\t{ doc: \"rewindable\", conversationId: id },\n\t\t\tthis.defaults.freshRewindable(spec.rewindable, preservePlugins) as unknown as JsonObject,\n\t\t);\n\t\tthis.seedDoc(\n\t\t\t{ doc: \"sticky\", conversationId: id },\n\t\t\tthis.defaults.freshSticky(spec.sticky) as unknown as JsonObject,\n\t\t);\n\t\tif (owner !== undefined) {\n\t\t\tconst task = this.liveTasks.get(owner) ?? this.createdTasks.get(owner);\n\t\t\tif (task !== undefined) this.setTaskInternal({ ...task, owns: [...task.owns, id] });\n\t\t}\n\t\treturn id;\n\t}\n\tprivate seedDoc(ref: DocRef, value: object) {\n\t\tconst tracker = track(value);\n\t\ttracker.rebase();\n\t\tconst base = tracker.flush();\n\t\tthis.writes.push({ type: \"doc\", ref, ops: base });\n\t\tthis.changes.docs.push({ ref, ops: base });\n\t\tthis.docs.adopt(ref, tracker);\n\t\tthis.touched.set(docKey(ref), { ref, tracker });\n\t}\n\n\tmarkTask(id: Id) {\n\t\tthis.assertCore(\"markTask\");\n\t\tconst task = this.createdTasks.get(id) ?? this.liveTasks.get(id);\n\t\tif (task === undefined) throw new Error(`task ${id} not live`);\n\t\tif (task.abort !== true) this.setTaskInternal({ ...task, abort: true });\n\t}\n\n\t// --- admission ----------------------------------------------------------\n\n\t/** Prospective: live turn tasks, minus this transaction's terminals and the closing task, plus this transaction's new turn tasks. */\n\tbusy(conversationId: Id): boolean {\n\t\tconst isTurn = (t: Task) => this.kinds.get(t.kind)?.turn === true && t.background !== true;\n\t\tfor (const t of this.liveTasks.values()) {\n\t\t\tif (t.conversationId !== conversationId || !isTurn(t)) continue;\n\t\t\tconst overlay = this.createdTasks.get(t.id);\n\t\t\tif (overlay?.status === \"terminal\") continue;\n\t\t\tif (this.closing && this.invoker.type === \"task\" && t.id === this.invoker.id) continue;\n\t\t\treturn true;\n\t\t}\n\t\tfor (const t of this.createdTasks.values())\n\t\t\tif (t.conversationId === conversationId && isTurn(t) && t.status !== \"terminal\" && !this.liveTasks.has(t.id))\n\t\t\t\treturn true;\n\t\treturn false;\n\t}\n\n\tprivate putInput(input: Input) {\n\t\tinput = plain(input);\n\t\tthis.writes.push({ type: \"input\", input });\n\t\tthis.changes.inputs.push(input);\n\t\tthis.inputsById.set(input.id, input);\n\t\tif (input.requestId !== undefined) this.inputsByRequest.set(`${input.conversationId}:${input.requestId}`, input);\n\t}\n\n\tasync send(conversationId: Id, input: SendInput): Promise<Id> {\n\t\tthis.assertCore(\"send\");\n\t\tif (input.requestId !== undefined) {\n\t\t\tconst existing = await this.inputByRequest(conversationId, input.requestId); // before any write\n\t\t\tif (existing !== undefined) return existing.id;\n\t\t}\n\t\tif (this.busy(conversationId)) {\n\t\t\tconst mode = input.whenBusy ?? \"followUp\";\n\t\t\tif (mode === \"reject\") throw new ConversationBusy(conversationId);\n\t\t\tconst id = this.storage.mintId();\n\t\t\tthis.raw<StickyState>({ doc: \"sticky\", conversationId }).inbox.push({\n\t\t\t\tid,\n\t\t\t\tmode,\n\t\t\t\tinput: structuredClone(input.content),\n\t\t\t});\n\t\t\tthis.putInput({\n\t\t\t\tid,\n\t\t\t\tconversationId,\n\t\t\t\tstatus: \"queued\",\n\t\t\t\t...(input.requestId ? { requestId: input.requestId } : {}),\n\t\t\t});\n\t\t\tthis.changes.events.push({ conversationId, event: { type: \"input.queued\", input: id, mode } });\n\t\t\treturn id;\n\t\t}\n\t\t// Idle: read the head before the first append, place older queued items, then this one.\n\t\tconst head = await this.newestEntry(conversationId, { withHead: true });\n\t\tconst { triggers } = await this.boundary(conversationId, \"final\", head?.id);\n\t\tconst id = this.storage.mintId();\n\t\tconst eventStart = this.changes.events.length;\n\t\tconst entry = this.appendEntryInternal(conversationId, {\n\t\t\tkind: \"pi.user\",\n\t\t\tmodel: [{ role: \"user\", content: input.content, timestamp: this.now() }],\n\t\t});\n\t\tconst entryEvents = this.changes.events.splice(eventStart);\n\t\tthis.putInput({\n\t\t\tid,\n\t\t\tconversationId,\n\t\t\tstatus: \"placed\",\n\t\t\tentry,\n\t\t\t...(input.requestId ? { requestId: input.requestId } : {}),\n\t\t});\n\t\tthis.changes.events.push({ conversationId, event: { type: \"input.placed\", input: id, entry } }, ...entryEvents);\n\t\tconst inputs = [...triggers, id];\n\t\tthis.createTaskInternal({ kind: \"pi.generation\", conversationId, input: { inputs } });\n\t\tthis.changes.events.push({ conversationId, event: { type: \"turn.started\", inputs } });\n\t\treturn id;\n\t}\n\n\tprivate async setInput(id: Id, patch: Partial<Omit<Input, \"id\" | \"conversationId\">>) {\n\t\tconst current = await this.input(id);\n\t\tif (current === undefined) throw new Error(`input ${id} not found`);\n\t\tthis.putInput({ ...current, ...patch });\n\t}\n\t/** Kernel: withdraw a queued input. */\n\tasync withdrawInput(id: Id): Promise<\"aborted\" | \"already_placed\" | \"not_found\"> {\n\t\tthis.assertCore(\"withdrawInput\");\n\t\tconst i = await this.input(id);\n\t\tif (i === undefined) return \"not_found\";\n\t\tif (i.status !== \"queued\") return \"already_placed\";\n\t\tawait this.preload([{ doc: \"sticky\", conversationId: i.conversationId }]);\n\t\tremoveWhere(this.raw<StickyState>({ doc: \"sticky\", conversationId: i.conversationId }).inbox, (q) => q.id === id);\n\t\tawait this.setInput(id, { status: \"unanswered\", reason: \"aborted\" });\n\t\tthis.changes.events.push({ conversationId: i.conversationId, event: { type: \"input.aborted\", input: id } });\n\t\treturn \"aborted\";\n\t}\n\tasync resolveInputs(\n\t\tids: readonly Id[],\n\t\tresolution:\n\t\t\t| { status: \"done\"; answer: Id }\n\t\t\t| { status: \"unanswered\"; reason: NonNullable<Input[\"reason\"]>; detail?: string },\n\t) {\n\t\tthis.assertCore(\"resolveInputs\");\n\t\tfor (const id of ids) await this.setInput(id, resolution);\n\t}\n\n\t/**\n\t * Boundary placement (pico §9.5). No storage scan: `headBoundary` is the newest head as the\n\t * caller knows it, and it advances locally as same-batch self-heads are placed.\n\t */\n\tasync boundary(\n\t\tconversationId: Id,\n\t\tat: \"postTools\" | \"final\",\n\t\theadBoundary: Id | undefined,\n\t): Promise<{ triggers: Id[]; terminated: boolean }> {\n\t\tthis.assertCore(\"boundary\");\n\t\tconst s = this.raw<StickyState>({ doc: \"sticky\", conversationId });\n\t\tconst inbox = [...s.inbox].sort((a, b) => a.id - b.id);\n\t\tlet cut: Id | undefined;\n\t\tfor (const q of inbox) if (q.mode === \"write\" && q.entry.head === \"self\") cut = q.id;\n\t\tconst stale = cut === undefined ? [] : inbox.filter((q) => q.mode !== \"write\" && q.id < cut!).map((q) => q.id);\n\t\tfor (const id of stale) {\n\t\t\tawait this.setInput(id, { status: \"unanswered\", reason: \"stale\" });\n\t\t\tthis.changes.events.push({ conversationId, event: { type: \"input.aborted\", input: id } });\n\t\t}\n\t\tconst survivors = inbox.filter((q) => !stale.includes(q.id));\n\t\tconst pick = (mode: \"steer\" | \"followUp\", policy: \"all\" | \"one-at-a-time\") => {\n\t\t\tconst items = survivors.filter((q) => q.mode === mode);\n\t\t\treturn policy === \"all\" ? items : items.slice(0, 1);\n\t\t};\n\t\tconst selected = new Set<Id>(stale);\n\t\tfor (const q of survivors) if (q.mode === \"write\") selected.add(q.id);\n\t\tfor (const q of pick(\"steer\", s.steeringMode)) selected.add(q.id);\n\t\tif (at === \"final\") for (const q of pick(\"followUp\", s.followUpMode)) selected.add(q.id);\n\t\tlet head = headBoundary;\n\t\tconst triggers: Id[] = [];\n\t\tfor (const q of survivors) {\n\t\t\tif (!selected.has(q.id)) continue;\n\t\t\tif (q.mode === \"write\") {\n\t\t\t\tif (q.entry.head !== undefined && q.entry.head !== \"self\" && head !== undefined && q.entry.head < head) {\n\t\t\t\t\tawait this.setInput(q.id, { status: \"unanswered\", reason: \"stale\" });\n\t\t\t\t\tthis.changes.events.push({ conversationId, event: { type: \"input.aborted\", input: q.id } });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst eventStart = this.changes.events.length;\n\t\t\t\tconst entry = this.appendEntryInternal(conversationId, q.entry as NewEntry);\n\t\t\t\tconst entryEvents = this.changes.events.splice(eventStart);\n\t\t\t\tif (q.entry.head !== undefined) head = q.entry.head === \"self\" ? entry : q.entry.head;\n\t\t\t\tawait this.setInput(q.id, { status: \"done\", entry });\n\t\t\t\tthis.changes.events.push(\n\t\t\t\t\t{ conversationId, event: { type: \"input.placed\", input: q.id, entry } },\n\t\t\t\t\t...entryEvents,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst eventStart = this.changes.events.length;\n\t\t\t\tconst entry = this.appendEntryInternal(conversationId, {\n\t\t\t\t\tkind: \"pi.user\",\n\t\t\t\t\tmodel: [{ role: \"user\", content: q.input, timestamp: this.now() }],\n\t\t\t\t});\n\t\t\t\tconst entryEvents = this.changes.events.splice(eventStart);\n\t\t\t\tawait this.setInput(q.id, { status: \"placed\", entry });\n\t\t\t\tthis.changes.events.push(\n\t\t\t\t\t{ conversationId, event: { type: \"input.placed\", input: q.id, entry } },\n\t\t\t\t\t...entryEvents,\n\t\t\t\t);\n\t\t\t\ttriggers.push(q.id);\n\t\t\t}\n\t\t}\n\t\tremoveWhere(s.inbox, (q) => selected.has(q.id));\n\t\treturn { triggers, terminated: cut !== undefined };\n\t}\n\n\t// --- finish -------------------------------------------------------------\n\n\tfinish(): Write[] {\n\t\tif (this.poisoned !== undefined) throw this.poisoned;\n\t\tfor (const [conversationId, keys] of this.changedConfig) {\n\t\t\tthis.changes.events.push({ conversationId, event: { type: \"config.changed\", keys: [...keys] } });\n\t\t}\n\t\tfor (const { ref, tracker } of this.touched.values()) {\n\t\t\tconst ops = tracker.flush();\n\t\t\tif (ops.length === 0) continue;\n\t\t\tthis.writes.push({ type: \"doc\", ref, ops });\n\t\t\tthis.changes.docs.push({ ref, ops });\n\t\t\tthis.docs.noteOps(ref, ops);\n\t\t}\n\t\treturn this.writes;\n\t}\n\t/** Every wrapper handed out by this transaction throws from now on. */\n\trevoke() {\n\t\tthis.membrane.revoke();\n\t}\n\tevictTouched() {\n\t\tfor (const { ref } of this.touched.values()) this.docs.evict(ref);\n\t}\n}\n\n/** A plain JSON copy: no document proxy, no live reference, strict JSON (throws on cycles/BigInt). */\nconst plain = <T>(v: T): T => JSON.parse(JSON.stringify(v)) as T;\n\nfunction validateEntry(e: Entry) {\n\tif (e.head !== undefined && e.head > e.id) throw new Error(`entry ${e.id}: head ${e.head} is in the future`);\n\tif (e.model !== undefined)\n\t\tfor (const m of e.model)\n\t\t\tif (typeof m !== \"object\" || m === null || typeof (m as { role?: unknown }).role !== \"string\")\n\t\t\t\tthrow new Error(`entry ${e.id}: malformed model message`);\n\tJSON.stringify(e); // strict JSON: throws on BigInt/cycles; undefined is dropped by construction\n}\n\n// ---------------------------------------------------------------------------\n// Session: the line.\n// ---------------------------------------------------------------------------\n\nconst LINE_KEY = createContextKey<true>(\"pico3.session.line\");\nconst owners = new WeakMap<Storage, Session>();\n\nexport class NestedLineOperation extends Error {\n\tconstructor() {\n\t\tsuper(\"nested line operation\");\n\t\tthis.name = \"NestedLineOperation\";\n\t}\n}\n\nexport interface CommitResult<T> {\n\tvalue: T;\n\tseq: Seq | undefined;\n\tchanges: CommitChanges;\n}\n\nexport interface TransactionControl {\n\tsetTask(task: Task): void;\n}\n\nexport class Session {\n\treadonly storage: Storage;\n\treadonly kinds: ReadonlyMap<string, AnyKind>;\n\treadonly namespaces: ReadonlyMap<string, NamespaceRegistration>;\n\tprivate tail: Promise<unknown> = Promise.resolve();\n\tprivate closed = false;\n\tprivate fault: Faulted | undefined;\n\tprivate readonly now: () => number;\n\treadonly docs: Docs;\n\treadonly defaults: Defaults;\n\treadonly liveTasks = new Map<Id, Task>();\n\t/** Owner/parent graph, loaded at open and maintained on every commit. */\n\treadonly conversationRecords = new Map<Id, Conversation>();\n\treadonly lineListeners = new Set<(result: CommitResult<unknown>) => void>();\n\treadonly listeners = new Set<(r: CommitResult<unknown>) => void>();\n\t/** Errors from listeners and other post-commit work; never surface to the writer. */\n\tonReport: (error: unknown) => void = () => {};\n\n\tconstructor(\n\t\tstorage: Storage,\n\t\tkinds: ReadonlyMap<string, AnyKind>,\n\t\tnamespaces: ReadonlyMap<string, NamespaceRegistration>,\n\t\tnow: () => number = Date.now,\n\t) {\n\t\tthis.storage = storage;\n\t\tthis.now = now;\n\t\tthis.kinds = kinds;\n\t\tthis.namespaces = namespaces;\n\t\tif (owners.has(storage)) throw new Error(\"this Storage already has an owning Session\");\n\t\tthis.defaults = new Defaults(kinds.values());\n\t\tthis.docs = new Docs(storage, this.defaults);\n\t\towners.set(storage, this);\n\t}\n\n\treadonly index: ConversationIndex = {\n\t\tget: (id) => this.conversationRecords.get(id),\n\t\tsubtree: (root) => {\n\t\t\tconst out = new Set<Id>([root]);\n\t\t\tlet grew = true;\n\t\t\twhile (grew) {\n\t\t\t\tgrew = false;\n\t\t\t\tfor (const c of this.conversationRecords.values()) {\n\t\t\t\t\tif (out.has(c.id) || c.owner === undefined) continue;\n\t\t\t\t\tconst ownerTask = this.liveTasks.get(c.owner) ?? this.ownerTaskCache.get(c.owner);\n\t\t\t\t\tif (ownerTask && out.has(ownerTask.conversationId)) {\n\t\t\t\t\t\tout.add(c.id);\n\t\t\t\t\t\tgrew = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\tancestors: (id) => {\n\t\t\tconst chain: Id[] = [];\n\t\t\tlet c = this.conversationRecords.get(id);\n\t\t\twhile (c?.owner !== undefined) {\n\t\t\t\tconst t = this.liveTasks.get(c.owner) ?? this.ownerTaskCache.get(c.owner);\n\t\t\t\tif (t === undefined) break;\n\t\t\t\tchain.unshift(t.conversationId);\n\t\t\t\tc = this.conversationRecords.get(t.conversationId);\n\t\t\t}\n\t\t\treturn chain;\n\t\t},\n\t};\n\t/** Owner tasks that are terminal but whose conversations still exist (ancestry after reopen). */\n\treadonly ownerTaskCache = new Map<Id, Task>();\n\n\tasync commit<T>(\n\t\tinvoker: Invoker,\n\t\tfn: (tx: TxImpl, ctx: Context, control: TransactionControl) => T | Promise<T>,\n\t\tctx: Context,\n\t\topts: { docs?: DocRef[]; closing?: boolean } = {},\n\t): Promise<CommitResult<T>> {\n\t\tctx.abortSignal?.throwIfAborted();\n\t\tconst authority = Object.freeze({ ...invoker }) as Invoker;\n\t\tconst result = await this.enter(ctx, async (lineCtx) => {\n\t\t\tthis.assertUsable();\n\t\t\tlineCtx.abortSignal?.throwIfAborted();\n\t\t\tif (authority.type === \"task\") {\n\t\t\t\t// A captured runtime cannot write after its invocation returned, after terminalization, or after a mark (run mode).\n\t\t\t\tif (!authority.token.alive) throw new Forbidden(\"commit from a finished invocation\");\n\t\t\t\tconst live = this.liveTasks.get(authority.id);\n\t\t\t\tif (live === undefined) throw new Forbidden(\"commit from a task that is not live\");\n\t\t\t\tif (authority.mode === \"run\" && live.abort === true)\n\t\t\t\t\tthrow new Forbidden(\"commit from a marked run invocation\");\n\t\t\t}\n\t\t\tconst tx = new TxImpl(\n\t\t\t\tauthority,\n\t\t\t\tthis.storage,\n\t\t\t\tthis.docs,\n\t\t\t\tthis.defaults,\n\t\t\t\tthis.kinds,\n\t\t\t\tthis.namespaces,\n\t\t\t\tthis.liveTasks,\n\t\t\t\tthis.index,\n\t\t\t\tthis.now,\n\t\t\t\tlineCtx,\n\t\t\t);\n\t\t\ttx.closing = opts.closing === true;\n\t\t\tconst refs: DocRef[] = [{ doc: \"session\" }, ...(opts.docs ?? [])];\n\t\t\tif (authority.type === \"task\")\n\t\t\t\trefs.push(\n\t\t\t\t\t{ doc: \"rewindable\", conversationId: authority.conversationId },\n\t\t\t\t\t{ doc: \"sticky\", conversationId: authority.conversationId },\n\t\t\t\t);\n\t\t\tlet persisted = false;\n\t\t\ttry {\n\t\t\t\tawait tx.preload(refs);\n\t\t\t\tlet value: T;\n\t\t\t\ttry {\n\t\t\t\t\tvalue = await fn(tx.callbackSurface(), lineCtx, {\n\t\t\t\t\t\tsetTask: (task) => tx.setTaskInternalForControl(task),\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\ttx.closeSurface();\n\t\t\t\t}\n\t\t\t\tawait tx.preload(\n\t\t\t\t\t[...new Set(tx.changes.tasks.map((task) => task.conversationId))].map((conversationId) => ({\n\t\t\t\t\t\tdoc: \"sticky\" as const,\n\t\t\t\t\t\tconversationId,\n\t\t\t\t\t})),\n\t\t\t\t);\n\t\t\t\tconst writes = tx.finish();\n\t\t\t\tlet seq: Seq | undefined;\n\t\t\t\tif (writes.length > 0 || tx.changes.events.length > 0) {\n\t\t\t\t\tpersisted = true;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tseq = await this.storage.commit(writes, withoutAbortSignal(lineCtx));\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthis.fault = new Faulted(error);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.storage.close(withoutAbortSignal(lineCtx));\n\t\t\t\t\t\t\towners.delete(this.storage);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\tthrow this.fault;\n\t\t\t\t\t}\n\t\t\t\t\tthis.applyChanges(tx.changes);\n\t\t\t\t}\n\t\t\t\tconst result = { value, seq, changes: tx.changes } as CommitResult<T>;\n\t\t\t\tif (seq !== undefined) {\n\t\t\t\t\tfor (const listener of this.lineListeners) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlistener(result);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tthis.onReport(error);\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} catch (error) {\n\t\t\t\tif (!persisted) tx.evictTouched();\n\t\t\t\tthrow error;\n\t\t\t} finally {\n\t\t\t\ttx.revoke();\n\t\t\t}\n\t\t});\n\t\tif (result.seq !== undefined)\n\t\t\tfor (const l of this.listeners) {\n\t\t\t\ttry {\n\t\t\t\t\tl(result);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.onReport(error);\n\t\t\t\t}\n\t\t\t}\n\t\treturn result;\n\t}\n\n\t/** Read-only line operation without a transaction. */\n\tread<T>(fn: (storage: Storage, ctx: Context) => Promise<T>, ctx: Context): Promise<T> {\n\t\treturn this.enter(ctx, (lineCtx) => {\n\t\t\tthis.assertUsable();\n\t\t\treturn fn(this.storage, lineCtx);\n\t\t});\n\t}\n\t/** Generic line operation (waiter registration and asynchronous lifecycle work). */\n\tonLine<T>(fn: (ctx: Context) => T | Promise<T>, ctx: Context): Promise<T> {\n\t\treturn this.enter(ctx, (lineCtx) => {\n\t\t\tthis.assertUsable();\n\t\t\treturn fn(lineCtx);\n\t\t});\n\t}\n\n\tstatic readonly STICKY_BASE_BUDGET = 256 * 1024;\n\n\t/** After a task terminalizes: retire its slot; base + truncate when idle or over budget. Truncation runs on the line. */\n\tasync retire(task: Task, ctx: Context) {\n\t\tconst ref: DocRef = { doc: \"sticky\", conversationId: task.conversationId };\n\t\tconst idle = ![...this.liveTasks.values()].some((t) => t.conversationId === task.conversationId);\n\t\tconst over = (this.docs.sinceBase.get(docKey(ref)) ?? 0) > Session.STICKY_BASE_BUDGET;\n\t\tawait this.commit(\n\t\t\t{ type: \"kernel\" },\n\t\t\t(tx) => {\n\t\t\t\tdelete tx.sticky(task.conversationId).tasks[task.id];\n\t\t\t\tif (idle || over) this.docs.requestBase(ref);\n\t\t\t},\n\t\t\tctx,\n\t\t\t{ docs: [ref] },\n\t\t);\n\t\tif (idle || over) await this.enter(ctx, (lineCtx) => this.storage.truncate(ref, withoutAbortSignal(lineCtx)));\n\t}\n\n\tasync fork(parentId: Id, at: Id | \"start\", spec: Omit<ConversationSpec, \"parent\">, ctx: Context): Promise<Id> {\n\t\tconst inherited =\n\t\t\tat === \"start\"\n\t\t\t\t? undefined\n\t\t\t\t: await this.read(async (storage, lineCtx) => {\n\t\t\t\t\t\tconst [entry] = await storage.scanEntries(\n\t\t\t\t\t\t\t{ conversationId: parentId, before: at + 1, limit: 1 },\n\t\t\t\t\t\t\tlineCtx,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (entry?.id !== at) throw new Error(`entry ${at} is not visible from conversation ${parentId}`);\n\t\t\t\t\t\treturn storage.docAsOf(parentId, at, lineCtx) as Promise<RewindableState | undefined>;\n\t\t\t\t\t}, ctx);\n\t\tconst rawOverrides = structuredClone(spec.rewindable ?? {});\n\t\tdelete rawOverrides.plugins;\n\t\tconst overrides = this.defaults.validateSeed(\"rewindable\", rawOverrides);\n\t\tconst rewindable =\n\t\t\tinherited === undefined\n\t\t\t\t? overrides\n\t\t\t\t: { ...inherited, ...overrides, plugins: structuredClone(inherited.plugins) };\n\t\tconst r = await this.commit(\n\t\t\t{ type: \"kernel\" },\n\t\t\t(tx) =>\n\t\t\t\ttx.createForkConversation({\n\t\t\t\t\tparent: { conversationId: parentId, at },\n\t\t\t\t\trewindable,\n\t\t\t\t\tsticky: spec.sticky,\n\t\t\t\t\tsections: spec.sections,\n\t\t\t\t}),\n\t\t\tctx,\n\t\t);\n\t\treturn r.value;\n\t}\n\n\tasync close(ctx: Context) {\n\t\tawait this.enter(ctx, async (lineCtx) => {\n\t\t\tif (this.closed) return;\n\t\t\tawait this.storage.close(withoutAbortSignal(lineCtx));\n\t\t\tthis.closed = true;\n\t\t\towners.delete(this.storage);\n\t\t});\n\t}\n\n\tloadedDocument(ref: DocRef): JsonObject | undefined {\n\t\treturn this.docs.loaded(ref);\n\t}\n\n\tprivate applyChanges(e: CommitChanges) {\n\t\tfor (const t of e.tasks) {\n\t\t\tif (t.status === \"terminal\") {\n\t\t\t\tthis.liveTasks.delete(t.id);\n\t\t\t\tif (t.owns.length) this.ownerTaskCache.set(t.id, t);\n\t\t\t} else this.liveTasks.set(t.id, t);\n\t\t}\n\t\tfor (const c of e.conversations) this.conversationRecords.set(c.id, c);\n\t}\n\n\tprivate enter<T>(ctx: Context, op: (ctx: Context) => T | Promise<T>): Promise<T> {\n\t\tif (ctx.value(LINE_KEY) === true) return Promise.reject(new NestedLineOperation());\n\t\tconst previous = this.tail;\n\t\tlet release!: () => void;\n\t\tthis.tail = new Promise<void>((resolve) => {\n\t\t\trelease = resolve;\n\t\t});\n\t\treturn (async () => {\n\t\t\tawait previous;\n\t\t\ttry {\n\t\t\t\treturn await op(withContextValue(LINE_KEY, true, ctx));\n\t\t\t} finally {\n\t\t\t\trelease();\n\t\t\t}\n\t\t})();\n\t}\n\n\tprivate assertUsable() {\n\t\tif (this.fault !== undefined) throw this.fault;\n\t\tif (this.closed) throw new Closed();\n\t}\n}\n\nexport type { TxImpl };\n"]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { Context } from "@draht/chord";
|
|
2
|
+
import type { AnyToolDeclaration, ContextEdit, CoreTx, Entry, HookInfo, HookResult, Id, JsonValue, RewindableState, Runtime, Stored, SystemMessage } from "./types.ts";
|
|
3
|
+
export interface SystemSection<T extends JsonValue = JsonValue> {
|
|
4
|
+
readonly key: string;
|
|
5
|
+
render(value: T): string;
|
|
6
|
+
}
|
|
7
|
+
export declare function defineSystemSection<T extends JsonValue>(definition: {
|
|
8
|
+
key: string;
|
|
9
|
+
render(value: T): string;
|
|
10
|
+
}): SystemSection<T>;
|
|
11
|
+
export type EnvironmentInfo = {
|
|
12
|
+
cwd: string;
|
|
13
|
+
};
|
|
14
|
+
export type SkillInfo = {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
export declare const systemSections: {
|
|
19
|
+
readonly identity: SystemSection<string>;
|
|
20
|
+
readonly environment: SystemSection<EnvironmentInfo>;
|
|
21
|
+
readonly skills: SystemSection<SkillInfo[]>;
|
|
22
|
+
};
|
|
23
|
+
/** Section seed for a new conversation (§8.1): set with a checked pair, or remove an inherited key. */
|
|
24
|
+
export type SectionSeed = {
|
|
25
|
+
key: string;
|
|
26
|
+
value: JsonValue;
|
|
27
|
+
} | {
|
|
28
|
+
key: string;
|
|
29
|
+
remove: true;
|
|
30
|
+
};
|
|
31
|
+
export declare const sectionSeed: <T extends JsonValue>(section: SystemSection<T>, value: T) => SectionSeed;
|
|
32
|
+
export declare const removeSection: (key: string) => SectionSeed;
|
|
33
|
+
export type SectionRecord = {
|
|
34
|
+
key: string;
|
|
35
|
+
action: "set";
|
|
36
|
+
value: JsonValue;
|
|
37
|
+
rendered: string;
|
|
38
|
+
} | {
|
|
39
|
+
key: string;
|
|
40
|
+
action: "remove";
|
|
41
|
+
};
|
|
42
|
+
export type SystemEntryData = {
|
|
43
|
+
baseline?: true;
|
|
44
|
+
sections: SectionRecord[];
|
|
45
|
+
};
|
|
46
|
+
/** A metadata-only delta has `model: []`. */
|
|
47
|
+
export type SystemEntry = Entry & {
|
|
48
|
+
kind: "pi.system";
|
|
49
|
+
model: [] | [Stored<SystemMessage>];
|
|
50
|
+
data: SystemEntryData;
|
|
51
|
+
};
|
|
52
|
+
type SectionState = {
|
|
53
|
+
value: JsonValue;
|
|
54
|
+
rendered: string;
|
|
55
|
+
};
|
|
56
|
+
export type Canonical = Map<string, SectionState>;
|
|
57
|
+
export declare function foldCanonical(reads: Pick<CoreTx, "scanEntries">, conversationId: Id): Promise<{
|
|
58
|
+
canonical: Canonical;
|
|
59
|
+
newestManaged: Id | null;
|
|
60
|
+
newestBaseline: Id | null;
|
|
61
|
+
}>;
|
|
62
|
+
export interface SystemSectionDraft {
|
|
63
|
+
get<T extends JsonValue>(section: SystemSection<T>): T | undefined;
|
|
64
|
+
set<T extends JsonValue>(section: SystemSection<T>, value: T): void;
|
|
65
|
+
delete(section: {
|
|
66
|
+
key: string;
|
|
67
|
+
}): void;
|
|
68
|
+
wrap<T extends JsonValue>(section: SystemSection<T>, transform: (rendered: string) => string): void;
|
|
69
|
+
}
|
|
70
|
+
export interface SectionRegistry {
|
|
71
|
+
readonly map: ReadonlyMap<string, SystemSection>;
|
|
72
|
+
readonly revision: number;
|
|
73
|
+
}
|
|
74
|
+
export interface ToolRegistry {
|
|
75
|
+
readonly map: ReadonlyMap<string, AnyToolDeclaration>;
|
|
76
|
+
readonly revision: number;
|
|
77
|
+
}
|
|
78
|
+
/** Snapshot S. Compared field by field before the `prepared` commit. */
|
|
79
|
+
export interface PreparationSnapshot {
|
|
80
|
+
newestManaged: Id | null;
|
|
81
|
+
newestBaseline: Id | null;
|
|
82
|
+
newestHead: Id | null;
|
|
83
|
+
settings: {
|
|
84
|
+
model?: JsonValue;
|
|
85
|
+
thinkingLevel: JsonValue;
|
|
86
|
+
selectedTools: string[];
|
|
87
|
+
profile: JsonValue;
|
|
88
|
+
};
|
|
89
|
+
sectionsRev: number;
|
|
90
|
+
toolsRev: number;
|
|
91
|
+
}
|
|
92
|
+
export declare const sameSnapshot: (a: PreparationSnapshot, b: PreparationSnapshot) => boolean;
|
|
93
|
+
export declare function takeSnapshot(tx: Pick<CoreTx, "scanEntries" | "newestEntry" | "snapshot" | "conversation">, conversationId: Id, sections: SectionRegistry, tools: ToolRegistry): Promise<{
|
|
94
|
+
snapshot: PreparationSnapshot;
|
|
95
|
+
canonical: Canonical;
|
|
96
|
+
seed: readonly SectionSeed[] | undefined;
|
|
97
|
+
}>;
|
|
98
|
+
export interface SystemInstructionsHooks {
|
|
99
|
+
/** Edit the draft; optionally override the tool loadout (last override wins). A throwing handler's edits are rolled back. */
|
|
100
|
+
systemInstructions(input: {
|
|
101
|
+
sections: SystemSectionDraft;
|
|
102
|
+
config: PreparationSnapshot["settings"];
|
|
103
|
+
tools: readonly AnyToolDeclaration[];
|
|
104
|
+
}, info: HookInfo, ctx: Context): HookResult<{
|
|
105
|
+
tools?: readonly AnyToolDeclaration[];
|
|
106
|
+
}>;
|
|
107
|
+
}
|
|
108
|
+
/** Off the line: seed the draft, run handlers, freeze. */
|
|
109
|
+
export declare function prepareDraft(rt: Pick<Runtime<SystemInstructionsHooks>, "hooks" | "tools">, sections: SectionRegistry, canonical: Canonical, seed: readonly SectionSeed[] | undefined, settings: PreparationSnapshot["settings"], onReport: (m: string) => void, ctx: Context): Promise<{
|
|
110
|
+
desired: Canonical;
|
|
111
|
+
tools: readonly AnyToolDeclaration[];
|
|
112
|
+
}>;
|
|
113
|
+
/** On the line, in the `prepared` commit: diff desired against canonical; baseline if a head intervened. */
|
|
114
|
+
export declare function planManagedEntry(tx: Pick<CoreTx, "context">, conversationId: Id, snapshot: PreparationSnapshot, canonical: Canonical, desired: Canonical, tools: readonly AnyToolDeclaration[], now: number): Promise<{
|
|
115
|
+
data: SystemEntryData;
|
|
116
|
+
model: [] | [Stored<SystemMessage>];
|
|
117
|
+
edits?: ContextEdit[];
|
|
118
|
+
} | undefined>;
|
|
119
|
+
/** Tools effective in a projected request: fold toolsAdded/toolsRemoved across its SystemMessages. */
|
|
120
|
+
export declare function effectiveTools(messages: readonly {
|
|
121
|
+
role: string;
|
|
122
|
+
}[]): {
|
|
123
|
+
name: string;
|
|
124
|
+
}[];
|
|
125
|
+
export type { RewindableState, Runtime };
|
|
126
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/harness/pico3/system.ts"],"names":[],"mappings":"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"}
|