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
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { appendFileSync, closeSync, mkdirSync, openSync } from "node:fs";
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
|
-
import { maybeRotateEventStream } from "./rotate.js";
|
|
4
|
-
import { SCHEMA_VERSION, } from "./schema.js";
|
|
5
|
-
import { ulid } from "./ulid.js";
|
|
6
|
-
const LOCK_FILE = ".harnery/events.ndjson.lock";
|
|
7
|
-
const STREAM_FILE = ".harnery/events.ndjson";
|
|
8
|
-
const MAX_LINE_BYTES = 64 * 1024;
|
|
9
|
-
/**
|
|
10
|
-
* Build a canonical envelope around the caller's `data` payload. Pure;
|
|
11
|
-
* doesn't touch the filesystem. Useful for tests + replay fixtures.
|
|
12
|
-
*/
|
|
13
|
-
export function buildEnvelope(input) {
|
|
14
|
-
return {
|
|
15
|
-
schema_version: SCHEMA_VERSION,
|
|
16
|
-
event_id: ulid(),
|
|
17
|
-
event_type: input.event_type,
|
|
18
|
-
ts: input.ts ?? new Date().toISOString(),
|
|
19
|
-
instance_id: input.instance_id,
|
|
20
|
-
session_id: input.session_id,
|
|
21
|
-
parent_session_id: input.parent_session_id,
|
|
22
|
-
turn_id: input.turn_id,
|
|
23
|
-
parent_turn_id: input.parent_turn_id,
|
|
24
|
-
adapter: input.adapter,
|
|
25
|
-
source: input.source ?? "agent-hooks",
|
|
26
|
-
data: input.data,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Append one canonical event to `.harnery/events.ndjson` under a file lock.
|
|
31
|
-
* Append-only, one JSON object per line, lock-serialized.
|
|
32
|
-
*
|
|
33
|
-
* Synchronous because hooks are short-lived processes: we want the append to
|
|
34
|
-
* land before the binary exits, and async/await across a tiny write is just
|
|
35
|
-
* latency for no benefit.
|
|
36
|
-
*
|
|
37
|
-
* Returns the envelope so callers can chain off it (debug logs, post-emit
|
|
38
|
-
* verdict requests).
|
|
39
|
-
*/
|
|
40
|
-
export function emit(coordRoot, input) {
|
|
41
|
-
const envelope = buildEnvelope(input);
|
|
42
|
-
const streamPath = join(coordRoot, STREAM_FILE);
|
|
43
|
-
const lockPath = join(coordRoot, LOCK_FILE);
|
|
44
|
-
// Size-triggered rotation: roll the active file to a dated archive when it
|
|
45
|
-
// crosses the cap, so this append lands in a bounded fresh file. Fail-soft.
|
|
46
|
-
maybeRotateEventStream(coordRoot);
|
|
47
|
-
ensureDir(dirname(streamPath));
|
|
48
|
-
ensureFile(lockPath);
|
|
49
|
-
let line = `${JSON.stringify(envelope)}\n`;
|
|
50
|
-
if (Buffer.byteLength(line, "utf8") > MAX_LINE_BYTES) {
|
|
51
|
-
// lines >64KB are a schema bug. Phase 2 hard-truncates the `data`
|
|
52
|
-
// payload + sets `truncated: true` so we keep audit visibility without
|
|
53
|
-
// breaking downstream consumers.
|
|
54
|
-
const truncated = `${JSON.stringify({
|
|
55
|
-
...envelope,
|
|
56
|
-
data: { __over_size_limit: true, original_bytes: Buffer.byteLength(line, "utf8") },
|
|
57
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
58
|
-
})}\n`;
|
|
59
|
-
line = truncated;
|
|
60
|
-
}
|
|
61
|
-
const lockFd = openSync(lockPath, "r+");
|
|
62
|
-
try {
|
|
63
|
-
// flock isn't directly exposed in node fs; use fcntl-like via shelling out
|
|
64
|
-
// would be slower than POSIX flock(2) inside the kernel. Bun exposes
|
|
65
|
-
// `Bun.flock` in recent builds, but a simple fs-level append is atomic
|
|
66
|
-
// for lines <PIPE_BUF (4KB on Linux) anyway. For larger lines we rely on
|
|
67
|
-
// append-mode flag (O_APPEND) which kernels serialize per-fd.
|
|
68
|
-
//
|
|
69
|
-
// The `events.ndjson.lock` file is kept around for forward
|
|
70
|
-
// compatibility: Phase 4+ helpers acquire it before multi-write batches.
|
|
71
|
-
appendFileSync(streamPath, line, { encoding: "utf8", flag: "a" });
|
|
72
|
-
}
|
|
73
|
-
finally {
|
|
74
|
-
closeSync(lockFd);
|
|
75
|
-
}
|
|
76
|
-
return envelope;
|
|
77
|
-
}
|
|
78
|
-
function ensureDir(path) {
|
|
79
|
-
try {
|
|
80
|
-
mkdirSync(path, { recursive: true });
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
/* swallow */
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
function ensureFile(path) {
|
|
87
|
-
try {
|
|
88
|
-
closeSync(openSync(path, "a"));
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
/* swallow */
|
|
92
|
-
}
|
|
93
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Size-triggered rotation for the canonical event stream
|
|
3
|
-
* `.harnery/events.ndjson`.
|
|
4
|
-
*
|
|
5
|
-
* The stream is a deliberately-immutable, append-only ledger. Left unbounded it
|
|
6
|
-
* grows past V8's ~512MB max string length, at which point any code that does a
|
|
7
|
-
* whole-file `readFileSync` throws ("Cannot create a string longer than
|
|
8
|
-
* 0x1fffffe8 characters"). Rather than police every current + future reader,
|
|
9
|
-
* we bound the *active* file: once it crosses a byte cap we rename it to a dated
|
|
10
|
-
* archive (`events-YYYY-MM-DD.ndjson`) and start a fresh active file. Archives
|
|
11
|
-
* are kept — the audit trail is preserved, just spread across files that readers
|
|
12
|
-
* glob newest-first.
|
|
13
|
-
*
|
|
14
|
-
* Both independent append paths (agent-hooks `hooks/events/emit.ts` and
|
|
15
|
-
* agent-coord `agents/events/emit.ts`) call `maybeRotateEventStream` before
|
|
16
|
-
* appending, so a roll is triggered continuously, not only at session
|
|
17
|
-
* boundaries.
|
|
18
|
-
*
|
|
19
|
-
* Concurrency: many short-lived hook processes append at once. The rename itself
|
|
20
|
-
* is atomic — a concurrent appender opening the path by name lands its line in
|
|
21
|
-
* whichever inode the name currently resolves to (old archive or new active
|
|
22
|
-
* file), never nowhere. The only hazard is two processes both renaming (the
|
|
23
|
-
* second would move the fresh empty file to a second archive name), which an
|
|
24
|
-
* `O_EXCL` roll-lock prevents.
|
|
25
|
-
*
|
|
26
|
-
* Design + rationale: harnery ADR 0009; decision docket
|
|
27
|
-
* `should-harnery-adopt-a-retention-2026-07-07-ed07`.
|
|
28
|
-
*/
|
|
29
|
-
/** Archive glob prefix. Readers enumerate `events-*.ndjson` newest-first.
|
|
30
|
-
* The pre-existing manual `events-legacy.ndjson` matches and is picked up for
|
|
31
|
-
* free. Kept in sync with the reader-side pattern in web/lib/coord-reader.ts. */
|
|
32
|
-
export declare const ARCHIVE_PREFIX = "events-";
|
|
33
|
-
export declare const ARCHIVE_SUFFIX = ".ndjson";
|
|
34
|
-
/**
|
|
35
|
-
* Roll `events.ndjson` to a dated archive when it exceeds the byte cap. Cheap
|
|
36
|
-
* no-op (a single `statSync`) below the cap. Fail-soft: any error is swallowed
|
|
37
|
-
* so a rotation problem can never break the append that triggered it.
|
|
38
|
-
*
|
|
39
|
-
* `nowMs` is injectable for the stale-lock check in tests; production leaves it
|
|
40
|
-
* unset (the roll date always comes from the file's mtime, never `nowMs`).
|
|
41
|
-
*/
|
|
42
|
-
export declare function maybeRotateEventStream(coordRoot: string, nowMs?: number): boolean;
|
|
43
|
-
//# sourceMappingURL=rotate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rotate.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/events/rotate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAyBH;;iFAEiF;AACjF,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,cAAc,YAAY,CAAC;AA6BxC;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAmCjF"}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Size-triggered rotation for the canonical event stream
|
|
3
|
-
* `.harnery/events.ndjson`.
|
|
4
|
-
*
|
|
5
|
-
* The stream is a deliberately-immutable, append-only ledger. Left unbounded it
|
|
6
|
-
* grows past V8's ~512MB max string length, at which point any code that does a
|
|
7
|
-
* whole-file `readFileSync` throws ("Cannot create a string longer than
|
|
8
|
-
* 0x1fffffe8 characters"). Rather than police every current + future reader,
|
|
9
|
-
* we bound the *active* file: once it crosses a byte cap we rename it to a dated
|
|
10
|
-
* archive (`events-YYYY-MM-DD.ndjson`) and start a fresh active file. Archives
|
|
11
|
-
* are kept — the audit trail is preserved, just spread across files that readers
|
|
12
|
-
* glob newest-first.
|
|
13
|
-
*
|
|
14
|
-
* Both independent append paths (agent-hooks `hooks/events/emit.ts` and
|
|
15
|
-
* agent-coord `agents/events/emit.ts`) call `maybeRotateEventStream` before
|
|
16
|
-
* appending, so a roll is triggered continuously, not only at session
|
|
17
|
-
* boundaries.
|
|
18
|
-
*
|
|
19
|
-
* Concurrency: many short-lived hook processes append at once. The rename itself
|
|
20
|
-
* is atomic — a concurrent appender opening the path by name lands its line in
|
|
21
|
-
* whichever inode the name currently resolves to (old archive or new active
|
|
22
|
-
* file), never nowhere. The only hazard is two processes both renaming (the
|
|
23
|
-
* second would move the fresh empty file to a second archive name), which an
|
|
24
|
-
* `O_EXCL` roll-lock prevents.
|
|
25
|
-
*
|
|
26
|
-
* Design + rationale: harnery ADR 0009; decision docket
|
|
27
|
-
* `should-harnery-adopt-a-retention-2026-07-07-ed07`.
|
|
28
|
-
*/
|
|
29
|
-
import { closeSync, existsSync, mkdirSync, openSync, renameSync, statSync, unlinkSync, } from "node:fs";
|
|
30
|
-
import { dirname, join } from "node:path";
|
|
31
|
-
import { coordEnv } from "../../../lib/env.js";
|
|
32
|
-
const STREAM_FILE = ".harnery/events.ndjson";
|
|
33
|
-
const ROLL_LOCK_FILE = ".harnery/events.ndjson.roll.lock";
|
|
34
|
-
/** Default active-file cap: 256 MiB — half of V8's ~512MB string cliff, so even
|
|
35
|
-
* a reader that loads the whole active file whole stays clear of the limit. */
|
|
36
|
-
const DEFAULT_ROLL_BYTES = 256 * 1024 * 1024;
|
|
37
|
-
/** A roll-lock older than this is treated as abandoned (a crashed roller) and
|
|
38
|
-
* stolen. Rolls are sub-millisecond, so 60s is orders of magnitude of slack. */
|
|
39
|
-
const STALE_LOCK_MS = 60_000;
|
|
40
|
-
/** Archive glob prefix. Readers enumerate `events-*.ndjson` newest-first.
|
|
41
|
-
* The pre-existing manual `events-legacy.ndjson` matches and is picked up for
|
|
42
|
-
* free. Kept in sync with the reader-side pattern in web/lib/coord-reader.ts. */
|
|
43
|
-
export const ARCHIVE_PREFIX = "events-";
|
|
44
|
-
export const ARCHIVE_SUFFIX = ".ndjson";
|
|
45
|
-
function resolveRollBytes() {
|
|
46
|
-
const env = coordEnv("EVENTS_ROLL_BYTES");
|
|
47
|
-
const n = env ? Number(env) : Number.NaN;
|
|
48
|
-
return Number.isFinite(n) && n > 0 ? n : DEFAULT_ROLL_BYTES;
|
|
49
|
-
}
|
|
50
|
-
/** `YYYY-MM-DD` (UTC) from a millisecond timestamp. Uses the file's own mtime
|
|
51
|
-
* rather than `Date.now()` so it's deterministic and independent of the adapter
|
|
52
|
-
* runtime's clock surface. */
|
|
53
|
-
function utcDateStamp(mtimeMs) {
|
|
54
|
-
const d = new Date(mtimeMs);
|
|
55
|
-
const y = d.getUTCFullYear();
|
|
56
|
-
const mo = String(d.getUTCMonth() + 1).padStart(2, "0");
|
|
57
|
-
const day = String(d.getUTCDate()).padStart(2, "0");
|
|
58
|
-
return `${y}-${mo}-${day}`;
|
|
59
|
-
}
|
|
60
|
-
/** First non-colliding `events-<stamp>[.N].ndjson` path under `coordDir`. */
|
|
61
|
-
function archivePathFor(coordDir, stamp) {
|
|
62
|
-
const base = join(coordDir, `${ARCHIVE_PREFIX}${stamp}${ARCHIVE_SUFFIX}`);
|
|
63
|
-
if (!existsSync(base))
|
|
64
|
-
return base;
|
|
65
|
-
for (let n = 1;; n++) {
|
|
66
|
-
const cand = join(coordDir, `${ARCHIVE_PREFIX}${stamp}.${n}${ARCHIVE_SUFFIX}`);
|
|
67
|
-
if (!existsSync(cand))
|
|
68
|
-
return cand;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Roll `events.ndjson` to a dated archive when it exceeds the byte cap. Cheap
|
|
73
|
-
* no-op (a single `statSync`) below the cap. Fail-soft: any error is swallowed
|
|
74
|
-
* so a rotation problem can never break the append that triggered it.
|
|
75
|
-
*
|
|
76
|
-
* `nowMs` is injectable for the stale-lock check in tests; production leaves it
|
|
77
|
-
* unset (the roll date always comes from the file's mtime, never `nowMs`).
|
|
78
|
-
*/
|
|
79
|
-
export function maybeRotateEventStream(coordRoot, nowMs) {
|
|
80
|
-
try {
|
|
81
|
-
const streamPath = join(coordRoot, STREAM_FILE);
|
|
82
|
-
if (!existsSync(streamPath))
|
|
83
|
-
return false;
|
|
84
|
-
const cap = resolveRollBytes();
|
|
85
|
-
let st = statSync(streamPath);
|
|
86
|
-
if (st.size < cap)
|
|
87
|
-
return false;
|
|
88
|
-
const coordDir = dirname(streamPath);
|
|
89
|
-
const lockPath = join(coordRoot, ROLL_LOCK_FILE);
|
|
90
|
-
mkdirSync(coordDir, { recursive: true });
|
|
91
|
-
if (!acquireRollLock(lockPath, nowMs))
|
|
92
|
-
return false; // another roller active
|
|
93
|
-
try {
|
|
94
|
-
// Re-check under the lock: a concurrent process may have just rolled.
|
|
95
|
-
if (!existsSync(streamPath))
|
|
96
|
-
return false;
|
|
97
|
-
st = statSync(streamPath);
|
|
98
|
-
if (st.size < cap)
|
|
99
|
-
return false;
|
|
100
|
-
const archive = archivePathFor(coordDir, utcDateStamp(st.mtimeMs));
|
|
101
|
-
renameSync(streamPath, archive);
|
|
102
|
-
// Recreate an empty active file so the very next append (and any reader's
|
|
103
|
-
// existsSync) sees a valid, present stream.
|
|
104
|
-
closeSync(openSync(streamPath, "a"));
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
finally {
|
|
108
|
-
try {
|
|
109
|
-
unlinkSync(lockPath);
|
|
110
|
-
}
|
|
111
|
-
catch {
|
|
112
|
-
/* best-effort */
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
return false; // fail-soft: never break the caller's append
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/** Create the roll-lock with O_EXCL. Returns true on acquisition. On collision,
|
|
121
|
-
* steals a stale lock (crashed roller) once, else returns false. */
|
|
122
|
-
function acquireRollLock(lockPath, nowMs) {
|
|
123
|
-
try {
|
|
124
|
-
closeSync(openSync(lockPath, "wx"));
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
128
|
-
// Exists: steal if abandoned.
|
|
129
|
-
try {
|
|
130
|
-
const age = (nowMs ?? Date.now()) - statSync(lockPath).mtimeMs;
|
|
131
|
-
if (age > STALE_LOCK_MS) {
|
|
132
|
-
unlinkSync(lockPath);
|
|
133
|
-
closeSync(openSync(lockPath, "wx"));
|
|
134
|
-
return true;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
/* lost the steal race — someone else holds it */
|
|
139
|
-
}
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Canonical event schema v1. Inter-module contract between agent-hooks (writer)
|
|
3
|
-
* and agent-coord (consumer + projector).
|
|
4
|
-
*
|
|
5
|
-
* Schema evolution rules:
|
|
6
|
-
* - Forward-compatible only within a major version. Consumers ignore unknown
|
|
7
|
-
* fields. Adding an optional field is a minor bump; removing or retyping a
|
|
8
|
-
* field is a major bump.
|
|
9
|
-
* - Mixed-version streams are legal during migrations; consumers branch on
|
|
10
|
-
* `schema_version`.
|
|
11
|
-
*/
|
|
12
|
-
export declare const SCHEMA_VERSION: 1;
|
|
13
|
-
/** The adapters harnery ships first-party hook wiring for. The registry's open
|
|
14
|
-
* `AdapterId` covers any adapter a host registers; this is the closed set, and
|
|
15
|
-
* it is declared exactly once. Re-exported by the two event modules that used
|
|
16
|
-
* to keep their own byte-identical copy. */
|
|
17
|
-
export type Adapter = "claude-code" | "cursor" | "codex";
|
|
18
|
-
export type Source = "agent-hooks" | "agent-coord" | "user" | "system";
|
|
19
|
-
/**
|
|
20
|
-
* Common envelope every event carries. Tool events, `user_prompt.submit`, and
|
|
21
|
-
* `turn.stop` MUST carry `turn_id`; CLI/state/council/presence/health/session
|
|
22
|
-
* events MAY carry `turn_id` when agent-coord can bind them to the active turn
|
|
23
|
-
* for that owner.
|
|
24
|
-
*/
|
|
25
|
-
export interface EventEnvelope<TType extends string, TData> {
|
|
26
|
-
schema_version: typeof SCHEMA_VERSION;
|
|
27
|
-
event_id: string;
|
|
28
|
-
event_type: TType;
|
|
29
|
-
ts: string;
|
|
30
|
-
instance_id: string;
|
|
31
|
-
session_id: string;
|
|
32
|
-
parent_session_id?: string;
|
|
33
|
-
turn_id?: string;
|
|
34
|
-
parent_turn_id?: string;
|
|
35
|
-
adapter: Adapter;
|
|
36
|
-
source: Source;
|
|
37
|
-
data: TData;
|
|
38
|
-
}
|
|
39
|
-
export type SessionStart = EventEnvelope<"session.start", {
|
|
40
|
-
started_at: string;
|
|
41
|
-
cwd: string;
|
|
42
|
-
model?: string;
|
|
43
|
-
pid: number;
|
|
44
|
-
/** Present iff this session is a `workflow run` child: the run id whose
|
|
45
|
-
* transcript owns it (child env HARNERY_WORKFLOW_RUN_ID). Optional-field
|
|
46
|
-
* addition per the schema evolution rules (minor bump). */
|
|
47
|
-
workflow_run_id?: string;
|
|
48
|
-
/** Which agent row of that run this session is running (`a1`, `a2`, …), from
|
|
49
|
-
* child env HARNERY_WORKFLOW_AGENT_ID. Lets a dashboard attribute in-flight
|
|
50
|
-
* child activity to one agent instead of only to the run. */
|
|
51
|
-
workflow_agent_id?: string;
|
|
52
|
-
}>;
|
|
53
|
-
export type SessionEnd = EventEnvelope<"session.end", {
|
|
54
|
-
ended_at: string;
|
|
55
|
-
clean_exit: boolean;
|
|
56
|
-
}>;
|
|
57
|
-
export type SubagentStart = EventEnvelope<"subagent.start", {
|
|
58
|
-
agent_type: string;
|
|
59
|
-
prompt_summary?: string;
|
|
60
|
-
}>;
|
|
61
|
-
export type SubagentStop = EventEnvelope<"subagent.stop", {
|
|
62
|
-
exit_status: "ok" | "error" | "interrupted";
|
|
63
|
-
}>;
|
|
64
|
-
export type UserPromptSubmit = EventEnvelope<"user_prompt.submit", {
|
|
65
|
-
prompt_text: string;
|
|
66
|
-
truncated?: boolean;
|
|
67
|
-
}>;
|
|
68
|
-
export type TurnStop = EventEnvelope<"turn.stop", {
|
|
69
|
-
tool_call_count: number;
|
|
70
|
-
text_length: number;
|
|
71
|
-
status_box_present: boolean;
|
|
72
|
-
/** Strict variant of status_box_present: assistant text blocks only, so a
|
|
73
|
-
* tool_result carrying the box (the status command's own output) does not
|
|
74
|
-
* count. Shadow telemetry while the rule-2/3 detector decision is open;
|
|
75
|
-
* the Stop verdict does not read it yet. */
|
|
76
|
-
status_box_present_strict?: boolean;
|
|
77
|
-
/** Whether the session's suggested name is satisfied as of this turn:
|
|
78
|
-
* either this reply showed it, or an earlier reply did. Present whenever a
|
|
79
|
-
* suggested name exists, since the Stop verdict reads it per turn. */
|
|
80
|
-
session_name_present?: boolean;
|
|
81
|
-
/** Which suggested name `session_name_present` refers to. A projector
|
|
82
|
-
* rebuild attributes the sighting to this name instead of to whichever
|
|
83
|
-
* name is current during the replay. */
|
|
84
|
-
session_name_present_for?: string;
|
|
85
|
-
/** Shadow telemetry for Windows-hosted Codex workspaces: Markdown link
|
|
86
|
-
* destinations that still use the Linux coordination root. */
|
|
87
|
-
wsl_linux_file_link_count?: number;
|
|
88
|
-
/** Up to three bounded examples for diagnosing the mismatches locally. */
|
|
89
|
-
wsl_linux_file_link_examples?: string[];
|
|
90
|
-
}>;
|
|
91
|
-
export type CommandStart = EventEnvelope<"command.start", {
|
|
92
|
-
cmd_id: string;
|
|
93
|
-
intent?: string;
|
|
94
|
-
cmd: string;
|
|
95
|
-
}>;
|
|
96
|
-
export type CommandOutput = EventEnvelope<"command.output", {
|
|
97
|
-
cmd_id: string;
|
|
98
|
-
stream: "stdout" | "stderr";
|
|
99
|
-
line: string;
|
|
100
|
-
}>;
|
|
101
|
-
export type CommandEnd = EventEnvelope<"command.end", {
|
|
102
|
-
cmd_id: string;
|
|
103
|
-
exit: number;
|
|
104
|
-
duration_ms: number;
|
|
105
|
-
signal?: string;
|
|
106
|
-
}>;
|
|
107
|
-
export type Narration = EventEnvelope<"narration", {
|
|
108
|
-
message: string;
|
|
109
|
-
}>;
|
|
110
|
-
export type ToolPreUse = EventEnvelope<"tool.pre_use", {
|
|
111
|
-
tool_name: string;
|
|
112
|
-
tool_input: unknown;
|
|
113
|
-
intent?: string;
|
|
114
|
-
truncated?: boolean;
|
|
115
|
-
}>;
|
|
116
|
-
export type ToolPostUse = EventEnvelope<"tool.post_use", {
|
|
117
|
-
tool_name: string;
|
|
118
|
-
output_summary: string;
|
|
119
|
-
exit_status: "ok" | "error";
|
|
120
|
-
duration_ms: number;
|
|
121
|
-
truncated?: boolean;
|
|
122
|
-
}>;
|
|
123
|
-
export type ToolPostUseFailure = EventEnvelope<"tool.post_use_failure", {
|
|
124
|
-
tool_name: string;
|
|
125
|
-
error: string;
|
|
126
|
-
duration_ms: number;
|
|
127
|
-
}>;
|
|
128
|
-
export type ToolOutputChunk = EventEnvelope<"tool.output_chunk", {
|
|
129
|
-
chunk: string;
|
|
130
|
-
chunk_no: number;
|
|
131
|
-
stream: "stdout" | "stderr";
|
|
132
|
-
truncated?: boolean;
|
|
133
|
-
}>;
|
|
134
|
-
/**
|
|
135
|
-
* An image an agent viewed (Read tool) or produced (a Bash command wrote it).
|
|
136
|
-
* Emitted by agent-hooks as a side-effect of a tool event when the tool
|
|
137
|
-
* references an image path on disk; the bytes are content-addressed into
|
|
138
|
-
* `.harnery/images/<hash>.<ext>` (dedup) and this event records the provenance
|
|
139
|
-
* for the web image feed. Grouped by `hash` downstream → one card per distinct
|
|
140
|
-
* image with a touch timeline.
|
|
141
|
-
*/
|
|
142
|
-
export type ImageCaptured = EventEnvelope<"image.captured", {
|
|
143
|
-
hash: string;
|
|
144
|
-
ext: string;
|
|
145
|
-
bytes: number;
|
|
146
|
-
role: "viewed" | "produced";
|
|
147
|
-
source_path: string;
|
|
148
|
-
tool_name: string;
|
|
149
|
-
tool_use_id?: string;
|
|
150
|
-
intent?: string;
|
|
151
|
-
command_head?: string;
|
|
152
|
-
}>;
|
|
153
|
-
export type ContextSampled = EventEnvelope<"context.sampled", {
|
|
154
|
-
model?: string;
|
|
155
|
-
used_tokens?: number;
|
|
156
|
-
window_tokens?: number;
|
|
157
|
-
used_percent?: number;
|
|
158
|
-
telemetry_source: "hook" | "native_event" | "result" | "transcript" | "estimate";
|
|
159
|
-
confidence: "exact" | "reported" | "estimated";
|
|
160
|
-
}>;
|
|
161
|
-
export type ContextCheckpointCreated = EventEnvelope<"context.checkpoint.created", {
|
|
162
|
-
capsule_id: string;
|
|
163
|
-
generation: number;
|
|
164
|
-
path: string;
|
|
165
|
-
reason: "manual" | "pressure" | "pre_compact" | "session_end";
|
|
166
|
-
reused: boolean;
|
|
167
|
-
}>;
|
|
168
|
-
export type ContextCompactionStarted = EventEnvelope<"context.compaction.started", {
|
|
169
|
-
trigger?: string;
|
|
170
|
-
pre_tokens?: number;
|
|
171
|
-
}>;
|
|
172
|
-
export type ContextCompactionCompleted = EventEnvelope<"context.compaction.completed", {
|
|
173
|
-
trigger?: string;
|
|
174
|
-
pre_tokens?: number;
|
|
175
|
-
post_tokens?: number;
|
|
176
|
-
}>;
|
|
177
|
-
export type ContextRecoveryInjected = EventEnvelope<"context.recovery.injected", {
|
|
178
|
-
capsule_id: string;
|
|
179
|
-
generation: number;
|
|
180
|
-
injection_event: "SessionStart" | "UserPromptSubmit";
|
|
181
|
-
}>;
|
|
182
|
-
export type ClaimAcquire = EventEnvelope<"claim.acquire", {
|
|
183
|
-
path: string;
|
|
184
|
-
mode: "read" | "write";
|
|
185
|
-
finalization?: {
|
|
186
|
-
disposition: "git" | "output";
|
|
187
|
-
root: string;
|
|
188
|
-
};
|
|
189
|
-
}>;
|
|
190
|
-
export type ClaimRelease = EventEnvelope<"claim.release", {
|
|
191
|
-
path: string;
|
|
192
|
-
reason: "explicit" | "turn_end" | "session_end" | "heal";
|
|
193
|
-
}>;
|
|
194
|
-
export type ClaimConflict = EventEnvelope<"claim.conflict", {
|
|
195
|
-
path: string;
|
|
196
|
-
peer_instance_id: string;
|
|
197
|
-
reason?: "ordering_violation" | "concurrent_write";
|
|
198
|
-
}>;
|
|
199
|
-
export type StateTaskSet = EventEnvelope<"state.task_set", {
|
|
200
|
-
task: string;
|
|
201
|
-
cleared: boolean;
|
|
202
|
-
/** True exactly when this call produced the session name (first non-empty
|
|
203
|
-
* declaration of a human-facing session); never true with a null name. */
|
|
204
|
-
first_of_session?: boolean;
|
|
205
|
-
/** The name produced by this call, for the Stop-hook naming rule. */
|
|
206
|
-
suggested_session_name?: string | null;
|
|
207
|
-
}>;
|
|
208
|
-
export type StateStatusChecked = EventEnvelope<"state.status_checked", {
|
|
209
|
-
format: "box" | "json" | "table";
|
|
210
|
-
agent_count: number;
|
|
211
|
-
included_self: boolean;
|
|
212
|
-
}>;
|
|
213
|
-
export type StateJournalAppend = EventEnvelope<"state.journal_append", {
|
|
214
|
-
category: "note" | "plan" | "decision" | "blocker" | "question" | "done" | "handoff";
|
|
215
|
-
body_summary: string;
|
|
216
|
-
}>;
|
|
217
|
-
export type StatePresenceChange = EventEnvelope<"state.presence_change", {
|
|
218
|
-
from: "mobile" | "office";
|
|
219
|
-
to: "mobile" | "office";
|
|
220
|
-
source: "hook" | "cli" | "user";
|
|
221
|
-
}>;
|
|
222
|
-
export type StateHeartbeat = EventEnvelope<"state.heartbeat", Record<string, never>>;
|
|
223
|
-
/** A live session adopted a durable persona/role. The event is authoritative
|
|
224
|
-
* for replay; `.name-history` carries the same binding for heartbeat healing. */
|
|
225
|
-
export type IdentityAssumed = EventEnvelope<"identity.assumed", {
|
|
226
|
-
name: string;
|
|
227
|
-
agent_id: string;
|
|
228
|
-
previous_name?: string;
|
|
229
|
-
previous_agent_id?: string;
|
|
230
|
-
}>;
|
|
231
|
-
export type CouncilOpen = EventEnvelope<"council.open", {
|
|
232
|
-
council_id: string;
|
|
233
|
-
topic: string;
|
|
234
|
-
members: string[];
|
|
235
|
-
target_doc?: string;
|
|
236
|
-
}>;
|
|
237
|
-
export type CouncilRoundOpen = EventEnvelope<"council.round_open", {
|
|
238
|
-
council_id: string;
|
|
239
|
-
round_no: number;
|
|
240
|
-
}>;
|
|
241
|
-
export type CouncilContribution = EventEnvelope<"council.contribution", {
|
|
242
|
-
council_id: string;
|
|
243
|
-
round_no: number;
|
|
244
|
-
member: string;
|
|
245
|
-
body_summary: string;
|
|
246
|
-
}>;
|
|
247
|
-
export type CouncilRoundClose = EventEnvelope<"council.round_close", {
|
|
248
|
-
council_id: string;
|
|
249
|
-
round_no: number;
|
|
250
|
-
}>;
|
|
251
|
-
export type CouncilClose = EventEnvelope<"council.close", {
|
|
252
|
-
council_id: string;
|
|
253
|
-
closed_at: string;
|
|
254
|
-
}>;
|
|
255
|
-
export type CouncilArchive = EventEnvelope<"council.archive", {
|
|
256
|
-
council_id: string;
|
|
257
|
-
}>;
|
|
258
|
-
export type DecisionBlock = EventEnvelope<"decision.block", {
|
|
259
|
-
rule: string;
|
|
260
|
-
reason: string;
|
|
261
|
-
}>;
|
|
262
|
-
export type DecisionWarn = EventEnvelope<"decision.warn", {
|
|
263
|
-
rule: string;
|
|
264
|
-
reason: string;
|
|
265
|
-
}>;
|
|
266
|
-
export type DecisionAllow = EventEnvelope<"decision.allow", {
|
|
267
|
-
rule: string;
|
|
268
|
-
}>;
|
|
269
|
-
export type HealthHeartbeatHeal = EventEnvelope<"health.heartbeat_heal", {
|
|
270
|
-
reason: string;
|
|
271
|
-
}>;
|
|
272
|
-
export type HealthPidmapHeal = EventEnvelope<"health.pidmap_heal", {
|
|
273
|
-
reason: string;
|
|
274
|
-
}>;
|
|
275
|
-
/**
|
|
276
|
-
* A heartbeat file was removed by stale-sweep or an operator kill. Symmetric
|
|
277
|
-
* with `health.heartbeat_heal` so the full lifecycle (created → healed →
|
|
278
|
-
* swept) is auditable from the event stream alone. Sweeps were silent before,
|
|
279
|
-
* which made "why did this agent vanish?" un-answerable without guesswork.
|
|
280
|
-
* `reason`: "stale" (last_heartbeat past the freshness cutoff) | "unparseable"
|
|
281
|
-
* (JSON.parse failed AND mtime was old) | "missing_ts" (no last_heartbeat AND
|
|
282
|
-
* mtime was old) | "killed" (operator `kill-heartbeat` / `agents heal --kind
|
|
283
|
-
* kill`). Fresh-mtime files are never auto-swept regardless of content.
|
|
284
|
-
*/
|
|
285
|
-
export type HealthHeartbeatSwept = EventEnvelope<"health.heartbeat_swept", {
|
|
286
|
-
reason: "stale" | "unparseable" | "missing_ts" | "killed";
|
|
287
|
-
age_secs?: number;
|
|
288
|
-
}>;
|
|
289
|
-
/**
|
|
290
|
-
* fail-open verdict failure mode. Emitted by agent-hooks when
|
|
291
|
-
* `agent-coord verdict` fails to spawn / exits non-zero / returns malformed
|
|
292
|
-
* JSON / times out. Adapter falls through to ALLOW; the event preserves the
|
|
293
|
-
* fail-open for audit.
|
|
294
|
-
*/
|
|
295
|
-
export type HealthVerdictFailure = EventEnvelope<"health.verdict_failure", {
|
|
296
|
-
failure_kind: "spawn_failed" | "nonzero_exit" | "malformed_json" | "timeout";
|
|
297
|
-
timeout_ms?: number;
|
|
298
|
-
fallback: "allow";
|
|
299
|
-
}>;
|
|
300
|
-
export type Event = SessionStart | SessionEnd | SubagentStart | SubagentStop | UserPromptSubmit | TurnStop | CommandStart | CommandOutput | CommandEnd | Narration | ToolPreUse | ToolPostUse | ToolPostUseFailure | ToolOutputChunk | ImageCaptured | ContextSampled | ContextCheckpointCreated | ContextCompactionStarted | ContextCompactionCompleted | ContextRecoveryInjected | ClaimAcquire | ClaimRelease | ClaimConflict | StateTaskSet | StateStatusChecked | StateJournalAppend | StatePresenceChange | StateHeartbeat | IdentityAssumed | CouncilOpen | CouncilRoundOpen | CouncilContribution | CouncilRoundClose | CouncilClose | CouncilArchive | DecisionBlock | DecisionWarn | DecisionAllow | HealthHeartbeatHeal | HealthPidmapHeal | HealthHeartbeatSwept | HealthVerdictFailure;
|
|
301
|
-
export type EventType = Event["event_type"];
|
|
302
|
-
/**
|
|
303
|
-
* Redaction marker that may be attached to any `data` payload during emission.
|
|
304
|
-
* Tracked here so the schema documents the convention; the actual
|
|
305
|
-
* shape lives inside `data` so it doesn't widen the envelope.
|
|
306
|
-
*/
|
|
307
|
-
export interface RedactionMarker {
|
|
308
|
-
field: string;
|
|
309
|
-
kind: "secret_signature" | "env_secret_match" | "length_clamp";
|
|
310
|
-
count: number;
|
|
311
|
-
}
|
|
312
|
-
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/events/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Canonical event schema v1. Inter-module contract between agent-hooks (writer)
|
|
3
|
-
* and agent-coord (consumer + projector).
|
|
4
|
-
*
|
|
5
|
-
* Schema evolution rules:
|
|
6
|
-
* - Forward-compatible only within a major version. Consumers ignore unknown
|
|
7
|
-
* fields. Adding an optional field is a minor bump; removing or retyping a
|
|
8
|
-
* field is a major bump.
|
|
9
|
-
* - Mixed-version streams are legal during migrations; consumers branch on
|
|
10
|
-
* `schema_version`.
|
|
11
|
-
*/
|
|
12
|
-
export const SCHEMA_VERSION = 1;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tiny ULID generator. Crockford-base32, 10-char timestamp (48-bit ms epoch)
|
|
3
|
-
* + 16-char random (80-bit). 26 chars total, monotonically-sortable.
|
|
4
|
-
*
|
|
5
|
-
* Library-free so the module stays dep-free (no `ulid` package). Quality is
|
|
6
|
-
* sufficient for event_id uniqueness: the kth event in a millisecond uses a
|
|
7
|
-
* fresh 80-bit random, collision probability negligible.
|
|
8
|
-
*/
|
|
9
|
-
export declare function ulid(): string;
|
|
10
|
-
//# sourceMappingURL=ulid.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ulid.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/events/ulid.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,wBAAgB,IAAI,IAAI,MAAM,CAI7B"}
|