@openrig/cli 0.4.3 → 0.4.6
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/skills/mission-slice-sop/SKILL.md +47 -21
- package/daemon/assets/plugins/openrig-core/skills/openrig-cmux/SKILL.md +86 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-herdr/SKILL.md +158 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +742 -94
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +12 -8
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/pi-resume.d.ts +32 -0
- package/daemon/dist/adapters/pi-resume.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-resume.js +125 -0
- package/daemon/dist/adapters/pi-resume.js.map +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts +88 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.js +153 -0
- package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -0
- package/daemon/dist/adapters/pi-runner.d.ts +99 -0
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-runner.js +519 -0
- package/daemon/dist/adapters/pi-runner.js.map +1 -0
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts +61 -0
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-runtime-adapter.js +356 -0
- package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -0
- package/daemon/dist/adapters/tmux.d.ts +22 -1
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +40 -1
- 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/builtins/workflow-specs/branched-remediation.yaml +31 -0
- package/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +152 -0
- package/daemon/dist/builtins/workflow-specs/gated-release.yaml +26 -0
- package/daemon/dist/builtins/workflow-specs/linear-build.yaml +21 -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/db/migrations/049_workflow_instance_version.d.ts +20 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts.map +1 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.js +24 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.js.map +1 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts +22 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts.map +1 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.js +26 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.js.map +1 -0
- package/daemon/dist/db/migrations/051_workflow_resume.d.ts +22 -0
- package/daemon/dist/db/migrations/051_workflow_resume.d.ts.map +1 -0
- package/daemon/dist/db/migrations/051_workflow_resume.js +27 -0
- package/daemon/dist/db/migrations/051_workflow_resume.js.map +1 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts +26 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts.map +1 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js +30 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js.map +1 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts +48 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts.map +1 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.js +53 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.js.map +1 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts +34 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts.map +1 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.js +49 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.js.map +1 -0
- package/daemon/dist/domain/claim-service.d.ts +11 -0
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +3 -1
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/discovery-types.d.ts +1 -1
- package/daemon/dist/domain/discovery-types.d.ts.map +1 -1
- 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/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 +50 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.js +184 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts +11 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.js +54 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.js.map +1 -0
- package/daemon/dist/domain/hosts/read-through.d.ts +28 -0
- package/daemon/dist/domain/hosts/read-through.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/read-through.js +139 -0
- package/daemon/dist/domain/hosts/read-through.js.map +1 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts +56 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.js +154 -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 +18 -0
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +206 -95
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/node-launcher.d.ts +11 -0
- package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/node-launcher.js +10 -0
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts +7 -0
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.js +93 -13
- package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
- 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 +76 -26
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +130 -1
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +304 -11
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-retention.d.ts +130 -0
- package/daemon/dist/domain/queue-retention.d.ts.map +1 -0
- package/daemon/dist/domain/queue-retention.js +224 -0
- package/daemon/dist/domain/queue-retention.js.map +1 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts +5 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +29 -2
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/resume-token-capture.d.ts +13 -0
- package/daemon/dist/domain/resume-token-capture.d.ts.map +1 -1
- package/daemon/dist/domain/resume-token-capture.js +14 -1
- package/daemon/dist/domain/resume-token-capture.js.map +1 -1
- package/daemon/dist/domain/resume-token-validation.d.ts +1 -1
- package/daemon/dist/domain/resume-token-validation.d.ts.map +1 -1
- package/daemon/dist/domain/resume-token-validation.js +58 -10
- package/daemon/dist/domain/resume-token-validation.js.map +1 -1
- 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 +277 -0
- package/daemon/dist/domain/review/compose.d.ts.map +1 -0
- package/daemon/dist/domain/review/compose.js +862 -0
- package/daemon/dist/domain/review/compose.js.map +1 -0
- package/daemon/dist/domain/review/fleet-compose.d.ts +52 -0
- package/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -0
- package/daemon/dist/domain/review/fleet-compose.js +294 -0
- package/daemon/dist/domain/review/fleet-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 +115 -0
- package/daemon/dist/domain/review/gather.d.ts.map +1 -0
- package/daemon/dist/domain/review/gather.js +812 -0
- package/daemon/dist/domain/review/gather.js.map +1 -0
- package/daemon/dist/domain/review/types.d.ts +361 -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-expansion-service.d.ts.map +1 -1
- package/daemon/dist/domain/rig-expansion-service.js +3 -0
- package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +7 -6
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +33 -11
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-codec.js +3 -0
- package/daemon/dist/domain/rigspec-codec.js.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.js +4 -0
- package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +11 -0
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +6 -0
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +26 -1
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +20 -1
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/runtime-verifier.d.ts +7 -1
- package/daemon/dist/domain/runtime-verifier.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-verifier.js +39 -1
- package/daemon/dist/domain/runtime-verifier.js.map +1 -1
- 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 +9 -1
- package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.js +173 -1
- package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +9 -0
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +2 -0
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/seat-identity-store.d.ts +7 -0
- package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
- package/daemon/dist/domain/seat-identity-store.js +27 -0
- package/daemon/dist/domain/seat-identity-store.js.map +1 -1
- package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-status-service.js +6 -4
- package/daemon/dist/domain/seat-status-service.js.map +1 -1
- package/daemon/dist/domain/session-name.d.ts +22 -0
- package/daemon/dist/domain/session-name.d.ts.map +1 -1
- package/daemon/dist/domain/session-name.js +29 -0
- package/daemon/dist/domain/session-name.js.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js +4 -5
- package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +18 -2
- package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.js +23 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -1
- package/daemon/dist/domain/startup-proof.d.ts +10 -6
- package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
- package/daemon/dist/domain/startup-proof.js +35 -7
- package/daemon/dist/domain/startup-proof.js.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.d.ts +16 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +13 -0
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts +27 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js +67 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -0
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts +77 -0
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/herdr-adapter.js +266 -0
- package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -0
- package/daemon/dist/domain/terminal/herdr-transport.d.ts +50 -0
- package/daemon/dist/domain/terminal/herdr-transport.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/herdr-transport.js +145 -0
- package/daemon/dist/domain/terminal/herdr-transport.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts +88 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/terminal-provider.js +17 -0
- package/daemon/dist/domain/terminal/terminal-provider.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts +60 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/terminal-service.js +174 -0
- package/daemon/dist/domain/terminal/terminal-service.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-views-store.d.ts +77 -0
- package/daemon/dist/domain/terminal/terminal-views-store.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/terminal-views-store.js +146 -0
- package/daemon/dist/domain/terminal/terminal-views-store.js.map +1 -0
- package/daemon/dist/domain/terminal/view-composer.d.ts +42 -0
- package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/view-composer.js +137 -0
- package/daemon/dist/domain/terminal/view-composer.js.map +1 -0
- package/daemon/dist/domain/tmux-option-defaults.d.ts +89 -0
- package/daemon/dist/domain/tmux-option-defaults.d.ts.map +1 -0
- package/daemon/dist/domain/tmux-option-defaults.js +132 -0
- package/daemon/dist/domain/tmux-option-defaults.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 +39 -1
- package/daemon/dist/domain/types.d.ts.map +1 -1
- 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 +18 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +201 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts.map +1 -1
- package/daemon/dist/domain/workflow/slice-workflow-projection.js +6 -2
- package/daemon/dist/domain/workflow/slice-workflow-projection.js.map +1 -1
- package/daemon/dist/domain/workflow-boot-sweep.d.ts +28 -0
- package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-boot-sweep.js +102 -0
- package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -0
- package/daemon/dist/domain/workflow-deadline.d.ts +74 -0
- package/daemon/dist/domain/workflow-deadline.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-deadline.js +165 -0
- package/daemon/dist/domain/workflow-deadline.js.map +1 -0
- package/daemon/dist/domain/workflow-exception-escalation.d.ts +33 -0
- package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-exception-escalation.js +104 -0
- package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -0
- package/daemon/dist/domain/workflow-exception-router.d.ts +33 -0
- package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-exception-router.js +96 -0
- package/daemon/dist/domain/workflow-exception-router.js.map +1 -0
- package/daemon/dist/domain/workflow-exception.d.ts +90 -0
- package/daemon/dist/domain/workflow-exception.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-exception.js +122 -0
- package/daemon/dist/domain/workflow-exception.js.map +1 -0
- package/daemon/dist/domain/workflow-frontier-guard.d.ts +24 -0
- package/daemon/dist/domain/workflow-frontier-guard.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-frontier-guard.js +30 -0
- package/daemon/dist/domain/workflow-frontier-guard.js.map +1 -0
- package/daemon/dist/domain/workflow-instance-store.d.ts +28 -0
- package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-instance-store.js +66 -10
- package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
- package/daemon/dist/domain/workflow-keepalive-arming.d.ts +35 -0
- package/daemon/dist/domain/workflow-keepalive-arming.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-keepalive-arming.js +87 -0
- package/daemon/dist/domain/workflow-keepalive-arming.js.map +1 -0
- package/daemon/dist/domain/workflow-projector.d.ts +117 -2
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-projector.js +672 -41
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-role-context.d.ts +57 -0
- package/daemon/dist/domain/workflow-role-context.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-role-context.js +120 -0
- package/daemon/dist/domain/workflow-role-context.js.map +1 -0
- package/daemon/dist/domain/workflow-role-resolver.d.ts +65 -0
- package/daemon/dist/domain/workflow-role-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-role-resolver.js +108 -0
- package/daemon/dist/domain/workflow-role-resolver.js.map +1 -0
- package/daemon/dist/domain/workflow-runtime.d.ts +157 -1
- package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-runtime.js +718 -11
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.d.ts +26 -1
- package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.js +327 -13
- package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
- package/daemon/dist/domain/workflow-types.d.ts +143 -8
- package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-types.js +14 -1
- package/daemon/dist/domain/workflow-types.js.map +1 -1
- package/daemon/dist/domain/workflow-validator.d.ts +11 -1
- package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-validator.js +246 -1
- package/daemon/dist/domain/workflow-validator.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 +17 -0
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +44 -0
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/routes/activity.js +22 -0
- package/daemon/dist/routes/activity.js.map +1 -1
- 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/hosts.d.ts +5 -0
- package/daemon/dist/routes/hosts.d.ts.map +1 -0
- package/daemon/dist/routes/hosts.js +346 -0
- package/daemon/dist/routes/hosts.js.map +1 -0
- 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 +10 -9
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +305 -10
- package/daemon/dist/routes/queue.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 +195 -0
- package/daemon/dist/routes/review.js.map +1 -0
- 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.js +13 -0
- package/daemon/dist/routes/seat.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/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/terminal.d.ts +11 -0
- package/daemon/dist/routes/terminal.d.ts.map +1 -0
- package/daemon/dist/routes/terminal.js +104 -0
- package/daemon/dist/routes/terminal.js.map +1 -0
- 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/workflow.d.ts.map +1 -1
- package/daemon/dist/routes/workflow.js +102 -10
- package/daemon/dist/routes/workflow.js.map +1 -1
- package/daemon/dist/routes/workspace.js +2 -2
- package/daemon/dist/server.d.ts +6 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +36 -1
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +238 -14
- 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/factory-rsi/dogfood/agent.yaml +29 -0
- package/daemon/specs/agents/factory-rsi/dogfood/guidance/role.md +37 -0
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +29 -0
- package/daemon/specs/agents/factory-rsi/release-manager/guidance/role.md +40 -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 +113 -0
- package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +86 -0
- package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +158 -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 +75 -29
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +2 -2
- package/daemon/specs/rigs/focused/pm-team/CULTURE.md +4 -0
- package/daemon/specs/rigs/launch/factory-rsi/CULTURE.md +47 -0
- package/daemon/specs/rigs/launch/factory-rsi/rig.yaml +115 -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/broadcast.d.ts +6 -1
- package/dist/commands/broadcast.d.ts.map +1 -1
- package/dist/commands/broadcast.js +101 -15
- package/dist/commands/broadcast.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +99 -8
- package/dist/commands/capture.js.map +1 -1
- 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/config.d.ts.map +1 -1
- package/dist/commands/config.js +4 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +5 -0
- package/dist/commands/down.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/host.d.ts +48 -0
- package/dist/commands/host.d.ts.map +1 -0
- package/dist/commands/host.js +772 -0
- package/dist/commands/host.js.map +1 -0
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +5 -0
- 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 +353 -135
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts +36 -0
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +149 -7
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/restore-packet.d.ts.map +1 -1
- package/dist/commands/restore-packet.js +13 -2
- package/dist/commands/restore-packet.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +140 -3
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +127 -13
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/terminal.d.ts +6 -0
- package/dist/commands/terminal.d.ts.map +1 -0
- package/dist/commands/terminal.js +116 -0
- package/dist/commands/terminal.js.map +1 -0
- package/dist/commands/transcript.d.ts +6 -1
- package/dist/commands/transcript.d.ts.map +1 -1
- package/dist/commands/transcript.js +113 -30
- package/dist/commands/transcript.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 +78 -2
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +11 -0
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/workflow-errors.d.ts +23 -0
- package/dist/commands/workflow-errors.d.ts.map +1 -0
- package/dist/commands/workflow-errors.js +100 -0
- package/dist/commands/workflow-errors.js.map +1 -0
- package/dist/commands/workflow-follow.d.ts +71 -0
- package/dist/commands/workflow-follow.d.ts.map +1 -0
- package/dist/commands/workflow-follow.js +259 -0
- package/dist/commands/workflow-follow.js.map +1 -0
- package/dist/commands/workflow-render.d.ts +114 -0
- package/dist/commands/workflow-render.d.ts.map +1 -0
- package/dist/commands/workflow-render.js +223 -0
- package/dist/commands/workflow-render.js.map +1 -0
- package/dist/commands/workflow.d.ts +1 -0
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +278 -14
- package/dist/commands/workflow.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 +19 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +171 -0
- package/dist/config-store.js.map +1 -1
- package/dist/cross-host-cli-helpers.d.ts +13 -0
- package/dist/cross-host-cli-helpers.d.ts.map +1 -1
- package/dist/cross-host-cli-helpers.js +27 -0
- package/dist/cross-host-cli-helpers.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/cross-host-target.d.ts +49 -0
- package/dist/cross-host-target.d.ts.map +1 -0
- package/dist/cross-host-target.js +35 -0
- package/dist/cross-host-target.js.map +1 -0
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +4 -1
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/host-registry.d.ts +17 -0
- package/dist/host-registry.d.ts.map +1 -1
- package/dist/host-registry.js +64 -2
- package/dist/host-registry.js.map +1 -1
- package/dist/host-selection.d.ts +13 -0
- package/dist/host-selection.d.ts.map +1 -0
- package/dist/host-selection.js +54 -0
- package/dist/host-selection.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.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 +9 -1
- package/dist/lib/scope/scope-audit.d.ts.map +1 -1
- package/dist/lib/scope/scope-audit.js +173 -1
- 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 +1 -1
- package/dist/lib/scope-templates/mission-progress.md +1 -1
- package/dist/lib/scope-templates/mission-release.md +1 -1
- package/dist/lib/scope-templates/placeholder.md +11 -7
- package/dist/lib/scope-templates/proof.md +5 -1
- 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 +1 -1
- package/dist/remote-host-ops.d.ts +1 -0
- package/dist/remote-host-ops.d.ts.map +1 -1
- package/dist/remote-host-ops.js +11 -4
- package/dist/remote-host-ops.js.map +1 -1
- package/dist/session-name.d.ts +23 -0
- package/dist/session-name.d.ts.map +1 -0
- package/dist/session-name.js +61 -0
- package/dist/session-name.js.map +1 -0
- 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-CFqxa0zW.css +32 -0
- package/ui/dist/assets/index-zrFqS7gL.js +623 -0
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/index-DYZniQcc.js +0 -597
- package/ui/dist/assets/index-trcb4Yf_.css +0 -32
package/daemon/dist/startup.js
CHANGED
|
@@ -5,8 +5,10 @@ import { bindingsSessionsSchema } from "./db/migrations/002_bindings_sessions.js
|
|
|
5
5
|
import { eventsSchema } from "./db/migrations/003_events.js";
|
|
6
6
|
import { RigRepository } from "./domain/rig-repository.js";
|
|
7
7
|
import { SessionRegistry } from "./domain/session-registry.js";
|
|
8
|
+
import { isHumanSeatSessionRef, parseSessionName } from "./domain/session-name.js";
|
|
8
9
|
import { EventBus } from "./domain/event-bus.js";
|
|
9
10
|
import { NodeLauncher } from "./domain/node-launcher.js";
|
|
11
|
+
import { TmuxOptionDefaultsApplier } from "./domain/tmux-option-defaults.js";
|
|
10
12
|
import { TmuxAdapter } from "./adapters/tmux.js";
|
|
11
13
|
import { CmuxAdapter } from "./adapters/cmux.js";
|
|
12
14
|
import { execCommand } from "./adapters/tmux-exec.js";
|
|
@@ -17,6 +19,7 @@ import { SnapshotCapture } from "./domain/snapshot-capture.js";
|
|
|
17
19
|
import { RestoreOrchestrator } from "./domain/restore-orchestrator.js";
|
|
18
20
|
import { ClaudeResumeAdapter } from "./adapters/claude-resume.js";
|
|
19
21
|
import { CodexResumeAdapter } from "./adapters/codex-resume.js";
|
|
22
|
+
import { PiResumeAdapter } from "./adapters/pi-resume.js";
|
|
20
23
|
import { RigSpecExporter } from "./domain/rigspec-exporter.js";
|
|
21
24
|
import { PodRepository } from "./domain/pod-repository.js";
|
|
22
25
|
import { RigSpecPreflight } from "./domain/rigspec-preflight.js";
|
|
@@ -59,6 +62,7 @@ import { AskService } from "./domain/ask-service.js";
|
|
|
59
62
|
import { ChatRepository } from "./domain/chat-repository.js";
|
|
60
63
|
import { StreamStore } from "./domain/stream-store.js";
|
|
61
64
|
import { QueueRepository } from "./domain/queue-repository.js";
|
|
65
|
+
import { createWorkflowFrontierPredicate } from "./domain/workflow-frontier-guard.js";
|
|
62
66
|
import { InboxHandler } from "./domain/inbox-handler.js";
|
|
63
67
|
import { OutboxHandler } from "./domain/outbox-handler.js";
|
|
64
68
|
import { ProjectClassifier } from "./domain/project-classifier.js";
|
|
@@ -136,6 +140,13 @@ import { queueItemSummarySchema } from "./db/migrations/044_queue_item_summary.j
|
|
|
136
140
|
import { resumeVerificationSchema } from "./db/migrations/045_resume_verification.js";
|
|
137
141
|
import { seatIdentityVerdictsSchema } from "./db/migrations/046_seat_identity_verdicts.js";
|
|
138
142
|
import { eventsNodeTypeIndexSchema } from "./db/migrations/047_events_node_type_index.js";
|
|
143
|
+
import { queueItemEvidenceRefSchema } from "./db/migrations/048_queue_item_evidence_ref.js";
|
|
144
|
+
import { workflowInstanceVersionSchema } from "./db/migrations/049_workflow_instance_version.js";
|
|
145
|
+
import { workflowSpecJsonSchema } from "./db/migrations/050_workflow_spec_json.js";
|
|
146
|
+
import { workflowResumeSchema } from "./db/migrations/051_workflow_resume.js";
|
|
147
|
+
import { workflowInstanceBoundRigSchema } from "./db/migrations/052_workflow_instance_bound_rig.js";
|
|
148
|
+
import { sessionsNodeIdIndexSchema } from "./db/migrations/053_sessions_node_id_index.js";
|
|
149
|
+
import { queueTransitionsArchiveSchema } from "./db/migrations/054_queue_transitions_archive.js";
|
|
139
150
|
import { RigPolicyStore } from "./domain/rig-policy/rig-policy-store.js";
|
|
140
151
|
import { MissionControlActionLog } from "./domain/mission-control/mission-control-action-log.js";
|
|
141
152
|
import { MissionControlWriteContract } from "./domain/mission-control/mission-control-write-contract.js";
|
|
@@ -156,6 +167,15 @@ const KNOWN_PROVIDER_AUTH_ENV = new Set([
|
|
|
156
167
|
"OPENAI_BASE_URL",
|
|
157
168
|
"OPENAI_ORG_ID",
|
|
158
169
|
"OPENAI_PROJECT_ID",
|
|
170
|
+
// OPR.0.4.6.PI1 FR-7 — Pi seat providers. Without these in the KNOWN set,
|
|
171
|
+
// a daemon-launched Pi seat can never receive its provider key (the
|
|
172
|
+
// pi-runner's own deny-by-default allowlist then has nothing to pass
|
|
173
|
+
// through). Double opt-in preserved: the operator must still name each var
|
|
174
|
+
// in recovery.provider_auth_env_allowlist. OpenRouter is the founder-ruled
|
|
175
|
+
// preferred path (2026-07-06); zai/kimi-coding are the secondary natives.
|
|
176
|
+
"OPENROUTER_API_KEY",
|
|
177
|
+
"ZAI_API_KEY",
|
|
178
|
+
"KIMI_API_KEY",
|
|
159
179
|
]);
|
|
160
180
|
export function collectAllowlistedProviderAuthEnv(raw, env) {
|
|
161
181
|
const out = {};
|
|
@@ -177,7 +197,7 @@ export function collectAllowlistedProviderAuthEnv(raw, env) {
|
|
|
177
197
|
export async function createDaemon(opts) {
|
|
178
198
|
const dbPath = opts?.dbPath ?? ":memory:";
|
|
179
199
|
const db = createDb(dbPath);
|
|
180
|
-
migrate(db, [coreSchema, bindingsSessionsSchema, eventsSchema, snapshotsSchema, checkpointsSchema, resumeMetadataSchema, nodeSpecFieldsSchema, packagesSchema, installJournalSchema, journalSeqSchema, bootstrapSchema, discoverySchema, discoveryFkFix, agentspecRebootSchema, startupContextSchema, chatMessagesSchema, podNamespaceSchema, contextUsageSchema, externalCliAttachmentSchema, rigServicesSchema, seatHandoverObservabilitySchema, nodeCodexConfigProfileSchema, streamItemsSchema, queueItemsSchema, queueTransitionsSchema, inboxEntriesSchema, outboxEntriesSchema, projectClassificationsSchema, classifierLeasesSchema, viewsCustomSchema, watchdogJobsSchema, watchdogHistorySchema, workflowSpecsSchema, workflowInstancesSchema, workflowStepTrailsSchema, watchdogPolicyEnumExtensionSchema, missionControlActionsSchema, workspacePrimitiveSchema, queueTargetRepoSchema, workflowSpecsDiagnosticSchema, rigPolicySchema, rigArchiveSchema, resumeProvenanceSchema, queueItemSummarySchema, resumeVerificationSchema, seatIdentityVerdictsSchema, eventsNodeTypeIndexSchema]);
|
|
200
|
+
migrate(db, [coreSchema, bindingsSessionsSchema, eventsSchema, snapshotsSchema, checkpointsSchema, resumeMetadataSchema, nodeSpecFieldsSchema, packagesSchema, installJournalSchema, journalSeqSchema, bootstrapSchema, discoverySchema, discoveryFkFix, agentspecRebootSchema, startupContextSchema, chatMessagesSchema, podNamespaceSchema, contextUsageSchema, externalCliAttachmentSchema, rigServicesSchema, seatHandoverObservabilitySchema, nodeCodexConfigProfileSchema, streamItemsSchema, queueItemsSchema, queueTransitionsSchema, inboxEntriesSchema, outboxEntriesSchema, projectClassificationsSchema, classifierLeasesSchema, viewsCustomSchema, watchdogJobsSchema, watchdogHistorySchema, workflowSpecsSchema, workflowInstancesSchema, workflowStepTrailsSchema, watchdogPolicyEnumExtensionSchema, missionControlActionsSchema, workspacePrimitiveSchema, queueTargetRepoSchema, workflowSpecsDiagnosticSchema, rigPolicySchema, rigArchiveSchema, resumeProvenanceSchema, queueItemSummarySchema, resumeVerificationSchema, seatIdentityVerdictsSchema, eventsNodeTypeIndexSchema, queueItemEvidenceRefSchema, workflowInstanceVersionSchema, workflowSpecJsonSchema, workflowResumeSchema, workflowInstanceBoundRigSchema, sessionsNodeIdIndexSchema, queueTransitionsArchiveSchema]);
|
|
181
201
|
const rigRepo = new RigRepository(db);
|
|
182
202
|
const sessionRegistry = new SessionRegistry(db);
|
|
183
203
|
const eventBus = new EventBus(db);
|
|
@@ -185,17 +205,17 @@ export async function createDaemon(opts) {
|
|
|
185
205
|
// Reject `<member>@<unknown-rig>` shapes by checking the rig portion
|
|
186
206
|
// against the rig registry. Bare ids without `@` are also rejected
|
|
187
207
|
// (no canonical rig binding).
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
208
|
+
// OPR.0.4.6.MH1 FR-8: this gate is the ARCHETYPE consumer of the shared
|
|
209
|
+
// parse contract — human-seat classification BEFORE parse, then the
|
|
210
|
+
// greedy first-@ rig (so "member@rig@x" looks up rig "rig@x", misses,
|
|
211
|
+
// and rejects with the same unknown_destination_rig as ever — BR-1).
|
|
191
212
|
const topologyValidateRig = (sessionRef) => {
|
|
192
213
|
if (isHumanSeatSessionRef(sessionRef))
|
|
193
214
|
return true;
|
|
194
|
-
const
|
|
195
|
-
if (
|
|
215
|
+
const parsed = parseSessionName(sessionRef);
|
|
216
|
+
if (parsed.kind !== "canonical")
|
|
196
217
|
return false;
|
|
197
|
-
|
|
198
|
-
return rigRepo.findRigsByName(rigName).length > 0;
|
|
218
|
+
return rigRepo.findRigsByName(parsed.rig).length > 0;
|
|
199
219
|
};
|
|
200
220
|
// PL-004 Phase A — shared coordination services. Constructed early so
|
|
201
221
|
// both the queueRepo dep slot and inboxHandler can share one instance.
|
|
@@ -203,6 +223,10 @@ export async function createDaemon(opts) {
|
|
|
203
223
|
// attachTransport().
|
|
204
224
|
const queueRepoInstance = new QueueRepository(db, eventBus, {
|
|
205
225
|
validateRig: topologyValidateRig,
|
|
226
|
+
// OPR.0.4.6.WF3 FR-6 — the frontier close-path guard's predicate,
|
|
227
|
+
// INJECTED here (arch layering pin: the queue never imports the
|
|
228
|
+
// workflow domain; startup wires them — the validateRig precedent).
|
|
229
|
+
workflowFrontierPredicate: createWorkflowFrontierPredicate(db),
|
|
206
230
|
});
|
|
207
231
|
// PL-004 Phase B — classifier lease manager. Constructed early so both
|
|
208
232
|
// the leaseManager dep slot and project-classifier can share one instance.
|
|
@@ -285,6 +309,26 @@ export async function createDaemon(opts) {
|
|
|
285
309
|
OPENRIG_ACTIVITY_HOOK_TOKEN: resolvedActivityHookToken,
|
|
286
310
|
...providerAuthEnv,
|
|
287
311
|
};
|
|
312
|
+
// OPR.0.4.6.02 S1 — ONE shared tmux option-defaults applier, injected into
|
|
313
|
+
// BOTH NodeLauncher and (via AppDeps → the seat-handover route) the fresh
|
|
314
|
+
// successor launcher, so every fresh seat gets the same mouse/status/
|
|
315
|
+
// clipboard defaults and the server-scope defaults assert once per daemon
|
|
316
|
+
// lifetime (shared memo). The status-bar read resolves `terminal.status_bar`
|
|
317
|
+
// FRESH per launch (resolveOne re-reads the config file) so an operator flip
|
|
318
|
+
// applies to the NEXT launch without a daemon restart; a resolution failure
|
|
319
|
+
// falls back to off (bar hidden).
|
|
320
|
+
const tmuxOptionSettings = new ContextPackSettingsStore();
|
|
321
|
+
const tmuxOptionDefaults = new TmuxOptionDefaultsApplier({
|
|
322
|
+
tmuxAdapter,
|
|
323
|
+
readTmuxOptionDefaults: () => {
|
|
324
|
+
try {
|
|
325
|
+
return { statusBar: tmuxOptionSettings.resolveOne("terminal.status_bar").value === true };
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
return { statusBar: false };
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
});
|
|
288
332
|
const nodeLauncher = new NodeLauncher({
|
|
289
333
|
db,
|
|
290
334
|
rigRepo,
|
|
@@ -293,12 +337,19 @@ export async function createDaemon(opts) {
|
|
|
293
337
|
tmuxAdapter,
|
|
294
338
|
transcriptStore,
|
|
295
339
|
sessionEnv: launchSessionEnv,
|
|
340
|
+
tmuxOptionDefaults,
|
|
296
341
|
});
|
|
297
342
|
const snapshotRepo = new SnapshotRepository(db);
|
|
298
343
|
const checkpointStore = new CheckpointStore(db);
|
|
299
344
|
const snapshotCapture = new SnapshotCapture({ db, rigRepo, sessionRegistry, eventBus, snapshotRepo, checkpointStore });
|
|
300
345
|
const claudeResume = new ClaudeResumeAdapter(tmuxAdapter);
|
|
301
346
|
const codexResume = new CodexResumeAdapter(tmuxAdapter);
|
|
347
|
+
// OPR.0.4.6.PI1 — the Pi seat-state root + the compiled runner entry (daemon
|
|
348
|
+
// dist). Shared by the Pi runtime adapter, the resume adapter, and the
|
|
349
|
+
// resume-token capture sidecar reader.
|
|
350
|
+
const piStateRoot = nodePath.join(OPENRIG_HOME, "state", "pi");
|
|
351
|
+
const piRunnerEntryPath = nodePath.resolve(import.meta.dirname, "./adapters/pi-runner.js");
|
|
352
|
+
const piResume = new PiResumeAdapter(tmuxAdapter, { readFile: (p) => fs.readFileSync(p, "utf-8"), writeFile: (p, c) => fs.writeFileSync(p, c, "utf-8"), exists: (p) => fs.existsSync(p), mkdirp: (p) => fs.mkdirSync(p, { recursive: true }) }, { stateRoot: piStateRoot, runnerEntryPath: piRunnerEntryPath });
|
|
302
353
|
// Services infrastructure (RigEnv) — created early so restore/bootstrap can use it
|
|
303
354
|
const { ComposeServicesAdapter } = await import("./adapters/compose-services-adapter.js");
|
|
304
355
|
const { ServiceOrchestrator } = await import("./domain/service-orchestrator.js");
|
|
@@ -306,7 +357,7 @@ export async function createDaemon(opts) {
|
|
|
306
357
|
const serviceOrchestrator = new ServiceOrchestrator({ rigRepo, composeAdapter });
|
|
307
358
|
const restoreOrchestrator = new RestoreOrchestrator({
|
|
308
359
|
db, rigRepo, sessionRegistry, eventBus, snapshotRepo, snapshotCapture,
|
|
309
|
-
checkpointStore, nodeLauncher, tmuxAdapter, claudeResume, codexResume,
|
|
360
|
+
checkpointStore, nodeLauncher, tmuxAdapter, claudeResume, codexResume, piResume,
|
|
310
361
|
transcriptStore, serviceOrchestrator,
|
|
311
362
|
});
|
|
312
363
|
// Connect to cmux at startup — degrades gracefully if absent
|
|
@@ -403,6 +454,7 @@ export async function createDaemon(opts) {
|
|
|
403
454
|
const { StartupOrchestrator } = await import("./domain/startup-orchestrator.js");
|
|
404
455
|
const { ClaudeCodeAdapter } = await import("./adapters/claude-code-adapter.js");
|
|
405
456
|
const { CodexRuntimeAdapter } = await import("./adapters/codex-runtime-adapter.js");
|
|
457
|
+
const { PiRuntimeAdapter } = await import("./adapters/pi-runtime-adapter.js");
|
|
406
458
|
const startupOrchestrator = new StartupOrchestrator({ db, sessionRegistry, eventBus, tmuxAdapter, readFile: (p) => fs.readFileSync(p, "utf-8") });
|
|
407
459
|
const runtimeSettings = new ContextPackSettingsStore().resolveConfig();
|
|
408
460
|
const claudeAdapter = new ClaudeCodeAdapter({ tmux: tmuxAdapter, fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), writeFile: (p, c) => fs.writeFileSync(p, c, "utf-8"), exists: (p) => fs.existsSync(p), mkdirp: (p) => fs.mkdirSync(p, { recursive: true }), copyFile: (src, dest) => fs.copyFileSync(src, dest), listFiles: (dir) => { const r = []; function w(d, pre) { for (const e of fs.readdirSync(d, { withFileTypes: true })) {
|
|
@@ -417,6 +469,14 @@ export async function createDaemon(opts) {
|
|
|
417
469
|
else
|
|
418
470
|
r.push(pre ? nodePath.join(pre, e.name) : e.name);
|
|
419
471
|
} } w(dir, ""); return r; }, homedir: os.homedir() }, activityRelayPath: nodePath.resolve(import.meta.dirname, "../assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs") });
|
|
472
|
+
// OPR.0.4.6.PI1 — the RPC-first Pi adapter (runner-in-a-pane). Same fsOps
|
|
473
|
+
// shape as the Codex adapter; seat isolation roots under piStateRoot.
|
|
474
|
+
const piAdapter = new PiRuntimeAdapter({ tmux: tmuxAdapter, fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), writeFile: (p, c) => fs.writeFileSync(p, c, "utf-8"), exists: (p) => fs.existsSync(p), mkdirp: (p) => fs.mkdirSync(p, { recursive: true }), listFiles: (dir) => { const r = []; function w(d, pre) { for (const e of fs.readdirSync(d, { withFileTypes: true })) {
|
|
475
|
+
if (e.isDirectory())
|
|
476
|
+
w(nodePath.join(d, e.name), nodePath.join(pre, e.name));
|
|
477
|
+
else
|
|
478
|
+
r.push(pre ? nodePath.join(pre, e.name) : e.name);
|
|
479
|
+
} } w(dir, ""); return r; } }, stateRoot: piStateRoot, runnerEntryPath: piRunnerEntryPath });
|
|
420
480
|
// plugin-primitive Phase 3a slice 3.5 — ensure Codex feature flag
|
|
421
481
|
// codex_hooks = true is set in ~/.codex/config.toml so plugin-shipped
|
|
422
482
|
// hooks fire on Codex runtime. Slice 27 also creates the default
|
|
@@ -578,7 +638,7 @@ export async function createDaemon(opts) {
|
|
|
578
638
|
db, rigRepo, podRepo,
|
|
579
639
|
sessionRegistry, eventBus, nodeLauncher, startupOrchestrator,
|
|
580
640
|
fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), exists: (p) => fs.existsSync(p) },
|
|
581
|
-
adapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
641
|
+
adapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "pi": piAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
582
642
|
tmuxAdapter,
|
|
583
643
|
contextPackLibrary,
|
|
584
644
|
agentImageLibrary,
|
|
@@ -671,6 +731,8 @@ export async function createDaemon(opts) {
|
|
|
671
731
|
// (Claude sidecar reader + Codex thread-id capturer, both reuse).
|
|
672
732
|
contextUsageStore,
|
|
673
733
|
resumeTokenCapturer: resumeMetadataRefresher,
|
|
734
|
+
// OPR.0.4.6.PI1 FR-6 — pi-runner sidecar reader (the adapter exposes it).
|
|
735
|
+
piRunnerStateStore: piAdapter,
|
|
674
736
|
});
|
|
675
737
|
const selfAttachService = new SelfAttachService({
|
|
676
738
|
db, rigRepo, podRepo, sessionRegistry, eventBus, tmuxAdapter, transcriptStore,
|
|
@@ -708,6 +770,7 @@ export async function createDaemon(opts) {
|
|
|
708
770
|
eventBus,
|
|
709
771
|
nodeLauncher,
|
|
710
772
|
tmuxAdapter,
|
|
773
|
+
tmuxOptionDefaults,
|
|
711
774
|
sessionEnv: launchSessionEnv,
|
|
712
775
|
cmuxAdapter,
|
|
713
776
|
snapshotCapture,
|
|
@@ -735,7 +798,9 @@ export async function createDaemon(opts) {
|
|
|
735
798
|
// queue/assignment state (non-inference contract; see slice 15 IMPL-PRD §2.3).
|
|
736
799
|
seatActivityService,
|
|
737
800
|
seatIdentityReconciler,
|
|
738
|
-
|
|
801
|
+
// OPR.0.4.4.21 — agentActivity feeds the rig-rollup attention
|
|
802
|
+
// predicate's needs_input signal (synchronous events lookup only).
|
|
803
|
+
psProjectionService: new PsProjectionService({ db, seatActivity: seatActivityService, agentActivity: agentActivityStore }),
|
|
739
804
|
upRouter: new UpCommandRouter({
|
|
740
805
|
fsOps: {
|
|
741
806
|
exists: (p) => fs.existsSync(p),
|
|
@@ -748,7 +813,7 @@ export async function createDaemon(opts) {
|
|
|
748
813
|
}),
|
|
749
814
|
podInstantiator,
|
|
750
815
|
podBundleSourceResolver,
|
|
751
|
-
runtimeAdapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
816
|
+
runtimeAdapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "pi": piAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
752
817
|
transcriptStore,
|
|
753
818
|
sessionTransport: (() => {
|
|
754
819
|
const t = new SessionTransport({ db, rigRepo, sessionRegistry, tmuxAdapter, agentActivityStore, eventBus });
|
|
@@ -785,7 +850,7 @@ export async function createDaemon(opts) {
|
|
|
785
850
|
watchdogJobsRepo: watchdogJobsRepoInstance,
|
|
786
851
|
watchdogHistoryLog: watchdogHistoryLogInstance,
|
|
787
852
|
askService: (() => {
|
|
788
|
-
const psProjectionService = new PsProjectionService({ db });
|
|
853
|
+
const psProjectionService = new PsProjectionService({ db, agentActivity: agentActivityStore });
|
|
789
854
|
const execDep = (cmd, args) => new Promise((resolve) => {
|
|
790
855
|
execFile(cmd, args, { maxBuffer: 10 * 1024 * 1024 }, (err, stdout) => {
|
|
791
856
|
if (err && typeof err.code === "string" && err.code === "ENOENT") {
|
|
@@ -929,13 +994,40 @@ export async function createDaemon(opts) {
|
|
|
929
994
|
// slice IMPL § Write Set / § Driver Handoff Contract).
|
|
930
995
|
const queueRepoForWorkflow = deps.queueRepo;
|
|
931
996
|
let workflowRuntime;
|
|
997
|
+
let workflowExceptionEnsurer;
|
|
932
998
|
if (queueRepoForWorkflow) {
|
|
933
999
|
workflowRuntime = new WorkflowRuntime({
|
|
934
1000
|
db,
|
|
935
1001
|
eventBus,
|
|
936
1002
|
queueRepo: queueRepoForWorkflow,
|
|
1003
|
+
// OPR.0.4.6.WF1 FR-3: instantiate/handoff auto-arm the
|
|
1004
|
+
// per-instance workflow-keepalive job in-txn; terminal disarms.
|
|
1005
|
+
watchdogJobsRepo: watchdogJobsRepoInstance,
|
|
1006
|
+
// OPR.0.4.6.WF5 FR-2: the maturity dial — host default read LIVE
|
|
1007
|
+
// per exception from the settings twin (dial flips affect future
|
|
1008
|
+
// items only, never retroactive re-routing).
|
|
1009
|
+
exceptionDial: {
|
|
1010
|
+
hostDefault: () => {
|
|
1011
|
+
const v = new ContextPackSettingsStore().resolveOne("workflow.exception_routing")
|
|
1012
|
+
.value;
|
|
1013
|
+
return v === "orchestrator" || v === "human_only" ? v : null;
|
|
1014
|
+
},
|
|
1015
|
+
humanFallbackSeat: "human@host",
|
|
1016
|
+
},
|
|
937
1017
|
});
|
|
938
1018
|
deps.workflowRuntime = workflowRuntime;
|
|
1019
|
+
// OPR.0.4.6.WF5 FR-2 class (b): the shared detection-time exception
|
|
1020
|
+
// ensurer — sweep + keepalive both call it; dedup by occurrence tags.
|
|
1021
|
+
{
|
|
1022
|
+
const { makeEnsureStuckExceptionItem } = await import("./domain/workflow-exception-escalation.js");
|
|
1023
|
+
workflowExceptionEnsurer = makeEnsureStuckExceptionItem({
|
|
1024
|
+
db,
|
|
1025
|
+
queueRepo: queueRepoForWorkflow,
|
|
1026
|
+
resolveRoute: (name, version, cls, boundRig) => workflowRuntime.resolveExceptionRouteFor(name, version, cls, boundRig),
|
|
1027
|
+
humanFallbackSeat: "human@host",
|
|
1028
|
+
log: (line) => console.log(line),
|
|
1029
|
+
});
|
|
1030
|
+
}
|
|
939
1031
|
// Seed built-in starter workflow_specs into the cache. Idempotent
|
|
940
1032
|
// + workspace-surface-respecting — operator
|
|
941
1033
|
// overrides at workspace paths are preserved (skip-if-cached).
|
|
@@ -1164,6 +1256,109 @@ export async function createDaemon(opts) {
|
|
|
1164
1256
|
});
|
|
1165
1257
|
deps.sliceIndexer = sliceIndexer;
|
|
1166
1258
|
deps.sliceDetailProjector = sliceDetailProjector;
|
|
1259
|
+
// Living Notes Packet 2 (OPR.0.4.4.20): the composed-review gatherer.
|
|
1260
|
+
// Git lineage facts come from OPENRIG_REVIEW_GIT_REPO when set; else
|
|
1261
|
+
// lineage degrades honestly to unknown.
|
|
1262
|
+
const { ReviewGatherer } = await import("./domain/review/gather.js");
|
|
1263
|
+
deps.reviewGatherer = new ReviewGatherer({
|
|
1264
|
+
db,
|
|
1265
|
+
indexer: sliceIndexer,
|
|
1266
|
+
gitRepoPath: process.env["OPENRIG_REVIEW_GIT_REPO"] ?? null,
|
|
1267
|
+
// OPR.0.4.4.22 FR-2: the agent state glyph reads recorded hook
|
|
1268
|
+
// activity (honest-unknown when absent) - synchronous, never polls.
|
|
1269
|
+
activityStore: agentActivityStore,
|
|
1270
|
+
});
|
|
1271
|
+
}
|
|
1272
|
+
// OPR.0.4.6.02 C3 — the terminal-provider-ride service (ONE composer for
|
|
1273
|
+
// every view kind). Built here (post-hoc) so it can read the lazily-built
|
|
1274
|
+
// reviewGatherer for derived mission/slice views; if the gatherer never
|
|
1275
|
+
// built, those scopes honestly return not-found rather than throwing.
|
|
1276
|
+
{
|
|
1277
|
+
const { TerminalService } = await import("./domain/terminal/terminal-service.js");
|
|
1278
|
+
const { HerdrAdapter } = await import("./domain/terminal/herdr-adapter.js");
|
|
1279
|
+
const { createHerdrSocketRpc, createHerdrSocketTransport } = await import("./domain/terminal/herdr-transport.js");
|
|
1280
|
+
const { CmuxProviderAdapter } = await import("./domain/terminal/cmux-provider-adapter.js");
|
|
1281
|
+
const { TerminalViewsStore } = await import("./domain/terminal/terminal-views-store.js");
|
|
1282
|
+
const { getNodeInventory } = await import("./domain/node-inventory.js");
|
|
1283
|
+
const { loadHostRegistry, resolveHost: resolveHostInRegistry } = await import("./domain/hosts/hosts-registry-reader.js");
|
|
1284
|
+
// NodeInventoryEntry → the composer's minimal LiveSeatRow (single-host
|
|
1285
|
+
// inventory: the canonical session name IS the tmux session; no host field).
|
|
1286
|
+
const toLiveSeatRow = (e) => ({
|
|
1287
|
+
canonicalSessionName: e.canonicalSessionName,
|
|
1288
|
+
attachmentType: e.attachmentType ?? null,
|
|
1289
|
+
tmuxSession: e.canonicalSessionName,
|
|
1290
|
+
rigName: e.rigName,
|
|
1291
|
+
logicalId: e.logicalId,
|
|
1292
|
+
});
|
|
1293
|
+
// Resolve a seat (canonical session name) → its rig + node, for the cmux facade.
|
|
1294
|
+
const resolveSeatNode = (seat) => {
|
|
1295
|
+
for (const rig of rigRepo.listRigs()) {
|
|
1296
|
+
for (const e of getNodeInventory(db, rig.id)) {
|
|
1297
|
+
if (e.canonicalSessionName === seat)
|
|
1298
|
+
return { rigId: rig.id, logicalId: e.logicalId };
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
return null;
|
|
1302
|
+
};
|
|
1303
|
+
const herdrProvider = new HerdrAdapter({
|
|
1304
|
+
// FB4: herdr speaks its unix control socket (there is no `layout` CLI).
|
|
1305
|
+
transportFactory: createHerdrSocketTransport(createHerdrSocketRpc()),
|
|
1306
|
+
});
|
|
1307
|
+
const cmuxProvider = new CmuxProviderAdapter({ cmuxAdapter, nodeCmuxService, resolveSeatNode });
|
|
1308
|
+
const providerMap = {
|
|
1309
|
+
herdr: herdrProvider,
|
|
1310
|
+
cmux: cmuxProvider,
|
|
1311
|
+
};
|
|
1312
|
+
deps.terminalService = new TerminalService({
|
|
1313
|
+
resolveProvider: (name) => providerMap[name] ?? null,
|
|
1314
|
+
viewsStore: new TerminalViewsStore(),
|
|
1315
|
+
listRigSeats: (rigArg) => {
|
|
1316
|
+
const rigs = rigRepo.listRigs();
|
|
1317
|
+
const rig = rigs.find((r) => r.name === rigArg) ?? rigs.find((r) => r.id === rigArg);
|
|
1318
|
+
if (!rig)
|
|
1319
|
+
return null;
|
|
1320
|
+
return getNodeInventory(db, rig.id).map(toLiveSeatRow);
|
|
1321
|
+
},
|
|
1322
|
+
listPodSeats: (rigArg, pod) => {
|
|
1323
|
+
const rigs = rigRepo.listRigs();
|
|
1324
|
+
const rig = rigs.find((r) => r.name === rigArg) ?? rigs.find((r) => r.id === rigArg);
|
|
1325
|
+
if (!rig)
|
|
1326
|
+
return null;
|
|
1327
|
+
const rows = getNodeInventory(db, rig.id)
|
|
1328
|
+
.filter((e) => e.podNamespace === pod)
|
|
1329
|
+
.map(toLiveSeatRow);
|
|
1330
|
+
// No node carries that pod namespace → an unknown pod (not an empty view).
|
|
1331
|
+
return rows.length > 0 ? rows : null;
|
|
1332
|
+
},
|
|
1333
|
+
listScopeSeats: (scope) => {
|
|
1334
|
+
const gatherer = deps.reviewGatherer;
|
|
1335
|
+
if (!gatherer)
|
|
1336
|
+
return null;
|
|
1337
|
+
// N1 (dev44-driver2 pre-guard): cast to the real AgentsScope union (not
|
|
1338
|
+
// `never`) so the compile guard on the scope grammar is restored.
|
|
1339
|
+
const band = gatherer.composeAgents(scope);
|
|
1340
|
+
if (!band)
|
|
1341
|
+
return null;
|
|
1342
|
+
const wanted = new Set(band.rows.map((r) => r.sessionName));
|
|
1343
|
+
const rows = [];
|
|
1344
|
+
for (const rig of rigRepo.listRigs()) {
|
|
1345
|
+
for (const e of getNodeInventory(db, rig.id)) {
|
|
1346
|
+
if (e.canonicalSessionName && wanted.has(e.canonicalSessionName))
|
|
1347
|
+
rows.push(toLiveSeatRow(e));
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
return rows;
|
|
1351
|
+
},
|
|
1352
|
+
listRigNames: () => rigRepo.listRigs().map((r) => r.name),
|
|
1353
|
+
resolveHost: (id) => {
|
|
1354
|
+
const res = loadHostRegistry();
|
|
1355
|
+
if (!res.ok)
|
|
1356
|
+
return null;
|
|
1357
|
+
const r = resolveHostInRegistry(res.registry, id);
|
|
1358
|
+
return r.ok ? r.host : null;
|
|
1359
|
+
},
|
|
1360
|
+
hasSession: (session) => tmuxAdapter.hasSession(session),
|
|
1361
|
+
});
|
|
1167
1362
|
}
|
|
1168
1363
|
// UI Enhancement Pack v0:
|
|
1169
1364
|
// - file allowlist (item 3) from OPENRIG_FILES_ALLOWLIST
|
|
@@ -1255,7 +1450,13 @@ export async function createDaemon(opts) {
|
|
|
1255
1450
|
// shared AgentActivityStore (constructed above, before the engine)
|
|
1256
1451
|
// into one bounded wake. Wakes/flags only; cooldown via engine throttle.
|
|
1257
1452
|
additionalPolicies: [
|
|
1258
|
-
makeWorkflowKeepalivePolicy({
|
|
1453
|
+
makeWorkflowKeepalivePolicy({
|
|
1454
|
+
db,
|
|
1455
|
+
// OPR.0.4.6.WF5 FR-2 class (b): detection-time exception items,
|
|
1456
|
+
// dedup by occurrence; dial resolved via the runtime's cached
|
|
1457
|
+
// spec (never-lost fallback inside the helper).
|
|
1458
|
+
ensureStuckExceptionItem: workflowExceptionEnsurer,
|
|
1459
|
+
}),
|
|
1259
1460
|
makeIdleGateQitemPolicy({ db, agentActivityStore }),
|
|
1260
1461
|
],
|
|
1261
1462
|
});
|
|
@@ -1265,6 +1466,28 @@ export async function createDaemon(opts) {
|
|
|
1265
1466
|
});
|
|
1266
1467
|
deps.watchdogPolicyEngine = watchdogPolicyEngine;
|
|
1267
1468
|
deps.watchdogScheduler = watchdogScheduler;
|
|
1469
|
+
// OPR.0.4.6.WF1 FR-4: the workflow startup resume sweep — re-arm
|
|
1470
|
+
// keepalives, reissue lost post-commit nudges (pending frontier
|
|
1471
|
+
// packets never nudged), surface stuck instances. Runs after the
|
|
1472
|
+
// watchdog + transport are wired so re-nudges actually deliver.
|
|
1473
|
+
// Failures are logged, never fatal: a sweep problem must not
|
|
1474
|
+
// bring the daemon down.
|
|
1475
|
+
if (workflowRuntime && queueRepoForWorkflow) {
|
|
1476
|
+
try {
|
|
1477
|
+
const { runWorkflowBootSweep } = await import("./domain/workflow-boot-sweep.js");
|
|
1478
|
+
await runWorkflowBootSweep({
|
|
1479
|
+
instanceStore: workflowRuntime.instanceStore,
|
|
1480
|
+
queueRepo: queueRepoForWorkflow,
|
|
1481
|
+
watchdogJobsRepo: watchdogJobsRepoInstance,
|
|
1482
|
+
log: (line) => console.log(line),
|
|
1483
|
+
// OPR.0.4.6.WF5 FR-2 class (b): the sweep leg of detection.
|
|
1484
|
+
ensureStuckExceptionItem: workflowExceptionEnsurer,
|
|
1485
|
+
});
|
|
1486
|
+
}
|
|
1487
|
+
catch (err) {
|
|
1488
|
+
console.warn(`workflow boot sweep: failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1268
1491
|
}
|
|
1269
1492
|
// Context monitor — constructed before createApp so routes can access pollOnce for refresh.
|
|
1270
1493
|
// Caller (index.ts) starts polling after listen.
|
|
@@ -1279,6 +1502,7 @@ export async function createDaemon(opts) {
|
|
|
1279
1502
|
const contextMonitor = new ContextMonitor(db, contextUsageStore, claudeAdapter, compactionEnforcer, {
|
|
1280
1503
|
"claude-code": claudeAdapter,
|
|
1281
1504
|
codex: codexAdapter,
|
|
1505
|
+
pi: piAdapter,
|
|
1282
1506
|
});
|
|
1283
1507
|
deps.contextMonitor = contextMonitor;
|
|
1284
1508
|
// OPR.0.4.3.14 — expose the SAME enforcer instance to routes for the manual
|