@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,9 @@
|
|
|
1
1
|
import { ulid } from "ulid";
|
|
2
2
|
import { SeatStatusService } from "./seat-status-service.js";
|
|
3
3
|
import { SeatHandoverPlanner, parseHandoverSource } from "./seat-handover-planner.js";
|
|
4
|
+
import { SuccessorSessionLauncher } from "./successor-session-launcher.js";
|
|
5
|
+
import { deriveResumeToken } from "./resume-token-capture.js";
|
|
6
|
+
import { validateResumeToken } from "./resume-token-validation.js";
|
|
4
7
|
export class SeatHandoverService {
|
|
5
8
|
db;
|
|
6
9
|
statusService;
|
|
@@ -10,6 +13,8 @@ export class SeatHandoverService {
|
|
|
10
13
|
discoveryRepo;
|
|
11
14
|
eventBus;
|
|
12
15
|
tmuxAdapter;
|
|
16
|
+
successorLauncher;
|
|
17
|
+
captureDeps;
|
|
13
18
|
now;
|
|
14
19
|
constructor(deps) {
|
|
15
20
|
if (deps.db !== deps.rigRepo.db)
|
|
@@ -29,6 +34,17 @@ export class SeatHandoverService {
|
|
|
29
34
|
this.now = deps.now ?? (() => new Date());
|
|
30
35
|
this.statusService = new SeatStatusService({ rigRepo: deps.rigRepo });
|
|
31
36
|
this.planner = new SeatHandoverPlanner({ rigRepo: deps.rigRepo });
|
|
37
|
+
this.successorLauncher = new SuccessorSessionLauncher(deps.tmuxAdapter, deps.discoveryRepo, {
|
|
38
|
+
sessionEnv: deps.sessionEnv,
|
|
39
|
+
newId: deps.newSuccessorId,
|
|
40
|
+
runtimeAdapters: deps.runtimeAdapters,
|
|
41
|
+
readinessTimeoutMs: deps.readinessTimeoutMs,
|
|
42
|
+
sleep: deps.sleep,
|
|
43
|
+
});
|
|
44
|
+
this.captureDeps = {
|
|
45
|
+
contextUsageStore: deps.contextUsageStore ?? null,
|
|
46
|
+
resumeTokenCapturer: deps.resumeTokenCapturer ?? null,
|
|
47
|
+
};
|
|
32
48
|
}
|
|
33
49
|
async handover(input) {
|
|
34
50
|
if (input.dryRun) {
|
|
@@ -71,12 +87,21 @@ export class SeatHandoverService {
|
|
|
71
87
|
if (!parsed.ok) {
|
|
72
88
|
return parsed;
|
|
73
89
|
}
|
|
74
|
-
|
|
90
|
+
// B3 — v0 supports `fresh` (launch a live successor) and `discovered`
|
|
91
|
+
// (operator-prepared live session) ONLY. `fork` and `rebuild` are LOUDLY
|
|
92
|
+
// REJECTED here — before any successor is created — so a blank successor is
|
|
93
|
+
// never bound and never reported `complete`. Their population is a tracked
|
|
94
|
+
// follow-on (fork → slice-05 native-fork primitive; rebuild → apply
|
|
95
|
+
// session-source artifacts at create). Dry-run planning for all four modes
|
|
96
|
+
// still returns a plan above (mutates nothing).
|
|
97
|
+
if (parsed.source.mode === "fork" || parsed.source.mode === "rebuild") {
|
|
75
98
|
return {
|
|
76
99
|
ok: false,
|
|
77
|
-
code: "
|
|
78
|
-
message:
|
|
79
|
-
guidance:
|
|
100
|
+
code: "source_not_supported",
|
|
101
|
+
message: `${parsed.source.mode} handover is not supported in v0; use --source fresh or --source discovered:<id>.`,
|
|
102
|
+
guidance: parsed.source.mode === "fork"
|
|
103
|
+
? "fork handover depends on the native-fork primitive (not yet shipped). Use a fresh or discovered successor."
|
|
104
|
+
: "rebuild handover artifact population is deferred to a follow-on. Use a fresh or discovered successor.",
|
|
80
105
|
};
|
|
81
106
|
}
|
|
82
107
|
const statusResult = this.statusService.getStatus(input.seatRef);
|
|
@@ -101,73 +126,263 @@ export class SeatHandoverService {
|
|
|
101
126
|
guidance: "Inspect the seat with: rig seat status <seat>",
|
|
102
127
|
};
|
|
103
128
|
}
|
|
104
|
-
const
|
|
105
|
-
|
|
129
|
+
const operator = input.operator?.trim() || null;
|
|
130
|
+
// Already-created successor: route straight through the discovered->commit
|
|
131
|
+
// path with nothing to unwind (byte-identical to the shipped behavior).
|
|
132
|
+
if (parsed.source.mode === "discovered" && parsed.source.ref) {
|
|
133
|
+
return this.finalizeWithDiscovered({
|
|
134
|
+
seatRef: input.seatRef,
|
|
135
|
+
status: statusResult.status,
|
|
136
|
+
node,
|
|
137
|
+
latestSession,
|
|
138
|
+
discoveredRef: parsed.source.ref,
|
|
139
|
+
reportedSource: parsed.source,
|
|
140
|
+
reason,
|
|
141
|
+
operator,
|
|
142
|
+
contextDelivered: false,
|
|
143
|
+
launchToken: null,
|
|
144
|
+
cleanup: null,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
// Full-cycle composer for fresh: capture -> create + LAUNCH a live successor
|
|
148
|
+
// -> deliver captured context -> verify continuity -> rebind. The original
|
|
149
|
+
// seat/binding is untouched until the commit inside finalizeWithDiscovered,
|
|
150
|
+
// which is the SOLE, LAST rebind. (fork/rebuild were rejected above;
|
|
151
|
+
// discovered was finalized above.)
|
|
152
|
+
// 1. Capture the departing seat's context BEFORE any successor exists.
|
|
153
|
+
const capturedContext = await this.captureDepartingContext(latestSession.session_name);
|
|
154
|
+
// 2. Create the UNMANAGED, discoverable successor and launch it into a LIVE,
|
|
155
|
+
// READY agent (§2.1b seam, B1): createSession -> resolve pane -> real
|
|
156
|
+
// runtime startup (launchHarness + readiness) -> upsertDiscoveredSession.
|
|
157
|
+
// The successor is a live agent, not a bare shell, before it can commit.
|
|
158
|
+
const launch = await this.successorLauncher.createSuccessor({
|
|
159
|
+
node: { id: node.id, runtime: node.runtime, cwd: node.cwd },
|
|
160
|
+
departingSessionName: latestSession.session_name,
|
|
161
|
+
});
|
|
162
|
+
if (!launch.ok) {
|
|
106
163
|
return {
|
|
164
|
+
ok: false,
|
|
165
|
+
code: "successor_create_failed",
|
|
166
|
+
message: `Handover failed at step "${launch.step}": ${launch.message}`,
|
|
167
|
+
guidance: "No successor was created and the original seat/binding is untouched. Inspect tmux/daemon logs and retry.",
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// 3. fresh: deliver the captured restore packet to the live successor BEFORE
|
|
171
|
+
// continuity verify (a blank occupant is a relaunch, not a handover).
|
|
172
|
+
// discovered is operator-prepared and needs no delivery.
|
|
173
|
+
let contextDelivered = false;
|
|
174
|
+
if (parsed.source.mode === "fresh") {
|
|
175
|
+
const delivered = await this.deliverRestorePacket(launch.tmuxSession, {
|
|
176
|
+
seatRef: input.seatRef,
|
|
177
|
+
reason,
|
|
178
|
+
departingSession: latestSession.session_name,
|
|
179
|
+
capturedContext,
|
|
180
|
+
});
|
|
181
|
+
if (!delivered.ok) {
|
|
182
|
+
// Partial: successor created but context never landed — unwind the
|
|
183
|
+
// unmanaged successor, leave the original binding intact (no false-green).
|
|
184
|
+
await this.successorLauncher.cleanup(launch.tmuxSession, launch.discoveredId);
|
|
185
|
+
return {
|
|
186
|
+
ok: false,
|
|
187
|
+
code: "context_delivery_failed",
|
|
188
|
+
message: `Handover failed at step "deliver-restore-packet": ${delivered.message}`,
|
|
189
|
+
guidance: "The created successor was unwound and the original seat/binding is untouched. Retry after tmux delivery is healthy.",
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
contextDelivered = true;
|
|
193
|
+
}
|
|
194
|
+
// 4. Verify continuity + rebind via the EXISTING discovered->commit path.
|
|
195
|
+
// On any failure, unwind the created successor (no binding to unwind).
|
|
196
|
+
return this.finalizeWithDiscovered({
|
|
197
|
+
seatRef: input.seatRef,
|
|
198
|
+
status: statusResult.status,
|
|
199
|
+
node,
|
|
200
|
+
latestSession,
|
|
201
|
+
discoveredRef: launch.discoveredId,
|
|
202
|
+
reportedSource: parsed.source,
|
|
203
|
+
reason,
|
|
204
|
+
operator,
|
|
205
|
+
contextDelivered,
|
|
206
|
+
// B2 (launched/fresh): the launch-scraped resume token captured by the
|
|
207
|
+
// successor launcher is persisted atomically at commit (provenance scrape).
|
|
208
|
+
launchToken: launch.resumeToken ? { token: launch.resumeToken, resumeType: launch.resumeType } : null,
|
|
209
|
+
cleanup: () => this.successorLauncher.cleanup(launch.tmuxSession, launch.discoveredId),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* The shared discovered->commit path (validation + presence-verify + rebind).
|
|
214
|
+
* `cleanup` is invoked before returning ANY failure so a composer-created
|
|
215
|
+
* successor is unwound; the discovered-source caller passes null (nothing to
|
|
216
|
+
* unwind). The `hasSession` probe here is the continuity/presence verify that
|
|
217
|
+
* runs BEFORE the commit releases the original binding.
|
|
218
|
+
*/
|
|
219
|
+
async finalizeWithDiscovered(input) {
|
|
220
|
+
const fail = async (result) => {
|
|
221
|
+
if (input.cleanup)
|
|
222
|
+
await input.cleanup();
|
|
223
|
+
return result;
|
|
224
|
+
};
|
|
225
|
+
const discovered = this.discoveryRepo.getDiscoveredSession(input.discoveredRef);
|
|
226
|
+
if (!discovered) {
|
|
227
|
+
return fail({
|
|
107
228
|
ok: false,
|
|
108
229
|
code: "discovered_not_found",
|
|
109
|
-
message: `Discovery record "${
|
|
230
|
+
message: `Discovery record "${input.discoveredRef}" not found.`,
|
|
110
231
|
guidance: "Run discovery and list active discovered sessions before retrying.",
|
|
111
|
-
};
|
|
232
|
+
});
|
|
112
233
|
}
|
|
113
234
|
if (discovered.status !== "active") {
|
|
114
|
-
return {
|
|
235
|
+
return fail({
|
|
115
236
|
ok: false,
|
|
116
237
|
code: "discovered_not_active",
|
|
117
238
|
message: `Discovery record "${discovered.id}" is ${discovered.status}, not active.`,
|
|
118
239
|
guidance: "Use an active, unclaimed discovered successor session.",
|
|
119
|
-
};
|
|
240
|
+
});
|
|
120
241
|
}
|
|
121
|
-
if (discovered.tmuxSession === latestSession.session_name) {
|
|
122
|
-
return {
|
|
242
|
+
if (discovered.tmuxSession === input.latestSession.session_name) {
|
|
243
|
+
return fail({
|
|
123
244
|
ok: false,
|
|
124
245
|
code: "successor_is_current",
|
|
125
246
|
message: "Discovered successor is already the current occupant for this seat.",
|
|
126
247
|
guidance: "Use a distinct successor session.",
|
|
127
|
-
};
|
|
248
|
+
});
|
|
128
249
|
}
|
|
129
|
-
const runtimeMismatch = this.checkRuntimeMismatch(node.runtime, discovered.runtimeHint);
|
|
250
|
+
const runtimeMismatch = this.checkRuntimeMismatch(input.node.runtime, discovered.runtimeHint);
|
|
130
251
|
if (runtimeMismatch)
|
|
131
|
-
return runtimeMismatch;
|
|
132
|
-
const managedOwner = this.lookupManagedOwner(discovered.tmuxSession, node.id);
|
|
252
|
+
return fail(runtimeMismatch);
|
|
253
|
+
const managedOwner = this.lookupManagedOwner(discovered.tmuxSession, input.node.id);
|
|
133
254
|
if (managedOwner) {
|
|
134
|
-
return {
|
|
255
|
+
return fail({
|
|
135
256
|
ok: false,
|
|
136
257
|
code: "successor_already_managed",
|
|
137
258
|
message: `Successor tmux session "${discovered.tmuxSession}" is already managed by ${managedOwner.logical_id}@${managedOwner.rig_name}.`,
|
|
138
259
|
guidance: "Use an unclaimed discovered successor session.",
|
|
139
|
-
};
|
|
260
|
+
});
|
|
140
261
|
}
|
|
141
262
|
let tmuxPresent;
|
|
142
263
|
try {
|
|
143
264
|
tmuxPresent = await this.tmuxAdapter.hasSession(discovered.tmuxSession);
|
|
144
265
|
}
|
|
145
266
|
catch (err) {
|
|
146
|
-
return {
|
|
267
|
+
return fail({
|
|
147
268
|
ok: false,
|
|
148
269
|
code: "tmux_probe_failed",
|
|
149
270
|
message: `Could not verify successor tmux session "${discovered.tmuxSession}": ${err instanceof Error ? err.message : String(err)}`,
|
|
150
271
|
guidance: "Retry after tmux health is known; probe failures are not treated as absence.",
|
|
151
|
-
};
|
|
272
|
+
});
|
|
152
273
|
}
|
|
153
274
|
if (!tmuxPresent) {
|
|
154
|
-
return {
|
|
275
|
+
return fail({
|
|
155
276
|
ok: false,
|
|
156
277
|
code: "successor_tmux_absent",
|
|
157
278
|
message: `Successor tmux session "${discovered.tmuxSession}" is not present.`,
|
|
158
279
|
guidance: "Run discovery again or provide a live discovered successor session.",
|
|
159
|
-
};
|
|
280
|
+
});
|
|
160
281
|
}
|
|
161
|
-
|
|
282
|
+
const committed = this.commit({
|
|
162
283
|
seatRef: input.seatRef,
|
|
163
|
-
status:
|
|
164
|
-
node,
|
|
165
|
-
latestSession,
|
|
166
|
-
|
|
167
|
-
reason,
|
|
168
|
-
operator: input.operator
|
|
284
|
+
status: input.status,
|
|
285
|
+
node: input.node,
|
|
286
|
+
latestSession: input.latestSession,
|
|
287
|
+
reportedSource: input.reportedSource,
|
|
288
|
+
reason: input.reason,
|
|
289
|
+
operator: input.operator,
|
|
169
290
|
discovered,
|
|
291
|
+
contextDelivered: input.contextDelivered,
|
|
292
|
+
launchToken: input.launchToken,
|
|
170
293
|
});
|
|
294
|
+
if (!committed.ok)
|
|
295
|
+
return fail(committed);
|
|
296
|
+
// B2 (discovered): the successor is an operator-prepared live session we did
|
|
297
|
+
// NOT launch, so no launch token was scraped. Best-effort capture its live
|
|
298
|
+
// resume token AT COMMIT — reusing the FR-3 pure derive-helper — so a crash
|
|
299
|
+
// right after handover can still resume (the window FR-3 closes elsewhere).
|
|
300
|
+
// Post-commit + non-blocking (mirrors FR-3): the async derivation cannot run
|
|
301
|
+
// inside better-sqlite3's synchronous transaction. Never logs the token.
|
|
302
|
+
if (input.reportedSource.mode === "discovered" && "result" in committed) {
|
|
303
|
+
await this.captureDiscoveredResumeToken({
|
|
304
|
+
rigId: input.status.rig_id,
|
|
305
|
+
nodeId: input.node.id,
|
|
306
|
+
sessionId: committed.result.newSessionId,
|
|
307
|
+
sessionName: discovered.tmuxSession,
|
|
308
|
+
runtime: input.node.runtime,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
return committed;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* B2 — best-effort discovered-mode resume-token capture at commit. Derives the
|
|
315
|
+
* live token via the shared FR-3 derive-helper (pure read), persists it with
|
|
316
|
+
* provenance "adoption" (the rank guard governs clobber), and emits the same
|
|
317
|
+
* captured/preserved/skipped events FR-3 uses. Honest failure = persist
|
|
318
|
+
* nothing + a redacted skip event. NEVER throws, never logs the token.
|
|
319
|
+
*/
|
|
320
|
+
async captureDiscoveredResumeToken(input) {
|
|
321
|
+
try {
|
|
322
|
+
const derived = await deriveResumeToken({ runtime: input.runtime, sessionName: input.sessionName }, this.captureDeps);
|
|
323
|
+
if (derived.outcome === "exempt" || derived.outcome === "noop")
|
|
324
|
+
return;
|
|
325
|
+
const runtime = input.runtime; // non-null past exempt
|
|
326
|
+
if (derived.outcome === "skipped") {
|
|
327
|
+
this.emitCaptureSkip(input, runtime, derived.reason);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
const wrote = this.sessionRegistry.updateResumeToken(input.sessionId, derived.resumeType, derived.token, "adoption");
|
|
331
|
+
try {
|
|
332
|
+
this.eventBus.emit(wrote
|
|
333
|
+
? {
|
|
334
|
+
type: "session.resume_token_captured",
|
|
335
|
+
rigId: input.rigId, nodeId: input.nodeId, sessionName: input.sessionName, sessionId: input.sessionId,
|
|
336
|
+
runtime, outcome: "captured", resumeType: derived.resumeType, provenance: "adoption", redacted: true,
|
|
337
|
+
}
|
|
338
|
+
: {
|
|
339
|
+
type: "session.resume_token_captured",
|
|
340
|
+
rigId: input.rigId, nodeId: input.nodeId, sessionName: input.sessionName, sessionId: input.sessionId,
|
|
341
|
+
runtime, outcome: "preserved", resumeType: derived.resumeType, reason: "higher_rank_present", redacted: true,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
catch { /* best-effort */ }
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
// best-effort — capture never fails or blocks the handover
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
emitCaptureSkip(input, runtime, reason) {
|
|
351
|
+
try {
|
|
352
|
+
this.eventBus.emit({
|
|
353
|
+
type: "session.resume_token_captured",
|
|
354
|
+
rigId: input.rigId, nodeId: input.nodeId, sessionName: input.sessionName, sessionId: input.sessionId,
|
|
355
|
+
runtime, outcome: "skipped", reason, redacted: true,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
catch { /* best-effort */ }
|
|
359
|
+
}
|
|
360
|
+
/** Best-effort capture of the departing seat's visible terminal before the
|
|
361
|
+
* successor is created. Never throws; an empty capture is honestly recorded
|
|
362
|
+
* as "no capture available" in the restore packet. */
|
|
363
|
+
async captureDepartingContext(departingSession) {
|
|
364
|
+
try {
|
|
365
|
+
const screen = await this.tmuxAdapter.capturePaneScreen(departingSession);
|
|
366
|
+
return screen ?? "";
|
|
367
|
+
}
|
|
368
|
+
catch {
|
|
369
|
+
return "";
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/** Deliver the captured restore packet to a fresh successor via the shipped
|
|
373
|
+
* interactive-text transport (send_text + Enter), mirroring the startup
|
|
374
|
+
* orchestrator's initial-prompt delivery. */
|
|
375
|
+
async deliverRestorePacket(successorSession, info) {
|
|
376
|
+
const packet = buildRestorePacket({ ...info, handoverAt: this.now().toISOString() });
|
|
377
|
+
const sent = await this.tmuxAdapter.sendText(successorSession, packet);
|
|
378
|
+
if (!sent.ok) {
|
|
379
|
+
return { ok: false, message: sent.message ?? "send_text failed" };
|
|
380
|
+
}
|
|
381
|
+
const submit = await this.tmuxAdapter.sendKeys(successorSession, ["C-m"]);
|
|
382
|
+
if (!submit.ok) {
|
|
383
|
+
return { ok: false, message: submit.message ?? "submit failed" };
|
|
384
|
+
}
|
|
385
|
+
return { ok: true };
|
|
171
386
|
}
|
|
172
387
|
checkRuntimeMismatch(nodeRuntime, discoveredRuntime) {
|
|
173
388
|
if (!nodeRuntime || discoveredRuntime === "unknown" || nodeRuntime === discoveredRuntime) {
|
|
@@ -181,7 +396,7 @@ export class SeatHandoverService {
|
|
|
181
396
|
};
|
|
182
397
|
}
|
|
183
398
|
lookupNode(status) {
|
|
184
|
-
return this.db.prepare("SELECT id, runtime FROM nodes WHERE rig_id = ? AND logical_id = ?").get(status.rig_id, status.logical_id);
|
|
399
|
+
return this.db.prepare("SELECT id, runtime, cwd FROM nodes WHERE rig_id = ? AND logical_id = ?").get(status.rig_id, status.logical_id);
|
|
185
400
|
}
|
|
186
401
|
lookupLatestSession(nodeId) {
|
|
187
402
|
return this.db.prepare("SELECT id, session_name, status FROM sessions WHERE node_id = ? ORDER BY id DESC LIMIT 1").get(nodeId) ?? null;
|
|
@@ -221,6 +436,16 @@ export class SeatHandoverService {
|
|
|
221
436
|
tmuxPane: input.discovered.tmuxPane,
|
|
222
437
|
});
|
|
223
438
|
const newSession = this.sessionRegistry.registerClaimedSession(input.node.id, input.discovered.tmuxSession);
|
|
439
|
+
// B2 (launched/fresh): persist the launch-scraped resume token atomically
|
|
440
|
+
// with the claim, provenance "scrape" (mirrors StartupOrchestrator's
|
|
441
|
+
// launch-token capture). Validity-guarded; a malformed token is dropped,
|
|
442
|
+
// never a bad write. The token is never logged.
|
|
443
|
+
if (input.launchToken) {
|
|
444
|
+
const validated = validateResumeToken(input.node.runtime, input.launchToken.token);
|
|
445
|
+
if (validated.ok) {
|
|
446
|
+
this.sessionRegistry.updateResumeToken(newSession.id, validated.resumeType, validated.token, "scrape");
|
|
447
|
+
}
|
|
448
|
+
}
|
|
224
449
|
this.discoveryRepo.markClaimed(input.discovered.id, input.node.id);
|
|
225
450
|
this.db.prepare(`
|
|
226
451
|
UPDATE nodes SET
|
|
@@ -238,7 +463,7 @@ export class SeatHandoverService {
|
|
|
238
463
|
logicalId: input.status.logical_id,
|
|
239
464
|
previousOccupant: input.latestSession.session_name,
|
|
240
465
|
currentOccupant: input.discovered.tmuxSession,
|
|
241
|
-
source: input.
|
|
466
|
+
source: input.reportedSource.raw,
|
|
242
467
|
reason: input.reason,
|
|
243
468
|
operator: input.operator,
|
|
244
469
|
});
|
|
@@ -295,7 +520,7 @@ export class SeatHandoverService {
|
|
|
295
520
|
podNamespace: input.status.pod_namespace,
|
|
296
521
|
runtime: input.status.runtime,
|
|
297
522
|
},
|
|
298
|
-
source: input.
|
|
523
|
+
source: input.reportedSource,
|
|
299
524
|
reason: input.reason,
|
|
300
525
|
operator: input.operator,
|
|
301
526
|
previousOccupant: input.latestSession.session_name,
|
|
@@ -313,7 +538,7 @@ export class SeatHandoverService {
|
|
|
313
538
|
eventSeq: committed.event.seq,
|
|
314
539
|
sideEffects: {
|
|
315
540
|
departingSessionKilled: false,
|
|
316
|
-
startupContextDelivered:
|
|
541
|
+
startupContextDelivered: input.contextDelivered,
|
|
317
542
|
provenanceRecordWritten: false,
|
|
318
543
|
},
|
|
319
544
|
},
|
|
@@ -340,4 +565,19 @@ export class SeatHandoverService {
|
|
|
340
565
|
`).run(ulid(), nodeId, fields.tmuxSession, fields.tmuxWindow, fields.tmuxPane);
|
|
341
566
|
}
|
|
342
567
|
}
|
|
568
|
+
/** Assemble the restore packet delivered to a fresh successor: seat identity +
|
|
569
|
+
* handover reason + predecessor session + the captured predecessor terminal. */
|
|
570
|
+
function buildRestorePacket(info) {
|
|
571
|
+
const captured = info.capturedContext.trim();
|
|
572
|
+
return [
|
|
573
|
+
"=== OpenRig seat handover — restore context ===",
|
|
574
|
+
`Seat: ${info.seatRef}`,
|
|
575
|
+
`Reason: ${info.reason}`,
|
|
576
|
+
`Predecessor session: ${info.departingSession}`,
|
|
577
|
+
`Handover at: ${info.handoverAt}`,
|
|
578
|
+
"",
|
|
579
|
+
"--- Predecessor terminal (captured) ---",
|
|
580
|
+
captured.length > 0 ? captured : "(no capture available)",
|
|
581
|
+
].join("\n");
|
|
582
|
+
}
|
|
343
583
|
//# sourceMappingURL=seat-handover-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-handover-service.js","sourceRoot":"","sources":["../../src/domain/seat-handover-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seat-handover-service.js","sourceRoot":"","sources":["../../src/domain/seat-handover-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { TmuxAdapter } from "../adapters/tmux.js";
|
|
3
|
+
/** Default identity-reconcile cadence: 5s. Process identity changes rarely
|
|
4
|
+
* (a seat's pane/process is stable for its whole life), and the check is
|
|
5
|
+
* more expensive than the 1Hz activity poll (per-seat pane PID + command
|
|
6
|
+
* tmux reads), so a slower cadence is the right cost/freshness trade. */
|
|
7
|
+
export declare const DEFAULT_IDENTITY_POLL_INTERVAL_MS = 5000;
|
|
8
|
+
/**
|
|
9
|
+
* Classify the pane's foreground command against the registered runtime.
|
|
10
|
+
*
|
|
11
|
+
* Deliberately LENIENT to preserve the slice-15 no-false-green-for-live-seats
|
|
12
|
+
* invariant: a genuinely-live claude/codex TUI usually reports its host
|
|
13
|
+
* process (`node`) as `pane_current_command`, NOT the literal runtime name, so
|
|
14
|
+
* we only declare `mismatch` on a POSITIVE contradiction — a different known
|
|
15
|
+
* agent runtime, or a bare shell where an agent was expected (the process
|
|
16
|
+
* died / an orphan shell squatted the pane). Ambiguous commands (`node`,
|
|
17
|
+
* `python`, empty) never down-rank.
|
|
18
|
+
*
|
|
19
|
+
* Mirrors SessionFingerprinter's Layer-1 process-command vocabulary; we do NOT
|
|
20
|
+
* run the full 4-layer scan (cmux query + pane-content capture) per poll — it
|
|
21
|
+
* is far more expensive at fleet scale and its content layer would not change
|
|
22
|
+
* the down-rank decision here (the reconcile only needs to distinguish
|
|
23
|
+
* "process contradicts the seat" from "no contradiction").
|
|
24
|
+
*/
|
|
25
|
+
export declare function classifyPaneRuntimeMatch(command: string | null, expectedRuntime: string | null): "match" | "mismatch";
|
|
26
|
+
export interface SeatIdentityReconcilerDeps {
|
|
27
|
+
db: Database.Database;
|
|
28
|
+
tmux: Pick<TmuxAdapter, "listSessions" | "getPanePid" | "getPaneCommand">;
|
|
29
|
+
now?: () => Date;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* OPR.0.4.3.19 — periodic reconciler for the liveness identity verdict (the
|
|
33
|
+
* THIRD axis). Mirrors SeatActivityService.start(): polls every running
|
|
34
|
+
* tmux-bound managed seat, reconciles the current pane PID/command against the
|
|
35
|
+
* registered seat, and persists the verdict to `seat_identity_verdicts`.
|
|
36
|
+
* Projections then read the cheap persisted verdict synchronously.
|
|
37
|
+
*
|
|
38
|
+
* Non-inference: this reconciler reads ONLY tmux pane process identity vs the
|
|
39
|
+
* registered binding. It NEVER reads queue/classifier/hook heartbeats, and it
|
|
40
|
+
* does NOT touch `terminalActive` / `hasAssignedWork`.
|
|
41
|
+
*/
|
|
42
|
+
export declare class SeatIdentityReconciler {
|
|
43
|
+
private readonly db;
|
|
44
|
+
private readonly tmux;
|
|
45
|
+
private readonly now;
|
|
46
|
+
private readonly store;
|
|
47
|
+
private timer;
|
|
48
|
+
constructor(deps: SeatIdentityReconcilerDeps);
|
|
49
|
+
private runningSeats;
|
|
50
|
+
/** Reconcile every running tmux-bound seat once and persist the verdicts. */
|
|
51
|
+
reconcileAll(): Promise<void>;
|
|
52
|
+
private tmuxUnavailableVerdict;
|
|
53
|
+
private computeVerdict;
|
|
54
|
+
/** Start the scheduler. Idempotent — calling twice is a no-op. */
|
|
55
|
+
start(intervalMs?: number): void;
|
|
56
|
+
/** Stop the scheduler. Safe to call before start or multiple times. */
|
|
57
|
+
stop(): void;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=seat-identity-reconciler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-identity-reconciler.d.ts","sourceRoot":"","sources":["../../src/domain/seat-identity-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD;;;0EAG0E;AAC1E,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAWtD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,eAAe,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,GAAG,UAAU,CAmBtB;AASD,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,YAAY,GAAG,gBAAgB,CAAC,CAAC;IAC1E,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqC;IAC1D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,KAAK,CAA+C;gBAEhD,IAAI,EAAE,0BAA0B;IAO5C,OAAO,CAAC,YAAY;IAcpB,6EAA6E;IACvE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCnC,OAAO,CAAC,sBAAsB;YAYhB,cAAc;IA2D5B,kEAAkE;IAClE,KAAK,CAAC,UAAU,GAAE,MAA0C,GAAG,IAAI;IAUnE,uEAAuE;IACvE,IAAI,IAAI,IAAI;CAMb"}
|