harnery 0.35.0 → 0.37.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 +128 -96
- package/dist/commands/agents.d.ts +23 -3
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +464 -242
- package/dist/commands/artifacts.d.ts.map +1 -1
- package/dist/commands/artifacts.js +26 -1
- 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 +16 -4
- 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/deinit.d.ts.map +1 -1
- package/dist/commands/deinit.js +5 -0
- package/dist/commands/diagnostics.d.ts +4 -0
- package/dist/commands/diagnostics.d.ts.map +1 -0
- package/dist/commands/diagnostics.js +229 -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/fetch.js +6 -5
- package/dist/commands/files.d.ts +34 -0
- package/dist/commands/files.d.ts.map +1 -0
- package/dist/commands/files.js +166 -0
- package/dist/commands/governor.d.ts.map +1 -1
- package/dist/commands/governor.js +18 -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 +417 -2
- 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/qa-run.d.ts +4 -0
- package/dist/commands/qa-run.d.ts.map +1 -0
- package/dist/commands/qa-run.js +141 -0
- 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/resources.d.ts +4 -0
- package/dist/commands/resources.d.ts.map +1 -0
- package/dist/commands/resources.js +29 -0
- package/dist/commands/semantic.d.ts.map +1 -1
- package/dist/commands/semantic.js +54 -2
- 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/supervisor.d.ts +4 -0
- package/dist/commands/supervisor.d.ts.map +1 -0
- package/dist/commands/supervisor.js +101 -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.d.ts.map +1 -1
- package/dist/commands/workflow.js +17 -13
- package/dist/core/adapters/profiles.d.ts +1 -1
- package/dist/core/agents/cli.js +215 -41
- package/dist/core/agents/health.d.ts +17 -0
- package/dist/core/agents/health.d.ts.map +1 -0
- package/dist/core/agents/health.js +109 -0
- 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 +244 -10
- package/dist/core/agents/live-lifecycle-v3.js +6 -1
- package/dist/core/agents/live-observation-v3.d.ts.map +1 -1
- package/dist/core/agents/live-observation-v3.js +6 -1
- package/dist/core/agents/mailbox.d.ts +92 -0
- package/dist/core/agents/mailbox.d.ts.map +1 -0
- package/dist/core/agents/mailbox.js +325 -0
- package/dist/core/agents/reconcile-coordination-v3.d.ts +44 -0
- package/dist/core/agents/reconcile-coordination-v3.d.ts.map +1 -0
- package/dist/core/agents/reconcile-coordination-v3.js +58 -0
- package/dist/core/agents/render/prompt-context.d.ts +14 -3
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +54 -16
- package/dist/core/agents/render/session-context.d.ts +8 -0
- package/dist/core/agents/render/session-context.d.ts.map +1 -1
- package/dist/core/agents/render/session-context.js +34 -3
- package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
- package/dist/core/agents/rules/commit-conflict.js +50 -1
- 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 +93 -16
- 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 +9 -2
- 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-writer.d.ts +6 -0
- package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +18 -0
- package/dist/core/agents/state/live-coordination-view.d.ts +5 -7
- package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-view.js +15 -90
- 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/artifacts/index.d.ts +47 -1
- package/dist/core/artifacts/index.d.ts.map +1 -1
- package/dist/core/artifacts/index.js +191 -6
- package/dist/core/config.d.ts +74 -4
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +141 -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/diagnostics/advice.d.ts +9 -0
- package/dist/core/diagnostics/advice.d.ts.map +1 -0
- package/dist/core/diagnostics/advice.js +112 -0
- package/dist/core/diagnostics/bundle.d.ts +35 -0
- package/dist/core/diagnostics/bundle.d.ts.map +1 -0
- package/dist/core/diagnostics/bundle.js +874 -0
- package/dist/core/diagnostics/comparison.d.ts +5 -0
- package/dist/core/diagnostics/comparison.d.ts.map +1 -0
- package/dist/core/diagnostics/comparison.js +444 -0
- package/dist/core/diagnostics/contract.d.ts +245 -0
- package/dist/core/diagnostics/contract.d.ts.map +1 -0
- package/dist/core/diagnostics/contract.js +18 -0
- package/dist/core/diagnostics/identity.d.ts +3 -0
- package/dist/core/diagnostics/identity.d.ts.map +1 -0
- package/dist/core/diagnostics/identity.js +10 -0
- package/dist/core/diagnostics/index.d.ts +8 -0
- package/dist/core/diagnostics/index.d.ts.map +1 -0
- package/dist/core/diagnostics/index.js +7 -0
- package/dist/core/diagnostics/replay.d.ts +8 -0
- package/dist/core/diagnostics/replay.d.ts.map +1 -0
- package/dist/core/diagnostics/replay.js +213 -0
- package/dist/core/diagnostics/sanitize.d.ts +9 -0
- package/dist/core/diagnostics/sanitize.d.ts.map +1 -0
- package/dist/core/diagnostics/sanitize.js +84 -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/compression.d.ts +13 -0
- package/dist/core/events/legacy-storage/compression.d.ts.map +1 -0
- package/dist/core/events/legacy-storage/compression.js +107 -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 +7 -0
- package/dist/core/events/legacy-storage/index.d.ts.map +1 -0
- package/dist/core/events/legacy-storage/index.js +6 -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/archive-retention.d.ts +33 -0
- package/dist/core/events/v3/archive-retention.d.ts.map +1 -0
- package/dist/core/events/v3/archive-retention.js +195 -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 +81 -41
- package/dist/core/events/v3/base-contract.d.ts.map +1 -1
- package/dist/core/events/v3/base-contract.js +17 -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 +1 -1
- package/dist/core/events/v3/capabilities.d.ts.map +1 -1
- package/dist/core/events/v3/capabilities.js +4 -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 +5 -2
- package/dist/core/events/v3/index.d.ts.map +1 -1
- package/dist/core/events/v3/index.js +4 -1
- 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 +13 -21
- package/dist/core/events/v3/live-routing.d.ts.map +1 -1
- package/dist/core/events/v3/live-routing.js +46 -41
- 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 +76 -10
- 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 +1 -1
- package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -1
- package/dist/core/events/v3/producers/hook-base.js +14 -3
- package/dist/core/events/v3/producers/intake.d.ts +7 -0
- package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
- package/dist/core/events/v3/producers/intake.js +26 -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 +71 -1
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/recorder.js +441 -25
- 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 +6 -5
- package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts.map +1 -1
- package/dist/core/events/v3/runtime-telemetry-capabilities.js +1 -1
- 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 +14 -8
- 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 +12 -2
- package/dist/core/hooks/adapter/output.d.ts.map +1 -1
- package/dist/core/hooks/adapter/output.js +23 -5
- package/dist/core/hooks/adapter/runtime-telemetry.d.ts +27 -4
- package/dist/core/hooks/adapter/runtime-telemetry.d.ts.map +1 -1
- package/dist/core/hooks/adapter/runtime-telemetry.js +307 -6
- package/dist/core/hooks/cli.js +380 -207
- 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/health.d.ts +59 -0
- package/dist/core/hooks/health.d.ts.map +1 -0
- package/dist/core/hooks/health.js +84 -0
- package/dist/core/hooks/remediation-cap.d.ts +8 -3
- package/dist/core/hooks/remediation-cap.d.ts.map +1 -1
- package/dist/core/hooks/remediation-cap.js +3 -11
- 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 +8 -0
- package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
- package/dist/core/hooks/resolve/transcript.js +11 -0
- 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/resources/contract.d.ts +90 -0
- package/dist/core/resources/contract.d.ts.map +1 -0
- package/dist/core/resources/contract.js +2 -0
- package/dist/core/resources/index.d.ts +6 -0
- package/dist/core/resources/index.d.ts.map +1 -0
- package/dist/core/resources/index.js +5 -0
- package/dist/core/resources/sampler.d.ts +27 -0
- package/dist/core/resources/sampler.d.ts.map +1 -0
- package/dist/core/resources/sampler.js +357 -0
- package/dist/core/resources/service-status.d.ts +3 -0
- package/dist/core/resources/service-status.d.ts.map +1 -0
- package/dist/core/resources/service-status.js +48 -0
- package/dist/core/resources/service.d.ts +26 -0
- package/dist/core/resources/service.d.ts.map +1 -0
- package/dist/core/resources/service.js +292 -0
- package/dist/core/resources/storage.d.ts +13 -0
- package/dist/core/resources/storage.d.ts.map +1 -0
- package/dist/core/resources/storage.js +30 -0
- package/dist/core/semantic/adapters.d.ts +11 -8
- package/dist/core/semantic/adapters.d.ts.map +1 -1
- package/dist/core/semantic/adapters.js +169 -31
- package/dist/core/semantic/contract.d.ts +532 -48
- package/dist/core/semantic/contract.d.ts.map +1 -1
- package/dist/core/semantic/contract.js +104 -3
- package/dist/core/semantic/index.d.ts +7 -3
- package/dist/core/semantic/index.d.ts.map +1 -1
- package/dist/core/semantic/index.js +7 -3
- package/dist/core/semantic/once.d.ts +6 -1
- package/dist/core/semantic/once.d.ts.map +1 -1
- package/dist/core/semantic/once.js +80 -9
- package/dist/core/semantic/prompt.d.ts.map +1 -1
- package/dist/core/semantic/prompt.js +14 -1
- 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 +14 -3
- package/dist/core/semantic/scheduler.d.ts.map +1 -1
- package/dist/core/semantic/scheduler.js +30 -6
- package/dist/core/semantic/service-status.d.ts +20 -0
- package/dist/core/semantic/service-status.d.ts.map +1 -1
- package/dist/core/semantic/service-status.js +60 -4
- package/dist/core/semantic/service.d.ts +1 -0
- package/dist/core/semantic/service.d.ts.map +1 -1
- package/dist/core/semantic/service.js +104 -15
- 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 +11 -1
- package/dist/core/semantic/storage.d.ts.map +1 -1
- package/dist/core/semantic/storage.js +4 -3
- 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 +3 -1
- package/dist/core/semantic/validate.d.ts.map +1 -1
- package/dist/core/semantic/validate.js +34 -1
- package/dist/core/storage/atomic-json.d.ts +3 -0
- package/dist/core/storage/atomic-json.d.ts.map +1 -0
- package/dist/core/storage/atomic-json.js +15 -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 +722 -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 +84 -0
- package/dist/core/storage/logger.d.ts.map +1 -0
- package/dist/core/storage/logger.js +413 -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 +48 -0
- package/dist/core/storage/query.d.ts.map +1 -0
- package/dist/core/storage/query.js +346 -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/supervisor/activity.d.ts +4 -0
- package/dist/core/supervisor/activity.d.ts.map +1 -0
- package/dist/core/supervisor/activity.js +141 -0
- package/dist/core/supervisor/contract.d.ts +268 -0
- package/dist/core/supervisor/contract.d.ts.map +1 -0
- package/dist/core/supervisor/contract.js +35 -0
- package/dist/core/supervisor/explanations.d.ts +4 -0
- package/dist/core/supervisor/explanations.d.ts.map +1 -0
- package/dist/core/supervisor/explanations.js +71 -0
- package/dist/core/supervisor/findings.d.ts +20 -0
- package/dist/core/supervisor/findings.d.ts.map +1 -0
- package/dist/core/supervisor/findings.js +399 -0
- package/dist/core/supervisor/history.d.ts +9 -0
- package/dist/core/supervisor/history.d.ts.map +1 -0
- package/dist/core/supervisor/history.js +46 -0
- package/dist/core/supervisor/hook-health-alerts.d.ts +14 -0
- package/dist/core/supervisor/hook-health-alerts.d.ts.map +1 -0
- package/dist/core/supervisor/hook-health-alerts.js +70 -0
- package/dist/core/supervisor/hook-health-storage.d.ts +5 -0
- package/dist/core/supervisor/hook-health-storage.d.ts.map +1 -0
- package/dist/core/supervisor/hook-health-storage.js +24 -0
- package/dist/core/supervisor/hook-health.d.ts +72 -0
- package/dist/core/supervisor/hook-health.d.ts.map +1 -0
- package/dist/core/supervisor/hook-health.js +203 -0
- package/dist/core/supervisor/hooks.d.ts +10 -0
- package/dist/core/supervisor/hooks.d.ts.map +1 -0
- package/dist/core/supervisor/hooks.js +28 -0
- package/dist/core/supervisor/index.d.ts +15 -0
- package/dist/core/supervisor/index.d.ts.map +1 -0
- package/dist/core/supervisor/index.js +14 -0
- package/dist/core/supervisor/log-feed.d.ts +9 -0
- package/dist/core/supervisor/log-feed.d.ts.map +1 -0
- package/dist/core/supervisor/log-feed.js +103 -0
- package/dist/core/supervisor/service.d.ts +29 -0
- package/dist/core/supervisor/service.d.ts.map +1 -0
- package/dist/core/supervisor/service.js +450 -0
- package/dist/core/supervisor/services.d.ts +11 -0
- package/dist/core/supervisor/services.d.ts.map +1 -0
- package/dist/core/supervisor/services.js +155 -0
- package/dist/core/supervisor/status.d.ts +3 -0
- package/dist/core/supervisor/status.d.ts.map +1 -0
- package/dist/core/supervisor/status.js +48 -0
- package/dist/core/supervisor/storage.d.ts +30 -0
- package/dist/core/supervisor/storage.d.ts.map +1 -0
- package/dist/core/supervisor/storage.js +73 -0
- package/dist/core/supervisor/timeline.d.ts +3 -0
- package/dist/core/supervisor/timeline.d.ts.map +1 -0
- package/dist/core/supervisor/timeline.js +87 -0
- package/dist/core/work/state.d.ts.map +1 -1
- package/dist/core/work/state.js +10 -14
- package/dist/core/workflow/admission.d.ts +23 -0
- package/dist/core/workflow/admission.d.ts.map +1 -0
- package/dist/core/workflow/admission.js +136 -0
- package/dist/core/workflow/engine.d.ts.map +1 -1
- package/dist/core/workflow/engine.js +77 -2
- package/dist/core/workflow/index.d.ts +3 -2
- package/dist/core/workflow/index.d.ts.map +1 -1
- package/dist/core/workflow/index.js +2 -1
- package/dist/core/workflow/live-session-v3.d.ts.map +1 -1
- package/dist/core/workflow/live-session-v3.js +2 -1
- package/dist/core/workflow/proof.d.ts +2 -1
- package/dist/core/workflow/proof.d.ts.map +1 -1
- package/dist/core/workflow/proof.js +39 -1
- package/dist/core/workflow/run-state.d.ts +3 -2
- package/dist/core/workflow/run-state.d.ts.map +1 -1
- package/dist/core/workflow/run-state.js +8 -1
- package/dist/core/workflow/types.d.ts +33 -1
- package/dist/core/workflow/types.d.ts.map +1 -1
- package/dist/core/workflow/types.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 +5 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +1 -0
- package/dist/lib/browser/index.d.ts +2 -0
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +2 -0
- package/dist/lib/browser/qa-run-contracts.d.ts +173 -0
- package/dist/lib/browser/qa-run-contracts.d.ts.map +1 -0
- package/dist/lib/browser/qa-run-contracts.js +226 -0
- package/dist/lib/browser/qa-run.d.ts +51 -0
- package/dist/lib/browser/qa-run.d.ts.map +1 -0
- package/dist/lib/browser/qa-run.js +684 -0
- package/dist/lib/coord-root-id.d.ts +9 -0
- package/dist/lib/coord-root-id.d.ts.map +1 -0
- package/dist/lib/coord-root-id.js +17 -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 +3 -1
- package/dist/lib/instructions/apply.d.ts.map +1 -1
- package/dist/lib/instructions/apply.js +74 -3
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +11 -0
- 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 +40 -2
- package/schemas/config.schema.json +58 -0
- package/schemas/event-v3.schema.json +324 -112
- package/src/commander.ts +488 -95
- package/src/commands/agents.ts +617 -237
- package/src/commands/artifacts.ts +40 -2
- package/src/commands/backup.ts +18 -14
- package/src/commands/browse-session.ts +12 -0
- package/src/commands/browse.ts +21 -7
- package/src/commands/conversations.ts +279 -0
- package/src/commands/deinit.ts +6 -0
- package/src/commands/diagnostics.ts +271 -0
- package/src/commands/docs.ts +25 -6
- package/src/commands/doctor.ts +75 -9
- package/src/commands/fetch.ts +7 -6
- package/src/commands/files.ts +243 -0
- package/src/commands/governor.ts +21 -12
- package/src/commands/inbox.ts +61 -0
- package/src/commands/init.ts +78 -16
- package/src/commands/ledger-v3.ts +503 -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/qa-run.ts +184 -0
- package/src/commands/read.ts +6 -2
- package/src/commands/resources.ts +38 -0
- package/src/commands/semantic.ts +66 -1
- package/src/commands/storage.ts +310 -0
- package/src/commands/supervisor.ts +141 -0
- package/src/commands/tunnel.ts +66 -52
- package/src/commands/web.ts +96 -7
- package/src/commands/work.ts +3 -3
- package/src/commands/workflow.ts +21 -13
- package/src/core/agents/cli.ts +265 -55
- package/src/core/agents/health.ts +142 -0
- package/src/core/agents/live-authority-v3.ts +341 -10
- package/src/core/agents/live-lifecycle-v3.ts +6 -1
- package/src/core/agents/live-observation-v3.ts +6 -1
- package/src/core/agents/mailbox.ts +373 -0
- package/src/core/agents/reconcile-coordination-v3.ts +77 -0
- package/src/core/agents/render/prompt-context.ts +66 -15
- package/src/core/agents/render/session-context.ts +37 -3
- package/src/core/agents/rules/commit-conflict.ts +58 -1
- package/src/core/agents/rules/stop-hook.ts +105 -20
- 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 +8 -2
- package/src/core/agents/state/activity-log.ts +7 -2
- package/src/core/agents/state/heartbeat-writer.ts +27 -0
- package/src/core/agents/state/live-coordination-view.ts +16 -105
- package/src/core/agents/state/live-coordination-writer.ts +141 -0
- package/src/core/artifacts/index.ts +260 -11
- package/src/core/config.ts +235 -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/diagnostics/advice.ts +147 -0
- package/src/core/diagnostics/bundle.ts +1142 -0
- package/src/core/diagnostics/comparison.ts +565 -0
- package/src/core/diagnostics/contract.ts +311 -0
- package/src/core/diagnostics/identity.ts +11 -0
- package/src/core/diagnostics/index.ts +7 -0
- package/src/core/diagnostics/replay.ts +314 -0
- package/src/core/diagnostics/sanitize.ts +97 -0
- package/src/core/events/legacy-storage/canary.ts +177 -0
- package/src/core/events/legacy-storage/compression.ts +130 -0
- package/src/core/events/legacy-storage/fence.ts +129 -0
- package/src/core/events/legacy-storage/index.ts +6 -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/archive-retention.ts +251 -0
- package/src/core/events/v3/authority-outbox.ts +22 -1
- package/src/core/events/v3/base-contract.ts +17 -7
- package/src/core/events/v3/bootstrap.ts +195 -2
- package/src/core/events/v3/capabilities.ts +5 -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 +14 -2
- package/src/core/events/v3/live-route-observer.ts +80 -0
- package/src/core/events/v3/live-routing.ts +65 -46
- package/src/core/events/v3/producers/coordination-recorder.ts +95 -10
- package/src/core/events/v3/producers/diagnostic-summaries.ts +593 -0
- package/src/core/events/v3/producers/hook-base.ts +15 -3
- package/src/core/events/v3/producers/intake.ts +31 -2
- package/src/core/events/v3/producers/producer-state-observer.ts +52 -0
- package/src/core/events/v3/producers/recorder.ts +681 -34
- 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 +14 -8
- 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 +58 -7
- 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 +23 -5
- package/src/core/hooks/adapter/runtime-telemetry.ts +408 -13
- package/src/core/hooks/cli.ts +404 -233
- package/src/core/hooks/effects/image-capture.ts +4 -1
- package/src/core/hooks/health.ts +146 -0
- package/src/core/hooks/remediation-cap.ts +12 -6
- 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 +18 -0
- 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/resources/contract.ts +98 -0
- package/src/core/resources/index.ts +5 -0
- package/src/core/resources/sampler.ts +458 -0
- package/src/core/resources/service-status.ts +62 -0
- package/src/core/resources/service.ts +337 -0
- package/src/core/resources/storage.ts +44 -0
- package/src/core/semantic/adapters.ts +200 -41
- package/src/core/semantic/contract.ts +135 -3
- package/src/core/semantic/index.ts +76 -2
- package/src/core/semantic/once.ts +93 -7
- package/src/core/semantic/prompt.ts +13 -1
- package/src/core/semantic/review.ts +803 -0
- package/src/core/semantic/routes.ts +30 -0
- package/src/core/semantic/scheduler.ts +49 -5
- package/src/core/semantic/service-status.ts +99 -5
- package/src/core/semantic/service.ts +116 -15
- package/src/core/semantic/soak.ts +638 -0
- package/src/core/semantic/storage.ts +20 -6
- package/src/core/semantic/usage.ts +272 -0
- package/src/core/semantic/validate.ts +31 -0
- package/src/core/storage/atomic-json.ts +15 -0
- package/src/core/storage/buffer.ts +124 -0
- package/src/core/storage/builtins.ts +972 -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 +548 -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 +418 -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/supervisor/activity.ts +193 -0
- package/src/core/supervisor/contract.ts +312 -0
- package/src/core/supervisor/explanations.ts +104 -0
- package/src/core/supervisor/findings.ts +788 -0
- package/src/core/supervisor/history.ts +61 -0
- package/src/core/supervisor/hook-health-alerts.ts +108 -0
- package/src/core/supervisor/hook-health-storage.ts +25 -0
- package/src/core/supervisor/hook-health.ts +301 -0
- package/src/core/supervisor/hooks.ts +35 -0
- package/src/core/supervisor/index.ts +14 -0
- package/src/core/supervisor/log-feed.ts +131 -0
- package/src/core/supervisor/service.ts +511 -0
- package/src/core/supervisor/services.ts +203 -0
- package/src/core/supervisor/status.ts +59 -0
- package/src/core/supervisor/storage.ts +126 -0
- package/src/core/supervisor/timeline.ts +133 -0
- package/src/core/work/state.ts +12 -21
- package/src/core/workflow/admission.ts +215 -0
- package/src/core/workflow/engine.ts +93 -1
- package/src/core/workflow/index.ts +10 -0
- package/src/core/workflow/live-session-v3.ts +2 -4
- package/src/core/workflow/proof.ts +54 -1
- package/src/core/workflow/run-state.ts +13 -1
- package/src/core/workflow/types.ts +39 -1
- package/src/index.ts +2 -0
- package/src/lazy-commands.ts +294 -0
- package/src/lib/browser/client.ts +6 -0
- package/src/lib/browser/index.ts +29 -0
- package/src/lib/browser/qa-run-contracts.ts +380 -0
- package/src/lib/browser/qa-run.ts +784 -0
- package/src/lib/coord-root-id.ts +23 -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 +81 -2
- package/src/lib/instructions/templates.ts +11 -0
- package/src/lib/local-file-url.ts +31 -0
- package/src/lib/web-performance.ts +335 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import { readSupervisorHookHealth } from "../core/supervisor/hook-health-storage.js";
|
|
3
|
+
import { requestSupervisorStop, runSupervisor, spawnSupervisor, } from "../core/supervisor/service.js";
|
|
4
|
+
import { readSupervisorStatus } from "../core/supervisor/status.js";
|
|
5
|
+
import { readSupervisorFindings, readSupervisorHistory, readSupervisorLogFeed, readSupervisorSnapshot, } from "../core/supervisor/storage.js";
|
|
6
|
+
export function registerSupervisorCommand(program, emit, context) {
|
|
7
|
+
const supervisor = program
|
|
8
|
+
.command("supervisor")
|
|
9
|
+
.description("Run Harnery's optional local diagnostic supervisor");
|
|
10
|
+
supervisor
|
|
11
|
+
.command("start")
|
|
12
|
+
.description("Start the detached local supervisor")
|
|
13
|
+
.option("--root <path>", "Explicit coordination root")
|
|
14
|
+
.option("--interval-ms <milliseconds>", "Collection interval from 500 to 60000 ms", integer)
|
|
15
|
+
.option("--idle-exit-ms <milliseconds>", "Exit after this long without a live dashboard consumer or attributed agent", integer)
|
|
16
|
+
.option("--keep-alive", "Remain resident until explicitly stopped")
|
|
17
|
+
.action(async (options) => {
|
|
18
|
+
try {
|
|
19
|
+
emit.data(await spawnSupervisor(resolve(options.root ?? coordRoot(context)), {
|
|
20
|
+
intervalMs: options.intervalMs,
|
|
21
|
+
idleExitMs: options.idleExitMs,
|
|
22
|
+
keepAlive: options.keepAlive,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
fail(emit, "supervisor_start_failed", error);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
supervisor
|
|
30
|
+
.command("status")
|
|
31
|
+
.description("Show supervisor liveness and its latest bounded projections")
|
|
32
|
+
.option("--root <path>", "Explicit coordination root")
|
|
33
|
+
.action((options) => {
|
|
34
|
+
try {
|
|
35
|
+
const root = resolve(options.root ?? coordRoot(context));
|
|
36
|
+
emit.data({
|
|
37
|
+
service: readSupervisorStatus(root),
|
|
38
|
+
snapshot: readSupervisorSnapshot(root),
|
|
39
|
+
history: readSupervisorHistory(root),
|
|
40
|
+
findings: readSupervisorFindings(root),
|
|
41
|
+
hook_health: readSupervisorHookHealth(root),
|
|
42
|
+
log_feed: readSupervisorLogFeed(root),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
fail(emit, "supervisor_status_failed", error);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
supervisor
|
|
50
|
+
.command("stop")
|
|
51
|
+
.description("Request a graceful supervisor stop")
|
|
52
|
+
.option("--root <path>", "Explicit coordination root")
|
|
53
|
+
.action(async (options) => {
|
|
54
|
+
try {
|
|
55
|
+
const root = resolve(options.root ?? coordRoot(context));
|
|
56
|
+
let status = requestSupervisorStop(root);
|
|
57
|
+
const deadline = Date.now() + 5_000;
|
|
58
|
+
while (status.running && Date.now() < deadline) {
|
|
59
|
+
await new Promise((done) => setTimeout(done, 50));
|
|
60
|
+
status = readSupervisorStatus(root);
|
|
61
|
+
}
|
|
62
|
+
emit.data(status);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
fail(emit, "supervisor_stop_failed", error);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
supervisor
|
|
69
|
+
.command("daemon", { hidden: true })
|
|
70
|
+
.description("Internal detached local supervisor entrypoint")
|
|
71
|
+
.option("--root <path>", "Explicit coordination root")
|
|
72
|
+
.option("--interval-ms <milliseconds>", "Collection interval", integer)
|
|
73
|
+
.option("--idle-exit-ms <milliseconds>", "Idle exit interval", integer)
|
|
74
|
+
.option("--keep-alive", "Remain resident until explicitly stopped")
|
|
75
|
+
.action(async (options) => {
|
|
76
|
+
try {
|
|
77
|
+
emit.data(await runSupervisor({
|
|
78
|
+
coordRoot: resolve(options.root ?? coordRoot(context)),
|
|
79
|
+
intervalMs: options.intervalMs,
|
|
80
|
+
idleExitMs: options.idleExitMs,
|
|
81
|
+
keepAlive: options.keepAlive,
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
fail(emit, "supervisor_daemon_failed", error);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function coordRoot(context) {
|
|
90
|
+
return context?.resolveCoordRoot?.() ?? context?.repoRoot ?? process.cwd();
|
|
91
|
+
}
|
|
92
|
+
function integer(value) {
|
|
93
|
+
const parsed = Number(value);
|
|
94
|
+
if (!Number.isInteger(parsed))
|
|
95
|
+
throw new Error(`expected an integer, got ${value}`);
|
|
96
|
+
return parsed;
|
|
97
|
+
}
|
|
98
|
+
function fail(emit, code, error) {
|
|
99
|
+
emit.error({ code, message: error instanceof Error ? error.message : String(error) });
|
|
100
|
+
emit.setExitCode(1);
|
|
101
|
+
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { EmitContext, HarneryProgramContext } from "../commander.js";
|
|
3
|
-
import { type TunnelState } from "../lib/tunnel/state.js";
|
|
3
|
+
import { type TunnelProvider, type TunnelState } from "../lib/tunnel/state.js";
|
|
4
|
+
export declare function tunnelLogDestinations(name: string, provider: TunnelProvider, env?: NodeJS.ProcessEnv, root?: string): {
|
|
5
|
+
gate: string;
|
|
6
|
+
provider: string;
|
|
7
|
+
};
|
|
4
8
|
/**
|
|
5
9
|
* Restart ONE instance's gate in place, deliberately leaving the provider
|
|
6
10
|
* process running.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAQ1E,OAAO,EAWL,KAAK,cAAc,EACnB,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AAoDhC,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,SAAgB,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAcpC;AAuoBD;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAsE7F;AA+MD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EACtB,YAAY,CAAC,EAAE,qBAAqB,GACnC,IAAI,CA2EN"}
|
package/dist/commands/tunnel.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const dir = resolve(process.cwd(), ".cache", tool);
|
|
4
|
-
return resolve(dir, filename);
|
|
5
|
-
}
|
|
6
|
-
import { spawn, spawnSync } from "node:child_process";
|
|
7
|
-
import { existsSync, openSync, readFileSync, writeFileSync } from "node:fs";
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
8
3
|
import { resolve } from "node:path";
|
|
9
4
|
import { resolveBinName } from "../core/config.js";
|
|
5
|
+
import { processLogDestination, runRotatingProcessSync, spawnRotatingProcess, } from "../core/storage/process-log.js";
|
|
10
6
|
import { clearState, DEFAULT_INSTANCE, ensureCloudflared, gateLogFile, isProcessAlive, listStates, providerLogFile, readConfig, readState, writeConfig, writeState, } from "../lib/tunnel/state.js";
|
|
11
7
|
/**
|
|
12
8
|
* `tunnel`: provider-backed tunnel in front of a local upstream.
|
|
@@ -24,6 +20,20 @@ const DEFAULT_TARGET = "127.0.0.1:8001";
|
|
|
24
20
|
const DEFAULT_VHOST = "localhost";
|
|
25
21
|
const DEFAULT_GATE_PORT = 9001;
|
|
26
22
|
const MAX_GATE_PORT = DEFAULT_GATE_PORT + 99; // auto-allocation scan ceiling
|
|
23
|
+
export function tunnelLogDestinations(name, provider, env = process.env, root = process.cwd()) {
|
|
24
|
+
const destination = (filename) => processLogDestination({
|
|
25
|
+
coord_root: root,
|
|
26
|
+
project_root: root,
|
|
27
|
+
family_id: "tunnel-process-log",
|
|
28
|
+
filename,
|
|
29
|
+
legacy_path: resolve(root, ".cache", "tunnel", filename),
|
|
30
|
+
env,
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
gate: destination(gateLogFile(name)),
|
|
34
|
+
provider: destination(providerLogFile(name, provider)),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
27
37
|
/**
|
|
28
38
|
* Validate + normalize an instance name. Names become filename fragments
|
|
29
39
|
* (state-<name>.json) and pgrep patterns, so they're restricted to a safe
|
|
@@ -270,7 +280,6 @@ function tailscaleCommand(mode) {
|
|
|
270
280
|
return mode === "funnel" ? "funnel" : "serve";
|
|
271
281
|
}
|
|
272
282
|
function runTailscaleShare(mode, targetUrl, path, httpsPort, logPath) {
|
|
273
|
-
const fd = openSync(logPath, "a");
|
|
274
283
|
const args = [
|
|
275
284
|
tailscaleCommand(mode),
|
|
276
285
|
"--bg",
|
|
@@ -279,31 +288,36 @@ function runTailscaleShare(mode, targetUrl, path, httpsPort, logPath) {
|
|
|
279
288
|
`--set-path=${path}`,
|
|
280
289
|
targetUrl,
|
|
281
290
|
];
|
|
282
|
-
const
|
|
283
|
-
|
|
291
|
+
const status = runRotatingProcessSync({
|
|
292
|
+
path: logPath,
|
|
293
|
+
command: "tailscale",
|
|
294
|
+
arguments: args,
|
|
284
295
|
});
|
|
285
|
-
if (
|
|
296
|
+
if (status !== 0) {
|
|
286
297
|
emit.error({
|
|
287
298
|
code: "tunnel_tailscale_failed",
|
|
288
299
|
message: `tailscale ${tailscaleCommand(mode)} failed. Check log: ${logPath}`,
|
|
289
300
|
});
|
|
290
|
-
process.exit(
|
|
301
|
+
process.exit(status ?? 1);
|
|
291
302
|
}
|
|
292
303
|
}
|
|
293
304
|
function stopTailscaleShare(state) {
|
|
294
305
|
if (state.provider !== "tailscale" || !state.tailscale_mode)
|
|
295
306
|
return true;
|
|
296
307
|
const cmd = tailscaleCommand(state.tailscale_mode);
|
|
297
|
-
const logPath =
|
|
298
|
-
const fd = openSync(logPath, "a");
|
|
308
|
+
const logPath = tunnelLogDestinations(state.name, "tailscale").provider;
|
|
299
309
|
const args = [
|
|
300
310
|
cmd,
|
|
301
311
|
`--https=${state.tailscale_https_port ?? 443}`,
|
|
302
312
|
`--set-path=${state.tailscale_path ?? "/"}`,
|
|
303
313
|
"off",
|
|
304
314
|
];
|
|
305
|
-
const
|
|
306
|
-
|
|
315
|
+
const status = runRotatingProcessSync({
|
|
316
|
+
path: logPath,
|
|
317
|
+
command: "tailscale",
|
|
318
|
+
arguments: args,
|
|
319
|
+
});
|
|
320
|
+
if (status !== 0) {
|
|
307
321
|
// The gate is torn down and its port is freed for reuse regardless, so a
|
|
308
322
|
// surviving serve/funnel mapping could later re-expose whatever next binds
|
|
309
323
|
// that port. Surface it loudly so the operator can clear it by hand.
|
|
@@ -339,12 +353,12 @@ function tunnelIsAlive(state) {
|
|
|
339
353
|
* re-reads — that snapshot is precisely why `reload` has to exist.
|
|
340
354
|
*/
|
|
341
355
|
function spawnGate(o) {
|
|
342
|
-
const gateFd = openSync(o.gateLogPath, "a");
|
|
343
356
|
// `--name`/`--port` on argv mirror the env vars; they're what makes the gate
|
|
344
357
|
// process distinguishable per-instance in `pgrep -f` (see sweepStrays).
|
|
345
|
-
const gateProc =
|
|
346
|
-
|
|
347
|
-
|
|
358
|
+
const gateProc = spawnRotatingProcess({
|
|
359
|
+
path: o.gateLogPath,
|
|
360
|
+
command: "bun",
|
|
361
|
+
arguments: ["run", gateScriptPath(), "--name", o.name, "--port", String(o.gatePort)],
|
|
348
362
|
env: {
|
|
349
363
|
...process.env,
|
|
350
364
|
HARNERY_TUNNEL_ALLOW: o.allowedIps.join(","),
|
|
@@ -414,10 +428,9 @@ async function up(opts) {
|
|
|
414
428
|
});
|
|
415
429
|
process.exit(1);
|
|
416
430
|
}
|
|
417
|
-
const
|
|
418
|
-
const
|
|
419
|
-
|
|
420
|
-
writeFileSync(providerLogPath, "");
|
|
431
|
+
const logPaths = tunnelLogDestinations(name, provider);
|
|
432
|
+
const gateLogPath = logPaths.gate;
|
|
433
|
+
const providerLogPath = logPaths.provider;
|
|
421
434
|
const gateProc = spawnGate({
|
|
422
435
|
name,
|
|
423
436
|
gatePort,
|
|
@@ -439,15 +452,15 @@ async function up(opts) {
|
|
|
439
452
|
let registered = true;
|
|
440
453
|
let cloudflaredPid;
|
|
441
454
|
if (provider === "cloudflare") {
|
|
442
|
-
const cfdFd = openSync(providerLogPath, "a");
|
|
443
455
|
// Force HTTP/2 transport. The default QUIC transport wedges at precheck on
|
|
444
456
|
// constrained hosts (e.g. WSL, where UDP receive buffers can't grow and ICMP
|
|
445
457
|
// is restricted): the URL prints but the edge never registers. HTTP/2 is
|
|
446
458
|
// marginally higher-latency but registers reliably, which is what a dev
|
|
447
459
|
// tunnel needs.
|
|
448
|
-
const cfdProc =
|
|
449
|
-
|
|
450
|
-
|
|
460
|
+
const cfdProc = spawnRotatingProcess({
|
|
461
|
+
path: providerLogPath,
|
|
462
|
+
command: cloudflaredBin,
|
|
463
|
+
arguments: ["tunnel", "--protocol", "http2", "--url", `http://localhost:${gatePort}`],
|
|
451
464
|
});
|
|
452
465
|
cfdProc.unref();
|
|
453
466
|
cloudflaredPid = cfdProc.pid;
|
|
@@ -649,7 +662,7 @@ export async function reloadOne(state) {
|
|
|
649
662
|
vhost: state.vhost,
|
|
650
663
|
provider: state.provider,
|
|
651
664
|
allowedIps: cfg.allowed_ips,
|
|
652
|
-
gateLogPath:
|
|
665
|
+
gateLogPath: tunnelLogDestinations(name, state.provider).gate,
|
|
653
666
|
});
|
|
654
667
|
await sleep(800);
|
|
655
668
|
const pid = gateProc.pid;
|
|
@@ -794,8 +807,8 @@ function logs(opts) {
|
|
|
794
807
|
const name = resolveName(opts.name);
|
|
795
808
|
const state = readState(name);
|
|
796
809
|
const provider = state?.provider ?? "cloudflare";
|
|
797
|
-
const
|
|
798
|
-
const path =
|
|
810
|
+
const destinations = tunnelLogDestinations(name, provider);
|
|
811
|
+
const path = opts.provider ? destinations.provider : destinations.gate;
|
|
799
812
|
if (!existsSync(path)) {
|
|
800
813
|
emit.error({ code: "tunnel_no_log", message: `No log file at ${path}` });
|
|
801
814
|
process.exit(1);
|
package/dist/commands/web.d.ts
CHANGED
|
@@ -19,6 +19,9 @@ export declare function resolveMaxOldSpaceMb(flag?: string): number;
|
|
|
19
19
|
* wins without clobbering flags the caller set (source maps, inspector, …).
|
|
20
20
|
*/
|
|
21
21
|
export declare function nodeOptionsWithHeapCap(mb: number): string | undefined;
|
|
22
|
+
/** Preload the request diagnostics hook without replacing Next's HTTP server. */
|
|
23
|
+
export declare function nodeOptionsWithWebDiagnostics(webDir: string, mb: number): string;
|
|
24
|
+
export declare function webPerformanceLogDestination(coordRoot: string, env?: Readonly<Record<string, string | undefined>>): string;
|
|
22
25
|
/**
|
|
23
26
|
* Probe the exact localhost socket Next will claim. This is deliberately a
|
|
24
27
|
* check-and-report step, not an alternate-port allocator: Harnery keeps one
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA8CnD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKrE;AAED,iFAAiF;AACjF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,CAQR;AAmDD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAevE;AAsBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CA2N5E"}
|
package/dist/commands/web.js
CHANGED
|
@@ -2,9 +2,13 @@ import { spawn, spawnSync } from "node:child_process";
|
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
3
|
import { createServer } from "node:net";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
6
6
|
import { DEFAULT_WEB_PORT, resolveWebPort } from "../core/config.js";
|
|
7
7
|
import { ensureSemanticServiceRunning } from "../core/semantic/service.js";
|
|
8
|
+
import { processLogDestination } from "../core/storage/process-log.js";
|
|
9
|
+
import { ensureSupervisorRunning } from "../core/supervisor/service.js";
|
|
10
|
+
import { registerSupervisorConsumer, unregisterSupervisorConsumer, } from "../core/supervisor/services.js";
|
|
11
|
+
import { parsePerformanceWindow, readWebPerformanceReport, WEB_PERFORMANCE_LOG, } from "../lib/web-performance.js";
|
|
8
12
|
import { lazyFetchWebRoot, webRunner } from "./web-fetch.js";
|
|
9
13
|
/**
|
|
10
14
|
* `harn web`: Next.js dashboard for harnery's coord state.
|
|
@@ -13,6 +17,7 @@ import { lazyFetchWebRoot, webRunner } from "./web-fetch.js";
|
|
|
13
17
|
* up [--prod]: start the server (dev mode default; --prod runs next start)
|
|
14
18
|
* build: next build (production bundle)
|
|
15
19
|
* start: next start (must `harn web build` first)
|
|
20
|
+
* performance: summarize request latency and event-loop delays
|
|
16
21
|
*
|
|
17
22
|
* Launches the Next.js app under `harnery/web/` against the user's current
|
|
18
23
|
* working directory. The web app reads `.harnery/` via `HARNERY_COORD_ROOT`;
|
|
@@ -66,6 +71,23 @@ export function nodeOptionsWithHeapCap(mb) {
|
|
|
66
71
|
return inherited;
|
|
67
72
|
return `${inherited} --max-old-space-size=${mb}`.trim();
|
|
68
73
|
}
|
|
74
|
+
/** Preload the request diagnostics hook without replacing Next's HTTP server. */
|
|
75
|
+
export function nodeOptionsWithWebDiagnostics(webDir, mb) {
|
|
76
|
+
const inherited = nodeOptionsWithHeapCap(mb) ?? "";
|
|
77
|
+
if (inherited.includes("server-performance.mjs"))
|
|
78
|
+
return inherited;
|
|
79
|
+
const preload = pathToFileURL(path.join(webDir, "server-performance.mjs")).href;
|
|
80
|
+
return `${inherited} --import=${preload}`.trim();
|
|
81
|
+
}
|
|
82
|
+
export function webPerformanceLogDestination(coordRoot, env = process.env) {
|
|
83
|
+
return processLogDestination({
|
|
84
|
+
coord_root: coordRoot,
|
|
85
|
+
family_id: "web-performance-log",
|
|
86
|
+
filename: "active.jsonl",
|
|
87
|
+
legacy_path: path.join(coordRoot, ".harnery", "logs", WEB_PERFORMANCE_LOG),
|
|
88
|
+
env,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
69
91
|
async function startSemanticServiceWithWeb(coordRoot, emit) {
|
|
70
92
|
const result = await ensureSemanticServiceRunning(coordRoot);
|
|
71
93
|
if (result.state === "started")
|
|
@@ -80,6 +102,17 @@ async function startSemanticServiceWithWeb(coordRoot, emit) {
|
|
|
80
102
|
emit.log(`semantic reader · unavailable (${result.error ?? "startup failed"})`, "warn");
|
|
81
103
|
}
|
|
82
104
|
}
|
|
105
|
+
async function startSupervisorWithWeb(coordRoot, emit) {
|
|
106
|
+
registerSupervisorConsumer(coordRoot, { id: "dashboard" });
|
|
107
|
+
const result = await ensureSupervisorRunning(coordRoot);
|
|
108
|
+
if (result.state === "started")
|
|
109
|
+
emit.log("local supervisor · started automatically", "info");
|
|
110
|
+
if (result.state === "running")
|
|
111
|
+
emit.log("local supervisor · already running", "info");
|
|
112
|
+
if (result.state === "unavailable") {
|
|
113
|
+
emit.log(`local supervisor · unavailable (${result.error})`, "warn");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
83
116
|
/**
|
|
84
117
|
* Resolve the web app root. A local `web/` (source checkout / submodule) wins.
|
|
85
118
|
* Otherwise, on an npm install, lazy-fetch it (clone + install) unless the
|
|
@@ -183,11 +216,15 @@ export function registerWebCommand(program, emit) {
|
|
|
183
216
|
}
|
|
184
217
|
if (!(await requireAvailablePort(emit, port)))
|
|
185
218
|
return;
|
|
219
|
+
await startSupervisorWithWeb(coordRoot, emit);
|
|
186
220
|
await startSemanticServiceWithWeb(coordRoot, emit);
|
|
187
221
|
const heapMb = resolveMaxOldSpaceMb(opts.maxOldSpace);
|
|
222
|
+
const nodeOptions = nodeOptionsWithWebDiagnostics(root, heapMb);
|
|
223
|
+
const performanceLogPath = webPerformanceLogDestination(coordRoot);
|
|
188
224
|
emit.log(`harn web · http://localhost:${port} (${mode})`, "info");
|
|
189
225
|
emit.log(`files origin · http://harnery-files.localhost:${port}`, "info");
|
|
190
226
|
emit.log(`reading .harnery/ from: ${coordRoot}`, "info");
|
|
227
|
+
emit.log(`performance log · ${performanceLogPath}`, "info");
|
|
191
228
|
if (heapMb > 0)
|
|
192
229
|
emit.log(`heap ceiling · ${heapMb} MB`, "info");
|
|
193
230
|
const child = spawn(webRunner(), ["run", mode], {
|
|
@@ -196,9 +233,9 @@ export function registerWebCommand(program, emit) {
|
|
|
196
233
|
...process.env,
|
|
197
234
|
HARNERY_COORD_ROOT: coordRoot,
|
|
198
235
|
HARNERY_WEB_PORT: String(port),
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
236
|
+
HARNERY_WEB_MODE: mode,
|
|
237
|
+
HARNERY_WEB_PERFORMANCE_LOG_PATH: performanceLogPath,
|
|
238
|
+
NODE_OPTIONS: nodeOptions,
|
|
202
239
|
},
|
|
203
240
|
stdio: "inherit",
|
|
204
241
|
});
|
|
@@ -209,6 +246,7 @@ export function registerWebCommand(program, emit) {
|
|
|
209
246
|
process.on("SIGINT", () => cleanup("SIGINT"));
|
|
210
247
|
process.on("SIGTERM", () => cleanup("SIGTERM"));
|
|
211
248
|
child.on("exit", (code, sig) => {
|
|
249
|
+
unregisterSupervisorConsumer(coordRoot, "dashboard");
|
|
212
250
|
if (sig) {
|
|
213
251
|
emit.log(`web exited on ${sig}`, "info");
|
|
214
252
|
}
|
|
@@ -269,10 +307,14 @@ export function registerWebCommand(program, emit) {
|
|
|
269
307
|
}
|
|
270
308
|
if (!(await requireAvailablePort(emit, port)))
|
|
271
309
|
return;
|
|
310
|
+
await startSupervisorWithWeb(coordRoot, emit);
|
|
272
311
|
await startSemanticServiceWithWeb(coordRoot, emit);
|
|
273
312
|
const heapMb = resolveMaxOldSpaceMb(opts.maxOldSpace);
|
|
313
|
+
const nodeOptions = nodeOptionsWithWebDiagnostics(root, heapMb);
|
|
314
|
+
const performanceLogPath = webPerformanceLogDestination(coordRoot);
|
|
274
315
|
emit.log(`harn web · http://localhost:${port} (start)`, "info");
|
|
275
316
|
emit.log(`reading .harnery/ from: ${coordRoot}`, "info");
|
|
317
|
+
emit.log(`performance log · ${performanceLogPath}`, "info");
|
|
276
318
|
if (heapMb > 0)
|
|
277
319
|
emit.log(`heap ceiling · ${heapMb} MB`, "info");
|
|
278
320
|
const child = spawn(webRunner(), ["run", "start"], {
|
|
@@ -281,9 +323,9 @@ export function registerWebCommand(program, emit) {
|
|
|
281
323
|
...process.env,
|
|
282
324
|
HARNERY_COORD_ROOT: coordRoot,
|
|
283
325
|
HARNERY_WEB_PORT: String(port),
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
326
|
+
HARNERY_WEB_MODE: "start",
|
|
327
|
+
HARNERY_WEB_PERFORMANCE_LOG_PATH: performanceLogPath,
|
|
328
|
+
NODE_OPTIONS: nodeOptions,
|
|
287
329
|
},
|
|
288
330
|
stdio: "inherit",
|
|
289
331
|
});
|
|
@@ -294,7 +336,42 @@ export function registerWebCommand(program, emit) {
|
|
|
294
336
|
process.on("SIGINT", () => cleanup("SIGINT"));
|
|
295
337
|
process.on("SIGTERM", () => cleanup("SIGTERM"));
|
|
296
338
|
child.on("exit", (code) => {
|
|
339
|
+
unregisterSupervisorConsumer(coordRoot, "dashboard");
|
|
297
340
|
process.exitCode = code ?? 0;
|
|
298
341
|
});
|
|
299
342
|
});
|
|
343
|
+
web
|
|
344
|
+
.command("performance")
|
|
345
|
+
.description("Summarize dashboard request, event-loop, memory, and GC diagnostics")
|
|
346
|
+
.option("--coord-root <dir>", "Override the coordination root", process.cwd())
|
|
347
|
+
.option("--since <window>", "Include the last Nm, Nh, or Nd", "1h")
|
|
348
|
+
.option("--limit <n>", "Keep the N slowest requests and delays", "20")
|
|
349
|
+
.option("--json", "Emit structured JSON")
|
|
350
|
+
.action((opts) => {
|
|
351
|
+
const windowMs = parsePerformanceWindow(opts.since);
|
|
352
|
+
if (windowMs === null) {
|
|
353
|
+
emit.error({
|
|
354
|
+
code: "invalid_web_performance_window",
|
|
355
|
+
message: `invalid --since value '${opts.since}'`,
|
|
356
|
+
hint: "Use Nm, Nh, or Nd, for example 30m, 1h, or 7d.",
|
|
357
|
+
});
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
const limit = Number(opts.limit);
|
|
361
|
+
if (!Number.isSafeInteger(limit) || limit < 1 || limit > 500) {
|
|
362
|
+
emit.error({
|
|
363
|
+
code: "invalid_web_performance_limit",
|
|
364
|
+
message: `invalid --limit value '${opts.limit}'`,
|
|
365
|
+
hint: "Use an integer from 1 through 500.",
|
|
366
|
+
});
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
if (opts.json)
|
|
370
|
+
emit.config({ format: "json" });
|
|
371
|
+
emit.data(readWebPerformanceReport({
|
|
372
|
+
root: opts.coordRoot,
|
|
373
|
+
since: opts.since,
|
|
374
|
+
limit,
|
|
375
|
+
}));
|
|
376
|
+
});
|
|
300
377
|
}
|
package/dist/commands/work.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
2
|
import { adapterProofInputs, createBuiltinAdapterRegistry, probeBinaryVersion, } from "../core/adapters/index.js";
|
|
3
|
+
import { resolveCoordRoot } from "../core/agents/coord-client.js";
|
|
3
4
|
import { workflowSubscriptionOnly } from "../core/config.js";
|
|
4
5
|
import { findCompletedMissionGoverning, reopenGovernorMission } from "../core/governor/index.js";
|
|
5
|
-
import { findCoordRoot } from "../core/hooks/resolve/coord-root.js";
|
|
6
6
|
import { loadPolicyFile } from "../core/policy/index.js";
|
|
7
7
|
import { acceptWorkItem, cancelWorkItem, createWorkItem, listWorkItemsWithWarnings, readWorkItem, reconcileAllWorkItems, reconcileWorkItem, reopenWorkItem, runWorkItem, } from "../core/work/index.js";
|
|
8
8
|
import { WorkflowParkedError } from "../core/workflow/index.js";
|
|
@@ -344,7 +344,7 @@ export function renderAttemptBudget(record) {
|
|
|
344
344
|
return uncharged > 0 ? `${base} (+${uncharged} uncharged)` : base;
|
|
345
345
|
}
|
|
346
346
|
function withWorkRoot(emit, fn) {
|
|
347
|
-
const coordRoot =
|
|
347
|
+
const coordRoot = resolveCoordRoot();
|
|
348
348
|
if (!coordRoot) {
|
|
349
349
|
emit.error({
|
|
350
350
|
code: "no_coord_root",
|
|
@@ -362,7 +362,7 @@ function withWorkRoot(emit, fn) {
|
|
|
362
362
|
}
|
|
363
363
|
}
|
|
364
364
|
async function withWorkRootAsync(emit, fn) {
|
|
365
|
-
const coordRoot =
|
|
365
|
+
const coordRoot = resolveCoordRoot();
|
|
366
366
|
if (!coordRoot) {
|
|
367
367
|
emit.error({
|
|
368
368
|
code: "no_coord_root",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA0EnD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAmvBjF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { join, resolve } from "node:path";
|
|
3
3
|
import { adapterProofInputs, createBuiltinAdapterRegistry, probeBinaryVersion, } from "../core/adapters/index.js";
|
|
4
|
+
import { resolveCoordRoot } from "../core/agents/coord-client.js";
|
|
4
5
|
import { resolveBinName, workflowSubscriptionOnly } from "../core/config.js";
|
|
5
|
-
import { findCoordRoot } from "../core/hooks/resolve/coord-root.js";
|
|
6
6
|
import { loadPolicyFile } from "../core/policy/index.js";
|
|
7
7
|
import { WorkflowParkedError } from "../core/workflow/engine.js";
|
|
8
8
|
export function registerWorkflowCommand(program, emit) {
|
|
@@ -24,6 +24,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
24
24
|
.description("Workflow script (plain JS: `export default async ({agent, parallel, stage, log, evidence, authorize}) => …`)")
|
|
25
25
|
.option("--max-agents <n>", "Total-agent ceiling for the run (default 50)")
|
|
26
26
|
.option("--concurrency <n>", "Concurrent-subagent cap (default 4)")
|
|
27
|
+
.option("--observe-pressure", "Record observer-only local pressure before the first real child dispatch")
|
|
27
28
|
.option("--cwd <dir>", "Working directory children spawn in (default: coord root)")
|
|
28
29
|
.option("--adapter <name>", `Default adapter for agent() calls: ${adapters.join(" | ")} (default claude-code); scripts can override per agent via opts.adapter`)
|
|
29
30
|
.option("--resume-from <run-id>", "Reuse completed agent results from a prior run's transcript; only changed/failed calls re-run")
|
|
@@ -37,7 +38,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
37
38
|
.option("--approval-to <address>", "Address durable ASK requests (default: operator)")
|
|
38
39
|
.option("--json", "Emit the full RunReport as JSON")
|
|
39
40
|
.action(async (script, opts) => {
|
|
40
|
-
const coordRoot =
|
|
41
|
+
const coordRoot = resolveCoordRoot();
|
|
41
42
|
if (!coordRoot) {
|
|
42
43
|
emit.error({
|
|
43
44
|
code: "no_coord_root",
|
|
@@ -94,6 +95,9 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
94
95
|
allowApiBilling: opts.allowApiBilling,
|
|
95
96
|
maxAgents: opts.maxAgents ? Number.parseInt(opts.maxAgents, 10) : undefined,
|
|
96
97
|
concurrency: opts.concurrency ? Number.parseInt(opts.concurrency, 10) : undefined,
|
|
98
|
+
diagnosticAdmission: opts.observePressure
|
|
99
|
+
? { schema_version: 1, mode: "shadow" }
|
|
100
|
+
: undefined,
|
|
97
101
|
cwd: opts.cwd,
|
|
98
102
|
...adapterProofInputs(registry.list().map((adapter) => adapter.profile), { versionProbe: probeBinaryVersion }),
|
|
99
103
|
policy: opts.policy ? loadPolicyFile(opts.policy) : undefined,
|
|
@@ -156,7 +160,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
156
160
|
.description("Resume a parked workflow after its durable approval has been resolved.")
|
|
157
161
|
.option("--json", "Emit the full RunReport or parked result as JSON")
|
|
158
162
|
.action(async (runId, opts) => {
|
|
159
|
-
const coordRoot =
|
|
163
|
+
const coordRoot = resolveCoordRoot();
|
|
160
164
|
if (!coordRoot) {
|
|
161
165
|
emit.error({
|
|
162
166
|
code: "no_coord_root",
|
|
@@ -228,7 +232,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
228
232
|
.description("Show validated allocation, verification, integration, and cleanup state.")
|
|
229
233
|
.option("--json", "Emit the validated workspace status as JSON")
|
|
230
234
|
.action(async (runId, opts) => {
|
|
231
|
-
const coordRoot =
|
|
235
|
+
const coordRoot = resolveCoordRoot();
|
|
232
236
|
if (!coordRoot) {
|
|
233
237
|
emit.error({
|
|
234
238
|
code: "no_coord_root",
|
|
@@ -254,7 +258,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
254
258
|
.description("List validated isolated and shared-compatibility workspace decisions.")
|
|
255
259
|
.option("--json", "Emit workspace inspections as JSON")
|
|
256
260
|
.action(async (opts) => {
|
|
257
|
-
const coordRoot =
|
|
261
|
+
const coordRoot = resolveCoordRoot();
|
|
258
262
|
if (!coordRoot) {
|
|
259
263
|
emit.error({
|
|
260
264
|
code: "no_coord_root",
|
|
@@ -300,7 +304,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
300
304
|
.option("--approval-to <address>", "Address a durable policy ASK request")
|
|
301
305
|
.option("--json", "Emit the durable integration plan as JSON")
|
|
302
306
|
.action(async (runId, opts) => {
|
|
303
|
-
const coordRoot =
|
|
307
|
+
const coordRoot = resolveCoordRoot();
|
|
304
308
|
if (!coordRoot) {
|
|
305
309
|
emit.error({
|
|
306
310
|
code: "no_coord_root",
|
|
@@ -384,7 +388,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
384
388
|
.option("--yes", "Confirm the target-branch mutation")
|
|
385
389
|
.option("--json", "Emit the durable integration receipt as JSON")
|
|
386
390
|
.action(async (runId, opts) => {
|
|
387
|
-
const coordRoot =
|
|
391
|
+
const coordRoot = resolveCoordRoot();
|
|
388
392
|
if (!coordRoot) {
|
|
389
393
|
emit.error({
|
|
390
394
|
code: "no_coord_root",
|
|
@@ -426,7 +430,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
426
430
|
.option("--yes", "Confirm the worktree and provider-branch removal attempt")
|
|
427
431
|
.option("--json", "Emit the cleanup attempt or receipt as JSON")
|
|
428
432
|
.action(async (runId, opts) => {
|
|
429
|
-
const coordRoot =
|
|
433
|
+
const coordRoot = resolveCoordRoot();
|
|
430
434
|
if (!coordRoot) {
|
|
431
435
|
emit.error({
|
|
432
436
|
code: "no_coord_root",
|
|
@@ -473,7 +477,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
473
477
|
.option("--discard", "Throw the uncommitted work away instead of salvaging it")
|
|
474
478
|
.option("--json", "Emit the reclaim preparation and cleanup result as JSON")
|
|
475
479
|
.action(async (runId, opts) => {
|
|
476
|
-
const coordRoot =
|
|
480
|
+
const coordRoot = resolveCoordRoot();
|
|
477
481
|
if (!coordRoot) {
|
|
478
482
|
emit.error({
|
|
479
483
|
code: "no_coord_root",
|
|
@@ -539,7 +543,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
539
543
|
.option("--status <status>", "Filter: pending | approved | denied")
|
|
540
544
|
.option("--json", "Emit approval records as JSON")
|
|
541
545
|
.action(async (opts) => {
|
|
542
|
-
const coordRoot =
|
|
546
|
+
const coordRoot = resolveCoordRoot();
|
|
543
547
|
if (!coordRoot) {
|
|
544
548
|
emit.error({ code: "no_coord_root", message: "no .harnery/ coordination root found" });
|
|
545
549
|
process.exit(1);
|
|
@@ -571,7 +575,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
571
575
|
.description("Show one durable workflow approval.")
|
|
572
576
|
.option("--json", "Emit the approval record as JSON")
|
|
573
577
|
.action(async (approvalId, opts) => {
|
|
574
|
-
const coordRoot =
|
|
578
|
+
const coordRoot = resolveCoordRoot();
|
|
575
579
|
if (!coordRoot) {
|
|
576
580
|
emit.error({ code: "no_coord_root", message: "no .harnery/ coordination root found" });
|
|
577
581
|
process.exit(1);
|
|
@@ -600,7 +604,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
600
604
|
.option("--reason <text>", "Bounded decision reason")
|
|
601
605
|
.option("--json", "Emit the resolved approval as JSON")
|
|
602
606
|
.action(async (approvalId, opts) => {
|
|
603
|
-
const coordRoot =
|
|
607
|
+
const coordRoot = resolveCoordRoot();
|
|
604
608
|
if (!coordRoot) {
|
|
605
609
|
emit.error({ code: "no_coord_root", message: "no .harnery/ coordination root found" });
|
|
606
610
|
process.exit(1);
|
|
@@ -640,7 +644,7 @@ export function registerWorkflowCommand(program, emit) {
|
|
|
640
644
|
.description("Show the bounded proof packet for a completed workflow run.")
|
|
641
645
|
.option("--json", "Emit the stored proof packet as JSON")
|
|
642
646
|
.action(async (runId, opts) => {
|
|
643
|
-
const coordRoot =
|
|
647
|
+
const coordRoot = resolveCoordRoot();
|
|
644
648
|
if (!coordRoot) {
|
|
645
649
|
emit.error({
|
|
646
650
|
code: "no_coord_root",
|
|
@@ -62,7 +62,7 @@ export declare const BUILTIN_ADAPTER_PROFILES: {
|
|
|
62
62
|
};
|
|
63
63
|
};
|
|
64
64
|
export type BuiltinAdapterId = keyof typeof BUILTIN_ADAPTER_PROFILES;
|
|
65
|
-
export declare const BUILTIN_ADAPTER_IDS: readonly ("
|
|
65
|
+
export declare const BUILTIN_ADAPTER_IDS: readonly ("cursor" | "claude-code" | "codex")[];
|
|
66
66
|
export declare function isBuiltinAdapter(id: string): id is BuiltinAdapterId;
|
|
67
67
|
export declare function builtinAdapterProfile(id: string): AdapterProfile | undefined;
|
|
68
68
|
export declare function validateAdapterEffort(id: string, effort: string | undefined): void;
|