harnery 0.34.1 → 0.36.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/dist/commander.d.ts +30 -5
- package/dist/commander.d.ts.map +1 -1
- package/dist/commander.js +124 -94
- package/dist/commands/agents.d.ts +37 -6
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +466 -371
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +10 -10
- package/dist/commands/browse-session.d.ts.map +1 -1
- package/dist/commands/browse-session.js +12 -0
- package/dist/commands/browse.d.ts +1 -1
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +31 -6
- package/dist/commands/conversations.d.ts +10 -0
- package/dist/commands/conversations.d.ts.map +1 -0
- package/dist/commands/conversations.js +201 -0
- package/dist/commands/decision.d.ts.map +1 -1
- package/dist/commands/decision.js +2 -2
- package/dist/commands/deinit.d.ts.map +1 -1
- package/dist/commands/deinit.js +5 -0
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +13 -2
- package/dist/commands/doctor.d.ts +5 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +51 -7
- package/dist/commands/events.d.ts.map +1 -1
- package/dist/commands/events.js +18 -1
- package/dist/commands/fetch.js +6 -5
- package/dist/commands/files.d.ts +22 -0
- package/dist/commands/files.d.ts.map +1 -0
- package/dist/commands/files.js +113 -0
- package/dist/commands/governor.js +14 -12
- package/dist/commands/inbox.d.ts +5 -0
- package/dist/commands/inbox.d.ts.map +1 -0
- package/dist/commands/inbox.js +57 -0
- package/dist/commands/init.d.ts +4 -5
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +63 -13
- package/dist/commands/ledger-v3.d.ts.map +1 -1
- package/dist/commands/ledger-v3.js +347 -1
- package/dist/commands/logs.d.ts +4 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +169 -0
- package/dist/commands/messages.d.ts +5 -0
- package/dist/commands/messages.d.ts.map +1 -0
- package/dist/commands/messages.js +45 -0
- package/dist/commands/outline.d.ts +1 -1
- package/dist/commands/outline.d.ts.map +1 -1
- package/dist/commands/outline.js +2 -2
- package/dist/commands/presence.d.ts.map +1 -1
- package/dist/commands/presence.js +2 -2
- package/dist/commands/read.d.ts +1 -1
- package/dist/commands/read.d.ts.map +1 -1
- package/dist/commands/read.js +2 -2
- package/dist/commands/semantic.d.ts +4 -0
- package/dist/commands/semantic.d.ts.map +1 -0
- package/dist/commands/semantic.js +199 -0
- package/dist/commands/storage.d.ts +4 -0
- package/dist/commands/storage.d.ts.map +1 -0
- package/dist/commands/storage.js +238 -0
- package/dist/commands/tunnel.d.ts +5 -1
- package/dist/commands/tunnel.d.ts.map +1 -1
- package/dist/commands/tunnel.js +44 -31
- package/dist/commands/web.d.ts +3 -0
- package/dist/commands/web.d.ts.map +1 -1
- package/dist/commands/web.js +84 -7
- package/dist/commands/work.js +3 -3
- package/dist/commands/workflow.js +13 -13
- package/dist/core/adapters/profiles.d.ts +1 -1
- package/dist/core/agents/canonical-emit.d.ts +3 -0
- package/dist/core/agents/canonical-emit.d.ts.map +1 -1
- package/dist/core/agents/canonical-emit.js +12 -0
- package/dist/core/agents/claim-path.d.ts +11 -0
- package/dist/core/agents/claim-path.d.ts.map +1 -0
- package/dist/core/agents/claim-path.js +22 -0
- package/dist/core/agents/cli.js +209 -39
- package/dist/core/agents/coord-client.d.ts +29 -3
- package/dist/core/agents/coord-client.d.ts.map +1 -1
- package/dist/core/agents/coord-client.js +88 -9
- package/dist/core/agents/live-authority-v3.d.ts +47 -1
- package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
- package/dist/core/agents/live-authority-v3.js +245 -13
- package/dist/core/agents/live-lifecycle-v3.js +9 -4
- package/dist/core/agents/live-observation-v3.d.ts.map +1 -1
- package/dist/core/agents/live-observation-v3.js +8 -3
- package/dist/core/agents/render/prompt-context.d.ts +9 -3
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +36 -17
- package/dist/core/agents/rules/stop-hook.d.ts +2 -0
- package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
- package/dist/core/agents/rules/stop-hook.js +115 -22
- package/dist/core/agents/rules/verdict.d.ts +1 -0
- package/dist/core/agents/rules/verdict.d.ts.map +1 -1
- package/dist/core/agents/session-events.d.ts.map +1 -1
- package/dist/core/agents/session-events.js +4 -0
- package/dist/core/agents/session-finalization-state-v3.js +1 -1
- package/dist/core/agents/session-finalizer-v3.js +5 -1
- package/dist/core/agents/session-name-display.d.ts +1 -0
- package/dist/core/agents/session-name-display.d.ts.map +1 -1
- package/dist/core/agents/session-name-display.js +8 -1
- package/dist/core/agents/state/activity-log.d.ts +3 -0
- package/dist/core/agents/state/activity-log.d.ts.map +1 -1
- package/dist/core/agents/state/activity-log.js +6 -3
- package/dist/core/agents/state/heartbeat-reader.d.ts +46 -0
- package/dist/core/agents/state/heartbeat-reader.d.ts.map +1 -0
- package/dist/core/agents/state/heartbeat-reader.js +25 -0
- package/dist/core/agents/state/heartbeat-writer.d.ts +9 -48
- package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +34 -34
- package/dist/core/agents/state/live-coordination-view.d.ts +6 -8
- package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-view.js +16 -67
- package/dist/core/agents/state/live-coordination-writer.d.ts +12 -0
- package/dist/core/agents/state/live-coordination-writer.d.ts.map +1 -0
- package/dist/core/agents/state/live-coordination-writer.js +92 -0
- package/dist/core/agents/state/names.d.ts +9 -1
- package/dist/core/agents/state/names.d.ts.map +1 -1
- package/dist/core/agents/state/names.js +190 -182
- package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
- package/dist/core/agents/state/stale-sweep.js +23 -5
- package/dist/core/artifacts/constants.d.ts +5 -0
- package/dist/core/artifacts/constants.d.ts.map +1 -0
- package/dist/core/artifacts/constants.js +4 -0
- package/dist/core/artifacts/index.d.ts +24 -3
- package/dist/core/artifacts/index.d.ts.map +1 -1
- package/dist/core/artifacts/index.js +96 -8
- package/dist/core/config.d.ts +62 -4
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +98 -4
- package/dist/core/conversations/archive.d.ts +49 -0
- package/dist/core/conversations/archive.d.ts.map +1 -0
- package/dist/core/conversations/archive.js +136 -0
- package/dist/core/conversations/catalog.d.ts +10 -0
- package/dist/core/conversations/catalog.d.ts.map +1 -0
- package/dist/core/conversations/catalog.js +72 -0
- package/dist/core/conversations/context-pack.d.ts +6 -0
- package/dist/core/conversations/context-pack.d.ts.map +1 -0
- package/dist/core/conversations/context-pack.js +60 -0
- package/dist/core/conversations/contract.d.ts +155 -0
- package/dist/core/conversations/contract.d.ts.map +1 -0
- package/dist/core/conversations/contract.js +1 -0
- package/dist/core/conversations/evaluation.d.ts +16 -0
- package/dist/core/conversations/evaluation.d.ts.map +1 -0
- package/dist/core/conversations/evaluation.js +9 -0
- package/dist/core/conversations/index.d.ts +10 -0
- package/dist/core/conversations/index.d.ts.map +1 -0
- package/dist/core/conversations/index.js +9 -0
- package/dist/core/conversations/lifecycle.d.ts +28 -0
- package/dist/core/conversations/lifecycle.d.ts.map +1 -0
- package/dist/core/conversations/lifecycle.js +29 -0
- package/dist/core/conversations/normalize.d.ts +14 -0
- package/dist/core/conversations/normalize.d.ts.map +1 -0
- package/dist/core/conversations/normalize.js +82 -0
- package/dist/core/conversations/query.d.ts +8 -0
- package/dist/core/conversations/query.d.ts.map +1 -0
- package/dist/core/conversations/query.js +280 -0
- package/dist/core/conversations/search-index.d.ts +9 -0
- package/dist/core/conversations/search-index.d.ts.map +1 -0
- package/dist/core/conversations/search-index.js +29 -0
- package/dist/core/events/legacy-storage/canary.d.ts +18 -0
- package/dist/core/events/legacy-storage/canary.d.ts.map +1 -0
- package/dist/core/events/legacy-storage/canary.js +150 -0
- package/dist/core/events/legacy-storage/fence.d.ts +15 -0
- package/dist/core/events/legacy-storage/fence.d.ts.map +1 -0
- package/dist/core/events/legacy-storage/fence.js +115 -0
- package/dist/core/events/legacy-storage/index.d.ts +6 -0
- package/dist/core/events/legacy-storage/index.d.ts.map +1 -0
- package/dist/core/events/legacy-storage/index.js +5 -0
- package/dist/core/events/legacy-storage/inventory.d.ts +10 -0
- package/dist/core/events/legacy-storage/inventory.d.ts.map +1 -0
- package/dist/core/events/legacy-storage/inventory.js +40 -0
- package/dist/core/events/legacy-storage/manifest.d.ts +23 -0
- package/dist/core/events/legacy-storage/manifest.d.ts.map +1 -0
- package/dist/core/events/legacy-storage/manifest.js +108 -0
- package/dist/core/events/legacy-storage/reader.d.ts +15 -0
- package/dist/core/events/legacy-storage/reader.d.ts.map +1 -0
- package/dist/core/events/legacy-storage/reader.js +154 -0
- package/dist/core/events/v3/authority-outbox.d.ts +7 -2
- package/dist/core/events/v3/authority-outbox.d.ts.map +1 -1
- package/dist/core/events/v3/authority-outbox.js +16 -3
- package/dist/core/events/v3/base-contract.d.ts +851 -16
- package/dist/core/events/v3/base-contract.d.ts.map +1 -1
- package/dist/core/events/v3/base-contract.js +50 -7
- package/dist/core/events/v3/bootstrap.d.ts +39 -0
- package/dist/core/events/v3/bootstrap.d.ts.map +1 -1
- package/dist/core/events/v3/bootstrap.js +167 -3
- package/dist/core/events/v3/capabilities.d.ts +11 -0
- package/dist/core/events/v3/capabilities.d.ts.map +1 -1
- package/dist/core/events/v3/capabilities.js +26 -3
- package/dist/core/events/v3/control-witness.d.ts +44 -0
- package/dist/core/events/v3/control-witness.d.ts.map +1 -0
- package/dist/core/events/v3/control-witness.js +233 -0
- package/dist/core/events/v3/control-writer.d.ts +4 -0
- package/dist/core/events/v3/control-writer.d.ts.map +1 -0
- package/dist/core/events/v3/control-writer.js +16 -0
- package/dist/core/events/v3/control.d.ts +8 -2
- package/dist/core/events/v3/control.d.ts.map +1 -1
- package/dist/core/events/v3/control.js +46 -18
- package/dist/core/events/v3/coordination-transaction-recovery.d.ts +42 -0
- package/dist/core/events/v3/coordination-transaction-recovery.d.ts.map +1 -0
- package/dist/core/events/v3/coordination-transaction-recovery.js +342 -0
- package/dist/core/events/v3/coordination-view.d.ts.map +1 -1
- package/dist/core/events/v3/coordination-view.js +16 -1
- package/dist/core/events/v3/generated.d.ts +1 -1
- package/dist/core/events/v3/generated.js +1 -1
- package/dist/core/events/v3/index.d.ts +8 -5
- package/dist/core/events/v3/index.d.ts.map +1 -1
- package/dist/core/events/v3/index.js +7 -4
- package/dist/core/events/v3/latency.d.ts +31 -1
- package/dist/core/events/v3/latency.d.ts.map +1 -1
- package/dist/core/events/v3/latency.js +127 -3
- package/dist/core/events/v3/live-route-observer.d.ts +31 -0
- package/dist/core/events/v3/live-route-observer.d.ts.map +1 -0
- package/dist/core/events/v3/live-route-observer.js +58 -0
- package/dist/core/events/v3/live-routing.d.ts +42 -20
- package/dist/core/events/v3/live-routing.d.ts.map +1 -1
- package/dist/core/events/v3/live-routing.js +153 -41
- package/dist/core/events/v3/producers/command-recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/command-recorder.js +10 -1
- package/dist/core/events/v3/producers/coordination-recorder.d.ts +11 -1
- package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/coordination-recorder.js +90 -13
- package/dist/core/events/v3/producers/diagnostic-summaries.d.ts +129 -0
- package/dist/core/events/v3/producers/diagnostic-summaries.d.ts.map +1 -0
- package/dist/core/events/v3/producers/diagnostic-summaries.js +499 -0
- package/dist/core/events/v3/producers/hook-base.d.ts +17 -1
- package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -1
- package/dist/core/events/v3/producers/hook-base.js +83 -2
- package/dist/core/events/v3/producers/intake.d.ts +13 -0
- package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
- package/dist/core/events/v3/producers/intake.js +36 -2
- package/dist/core/events/v3/producers/producer-state-observer.d.ts +8 -0
- package/dist/core/events/v3/producers/producer-state-observer.d.ts.map +1 -0
- package/dist/core/events/v3/producers/producer-state-observer.js +45 -0
- package/dist/core/events/v3/producers/recorder.d.ts +117 -1
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/recorder.js +992 -27
- package/dist/core/events/v3/reader.d.ts +51 -0
- package/dist/core/events/v3/reader.d.ts.map +1 -1
- package/dist/core/events/v3/reader.js +181 -1
- package/dist/core/events/v3/rotation-config.d.ts +9 -0
- package/dist/core/events/v3/rotation-config.d.ts.map +1 -0
- package/dist/core/events/v3/rotation-config.js +91 -0
- package/dist/core/events/v3/runtime-build.d.ts +11 -0
- package/dist/core/events/v3/runtime-build.d.ts.map +1 -0
- package/dist/core/events/v3/runtime-build.js +39 -0
- package/dist/core/events/v3/runtime-identity.d.ts +5 -0
- package/dist/core/events/v3/runtime-identity.d.ts.map +1 -0
- package/dist/core/events/v3/runtime-identity.js +18 -0
- package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts +52 -0
- package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts.map +1 -0
- package/dist/core/events/v3/runtime-telemetry-capabilities.js +54 -0
- package/dist/core/events/v3/support-storage/classify.d.ts +46 -0
- package/dist/core/events/v3/support-storage/classify.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/classify.js +149 -0
- package/dist/core/events/v3/support-storage/eligibility.d.ts +29 -0
- package/dist/core/events/v3/support-storage/eligibility.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/eligibility.js +35 -0
- package/dist/core/events/v3/support-storage/index.d.ts +10 -0
- package/dist/core/events/v3/support-storage/index.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/index.js +9 -0
- package/dist/core/events/v3/support-storage/inventory.d.ts +30 -0
- package/dist/core/events/v3/support-storage/inventory.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/inventory.js +94 -0
- package/dist/core/events/v3/support-storage/logical-authority.d.ts +14 -0
- package/dist/core/events/v3/support-storage/logical-authority.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/logical-authority.js +104 -0
- package/dist/core/events/v3/support-storage/maintenance.d.ts +98 -0
- package/dist/core/events/v3/support-storage/maintenance.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/maintenance.js +352 -0
- package/dist/core/events/v3/support-storage/pack-contract.d.ts +59 -0
- package/dist/core/events/v3/support-storage/pack-contract.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/pack-contract.js +249 -0
- package/dist/core/events/v3/support-storage/pack-reader.d.ts +34 -0
- package/dist/core/events/v3/support-storage/pack-reader.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/pack-reader.js +258 -0
- package/dist/core/events/v3/support-storage/pack-writer.d.ts +30 -0
- package/dist/core/events/v3/support-storage/pack-writer.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/pack-writer.js +268 -0
- package/dist/core/events/v3/support-storage/recovery.d.ts +15 -0
- package/dist/core/events/v3/support-storage/recovery.d.ts.map +1 -0
- package/dist/core/events/v3/support-storage/recovery.js +22 -0
- package/dist/core/events/v3/turn-telemetry.d.ts +21 -6
- package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -1
- package/dist/core/events/v3/turn-telemetry.js +32 -2
- package/dist/core/events/v3/writer.d.ts +13 -1
- package/dist/core/events/v3/writer.d.ts.map +1 -1
- package/dist/core/events/v3/writer.js +126 -12
- package/dist/core/governor/plan-read.d.ts.map +1 -1
- package/dist/core/governor/plan-read.js +5 -21
- package/dist/core/governor/planning.js +6 -8
- package/dist/core/governor/service-read.d.ts +12 -0
- package/dist/core/governor/service-read.d.ts.map +1 -1
- package/dist/core/governor/service-read.js +266 -2
- package/dist/core/governor/service.d.ts +1 -0
- package/dist/core/governor/service.d.ts.map +1 -1
- package/dist/core/governor/service.js +53 -18
- package/dist/core/guard/evidence-v3.d.ts.map +1 -1
- package/dist/core/guard/evidence-v3.js +2 -0
- package/dist/core/hooks/adapter/events.d.ts.map +1 -1
- package/dist/core/hooks/adapter/events.js +1 -0
- package/dist/core/hooks/adapter/output.d.ts +4 -2
- package/dist/core/hooks/adapter/output.d.ts.map +1 -1
- package/dist/core/hooks/adapter/output.js +13 -5
- package/dist/core/hooks/adapter/parse.d.ts +3 -0
- package/dist/core/hooks/adapter/parse.d.ts.map +1 -1
- package/dist/core/hooks/adapter/parse.js +14 -0
- package/dist/core/hooks/adapter/runtime-telemetry.d.ts +142 -0
- package/dist/core/hooks/adapter/runtime-telemetry.d.ts.map +1 -0
- package/dist/core/hooks/adapter/runtime-telemetry.js +869 -0
- package/dist/core/hooks/cli.js +318 -61
- package/dist/core/hooks/effects/image-capture.d.ts +1 -1
- package/dist/core/hooks/effects/image-capture.d.ts.map +1 -1
- package/dist/core/hooks/effects/image-capture.js +4 -2
- package/dist/core/hooks/remediation-cap.d.ts +39 -0
- package/dist/core/hooks/remediation-cap.d.ts.map +1 -0
- package/dist/core/hooks/remediation-cap.js +63 -0
- package/dist/core/hooks/resolve/coord-root.d.ts +22 -9
- package/dist/core/hooks/resolve/coord-root.d.ts.map +1 -1
- package/dist/core/hooks/resolve/coord-root.js +92 -11
- package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
- package/dist/core/hooks/resolve/owner.js +5 -0
- package/dist/core/hooks/resolve/transcript.d.ts +33 -9
- package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
- package/dist/core/hooks/resolve/transcript.js +33 -10
- package/dist/core/inbox/contract.d.ts +64 -0
- package/dist/core/inbox/contract.d.ts.map +1 -0
- package/dist/core/inbox/contract.js +13 -0
- package/dist/core/inbox/index.d.ts +5 -0
- package/dist/core/inbox/index.d.ts.map +1 -0
- package/dist/core/inbox/index.js +4 -0
- package/dist/core/inbox/lifecycle.d.ts +22 -0
- package/dist/core/inbox/lifecycle.d.ts.map +1 -0
- package/dist/core/inbox/lifecycle.js +41 -0
- package/dist/core/inbox/service.d.ts +36 -0
- package/dist/core/inbox/service.d.ts.map +1 -0
- package/dist/core/inbox/service.js +210 -0
- package/dist/core/inbox/watcher.d.ts +7 -0
- package/dist/core/inbox/watcher.d.ts.map +1 -0
- package/dist/core/inbox/watcher.js +26 -0
- package/dist/core/presence/codec-digest.d.ts.map +1 -1
- package/dist/core/presence/codec-digest.js +14 -3
- package/dist/core/presence/relay-client.d.ts +1 -0
- package/dist/core/presence/relay-client.d.ts.map +1 -1
- package/dist/core/presence/relay-client.js +52 -8
- package/dist/core/semantic/adapters.d.ts +37 -0
- package/dist/core/semantic/adapters.d.ts.map +1 -0
- package/dist/core/semantic/adapters.js +360 -0
- package/dist/core/semantic/contract.d.ts +1072 -0
- package/dist/core/semantic/contract.d.ts.map +1 -0
- package/dist/core/semantic/contract.js +331 -0
- package/dist/core/semantic/evidence.d.ts +11 -0
- package/dist/core/semantic/evidence.d.ts.map +1 -0
- package/dist/core/semantic/evidence.js +262 -0
- package/dist/core/semantic/index.d.ts +14 -0
- package/dist/core/semantic/index.d.ts.map +1 -0
- package/dist/core/semantic/index.js +13 -0
- package/dist/core/semantic/once.d.ts +38 -0
- package/dist/core/semantic/once.d.ts.map +1 -0
- package/dist/core/semantic/once.js +364 -0
- package/dist/core/semantic/prompt.d.ts +12 -0
- package/dist/core/semantic/prompt.d.ts.map +1 -0
- package/dist/core/semantic/prompt.js +83 -0
- package/dist/core/semantic/review.d.ts +144 -0
- package/dist/core/semantic/review.d.ts.map +1 -0
- package/dist/core/semantic/review.js +544 -0
- package/dist/core/semantic/routes.d.ts +10 -0
- package/dist/core/semantic/routes.d.ts.map +1 -0
- package/dist/core/semantic/routes.js +21 -0
- package/dist/core/semantic/scheduler.d.ts +27 -0
- package/dist/core/semantic/scheduler.d.ts.map +1 -0
- package/dist/core/semantic/scheduler.js +91 -0
- package/dist/core/semantic/service-status.d.ts +51 -0
- package/dist/core/semantic/service-status.d.ts.map +1 -0
- package/dist/core/semantic/service-status.js +140 -0
- package/dist/core/semantic/service.d.ts +52 -0
- package/dist/core/semantic/service.d.ts.map +1 -0
- package/dist/core/semantic/service.js +559 -0
- package/dist/core/semantic/soak.d.ts +75 -0
- package/dist/core/semantic/soak.d.ts.map +1 -0
- package/dist/core/semantic/soak.js +476 -0
- package/dist/core/semantic/storage.d.ts +81 -0
- package/dist/core/semantic/storage.d.ts.map +1 -0
- package/dist/core/semantic/storage.js +180 -0
- package/dist/core/semantic/usage.d.ts +43 -0
- package/dist/core/semantic/usage.d.ts.map +1 -0
- package/dist/core/semantic/usage.js +193 -0
- package/dist/core/semantic/validate.d.ts +18 -0
- package/dist/core/semantic/validate.d.ts.map +1 -0
- package/dist/core/semantic/validate.js +207 -0
- package/dist/core/storage/buffer.d.ts +28 -0
- package/dist/core/storage/buffer.d.ts.map +1 -0
- package/dist/core/storage/buffer.js +101 -0
- package/dist/core/storage/builtins.d.ts +3 -0
- package/dist/core/storage/builtins.d.ts.map +1 -0
- package/dist/core/storage/builtins.js +683 -0
- package/dist/core/storage/catalog.d.ts +19 -0
- package/dist/core/storage/catalog.d.ts.map +1 -0
- package/dist/core/storage/catalog.js +365 -0
- package/dist/core/storage/config.d.ts +16 -0
- package/dist/core/storage/config.d.ts.map +1 -0
- package/dist/core/storage/config.js +311 -0
- package/dist/core/storage/contract.d.ts +275 -0
- package/dist/core/storage/contract.d.ts.map +1 -0
- package/dist/core/storage/contract.js +3 -0
- package/dist/core/storage/durable-history.d.ts +36 -0
- package/dist/core/storage/durable-history.d.ts.map +1 -0
- package/dist/core/storage/durable-history.js +606 -0
- package/dist/core/storage/health.d.ts +4 -0
- package/dist/core/storage/health.d.ts.map +1 -0
- package/dist/core/storage/health.js +65 -0
- package/dist/core/storage/index.d.ts +16 -0
- package/dist/core/storage/index.d.ts.map +1 -0
- package/dist/core/storage/index.js +15 -0
- package/dist/core/storage/inventory.d.ts +25 -0
- package/dist/core/storage/inventory.d.ts.map +1 -0
- package/dist/core/storage/inventory.js +666 -0
- package/dist/core/storage/jsonl.d.ts +52 -0
- package/dist/core/storage/jsonl.d.ts.map +1 -0
- package/dist/core/storage/jsonl.js +156 -0
- package/dist/core/storage/log-retention.d.ts +52 -0
- package/dist/core/storage/log-retention.d.ts.map +1 -0
- package/dist/core/storage/log-retention.js +419 -0
- package/dist/core/storage/logger.d.ts +82 -0
- package/dist/core/storage/logger.d.ts.map +1 -0
- package/dist/core/storage/logger.js +411 -0
- package/dist/core/storage/maintenance-providers.d.ts +26 -0
- package/dist/core/storage/maintenance-providers.d.ts.map +1 -0
- package/dist/core/storage/maintenance-providers.js +141 -0
- package/dist/core/storage/maintenance.d.ts +125 -0
- package/dist/core/storage/maintenance.d.ts.map +1 -0
- package/dist/core/storage/maintenance.js +609 -0
- package/dist/core/storage/metrics.d.ts +60 -0
- package/dist/core/storage/metrics.d.ts.map +1 -0
- package/dist/core/storage/metrics.js +134 -0
- package/dist/core/storage/policy.d.ts +7 -0
- package/dist/core/storage/policy.d.ts.map +1 -0
- package/dist/core/storage/policy.js +110 -0
- package/dist/core/storage/process-log.d.ts +38 -0
- package/dist/core/storage/process-log.d.ts.map +1 -0
- package/dist/core/storage/process-log.js +165 -0
- package/dist/core/storage/query.d.ts +34 -0
- package/dist/core/storage/query.d.ts.map +1 -0
- package/dist/core/storage/query.js +295 -0
- package/dist/core/storage/receipts.d.ts +23 -0
- package/dist/core/storage/receipts.d.ts.map +1 -0
- package/dist/core/storage/receipts.js +117 -0
- package/dist/core/storage/segments.d.ts +84 -0
- package/dist/core/storage/segments.d.ts.map +1 -0
- package/dist/core/storage/segments.js +542 -0
- package/dist/core/storage/sink-graph.d.ts +65 -0
- package/dist/core/storage/sink-graph.d.ts.map +1 -0
- package/dist/core/storage/sink-graph.js +213 -0
- package/dist/core/storage/storm-control.d.ts +23 -0
- package/dist/core/storage/storm-control.d.ts.map +1 -0
- package/dist/core/storage/storm-control.js +59 -0
- package/dist/core/work/state.d.ts.map +1 -1
- package/dist/core/work/state.js +10 -14
- package/dist/core/workflow/live-session-v3.d.ts.map +1 -1
- package/dist/core/workflow/live-session-v3.js +2 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/lazy-commands.d.ts +26 -0
- package/dist/lazy-commands.d.ts.map +1 -0
- package/dist/lazy-commands.js +210 -0
- package/dist/lib/browser/client.d.ts +11 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +13 -0
- package/dist/lib/browser/index.d.ts +1 -0
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/standalone-html.d.ts +25 -0
- package/dist/lib/browser/standalone-html.d.ts.map +1 -0
- package/dist/lib/browser/standalone-html.js +284 -0
- package/dist/lib/docs-lint.d.ts +2 -0
- package/dist/lib/docs-lint.d.ts.map +1 -1
- package/dist/lib/docs-lint.js +45 -80
- package/dist/lib/docs-metadata-audit.d.ts +3 -0
- package/dist/lib/docs-metadata-audit.d.ts.map +1 -1
- package/dist/lib/docs-metadata-audit.js +13 -23
- package/dist/lib/docs-metadata-sync.d.ts +1 -0
- package/dist/lib/docs-metadata-sync.d.ts.map +1 -1
- package/dist/lib/docs-metadata-sync.js +28 -10
- package/dist/lib/docs-repository-view.d.ts +22 -0
- package/dist/lib/docs-repository-view.d.ts.map +1 -0
- package/dist/lib/docs-repository-view.js +185 -0
- package/dist/lib/http/client.d.ts +11 -5
- package/dist/lib/http/client.d.ts.map +1 -1
- package/dist/lib/http/client.js +22 -4
- package/dist/lib/http/index.d.ts +1 -1
- package/dist/lib/http/index.d.ts.map +1 -1
- package/dist/lib/http/index.js +1 -1
- package/dist/lib/indexer-exclusions.d.ts +27 -0
- package/dist/lib/indexer-exclusions.d.ts.map +1 -0
- package/dist/lib/indexer-exclusions.js +176 -0
- package/dist/lib/instructions/apply.d.ts.map +1 -1
- package/dist/lib/instructions/apply.js +1 -0
- package/dist/lib/instructions/templates.d.ts +2 -0
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +149 -4
- package/dist/lib/local-file-url.d.ts +9 -0
- package/dist/lib/local-file-url.d.ts.map +1 -0
- package/dist/lib/local-file-url.js +20 -0
- package/dist/lib/web-performance.d.ts +118 -0
- package/dist/lib/web-performance.d.ts.map +1 -0
- package/dist/lib/web-performance.js +192 -0
- package/package.json +34 -2
- package/schemas/config.schema.json +58 -0
- package/schemas/event-v3.schema.json +3073 -581
- package/src/commander.ts +462 -93
- package/src/commands/agents.ts +617 -355
- package/src/commands/backup.ts +18 -14
- package/src/commands/browse-session.ts +12 -0
- package/src/commands/browse.ts +31 -9
- package/src/commands/conversations.ts +279 -0
- package/src/commands/decision.ts +8 -2
- package/src/commands/deinit.ts +6 -0
- package/src/commands/docs.ts +25 -6
- package/src/commands/doctor.ts +75 -9
- package/src/commands/events.ts +21 -1
- package/src/commands/fetch.ts +7 -6
- package/src/commands/files.ts +143 -0
- package/src/commands/governor.ts +13 -12
- package/src/commands/inbox.ts +61 -0
- package/src/commands/init.ts +78 -16
- package/src/commands/ledger-v3.ts +421 -1
- package/src/commands/logs.ts +224 -0
- package/src/commands/messages.ts +61 -0
- package/src/commands/outline.ts +6 -2
- package/src/commands/presence.ts +7 -2
- package/src/commands/read.ts +6 -2
- package/src/commands/semantic.ts +244 -0
- package/src/commands/storage.ts +310 -0
- package/src/commands/tunnel.ts +66 -52
- package/src/commands/web.ts +92 -7
- package/src/commands/work.ts +3 -3
- package/src/commands/workflow.ts +13 -13
- package/src/core/agents/canonical-emit.ts +15 -0
- package/src/core/agents/claim-path.ts +23 -0
- package/src/core/agents/cli.ts +259 -53
- package/src/core/agents/coord-client.ts +92 -8
- package/src/core/agents/live-authority-v3.ts +342 -14
- package/src/core/agents/live-lifecycle-v3.ts +14 -4
- package/src/core/agents/live-observation-v3.ts +13 -3
- package/src/core/agents/render/prompt-context.ts +40 -16
- package/src/core/agents/rules/stop-hook.ts +129 -25
- package/src/core/agents/rules/verdict.ts +1 -0
- package/src/core/agents/session-events.ts +4 -0
- package/src/core/agents/session-finalization-state-v3.ts +1 -1
- package/src/core/agents/session-finalizer-v3.ts +4 -1
- package/src/core/agents/session-name-display.ts +9 -1
- package/src/core/agents/state/activity-log.ts +7 -2
- package/src/core/agents/state/heartbeat-reader.ts +69 -0
- package/src/core/agents/state/heartbeat-writer.ts +47 -84
- package/src/core/agents/state/live-coordination-view.ts +17 -81
- package/src/core/agents/state/live-coordination-writer.ts +141 -0
- package/src/core/agents/state/names.ts +190 -182
- package/src/core/agents/state/stale-sweep.ts +25 -5
- package/src/core/artifacts/constants.ts +4 -0
- package/src/core/artifacts/index.ts +113 -8
- package/src/core/config.ts +126 -5
- package/src/core/conversations/archive.ts +237 -0
- package/src/core/conversations/catalog.ts +79 -0
- package/src/core/conversations/context-pack.ts +72 -0
- package/src/core/conversations/contract.ts +178 -0
- package/src/core/conversations/evaluation.ts +30 -0
- package/src/core/conversations/index.ts +9 -0
- package/src/core/conversations/lifecycle.ts +63 -0
- package/src/core/conversations/normalize.ts +105 -0
- package/src/core/conversations/query.ts +318 -0
- package/src/core/conversations/search-index.ts +48 -0
- package/src/core/events/legacy-storage/canary.ts +177 -0
- package/src/core/events/legacy-storage/fence.ts +129 -0
- package/src/core/events/legacy-storage/index.ts +5 -0
- package/src/core/events/legacy-storage/inventory.ts +51 -0
- package/src/core/events/legacy-storage/manifest.ts +136 -0
- package/src/core/events/legacy-storage/reader.ts +178 -0
- package/src/core/events/v3/authority-outbox.ts +22 -1
- package/src/core/events/v3/base-contract.ts +56 -7
- package/src/core/events/v3/bootstrap.ts +195 -2
- package/src/core/events/v3/capabilities.ts +37 -3
- package/src/core/events/v3/control-witness.ts +339 -0
- package/src/core/events/v3/control-writer.ts +16 -0
- package/src/core/events/v3/control.ts +54 -18
- package/src/core/events/v3/coordination-transaction-recovery.ts +477 -0
- package/src/core/events/v3/coordination-view.ts +17 -1
- package/src/core/events/v3/generated.ts +1 -1
- package/src/core/events/v3/index.ts +26 -2
- package/src/core/events/v3/latency.ts +213 -2
- package/src/core/events/v3/live-route-observer.ts +80 -0
- package/src/core/events/v3/live-routing.ts +182 -45
- package/src/core/events/v3/producers/command-recorder.ts +10 -1
- package/src/core/events/v3/producers/coordination-recorder.ts +112 -15
- package/src/core/events/v3/producers/diagnostic-summaries.ts +593 -0
- package/src/core/events/v3/producers/hook-base.ts +116 -2
- package/src/core/events/v3/producers/intake.ts +48 -2
- package/src/core/events/v3/producers/producer-state-observer.ts +52 -0
- package/src/core/events/v3/producers/recorder.ts +1403 -30
- package/src/core/events/v3/reader.ts +243 -2
- package/src/core/events/v3/rotation-config.ts +98 -0
- package/src/core/events/v3/runtime-build.ts +41 -0
- package/src/core/events/v3/runtime-identity.ts +16 -0
- package/src/core/events/v3/runtime-telemetry-capabilities.ts +143 -0
- package/src/core/events/v3/support-storage/classify.ts +209 -0
- package/src/core/events/v3/support-storage/eligibility.ts +58 -0
- package/src/core/events/v3/support-storage/index.ts +9 -0
- package/src/core/events/v3/support-storage/inventory.ts +135 -0
- package/src/core/events/v3/support-storage/logical-authority.ts +117 -0
- package/src/core/events/v3/support-storage/maintenance.ts +501 -0
- package/src/core/events/v3/support-storage/pack-contract.ts +337 -0
- package/src/core/events/v3/support-storage/pack-reader.ts +346 -0
- package/src/core/events/v3/support-storage/pack-writer.ts +352 -0
- package/src/core/events/v3/support-storage/recovery.ts +43 -0
- package/src/core/events/v3/turn-telemetry.ts +66 -5
- package/src/core/events/v3/writer.ts +168 -16
- package/src/core/governor/plan-read.ts +5 -18
- package/src/core/governor/planning.ts +5 -8
- package/src/core/governor/service-read.ts +320 -2
- package/src/core/governor/service.ts +49 -22
- package/src/core/guard/evidence-v3.ts +1 -0
- package/src/core/hooks/adapter/events.ts +1 -0
- package/src/core/hooks/adapter/output.ts +12 -5
- package/src/core/hooks/adapter/parse.ts +16 -0
- package/src/core/hooks/adapter/runtime-telemetry.ts +1200 -0
- package/src/core/hooks/cli.ts +342 -64
- package/src/core/hooks/effects/image-capture.ts +4 -1
- package/src/core/hooks/remediation-cap.ts +83 -0
- package/src/core/hooks/resolve/coord-root.ts +91 -11
- package/src/core/hooks/resolve/owner.ts +4 -0
- package/src/core/hooks/resolve/transcript.ts +55 -11
- package/src/core/inbox/contract.ts +81 -0
- package/src/core/inbox/index.ts +4 -0
- package/src/core/inbox/lifecycle.ts +104 -0
- package/src/core/inbox/service.ts +305 -0
- package/src/core/inbox/watcher.ts +36 -0
- package/src/core/presence/codec-digest.ts +15 -9
- package/src/core/presence/relay-client.ts +55 -7
- package/src/core/semantic/adapters.ts +452 -0
- package/src/core/semantic/contract.ts +430 -0
- package/src/core/semantic/evidence.ts +336 -0
- package/src/core/semantic/index.ts +201 -0
- package/src/core/semantic/once.ts +496 -0
- package/src/core/semantic/prompt.ts +96 -0
- package/src/core/semantic/review.ts +803 -0
- package/src/core/semantic/routes.ts +30 -0
- package/src/core/semantic/scheduler.ts +151 -0
- package/src/core/semantic/service-status.ts +212 -0
- package/src/core/semantic/service.ts +681 -0
- package/src/core/semantic/soak.ts +638 -0
- package/src/core/semantic/storage.ts +300 -0
- package/src/core/semantic/usage.ts +272 -0
- package/src/core/semantic/validate.ts +243 -0
- package/src/core/storage/buffer.ts +124 -0
- package/src/core/storage/builtins.ts +916 -0
- package/src/core/storage/catalog.ts +467 -0
- package/src/core/storage/config.ts +423 -0
- package/src/core/storage/contract.ts +342 -0
- package/src/core/storage/durable-history.ts +738 -0
- package/src/core/storage/health.ts +76 -0
- package/src/core/storage/index.ts +15 -0
- package/src/core/storage/inventory.ts +859 -0
- package/src/core/storage/jsonl.ts +213 -0
- package/src/core/storage/log-retention.ts +555 -0
- package/src/core/storage/logger.ts +546 -0
- package/src/core/storage/maintenance-providers.ts +200 -0
- package/src/core/storage/maintenance.ts +929 -0
- package/src/core/storage/metrics.ts +199 -0
- package/src/core/storage/policy.ts +141 -0
- package/src/core/storage/process-log.ts +203 -0
- package/src/core/storage/query.ts +360 -0
- package/src/core/storage/receipts.ts +162 -0
- package/src/core/storage/segments.ts +721 -0
- package/src/core/storage/sink-graph.ts +343 -0
- package/src/core/storage/storm-control.ts +91 -0
- package/src/core/work/state.ts +12 -21
- package/src/core/workflow/live-session-v3.ts +2 -4
- package/src/index.ts +2 -0
- package/src/lazy-commands.ts +294 -0
- package/src/lib/browser/client.ts +21 -0
- package/src/lib/browser/index.ts +4 -0
- package/src/lib/browser/standalone-html.ts +312 -0
- package/src/lib/docs-lint.ts +58 -77
- package/src/lib/docs-metadata-audit.ts +26 -21
- package/src/lib/docs-metadata-sync.ts +32 -9
- package/src/lib/docs-repository-view.ts +220 -0
- package/src/lib/http/client.ts +44 -8
- package/src/lib/http/index.ts +6 -1
- package/src/lib/indexer-exclusions.ts +173 -0
- package/src/lib/instructions/apply.ts +1 -0
- package/src/lib/instructions/templates.ts +154 -4
- package/src/lib/local-file-url.ts +31 -0
- package/src/lib/web-performance.ts +335 -0
package/dist/commands/doctor.js
CHANGED
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
* Exits 0 unless a required dep is missing.
|
|
12
12
|
*/
|
|
13
13
|
import { spawnSync } from "node:child_process";
|
|
14
|
-
import { existsSync } from "node:fs";
|
|
14
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
15
15
|
import os from "node:os";
|
|
16
16
|
import path from "node:path";
|
|
17
17
|
import { BUILTIN_ADAPTER_IDS } from "../core/adapters/index.js";
|
|
18
18
|
import { resolveBinName, ripgrepAutoInstall } from "../core/config.js";
|
|
19
|
+
import { countSummarizedSinceV3, listDiagnosticSummariesV3, } from "../core/events/v3/producers/diagnostic-summaries.js";
|
|
19
20
|
import { ADAPTER_SPECS } from "../core/hooks/adapter/events.js";
|
|
20
21
|
import { loadAdapterWiring, summarizeAdapterWiring } from "../core/hooks/adapter/wiring.js";
|
|
21
22
|
import { probeCodexHookAuthorization, } from "../core/hooks/codex-authorization.js";
|
|
@@ -69,8 +70,10 @@ export function registerDoctorCommand(program, emit) {
|
|
|
69
70
|
});
|
|
70
71
|
}
|
|
71
72
|
export async function runChecks() {
|
|
73
|
+
const root = findCoordProjectRoot();
|
|
72
74
|
const codexWslStatus = inspectCodexWslBridge();
|
|
73
|
-
const
|
|
75
|
+
const recentCodexMidFlightCount = root ? countRecentCodexMidFlightOnboardings(root) : 0;
|
|
76
|
+
const codexWslBridge = codexWslBridgeCheck(codexWslStatus, recentCodexMidFlightCount);
|
|
74
77
|
// Probe the adapter CLIs before the hook check runs, not in output order:
|
|
75
78
|
// an unwired adapter only matters if its CLI is actually installed, and
|
|
76
79
|
// probing once here keeps that join to one spawn per CLI.
|
|
@@ -123,18 +126,59 @@ function checkGitHookRegions() {
|
|
|
123
126
|
};
|
|
124
127
|
}
|
|
125
128
|
}
|
|
126
|
-
function
|
|
127
|
-
if (!status)
|
|
129
|
+
export function codexWslBridgeCheck(status, recentMidFlightCount = 0) {
|
|
130
|
+
if (!status && recentMidFlightCount === 0)
|
|
128
131
|
return null;
|
|
132
|
+
const historical = recentMidFlightCount === 0
|
|
133
|
+
? null
|
|
134
|
+
: `${recentMidFlightCount} Codex mid-flight onboarding${recentMidFlightCount === 1 ? "" : "s"} recorded in the last 48h`;
|
|
129
135
|
return {
|
|
130
136
|
name: "codex:WSL bridge",
|
|
131
|
-
severity: status
|
|
132
|
-
detail: status
|
|
133
|
-
hint: status
|
|
137
|
+
severity: status?.ok && !historical ? "ok" : "warn",
|
|
138
|
+
detail: [status?.detail, historical].filter(Boolean).join("; "),
|
|
139
|
+
hint: status?.ok && !historical
|
|
134
140
|
? undefined
|
|
135
141
|
: "forward CODEX_THREAD_ID through WSLENV in the Codex shell environment policy, then start a fresh task",
|
|
136
142
|
};
|
|
137
143
|
}
|
|
144
|
+
const CODEX_MID_FLIGHT_HISTORY_WINDOW_MS = 48 * 60 * 60 * 1000;
|
|
145
|
+
/** Count bounded, privacy-safe recovery diagnostics so a healthy environment
|
|
146
|
+
* now does not hide an intermittent Codex-to-WSL identity drop. */
|
|
147
|
+
export function countRecentCodexMidFlightOnboardings(coordRoot, nowMs = Date.now(), windowMs = CODEX_MID_FLIGHT_HISTORY_WINDOW_MS) {
|
|
148
|
+
// Occurrences past the producer's loose-exemplar bound live in summary
|
|
149
|
+
// files instead of loose diagnostics; count them too so the mitigation
|
|
150
|
+
// cannot hide an active Codex identity drop from this warning.
|
|
151
|
+
let count = 0;
|
|
152
|
+
try {
|
|
153
|
+
const listing = listDiagnosticSummariesV3(coordRoot);
|
|
154
|
+
count += countSummarizedSinceV3(listing.summaries, nowMs - windowMs, (summary) => summary.category === "mid_flight_onboarding" && summary.metadata.adapter === "codex", nowMs);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Summary reads are best-effort; loose diagnostics below still count.
|
|
158
|
+
}
|
|
159
|
+
const directory = path.join(coordRoot, ".harnery", "ledgers", "v3", "diagnostics");
|
|
160
|
+
if (!existsSync(directory))
|
|
161
|
+
return count;
|
|
162
|
+
for (const name of readdirSync(directory)) {
|
|
163
|
+
if (!name.startsWith("mid_flight_onboarding-") || !name.endsWith(".json"))
|
|
164
|
+
continue;
|
|
165
|
+
try {
|
|
166
|
+
const row = JSON.parse(readFileSync(path.join(directory, name), "utf8"));
|
|
167
|
+
const recordedAt = typeof row.recorded_at === "string" ? Date.parse(row.recorded_at) : NaN;
|
|
168
|
+
if (row.category === "mid_flight_onboarding" &&
|
|
169
|
+
row.adapter === "codex" &&
|
|
170
|
+
Number.isFinite(recordedAt) &&
|
|
171
|
+
recordedAt <= nowMs &&
|
|
172
|
+
nowMs - recordedAt <= windowMs) {
|
|
173
|
+
count += 1;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// A malformed best-effort diagnostic cannot make doctor fail.
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return count;
|
|
181
|
+
}
|
|
138
182
|
export function codexAuthorizationCheck(result) {
|
|
139
183
|
const reviewHint = "terminal UI: run `/hooks`; Codex Desktop: open Settings > Hooks; after approval, start a fresh task";
|
|
140
184
|
if (result.status === "runnable") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/commands/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/commands/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAmC1E,uEAAuE;AACvE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CA+CN"}
|
package/dist/commands/events.js
CHANGED
|
@@ -72,6 +72,7 @@ function summarizeByGeneration(turns) {
|
|
|
72
72
|
tool_ms: sumMetrics(group.map(({ tool_ms }) => tool_ms)),
|
|
73
73
|
command_ms: sumMetrics(group.map(({ command_exclusive_ms }) => command_exclusive_ms)),
|
|
74
74
|
wait_ms: sumMetrics(group.map(({ wait_ms }) => wait_ms)),
|
|
75
|
+
agent_action_ms: sumMetrics(group.map(({ response_latency }) => response_latency.agent_action_ms)),
|
|
75
76
|
inference_ms: sumMetrics(group.map(({ inference_ms }) => inference_ms)),
|
|
76
77
|
harness_ms: sumMetrics(group.map(({ harness_ms }) => harness_ms)),
|
|
77
78
|
residual_ms: sumMetrics(group.map(({ residual_ms }) => residual_ms)),
|
|
@@ -129,6 +130,8 @@ function renderTurns(turns) {
|
|
|
129
130
|
"TOOL",
|
|
130
131
|
"COMMAND",
|
|
131
132
|
"WAIT",
|
|
133
|
+
"ACTION",
|
|
134
|
+
"POST-TOOL",
|
|
132
135
|
"INFERENCE",
|
|
133
136
|
"HARNESS",
|
|
134
137
|
"RESIDUAL",
|
|
@@ -140,6 +143,8 @@ function renderTurns(turns) {
|
|
|
140
143
|
formatMetric(turn.tool_ms),
|
|
141
144
|
formatMetric(turn.command_exclusive_ms),
|
|
142
145
|
formatMetric(turn.wait_ms),
|
|
146
|
+
formatMetric(turn.response_latency.agent_action_ms),
|
|
147
|
+
formatMetric(turn.response_latency.post_tool_response_ms),
|
|
143
148
|
formatMetric(turn.inference_ms),
|
|
144
149
|
formatMetric(turn.harness_ms),
|
|
145
150
|
formatMetric(turn.residual_ms),
|
|
@@ -147,13 +152,25 @@ function renderTurns(turns) {
|
|
|
147
152
|
]));
|
|
148
153
|
}
|
|
149
154
|
function renderGenerations(rows) {
|
|
150
|
-
return renderTable([
|
|
155
|
+
return renderTable([
|
|
156
|
+
"GENERATION",
|
|
157
|
+
"TURNS",
|
|
158
|
+
"WALL",
|
|
159
|
+
"TOOL",
|
|
160
|
+
"COMMAND",
|
|
161
|
+
"WAIT",
|
|
162
|
+
"ACTION",
|
|
163
|
+
"INFERENCE",
|
|
164
|
+
"HARNESS",
|
|
165
|
+
"RESIDUAL",
|
|
166
|
+
], rows.map((row) => [
|
|
151
167
|
row.generation_id,
|
|
152
168
|
String(row.turns),
|
|
153
169
|
formatMetric(row.wall_ms),
|
|
154
170
|
formatMetric(row.tool_ms),
|
|
155
171
|
formatMetric(row.command_ms),
|
|
156
172
|
formatMetric(row.wait_ms),
|
|
173
|
+
formatMetric(row.agent_action_ms),
|
|
157
174
|
formatMetric(row.inference_ms),
|
|
158
175
|
formatMetric(row.harness_ms),
|
|
159
176
|
formatMetric(row.residual_ms),
|
package/dist/commands/fetch.js
CHANGED
|
@@ -63,13 +63,14 @@ async function runFetch(url, opts, emit, context) {
|
|
|
63
63
|
redirect: opts.redirect,
|
|
64
64
|
signal: ac.signal,
|
|
65
65
|
extraHeaders: context?.extraHeaders,
|
|
66
|
+
responseType: "bytes",
|
|
66
67
|
});
|
|
67
68
|
}
|
|
68
69
|
finally {
|
|
69
70
|
clearTimeout(timer);
|
|
70
71
|
}
|
|
71
72
|
if (opts.json) {
|
|
72
|
-
emit.data(result);
|
|
73
|
+
emit.data({ ...result, body: new TextDecoder().decode(result.body) });
|
|
73
74
|
return;
|
|
74
75
|
}
|
|
75
76
|
if (opts.status) {
|
|
@@ -83,15 +84,15 @@ async function runFetch(url, opts, emit, context) {
|
|
|
83
84
|
if (opts.output) {
|
|
84
85
|
writeFileSync(opts.output, result.body);
|
|
85
86
|
emit.file(opts.output, {
|
|
86
|
-
bytes: result.body.
|
|
87
|
+
bytes: result.body.byteLength,
|
|
87
88
|
status: result.status,
|
|
88
89
|
status_text: result.statusText,
|
|
89
90
|
});
|
|
90
91
|
}
|
|
91
92
|
else {
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
emit.text(result.body);
|
|
93
|
+
// Text destinations decode at the presentation boundary. File output
|
|
94
|
+
// above keeps the response bytes intact regardless of MIME type.
|
|
95
|
+
emit.text(new TextDecoder().decode(result.body));
|
|
95
96
|
}
|
|
96
97
|
if (jar && result.cookiesSaved > 0) {
|
|
97
98
|
emit.log(`saved ${result.cookiesSaved} cookie${result.cookiesSaved === 1 ? "" : "s"} to ${jar.path}`, "info");
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { EmitContext, HarneryProgramContext } from "../commander.js";
|
|
3
|
+
export { FILES_ORIGIN_HOST } from "../lib/local-file-url.js";
|
|
4
|
+
export type LocalFileUrlMode = "auto" | "raw" | "viewer";
|
|
5
|
+
export interface LocalFileUrlOptions {
|
|
6
|
+
coordRoot: string;
|
|
7
|
+
port: number;
|
|
8
|
+
mode?: LocalFileUrlMode;
|
|
9
|
+
}
|
|
10
|
+
export interface LocalFileUrl {
|
|
11
|
+
url: string;
|
|
12
|
+
relPath: string;
|
|
13
|
+
mode: Exclude<LocalFileUrlMode, "auto">;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Mint the local browser URL for a file under the dashboard's coord root.
|
|
17
|
+
* HTML defaults to the isolated files origin so scripts and relative assets
|
|
18
|
+
* work. Other files default to the dashboard viewer.
|
|
19
|
+
*/
|
|
20
|
+
export declare function mintLocalFileUrl(input: string, options: LocalFileUrlOptions): LocalFileUrl;
|
|
21
|
+
export declare function registerFilesCommand(program: Command, emit: EmitContext, context?: HarneryProgramContext): void;
|
|
22
|
+
//# sourceMappingURL=files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAK1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CACzC;AAuCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAS1F;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CA6DN"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { realpathSync, statSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { resolveCoordRoot } from "../core/agents/coord-client.js";
|
|
4
|
+
import { DEFAULT_WEB_PORT, resolveWebPort } from "../core/config.js";
|
|
5
|
+
import { localFilesOriginUrl, localFileViewerUrl } from "../lib/local-file-url.js";
|
|
6
|
+
export { FILES_ORIGIN_HOST } from "../lib/local-file-url.js";
|
|
7
|
+
function isOutsideRoot(relPath) {
|
|
8
|
+
return relPath === "" || relPath === ".." || relPath.startsWith(`..${path.sep}`);
|
|
9
|
+
}
|
|
10
|
+
function canonicalRepoPath(input, coordRoot) {
|
|
11
|
+
if (input.trim() === "")
|
|
12
|
+
throw new Error("path must not be empty");
|
|
13
|
+
// biome-ignore lint/suspicious/noControlCharactersInRegex: URL output must stay one clean line
|
|
14
|
+
if (/[\u0000-\u001f\u007f]/.test(input))
|
|
15
|
+
throw new Error("path contains control bytes");
|
|
16
|
+
let root;
|
|
17
|
+
try {
|
|
18
|
+
root = realpathSync(coordRoot);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
throw new Error(`coord root does not exist: ${coordRoot}`);
|
|
22
|
+
}
|
|
23
|
+
const candidate = path.isAbsolute(input) ? input : path.resolve(root, input);
|
|
24
|
+
let canonical;
|
|
25
|
+
try {
|
|
26
|
+
canonical = realpathSync(candidate);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
throw new Error(`file does not exist: ${input}`);
|
|
30
|
+
}
|
|
31
|
+
const relPath = path.relative(root, canonical);
|
|
32
|
+
if (isOutsideRoot(relPath) || path.isAbsolute(relPath)) {
|
|
33
|
+
throw new Error(`file is outside the coord root: ${input}`);
|
|
34
|
+
}
|
|
35
|
+
if (!statSync(canonical).isFile())
|
|
36
|
+
throw new Error(`path is not a file: ${input}`);
|
|
37
|
+
return relPath.split(path.sep).join("/");
|
|
38
|
+
}
|
|
39
|
+
function isHtmlPath(relPath) {
|
|
40
|
+
const lower = relPath.toLowerCase();
|
|
41
|
+
return lower.endsWith(".html") || lower.endsWith(".htm");
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Mint the local browser URL for a file under the dashboard's coord root.
|
|
45
|
+
* HTML defaults to the isolated files origin so scripts and relative assets
|
|
46
|
+
* work. Other files default to the dashboard viewer.
|
|
47
|
+
*/
|
|
48
|
+
export function mintLocalFileUrl(input, options) {
|
|
49
|
+
const relPath = canonicalRepoPath(input, options.coordRoot);
|
|
50
|
+
const requestedMode = options.mode ?? "auto";
|
|
51
|
+
const mode = requestedMode === "auto" ? (isHtmlPath(relPath) ? "raw" : "viewer") : requestedMode;
|
|
52
|
+
const url = mode === "raw"
|
|
53
|
+
? localFilesOriginUrl(relPath, options.port)
|
|
54
|
+
: localFileViewerUrl(relPath, options.port);
|
|
55
|
+
return { url, relPath, mode };
|
|
56
|
+
}
|
|
57
|
+
export function registerFilesCommand(program, emit, context) {
|
|
58
|
+
const files = program
|
|
59
|
+
.command("files")
|
|
60
|
+
.description("Mint browser links for files served by the local dashboard");
|
|
61
|
+
files
|
|
62
|
+
.command("url")
|
|
63
|
+
.description("Mint the local browser URL for a repo file")
|
|
64
|
+
.argument("<path>", "Repo-relative path, or an absolute path inside the coord root")
|
|
65
|
+
.option("-p, --port <port>", `Dashboard port (default ${DEFAULT_WEB_PORT})`)
|
|
66
|
+
.option("--coord-root <dir>", "Override the coord root")
|
|
67
|
+
.option("--raw", "Use the isolated files origin, regardless of extension")
|
|
68
|
+
.option("--viewer", "Use the dashboard file viewer, regardless of extension")
|
|
69
|
+
.action((filePath, opts) => {
|
|
70
|
+
if (opts.raw && opts.viewer) {
|
|
71
|
+
emit.error({
|
|
72
|
+
code: "conflicting_url_modes",
|
|
73
|
+
message: "--raw and --viewer cannot be used together",
|
|
74
|
+
});
|
|
75
|
+
emit.setExitCode(1);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const coordRoot = opts.coordRoot ??
|
|
79
|
+
context?.resolveCoordRoot?.() ??
|
|
80
|
+
context?.repoRoot ??
|
|
81
|
+
resolveCoordRoot(process.cwd()) ??
|
|
82
|
+
process.cwd();
|
|
83
|
+
let port;
|
|
84
|
+
try {
|
|
85
|
+
port = resolveWebPort(opts.port, coordRoot);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
emit.error({
|
|
89
|
+
code: "invalid_web_port",
|
|
90
|
+
message: error instanceof Error ? error.message : "invalid web port",
|
|
91
|
+
hint: `Use an integer from 1024 through 65535; the default is ${DEFAULT_WEB_PORT}.`,
|
|
92
|
+
});
|
|
93
|
+
emit.setExitCode(1);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const result = mintLocalFileUrl(filePath, {
|
|
98
|
+
coordRoot,
|
|
99
|
+
port,
|
|
100
|
+
mode: opts.raw ? "raw" : opts.viewer ? "viewer" : "auto",
|
|
101
|
+
});
|
|
102
|
+
emit.text(`${result.url}\n`);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
emit.error({
|
|
106
|
+
code: "invalid_local_file",
|
|
107
|
+
message: error instanceof Error ? error.message : "invalid local file path",
|
|
108
|
+
hint: "Pass an existing file inside the dashboard coord root.",
|
|
109
|
+
});
|
|
110
|
+
emit.setExitCode(1);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
2
|
import { dirname, isAbsolute, resolve } from "node:path";
|
|
3
3
|
import { adapterProofInputs, createBuiltinAdapterRegistry, probeBinaryVersion, readAttestation, } from "../core/adapters/index.js";
|
|
4
|
+
import { resolveCoordRoot } from "../core/agents/coord-client.js";
|
|
4
5
|
import { workflowSubscriptionOnly } from "../core/config.js";
|
|
5
6
|
import { inspectAdapterSpread } from "../core/governor/adapter-spread.js";
|
|
6
|
-
import { approveGovernorPlan, configureGovernorService, createGovernor,
|
|
7
|
-
import {
|
|
7
|
+
import { approveGovernorPlan, configureGovernorService, createGovernor, listGovernorsWithWarnings, readGovernor, readGovernorPlan, readGovernorServiceConfig, readGovernorServiceStatus, rejectGovernorPlan, requestGovernorServiceStop, retryGovernorPlan, runGovernor, runGovernorServiceDaemon, spawnGovernorService, } from "../core/governor/index.js";
|
|
8
|
+
import { readGovernorServiceLogs } from "../core/governor/service-read.js";
|
|
8
9
|
import { loadPolicyFile } from "../core/policy/index.js";
|
|
9
10
|
export function registerGovernorCommand(program, emit) {
|
|
10
11
|
const registry = createBuiltinAdapterRegistry();
|
|
@@ -266,16 +267,17 @@ function registerServiceCommand(governor, registry, emit) {
|
|
|
266
267
|
const lines = integer(opts.lines) ?? 50;
|
|
267
268
|
if (lines > 10_000)
|
|
268
269
|
throw new Error("service log lines must not exceed 10000");
|
|
269
|
-
const
|
|
270
|
-
|
|
270
|
+
const result = readGovernorServiceLogs(coordRoot, {
|
|
271
|
+
max_bytes: 512 * 1024,
|
|
272
|
+
max_records: 10_000,
|
|
273
|
+
});
|
|
274
|
+
if (result.lines.length === 0) {
|
|
271
275
|
emit.text("no governor service log\n");
|
|
272
276
|
return;
|
|
273
277
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
.
|
|
277
|
-
.join("\n");
|
|
278
|
-
emit.text(selected.endsWith("\n") ? selected : `${selected}\n`);
|
|
278
|
+
emit.text(`${result.lines.slice(-lines).join("\n")}\n`);
|
|
279
|
+
if (result.truncated)
|
|
280
|
+
emit.log("governor service log read stopped at its bounded budget", "warn");
|
|
279
281
|
});
|
|
280
282
|
});
|
|
281
283
|
service
|
|
@@ -706,7 +708,7 @@ function delay(ms) {
|
|
|
706
708
|
return new Promise((resolveDelay) => setTimeout(resolveDelay, ms));
|
|
707
709
|
}
|
|
708
710
|
function withGovernorRoot(emit, fn) {
|
|
709
|
-
const coordRoot =
|
|
711
|
+
const coordRoot = resolveCoordRoot();
|
|
710
712
|
if (!coordRoot) {
|
|
711
713
|
emit.error({
|
|
712
714
|
code: "no_coord_root",
|
|
@@ -724,7 +726,7 @@ function withGovernorRoot(emit, fn) {
|
|
|
724
726
|
}
|
|
725
727
|
}
|
|
726
728
|
async function withGovernorRootAsync(emit, fn) {
|
|
727
|
-
const coordRoot =
|
|
729
|
+
const coordRoot = resolveCoordRoot();
|
|
728
730
|
if (!coordRoot) {
|
|
729
731
|
emit.error({
|
|
730
732
|
code: "no_coord_root",
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { EmitContext } from "../commander.js";
|
|
3
|
+
import type { HarneryInboxService } from "../core/inbox/service.js";
|
|
4
|
+
export declare function registerInboxCommand(program: Command, emit: EmitContext, service?: HarneryInboxService): void;
|
|
5
|
+
//# sourceMappingURL=inbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI,CAmCN"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export function registerInboxCommand(program, emit, service) {
|
|
2
|
+
const inbox = program.command("inbox").description("Inspect private coordination inbox state");
|
|
3
|
+
inbox
|
|
4
|
+
.command("list <recipient>")
|
|
5
|
+
.option("--json", "Emit stable JSON")
|
|
6
|
+
.action((recipient, options) => {
|
|
7
|
+
run(emit, () => {
|
|
8
|
+
const rows = requireInboxService(service)
|
|
9
|
+
.pending(recipient)
|
|
10
|
+
.map((record) => ({
|
|
11
|
+
message_id: record.message_id,
|
|
12
|
+
sender_instance_id: record.sender_instance_id,
|
|
13
|
+
sender_display_name: record.sender_display_name,
|
|
14
|
+
created_at: record.created_at,
|
|
15
|
+
body_bytes: record.body_bytes,
|
|
16
|
+
body: record.body,
|
|
17
|
+
}));
|
|
18
|
+
if (options.json) {
|
|
19
|
+
emit.config({ format: "json" });
|
|
20
|
+
emit.data({ schema: "harnery.inbox-list/v1", recipient_instance_id: recipient, rows });
|
|
21
|
+
}
|
|
22
|
+
else
|
|
23
|
+
emit.rows(rows);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
inbox
|
|
27
|
+
.command("status <recipient>")
|
|
28
|
+
.option("--json", "Emit stable JSON")
|
|
29
|
+
.action((recipient, options) => {
|
|
30
|
+
run(emit, () => {
|
|
31
|
+
const status = requireInboxService(service).status(recipient);
|
|
32
|
+
if (options.json) {
|
|
33
|
+
emit.config({ format: "json" });
|
|
34
|
+
emit.data(status);
|
|
35
|
+
}
|
|
36
|
+
else
|
|
37
|
+
emit.rows([status]);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function requireInboxService(service) {
|
|
42
|
+
if (!service)
|
|
43
|
+
throw new Error("coordination inbox is not configured by this host");
|
|
44
|
+
return service;
|
|
45
|
+
}
|
|
46
|
+
function run(emit, action) {
|
|
47
|
+
try {
|
|
48
|
+
action();
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
emit.error({
|
|
52
|
+
code: "inbox_failed",
|
|
53
|
+
message: error instanceof Error ? error.message : String(error),
|
|
54
|
+
});
|
|
55
|
+
emit.setExitCode(1);
|
|
56
|
+
}
|
|
57
|
+
}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -22,12 +22,11 @@ import { type AdapterId, type AdapterSpec } from "../core/hooks/adapter/events.j
|
|
|
22
22
|
import { type SettingsFile } from "../core/hooks/adapter/wiring.js";
|
|
23
23
|
export declare function registerInitCommand(program: Command, emit: EmitContext, binName?: string): void;
|
|
24
24
|
/**
|
|
25
|
-
* Runtime
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* hooks fail closed against stale approvals.
|
|
25
|
+
* Runtime contracts bound into an immutable V3 epoch. `init` replaces the
|
|
26
|
+
* epoch only when the schema or adapter capability contract changed. A new
|
|
27
|
+
* Harnery build alone keeps the current epoch and its live session generations.
|
|
29
28
|
*/
|
|
30
|
-
export declare function eventLedgerV3RuntimeIssues(control: EventV3ControlState
|
|
29
|
+
export declare function eventLedgerV3RuntimeIssues(control: EventV3ControlState): string[];
|
|
31
30
|
export declare function codexHookReviewAction(adapter: AdapterId): string | null;
|
|
32
31
|
/**
|
|
33
32
|
* Merge agent-hook entries into a adapter settings object in place, idempotently.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAOxE,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAClG,OAAO,EASL,KAAK,YAAY,EAClB,MAAM,iCAAiC,CAAC;AAqBzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAgT/F;AAiBD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAiBjF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAOvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,WAAW,EACjB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,SAAS,GACjB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA8CvE;AAwFD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAa1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAmDhG;AASD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkCxF"}
|
package/dist/commands/init.js
CHANGED
|
@@ -25,9 +25,9 @@ import { canonicalJsonV3 } from "../core/events/v3/canonical.js";
|
|
|
25
25
|
import { ADAPTER_CAPABILITY_PROFILES_V3 } from "../core/events/v3/capabilities.js";
|
|
26
26
|
import { EVENT_V3_SCHEMA_DIGEST } from "../core/events/v3/generated.js";
|
|
27
27
|
import { initializeEventLedgerV3, readEventV3ControlState, sha256V3, } from "../core/events/v3/index.js";
|
|
28
|
-
import { liveEventV3BuildId } from "../core/events/v3/live-routing.js";
|
|
29
28
|
import { ADAPTER_SPECS } from "../core/hooks/adapter/events.js";
|
|
30
29
|
import { agentHookPathForProject, commandWiresSubcommand, diffWiring, groupCommands, hookCommand, isAgentHookCommand, makeEntry, } from "../core/hooks/adapter/wiring.js";
|
|
30
|
+
import { applyIndexerExclusions } from "../lib/indexer-exclusions.js";
|
|
31
31
|
import { applyInstructions, checkInstructions, } from "../lib/instructions/apply.js";
|
|
32
32
|
import { applyGitHooks, checkGitHooks } from "../lib/instructions/git-hooks.js";
|
|
33
33
|
import { HostAddendumError } from "../lib/instructions/host-addendum.js";
|
|
@@ -42,7 +42,8 @@ export function registerInitCommand(program, emit, binName) {
|
|
|
42
42
|
"report drift without writing (exit 0 fresh / 2 drift / 1 error).")
|
|
43
43
|
.option("--adapter <id>", "claude-code | cursor | codex", "claude-code")
|
|
44
44
|
.option("--dry-run", "Show what would change without writing")
|
|
45
|
-
.option("--check", "Report
|
|
45
|
+
.option("--check", "Report managed-surface drift without writing; exit 0/2/1")
|
|
46
|
+
.option("--instructions-only", "Refresh only AGENTS.md regions and Harnery-owned skills; leave runtime wiring untouched")
|
|
46
47
|
.option("--project-root <path>", "Project root (default: git toplevel, else cwd)")
|
|
47
48
|
.action((opts) => {
|
|
48
49
|
const adapter = opts.adapter;
|
|
@@ -59,6 +60,41 @@ export function registerInitCommand(program, emit, binName) {
|
|
|
59
60
|
// init inside any checkout). Without this, re-running init from a host
|
|
60
61
|
// CLI re-stamps the host's name into committed agent-facing surfaces.
|
|
61
62
|
const bin = pinnedBinName(projectRoot) ?? (binName?.trim() ? binName : DEFAULT_BIN_NAME);
|
|
63
|
+
// ── --instructions-only: committed guidance, never runtime wiring ────
|
|
64
|
+
// Some hosts consume Harnery's managed instruction bundle without
|
|
65
|
+
// enabling local adapter hooks or an event ledger. Keep this branch
|
|
66
|
+
// before every coord-root, config, ledger, adapter-settings, and Git-hook
|
|
67
|
+
// operation so its no-runtime-writes contract is structural.
|
|
68
|
+
if (opts.instructionsOnly === true) {
|
|
69
|
+
if (opts.check === true) {
|
|
70
|
+
const { status, issues } = checkInstructions(projectRoot, { binName: bin, adapter });
|
|
71
|
+
const head = status === "fresh"
|
|
72
|
+
? `${bin} init --instructions-only --check: instructions + skills are current`
|
|
73
|
+
: status === "drift"
|
|
74
|
+
? `${bin} init --instructions-only --check: drift found (re-run \`init --instructions-only\` to refresh)`
|
|
75
|
+
: `${bin} init --instructions-only --check: error`;
|
|
76
|
+
const lines = issues.length
|
|
77
|
+
? `\n${issues.map((issue) => ` ✗ ${issue}`).join("\n")}`
|
|
78
|
+
: "";
|
|
79
|
+
emit.text(`${head}${lines}`);
|
|
80
|
+
emit.setExitCode(status === "fresh" ? 0 : status === "drift" ? 2 : 1);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const dryRun = opts.dryRun === true;
|
|
84
|
+
let applied;
|
|
85
|
+
try {
|
|
86
|
+
applied = applyInstructions(projectRoot, { binName: bin, adapter, dryRun });
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
if (!(err instanceof HostAddendumError))
|
|
90
|
+
throw err;
|
|
91
|
+
emit.text(`${bin} init --instructions-only: ${err.message}`);
|
|
92
|
+
emit.setExitCode(1);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
emit.text(renderInstructionsOnly(projectRoot, bin, dryRun, applied.actions, applied.warnings));
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
62
98
|
// ── --check: read-only drift report on every init-managed surface ─────
|
|
63
99
|
if (opts.check === true) {
|
|
64
100
|
const { status, issues } = checkInstructions(projectRoot, { binName: bin, adapter });
|
|
@@ -115,7 +151,7 @@ export function registerInitCommand(program, emit, binName) {
|
|
|
115
151
|
const ledger = readEventV3ControlState(projectRoot);
|
|
116
152
|
if (ledger.state !== "active")
|
|
117
153
|
issues.push(`event ledger V3 is ${ledger.state}`);
|
|
118
|
-
const ledgerRuntimeIssues = eventLedgerV3RuntimeIssues(ledger
|
|
154
|
+
const ledgerRuntimeIssues = eventLedgerV3RuntimeIssues(ledger);
|
|
119
155
|
if (ledgerRuntimeIssues.length > 0) {
|
|
120
156
|
issues.push(`event ledger V3 is runtime-stale (${ledgerRuntimeIssues.join(", ")})`);
|
|
121
157
|
}
|
|
@@ -153,6 +189,12 @@ export function registerInitCommand(program, emit, binName) {
|
|
|
153
189
|
writeFileSync(resolve(coordDir, ".gitignore"), "*\n!.gitignore\n");
|
|
154
190
|
actions.push("+ created .harnery/ (+ .harnery/.gitignore)");
|
|
155
191
|
}
|
|
192
|
+
// ── 1a′. editor indexer exclusions ─────────────────────────────────────
|
|
193
|
+
// .harnery/.gitignore keeps git-aware tools out, but Cursor's codebase
|
|
194
|
+
// indexer and the VS Code/Cursor file watcher do not respect gitignore.
|
|
195
|
+
// A busy coord root holds enough ledger events and artifacts to become a
|
|
196
|
+
// boot-time indexing storm, so exclude it from both here.
|
|
197
|
+
actions.push(...applyIndexerExclusions(projectRoot, dryRun));
|
|
156
198
|
// ── 1b. stamp the host bin name ────────────────────────────────────────
|
|
157
199
|
// The coord binaries (agent-hook/agent-coord) and web UI run as harnery
|
|
158
200
|
// itself, so they can't see a consumer CLI's name; they read it back from
|
|
@@ -179,7 +221,7 @@ export function registerInitCommand(program, emit, binName) {
|
|
|
179
221
|
// ── 1d. universal V3 event ledger ────────────────────────────────────
|
|
180
222
|
if (dryRun) {
|
|
181
223
|
const ledger = readEventV3ControlState(projectRoot);
|
|
182
|
-
const runtimeIssues = eventLedgerV3RuntimeIssues(ledger
|
|
224
|
+
const runtimeIssues = eventLedgerV3RuntimeIssues(ledger);
|
|
183
225
|
actions.push(ledger.state === "active" && runtimeIssues.length === 0
|
|
184
226
|
? "· event ledger V3 is active"
|
|
185
227
|
: ledger.state === "active"
|
|
@@ -189,7 +231,7 @@ export function registerInitCommand(program, emit, binName) {
|
|
|
189
231
|
else {
|
|
190
232
|
const harneryBuild = gitBuild(HARNERY_ROOT);
|
|
191
233
|
const ledgerBefore = readEventV3ControlState(projectRoot);
|
|
192
|
-
const runtimeIssues = eventLedgerV3RuntimeIssues(ledgerBefore
|
|
234
|
+
const runtimeIssues = eventLedgerV3RuntimeIssues(ledgerBefore);
|
|
193
235
|
const initialized = initializeEventLedgerV3({
|
|
194
236
|
coordRoot: projectRoot,
|
|
195
237
|
harneryBuild,
|
|
@@ -278,12 +320,11 @@ function digestConfig(path) {
|
|
|
278
320
|
return sha256V3(existsSync(path) ? readFileSync(path) : Buffer.from("{}\n"));
|
|
279
321
|
}
|
|
280
322
|
/**
|
|
281
|
-
* Runtime
|
|
282
|
-
*
|
|
283
|
-
*
|
|
284
|
-
* hooks fail closed against stale approvals.
|
|
323
|
+
* Runtime contracts bound into an immutable V3 epoch. `init` replaces the
|
|
324
|
+
* epoch only when the schema or adapter capability contract changed. A new
|
|
325
|
+
* Harnery build alone keeps the current epoch and its live session generations.
|
|
285
326
|
*/
|
|
286
|
-
export function eventLedgerV3RuntimeIssues(control
|
|
327
|
+
export function eventLedgerV3RuntimeIssues(control) {
|
|
287
328
|
if (control.state !== "active")
|
|
288
329
|
return [];
|
|
289
330
|
const issues = [];
|
|
@@ -292,9 +333,6 @@ export function eventLedgerV3RuntimeIssues(control, harneryBuild) {
|
|
|
292
333
|
issues.push("schema digest");
|
|
293
334
|
if (profile.contract_source_digest !== EVENT_V3_SCHEMA_DIGEST)
|
|
294
335
|
issues.push("contract digest");
|
|
295
|
-
if (!profile.producer_build_ids.includes(liveEventV3BuildId(harneryBuild))) {
|
|
296
|
-
issues.push("producer build");
|
|
297
|
-
}
|
|
298
336
|
const expectedCapabilities = Object.values(ADAPTER_CAPABILITY_PROFILES_V3).map((value) => sha256V3(canonicalJsonV3(value)));
|
|
299
337
|
if (expectedCapabilities.some((digest) => !profile.adapter_capability_profile_digests.includes(digest))) {
|
|
300
338
|
issues.push("adapter capabilities");
|
|
@@ -623,6 +661,18 @@ function render(projectRoot, dryRun, actions, warnings = []) {
|
|
|
623
661
|
: "\nDone. Start a session and check `harn agents whoami`.";
|
|
624
662
|
return `${head}\n root: ${projectRoot}\n${actions.map((a) => ` ${a}`).join("\n")}${warnBlock}${tail}`;
|
|
625
663
|
}
|
|
664
|
+
function renderInstructionsOnly(projectRoot, binName, dryRun, actions, warnings = []) {
|
|
665
|
+
const head = dryRun
|
|
666
|
+
? `${binName} init --instructions-only (dry run): no changes written`
|
|
667
|
+
: `${binName} init --instructions-only`;
|
|
668
|
+
const warnBlock = warnings.length
|
|
669
|
+
? `\n${warnings.map((warning) => ` ! ${warning}`).join("\n")}`
|
|
670
|
+
: "";
|
|
671
|
+
const tail = dryRun
|
|
672
|
+
? "\nRe-run without --dry-run to apply."
|
|
673
|
+
: "\nDone. Adapter hooks, managed Git hooks, configuration, and event ledger state were left unchanged.";
|
|
674
|
+
return `${head}\n root: ${projectRoot}\n${actions.map((action) => ` ${action}`).join("\n")}${warnBlock}${tail}`;
|
|
675
|
+
}
|
|
626
676
|
function gitTopLevel() {
|
|
627
677
|
const r = spawnSync("git", ["rev-parse", "--show-toplevel"], { encoding: "utf8" });
|
|
628
678
|
const out = r.status === 0 ? r.stdout.trim() : "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-v3.d.ts","sourceRoot":"","sources":["../../src/commands/ledger-v3.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ledger-v3.d.ts","sourceRoot":"","sources":["../../src/commands/ledger-v3.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAmC1E,2DAA2D;AAC3D,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAsWN"}
|