harnery 0.32.0 → 0.34.0
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/README.md +2 -0
- package/dist/commander.d.ts.map +1 -1
- package/dist/commander.js +7 -1
- package/dist/commands/adapter.js +2 -2
- package/dist/commands/agents.d.ts +144 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +1408 -565
- package/dist/commands/artifacts.d.ts.map +1 -1
- package/dist/commands/artifacts.js +7 -6
- package/dist/commands/backup.d.ts +1 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +29 -16
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +234 -12
- package/dist/commands/checkpoint.d.ts.map +1 -1
- package/dist/commands/checkpoint.js +3 -2
- package/dist/commands/claude-desktop.d.ts +2 -2
- package/dist/commands/claude-desktop.d.ts.map +1 -1
- package/dist/commands/claude-desktop.js +2 -2
- package/dist/commands/context.js +1 -6
- package/dist/commands/decision.d.ts.map +1 -1
- package/dist/commands/decision.js +22 -38
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +91 -28
- package/dist/commands/doctor.d.ts +4 -2
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +55 -7
- package/dist/commands/events.d.ts +5 -0
- package/dist/commands/events.d.ts.map +1 -0
- package/dist/commands/events.js +189 -0
- package/dist/commands/governor.d.ts.map +1 -1
- package/dist/commands/governor.js +13 -4
- package/dist/commands/init.d.ts +10 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +233 -51
- package/dist/commands/instructions.d.ts +4 -0
- package/dist/commands/instructions.d.ts.map +1 -0
- package/dist/commands/instructions.js +100 -0
- package/dist/commands/journal.d.ts.map +1 -1
- package/dist/commands/journal.js +4 -13
- package/dist/commands/ledger-v3.d.ts +5 -0
- package/dist/commands/ledger-v3.d.ts.map +1 -0
- package/dist/commands/ledger-v3.js +91 -0
- package/dist/commands/presence.d.ts.map +1 -1
- package/dist/commands/presence.js +15 -6
- package/dist/commands/sync.d.ts +1 -1
- package/dist/commands/sync.js +1 -1
- package/dist/commands/web.d.ts +6 -0
- package/dist/commands/web.d.ts.map +1 -1
- package/dist/commands/web.js +67 -7
- package/dist/commands/work.d.ts.map +1 -1
- package/dist/commands/work.js +22 -5
- package/dist/core/adapter.d.ts +5 -0
- package/dist/core/adapter.d.ts.map +1 -0
- package/dist/core/adapter.js +1 -0
- package/dist/core/adapters/attest.d.ts +5 -2
- package/dist/core/adapters/attest.d.ts.map +1 -1
- package/dist/core/adapters/attest.js +8 -3
- package/dist/core/adapters/profiles.d.ts +6 -6
- package/dist/core/adapters/profiles.d.ts.map +1 -1
- package/dist/core/adapters/profiles.js +4 -4
- package/dist/core/agents/canonical-emit.d.ts +17 -15
- package/dist/core/agents/canonical-emit.d.ts.map +1 -1
- package/dist/core/agents/canonical-emit.js +27 -25
- package/dist/core/agents/cli.js +212 -235
- package/dist/core/agents/codex-archive-v3.d.ts +14 -0
- package/dist/core/agents/codex-archive-v3.d.ts.map +1 -0
- package/dist/core/agents/codex-archive-v3.js +110 -0
- package/dist/core/agents/coord-client.d.ts +19 -70
- package/dist/core/agents/coord-client.d.ts.map +1 -1
- package/dist/core/agents/coord-client.js +65 -155
- package/dist/core/agents/finalization.d.ts +4 -1
- package/dist/core/agents/finalization.d.ts.map +1 -1
- package/dist/core/agents/finalization.js +89 -32
- package/dist/core/agents/index.d.ts +5 -5
- package/dist/core/agents/index.d.ts.map +1 -1
- package/dist/core/agents/index.js +5 -5
- package/dist/core/agents/live-authority-v3.d.ts +59 -0
- package/dist/core/agents/live-authority-v3.d.ts.map +1 -0
- package/dist/core/agents/live-authority-v3.js +233 -0
- package/dist/core/agents/live-lifecycle-v3.d.ts +20 -0
- package/dist/core/agents/live-lifecycle-v3.d.ts.map +1 -0
- package/dist/core/agents/live-lifecycle-v3.js +91 -0
- package/dist/core/agents/live-observation-v3.d.ts +25 -0
- package/dist/core/agents/live-observation-v3.d.ts.map +1 -0
- package/dist/core/agents/live-observation-v3.js +157 -0
- package/dist/core/agents/render/prompt-context.d.ts +10 -4
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +61 -55
- package/dist/core/agents/render/session-context.d.ts +1 -1
- package/dist/core/agents/render/session-context.d.ts.map +1 -1
- package/dist/core/agents/render/session-context.js +15 -33
- package/dist/core/agents/rules/claim-conflict.d.ts +3 -3
- package/dist/core/agents/rules/claim-conflict.d.ts.map +1 -1
- package/dist/core/agents/rules/claim-conflict.js +79 -127
- package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
- package/dist/core/agents/rules/commit-conflict.js +3 -18
- package/dist/core/agents/rules/stop-hook.d.ts +9 -50
- package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
- package/dist/core/agents/rules/stop-hook.js +193 -236
- package/dist/core/agents/session-events.d.ts +5 -7
- package/dist/core/agents/session-events.d.ts.map +1 -1
- package/dist/core/agents/session-events.js +127 -95
- package/dist/core/agents/session-finalization-state-v3.d.ts +30 -0
- package/dist/core/agents/session-finalization-state-v3.d.ts.map +1 -0
- package/dist/core/agents/session-finalization-state-v3.js +40 -0
- package/dist/core/agents/session-finalizer-v3.d.ts +107 -0
- package/dist/core/agents/session-finalizer-v3.d.ts.map +1 -0
- package/dist/core/agents/session-finalizer-v3.js +734 -0
- package/dist/core/agents/session-name-display.d.ts +40 -0
- package/dist/core/agents/session-name-display.d.ts.map +1 -0
- package/dist/core/agents/session-name-display.js +119 -0
- package/dist/core/agents/state/activity-log.d.ts +3 -3
- package/dist/core/agents/state/activity-log.d.ts.map +1 -1
- package/dist/core/agents/state/activity-log.js +7 -16
- package/dist/core/agents/state/heartbeat-writer.d.ts +29 -46
- package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +59 -199
- package/dist/core/agents/state/live-coordination-view.d.ts +31 -0
- package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -0
- package/dist/core/agents/state/live-coordination-view.js +209 -0
- package/dist/core/agents/state/session-state.d.ts +45 -0
- package/dist/core/agents/state/session-state.d.ts.map +1 -0
- package/dist/core/agents/state/session-state.js +90 -0
- package/dist/core/agents/state/stale-sweep.d.ts +1 -1
- package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
- package/dist/core/agents/state/stale-sweep.js +26 -15
- package/dist/core/artifacts/index.d.ts.map +1 -1
- package/dist/core/artifacts/index.js +5 -7
- package/dist/core/config.d.ts +33 -2
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +98 -2
- package/dist/core/context/index.d.ts +1 -4
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +9 -9
- package/dist/core/events/span-parent.d.ts +15 -0
- package/dist/core/events/span-parent.d.ts.map +1 -0
- package/dist/core/events/span-parent.js +34 -0
- package/dist/core/events/v3/advance.d.ts +14 -0
- package/dist/core/events/v3/advance.d.ts.map +1 -0
- package/dist/core/events/v3/advance.js +134 -0
- package/dist/core/events/v3/authority-outbox.d.ts +78 -0
- package/dist/core/events/v3/authority-outbox.d.ts.map +1 -0
- package/dist/core/events/v3/authority-outbox.js +399 -0
- package/dist/core/events/v3/base-builder.d.ts +20 -0
- package/dist/core/events/v3/base-builder.d.ts.map +1 -0
- package/dist/core/events/v3/base-builder.js +29 -0
- package/dist/core/events/v3/base-contract.d.ts +7576 -0
- package/dist/core/events/v3/base-contract.d.ts.map +1 -0
- package/dist/core/events/v3/base-contract.js +647 -0
- package/dist/core/events/v3/bootstrap.d.ts +34 -0
- package/dist/core/events/v3/bootstrap.d.ts.map +1 -0
- package/dist/core/events/v3/bootstrap.js +175 -0
- package/dist/core/events/v3/builder.d.ts +20 -0
- package/dist/core/events/v3/builder.d.ts.map +1 -0
- package/dist/core/events/v3/builder.js +28 -0
- package/dist/core/events/v3/canonical.d.ts +31 -0
- package/dist/core/events/v3/canonical.d.ts.map +1 -0
- package/dist/core/events/v3/canonical.js +100 -0
- package/dist/core/events/v3/capabilities.d.ts +31 -0
- package/dist/core/events/v3/capabilities.d.ts.map +1 -0
- package/dist/core/events/v3/capabilities.js +107 -0
- package/dist/core/events/v3/capability-drift.d.ts +22 -0
- package/dist/core/events/v3/capability-drift.d.ts.map +1 -0
- package/dist/core/events/v3/capability-drift.js +134 -0
- package/dist/core/events/v3/catalog.d.ts +38 -0
- package/dist/core/events/v3/catalog.d.ts.map +1 -0
- package/dist/core/events/v3/catalog.js +135 -0
- package/dist/core/events/v3/clock-order.d.ts +34 -0
- package/dist/core/events/v3/clock-order.d.ts.map +1 -0
- package/dist/core/events/v3/clock-order.js +35 -0
- package/dist/core/events/v3/contract.d.ts +171 -0
- package/dist/core/events/v3/contract.d.ts.map +1 -0
- package/dist/core/events/v3/contract.js +180 -0
- package/dist/core/events/v3/control.d.ts +111 -0
- package/dist/core/events/v3/control.d.ts.map +1 -0
- package/dist/core/events/v3/control.js +419 -0
- package/dist/core/events/v3/coordination-view.d.ts +69 -0
- package/dist/core/events/v3/coordination-view.d.ts.map +1 -0
- package/dist/core/events/v3/coordination-view.js +119 -0
- package/dist/core/events/v3/economics.d.ts +77 -0
- package/dist/core/events/v3/economics.d.ts.map +1 -0
- package/dist/core/events/v3/economics.js +274 -0
- package/dist/core/events/v3/finalization-view.d.ts +26 -0
- package/dist/core/events/v3/finalization-view.d.ts.map +1 -0
- package/dist/core/events/v3/finalization-view.js +37 -0
- package/dist/core/events/v3/fingerprint-keys.d.ts +25 -0
- package/dist/core/events/v3/fingerprint-keys.d.ts.map +1 -0
- package/dist/core/events/v3/fingerprint-keys.js +217 -0
- package/dist/core/events/v3/generated.d.ts +4 -0
- package/dist/core/events/v3/generated.d.ts.map +1 -0
- package/dist/core/events/v3/generated.js +47 -0
- package/dist/core/events/v3/ids.d.ts +9 -0
- package/dist/core/events/v3/ids.d.ts.map +1 -0
- package/dist/core/events/v3/ids.js +25 -0
- package/dist/core/events/v3/index.d.ts +35 -0
- package/dist/core/events/v3/index.d.ts.map +1 -0
- package/dist/core/events/v3/index.js +33 -0
- package/dist/core/events/v3/latency.d.ts +63 -0
- package/dist/core/events/v3/latency.d.ts.map +1 -0
- package/dist/core/events/v3/latency.js +412 -0
- package/dist/core/events/v3/live-feed.d.ts +45 -0
- package/dist/core/events/v3/live-feed.d.ts.map +1 -0
- package/dist/core/events/v3/live-feed.js +246 -0
- package/dist/core/events/v3/live-observation.d.ts +35 -0
- package/dist/core/events/v3/live-observation.d.ts.map +1 -0
- package/dist/core/events/v3/live-observation.js +1 -0
- package/dist/core/events/v3/live-routing.d.ts +57 -0
- package/dist/core/events/v3/live-routing.d.ts.map +1 -0
- package/dist/core/events/v3/live-routing.js +107 -0
- package/dist/core/events/v3/producers/command-recorder.d.ts +67 -0
- package/dist/core/events/v3/producers/command-recorder.d.ts.map +1 -0
- package/dist/core/events/v3/producers/command-recorder.js +477 -0
- package/dist/core/events/v3/producers/command.d.ts +50 -0
- package/dist/core/events/v3/producers/command.d.ts.map +1 -0
- package/dist/core/events/v3/producers/command.js +135 -0
- package/dist/core/events/v3/producers/coordination-recorder.d.ts +53 -0
- package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -0
- package/dist/core/events/v3/producers/coordination-recorder.js +376 -0
- package/dist/core/events/v3/producers/coordination.d.ts +90 -0
- package/dist/core/events/v3/producers/coordination.d.ts.map +1 -0
- package/dist/core/events/v3/producers/coordination.js +229 -0
- package/dist/core/events/v3/producers/hook-base.d.ts +54 -0
- package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -0
- package/dist/core/events/v3/producers/hook-base.js +424 -0
- package/dist/core/events/v3/producers/hook.d.ts +29 -0
- package/dist/core/events/v3/producers/hook.d.ts.map +1 -0
- package/dist/core/events/v3/producers/hook.js +71 -0
- package/dist/core/events/v3/producers/intake.d.ts +65 -0
- package/dist/core/events/v3/producers/intake.d.ts.map +1 -0
- package/dist/core/events/v3/producers/intake.js +244 -0
- package/dist/core/events/v3/producers/recorder.d.ts +240 -0
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -0
- package/dist/core/events/v3/producers/recorder.js +2176 -0
- package/dist/core/events/v3/projection.d.ts +101 -0
- package/dist/core/events/v3/projection.d.ts.map +1 -0
- package/dist/core/events/v3/projection.js +479 -0
- package/dist/core/events/v3/reader.d.ts +75 -0
- package/dist/core/events/v3/reader.d.ts.map +1 -0
- package/dist/core/events/v3/reader.js +778 -0
- package/dist/core/events/v3/recovery-record.d.ts +47 -0
- package/dist/core/events/v3/recovery-record.d.ts.map +1 -0
- package/dist/core/events/v3/recovery-record.js +167 -0
- package/dist/core/events/v3/recovery.d.ts +22 -0
- package/dist/core/events/v3/recovery.d.ts.map +1 -0
- package/dist/core/events/v3/recovery.js +227 -0
- package/dist/core/events/v3/span-state.d.ts +52 -0
- package/dist/core/events/v3/span-state.d.ts.map +1 -0
- package/dist/core/events/v3/span-state.js +142 -0
- package/dist/core/events/v3/targets.d.ts +23 -0
- package/dist/core/events/v3/targets.d.ts.map +1 -0
- package/dist/core/events/v3/targets.js +134 -0
- package/dist/core/events/v3/turn-telemetry.d.ts +41 -0
- package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -0
- package/dist/core/events/v3/turn-telemetry.js +168 -0
- package/dist/core/events/v3/validate.d.ts +9 -0
- package/dist/core/events/v3/validate.d.ts.map +1 -0
- package/dist/core/events/v3/validate.js +281 -0
- package/dist/core/events/v3/writer.d.ts +56 -0
- package/dist/core/events/v3/writer.d.ts.map +1 -0
- package/dist/core/events/v3/writer.js +335 -0
- package/dist/core/governor/index.d.ts +1 -1
- package/dist/core/governor/index.d.ts.map +1 -1
- package/dist/core/governor/index.js +1 -1
- package/dist/core/governor/plan-api.d.ts +2 -1
- package/dist/core/governor/plan-api.d.ts.map +1 -1
- package/dist/core/governor/plan-api.js +6 -3
- package/dist/core/governor/read.d.ts +1 -1
- package/dist/core/governor/read.d.ts.map +1 -1
- package/dist/core/governor/read.js +1 -1
- package/dist/core/governor/state.d.ts +9 -0
- package/dist/core/governor/state.d.ts.map +1 -1
- package/dist/core/governor/state.js +40 -3
- package/dist/core/guard/config.d.ts +5 -0
- package/dist/core/guard/config.d.ts.map +1 -0
- package/dist/core/guard/config.js +157 -0
- package/dist/core/guard/coordinator.d.ts +14 -0
- package/dist/core/guard/coordinator.d.ts.map +1 -0
- package/dist/core/guard/coordinator.js +173 -0
- package/dist/core/guard/evaluator.d.ts +4 -0
- package/dist/core/guard/evaluator.d.ts.map +1 -0
- package/dist/core/guard/evaluator.js +242 -0
- package/dist/core/guard/evidence-v3.d.ts +15 -0
- package/dist/core/guard/evidence-v3.d.ts.map +1 -0
- package/dist/core/guard/evidence-v3.js +171 -0
- package/dist/core/guard/index.d.ts +10 -0
- package/dist/core/guard/index.d.ts.map +1 -0
- package/dist/core/guard/index.js +6 -0
- package/dist/core/guard/live-source-v3.d.ts +40 -0
- package/dist/core/guard/live-source-v3.d.ts.map +1 -0
- package/dist/core/guard/live-source-v3.js +128 -0
- package/dist/core/guard/storage.d.ts +27 -0
- package/dist/core/guard/storage.d.ts.map +1 -0
- package/dist/core/guard/storage.js +140 -0
- package/dist/core/guard/types.d.ts +119 -0
- package/dist/core/guard/types.d.ts.map +1 -0
- package/dist/core/guard/types.js +1 -0
- package/dist/core/hooks/adapter/detect.d.ts +18 -1
- package/dist/core/hooks/adapter/detect.d.ts.map +1 -1
- package/dist/core/hooks/adapter/detect.js +29 -0
- package/dist/core/hooks/adapter/events.d.ts +7 -4
- package/dist/core/hooks/adapter/events.d.ts.map +1 -1
- package/dist/core/hooks/adapter/events.js +13 -4
- package/dist/core/hooks/adapter/output.d.ts +2 -2
- package/dist/core/hooks/adapter/output.d.ts.map +1 -1
- package/dist/core/hooks/adapter/parse.d.ts +7 -4
- package/dist/core/hooks/adapter/parse.d.ts.map +1 -1
- package/dist/core/hooks/adapter/parse.js +64 -24
- package/dist/core/hooks/adapter/wiring.d.ts +30 -4
- package/dist/core/hooks/adapter/wiring.d.ts.map +1 -1
- package/dist/core/hooks/adapter/wiring.js +89 -11
- package/dist/core/hooks/cli.d.ts +1 -1
- package/dist/core/hooks/cli.js +345 -400
- package/dist/core/hooks/codex-authorization.d.ts +30 -0
- package/dist/core/hooks/codex-authorization.d.ts.map +1 -0
- package/dist/core/hooks/codex-authorization.js +199 -0
- package/dist/core/hooks/effects/image-capture.d.ts +20 -34
- package/dist/core/hooks/effects/image-capture.d.ts.map +1 -1
- package/dist/core/hooks/effects/image-capture.js +212 -221
- package/dist/core/hooks/effects/index.d.ts +1 -9
- package/dist/core/hooks/effects/index.d.ts.map +1 -1
- package/dist/core/hooks/effects/index.js +1 -24
- package/dist/core/hooks/events/input-hash.d.ts +7 -0
- package/dist/core/hooks/events/input-hash.d.ts.map +1 -0
- package/dist/core/hooks/events/input-hash.js +43 -0
- package/dist/core/hooks/index.d.ts +4 -3
- package/dist/core/hooks/index.d.ts.map +1 -1
- package/dist/core/hooks/index.js +2 -3
- package/dist/core/hooks/resolve/coord-root.d.ts +1 -1
- package/dist/core/hooks/resolve/coord-root.js +1 -1
- package/dist/core/hooks/resolve/owner.d.ts +16 -15
- package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
- package/dist/core/hooks/resolve/owner.js +51 -42
- package/dist/core/hooks/resolve/transcript.d.ts +33 -3
- package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
- package/dist/core/hooks/resolve/transcript.js +155 -14
- package/dist/core/hooks/session-name-presence.d.ts +9 -10
- package/dist/core/hooks/session-name-presence.d.ts.map +1 -1
- package/dist/core/hooks/session-name-presence.js +15 -15
- package/dist/core/hooks/unsafe-cross-shell.d.ts +1 -1
- package/dist/core/hooks/unsafe-cross-shell.d.ts.map +1 -1
- package/dist/core/journal/index.d.ts +2 -2
- package/dist/core/journal/index.d.ts.map +1 -1
- package/dist/core/journal/index.js +9 -22
- package/dist/core/presence/blob.d.ts +8 -3
- package/dist/core/presence/blob.d.ts.map +1 -1
- package/dist/core/presence/blob.js +54 -41
- package/dist/core/presence/codec-digest.d.ts +29 -0
- package/dist/core/presence/codec-digest.d.ts.map +1 -0
- package/dist/core/presence/codec-digest.js +170 -0
- package/dist/core/presence/index.js +15 -1
- package/dist/core/presence/relay-client.d.ts +1 -1
- package/dist/core/presence/relay-client.d.ts.map +1 -1
- package/dist/core/presence/relay-client.js +5 -5
- package/dist/core/work/index.d.ts +1 -1
- package/dist/core/work/index.d.ts.map +1 -1
- package/dist/core/work/index.js +1 -1
- package/dist/core/work/read.d.ts +1 -1
- package/dist/core/work/read.d.ts.map +1 -1
- package/dist/core/work/read.js +1 -1
- package/dist/core/work/runner.d.ts.map +1 -1
- package/dist/core/work/runner.js +6 -0
- package/dist/core/work/state.d.ts +9 -0
- package/dist/core/work/state.d.ts.map +1 -1
- package/dist/core/work/state.js +17 -3
- package/dist/core/workflow/engine.js +24 -25
- package/dist/core/workflow/live-session-v3.d.ts +19 -0
- package/dist/core/workflow/live-session-v3.d.ts.map +1 -0
- package/dist/core/workflow/live-session-v3.js +86 -0
- package/dist/core/workflow/scope-id.d.ts +3 -0
- package/dist/core/workflow/scope-id.d.ts.map +1 -0
- package/dist/core/workflow/scope-id.js +5 -0
- package/dist/core/workflow/workspaces/leases.d.ts +4 -0
- package/dist/core/workflow/workspaces/leases.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/leases.js +53 -19
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/browser/client.d.ts +41 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +203 -0
- package/dist/lib/browser/critique.d.ts +28 -2
- package/dist/lib/browser/critique.d.ts.map +1 -1
- package/dist/lib/browser/critique.js +74 -18
- package/dist/lib/browser/geometry.d.ts +1 -1
- package/dist/lib/browser/geometry.d.ts.map +1 -1
- package/dist/lib/browser/geometry.js +130 -6
- package/dist/lib/browser/index.d.ts +3 -0
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +3 -0
- package/dist/lib/browser/qa-plan.d.ts +174 -0
- package/dist/lib/browser/qa-plan.d.ts.map +1 -0
- package/dist/lib/browser/qa-plan.js +321 -0
- package/dist/lib/browser/qa-reuse.d.ts +99 -0
- package/dist/lib/browser/qa-reuse.d.ts.map +1 -0
- package/dist/lib/browser/qa-reuse.js +222 -0
- package/dist/lib/browser/qa-snapshot.d.ts +64 -0
- package/dist/lib/browser/qa-snapshot.d.ts.map +1 -0
- package/dist/lib/browser/qa-snapshot.js +171 -0
- package/dist/lib/browser/runts.d.ts.map +1 -1
- package/dist/lib/browser/runts.js +22 -1
- package/dist/lib/browser/tiling.d.ts +71 -0
- package/dist/lib/browser/tiling.d.ts.map +1 -0
- package/dist/lib/browser/tiling.js +118 -0
- package/dist/lib/context/index.d.ts +0 -3
- package/dist/lib/context/index.d.ts.map +1 -1
- package/dist/lib/context/index.js +20 -42
- package/dist/lib/council/index.d.ts +2 -2
- package/dist/lib/council/index.d.ts.map +1 -1
- package/dist/lib/council/index.js +9 -20
- package/dist/lib/docs-frontmatter.d.ts +1 -6
- package/dist/lib/docs-frontmatter.d.ts.map +1 -1
- package/dist/lib/docs-frontmatter.js +12 -78
- package/dist/lib/docs-index.d.ts +9 -0
- package/dist/lib/docs-index.d.ts.map +1 -1
- package/dist/lib/docs-index.js +32 -3
- package/dist/lib/docs-lint.d.ts.map +1 -1
- package/dist/lib/docs-lint.js +14 -30
- package/dist/lib/docs-metadata-audit.d.ts +19 -0
- package/dist/lib/docs-metadata-audit.d.ts.map +1 -0
- package/dist/lib/docs-metadata-audit.js +132 -0
- package/dist/lib/docs-metadata-managed.d.ts +23 -0
- package/dist/lib/docs-metadata-managed.d.ts.map +1 -0
- package/dist/lib/docs-metadata-managed.js +78 -0
- package/dist/lib/docs-metadata-sync.d.ts +20 -0
- package/dist/lib/docs-metadata-sync.d.ts.map +1 -0
- package/dist/lib/docs-metadata-sync.js +222 -0
- package/dist/lib/docs-metadata-v2-schema.d.ts +273 -0
- package/dist/lib/docs-metadata-v2-schema.d.ts.map +1 -0
- package/dist/lib/docs-metadata-v2-schema.js +134 -0
- package/dist/lib/docs-metadata-v2.d.ts +21 -0
- package/dist/lib/docs-metadata-v2.d.ts.map +1 -0
- package/dist/lib/docs-metadata-v2.js +424 -0
- package/dist/lib/docs-new.d.ts +11 -0
- package/dist/lib/docs-new.d.ts.map +1 -0
- package/dist/lib/docs-new.js +52 -0
- package/dist/lib/docs-sweep.d.ts.map +1 -1
- package/dist/lib/docs-sweep.js +45 -29
- package/dist/lib/headless/index.d.ts +98 -0
- package/dist/lib/headless/index.d.ts.map +1 -0
- package/dist/lib/headless/index.js +211 -0
- package/dist/lib/identities/assume.d.ts +4 -4
- package/dist/lib/identities/assume.d.ts.map +1 -1
- package/dist/lib/identities/assume.js +52 -68
- package/dist/lib/instructions/apply.d.ts +5 -4
- package/dist/lib/instructions/apply.d.ts.map +1 -1
- package/dist/lib/instructions/apply.js +32 -20
- package/dist/lib/instructions/bundle.d.ts +33 -0
- package/dist/lib/instructions/bundle.d.ts.map +1 -0
- package/dist/lib/instructions/bundle.js +149 -0
- package/dist/lib/instructions/splice.d.ts +0 -1
- package/dist/lib/instructions/splice.d.ts.map +1 -1
- package/dist/lib/instructions/splice.js +22 -6
- package/dist/lib/instructions/templates.d.ts +7 -5
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +79 -9
- package/package.json +27 -6
- package/schemas/config.schema.json +120 -2
- package/schemas/docs-metadata-v2.schema.json +441 -0
- package/schemas/event-v3.schema.json +24472 -0
- package/src/commander.ts +7 -1
- package/src/commands/adapter.ts +2 -2
- package/src/commands/agents.ts +1737 -570
- package/src/commands/artifacts.ts +7 -6
- package/src/commands/backup.ts +29 -21
- package/src/commands/browse.ts +349 -8
- package/src/commands/checkpoint.ts +4 -3
- package/src/commands/claude-desktop.ts +7 -5
- package/src/commands/context.ts +1 -6
- package/src/commands/decision.ts +27 -44
- package/src/commands/docs.ts +100 -33
- package/src/commands/doctor.ts +73 -8
- package/src/commands/events.ts +256 -0
- package/src/commands/governor.ts +18 -4
- package/src/commands/init.ts +264 -57
- package/src/commands/instructions.ts +129 -0
- package/src/commands/journal.ts +4 -13
- package/src/commands/ledger-v3.ts +111 -0
- package/src/commands/presence.ts +18 -11
- package/src/commands/sync.ts +1 -1
- package/src/commands/web.ts +67 -8
- package/src/commands/work.ts +28 -5
- package/src/core/adapter.ts +5 -0
- package/src/core/adapters/attest.ts +8 -3
- package/src/core/adapters/profiles.ts +4 -6
- package/src/core/agents/canonical-emit.ts +39 -28
- package/src/core/agents/cli.ts +242 -263
- package/src/core/agents/codex-archive-v3.ts +138 -0
- package/src/core/agents/coord-client.ts +75 -177
- package/src/core/agents/finalization.ts +120 -38
- package/src/core/agents/index.ts +5 -5
- package/src/core/agents/live-authority-v3.ts +375 -0
- package/src/core/agents/live-lifecycle-v3.ts +140 -0
- package/src/core/agents/live-observation-v3.ts +216 -0
- package/src/core/agents/render/prompt-context.ts +89 -55
- package/src/core/agents/render/session-context.ts +23 -32
- package/src/core/agents/rules/claim-conflict.ts +85 -126
- package/src/core/agents/rules/commit-conflict.ts +3 -14
- package/src/core/agents/rules/stop-hook.ts +239 -293
- package/src/core/agents/session-events.ts +137 -104
- package/src/core/agents/session-finalization-state-v3.ts +90 -0
- package/src/core/agents/session-finalizer-v3.ts +953 -0
- package/src/core/agents/session-name-display.ts +149 -0
- package/src/core/agents/state/activity-log.ts +6 -14
- package/src/core/agents/state/heartbeat-writer.ts +98 -242
- package/src/core/agents/state/live-coordination-view.ts +290 -0
- package/src/core/agents/state/session-state.ts +143 -0
- package/src/core/agents/state/stale-sweep.ts +40 -17
- package/src/core/artifacts/index.ts +4 -5
- package/src/core/config.ts +148 -3
- package/src/core/context/index.ts +9 -17
- package/src/core/events/span-parent.ts +46 -0
- package/src/core/events/v3/advance.ts +168 -0
- package/src/core/events/v3/authority-outbox.ts +548 -0
- package/src/core/events/v3/base-builder.ts +60 -0
- package/src/core/events/v3/base-contract.ts +882 -0
- package/src/core/events/v3/bootstrap.ts +226 -0
- package/src/core/events/v3/builder.ts +59 -0
- package/src/core/events/v3/canonical.ts +153 -0
- package/src/core/events/v3/capabilities.ts +171 -0
- package/src/core/events/v3/capability-drift.ts +177 -0
- package/src/core/events/v3/catalog.ts +202 -0
- package/src/core/events/v3/clock-order.ts +41 -0
- package/src/core/events/v3/contract.ts +365 -0
- package/src/core/events/v3/control.ts +576 -0
- package/src/core/events/v3/coordination-view.ts +193 -0
- package/src/core/events/v3/economics.ts +384 -0
- package/src/core/events/v3/finalization-view.ts +67 -0
- package/src/core/events/v3/fingerprint-keys.ts +260 -0
- package/src/core/events/v3/generated.ts +48 -0
- package/src/core/events/v3/ids.ts +33 -0
- package/src/core/events/v3/index.ts +322 -0
- package/src/core/events/v3/latency.ts +551 -0
- package/src/core/events/v3/live-feed.ts +319 -0
- package/src/core/events/v3/live-observation.ts +39 -0
- package/src/core/events/v3/live-routing.ts +135 -0
- package/src/core/events/v3/producers/command-recorder.ts +631 -0
- package/src/core/events/v3/producers/command.ts +201 -0
- package/src/core/events/v3/producers/coordination-recorder.ts +538 -0
- package/src/core/events/v3/producers/coordination.ts +355 -0
- package/src/core/events/v3/producers/hook-base.ts +578 -0
- package/src/core/events/v3/producers/hook.ts +119 -0
- package/src/core/events/v3/producers/intake.ts +319 -0
- package/src/core/events/v3/producers/recorder.ts +2805 -0
- package/src/core/events/v3/projection.ts +653 -0
- package/src/core/events/v3/reader.ts +1127 -0
- package/src/core/events/v3/recovery-record.ts +244 -0
- package/src/core/events/v3/recovery.ts +271 -0
- package/src/core/events/v3/span-state.ts +187 -0
- package/src/core/events/v3/targets.ts +182 -0
- package/src/core/events/v3/turn-telemetry.ts +259 -0
- package/src/core/events/v3/validate.ts +361 -0
- package/src/core/events/v3/writer.ts +419 -0
- package/src/core/governor/index.ts +3 -0
- package/src/core/governor/plan-api.ts +10 -2
- package/src/core/governor/read.ts +3 -0
- package/src/core/governor/state.ts +52 -5
- package/src/core/guard/config.ts +206 -0
- package/src/core/guard/coordinator.ts +227 -0
- package/src/core/guard/evaluator.ts +343 -0
- package/src/core/guard/evidence-v3.ts +227 -0
- package/src/core/guard/index.ts +35 -0
- package/src/core/guard/live-source-v3.ts +204 -0
- package/src/core/guard/storage.ts +188 -0
- package/src/core/guard/types.ts +152 -0
- package/src/core/hooks/adapter/detect.ts +28 -1
- package/src/core/hooks/adapter/events.ts +15 -6
- package/src/core/hooks/adapter/output.ts +7 -2
- package/src/core/hooks/adapter/parse.ts +81 -36
- package/src/core/hooks/adapter/wiring.ts +119 -13
- package/src/core/hooks/cli.ts +398 -422
- package/src/core/hooks/codex-authorization.ts +253 -0
- package/src/core/hooks/effects/image-capture.ts +228 -238
- package/src/core/hooks/effects/index.ts +1 -36
- package/src/core/hooks/events/input-hash.ts +47 -0
- package/src/core/hooks/index.ts +4 -11
- package/src/core/hooks/resolve/coord-root.ts +1 -1
- package/src/core/hooks/resolve/owner.ts +52 -45
- package/src/core/hooks/resolve/transcript.ts +165 -14
- package/src/core/hooks/session-name-presence.ts +14 -15
- package/src/core/hooks/unsafe-cross-shell.ts +1 -1
- package/src/core/journal/index.ts +15 -22
- package/src/core/presence/blob.ts +63 -38
- package/src/core/presence/codec-digest.ts +215 -0
- package/src/core/presence/index.ts +18 -1
- package/src/core/presence/relay-client.ts +5 -5
- package/src/core/work/index.ts +3 -0
- package/src/core/work/read.ts +3 -0
- package/src/core/work/runner.ts +6 -0
- package/src/core/work/state.ts +27 -3
- package/src/core/workflow/engine.ts +24 -24
- package/src/core/workflow/live-session-v3.ts +126 -0
- package/src/core/workflow/scope-id.ts +6 -0
- package/src/core/workflow/workspaces/leases.ts +56 -19
- package/src/index.ts +1 -1
- package/src/lib/browser/client.ts +230 -0
- package/src/lib/browser/critique.ts +104 -27
- package/src/lib/browser/geometry.ts +143 -14
- package/src/lib/browser/index.ts +34 -0
- package/src/lib/browser/qa-plan.ts +501 -0
- package/src/lib/browser/qa-reuse.ts +306 -0
- package/src/lib/browser/qa-snapshot.ts +223 -0
- package/src/lib/browser/runts.ts +27 -2
- package/src/lib/browser/tiling.ts +164 -0
- package/src/lib/context/index.ts +22 -46
- package/src/lib/council/index.ts +9 -21
- package/src/lib/docs-frontmatter.ts +8 -79
- package/src/lib/docs-index.ts +33 -3
- package/src/lib/docs-lint.ts +15 -29
- package/src/lib/docs-metadata-audit.ts +166 -0
- package/src/lib/docs-metadata-managed.ts +83 -0
- package/src/lib/docs-metadata-sync.ts +262 -0
- package/src/lib/docs-metadata-v2-schema.ts +138 -0
- package/src/lib/docs-metadata-v2.ts +646 -0
- package/src/lib/docs-new.ts +63 -0
- package/src/lib/docs-sweep.ts +42 -28
- package/src/lib/headless/index.ts +287 -0
- package/src/lib/identities/assume.ts +67 -86
- package/src/lib/instructions/apply.ts +33 -20
- package/src/lib/instructions/bundle.ts +199 -0
- package/src/lib/instructions/splice.ts +21 -7
- package/src/lib/instructions/templates.ts +85 -13
- package/dist/core/agents/cli-emit.d.ts +0 -27
- package/dist/core/agents/cli-emit.d.ts.map +0 -1
- package/dist/core/agents/cli-emit.js +0 -57
- package/dist/core/agents/codex-replay.d.ts +0 -29
- package/dist/core/agents/codex-replay.d.ts.map +0 -1
- package/dist/core/agents/codex-replay.js +0 -138
- package/dist/core/agents/events/consume.d.ts +0 -82
- package/dist/core/agents/events/consume.d.ts.map +0 -1
- package/dist/core/agents/events/consume.js +0 -195
- package/dist/core/agents/events/emit.d.ts +0 -42
- package/dist/core/agents/events/emit.d.ts.map +0 -1
- package/dist/core/agents/events/emit.js +0 -75
- package/dist/core/agents/events/ulid.d.ts +0 -11
- package/dist/core/agents/events/ulid.d.ts.map +0 -1
- package/dist/core/agents/events/ulid.js +0 -47
- package/dist/core/agents/state/heartbeat-projector.d.ts +0 -65
- package/dist/core/agents/state/heartbeat-projector.d.ts.map +0 -1
- package/dist/core/agents/state/heartbeat-projector.js +0 -527
- package/dist/core/hooks/events/emit.d.ts +0 -31
- package/dist/core/hooks/events/emit.d.ts.map +0 -1
- package/dist/core/hooks/events/emit.js +0 -93
- package/dist/core/hooks/events/rotate.d.ts +0 -43
- package/dist/core/hooks/events/rotate.d.ts.map +0 -1
- package/dist/core/hooks/events/rotate.js +0 -142
- package/dist/core/hooks/events/schema.d.ts +0 -312
- package/dist/core/hooks/events/schema.d.ts.map +0 -1
- package/dist/core/hooks/events/schema.js +0 -12
- package/dist/core/hooks/events/ulid.d.ts +0 -10
- package/dist/core/hooks/events/ulid.d.ts.map +0 -1
- package/dist/core/hooks/events/ulid.js +0 -47
- package/dist/lib/docs-frontmatter-migrate.d.ts +0 -33
- package/dist/lib/docs-frontmatter-migrate.d.ts.map +0 -1
- package/dist/lib/docs-frontmatter-migrate.js +0 -364
- package/src/core/agents/cli-emit.ts +0 -64
- package/src/core/agents/codex-replay.ts +0 -163
- package/src/core/agents/events/consume.ts +0 -254
- package/src/core/agents/events/emit.ts +0 -115
- package/src/core/agents/events/ulid.ts +0 -51
- package/src/core/agents/state/heartbeat-projector.ts +0 -582
- package/src/core/hooks/events/emit.ts +0 -125
- package/src/core/hooks/events/rotate.ts +0 -151
- package/src/core/hooks/events/schema.ts +0 -538
- package/src/core/hooks/events/ulid.ts +0 -51
- package/src/lib/docs-frontmatter-migrate.ts +0 -427
package/dist/core/agents/cli.js
CHANGED
|
@@ -112,30 +112,25 @@ async function handleVerdict(root) {
|
|
|
112
112
|
return 0;
|
|
113
113
|
}
|
|
114
114
|
async function handleProject(root, rest) {
|
|
115
|
-
const {
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
const { resolveLiveEventLedgerRouteV3 } = await import("../events/v3/live-routing.js");
|
|
116
|
+
const route = resolveLiveEventLedgerRouteV3(root);
|
|
117
|
+
if (route.state === "blocked") {
|
|
118
|
+
process.stderr.write(`agent-coord project: V3 route is unsafe (${route.reason})\n`);
|
|
119
|
+
return 1;
|
|
120
|
+
}
|
|
121
|
+
const { readCoordinationViewV3 } = await import("../events/v3/coordination-view.js");
|
|
122
|
+
const view = readCoordinationViewV3(root);
|
|
120
123
|
const report = {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
124
|
+
contract_major: 2,
|
|
125
|
+
source_complete: view.source_complete,
|
|
126
|
+
authority_safe: view.authority_safe,
|
|
127
|
+
owners_projected: Object.keys(view.instances).length,
|
|
128
|
+
owners: Object.keys(view.instances).sort(),
|
|
129
|
+
diagnostics: view.diagnostics,
|
|
130
|
+
materialized: false,
|
|
127
131
|
};
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if (rest.includes("--json")) {
|
|
131
|
-
process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
process.stdout.write(`projected ${report.events_consumed} events across ${report.owners_projected} owners\n cursor → ${report.cursor ?? "<none>"}\n${report.owners.length
|
|
135
|
-
? ` owners: ${report.owners.map((o) => o.slice(0, 8)).join(", ")}\n`
|
|
136
|
-
: ""}`);
|
|
137
|
-
}
|
|
138
|
-
return 0;
|
|
132
|
+
process.stdout.write(`${JSON.stringify(report, null, rest.includes("--json") ? 2 : 0)}\n`);
|
|
133
|
+
return view.authority_safe ? 0 : 1;
|
|
139
134
|
}
|
|
140
135
|
function adapterFromPlatform(platform) {
|
|
141
136
|
if (platform === "cursor")
|
|
@@ -144,62 +139,6 @@ function adapterFromPlatform(platform) {
|
|
|
144
139
|
return "codex";
|
|
145
140
|
return "claude-code";
|
|
146
141
|
}
|
|
147
|
-
/**
|
|
148
|
-
* Append a canonical `health.heartbeat_swept` event after an operator kill.
|
|
149
|
-
* Same envelope stale-sweep emits, so the projector's terminal / ended_at
|
|
150
|
-
* guards treat kill and sweep identically. Soft-fails: the unlink already
|
|
151
|
-
* happened.
|
|
152
|
-
*/
|
|
153
|
-
async function emitHeartbeatSwept(root, owner, hb) {
|
|
154
|
-
try {
|
|
155
|
-
const { emit } = await import("./events/emit.js");
|
|
156
|
-
let ageSecs;
|
|
157
|
-
if (hb.last_heartbeat) {
|
|
158
|
-
const ts = Date.parse(hb.last_heartbeat);
|
|
159
|
-
if (Number.isFinite(ts)) {
|
|
160
|
-
ageSecs = Math.max(0, Math.floor((Date.now() - ts) / 1000));
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
emit(root, {
|
|
164
|
-
event_type: "health.heartbeat_swept",
|
|
165
|
-
instance_id: owner,
|
|
166
|
-
session_id: hb.session_id ?? owner,
|
|
167
|
-
adapter: adapterFromPlatform(hb.platform),
|
|
168
|
-
source: "agent-coord",
|
|
169
|
-
data: {
|
|
170
|
-
reason: "killed",
|
|
171
|
-
...(ageSecs !== undefined ? { age_secs: ageSecs } : {}),
|
|
172
|
-
},
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
/* soft-fail: never break the caller */
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Append a canonical `claim.release` event for a path dropped from an owner's
|
|
181
|
-
* files_touched. The path is canonicalized to repo-relative (matching the
|
|
182
|
-
* projector's normalization) so the subtraction matches on replay regardless
|
|
183
|
-
* of the form the caller passed. Soft-fails: a failed emit must never break
|
|
184
|
-
* the release/kill flow — the file mutation already happened.
|
|
185
|
-
*/
|
|
186
|
-
async function emitClaimRelease(root, owner, hb, path, reason) {
|
|
187
|
-
try {
|
|
188
|
-
const { emit } = await import("./events/emit.js");
|
|
189
|
-
const canonical = path.startsWith(`${root}/`) ? path.slice(root.length + 1) : path;
|
|
190
|
-
emit(root, {
|
|
191
|
-
event_type: "claim.release",
|
|
192
|
-
instance_id: owner,
|
|
193
|
-
session_id: hb.session_id ?? owner,
|
|
194
|
-
adapter: adapterFromPlatform(hb.platform),
|
|
195
|
-
source: "agent-coord",
|
|
196
|
-
data: { path: canonical, reason },
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
catch {
|
|
200
|
-
/* soft-fail: never break the caller */
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
142
|
async function handleStateAction(root, action, rest) {
|
|
204
143
|
const writer = await import("./state/heartbeat-writer.js");
|
|
205
144
|
const [owner, ...args] = rest;
|
|
@@ -210,7 +149,23 @@ async function handleStateAction(root, action, rest) {
|
|
|
210
149
|
switch (action) {
|
|
211
150
|
case "set-task": {
|
|
212
151
|
const task = args.join(" ");
|
|
213
|
-
const
|
|
152
|
+
const before = writer.readHeartbeat(root, owner);
|
|
153
|
+
let hb;
|
|
154
|
+
try {
|
|
155
|
+
const { recordLiveTaskChangeV3 } = await import("./live-authority-v3.js");
|
|
156
|
+
recordLiveTaskChangeV3({
|
|
157
|
+
coordRoot: root,
|
|
158
|
+
owner,
|
|
159
|
+
nativeSessionId: before?.session_id ?? owner,
|
|
160
|
+
adapter: adapterFromPlatform(before?.platform),
|
|
161
|
+
task,
|
|
162
|
+
});
|
|
163
|
+
hb = writer.readHeartbeat(root, owner);
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
process.stderr.write(`agent-coord set-task: V3 authority refused (${error instanceof Error ? error.message : String(error)})\n`);
|
|
167
|
+
return 1;
|
|
168
|
+
}
|
|
214
169
|
if (!hb) {
|
|
215
170
|
// Name the RESOLVED root: when a nested .harnery/ shadows the real
|
|
216
171
|
// coordination home, the full path is what makes that diagnosable.
|
|
@@ -220,14 +175,6 @@ async function handleStateAction(root, action, rest) {
|
|
|
220
175
|
process.stdout.write(`${JSON.stringify({ instance_id: owner, task: hb.task ?? null, cleared: !task })}\n`);
|
|
221
176
|
return 0;
|
|
222
177
|
}
|
|
223
|
-
case "set-turn-summary": {
|
|
224
|
-
const summary = args.join(" ");
|
|
225
|
-
const hb = writer.setTurnSummary(root, owner, summary);
|
|
226
|
-
if (!hb)
|
|
227
|
-
return 1;
|
|
228
|
-
process.stdout.write(`${JSON.stringify({ instance_id: owner, turn_summary: hb.turn_summary })}\n`);
|
|
229
|
-
return 0;
|
|
230
|
-
}
|
|
231
178
|
case "release-claim": {
|
|
232
179
|
const path = args[0];
|
|
233
180
|
if (!path) {
|
|
@@ -235,46 +182,29 @@ async function handleStateAction(root, action, rest) {
|
|
|
235
182
|
return 2;
|
|
236
183
|
}
|
|
237
184
|
const before = writer.readHeartbeat(root, owner);
|
|
238
|
-
|
|
239
|
-
|
|
185
|
+
let hb;
|
|
186
|
+
try {
|
|
187
|
+
const { recordLiveClaimChangeV3 } = await import("./live-authority-v3.js");
|
|
188
|
+
recordLiveClaimChangeV3({
|
|
189
|
+
coordRoot: root,
|
|
190
|
+
owner,
|
|
191
|
+
nativeSessionId: before?.session_id ?? owner,
|
|
192
|
+
adapter: adapterFromPlatform(before?.platform),
|
|
193
|
+
operation: "released",
|
|
194
|
+
path,
|
|
195
|
+
access: "write",
|
|
196
|
+
});
|
|
197
|
+
hb = writer.readHeartbeat(root, owner);
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
process.stderr.write(`agent-coord release-claim: V3 authority refused (${error instanceof Error ? error.message : String(error)})\n`);
|
|
240
201
|
return 1;
|
|
241
|
-
// Durability: the projector rebuilds files_touched by replaying the
|
|
242
|
-
// permanent Edit/Write events, so a file-only release is silently
|
|
243
|
-
// reverted by the next full replay. Emitting claim.release puts the
|
|
244
|
-
// subtraction into the stream so every future replay honors it. Only
|
|
245
|
-
// emit when the release actually removed a held path (idempotent
|
|
246
|
-
// re-releases stay quiet).
|
|
247
|
-
const heldBefore = before?.files_touched?.length ?? 0;
|
|
248
|
-
const heldAfter = hb.files_touched?.length ?? 0;
|
|
249
|
-
if (heldBefore > heldAfter) {
|
|
250
|
-
await emitClaimRelease(root, owner, before ?? hb, path, "explicit");
|
|
251
202
|
}
|
|
203
|
+
if (!hb)
|
|
204
|
+
return 1;
|
|
252
205
|
process.stdout.write(`${JSON.stringify({ instance_id: owner, files_touched: hb.files_touched })}\n`);
|
|
253
206
|
return 0;
|
|
254
207
|
}
|
|
255
|
-
case "kill-heartbeat": {
|
|
256
|
-
// Read held claims BEFORE the unlink so they can be released durably —
|
|
257
|
-
// killing only the file leaves the claims resurrectable from the
|
|
258
|
-
// permanent Edit/Write events on the next full replay (observed: a
|
|
259
|
-
// 6-day-dead agent's claims returning after its heartbeat was killed).
|
|
260
|
-
//
|
|
261
|
-
// Also emit health.heartbeat_swept so the stream records a terminal
|
|
262
|
-
// marker. Without it, a later drain that replays [session.start …
|
|
263
|
-
// tools … claim.release] treats the owner as still in-flight and
|
|
264
|
-
// re-creates the file (kill→resurrect loop observed 2026-08-03: 21
|
|
265
|
-
// killed zombies back within a minute via claim.release seeding +
|
|
266
|
-
// historical replay).
|
|
267
|
-
const before = writer.readHeartbeat(root, owner);
|
|
268
|
-
const ok = writer.killHeartbeat(root, owner);
|
|
269
|
-
if (ok && before) {
|
|
270
|
-
await emitHeartbeatSwept(root, owner, before);
|
|
271
|
-
for (const held of before.files_touched ?? []) {
|
|
272
|
-
await emitClaimRelease(root, owner, before, held, "heal");
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
process.stdout.write(`${JSON.stringify({ instance_id: owner, removed: ok })}\n`);
|
|
276
|
-
return ok ? 0 : 1;
|
|
277
|
-
}
|
|
278
208
|
case "heal-pidmap": {
|
|
279
209
|
const pidArg = args[0];
|
|
280
210
|
const pid = pidArg ? Number(pidArg) : process.ppid;
|
|
@@ -282,40 +212,54 @@ async function handleStateAction(root, action, rest) {
|
|
|
282
212
|
process.stderr.write(`agent-coord heal-pidmap: invalid pid ${pidArg}\n`);
|
|
283
213
|
return 2;
|
|
284
214
|
}
|
|
285
|
-
|
|
215
|
+
try {
|
|
216
|
+
const { liveCoordinationWriteModeV3 } = await import("./live-authority-v3.js");
|
|
217
|
+
liveCoordinationWriteModeV3(root);
|
|
218
|
+
writer.healPidmap(root, owner, pid);
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
process.stderr.write(`agent-coord heal-pidmap: V3 route refused (${error instanceof Error ? error.message : String(error)})\n`);
|
|
222
|
+
return 1;
|
|
223
|
+
}
|
|
286
224
|
process.stdout.write(`${JSON.stringify({ instance_id: owner, pid })}\n`);
|
|
287
225
|
return 0;
|
|
288
226
|
}
|
|
289
|
-
case "
|
|
227
|
+
case "repair-coordination-cache": {
|
|
290
228
|
// adapter arrives as a `--adapter=<h>` flag (not positional) so the live
|
|
291
|
-
// tool.
|
|
229
|
+
// tool.requested repair and the manual `harn agents heal` path (which pass
|
|
292
230
|
// different positional counts) can both supply it without arg-order
|
|
293
231
|
// fragility. Positionals (sessionId, model) stay as-is once flags are
|
|
294
232
|
// filtered out.
|
|
295
233
|
const adapter = args.find((a) => a.startsWith("--adapter="))?.slice("--adapter=".length);
|
|
296
|
-
const forkedFrom = args
|
|
297
|
-
.find((a) => a.startsWith("--forked-from="))
|
|
298
|
-
?.slice("--forked-from=".length);
|
|
299
234
|
const positional = args.filter((a) => !a.startsWith("--"));
|
|
300
235
|
const sessionId = positional[0];
|
|
301
236
|
const model = positional[1];
|
|
302
|
-
|
|
237
|
+
let hb;
|
|
238
|
+
try {
|
|
239
|
+
const { liveCoordinationWriteModeV3 } = await import("./live-authority-v3.js");
|
|
240
|
+
liveCoordinationWriteModeV3(root);
|
|
241
|
+
const { readCoordinationViewV3 } = await import("../events/v3/coordination-view.js");
|
|
242
|
+
const { liveInstanceIdV3 } = await import("../events/v3/live-routing.js");
|
|
243
|
+
const projected = readCoordinationViewV3(root).instances[liveInstanceIdV3(owner)];
|
|
244
|
+
if (projected?.provisional_termination) {
|
|
245
|
+
const { recordLiveResumeObservationV3 } = await import("./live-lifecycle-v3.js");
|
|
246
|
+
recordLiveResumeObservationV3({
|
|
247
|
+
coordRoot: root,
|
|
248
|
+
owner,
|
|
249
|
+
nativeSessionId: sessionId ?? owner,
|
|
250
|
+
adapter: adapterFromPlatform(adapter),
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
const { ensureLiveCoordinationHeartbeat } = await import("./state/live-coordination-view.js");
|
|
254
|
+
hb = ensureLiveCoordinationHeartbeat(root, owner, sessionId ?? owner, adapterFromPlatform(adapter), model);
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
process.stderr.write(`agent-coord repair-coordination-cache: V3 route refused (${error instanceof Error ? error.message : String(error)})\n`);
|
|
258
|
+
return 1;
|
|
259
|
+
}
|
|
303
260
|
process.stdout.write(`${JSON.stringify({ instance_id: owner, recreated: !!hb })}\n`);
|
|
304
261
|
return hb ? 0 : 1;
|
|
305
262
|
}
|
|
306
|
-
case "stamp-tool-activity": {
|
|
307
|
-
const toolName = args[0] ?? "";
|
|
308
|
-
const target = args.slice(1).join(" ");
|
|
309
|
-
const hb = writer.stampToolActivity(root, owner, toolName, target);
|
|
310
|
-
if (!hb)
|
|
311
|
-
return 1;
|
|
312
|
-
process.stdout.write(`${JSON.stringify({
|
|
313
|
-
instance_id: owner,
|
|
314
|
-
last_tool: hb.last_tool,
|
|
315
|
-
last_tool_target: hb.last_tool_target,
|
|
316
|
-
})}\n`);
|
|
317
|
-
return 0;
|
|
318
|
-
}
|
|
319
263
|
default:
|
|
320
264
|
process.stderr.write(`agent-coord: unknown state action ${action}\n`);
|
|
321
265
|
return 2;
|
|
@@ -507,33 +451,9 @@ async function handleShellMutationClaimLog(root, rest) {
|
|
|
507
451
|
const platform = args.platform ?? "unknown";
|
|
508
452
|
const owner = args.owner ?? null;
|
|
509
453
|
const { shellMutationPaths } = await import("./state/shell-mutation.js");
|
|
510
|
-
const { emit } = await import("./events/emit.js");
|
|
511
|
-
const { readHeartbeat } = await import("./state/heartbeat-writer.js");
|
|
512
454
|
const paths = shellMutationPaths(cmd, root);
|
|
513
455
|
const truncated = cmd.length > 80 ? cmd.slice(0, 80) : cmd;
|
|
514
|
-
|
|
515
|
-
// in a log file; now a canonical decision.warn so the
|
|
516
|
-
// signal survives in events.ndjson. (The blocking claim-conflict path is
|
|
517
|
-
// separate: claim.conflict / verdict, and unaffected.)
|
|
518
|
-
const adapter = platform === "cursor" ? "cursor" : platform === "codex" ? "codex" : "claude-code";
|
|
519
|
-
const hb = owner ? readHeartbeat(root, owner) : null;
|
|
520
|
-
for (const p of paths) {
|
|
521
|
-
try {
|
|
522
|
-
emit(root, {
|
|
523
|
-
event_type: "decision.warn",
|
|
524
|
-
instance_id: owner ?? "unknown",
|
|
525
|
-
session_id: hb?.session_id ?? owner ?? "unknown",
|
|
526
|
-
adapter,
|
|
527
|
-
data: {
|
|
528
|
-
rule: "shell_mutation_candidate",
|
|
529
|
-
reason: `path=${p} cmd=${truncated} platform=${platform}`,
|
|
530
|
-
},
|
|
531
|
-
});
|
|
532
|
-
}
|
|
533
|
-
catch {
|
|
534
|
-
/* telemetry only, never break the dispatcher */
|
|
535
|
-
}
|
|
536
|
-
}
|
|
456
|
+
process.stdout.write(`${JSON.stringify({ schema_version: 2, owner, platform, command_preview: truncated, paths })}\n`);
|
|
537
457
|
return 0;
|
|
538
458
|
}
|
|
539
459
|
async function handleStaleSweep(root, _rest) {
|
|
@@ -542,6 +462,38 @@ async function handleStaleSweep(root, _rest) {
|
|
|
542
462
|
process.stdout.write(`${JSON.stringify(result)}\n`);
|
|
543
463
|
return 0;
|
|
544
464
|
}
|
|
465
|
+
async function handleReconcileFinalization(root) {
|
|
466
|
+
const { reconcileSessionFinalizationV3 } = await import("./session-finalizer-v3.js");
|
|
467
|
+
const result = reconcileSessionFinalizationV3(root);
|
|
468
|
+
process.stdout.write(`${JSON.stringify(result)}\n`);
|
|
469
|
+
return result.diagnostics.some((item) => item === "ledger_not_authority_safe") ? 2 : 0;
|
|
470
|
+
}
|
|
471
|
+
async function handleEndSession(root, rest) {
|
|
472
|
+
const instanceId = rest[0];
|
|
473
|
+
if (!instanceId || !/^inst_[A-Za-z0-9._-]+$/.test(instanceId))
|
|
474
|
+
return 2;
|
|
475
|
+
const { listHookProducerStateRecordsV3 } = await import("../events/v3/producers/recorder.js");
|
|
476
|
+
const record = listHookProducerStateRecordsV3(root, { includeTerminal: false }).find(({ state }) => state.instance_id === instanceId);
|
|
477
|
+
if (!record)
|
|
478
|
+
return 2;
|
|
479
|
+
const { requestSessionEndExplicitV3 } = await import("./session-finalizer-v3.js");
|
|
480
|
+
const result = requestSessionEndExplicitV3({
|
|
481
|
+
coordRoot: root,
|
|
482
|
+
instance_id: record.state.instance_id,
|
|
483
|
+
generation_id: record.state.generation_id,
|
|
484
|
+
outcome: "interrupted",
|
|
485
|
+
coordination_finalized: false,
|
|
486
|
+
});
|
|
487
|
+
process.stdout.write(`${JSON.stringify(result)}\n`);
|
|
488
|
+
return result.state === "recorded" ||
|
|
489
|
+
result.state === "already_ended" ||
|
|
490
|
+
result.state === "queued" ||
|
|
491
|
+
result.state === "already_requested"
|
|
492
|
+
? 0
|
|
493
|
+
: result.state === "delegated_work_open"
|
|
494
|
+
? 3
|
|
495
|
+
: 2;
|
|
496
|
+
}
|
|
545
497
|
async function handlePromptContext(root, rest) {
|
|
546
498
|
const args = {};
|
|
547
499
|
for (let i = 0; i < rest.length; i++) {
|
|
@@ -564,8 +516,11 @@ async function handlePromptContext(root, rest) {
|
|
|
564
516
|
const sessionNameNudge = args["session-name-nudge"] === "true";
|
|
565
517
|
const taskNudge = args["task-nudge"] === "true";
|
|
566
518
|
const statusFooterNudge = args["status-footer-nudge"] === "true";
|
|
519
|
+
// Value is the adapter id; a bare flag (parsed as "true") still enables the
|
|
520
|
+
// reminder with the adapter-neutral wording.
|
|
521
|
+
const turnRitualNudge = args["turn-ritual-nudge"] === "true" ? "generic" : args["turn-ritual-nudge"];
|
|
567
522
|
if (!instanceId) {
|
|
568
|
-
process.stderr.write("agent-coord prompt-context --instance <id> [--session <id>] [--name <agent-name>] [--session-name-nudge] [--task-nudge] [--status-footer-nudge]\n");
|
|
523
|
+
process.stderr.write("agent-coord prompt-context --instance <id> [--session <id>] [--name <agent-name>] [--session-name-nudge] [--task-nudge] [--status-footer-nudge] [--turn-ritual-nudge <adapter>]\n");
|
|
569
524
|
return 2;
|
|
570
525
|
}
|
|
571
526
|
const { renderPromptContext } = await import("./render/prompt-context.js");
|
|
@@ -577,6 +532,7 @@ async function handlePromptContext(root, rest) {
|
|
|
577
532
|
sessionNameNudge,
|
|
578
533
|
taskNudge,
|
|
579
534
|
statusFooterNudge,
|
|
535
|
+
turnRitualNudge,
|
|
580
536
|
});
|
|
581
537
|
process.stdout.write(text);
|
|
582
538
|
return 0;
|
|
@@ -616,41 +572,6 @@ async function handleSessionContext(root, rest) {
|
|
|
616
572
|
process.stdout.write(text);
|
|
617
573
|
return 0;
|
|
618
574
|
}
|
|
619
|
-
async function handleCodexReplay(root, rest) {
|
|
620
|
-
const args = {};
|
|
621
|
-
for (let i = 0; i < rest.length; i++) {
|
|
622
|
-
const a = rest[i];
|
|
623
|
-
if (a.startsWith("--")) {
|
|
624
|
-
const key = a.slice(2);
|
|
625
|
-
const val = rest[i + 1];
|
|
626
|
-
if (val === undefined || val.startsWith("--")) {
|
|
627
|
-
args[key] = "true";
|
|
628
|
-
}
|
|
629
|
-
else {
|
|
630
|
-
args[key] = val;
|
|
631
|
-
i++;
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
}
|
|
635
|
-
const jsonlPath = args.jsonl;
|
|
636
|
-
const sessionId = args.session;
|
|
637
|
-
const instanceId = args.owner ?? sessionId;
|
|
638
|
-
const lastMsg = args["last-message"];
|
|
639
|
-
if (!jsonlPath || !sessionId) {
|
|
640
|
-
process.stderr.write("agent-coord codex-replay --jsonl <path> --session <id> [--owner <id>] [--last-message <text>]\n");
|
|
641
|
-
return 2;
|
|
642
|
-
}
|
|
643
|
-
const { replayCodexJsonl } = await import("./codex-replay.js");
|
|
644
|
-
const result = replayCodexJsonl({
|
|
645
|
-
coordRoot: root,
|
|
646
|
-
jsonlPath,
|
|
647
|
-
sessionId,
|
|
648
|
-
instanceId: instanceId,
|
|
649
|
-
lastAssistantMessage: lastMsg,
|
|
650
|
-
});
|
|
651
|
-
process.stdout.write(`${JSON.stringify({ session_id: sessionId, emitted: result.emitted })}\n`);
|
|
652
|
-
return 0;
|
|
653
|
-
}
|
|
654
575
|
async function handleResolveName(root, rest) {
|
|
655
576
|
const { resolveName } = await import("./state/names.js");
|
|
656
577
|
const [owner, session] = rest;
|
|
@@ -667,7 +588,6 @@ async function handleResolveName(root, rest) {
|
|
|
667
588
|
return 0;
|
|
668
589
|
}
|
|
669
590
|
async function handleEmitEvent(root, rest) {
|
|
670
|
-
const { emitAndProject } = await import("./cli-emit.js");
|
|
671
591
|
const args = {};
|
|
672
592
|
for (let i = 0; i < rest.length; i++) {
|
|
673
593
|
const a = rest[i];
|
|
@@ -687,9 +607,9 @@ async function handleEmitEvent(root, rest) {
|
|
|
687
607
|
const instanceId = args.owner;
|
|
688
608
|
const sessionId = args.session;
|
|
689
609
|
const adapter = args.adapter;
|
|
690
|
-
const dataJson = args["data-
|
|
691
|
-
if (!eventType || !instanceId || !sessionId || !adapter) {
|
|
692
|
-
process.stderr.write("agent-coord emit-event --type <
|
|
610
|
+
const dataJson = args["data-stdin"] === "true" ? await readStdin() : "";
|
|
611
|
+
if (!eventType || !instanceId || !sessionId || !adapter || !dataJson) {
|
|
612
|
+
process.stderr.write("agent-coord emit-event --type <V3_TYPE> --owner <id> --session <id> --adapter <h> --data-stdin\n");
|
|
693
613
|
return 2;
|
|
694
614
|
}
|
|
695
615
|
let data;
|
|
@@ -699,30 +619,75 @@ async function handleEmitEvent(root, rest) {
|
|
|
699
619
|
data = parsed;
|
|
700
620
|
}
|
|
701
621
|
else {
|
|
702
|
-
process.stderr.write("agent-coord emit-event:
|
|
622
|
+
process.stderr.write("agent-coord emit-event: stdin must encode an object\n");
|
|
703
623
|
return 2;
|
|
704
624
|
}
|
|
705
625
|
}
|
|
706
626
|
catch (err) {
|
|
707
|
-
process.stderr.write(`agent-coord emit-event: invalid
|
|
627
|
+
process.stderr.write(`agent-coord emit-event: invalid stdin JSON (${err instanceof Error ? err.message : String(err)})\n`);
|
|
708
628
|
return 2;
|
|
709
629
|
}
|
|
710
|
-
const
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
adapter,
|
|
715
|
-
turn_id: args["turn-id"],
|
|
716
|
-
parent_session_id: args["parent-session-id"],
|
|
717
|
-
parent_turn_id: args["parent-turn-id"],
|
|
718
|
-
data,
|
|
719
|
-
}, { coordRoot: root });
|
|
720
|
-
if (!result) {
|
|
721
|
-
process.stderr.write("agent-coord emit-event: emission failed\n");
|
|
630
|
+
const { resolveLiveEventLedgerRouteV3 } = await import("../events/v3/live-routing.js");
|
|
631
|
+
const ledgerRoute = resolveLiveEventLedgerRouteV3(root);
|
|
632
|
+
if (ledgerRoute.state === "blocked") {
|
|
633
|
+
process.stderr.write(`agent-coord emit-event: V3 ledger route is unsafe (${ledgerRoute.reason})\n`);
|
|
722
634
|
return 1;
|
|
723
635
|
}
|
|
724
|
-
|
|
725
|
-
|
|
636
|
+
if (data.event_type !== eventType) {
|
|
637
|
+
process.stderr.write("agent-coord emit-event: envelope type does not match stdin event_type\n");
|
|
638
|
+
return 2;
|
|
639
|
+
}
|
|
640
|
+
if (eventType === "coord.lifecycle_changed") {
|
|
641
|
+
const state = data.new_state;
|
|
642
|
+
if (state !== "active" && state !== "blocked" && state !== "done") {
|
|
643
|
+
process.stderr.write("agent-coord emit-event: invalid V3 lifecycle state\n");
|
|
644
|
+
return 2;
|
|
645
|
+
}
|
|
646
|
+
const { recordLiveLifecycleChangeV3 } = await import("./live-authority-v3.js");
|
|
647
|
+
try {
|
|
648
|
+
const routed = recordLiveLifecycleChangeV3({
|
|
649
|
+
coordRoot: root,
|
|
650
|
+
owner: instanceId,
|
|
651
|
+
nativeSessionId: sessionId,
|
|
652
|
+
adapter,
|
|
653
|
+
state,
|
|
654
|
+
reason: typeof data.reason === "string" && data.reason.length > 0 ? data.reason : undefined,
|
|
655
|
+
suggestedSessionName: typeof data.suggested_session_name === "string" && data.suggested_session_name.length > 0
|
|
656
|
+
? data.suggested_session_name
|
|
657
|
+
: undefined,
|
|
658
|
+
});
|
|
659
|
+
process.stdout.write(`${JSON.stringify({ schema_version: 2, event_type: "coord.lifecycle_changed", state: routed.state })}\n`);
|
|
660
|
+
return 0;
|
|
661
|
+
}
|
|
662
|
+
catch (error) {
|
|
663
|
+
process.stderr.write(`agent-coord emit-event: V3 lifecycle authority refused (${error instanceof Error ? error.message : String(error)})\n`);
|
|
664
|
+
return 1;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
if (eventType === "coord.status_observed" ||
|
|
668
|
+
eventType === "coord.presence_changed" ||
|
|
669
|
+
eventType === "coord.message_observed" ||
|
|
670
|
+
eventType === "council.state_changed" ||
|
|
671
|
+
eventType === "decision.state_changed") {
|
|
672
|
+
const { recordLiveCoordinationObservationV3 } = await import("./live-observation-v3.js");
|
|
673
|
+
try {
|
|
674
|
+
const routed = recordLiveCoordinationObservationV3({
|
|
675
|
+
coordRoot: root,
|
|
676
|
+
owner: instanceId,
|
|
677
|
+
nativeSessionId: sessionId,
|
|
678
|
+
adapter,
|
|
679
|
+
observation: data,
|
|
680
|
+
});
|
|
681
|
+
process.stdout.write(`${JSON.stringify({ schema_version: 2, event_type: routed.event.event_type, event_id: routed.event.event_id })}\n`);
|
|
682
|
+
return 0;
|
|
683
|
+
}
|
|
684
|
+
catch (error) {
|
|
685
|
+
process.stderr.write(`agent-coord emit-event: V3 observation refused (${error instanceof Error ? error.message : String(error)})\n`);
|
|
686
|
+
return 1;
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
process.stderr.write(`agent-coord emit-event: unsupported V3 event type ${eventType}\n`);
|
|
690
|
+
return 2;
|
|
726
691
|
}
|
|
727
692
|
/**
|
|
728
693
|
* `agent-coord git-hook <event> [args]` — the single entry a host git hook
|
|
@@ -790,15 +755,27 @@ async function handleGitHook(fallbackRoot, rest) {
|
|
|
790
755
|
if (paths.length === 0)
|
|
791
756
|
return 0;
|
|
792
757
|
const { resolveOwner } = await import("../hooks/resolve/owner.js");
|
|
793
|
-
const owner = resolveOwner({
|
|
758
|
+
const owner = resolveOwner({
|
|
759
|
+
payload: null,
|
|
760
|
+
coordRoot: root,
|
|
761
|
+
})?.instance_id;
|
|
794
762
|
if (!owner)
|
|
795
763
|
return 0;
|
|
796
|
-
const {
|
|
797
|
-
const
|
|
764
|
+
const { findGroupClaims } = await import("./state/heartbeat-writer.js");
|
|
765
|
+
const { recordLiveClaimChangeV3 } = await import("./live-authority-v3.js");
|
|
798
766
|
for (const path of paths) {
|
|
799
767
|
try {
|
|
800
|
-
for (const hit of
|
|
801
|
-
|
|
768
|
+
for (const hit of findGroupClaims(root, owner, path)) {
|
|
769
|
+
recordLiveClaimChangeV3({
|
|
770
|
+
coordRoot: root,
|
|
771
|
+
owner,
|
|
772
|
+
subject: hit.instance_id,
|
|
773
|
+
nativeSessionId: hit.session_id ?? owner,
|
|
774
|
+
adapter: adapterFromPlatform(hit.platform),
|
|
775
|
+
operation: "released",
|
|
776
|
+
path,
|
|
777
|
+
access: "write",
|
|
778
|
+
});
|
|
802
779
|
}
|
|
803
780
|
}
|
|
804
781
|
catch {
|
|
@@ -830,12 +807,9 @@ async function main() {
|
|
|
830
807
|
return handleEmitEvent(root, rest);
|
|
831
808
|
}
|
|
832
809
|
if (subcommand === "set-task" ||
|
|
833
|
-
subcommand === "set-turn-summary" ||
|
|
834
810
|
subcommand === "release-claim" ||
|
|
835
|
-
subcommand === "kill-heartbeat" ||
|
|
836
811
|
subcommand === "heal-pidmap" ||
|
|
837
|
-
subcommand === "
|
|
838
|
-
subcommand === "stamp-tool-activity") {
|
|
812
|
+
subcommand === "repair-coordination-cache") {
|
|
839
813
|
return handleStateAction(root, subcommand, rest);
|
|
840
814
|
}
|
|
841
815
|
if (subcommand === "append-journal" || subcommand === "edit-journal") {
|
|
@@ -855,12 +829,15 @@ async function main() {
|
|
|
855
829
|
if (subcommand === "resolve-name") {
|
|
856
830
|
return handleResolveName(root, rest);
|
|
857
831
|
}
|
|
858
|
-
if (subcommand === "codex-replay") {
|
|
859
|
-
return handleCodexReplay(root, rest);
|
|
860
|
-
}
|
|
861
832
|
if (subcommand === "stale-sweep") {
|
|
862
833
|
return handleStaleSweep(root, rest);
|
|
863
834
|
}
|
|
835
|
+
if (subcommand === "reconcile-finalization") {
|
|
836
|
+
return handleReconcileFinalization(root);
|
|
837
|
+
}
|
|
838
|
+
if (subcommand === "end-session") {
|
|
839
|
+
return handleEndSession(root, rest);
|
|
840
|
+
}
|
|
864
841
|
if (subcommand === "session-context") {
|
|
865
842
|
return handleSessionContext(root, rest);
|
|
866
843
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SessionArchiveObservationV3 } from "./session-finalizer-v3.js";
|
|
2
|
+
export interface CodexArchiveScanResultV3 {
|
|
3
|
+
observations: SessionArchiveObservationV3[];
|
|
4
|
+
diagnostics: string[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Read only Codex's durable lifecycle columns. Conversation content, titles,
|
|
8
|
+
* working directories, and model metadata never leave the adapter database.
|
|
9
|
+
*/
|
|
10
|
+
export declare function readCodexArchiveObservationsV3(coordRoot: string, options?: {
|
|
11
|
+
databasePath?: string;
|
|
12
|
+
observedAt?: string;
|
|
13
|
+
}): CodexArchiveScanResultV3;
|
|
14
|
+
//# sourceMappingURL=codex-archive-v3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-archive-v3.d.ts","sourceRoot":"","sources":["../../../src/core/agents/codex-archive-v3.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAyB7E,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,2BAA2B,EAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3D,wBAAwB,CAmE1B"}
|