@openrig/cli 0.4.2 → 0.4.4
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/daemon/assets/guidance/openrig-start.md +6 -0
- package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +42 -2
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +115 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +12 -12
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +46 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +167 -3
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts +31 -0
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +62 -0
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/build-info.d.ts +12 -0
- package/daemon/dist/build-info.d.ts.map +1 -0
- package/daemon/dist/build-info.js +11 -0
- package/daemon/dist/build-info.js.map +1 -0
- package/daemon/dist/db/migrations/045_resume_verification.d.ts +29 -0
- package/daemon/dist/db/migrations/045_resume_verification.d.ts.map +1 -0
- package/daemon/dist/db/migrations/045_resume_verification.js +34 -0
- package/daemon/dist/db/migrations/045_resume_verification.js.map +1 -0
- package/daemon/dist/db/migrations/046_seat_identity_verdicts.d.ts +41 -0
- package/daemon/dist/db/migrations/046_seat_identity_verdicts.d.ts.map +1 -0
- package/daemon/dist/db/migrations/046_seat_identity_verdicts.js +56 -0
- package/daemon/dist/db/migrations/046_seat_identity_verdicts.js.map +1 -0
- package/daemon/dist/db/migrations/047_events_node_type_index.d.ts +48 -0
- package/daemon/dist/db/migrations/047_events_node_type_index.d.ts.map +1 -0
- package/daemon/dist/db/migrations/047_events_node_type_index.js +52 -0
- package/daemon/dist/db/migrations/047_events_node_type_index.js.map +1 -0
- package/daemon/dist/db/migrations/048_queue_item_evidence_ref.d.ts +18 -0
- package/daemon/dist/db/migrations/048_queue_item_evidence_ref.d.ts.map +1 -0
- package/daemon/dist/db/migrations/048_queue_item_evidence_ref.js +22 -0
- package/daemon/dist/db/migrations/048_queue_item_evidence_ref.js.map +1 -0
- package/daemon/dist/domain/activity-endpoint.d.ts +25 -0
- package/daemon/dist/domain/activity-endpoint.d.ts.map +1 -0
- package/daemon/dist/domain/activity-endpoint.js +91 -0
- package/daemon/dist/domain/activity-endpoint.js.map +1 -0
- package/daemon/dist/domain/claim-service.d.ts +36 -0
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +90 -0
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts +57 -0
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +149 -3
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/event-loop-monitor.d.ts +100 -0
- package/daemon/dist/domain/event-loop-monitor.d.ts.map +1 -0
- package/daemon/dist/domain/event-loop-monitor.js +127 -0
- package/daemon/dist/domain/event-loop-monitor.js.map +1 -0
- package/daemon/dist/domain/feed/attention-aggregator.d.ts +31 -0
- package/daemon/dist/domain/feed/attention-aggregator.d.ts.map +1 -0
- package/daemon/dist/domain/feed/attention-aggregator.js +119 -0
- package/daemon/dist/domain/feed/attention-aggregator.js.map +1 -0
- package/daemon/dist/domain/files/file-write-service.d.ts +11 -2
- package/daemon/dist/domain/files/file-write-service.d.ts.map +1 -1
- package/daemon/dist/domain/files/file-write-service.js +77 -0
- package/daemon/dist/domain/files/file-write-service.js.map +1 -1
- package/daemon/dist/domain/gate-predicate.d.ts +29 -0
- package/daemon/dist/domain/gate-predicate.d.ts.map +1 -0
- package/daemon/dist/domain/gate-predicate.js +73 -0
- package/daemon/dist/domain/gate-predicate.js.map +1 -0
- package/daemon/dist/domain/graph-projection.d.ts +7 -1
- package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
- package/daemon/dist/domain/graph-projection.js +19 -1
- package/daemon/dist/domain/graph-projection.js.map +1 -1
- package/daemon/dist/domain/hosts/fanout-contract.d.ts +33 -0
- package/daemon/dist/domain/hosts/fanout-contract.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/fanout-contract.js +23 -0
- package/daemon/dist/domain/hosts/fanout-contract.js.map +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +49 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.js +165 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts +35 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.js +105 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -0
- package/daemon/dist/domain/human-route-enforcer.d.ts +71 -0
- package/daemon/dist/domain/human-route-enforcer.d.ts.map +1 -0
- package/daemon/dist/domain/human-route-enforcer.js +80 -0
- package/daemon/dist/domain/human-route-enforcer.js.map +1 -0
- package/daemon/dist/domain/mission-control/audit-browse.d.ts +8 -0
- package/daemon/dist/domain/mission-control/audit-browse.d.ts.map +1 -1
- package/daemon/dist/domain/mission-control/audit-browse.js +19 -0
- package/daemon/dist/domain/mission-control/audit-browse.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts +1 -1
- package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-action-log.js +4 -0
- package/daemon/dist/domain/mission-control/mission-control-action-log.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js +1 -1
- package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-read-layer.js +1 -1
- package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts +28 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-write-contract.js +125 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +7 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +84 -5
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.js +11 -0
- package/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
- package/daemon/dist/domain/policies/idle-gate-qitem.d.ts +14 -0
- package/daemon/dist/domain/policies/idle-gate-qitem.d.ts.map +1 -0
- package/daemon/dist/domain/policies/idle-gate-qitem.js +114 -0
- package/daemon/dist/domain/policies/idle-gate-qitem.js.map +1 -0
- package/daemon/dist/domain/ps-projection.d.ts +28 -1
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +39 -0
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +25 -1
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +111 -7
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.d.ts +8 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +109 -27
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/restore-plan-preview.d.ts +25 -1
- package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
- package/daemon/dist/domain/restore-plan-preview.js +72 -4
- package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.d.ts +44 -2
- package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.js +92 -6
- package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/daemon/dist/domain/resume-token-capture.d.ts +50 -0
- package/daemon/dist/domain/resume-token-capture.d.ts.map +1 -0
- package/daemon/dist/domain/resume-token-capture.js +63 -0
- package/daemon/dist/domain/resume-token-capture.js.map +1 -0
- package/daemon/dist/domain/review/brief-spine.d.ts +19 -0
- package/daemon/dist/domain/review/brief-spine.d.ts.map +1 -0
- package/daemon/dist/domain/review/brief-spine.js +86 -0
- package/daemon/dist/domain/review/brief-spine.js.map +1 -0
- package/daemon/dist/domain/review/compose.d.ts +228 -0
- package/daemon/dist/domain/review/compose.d.ts.map +1 -0
- package/daemon/dist/domain/review/compose.js +773 -0
- package/daemon/dist/domain/review/compose.js.map +1 -0
- package/daemon/dist/domain/review/freeze.d.ts +31 -0
- package/daemon/dist/domain/review/freeze.d.ts.map +1 -0
- package/daemon/dist/domain/review/freeze.js +257 -0
- package/daemon/dist/domain/review/freeze.js.map +1 -0
- package/daemon/dist/domain/review/gather.d.ts +100 -0
- package/daemon/dist/domain/review/gather.d.ts.map +1 -0
- package/daemon/dist/domain/review/gather.js +676 -0
- package/daemon/dist/domain/review/gather.js.map +1 -0
- package/daemon/dist/domain/review/types.d.ts +258 -0
- package/daemon/dist/domain/review/types.d.ts.map +1 -0
- package/daemon/dist/domain/review/types.js +35 -0
- package/daemon/dist/domain/review/types.js.map +1 -0
- package/daemon/dist/domain/rig-status-compose.d.ts +62 -0
- package/daemon/dist/domain/rig-status-compose.d.ts.map +1 -0
- package/daemon/dist/domain/rig-status-compose.js +149 -0
- package/daemon/dist/domain/rig-status-compose.js.map +1 -0
- package/daemon/dist/domain/rig-teardown.d.ts +3 -1
- package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
- package/daemon/dist/domain/rig-teardown.js +4 -19
- package/daemon/dist/domain/rig-teardown.js.map +1 -1
- package/daemon/dist/domain/route-timing-recorder.d.ts +42 -0
- package/daemon/dist/domain/route-timing-recorder.d.ts.map +1 -0
- package/daemon/dist/domain/route-timing-recorder.js +62 -0
- package/daemon/dist/domain/route-timing-recorder.js.map +1 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts +64 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -0
- package/daemon/dist/domain/scope/scope-approve.js +153 -0
- package/daemon/dist/domain/scope/scope-approve.js.map +1 -0
- package/daemon/dist/domain/scope/scope-audit.d.ts +11 -1
- package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.js +203 -2
- package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +50 -7
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +273 -33
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/seat-identity-reconciler.d.ts +59 -0
- package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -0
- package/daemon/dist/domain/seat-identity-reconciler.js +207 -0
- package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -0
- package/daemon/dist/domain/seat-identity-store.d.ts +27 -0
- package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -0
- package/daemon/dist/domain/seat-identity-store.js +106 -0
- package/daemon/dist/domain/seat-identity-store.js.map +1 -0
- package/daemon/dist/domain/seat-switch-client-service.d.ts +57 -0
- package/daemon/dist/domain/seat-switch-client-service.d.ts.map +1 -0
- package/daemon/dist/domain/seat-switch-client-service.js +168 -0
- package/daemon/dist/domain/seat-switch-client-service.js.map +1 -0
- package/daemon/dist/domain/self-attach-service.d.ts +8 -0
- package/daemon/dist/domain/self-attach-service.d.ts.map +1 -1
- package/daemon/dist/domain/self-attach-service.js +20 -7
- package/daemon/dist/domain/self-attach-service.js.map +1 -1
- package/daemon/dist/domain/session-registry.d.ts +35 -4
- package/daemon/dist/domain/session-registry.d.ts.map +1 -1
- package/daemon/dist/domain/session-registry.js +89 -10
- package/daemon/dist/domain/session-registry.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +8 -1
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +143 -37
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +34 -2
- package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
- package/daemon/dist/domain/startup-proof.d.ts +63 -0
- package/daemon/dist/domain/startup-proof.d.ts.map +1 -0
- package/daemon/dist/domain/startup-proof.js +165 -0
- package/daemon/dist/domain/startup-proof.js.map +1 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts +103 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -0
- package/daemon/dist/domain/successor-session-launcher.js +246 -0
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -0
- package/daemon/dist/domain/topology/multi-rig-launcher.d.ts +49 -0
- package/daemon/dist/domain/topology/multi-rig-launcher.d.ts.map +1 -0
- package/daemon/dist/domain/topology/multi-rig-launcher.js +132 -0
- package/daemon/dist/domain/topology/multi-rig-launcher.js.map +1 -0
- package/daemon/dist/domain/topology/remote-up-leaf.d.ts +29 -0
- package/daemon/dist/domain/topology/remote-up-leaf.d.ts.map +1 -0
- package/daemon/dist/domain/topology/remote-up-leaf.js +60 -0
- package/daemon/dist/domain/topology/remote-up-leaf.js.map +1 -0
- package/daemon/dist/domain/topology/topology-manifest.d.ts +34 -0
- package/daemon/dist/domain/topology/topology-manifest.d.ts.map +1 -0
- package/daemon/dist/domain/topology/topology-manifest.js +195 -0
- package/daemon/dist/domain/topology/topology-manifest.js.map +1 -0
- package/daemon/dist/domain/types.d.ts +86 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js +8 -0
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/up-command-router.d.ts +1 -1
- package/daemon/dist/domain/up-command-router.d.ts.map +1 -1
- package/daemon/dist/domain/up-command-router.js +34 -2
- package/daemon/dist/domain/up-command-router.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +17 -0
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +109 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -2
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-jobs-repository.js +4 -0
- package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.js +19 -0
- package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js +51 -6
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.d.ts +11 -0
- package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.js +82 -0
- package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +18 -1
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/routes/activity.d.ts.map +1 -1
- package/daemon/dist/routes/activity.js +26 -0
- package/daemon/dist/routes/activity.js.map +1 -1
- package/daemon/dist/routes/agent-images.d.ts.map +1 -1
- package/daemon/dist/routes/agent-images.js +139 -0
- package/daemon/dist/routes/agent-images.js.map +1 -1
- package/daemon/dist/routes/compaction.d.ts +17 -0
- package/daemon/dist/routes/compaction.d.ts.map +1 -0
- package/daemon/dist/routes/compaction.js +125 -0
- package/daemon/dist/routes/compaction.js.map +1 -0
- package/daemon/dist/routes/config.d.ts.map +1 -1
- package/daemon/dist/routes/config.js +15 -6
- package/daemon/dist/routes/config.js.map +1 -1
- package/daemon/dist/routes/files.d.ts.map +1 -1
- package/daemon/dist/routes/files.js +45 -1
- package/daemon/dist/routes/files.js.map +1 -1
- package/daemon/dist/routes/mission-control.d.ts.map +1 -1
- package/daemon/dist/routes/mission-control.js +67 -2
- package/daemon/dist/routes/mission-control.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts +8 -2
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +44 -4
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/restore-check.d.ts +10 -0
- package/daemon/dist/routes/restore-check.d.ts.map +1 -1
- package/daemon/dist/routes/restore-check.js +46 -37
- package/daemon/dist/routes/restore-check.js.map +1 -1
- package/daemon/dist/routes/review.d.ts +3 -0
- package/daemon/dist/routes/review.d.ts.map +1 -0
- package/daemon/dist/routes/review.js +169 -0
- package/daemon/dist/routes/review.js.map +1 -0
- package/daemon/dist/routes/rigs.d.ts.map +1 -1
- package/daemon/dist/routes/rigs.js +70 -1
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/scope-approve.d.ts +3 -0
- package/daemon/dist/routes/scope-approve.d.ts.map +1 -0
- package/daemon/dist/routes/scope-approve.js +55 -0
- package/daemon/dist/routes/scope-approve.js.map +1 -0
- package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/daemon/dist/routes/scope-audit.js +28 -1
- package/daemon/dist/routes/scope-audit.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +53 -2
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.d.ts.map +1 -1
- package/daemon/dist/routes/sessions.js +44 -9
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/slices.d.ts.map +1 -1
- package/daemon/dist/routes/slices.js +49 -9
- package/daemon/dist/routes/slices.js.map +1 -1
- package/daemon/dist/routes/snapshots.d.ts.map +1 -1
- package/daemon/dist/routes/snapshots.js +16 -1
- package/daemon/dist/routes/snapshots.js.map +1 -1
- package/daemon/dist/routes/terminal-ws.d.ts.map +1 -1
- package/daemon/dist/routes/terminal-ws.js +58 -21
- package/daemon/dist/routes/terminal-ws.js.map +1 -1
- package/daemon/dist/routes/transport.d.ts.map +1 -1
- package/daemon/dist/routes/transport.js +12 -5
- package/daemon/dist/routes/transport.js.map +1 -1
- package/daemon/dist/routes/up.d.ts.map +1 -1
- package/daemon/dist/routes/up.js +84 -0
- package/daemon/dist/routes/up.js.map +1 -1
- package/daemon/dist/routes/workspace.js +2 -2
- package/daemon/dist/server.d.ts +33 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +41 -1
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts +1 -0
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +108 -20
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-startup-guide.md +1 -1
- package/daemon/docs/reference/product-factory-vps-runbook.md +132 -0
- package/daemon/docs/reference/sdlc-conventions.md +187 -0
- package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/builder/guidance/role.md +1 -0
- package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/lead/guidance/role.md +1 -0
- package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/planner/guidance/role.md +1 -0
- package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/reviewer/guidance/role.md +1 -0
- package/daemon/specs/agents/design/product-designer/agent.yaml +1 -1
- package/daemon/specs/agents/design/product-designer/guidance/role.md +1 -0
- package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
- package/daemon/specs/agents/development/implementer/guidance/role.md +1 -0
- package/daemon/specs/agents/development/qa/agent.yaml +1 -1
- package/daemon/specs/agents/development/qa/guidance/role.md +1 -0
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
- package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +1 -0
- package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
- package/daemon/specs/agents/product-management/pm/guidance/role.md +13 -0
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -1
- package/daemon/specs/agents/review/independent-reviewer/guidance/role.md +1 -0
- package/daemon/specs/agents/shared/agent.yaml +2 -0
- package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +115 -0
- package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +4 -4
- package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +69 -23
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +3 -3
- package/daemon/specs/rigs/focused/pm-team/CULTURE.md +4 -0
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +1 -1
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +1 -1
- package/daemon/specs/rigs/preview/product-team/CULTURE.md +4 -0
- package/dist/build-info.d.ts +8 -0
- package/dist/build-info.d.ts.map +1 -0
- package/dist/build-info.js +11 -0
- package/dist/build-info.js.map +1 -0
- package/dist/commands/compact.d.ts +15 -0
- package/dist/commands/compact.d.ts.map +1 -0
- package/dist/commands/compact.js +62 -0
- package/dist/commands/compact.js.map +1 -0
- package/dist/commands/config-init-workspace.d.ts.map +1 -1
- package/dist/commands/config-init-workspace.js +20 -4
- package/dist/commands/config-init-workspace.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +18 -2
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/expand.js +1 -1
- package/dist/commands/expand.js.map +1 -1
- package/dist/commands/file.d.ts +7 -0
- package/dist/commands/file.d.ts.map +1 -0
- package/dist/commands/file.js +77 -0
- package/dist/commands/file.js.map +1 -0
- package/dist/commands/fork.d.ts +4 -0
- package/dist/commands/fork.d.ts.map +1 -0
- package/dist/commands/fork.js +101 -0
- package/dist/commands/fork.js.map +1 -0
- package/dist/commands/host.d.ts +34 -0
- package/dist/commands/host.d.ts.map +1 -0
- package/dist/commands/host.js +448 -0
- package/dist/commands/host.js.map +1 -0
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +34 -4
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/proof.d.ts +54 -0
- package/dist/commands/proof.d.ts.map +1 -0
- package/dist/commands/proof.js +311 -0
- package/dist/commands/proof.js.map +1 -0
- package/dist/commands/ps.d.ts +41 -7
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +357 -135
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts +6 -0
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +154 -4
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/reconcile-session.d.ts.map +1 -1
- package/dist/commands/reconcile-session.js +2 -2
- package/dist/commands/reconcile-session.js.map +1 -1
- package/dist/commands/restore-check.d.ts.map +1 -1
- package/dist/commands/restore-check.js +93 -0
- package/dist/commands/restore-check.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +191 -4
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/seat.d.ts +17 -0
- package/dist/commands/seat.d.ts.map +1 -1
- package/dist/commands/seat.js +145 -32
- package/dist/commands/seat.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +161 -11
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/start.d.ts +5 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/startup-proof.d.ts +24 -0
- package/dist/commands/startup-proof.d.ts.map +1 -0
- package/dist/commands/startup-proof.js +100 -0
- package/dist/commands/startup-proof.js.map +1 -0
- package/dist/commands/unclaim.js +2 -2
- package/dist/commands/unclaim.js.map +1 -1
- package/dist/commands/up.d.ts +2 -0
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +79 -2
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/watchdog.js +2 -2
- package/dist/commands/watchdog.js.map +1 -1
- package/dist/commands/workspace.js +6 -6
- package/dist/commands/workspace.js.map +1 -1
- package/dist/config-store.d.ts +4 -0
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +68 -0
- package/dist/config-store.js.map +1 -1
- package/dist/cross-host-executor.d.ts +1 -0
- package/dist/cross-host-executor.d.ts.map +1 -1
- package/dist/cross-host-executor.js +4 -1
- package/dist/cross-host-executor.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts +23 -0
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +54 -6
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/host-registry.d.ts +9 -0
- package/dist/host-registry.d.ts.map +1 -1
- package/dist/host-registry.js +32 -2
- package/dist/host-registry.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/codex-auth.d.ts +24 -0
- package/dist/lib/codex-auth.d.ts.map +1 -1
- package/dist/lib/codex-auth.js +89 -17
- package/dist/lib/codex-auth.js.map +1 -1
- package/dist/lib/file-transfer.d.ts +89 -0
- package/dist/lib/file-transfer.d.ts.map +1 -0
- package/dist/lib/file-transfer.js +300 -0
- package/dist/lib/file-transfer.js.map +1 -0
- package/dist/lib/hosts/fanout-contract.d.ts +33 -0
- package/dist/lib/hosts/fanout-contract.d.ts.map +1 -0
- package/dist/lib/hosts/fanout-contract.js +23 -0
- package/dist/lib/hosts/fanout-contract.js.map +1 -0
- package/dist/lib/scope/scope-audit.d.ts +11 -1
- package/dist/lib/scope/scope-audit.d.ts.map +1 -1
- package/dist/lib/scope/scope-audit.js +203 -2
- package/dist/lib/scope/scope-audit.js.map +1 -1
- package/dist/lib/scope/templates.d.ts +1 -0
- package/dist/lib/scope/templates.d.ts.map +1 -1
- package/dist/lib/scope/templates.js +9 -0
- package/dist/lib/scope/templates.js.map +1 -1
- package/dist/lib/scope-templates/backlog-deprecation.md +16 -0
- package/dist/lib/scope-templates/backlog-tech-debt.md +16 -0
- package/dist/lib/scope-templates/bug-fix.md +16 -0
- package/dist/lib/scope-templates/implementation-prd.md +33 -0
- package/dist/lib/scope-templates/mission-placeholder.md +41 -0
- package/dist/lib/scope-templates/mission-progress.md +2 -0
- package/dist/lib/scope-templates/mission-release.md +41 -0
- package/dist/lib/scope-templates/placeholder.md +12 -4
- package/dist/lib/scope-templates/proof.md +6 -0
- package/dist/lib/scope-templates/release-feature.md +14 -6
- package/dist/lib/scope-templates/research.md +16 -0
- package/dist/lib/scope-templates/slice-progress.md +2 -0
- package/dist/openrig-compat.d.ts +19 -0
- package/dist/openrig-compat.d.ts.map +1 -1
- package/dist/openrig-compat.js +31 -1
- package/dist/openrig-compat.js.map +1 -1
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +11 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/ui/dist/assets/index-D69ZhNIr.js +598 -0
- package/ui/dist/assets/index-DJYun-8d.css +32 -0
- package/ui/dist/index.html +23 -2
- package/ui/dist/assets/index-CnqRX7A3.css +0 -32
- package/ui/dist/assets/index-CtL9jXFt.js +0 -582
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import * as YAML from "yaml";
|
|
2
2
|
import { isMissionDotId, isSliceDotId } from "./dot-id.js";
|
|
3
|
-
|
|
3
|
+
// OPR.0.4.4.20 FR-8: exported so the review brief-spine writer conforms to
|
|
4
|
+
// the SAME pinned exact-order schema this audit enforces (parity by
|
|
5
|
+
// construction — the generated output can never trip malformed_mission_brief
|
|
6
|
+
// without this file changing too).
|
|
7
|
+
export const MISSION_BRIEF_HEADERS = ["What & why", "Building", "Progress", "Proven", "Needs you", "Pointers"];
|
|
4
8
|
function childPath(parent, child) {
|
|
5
9
|
return parent.endsWith("/") ? `${parent}${child}` : `${parent}/${child}`;
|
|
6
10
|
}
|
|
@@ -44,6 +48,83 @@ function statusRequiresProof(status) {
|
|
|
44
48
|
|| normalized.includes("proven")
|
|
45
49
|
|| normalized.includes("promoted");
|
|
46
50
|
}
|
|
51
|
+
// OPR.0.4.4.19 FR-10 (C7) — the statusRequiresProof pattern applied one
|
|
52
|
+
// phase earlier: a slice whose status implies SPECCED/BUILDING (or later)
|
|
53
|
+
// must carry IMPLEMENTATION-PRD.md at its root ("no build without a
|
|
54
|
+
// specifying doc"). Shaping / pre-spec statuses are NOT violations.
|
|
55
|
+
function statusRequiresSpec(status) {
|
|
56
|
+
if (!status)
|
|
57
|
+
return false;
|
|
58
|
+
const normalized = status.toLowerCase().trim();
|
|
59
|
+
return normalized.includes("build")
|
|
60
|
+
|| normalized.includes("implement")
|
|
61
|
+
|| normalized.includes("in-progress")
|
|
62
|
+
|| normalized.includes("review")
|
|
63
|
+
|| normalized.includes("qa")
|
|
64
|
+
|| statusRequiresProof(normalized);
|
|
65
|
+
}
|
|
66
|
+
// OPR.0.4.4.19 FR-10 (C1) — the ratified closed sets (BR-4; source of truth
|
|
67
|
+
// for the drop path lives in the CLI proof command; this mirrored file
|
|
68
|
+
// carries its own copy because both scope-audit copies must stay
|
|
69
|
+
// self-contained + byte-identical. Extending the sets is a pm-lead
|
|
70
|
+
// convention change, made in BOTH places).
|
|
71
|
+
const C1_REQUIRED_FIELDS = ["slice", "candidate_sha", "artifact_type", "verdict", "money_evidence"];
|
|
72
|
+
const C1_ARTIFACT_TYPES = ["guard", "qa", "rev1-r1", "rev1-r2", "adjudication"];
|
|
73
|
+
const C1_VERDICTS = ["CLEAR", "BLOCKING", "CONCERNING", "PASS", "NOT-CLEAR"];
|
|
74
|
+
/** Validate one proof artifact's raw frontmatter against the C1 contract.
|
|
75
|
+
* Returns null when valid; else the human-readable problem list. */
|
|
76
|
+
function c1ArtifactProblems(frontmatterRaw) {
|
|
77
|
+
if (frontmatterRaw === null) {
|
|
78
|
+
return [`no frontmatter header at all (required C1 fields: ${C1_REQUIRED_FIELDS.join(", ")})`];
|
|
79
|
+
}
|
|
80
|
+
let parsed = null;
|
|
81
|
+
try {
|
|
82
|
+
parsed = YAML.parse(frontmatterRaw);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
return [`frontmatter fails to parse: ${err instanceof Error ? err.message : String(err)}`];
|
|
86
|
+
}
|
|
87
|
+
const fm = parsed && typeof parsed === "object" && !Array.isArray(parsed)
|
|
88
|
+
? parsed
|
|
89
|
+
: {};
|
|
90
|
+
const problems = [];
|
|
91
|
+
const missing = C1_REQUIRED_FIELDS.filter((f) => typeof fm[f] !== "string" || fm[f].trim().length === 0);
|
|
92
|
+
if (missing.length > 0)
|
|
93
|
+
problems.push(`missing field(s): ${missing.join(", ")}`);
|
|
94
|
+
if (typeof fm.artifact_type === "string" && !C1_ARTIFACT_TYPES.includes(fm.artifact_type)) {
|
|
95
|
+
problems.push(`artifact_type '${fm.artifact_type}' not in closed set (${C1_ARTIFACT_TYPES.join(" | ")})`);
|
|
96
|
+
}
|
|
97
|
+
if (typeof fm.verdict === "string" && !C1_VERDICTS.includes(fm.verdict)) {
|
|
98
|
+
problems.push(`verdict '${fm.verdict}' not in closed set (${C1_VERDICTS.join(" | ")})`);
|
|
99
|
+
}
|
|
100
|
+
return problems.length > 0 ? problems : null;
|
|
101
|
+
}
|
|
102
|
+
// OPR.0.4.4.23 — markdown H2-section helpers for the convention-section
|
|
103
|
+
// advisories. Headings are literals owned by this file ("Intent",
|
|
104
|
+
// "Proof contract", "Intent visual") — no user input reaches the regex.
|
|
105
|
+
function hasH2(content, heading) {
|
|
106
|
+
return new RegExp(`^##\\s+${heading}\\s*$`, "m").test(content);
|
|
107
|
+
}
|
|
108
|
+
function h2Body(content, heading) {
|
|
109
|
+
const match = new RegExp(`^##\\s+${heading}\\s*$`, "m").exec(content);
|
|
110
|
+
if (!match)
|
|
111
|
+
return null;
|
|
112
|
+
const rest = content.slice(match.index + match[0].length);
|
|
113
|
+
const next = rest.search(/^##\s+/m);
|
|
114
|
+
return next === -1 ? rest : rest.slice(0, next);
|
|
115
|
+
}
|
|
116
|
+
// A mission is ACTIVE unless its status names a terminal / archived state.
|
|
117
|
+
// The SOP wants missing_mission_notes to fire for an ACTIVE mission only — a
|
|
118
|
+
// shipped/archived mission no longer needs a live continuity file. No status
|
|
119
|
+
// => treat as active (still flag), which preserves the pre-tighten behavior for
|
|
120
|
+
// the common status-less mission.
|
|
121
|
+
function missionIsActive(status) {
|
|
122
|
+
if (!status)
|
|
123
|
+
return true;
|
|
124
|
+
const normalized = status.toLowerCase();
|
|
125
|
+
const terminal = ["archiv", "complete", "done", "shipped", "closed", "historical", "superseded", "abandoned"];
|
|
126
|
+
return !terminal.some((token) => normalized.includes(token));
|
|
127
|
+
}
|
|
47
128
|
export function classifyScopeItem(input) {
|
|
48
129
|
const findings = [];
|
|
49
130
|
let frontmatterError = null;
|
|
@@ -157,7 +238,8 @@ export function classifyScopeItem(input) {
|
|
|
157
238
|
remediation: missionBriefFix(),
|
|
158
239
|
});
|
|
159
240
|
}
|
|
160
|
-
if (input.missionNotesExists === false
|
|
241
|
+
if (input.missionNotesExists === false
|
|
242
|
+
&& missionIsActive(parseStatusFromFrontmatter(input.readmeFrontmatterRaw))) {
|
|
161
243
|
const notesPath = input.missionNotesPath ?? childPath(input.path, "MISSION_NOTES.md");
|
|
162
244
|
findings.push({
|
|
163
245
|
kind: "missing_mission_notes",
|
|
@@ -185,6 +267,125 @@ export function classifyScopeItem(input) {
|
|
|
185
267
|
remediation: "Add PROOF.md at the slice root and put verification artifacts under proof/ per the slice-closeout SOP.",
|
|
186
268
|
});
|
|
187
269
|
}
|
|
270
|
+
// OPR.0.4.4.19 FR-10 (C1 backstop) — flag proof/ artifacts missing the
|
|
271
|
+
// C1 header or carrying out-of-set values. The backstop catches what
|
|
272
|
+
// bypassed the drop path (raw file writes are never gated at write
|
|
273
|
+
// time; this is where they surface).
|
|
274
|
+
for (const artifact of input.proofArtifacts ?? []) {
|
|
275
|
+
const problems = c1ArtifactProblems(artifact.frontmatterRaw);
|
|
276
|
+
if (problems) {
|
|
277
|
+
findings.push({
|
|
278
|
+
kind: "proof_artifact_c1_invalid",
|
|
279
|
+
severity: "medium",
|
|
280
|
+
path: artifact.path,
|
|
281
|
+
message: `Proof artifact violates the C1 header contract: ${problems.join("; ")}.`,
|
|
282
|
+
remediation: `Re-drop via: rig proof add <slice> --artifact-type <${C1_ARTIFACT_TYPES.join("|")}> --verdict <${C1_VERDICTS.join("|")}> --candidate-sha <sha> --money-evidence "<line>" — or add the missing frontmatter fields in place.`,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// OPR.0.4.4.19 FR-10 (C7 backstop) — a specced/building-or-later slice
|
|
287
|
+
// must carry IMPLEMENTATION-PRD.md (the pinned expected filename) at its
|
|
288
|
+
// root. Status-gated: shaping is not a violation. Inert when the caller
|
|
289
|
+
// provided no fs context (implementationPrdExists undefined).
|
|
290
|
+
if (input.implementationPrdExists === false && statusRequiresSpec(status)) {
|
|
291
|
+
findings.push({
|
|
292
|
+
kind: "missing_impl_prd",
|
|
293
|
+
severity: "medium",
|
|
294
|
+
path: childPath(input.path, "IMPLEMENTATION-PRD.md"),
|
|
295
|
+
message: `Slice status "${status}" implies specced/building but there is no IMPLEMENTATION-PRD.md at the slice root (C7: no build without a specifying doc).`,
|
|
296
|
+
remediation: "Author (or relocate) the slice's IMPLEMENTATION-PRD.md at the slice root — the pinned C7 filename — before building continues.",
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
// OPR.0.4.4.23 — SDLC convention-section advisories (SSOT:
|
|
300
|
+
// docs/reference/sdlc-conventions.md). Structurally fail-open: the
|
|
301
|
+
// audit command flips its exit code on HIGH findings only, and these
|
|
302
|
+
// are low/info by construction — they record and advise, never gate.
|
|
303
|
+
// Inert when the caller provided no content context (undefined inputs).
|
|
304
|
+
if (typeof input.readmeContent === "string" && !hasH2(input.readmeContent, "Intent")) {
|
|
305
|
+
findings.push({
|
|
306
|
+
kind: "missing_intent_section",
|
|
307
|
+
severity: "low",
|
|
308
|
+
path: childPath(input.path, "README.md"),
|
|
309
|
+
message: "Slice README has no `## Intent` section, so the Living Notes UI cannot project its INTENT section.",
|
|
310
|
+
remediation: "Add `## Intent` carrying the recorded intent verbatim (conventions SSOT: docs/reference/sdlc-conventions.md; `rig scope slice create` scaffolds it).",
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
const contractSource = typeof input.implementationPrdContent === "string"
|
|
314
|
+
? { content: input.implementationPrdContent, path: childPath(input.path, "IMPLEMENTATION-PRD.md") }
|
|
315
|
+
: typeof input.readmeContent === "string"
|
|
316
|
+
? { content: input.readmeContent, path: childPath(input.path, "README.md") }
|
|
317
|
+
: null;
|
|
318
|
+
if (contractSource) {
|
|
319
|
+
// OPR.0.4.4.23 rev1-r2 B1 (PRD L34 guard F-3): well-formed
|
|
320
|
+
// `## Mini-requirements` — the PLAN leg of the Living Notes
|
|
321
|
+
// projection. Same source-selection policy as the proof contract
|
|
322
|
+
// (PRD preferred, README fallback). Well-formed = the heading plus
|
|
323
|
+
// at least one numbered list item; a heading over prose-only is
|
|
324
|
+
// malformed (no usable requirements projection).
|
|
325
|
+
const miniBody = h2Body(contractSource.content, "Mini-requirements");
|
|
326
|
+
const hasNumberedItem = miniBody !== null && /^\s*\d+\.\s+\S/m.test(miniBody);
|
|
327
|
+
if (!hasNumberedItem) {
|
|
328
|
+
findings.push({
|
|
329
|
+
kind: "mini_requirements_missing_or_malformed",
|
|
330
|
+
severity: "low",
|
|
331
|
+
path: contractSource.path,
|
|
332
|
+
message: miniBody === null
|
|
333
|
+
? "No `## Mini-requirements` section — the Living Notes PLAN section has no concise requirements tier to project."
|
|
334
|
+
: "`## Mini-requirements` carries no numbered items (`1. …`) — the one-glance requirement tier is where approval starts.",
|
|
335
|
+
remediation: "Add `## Mini-requirements` with a numbered list of observable outcomes (conventions SSOT: docs/reference/sdlc-conventions.md; for a small slice this may BE the whole PRD).",
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
const contractBody = h2Body(contractSource.content, "Proof contract");
|
|
339
|
+
const hasCheckboxItem = contractBody !== null && /^\s*-\s*\[[ xX]\]/m.test(contractBody);
|
|
340
|
+
if (!hasCheckboxItem) {
|
|
341
|
+
findings.push({
|
|
342
|
+
kind: "proof_contract_missing_or_malformed",
|
|
343
|
+
severity: "low",
|
|
344
|
+
path: contractSource.path,
|
|
345
|
+
message: contractBody === null
|
|
346
|
+
? "No `## Proof contract` section — the DELIVERED pairing has no promised-deliverables source to join proof against."
|
|
347
|
+
: "`## Proof contract` carries no checkbox deliverables (`- [ ] …`) — the DELIVERED pairing joins proof against those items.",
|
|
348
|
+
remediation: "Add `## Proof contract` with one checkbox line per promised deliverable, written as an observable outcome (conventions SSOT: docs/reference/sdlc-conventions.md).",
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
if (typeof input.readmeContent === "string") {
|
|
352
|
+
const visualBody = h2Body(input.readmeContent, "Intent visual");
|
|
353
|
+
const isUiSlice = visualBody !== null && !/\bN\/A\b/i.test(visualBody);
|
|
354
|
+
// rev1-r2 B2: a mockup is PRESENT only via a real markdown
|
|
355
|
+
// image/media ref in `## Intent visual` or an explicit plannedRef
|
|
356
|
+
// token in the proof contract. Generic prose containing the word
|
|
357
|
+
// "mockup" (the scaffold placeholder says "name their planned
|
|
358
|
+
// mockup") is NOT a reference and must not suppress the advisory.
|
|
359
|
+
const hasMockupRef = /!\[/.test(visualBody ?? "")
|
|
360
|
+
|| /plannedRef/i.test(contractBody ?? "")
|
|
361
|
+
|| /!\[/.test(contractBody ?? "");
|
|
362
|
+
if (isUiSlice && !hasMockupRef) {
|
|
363
|
+
findings.push({
|
|
364
|
+
kind: "ui_slice_missing_mockup",
|
|
365
|
+
severity: "info",
|
|
366
|
+
path: childPath(input.path, "README.md"),
|
|
367
|
+
message: "Slice declares an Intent visual (UI slice) but no mockup reference is present — a UI slice with no mockup in its locked set is an incomplete plan.",
|
|
368
|
+
remediation: "Attach the planned mockup: an image ref in `## Intent visual` or a plannedRef on the proof-contract deliverable (conventions SSOT: docs/reference/sdlc-conventions.md §3).",
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// committed-without-PROGRESS. Fires only on POSITIVE evidence: the most
|
|
374
|
+
// recent commit (HEAD) touched this slice AND definitively did NOT touch its
|
|
375
|
+
// PROGRESS.md. Inputs are git-derived and CLI-only; when git context is
|
|
376
|
+
// unavailable they are left undefined and this branch is inert (no
|
|
377
|
+
// false-green, no false-positive). See ScopeAuditInput.
|
|
378
|
+
if (input.sliceTouchedByRecentCommit === true
|
|
379
|
+
&& input.progressTouchedByRecentCommit === false) {
|
|
380
|
+
const progressPath = childPath(input.path, "PROGRESS.md");
|
|
381
|
+
findings.push({
|
|
382
|
+
kind: "progress_not_updated_on_commit",
|
|
383
|
+
severity: "medium",
|
|
384
|
+
path: progressPath,
|
|
385
|
+
message: "The most recent commit (HEAD) touched this slice but did not update PROGRESS.md.",
|
|
386
|
+
remediation: "Update PROGRESS.md to reflect the committed change (one line per outcome) and amend or add a follow-up commit. Per the mission-slice-sop, PROGRESS.md is updated on every commit — fix the flag, do not suppress it.",
|
|
387
|
+
});
|
|
388
|
+
}
|
|
188
389
|
}
|
|
189
390
|
return { railStatus, findings, frontmatterError };
|
|
190
391
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-audit.js","sourceRoot":"","sources":["../../../src/domain/scope/scope-audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scope-audit.js","sourceRoot":"","sources":["../../../src/domain/scope/scope-audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,16 +6,15 @@ import type { EventBus } from "./event-bus.js";
|
|
|
6
6
|
import type { TmuxAdapter } from "../adapters/tmux.js";
|
|
7
7
|
import { type SeatStatusResult } from "./seat-status-service.js";
|
|
8
8
|
import { type SeatHandoverPlan, type SeatHandoverSource } from "./seat-handover-planner.js";
|
|
9
|
+
import { type ResumeTokenCaptureDeps } from "./resume-token-capture.js";
|
|
10
|
+
import type { RuntimeAdapter } from "./runtime-adapter.js";
|
|
9
11
|
export interface SeatHandoverMutationResult {
|
|
10
12
|
ok: true;
|
|
11
13
|
dryRun: false;
|
|
12
14
|
mutated: true;
|
|
13
15
|
continuityTransferred: false;
|
|
14
16
|
seat: SeatHandoverPlan["seat"];
|
|
15
|
-
source: SeatHandoverSource
|
|
16
|
-
mode: "discovered";
|
|
17
|
-
ref: string;
|
|
18
|
-
};
|
|
17
|
+
source: SeatHandoverSource;
|
|
19
18
|
reason: string;
|
|
20
19
|
operator: string | null;
|
|
21
20
|
previousOccupant: string;
|
|
@@ -33,7 +32,7 @@ export interface SeatHandoverMutationResult {
|
|
|
33
32
|
eventSeq: number;
|
|
34
33
|
sideEffects: {
|
|
35
34
|
departingSessionKilled: false;
|
|
36
|
-
startupContextDelivered:
|
|
35
|
+
startupContextDelivered: boolean;
|
|
37
36
|
provenanceRecordWritten: false;
|
|
38
37
|
};
|
|
39
38
|
}
|
|
@@ -45,7 +44,7 @@ export type SeatHandoverResult = {
|
|
|
45
44
|
result: SeatHandoverMutationResult;
|
|
46
45
|
} | {
|
|
47
46
|
ok: false;
|
|
48
|
-
code: "missing_reason" | "invalid_source" | "successor_creation_not_implemented";
|
|
47
|
+
code: "missing_reason" | "invalid_source" | "successor_creation_not_implemented" | "source_not_supported";
|
|
49
48
|
message: string;
|
|
50
49
|
guidance: string;
|
|
51
50
|
} | {
|
|
@@ -60,7 +59,7 @@ export type SeatHandoverResult = {
|
|
|
60
59
|
guidance: string;
|
|
61
60
|
} | {
|
|
62
61
|
ok: false;
|
|
63
|
-
code: "tmux_probe_failed" | "handover_commit_failed";
|
|
62
|
+
code: "tmux_probe_failed" | "handover_commit_failed" | "successor_create_failed" | "context_delivery_failed";
|
|
64
63
|
message: string;
|
|
65
64
|
guidance: string;
|
|
66
65
|
} | Extract<SeatStatusResult, {
|
|
@@ -74,6 +73,23 @@ interface SeatHandoverServiceDeps {
|
|
|
74
73
|
eventBus: EventBus;
|
|
75
74
|
tmuxAdapter: TmuxAdapter;
|
|
76
75
|
now?: () => Date;
|
|
76
|
+
/** OpenRig identity/activity env stamped onto a created successor session,
|
|
77
|
+
* mirroring the launch identity env. Defaults to {} (the three core identity
|
|
78
|
+
* vars are always derived internally). */
|
|
79
|
+
sessionEnv?: Record<string, string | undefined>;
|
|
80
|
+
/** Injectable id source for the successor session name (tests). */
|
|
81
|
+
newSuccessorId?: () => string;
|
|
82
|
+
/** Runtime adapters keyed by runtime — used to launch a fresh successor into
|
|
83
|
+
* a LIVE agent (B1) before commit. Absent → fresh handover cannot launch. */
|
|
84
|
+
runtimeAdapters?: Record<string, RuntimeAdapter>;
|
|
85
|
+
/** Claude sidecar reader for discovered-mode resume-token capture (B2). */
|
|
86
|
+
contextUsageStore?: ResumeTokenCaptureDeps["contextUsageStore"];
|
|
87
|
+
/** Codex thread-id capturer for discovered-mode resume-token capture (B2). */
|
|
88
|
+
resumeTokenCapturer?: ResumeTokenCaptureDeps["resumeTokenCapturer"];
|
|
89
|
+
/** Readiness timeout for the successor launch (tests shorten it). */
|
|
90
|
+
readinessTimeoutMs?: number;
|
|
91
|
+
/** Injectable sleep for the successor readiness backoff (tests). */
|
|
92
|
+
sleep?: (ms: number) => Promise<void>;
|
|
77
93
|
}
|
|
78
94
|
export declare class SeatHandoverService {
|
|
79
95
|
private db;
|
|
@@ -84,6 +100,8 @@ export declare class SeatHandoverService {
|
|
|
84
100
|
private discoveryRepo;
|
|
85
101
|
private eventBus;
|
|
86
102
|
private tmuxAdapter;
|
|
103
|
+
private successorLauncher;
|
|
104
|
+
private captureDeps;
|
|
87
105
|
private now;
|
|
88
106
|
constructor(deps: SeatHandoverServiceDeps);
|
|
89
107
|
handover(input: {
|
|
@@ -93,6 +111,31 @@ export declare class SeatHandoverService {
|
|
|
93
111
|
operator?: string | null;
|
|
94
112
|
dryRun?: boolean;
|
|
95
113
|
}): Promise<SeatHandoverResult>;
|
|
114
|
+
/**
|
|
115
|
+
* The shared discovered->commit path (validation + presence-verify + rebind).
|
|
116
|
+
* `cleanup` is invoked before returning ANY failure so a composer-created
|
|
117
|
+
* successor is unwound; the discovered-source caller passes null (nothing to
|
|
118
|
+
* unwind). The `hasSession` probe here is the continuity/presence verify that
|
|
119
|
+
* runs BEFORE the commit releases the original binding.
|
|
120
|
+
*/
|
|
121
|
+
private finalizeWithDiscovered;
|
|
122
|
+
/**
|
|
123
|
+
* B2 — best-effort discovered-mode resume-token capture at commit. Derives the
|
|
124
|
+
* live token via the shared FR-3 derive-helper (pure read), persists it with
|
|
125
|
+
* provenance "adoption" (the rank guard governs clobber), and emits the same
|
|
126
|
+
* captured/preserved/skipped events FR-3 uses. Honest failure = persist
|
|
127
|
+
* nothing + a redacted skip event. NEVER throws, never logs the token.
|
|
128
|
+
*/
|
|
129
|
+
private captureDiscoveredResumeToken;
|
|
130
|
+
private emitCaptureSkip;
|
|
131
|
+
/** Best-effort capture of the departing seat's visible terminal before the
|
|
132
|
+
* successor is created. Never throws; an empty capture is honestly recorded
|
|
133
|
+
* as "no capture available" in the restore packet. */
|
|
134
|
+
private captureDepartingContext;
|
|
135
|
+
/** Deliver the captured restore packet to a fresh successor via the shipped
|
|
136
|
+
* interactive-text transport (send_text + Enter), mirroring the startup
|
|
137
|
+
* orchestrator's initial-prompt delivery. */
|
|
138
|
+
private deliverRestorePacket;
|
|
96
139
|
private checkRuntimeMismatch;
|
|
97
140
|
private lookupNode;
|
|
98
141
|
private lookupLatestSession;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-handover-service.d.ts","sourceRoot":"","sources":["../../src/domain/seat-handover-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACrG,OAAO,EAA4C,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"seat-handover-service.d.ts","sourceRoot":"","sources":["../../src/domain/seat-handover-service.ts"],"names":[],"mappings":"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"}
|