harnery 0.38.0 → 0.40.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/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +32 -8
- package/dist/commands/artifacts.d.ts.map +1 -1
- package/dist/commands/artifacts.js +97 -6
- package/dist/commands/backup.d.ts +16 -0
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +239 -33
- package/dist/commands/browse.d.ts +8 -0
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +466 -231
- package/dist/commands/diagnostics.d.ts.map +1 -1
- package/dist/commands/diagnostics.js +6 -3
- package/dist/commands/ledger-v3.d.ts.map +1 -1
- package/dist/commands/ledger-v3.js +20 -4
- package/dist/commands/qa-run.d.ts.map +1 -1
- package/dist/commands/qa-run.js +26 -3
- package/dist/commands/qa-status.d.ts.map +1 -1
- package/dist/commands/qa-status.js +7 -2
- package/dist/commands/resources.d.ts.map +1 -1
- package/dist/commands/resources.js +23 -3
- package/dist/commands/review-pack.d.ts.map +1 -1
- package/dist/commands/review-pack.js +98 -23
- package/dist/commands/tunnel.d.ts.map +1 -1
- package/dist/commands/tunnel.js +2 -2
- package/dist/core/adapters/profiles.d.ts +1 -1
- package/dist/core/agents/canonical-emit.d.ts +3 -2
- package/dist/core/agents/canonical-emit.d.ts.map +1 -1
- package/dist/core/agents/canonical-emit.js +2 -0
- package/dist/core/agents/cli.js +13 -6
- package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
- package/dist/core/agents/live-authority-v3.js +5 -3
- package/dist/core/agents/live-lifecycle-v3.d.ts +2 -2
- package/dist/core/agents/live-lifecycle-v3.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.d.ts +7 -5
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +63 -8
- package/dist/core/agents/session-finalizer-v3.d.ts +2 -2
- package/dist/core/agents/session-finalizer-v3.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-view.d.ts +3 -3
- package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-view.js +2 -1
- package/dist/core/agents/state/names.d.ts +35 -2
- package/dist/core/agents/state/names.d.ts.map +1 -1
- package/dist/core/agents/state/names.js +80 -5
- package/dist/core/agents/state/stale-sweep.d.ts +2 -1
- package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
- package/dist/core/agents/state/stale-sweep.js +23 -6
- package/dist/core/agents/turn-elapsed.d.ts +51 -0
- package/dist/core/agents/turn-elapsed.d.ts.map +1 -0
- package/dist/core/agents/turn-elapsed.js +91 -0
- package/dist/core/artifacts/activity.d.ts +14 -0
- package/dist/core/artifacts/activity.d.ts.map +1 -0
- package/dist/core/artifacts/activity.js +52 -0
- package/dist/core/artifacts/delivery-card.d.ts +39 -0
- package/dist/core/artifacts/delivery-card.d.ts.map +1 -0
- package/dist/core/artifacts/delivery-card.js +282 -0
- package/dist/core/artifacts/index.d.ts +42 -7
- package/dist/core/artifacts/index.d.ts.map +1 -1
- package/dist/core/artifacts/index.js +288 -76
- package/dist/core/artifacts/mutation-lock.d.ts +2 -0
- package/dist/core/artifacts/mutation-lock.d.ts.map +1 -0
- package/dist/core/artifacts/mutation-lock.js +91 -0
- package/dist/core/backup/host-snapshot.d.ts +18 -0
- package/dist/core/backup/host-snapshot.d.ts.map +1 -0
- package/dist/core/backup/host-snapshot.js +64 -0
- package/dist/core/config.d.ts +20 -5
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +44 -10
- package/dist/core/diagnostics/advice.d.ts +38 -3
- package/dist/core/diagnostics/advice.d.ts.map +1 -1
- package/dist/core/diagnostics/advice.js +103 -99
- package/dist/core/diagnostics/bundle.d.ts.map +1 -1
- package/dist/core/diagnostics/bundle.js +111 -47
- package/dist/core/diagnostics/comparison.d.ts.map +1 -1
- package/dist/core/diagnostics/comparison.js +3 -2
- package/dist/core/diagnostics/contract.d.ts +15 -31
- package/dist/core/diagnostics/contract.d.ts.map +1 -1
- package/dist/core/diagnostics/contract.js +2 -5
- package/dist/core/diagnostics/index.d.ts +2 -0
- package/dist/core/diagnostics/index.d.ts.map +1 -1
- package/dist/core/diagnostics/index.js +2 -0
- package/dist/core/diagnostics/pressure-contract.d.ts +260 -0
- package/dist/core/diagnostics/pressure-contract.d.ts.map +1 -0
- package/dist/core/diagnostics/pressure-contract.js +70 -0
- package/dist/core/diagnostics/pressure.d.ts +25 -0
- package/dist/core/diagnostics/pressure.d.ts.map +1 -0
- package/dist/core/diagnostics/pressure.js +1138 -0
- package/dist/core/diagnostics/replay.d.ts.map +1 -1
- package/dist/core/diagnostics/replay.js +90 -10
- package/dist/core/events/v3/adapter-id.d.ts +6 -0
- package/dist/core/events/v3/adapter-id.d.ts.map +1 -0
- package/dist/core/events/v3/adapter-id.js +7 -0
- package/dist/core/events/v3/archive-retention.d.ts.map +1 -1
- package/dist/core/events/v3/archive-retention.js +3 -2
- package/dist/core/events/v3/bootstrap.d.ts +41 -4
- package/dist/core/events/v3/bootstrap.d.ts.map +1 -1
- package/dist/core/events/v3/bootstrap.js +120 -17
- package/dist/core/events/v3/capabilities.d.ts +16 -9
- package/dist/core/events/v3/capabilities.d.ts.map +1 -1
- package/dist/core/events/v3/capabilities.js +37 -2
- package/dist/core/events/v3/capability-drift.d.ts +2 -2
- package/dist/core/events/v3/capability-drift.d.ts.map +1 -1
- package/dist/core/events/v3/control-witness.d.ts +48 -5
- package/dist/core/events/v3/control-witness.d.ts.map +1 -1
- package/dist/core/events/v3/control-witness.js +91 -36
- package/dist/core/events/v3/control.d.ts.map +1 -1
- package/dist/core/events/v3/control.js +22 -2
- package/dist/core/events/v3/index.d.ts +2 -1
- package/dist/core/events/v3/index.d.ts.map +1 -1
- package/dist/core/events/v3/index.js +2 -1
- package/dist/core/events/v3/live-feed.d.ts +7 -1
- package/dist/core/events/v3/live-feed.d.ts.map +1 -1
- package/dist/core/events/v3/live-feed.js +21 -3
- package/dist/core/events/v3/live-routing.d.ts.map +1 -1
- package/dist/core/events/v3/live-routing.js +10 -2
- package/dist/core/events/v3/producers/command-recorder.d.ts +2 -2
- package/dist/core/events/v3/producers/command-recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/command-recorder.js +2 -1
- package/dist/core/events/v3/producers/coordination-recorder.d.ts +2 -2
- package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/coordination-recorder.js +2 -1
- package/dist/core/events/v3/producers/hook-base.d.ts +2 -2
- package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -1
- package/dist/core/events/v3/producers/hook-base.js +15 -5
- package/dist/core/events/v3/producers/hook.d.ts.map +1 -1
- package/dist/core/events/v3/producers/hook.js +17 -4
- package/dist/core/events/v3/producers/intake.d.ts +4 -4
- package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
- package/dist/core/events/v3/producers/intake.js +3 -2
- package/dist/core/events/v3/producers/producer-state-observer.d.ts.map +1 -1
- package/dist/core/events/v3/producers/producer-state-observer.js +2 -1
- package/dist/core/events/v3/producers/recorder.d.ts +16 -5
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/recorder.js +31 -9
- package/dist/core/events/v3/reader.d.ts.map +1 -1
- package/dist/core/events/v3/reader.js +10 -13
- package/dist/core/events/v3/runtime-build.d.ts.map +1 -1
- package/dist/core/events/v3/runtime-build.js +3 -2
- package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts +2 -2
- package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts.map +1 -1
- package/dist/core/events/v3/turn-telemetry.d.ts +2 -2
- package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -1
- package/dist/core/hooks/adapter/output.d.ts +16 -14
- package/dist/core/hooks/adapter/output.d.ts.map +1 -1
- package/dist/core/hooks/adapter/output.js +36 -38
- package/dist/core/hooks/backup-schedule.d.ts +34 -0
- package/dist/core/hooks/backup-schedule.d.ts.map +1 -0
- package/dist/core/hooks/backup-schedule.js +114 -0
- package/dist/core/hooks/cli.js +61 -18
- package/dist/core/hooks/codex-wsl-bridge.d.ts +2 -0
- package/dist/core/hooks/codex-wsl-bridge.d.ts.map +1 -1
- package/dist/core/hooks/codex-wsl-bridge.js +18 -4
- package/dist/core/hooks/index.d.ts +1 -0
- package/dist/core/hooks/index.d.ts.map +1 -1
- package/dist/core/hooks/index.js +1 -0
- package/dist/core/hooks/prompt-context/contract.d.ts +61 -0
- package/dist/core/hooks/prompt-context/contract.d.ts.map +1 -0
- package/dist/core/hooks/prompt-context/contract.js +102 -0
- package/dist/core/hooks/prompt-context/index.d.ts +5 -0
- package/dist/core/hooks/prompt-context/index.d.ts.map +1 -0
- package/dist/core/hooks/prompt-context/index.js +2 -0
- package/dist/core/hooks/prompt-context/runner.d.ts +24 -0
- package/dist/core/hooks/prompt-context/runner.d.ts.map +1 -0
- package/dist/core/hooks/prompt-context/runner.js +249 -0
- package/dist/core/qa-artifacts.d.ts +3 -0
- package/dist/core/qa-artifacts.d.ts.map +1 -1
- package/dist/core/qa-artifacts.js +25 -3
- package/dist/core/resources/contract.d.ts +69 -3
- package/dist/core/resources/contract.d.ts.map +1 -1
- package/dist/core/resources/contract.js +1 -1
- package/dist/core/resources/index.d.ts +1 -0
- package/dist/core/resources/index.d.ts.map +1 -1
- package/dist/core/resources/index.js +1 -0
- package/dist/core/resources/native.d.ts +36 -0
- package/dist/core/resources/native.d.ts.map +1 -0
- package/dist/core/resources/native.js +418 -0
- package/dist/core/resources/sampler.d.ts +2 -0
- package/dist/core/resources/sampler.d.ts.map +1 -1
- package/dist/core/resources/sampler.js +31 -1
- package/dist/core/resources/status.d.ts +61 -0
- package/dist/core/resources/status.d.ts.map +1 -0
- package/dist/core/resources/status.js +536 -0
- package/dist/core/resources/system.d.ts +27 -0
- package/dist/core/resources/system.d.ts.map +1 -0
- package/dist/core/resources/system.js +439 -0
- package/dist/core/semantic/contract.d.ts +13 -13
- package/dist/core/semantic/service.d.ts +2 -0
- package/dist/core/semantic/service.d.ts.map +1 -1
- package/dist/core/semantic/service.js +27 -4
- package/dist/core/storage/builtins.js +41 -0
- package/dist/core/supervisor/contract.d.ts +41 -3
- package/dist/core/supervisor/contract.d.ts.map +1 -1
- package/dist/core/supervisor/contract.js +3 -2
- package/dist/core/supervisor/findings.d.ts +3 -0
- package/dist/core/supervisor/findings.d.ts.map +1 -1
- package/dist/core/supervisor/findings.js +88 -0
- package/dist/core/supervisor/history.d.ts.map +1 -1
- package/dist/core/supervisor/history.js +14 -0
- package/dist/core/supervisor/ledger-state.d.ts +55 -0
- package/dist/core/supervisor/ledger-state.d.ts.map +1 -0
- package/dist/core/supervisor/ledger-state.js +0 -0
- package/dist/core/supervisor/service.d.ts.map +1 -1
- package/dist/core/supervisor/service.js +120 -7
- package/dist/core/supervisor/storage.d.ts +3 -1
- package/dist/core/supervisor/storage.d.ts.map +1 -1
- package/dist/core/supervisor/storage.js +4 -0
- package/dist/core/workflow/admission.d.ts +3 -0
- package/dist/core/workflow/admission.d.ts.map +1 -1
- package/dist/core/workflow/admission.js +28 -16
- package/dist/core/workflow/engine.js +2 -2
- package/dist/core/workflow/live-session-v3.d.ts.map +1 -1
- package/dist/core/workflow/live-session-v3.js +6 -1
- package/dist/core/workflow/proof.d.ts.map +1 -1
- package/dist/core/workflow/proof.js +4 -3
- package/dist/lib/browser/capture-fidelity.d.ts +7 -0
- package/dist/lib/browser/capture-fidelity.d.ts.map +1 -1
- package/dist/lib/browser/capture-fidelity.js +17 -0
- package/dist/lib/browser/client.d.ts +9 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +85 -37
- package/dist/lib/browser/index.d.ts +3 -1
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +2 -1
- package/dist/lib/browser/page-review-budget.d.ts +13 -0
- package/dist/lib/browser/page-review-budget.d.ts.map +1 -0
- package/dist/lib/browser/page-review-budget.js +251 -0
- package/dist/lib/browser/page-review-contracts.d.ts +127 -0
- package/dist/lib/browser/page-review-contracts.d.ts.map +1 -0
- package/dist/lib/browser/page-review-contracts.js +5 -0
- package/dist/lib/browser/page-review-evidence.d.ts +48 -0
- package/dist/lib/browser/page-review-evidence.d.ts.map +1 -0
- package/dist/lib/browser/page-review-evidence.js +340 -0
- package/dist/lib/browser/page-review-judge.d.ts +1 -1
- package/dist/lib/browser/page-review-judge.d.ts.map +1 -1
- package/dist/lib/browser/page-review-judge.js +46 -38
- package/dist/lib/browser/page-review-pack.d.ts +44 -22
- package/dist/lib/browser/page-review-pack.d.ts.map +1 -1
- package/dist/lib/browser/page-review-pack.js +116 -36
- package/dist/lib/browser/page-review-source.d.ts +12 -0
- package/dist/lib/browser/page-review-source.d.ts.map +1 -0
- package/dist/lib/browser/page-review-source.js +22 -0
- package/dist/lib/browser/qa-run-contracts.d.ts +35 -9
- package/dist/lib/browser/qa-run-contracts.d.ts.map +1 -1
- package/dist/lib/browser/qa-run-contracts.js +48 -14
- package/dist/lib/browser/qa-run.d.ts.map +1 -1
- package/dist/lib/browser/qa-run.js +215 -68
- package/dist/lib/browser/qa-snapshot.d.ts +6 -0
- package/dist/lib/browser/qa-snapshot.d.ts.map +1 -1
- package/dist/lib/browser/qa-snapshot.js +259 -48
- package/dist/lib/browser/review-capture-transaction.d.ts +13 -0
- package/dist/lib/browser/review-capture-transaction.d.ts.map +1 -0
- package/dist/lib/browser/review-capture-transaction.js +79 -0
- package/dist/lib/browser/standalone-html.d.ts.map +1 -1
- package/dist/lib/browser/standalone-html.js +4 -2
- package/dist/lib/browser/thumbnail-association.d.ts +34 -0
- package/dist/lib/browser/thumbnail-association.d.ts.map +1 -0
- package/dist/lib/browser/thumbnail-association.js +158 -0
- package/dist/lib/browser/tiling.d.ts +30 -0
- package/dist/lib/browser/tiling.d.ts.map +1 -1
- package/dist/lib/browser/tiling.js +38 -0
- package/dist/lib/docs-metadata-managed.d.ts.map +1 -1
- package/dist/lib/docs-metadata-managed.js +4 -1
- package/dist/lib/identities/assume.d.ts.map +1 -1
- package/dist/lib/identities/assume.js +7 -1
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +1 -0
- package/dist/lib/local-file-url.d.ts +12 -0
- package/dist/lib/local-file-url.d.ts.map +1 -1
- package/dist/lib/local-file-url.js +16 -2
- package/dist/lib/tunnel/state.d.ts +19 -4
- package/dist/lib/tunnel/state.d.ts.map +1 -1
- package/dist/lib/tunnel/state.js +53 -13
- package/package.json +7 -4
- package/schemas/config.schema.json +69 -2
- package/src/commands/agents.ts +42 -9
- package/src/commands/artifacts.ts +130 -6
- package/src/commands/backup.ts +287 -34
- package/src/commands/browse.ts +564 -267
- package/src/commands/diagnostics.ts +6 -3
- package/src/commands/ledger-v3.ts +20 -3
- package/src/commands/qa-run.ts +37 -3
- package/src/commands/qa-status.ts +11 -2
- package/src/commands/resources.ts +23 -3
- package/src/commands/review-pack.ts +165 -62
- package/src/commands/tunnel.ts +2 -1
- package/src/core/agents/canonical-emit.ts +4 -2
- package/src/core/agents/cli.ts +14 -6
- package/src/core/agents/live-authority-v3.ts +7 -3
- package/src/core/agents/live-lifecycle-v3.ts +2 -2
- package/src/core/agents/render/prompt-context.ts +68 -14
- package/src/core/agents/session-finalizer-v3.ts +2 -2
- package/src/core/agents/state/live-coordination-view.ts +4 -4
- package/src/core/agents/state/names.ts +92 -7
- package/src/core/agents/state/stale-sweep.ts +22 -8
- package/src/core/agents/turn-elapsed.ts +135 -0
- package/src/core/artifacts/activity.ts +71 -0
- package/src/core/artifacts/delivery-card.ts +375 -0
- package/src/core/artifacts/index.ts +385 -91
- package/src/core/artifacts/mutation-lock.ts +106 -0
- package/src/core/backup/host-snapshot.ts +76 -0
- package/src/core/config.ts +66 -13
- package/src/core/diagnostics/advice.ts +148 -120
- package/src/core/diagnostics/bundle.ts +138 -52
- package/src/core/diagnostics/comparison.ts +6 -2
- package/src/core/diagnostics/contract.ts +39 -42
- package/src/core/diagnostics/index.ts +2 -0
- package/src/core/diagnostics/pressure-contract.ts +294 -0
- package/src/core/diagnostics/pressure.ts +1361 -0
- package/src/core/diagnostics/replay.ts +116 -11
- package/src/core/events/v3/adapter-id.ts +12 -0
- package/src/core/events/v3/archive-retention.ts +3 -6
- package/src/core/events/v3/bootstrap.ts +163 -16
- package/src/core/events/v3/capabilities.ts +75 -25
- package/src/core/events/v3/capability-drift.ts +2 -2
- package/src/core/events/v3/control-witness.ts +172 -41
- package/src/core/events/v3/control.ts +34 -2
- package/src/core/events/v3/index.ts +3 -0
- package/src/core/events/v3/live-feed.ts +23 -5
- package/src/core/events/v3/live-routing.ts +14 -2
- package/src/core/events/v3/producers/command-recorder.ts +4 -4
- package/src/core/events/v3/producers/coordination-recorder.ts +4 -4
- package/src/core/events/v3/producers/hook-base.ts +21 -16
- package/src/core/events/v3/producers/hook.ts +21 -4
- package/src/core/events/v3/producers/intake.ts +6 -6
- package/src/core/events/v3/producers/producer-state-observer.ts +2 -1
- package/src/core/events/v3/producers/recorder.ts +50 -21
- package/src/core/events/v3/reader.ts +14 -13
- package/src/core/events/v3/runtime-build.ts +3 -2
- package/src/core/events/v3/runtime-telemetry-capabilities.ts +3 -3
- package/src/core/events/v3/turn-telemetry.ts +4 -4
- package/src/core/hooks/adapter/output.ts +50 -36
- package/src/core/hooks/backup-schedule.ts +147 -0
- package/src/core/hooks/cli.ts +65 -14
- package/src/core/hooks/codex-wsl-bridge.ts +21 -5
- package/src/core/hooks/index.ts +1 -0
- package/src/core/hooks/prompt-context/contract.ts +177 -0
- package/src/core/hooks/prompt-context/index.ts +22 -0
- package/src/core/hooks/prompt-context/runner.ts +303 -0
- package/src/core/qa-artifacts.ts +29 -3
- package/src/core/resources/contract.ts +76 -3
- package/src/core/resources/index.ts +1 -0
- package/src/core/resources/native.ts +481 -0
- package/src/core/resources/sampler.ts +46 -1
- package/src/core/resources/status.ts +717 -0
- package/src/core/resources/system.ts +530 -0
- package/src/core/semantic/service.ts +37 -3
- package/src/core/storage/builtins.ts +41 -0
- package/src/core/supervisor/contract.ts +45 -3
- package/src/core/supervisor/findings.ts +159 -0
- package/src/core/supervisor/history.ts +15 -0
- package/src/core/supervisor/ledger-state.ts +0 -0
- package/src/core/supervisor/service.ts +133 -5
- package/src/core/supervisor/storage.ts +7 -0
- package/src/core/workflow/admission.ts +33 -17
- package/src/core/workflow/engine.ts +2 -2
- package/src/core/workflow/live-session-v3.ts +6 -8
- package/src/core/workflow/proof.ts +4 -3
- package/src/lib/browser/capture-fidelity.ts +23 -0
- package/src/lib/browser/client.ts +96 -44
- package/src/lib/browser/index.ts +15 -1
- package/src/lib/browser/page-review-budget.ts +309 -0
- package/src/lib/browser/page-review-contracts.ts +129 -0
- package/src/lib/browser/page-review-evidence.ts +465 -0
- package/src/lib/browser/page-review-judge.ts +56 -40
- package/src/lib/browser/page-review-pack.ts +181 -43
- package/src/lib/browser/page-review-source.ts +30 -0
- package/src/lib/browser/qa-run-contracts.ts +62 -18
- package/src/lib/browser/qa-run.ts +259 -71
- package/src/lib/browser/qa-snapshot.ts +289 -48
- package/src/lib/browser/review-capture-transaction.ts +106 -0
- package/src/lib/browser/standalone-html.ts +4 -2
- package/src/lib/browser/thumbnail-association.ts +190 -0
- package/src/lib/browser/tiling.ts +63 -0
- package/src/lib/docs-metadata-managed.ts +4 -1
- package/src/lib/identities/assume.ts +12 -4
- package/src/lib/instructions/templates.ts +1 -0
- package/src/lib/local-file-url.ts +17 -2
- package/src/lib/tunnel/state.ts +70 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/commands/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/commands/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA0B1E,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAmKN"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { monorepoRoot, resolveOwner } from "../core/agents/index.js";
|
|
2
2
|
import { readLiveCoordinationRow } from "../core/agents/state/live-coordination-view.js";
|
|
3
3
|
import { buildDiagnosticAdvice, captureDiagnosticBundle, compareDiagnosticBundles, DIAGNOSTIC_COMMAND_SCHEMA_VERSION, listDiagnosticBundles, renderDiagnosticBundleComparison, replayDiagnosticBundle, showDiagnosticBundle, } from "../core/diagnostics/index.js";
|
|
4
|
+
import { readPublishedPressure } from "../core/resources/status.js";
|
|
4
5
|
import { buildSupervisorTimeline, explainSupervisorFinding, readSupervisorExplanation, readSupervisorFindings, readSupervisorStatus, readSupervisorTimeline, } from "../core/supervisor/index.js";
|
|
5
6
|
export function registerDiagnosticsCommand(program, emit, context) {
|
|
6
7
|
const root = program
|
|
@@ -82,14 +83,16 @@ export function registerDiagnosticsCommand(program, emit, context) {
|
|
|
82
83
|
}
|
|
83
84
|
const report = readSupervisorFindings(repoRoot);
|
|
84
85
|
const findings = mergeFindings(report?.active ?? [], report?.transitions ?? []);
|
|
85
|
-
const
|
|
86
|
+
const published = readPublishedPressure(repoRoot);
|
|
86
87
|
emit.data({
|
|
87
88
|
schema_version: DIAGNOSTIC_COMMAND_SCHEMA_VERSION,
|
|
88
89
|
kind: "diagnostic_advice",
|
|
89
90
|
source: { mode: "live" },
|
|
90
91
|
advice: buildDiagnosticAdvice({
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
assessment: published.assessment,
|
|
93
|
+
priorHysteresis: published.prior_hysteresis,
|
|
94
|
+
sourceCapability: published.capability,
|
|
95
|
+
activeFindingCount: findings.filter((finding) => finding.state === "opened").length,
|
|
93
96
|
evaluatedAt: new Date().toISOString(),
|
|
94
97
|
}),
|
|
95
98
|
});
|
|
@@ -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;AAuC1E,2DAA2D;AAC3D,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAgbN"}
|
|
@@ -3,7 +3,7 @@ import { createHash } from "node:crypto";
|
|
|
3
3
|
import { existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import { compressSealedLegacyV1Segments, inventoryLegacyV1Segments, streamLegacyV1Rows, verifyLegacyV1HardFence, writeLegacyV1Canary, } from "../core/events/legacy-storage/index.js";
|
|
6
|
-
import { cleanEventV3Archives, initializeEventLedgerV3, inventoryEventV3Archives, readEventV3ControlState, recoverInvalidEventLedgerV3, sha256V3, } from "../core/events/v3/index.js";
|
|
6
|
+
import { cleanEventV3Archives, initializeEventLedgerV3, inventoryEventV3Archives, listHookProducerStateRecordsV3, readEventV3ControlState, recoverInvalidEventLedgerV3, sha256V3, } from "../core/events/v3/index.js";
|
|
7
7
|
import { authorizeEventV3SupportReplacement, inventoryEventV3Support, planEventV3SupportReplacement, planEventV3SupportTransaction, readEventV3SupportPackManifest, readEventV3SupportTransaction, streamEventV3SupportPackRecords, unpackEventV3SupportPack, verifyEventV3SupportTransactionShadow, writeEventV3SupportTransactionShadow, } from "../core/events/v3/support-storage/index.js";
|
|
8
8
|
/** Inspect or initialize the universal V3 event ledger. */
|
|
9
9
|
export function registerLedgerV3Command(program, emit, context) {
|
|
@@ -13,9 +13,24 @@ export function registerLedgerV3Command(program, emit, context) {
|
|
|
13
13
|
command
|
|
14
14
|
.command("status")
|
|
15
15
|
.description("Read the V3 control boundary without changing it")
|
|
16
|
-
.
|
|
16
|
+
.option("--root <path>", "Explicit coordination root")
|
|
17
|
+
.action((options) => {
|
|
17
18
|
try {
|
|
18
|
-
|
|
19
|
+
const root = resolve(options.root ?? coordRoot(context));
|
|
20
|
+
const control = readEventV3ControlState(root);
|
|
21
|
+
const producers = listHookProducerStateRecordsV3(root, { includeTerminal: true });
|
|
22
|
+
const counts = producers.reduce((summary, record) => {
|
|
23
|
+
summary[record.state.adapter] = (summary[record.state.adapter] ?? 0) + 1;
|
|
24
|
+
return summary;
|
|
25
|
+
}, {});
|
|
26
|
+
emit.data({
|
|
27
|
+
...control,
|
|
28
|
+
summary: {
|
|
29
|
+
adapters: Object.keys(counts).sort(),
|
|
30
|
+
producer_states: producers.length,
|
|
31
|
+
producer_states_by_adapter: counts,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
19
34
|
}
|
|
20
35
|
catch (error) {
|
|
21
36
|
emitFailure(emit, "ledger_v3_status_failed", error);
|
|
@@ -375,7 +390,8 @@ export function registerLedgerV3Command(program, emit, context) {
|
|
|
375
390
|
});
|
|
376
391
|
}
|
|
377
392
|
function coordRoot(context) {
|
|
378
|
-
return resolve(
|
|
393
|
+
return resolve(process.env.HARNERY_COORD_ROOT_OVERRIDE ??
|
|
394
|
+
context?.resolveCoordRoot?.() ??
|
|
379
395
|
context?.repoRoot ??
|
|
380
396
|
process.env.HARNERY_COORD_ROOT ??
|
|
381
397
|
process.cwd());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qa-run.d.ts","sourceRoot":"","sources":["../../src/commands/qa-run.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"qa-run.d.ts","sourceRoot":"","sources":["../../src/commands/qa-run.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA8B1E,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAqB/C,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAodN"}
|
package/dist/commands/qa-run.js
CHANGED
|
@@ -9,7 +9,7 @@ import { Option } from "commander";
|
|
|
9
9
|
import { recordQaSignal } from "../core/agents/qa-signal.js";
|
|
10
10
|
import { artifactsRoot } from "../core/artifacts/index.js";
|
|
11
11
|
import { resolveBinName, reviewPackAutoCleanEnabled } from "../core/config.js";
|
|
12
|
-
import { createManagedQaOutParent, resolveQaRepoRoot } from "../core/qa-artifacts.js";
|
|
12
|
+
import { createManagedQaOutParent, managedQaReviewGuidance, resolveQaRepoRoot, } from "../core/qa-artifacts.js";
|
|
13
13
|
import { acquireAdmission, admissionBaseDir, admissionStatus } from "../lib/admission.js";
|
|
14
14
|
import { deleteExpiredPacks, PAGE_REVIEW_DEFAULT_RETENTION_MINUTES, } from "../lib/browser/page-review-pack.js";
|
|
15
15
|
import { QA_RUN_JOB_FILENAME, QA_RUN_RESULT_FILENAME, QA_RUN_STATUS_FILENAME, runQaMatrix, } from "../lib/browser/qa-run.js";
|
|
@@ -35,6 +35,8 @@ export function registerQaRunCommand(program, emit, context) {
|
|
|
35
35
|
"always run serially; the judge pool is policy.critique_pool / --pool.")
|
|
36
36
|
.option("--pool <n>", "Vision calls in flight during the judge stage, across every context (1-16; default: " +
|
|
37
37
|
"the provider's own concurrency). Sets policy.critique_pool.")
|
|
38
|
+
.option("--tile-budget <n>", "Maximum native tiles across the complete review pack (8-400; default 96).")
|
|
39
|
+
.option("--accept-dispositions", "Apply fully reviewed prior decisions only to identical findings on identical native tiles.")
|
|
38
40
|
.option("--allow-metered", "Permit the critique provider's metered-API fallback. Default: subscription-backed " +
|
|
39
41
|
"headless harnesses only — exhaustion becomes an incomplete blocker, never a metered call.")
|
|
40
42
|
.option("--retain <minutes>", `Minutes the run's page review pack lives after the judge finishes before the whole ` +
|
|
@@ -125,6 +127,20 @@ export function registerQaRunCommand(program, emit, context) {
|
|
|
125
127
|
return;
|
|
126
128
|
}
|
|
127
129
|
const policy = { ...validation.job.policy };
|
|
130
|
+
if (opts.tileBudget !== undefined) {
|
|
131
|
+
const n = Number(opts.tileBudget);
|
|
132
|
+
if (!Number.isInteger(n) || n < 8 || n > 400) {
|
|
133
|
+
emit.error({
|
|
134
|
+
code: "qa_run_invalid_tile_budget",
|
|
135
|
+
message: "--tile-budget must be an integer between 8 and 400",
|
|
136
|
+
});
|
|
137
|
+
process.exitCode = 1;
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
policy.critique_tile_budget = n;
|
|
141
|
+
}
|
|
142
|
+
if (opts.acceptDispositions)
|
|
143
|
+
policy.accept_dispositions = true;
|
|
128
144
|
if (opts.concurrency !== undefined) {
|
|
129
145
|
const n = Number.parseInt(opts.concurrency, 10);
|
|
130
146
|
if (!Number.isInteger(n) || n < 1 || n > 8) {
|
|
@@ -183,7 +199,9 @@ export function registerQaRunCommand(program, emit, context) {
|
|
|
183
199
|
outParent =
|
|
184
200
|
opts.outDir !== undefined
|
|
185
201
|
? resolve(opts.outDir)
|
|
186
|
-
: createManagedQaOutParent(repoRoot, "qa-run"
|
|
202
|
+
: createManagedQaOutParent(repoRoot, "qa-run", {
|
|
203
|
+
onCleanupWarning: (message) => emit.log(message, "warn"),
|
|
204
|
+
});
|
|
187
205
|
}
|
|
188
206
|
catch (err) {
|
|
189
207
|
emit.error({
|
|
@@ -258,6 +276,8 @@ export function registerQaRunCommand(program, emit, context) {
|
|
|
258
276
|
job.mode,
|
|
259
277
|
...(opts.concurrency !== undefined ? ["--concurrency", opts.concurrency] : []),
|
|
260
278
|
...(opts.pool !== undefined ? ["--pool", opts.pool] : []),
|
|
279
|
+
...(opts.tileBudget !== undefined ? ["--tile-budget", opts.tileBudget] : []),
|
|
280
|
+
...(opts.acceptDispositions ? ["--accept-dispositions"] : []),
|
|
261
281
|
...(opts.allowMetered ? ["--allow-metered"] : []),
|
|
262
282
|
...(opts.retain !== undefined ? ["--retain", opts.retain] : []),
|
|
263
283
|
"--out-dir",
|
|
@@ -372,8 +392,11 @@ export function registerQaRunCommand(program, emit, context) {
|
|
|
372
392
|
// session sees the runner clock instead of inferring QA time from
|
|
373
393
|
// session age. Best-effort by contract: never throws.
|
|
374
394
|
recordQaSignal(result);
|
|
395
|
+
const afterReview = managedQaReviewGuidance(repoRoot, outParent);
|
|
375
396
|
if (opts.json)
|
|
376
|
-
emit.data(result);
|
|
397
|
+
emit.data({ ...result, ...(afterReview ? { after_review: afterReview } : {}) });
|
|
398
|
+
if (afterReview)
|
|
399
|
+
emit.log(afterReview, "info");
|
|
377
400
|
const resultPath = join(result.run.out_dir, QA_RUN_RESULT_FILENAME);
|
|
378
401
|
for (const blocker of result.blockers) {
|
|
379
402
|
emit.log(`blocker [${blocker.stage}${blocker.context_id ? ` ${blocker.context_id}` : ""}]: ${blocker.reason}`, "warn");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qa-status.d.ts","sourceRoot":"","sources":["../../src/commands/qa-status.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"qa-status.d.ts","sourceRoot":"","sources":["../../src/commands/qa-status.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAkB1E,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAG5C;0DAC0D;AAC1D,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAsCpD,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA6B3F;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAkErF;AAMD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAC;IAClB;qCACiC;IACjC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4EAA4E;IAC5E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAQjC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,sBAAsB,CAiK3F;AAkHD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAsGN"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// machine-wide admission queue instead of any one run.
|
|
9
9
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
10
10
|
import { dirname, join, resolve } from "node:path";
|
|
11
|
-
import { latestManagedQaRun, resolveQaRepoRoot } from "../core/qa-artifacts.js";
|
|
11
|
+
import { latestManagedQaRun, managedQaReviewGuidance, resolveQaRepoRoot, } from "../core/qa-artifacts.js";
|
|
12
12
|
import { admissionBaseDir, admissionStatus, pidAlive as defaultPidAlive, listAdmissionResources, } from "../lib/admission.js";
|
|
13
13
|
import { QA_RUN_LATEST_FILENAME, QA_RUN_RESULT_FILENAME, QA_RUN_STATUS_FILENAME, } from "../lib/browser/qa-run.js";
|
|
14
14
|
import { QA_RUN_STAGES, } from "../lib/browser/qa-run-contracts.js";
|
|
@@ -461,9 +461,14 @@ export function registerQaStatusCommand(program, emit, context) {
|
|
|
461
461
|
const report = outcome.report;
|
|
462
462
|
const settled = report.terminal || report.state === "dead";
|
|
463
463
|
if (settled || !opts.wait) {
|
|
464
|
+
const afterReview = report.terminal
|
|
465
|
+
? managedQaReviewGuidance(resolveQaRepoRoot(context), dirname(runDir))
|
|
466
|
+
: undefined;
|
|
464
467
|
if (opts.json)
|
|
465
|
-
emit.data(report);
|
|
468
|
+
emit.data({ ...report, ...(afterReview ? { after_review: afterReview } : {}) });
|
|
466
469
|
renderReport(emit, report);
|
|
470
|
+
if (afterReview)
|
|
471
|
+
emit.log(afterReview, "info");
|
|
467
472
|
if (!settled && !opts.wait) {
|
|
468
473
|
emit.log("still in progress; rerun with --wait to block until the run settles", "info");
|
|
469
474
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/commands/resources.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG1E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/commands/resources.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG1E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAoCN"}
|
|
@@ -1,15 +1,35 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { formatResourceStatus, readResourceStatus } from "../core/resources/status.js";
|
|
3
3
|
export function registerResourcesCommand(program, emit, context) {
|
|
4
4
|
const resources = program
|
|
5
5
|
.command("resources")
|
|
6
|
-
.description("Observe local CPU
|
|
6
|
+
.description("Observe local CPU, memory, disk capacity, and resource pressure");
|
|
7
|
+
resources
|
|
8
|
+
.command("status")
|
|
9
|
+
.description("Read the supervisor's cached resource measurements without sampling")
|
|
10
|
+
.option("--root <path>", "Explicit coordination root")
|
|
11
|
+
.option("--json", "Bounded structured output")
|
|
12
|
+
.option("--processes", "Include up to 20 processes, largest memory first")
|
|
13
|
+
.action((options) => {
|
|
14
|
+
const status = readResourceStatus(resolve(options.root ?? coordRoot(context)), {
|
|
15
|
+
includeProcesses: options.processes,
|
|
16
|
+
});
|
|
17
|
+
if (options.json) {
|
|
18
|
+
emit.config({ format: "json" });
|
|
19
|
+
emit.data(status);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
emit.config({ format: "text" });
|
|
23
|
+
emit.text(formatResourceStatus(status, program.name()));
|
|
24
|
+
}
|
|
25
|
+
});
|
|
7
26
|
resources
|
|
8
27
|
.command("snapshot")
|
|
9
28
|
.description("Capture one machine and process-resource snapshot")
|
|
10
29
|
.option("--root <path>", "Explicit coordination root")
|
|
11
|
-
.action((options) => {
|
|
30
|
+
.action(async (options) => {
|
|
12
31
|
try {
|
|
32
|
+
const { sampleResources } = await import("../core/resources/sampler.js");
|
|
13
33
|
emit.data(sampleResources(resolve(options.root ?? coordRoot(context))).snapshot);
|
|
14
34
|
}
|
|
15
35
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-pack.d.ts","sourceRoot":"","sources":["../../src/commands/review-pack.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-pack.d.ts","sourceRoot":"","sources":["../../src/commands/review-pack.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAkV1E,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAugCN"}
|
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
// and judge one from disk through one bounded pool of vision calls. qa-run
|
|
4
4
|
// composes the same two library halves; this command exposes them directly
|
|
5
5
|
// so an agent can prepare a page for review, or review a pack, on its own.
|
|
6
|
-
import { mkdirSync, writeFileSync } from "node:fs";
|
|
6
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
7
|
+
import { userInfo } from "node:os";
|
|
7
8
|
import { resolve } from "node:path";
|
|
9
|
+
import { resolveOwner } from "../core/agents/index.js";
|
|
10
|
+
import { readLiveCoordinationRow } from "../core/agents/state/live-coordination-view.js";
|
|
8
11
|
import { artifactsRoot } from "../core/artifacts/index.js";
|
|
9
12
|
import { resolveBinName, reviewPackAutoCleanEnabled } from "../core/config.js";
|
|
10
13
|
import { createManagedQaOutParent, resolveQaRepoRoot } from "../core/qa-artifacts.js";
|
|
11
14
|
import { DEFAULT_CRITIQUE_RUBRIC } from "../lib/browser/critique.js";
|
|
15
|
+
import { persistPackReviewDecisions } from "../lib/browser/page-review-evidence.js";
|
|
12
16
|
import { judgePageReviewPack, toCritiqueRecords } from "../lib/browser/page-review-judge.js";
|
|
13
17
|
import { aggregateMachineOutcome, deleteExpiredPacks, expandedTileFilename, finalizePageReviewPack, findPackTile, findPageReviewPacks, isPackDeletable, listPackContexts, machineFindingTargets, PAGE_REVIEW_DEFAULT_RETENTION_MINUTES, PAGE_REVIEW_DISPOSITIONS, PAGE_REVIEW_FINDING_CATEGORIES, PAGE_REVIEW_FINDING_SEVERITIES, PAGE_REVIEW_SUBAGENT_MODELS, PAGE_REVIEW_VERDICT_SCHEMA, packPaths, readPackContext, readPackFindings, readPackInspectionPlan, readPackManifest, readPackVerdict, resolvePackVerdict, validateFindingsDocument, writePackFindings, } from "../lib/browser/page-review-pack.js";
|
|
14
18
|
import { defaultQaRunExec, QA_RUN_HEADLESS_ONLY_ENV } from "../lib/browser/qa-run.js";
|
|
@@ -201,8 +205,7 @@ export function registerReviewPackCommand(program, emit, context) {
|
|
|
201
205
|
.option("--context <spec>", "Rendering context <viewport>[:<theme>[:<state>]] (repeatable; default desktop and " +
|
|
202
206
|
"mobile in light and dark).", (value, previous = []) => [...previous, value], [])
|
|
203
207
|
.option("--scope <selector>", "Also tile one screenshot per element matching <selector> (repeatable).", (value, previous = []) => [...previous, value], [])
|
|
204
|
-
.option("--
|
|
205
|
-
.option("--max-tiles <n>", "Full-page band cap per context (browse --check-critique-max-tiles).")
|
|
208
|
+
.option("--max-tiles <n>", "Native tile cap per context, including required top and bottom bands.")
|
|
206
209
|
.option("--concurrency <n>", "Concurrent capture browsers (1-8; default 2).", "2")
|
|
207
210
|
.option("--timeout <ms>", "Per-capture timeout in milliseconds (default 120000).", "120000")
|
|
208
211
|
.option("--retain <minutes>", `Minutes the pack lives before the whole directory is deleted (1-43200; default ` +
|
|
@@ -287,7 +290,6 @@ export function registerReviewPackCommand(program, emit, context) {
|
|
|
287
290
|
ctx.theme,
|
|
288
291
|
"--qa-state",
|
|
289
292
|
ctx.state,
|
|
290
|
-
...(opts.noBands ? ["--no-review-pack-bands"] : []),
|
|
291
293
|
...(opts.scope ?? []).flatMap((selector) => ["--review-pack-scope", selector]),
|
|
292
294
|
...(opts.maxTiles !== undefined ? ["--check-critique-max-tiles", opts.maxTiles] : []),
|
|
293
295
|
];
|
|
@@ -434,13 +436,14 @@ export function registerReviewPackCommand(program, emit, context) {
|
|
|
434
436
|
const merged = new Map((manifest.critique ?? []).map((row) => [row.context_id, row]));
|
|
435
437
|
for (const row of toCritiqueRecords(result))
|
|
436
438
|
merged.set(row.context_id, row);
|
|
439
|
+
const judgedRecords = new Map(result.contexts.map((row) => [row.context_id, row.record]));
|
|
437
440
|
finalizePageReviewPack({
|
|
438
441
|
packDir,
|
|
439
442
|
target: manifest.target,
|
|
440
443
|
...(manifest.tested_revision !== undefined
|
|
441
444
|
? { tested_revision: manifest.tested_revision }
|
|
442
445
|
: {}),
|
|
443
|
-
contexts: manifest.contexts,
|
|
446
|
+
contexts: manifest.contexts.map((record) => judgedRecords.get(record.id) ?? record),
|
|
444
447
|
gates: manifest.gates,
|
|
445
448
|
critique: [...merged.values()],
|
|
446
449
|
pool: result.pool,
|
|
@@ -696,6 +699,23 @@ export function registerReviewPackCommand(program, emit, context) {
|
|
|
696
699
|
.option("--json", "Print the summary as JSON.")
|
|
697
700
|
.action((dir, opts) => {
|
|
698
701
|
const packDir = resolve(dir);
|
|
702
|
+
const stubPath = resolve(packDir, "pack-expired.json");
|
|
703
|
+
if (existsSync(stubPath)) {
|
|
704
|
+
try {
|
|
705
|
+
const stub = JSON.parse(readFileSync(stubPath, "utf8"));
|
|
706
|
+
if (stub.schema !== "harnery-page-review-expired/v1")
|
|
707
|
+
throw new Error("Unknown expired pack schema");
|
|
708
|
+
if (opts.json)
|
|
709
|
+
emit.data(stub);
|
|
710
|
+
else
|
|
711
|
+
emit.log(`expired pack: ${stub.target}; machine ${stub.machine_outcome ?? "not judged"}; reviewed ${stub.result?.reviewed_outcome ?? "no verdict"}`, "info");
|
|
712
|
+
}
|
|
713
|
+
catch (error) {
|
|
714
|
+
emit.error({ code: "review_pack_invalid_stub", message: String(error) });
|
|
715
|
+
process.exitCode = 1;
|
|
716
|
+
}
|
|
717
|
+
return;
|
|
718
|
+
}
|
|
699
719
|
let manifest;
|
|
700
720
|
try {
|
|
701
721
|
manifest = readPackManifest(packDir);
|
|
@@ -889,16 +909,20 @@ export function registerReviewPackCommand(program, emit, context) {
|
|
|
889
909
|
emit.data(finding);
|
|
890
910
|
});
|
|
891
911
|
root
|
|
892
|
-
.command("disposition <dir> <target>
|
|
912
|
+
.command("disposition <dir> <target-or-disposition> [disposition]")
|
|
893
913
|
.description("Record the reviewer's verdict on one machine finding. <target> is " +
|
|
894
914
|
"<context-id>/<tile-id>#<n>, n the finding's 0-based position among that tile's " +
|
|
895
915
|
`findings in evidence/critique.json; <disposition> is one of ${PAGE_REVIEW_DISPOSITIONS.join(", ")}. ` +
|
|
896
916
|
"A target that names no machine finding is refused; a prior disposition of the same " +
|
|
897
917
|
"target is replaced. evidence/critique.json itself is never rewritten.")
|
|
898
918
|
.option("--note <text>", "Why; what the tile actually shows.")
|
|
899
|
-
.option("--by <name>", "Who dispositioned it.")
|
|
919
|
+
.option("--by <name>", "Who dispositioned it (default: current agent or local account).")
|
|
920
|
+
.option("--target <target>", "Explicit target (repeatable); use disposition as the first positional argument.", (value, previous = []) => [...previous, value], [])
|
|
921
|
+
.option("--all-high", "Disposition every high finding in --context.")
|
|
922
|
+
.option("--context <id>", "Required with --all-high.")
|
|
900
923
|
.option("--json", "Print the written disposition as JSON.")
|
|
901
|
-
.action((dir,
|
|
924
|
+
.action((dir, targetOrDisposition, positionalDisposition, opts) => {
|
|
925
|
+
const disposition = positionalDisposition ?? targetOrDisposition;
|
|
902
926
|
const pack = readReviewerPack(dir, emit);
|
|
903
927
|
if (!pack)
|
|
904
928
|
return;
|
|
@@ -920,36 +944,70 @@ export function registerReviewPackCommand(program, emit, context) {
|
|
|
920
944
|
return;
|
|
921
945
|
}
|
|
922
946
|
const targets = machineFindingTargets(manifest.critique);
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
947
|
+
if (opts.allHigh && (!opts.context || positionalDisposition || opts.target?.length)) {
|
|
948
|
+
emit.error({
|
|
949
|
+
code: "review_pack_invalid_selection",
|
|
950
|
+
message: "--all-high requires --context and cannot be combined with explicit targets",
|
|
951
|
+
});
|
|
952
|
+
process.exitCode = 1;
|
|
953
|
+
return;
|
|
954
|
+
}
|
|
955
|
+
if (opts.context && !manifest.contexts.some((ctx) => ctx.id === opts.context)) {
|
|
956
|
+
emit.error({
|
|
957
|
+
code: "review_pack_unknown_context",
|
|
958
|
+
message: "Unknown disposition context",
|
|
959
|
+
});
|
|
960
|
+
process.exitCode = 1;
|
|
961
|
+
return;
|
|
962
|
+
}
|
|
963
|
+
const selected = [
|
|
964
|
+
...new Set(opts.allHigh
|
|
965
|
+
? [...targets]
|
|
966
|
+
.filter(([, f]) => f.context_id === opts.context && f.severity === "high")
|
|
967
|
+
.map(([key]) => key)
|
|
968
|
+
: [
|
|
969
|
+
...(positionalDisposition ? targetOrDisposition.split(",") : []),
|
|
970
|
+
...(opts.target ?? []),
|
|
971
|
+
]
|
|
972
|
+
.map((t) => t.trim())
|
|
973
|
+
.filter(Boolean)),
|
|
974
|
+
];
|
|
975
|
+
const invalid = selected.filter((target) => !targets.has(target));
|
|
976
|
+
if (!selected.length || invalid.length) {
|
|
926
977
|
emit.error({
|
|
927
978
|
code: "review_pack_unknown_finding",
|
|
928
|
-
message:
|
|
929
|
-
(sample ? ` (known targets include: ${sample})` : " (the critique holds no findings)"),
|
|
979
|
+
message: `No valid selection, or unknown target(s): ${invalid.join(", ")} (known targets include: ${[...targets.keys()].slice(0, 8).join(", ")})`,
|
|
930
980
|
});
|
|
931
981
|
process.exitCode = 1;
|
|
932
982
|
return;
|
|
933
983
|
}
|
|
934
|
-
const
|
|
935
|
-
|
|
984
|
+
const owner = resolveOwner();
|
|
985
|
+
const by = opts.by?.trim() ||
|
|
986
|
+
(owner
|
|
987
|
+
? readLiveCoordinationRow(resolveQaRepoRoot(context), owner)?.name || owner
|
|
988
|
+
: userInfo().username);
|
|
989
|
+
const entries = selected.map((target) => ({
|
|
990
|
+
target,
|
|
936
991
|
disposition: disposition,
|
|
937
|
-
...(opts.note
|
|
938
|
-
|
|
992
|
+
...(opts.note === undefined ? {} : { note: opts.note }),
|
|
993
|
+
by,
|
|
939
994
|
at: new Date().toISOString(),
|
|
940
|
-
};
|
|
941
|
-
const kept = (doc.dispositions ?? []).filter((d) => d.target !== entry.target);
|
|
995
|
+
}));
|
|
942
996
|
const next = {
|
|
943
997
|
...doc,
|
|
944
998
|
reviewed_at: new Date().toISOString(),
|
|
945
|
-
dispositions: [
|
|
999
|
+
dispositions: [
|
|
1000
|
+
...(doc.dispositions ?? []).filter((d) => !selected.includes(d.target)),
|
|
1001
|
+
...entries,
|
|
1002
|
+
],
|
|
946
1003
|
};
|
|
947
1004
|
if (!commitFindings(packDir, next, emit))
|
|
948
1005
|
return;
|
|
949
|
-
emit.log(`${
|
|
950
|
-
(kept.length < (doc.dispositions ?? []).length ? " (replaced)" : ""), "info");
|
|
1006
|
+
emit.log(`${entries.length} finding(s) dispositioned ${disposition} by ${by}${(doc.dispositions ?? []).some((d) => selected.includes(d.target)) ? " (replaced)" : ""}`, "info");
|
|
951
1007
|
if (opts.json)
|
|
952
|
-
emit.data(
|
|
1008
|
+
emit.data(entries.length === 1
|
|
1009
|
+
? entries[0]
|
|
1010
|
+
: { dispositions: entries });
|
|
953
1011
|
});
|
|
954
1012
|
root
|
|
955
1013
|
.command("verdict <dir>")
|
|
@@ -959,6 +1017,7 @@ export function registerReviewPackCommand(program, emit, context) {
|
|
|
959
1017
|
"primary tile also needs completed delegated-review coverage. Writes evidence/verdict.json " +
|
|
960
1018
|
"and refreshes review.md. Exit 2 on fail, 4 when critique or delegated coverage is " +
|
|
961
1019
|
"skipped or incomplete, 1 on a findings.json validation error.")
|
|
1020
|
+
.option("--snapshot-store <dir>", "Native baseline and durable decision store (default: local QA cache).")
|
|
962
1021
|
.option("--json", "Print the verdict as JSON.")
|
|
963
1022
|
.action((dir, opts) => {
|
|
964
1023
|
const pack = readReviewerPack(dir, emit);
|
|
@@ -981,6 +1040,22 @@ export function registerReviewPackCommand(program, emit, context) {
|
|
|
981
1040
|
...resolvePackVerdict(manifest, readPackInspectionPlan(packDir), doc),
|
|
982
1041
|
reviewed_at: new Date().toISOString(),
|
|
983
1042
|
};
|
|
1043
|
+
try {
|
|
1044
|
+
// Incomplete submissions may report their outcome, but cannot publish decisions.
|
|
1045
|
+
if (verdict.uncovered_primary_tiles.length === 0 &&
|
|
1046
|
+
verdict.machine_outcome !== "skipped" &&
|
|
1047
|
+
verdict.machine_outcome !== "incomplete") {
|
|
1048
|
+
persistPackReviewDecisions(packDir, opts.snapshotStore ? { root: resolve(opts.snapshotStore) } : {});
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
catch (error) {
|
|
1052
|
+
emit.error({
|
|
1053
|
+
code: "review_pack_decisions_not_saved",
|
|
1054
|
+
message: error instanceof Error ? error.message : String(error),
|
|
1055
|
+
});
|
|
1056
|
+
process.exitCode = 1;
|
|
1057
|
+
return;
|
|
1058
|
+
}
|
|
984
1059
|
const paths = packPaths(packDir);
|
|
985
1060
|
mkdirSync(paths.evidenceDir, { recursive: true });
|
|
986
1061
|
writeFileSync(paths.verdict, `${JSON.stringify(verdict, null, 2)}\n`);
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,EAYL,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
|
@@ -3,7 +3,7 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import { resolveBinName } from "../core/config.js";
|
|
5
5
|
import { processLogDestination, runRotatingProcessSync, spawnRotatingProcess, } from "../core/storage/process-log.js";
|
|
6
|
-
import { clearState, DEFAULT_INSTANCE, ensureCloudflared, gateLogFile, isProcessAlive, listStates, providerLogFile, readConfig, readState, writeConfig, writeState, } from "../lib/tunnel/state.js";
|
|
6
|
+
import { clearState, DEFAULT_INSTANCE, ensureCloudflared, gateLogFile, isProcessAlive, isTunnelStateLive, listStates, providerLogFile, readConfig, readState, writeConfig, writeState, } from "../lib/tunnel/state.js";
|
|
7
7
|
/**
|
|
8
8
|
* `tunnel`: provider-backed tunnel in front of a local upstream.
|
|
9
9
|
*
|
|
@@ -342,7 +342,7 @@ function providerIsAlive(state) {
|
|
|
342
342
|
return typeof pid === "number" && isProcessAlive(pid);
|
|
343
343
|
}
|
|
344
344
|
function tunnelIsAlive(state) {
|
|
345
|
-
return
|
|
345
|
+
return isTunnelStateLive(state);
|
|
346
346
|
}
|
|
347
347
|
/**
|
|
348
348
|
* Spawn the detached gate worker.
|
|
@@ -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 ("claude-code" | "cursor" | "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;
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* a 15-second safety budget; loaded-host checks normally finish in a few
|
|
10
10
|
* seconds and record the observation before the parent command exits.
|
|
11
11
|
*/
|
|
12
|
+
import type { EventAdapterIdV3 } from "../events/v3/adapter-id.js";
|
|
12
13
|
import type { LiveCoordinationObservationV3 } from "../events/v3/live-observation.js";
|
|
13
14
|
import type { Heartbeat } from "./state/heartbeat-reader.js";
|
|
14
15
|
export type EventV3EmitObservation = LiveCoordinationObservationV3 | {
|
|
@@ -20,7 +21,7 @@ export type EventV3EmitObservation = LiveCoordinationObservationV3 | {
|
|
|
20
21
|
export interface EventV3EmitInput {
|
|
21
22
|
owner: string;
|
|
22
23
|
session: string;
|
|
23
|
-
adapter:
|
|
24
|
+
adapter: EventAdapterIdV3;
|
|
24
25
|
observation: EventV3EmitObservation;
|
|
25
26
|
}
|
|
26
27
|
/**
|
|
@@ -35,7 +36,7 @@ export declare function emitEventV3(input: EventV3EmitInput): boolean;
|
|
|
35
36
|
/**
|
|
36
37
|
* Normalize the heartbeat's `platform` field to the canonical Adapter type.
|
|
37
38
|
*/
|
|
38
|
-
export declare function normalizeAdapter(platform: string | undefined):
|
|
39
|
+
export declare function normalizeAdapter(platform: string | undefined): EventAdapterIdV3;
|
|
39
40
|
/** Producer joins use the private native session ID, never its V3 fingerprint. */
|
|
40
41
|
export declare function nativeSessionIdentity(row: Pick<Heartbeat, "native_session_id" | "session_id"> | null | undefined, fallback: string): string;
|
|
41
42
|
//# sourceMappingURL=canonical-emit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-emit.d.ts","sourceRoot":"","sources":["../../../src/core/agents/canonical-emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,MAAM,sBAAsB,GAC9B,6BAA6B,GAC7B;IACE,UAAU,EAAE,yBAAyB,CAAC;IACtC,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEN,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"canonical-emit.d.ts","sourceRoot":"","sources":["../../../src/core/agents/canonical-emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,MAAM,sBAAsB,GAC9B,6BAA6B,GAC7B;IACE,UAAU,EAAE,yBAAyB,CAAC;IACtC,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEN,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAE5E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CA4C5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAK/E;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,mBAAmB,GAAG,YAAY,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3E,QAAQ,EAAE,MAAM,GACf,MAAM,CAQR"}
|
|
@@ -78,6 +78,8 @@ export function normalizeAdapter(platform) {
|
|
|
78
78
|
return "cursor";
|
|
79
79
|
if (platform === "codex")
|
|
80
80
|
return "codex";
|
|
81
|
+
if (platform === "openclaw")
|
|
82
|
+
return "openclaw";
|
|
81
83
|
return "claude-code";
|
|
82
84
|
}
|
|
83
85
|
/** Producer joins use the private native session ID, never its V3 fingerprint. */
|
package/dist/core/agents/cli.js
CHANGED
|
@@ -237,7 +237,10 @@ async function handleStateAction(root, action, rest) {
|
|
|
237
237
|
// same durable, idempotent pool path used by normal SessionStart.
|
|
238
238
|
if (task && before && humanFacing && !before.name?.trim()) {
|
|
239
239
|
const { assignName } = await import("./state/names.js");
|
|
240
|
-
const
|
|
240
|
+
const { coordFreshnessSeconds } = await import("../config.js");
|
|
241
|
+
const name = assignName(root, owner, "session", {
|
|
242
|
+
freshnessSecs: coordFreshnessSeconds(root),
|
|
243
|
+
});
|
|
241
244
|
before = writer.setAssignedNameCache(root, owner, name, "session");
|
|
242
245
|
if (!before) {
|
|
243
246
|
process.stderr.write(`agent-coord set-task: could not restore assigned name for ${owner}\n`);
|
|
@@ -273,7 +276,9 @@ async function handleStateAction(root, action, rest) {
|
|
|
273
276
|
currentHumanFacing &&
|
|
274
277
|
(!hb.name?.trim() || /^Agent unknown - /.test(hb.suggested_session_name ?? ""))) {
|
|
275
278
|
const { assignName } = await import("./state/names.js");
|
|
276
|
-
const
|
|
279
|
+
const { coordFreshnessSeconds } = await import("../config.js");
|
|
280
|
+
const name = hb.name?.trim() ||
|
|
281
|
+
assignName(root, owner, "session", { freshnessSecs: coordFreshnessSeconds(root) });
|
|
277
282
|
hb = writer.setAssignedNameCache(root, owner, name, "session");
|
|
278
283
|
}
|
|
279
284
|
}
|
|
@@ -557,7 +562,11 @@ async function handleAssignName(root, rest) {
|
|
|
557
562
|
process.stderr.write(`agent-coord assign-name: invalid kind ${kindArg}\n`);
|
|
558
563
|
return 2;
|
|
559
564
|
}
|
|
560
|
-
const
|
|
565
|
+
const { coordFreshnessSeconds } = await import("../config.js");
|
|
566
|
+
const name = assignName(root, owner, kindArg, {
|
|
567
|
+
freshnessSecs: coordFreshnessSeconds(root),
|
|
568
|
+
...(forkedFrom ? { forkedFrom } : {}),
|
|
569
|
+
});
|
|
561
570
|
process.stdout.write(`${JSON.stringify({
|
|
562
571
|
instance_id: owner,
|
|
563
572
|
name,
|
|
@@ -673,7 +682,6 @@ async function handlePromptContext(root, rest) {
|
|
|
673
682
|
const instanceId = args.instance;
|
|
674
683
|
const sessionId = args.session ?? instanceId;
|
|
675
684
|
const agentName = args.name;
|
|
676
|
-
const adapter = args.adapter;
|
|
677
685
|
const sessionNameNudge = args["session-name-nudge"] === "true";
|
|
678
686
|
const taskNudge = args["task-nudge"] === "true";
|
|
679
687
|
const hostPromptReminder = args["host-prompt-reminder"] === "true";
|
|
@@ -682,7 +690,7 @@ async function handlePromptContext(root, rest) {
|
|
|
682
690
|
// reminder with the adapter-neutral wording.
|
|
683
691
|
const turnRitualNudge = args["turn-ritual-nudge"] === "true" ? "generic" : args["turn-ritual-nudge"];
|
|
684
692
|
if (!instanceId) {
|
|
685
|
-
process.stderr.write("agent-coord prompt-context --instance <id> [--session <id>] [--name <agent-name>] [--
|
|
693
|
+
process.stderr.write("agent-coord prompt-context --instance <id> [--session <id>] [--name <agent-name>] [--session-name-nudge] [--task-nudge] [--host-prompt-reminder] [--status-footer-nudge] [--turn-ritual-nudge <adapter>]\n");
|
|
686
694
|
return 2;
|
|
687
695
|
}
|
|
688
696
|
const { renderPromptContext } = await import("./render/prompt-context.js");
|
|
@@ -696,7 +704,6 @@ async function handlePromptContext(root, rest) {
|
|
|
696
704
|
hostPromptReminder,
|
|
697
705
|
statusFooterNudge,
|
|
698
706
|
turnRitualNudge,
|
|
699
|
-
adapter,
|
|
700
707
|
});
|
|
701
708
|
process.stdout.write(text);
|
|
702
709
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-authority-v3.d.ts","sourceRoot":"","sources":["../../../src/core/agents/live-authority-v3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"live-authority-v3.d.ts","sourceRoot":"","sources":["../../../src/core/agents/live-authority-v3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,yBAAyB,CAAC;AAgBzF,OAAO,EACL,KAAK,mCAAmC,EAEzC,MAAM,iDAAiD,CAAC;AASzD,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,6BAA6B,CAAC;AAQrC,eAAO,MAAM,gCAAgC,EAAG,iBAA0B,CAAC;AAE3E,qBAAa,gCAAiC,SAAQ,KAAK;aAC7B,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAI3C;AAED,MAAM,MAAM,iCAAiC,GACzC;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,mCAAmC,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,oCAAoC;IACnD,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,OAAO,MAAM,EAAE,CAAC;IACrC,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,uCAAuC;IACtD,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,WAAW,GAAG,UAAU,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,uCAAuC,CA6H1C;AAqED;;;;;;GAMG;AACH,wBAAgB,wCAAwC,CAAC,KAAK,EAAE;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;CACvC,GAAG,+BAA+B,CAmFlC;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,oCAAoC,CAqDvC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5C,iCAAiC,CAiCnC;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,mBAAmB,GAAG;IAC3B,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,iCAAiC,CAoCnC;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mBAAmB,GAAG;IAC3B,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B,GACA,iCAAiC,CAwCnC;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,mBAAmB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAChE,iCAAiC,CAwBnC;AAuDD,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAI/E;AAaD,wBAAgB,kCAAkC,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,MAAM,EAAE,CAa3F"}
|