@openrig/cli 0.4.4 → 0.4.7
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/CULTURE-default.md +19 -0
- package/daemon/assets/guidance/openrig-start.md +20 -5
- package/daemon/assets/plugins/openrig-core/README.md +1 -1
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +9 -6
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +11 -72
- package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +34 -22
- package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +108 -0
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +11 -16
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +95 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +819 -101
- package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +26 -9
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +11 -9
- package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +162 -0
- package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +165 -0
- package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -1
- package/daemon/dist/adapters/cmux-transport.js +8 -1
- package/daemon/dist/adapters/cmux-transport.js.map +1 -1
- package/daemon/dist/adapters/cmux.d.ts +9 -0
- package/daemon/dist/adapters/cmux.d.ts.map +1 -1
- package/daemon/dist/adapters/cmux.js +21 -0
- package/daemon/dist/adapters/cmux.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +3 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +32 -12
- 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.js +3 -3
- 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/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/claude-compaction-enforcer.d.ts +3 -0
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +19 -3
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/cmux-layout-service.d.ts +36 -0
- package/daemon/dist/domain/cmux-layout-service.d.ts.map +1 -1
- package/daemon/dist/domain/cmux-layout-service.js +100 -28
- package/daemon/dist/domain/cmux-layout-service.js.map +1 -1
- package/daemon/dist/domain/context-monitor.d.ts +2 -0
- package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/context-monitor.js +14 -0
- package/daemon/dist/domain/context-monitor.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.js +1 -1
- package/daemon/dist/domain/feed/attention-aggregator.js.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.js +31 -10
- package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
- 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 +55 -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 +21 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/remote-daemon-http.js +56 -4
- package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +10 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +250 -97
- 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/plugin-vendor-service.d.ts +2 -0
- package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.js +23 -0
- package/daemon/dist/domain/plugin-vendor-service.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/projection-lane.d.ts +7 -0
- package/daemon/dist/domain/projection-lane.d.ts.map +1 -0
- package/daemon/dist/domain/projection-lane.js +28 -0
- package/daemon/dist/domain/projection-lane.js.map +1 -0
- package/daemon/dist/domain/ps-projection.d.ts +19 -0
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +81 -30
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +116 -7
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +226 -16
- 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/compose.d.ts +127 -5
- package/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/daemon/dist/domain/review/compose.js +244 -19
- package/daemon/dist/domain/review/compose.js.map +1 -1
- 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/gather.d.ts +17 -2
- package/daemon/dist/domain/review/gather.d.ts.map +1 -1
- package/daemon/dist/domain/review/gather.js +269 -108
- package/daemon/dist/domain/review/gather.js.map +1 -1
- package/daemon/dist/domain/review/proof-io.d.ts +2 -0
- package/daemon/dist/domain/review/proof-io.d.ts.map +1 -0
- package/daemon/dist/domain/review/proof-io.js +38 -0
- package/daemon/dist/domain/review/proof-io.js.map +1 -0
- package/daemon/dist/domain/review/types.d.ts +104 -1
- package/daemon/dist/domain/review/types.d.ts.map +1 -1
- 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 +26 -2
- 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/plan-lock-artifacts.d.ts +8 -0
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -0
- package/daemon/dist/domain/scope/plan-lock-artifacts.js +57 -0
- package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +38 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.js +98 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-approve.js +22 -1
- package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.js +57 -20
- 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/session-transport.d.ts +17 -0
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +44 -0
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/slices/qitem-membership.d.ts +17 -0
- package/daemon/dist/domain/slices/qitem-membership.d.ts.map +1 -0
- package/daemon/dist/domain/slices/qitem-membership.js +60 -0
- package/daemon/dist/domain/slices/qitem-membership.js.map +1 -0
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts +5 -0
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js +161 -16
- package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/daemon/dist/domain/slices/slice-indexer.d.ts +86 -0
- package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-indexer.js +422 -45
- package/daemon/dist/domain/slices/slice-indexer.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-orchestrator.d.ts +9 -0
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +71 -3
- package/daemon/dist/domain/startup-orchestrator.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 +28 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js +100 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -0
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts +94 -0
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/herdr-adapter.js +307 -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/transcript-capture.d.ts +3 -0
- package/daemon/dist/domain/transcript-capture.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-capture.js +28 -0
- package/daemon/dist/domain/transcript-capture.js.map +1 -1
- package/daemon/dist/domain/transcript-store.d.ts +10 -0
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-store.js +26 -0
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +38 -1
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +92 -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 +9 -4
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.js +1 -1
- 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/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.js +1 -1
- package/daemon/dist/routes/mission-control.js.map +1 -1
- package/daemon/dist/routes/missions.d.ts +7 -0
- package/daemon/dist/routes/missions.d.ts.map +1 -1
- package/daemon/dist/routes/missions.js +6 -1
- package/daemon/dist/routes/missions.js.map +1 -1
- package/daemon/dist/routes/ps.d.ts.map +1 -1
- package/daemon/dist/routes/ps.js +5 -1
- package/daemon/dist/routes/ps.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts +2 -7
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +272 -10
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/review.d.ts.map +1 -1
- package/daemon/dist/routes/review.js +26 -0
- package/daemon/dist/routes/review.js.map +1 -1
- package/daemon/dist/routes/rigs.d.ts.map +1 -1
- package/daemon/dist/routes/rigs.js +21 -10
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/daemon/dist/routes/scope-audit.js +141 -135
- 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/sessions.js +2 -1
- 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 +48 -38
- package/daemon/dist/routes/slices.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/transcripts.d.ts.map +1 -1
- package/daemon/dist/routes/transcripts.js +62 -33
- package/daemon/dist/routes/transcripts.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/server.d.ts +5 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +22 -0
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +235 -12
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-startup-guide.md +1 -0
- package/daemon/specs/agents/apps/vault-specialist/agent.yaml +2 -1
- package/daemon/specs/agents/conveyor/builder/agent.yaml +2 -1
- package/daemon/specs/agents/conveyor/lead/agent.yaml +2 -1
- package/daemon/specs/agents/conveyor/planner/agent.yaml +2 -1
- package/daemon/specs/agents/conveyor/reviewer/agent.yaml +2 -1
- package/daemon/specs/agents/design/product-designer/agent.yaml +12 -2
- package/daemon/specs/agents/development/implementer/agent.yaml +12 -2
- package/daemon/specs/agents/development/qa/agent.yaml +12 -2
- package/daemon/specs/agents/development/qa/guidance/role.md +1 -0
- package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +30 -0
- package/daemon/specs/agents/factory-rsi/dogfood/guidance/role.md +37 -0
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +30 -0
- package/daemon/specs/agents/factory-rsi/release-manager/guidance/role.md +40 -0
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +12 -2
- package/daemon/specs/agents/product-management/pm/agent.yaml +1 -2
- package/daemon/specs/agents/research/analyst/agent.yaml +2 -1
- package/daemon/specs/agents/research/synthesizer/agent.yaml +2 -1
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +12 -2
- package/daemon/specs/agents/shared/agent.yaml +5 -8
- package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +13 -1
- package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +132 -0
- package/daemon/{assets/plugins/openrig-core/skills → specs/agents/shared/skills/core}/agent-startup-and-context-ingestion/SKILL.md +27 -19
- package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +264 -0
- package/daemon/specs/agents/shared/skills/core/cross-host-rig-commands/SKILL.md +190 -0
- package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +104 -0
- package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +25 -8
- package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +81 -0
- package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +153 -0
- package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +460 -0
- package/daemon/specs/agents/shared/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
- package/daemon/specs/agents/shared/skills/core/rig-lifecycle/SKILL.md +22 -11
- package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +160 -0
- package/daemon/specs/agents/shared/skills/core/specification-system/SKILL.md +103 -0
- package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
- package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +125 -0
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +4 -4
- package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +3 -0
- package/daemon/specs/agents/shared/skills/process/brainstorming/OPENRIG.md +3 -3
- package/daemon/specs/agents/shared/skills/process/executing-plans/OPENRIG.md +1 -1
- package/daemon/specs/agents/shared/skills/process/frontend-design/SKILL.md +6 -3
- package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/process/using-superpowers/OPENRIG.md +1 -1
- package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +12 -2
- package/daemon/specs/agents/shared/skills/process/writing-plans/OPENRIG.md +1 -1
- package/daemon/specs/rigs/focused/pm-team/CULTURE.md +1 -1
- 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/advisor/lead/agent.yaml +2 -2
- package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +5 -4
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/agent.yaml +2 -2
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +3 -5
- package/daemon/specs/rigs/launch/kernel/agents/queue/worker/agent.yaml +2 -2
- package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +3 -4
- package/daemon/specs/rigs/preview/product-team/CULTURE.md +1 -1
- package/dist/bin-wrapper.d.ts.map +1 -1
- package/dist/bin-wrapper.js +3 -1
- package/dist/bin-wrapper.js.map +1 -1
- package/dist/build-info.js +3 -3
- package/dist/cli-error.d.ts +33 -0
- package/dist/cli-error.d.ts.map +1 -0
- package/dist/cli-error.js +94 -0
- package/dist/cli-error.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.js +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.d.ts +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +17 -11
- 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/host.d.ts +14 -0
- package/dist/commands/host.d.ts.map +1 -1
- package/dist/commands/host.js +361 -23
- package/dist/commands/host.js.map +1 -1
- 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.js +1 -1
- package/dist/commands/proof.js.map +1 -1
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +26 -6
- 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 +176 -31
- 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/rig.d.ts.map +1 -1
- package/dist/commands/rig.js +122 -0
- package/dist/commands/rig.js.map +1 -1
- package/dist/commands/scope.js +2 -2
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +229 -30
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/slack.d.ts +37 -0
- package/dist/commands/slack.d.ts.map +1 -0
- package/dist/commands/slack.js +274 -0
- package/dist/commands/slack.js.map +1 -0
- 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/ui.d.ts +1 -0
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +2 -0
- package/dist/commands/ui.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +10 -1
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +14 -3
- 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/config-store.d.ts +15 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +103 -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-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 +45 -14
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/host-registry.d.ts +14 -1
- package/dist/host-registry.d.ts.map +1 -1
- package/dist/host-registry.js +47 -6
- 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 +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/scope/scaffold-placeholder.d.ts +38 -0
- package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -0
- package/dist/lib/scope/scaffold-placeholder.js +98 -0
- package/dist/lib/scope/scaffold-placeholder.js.map +1 -0
- package/dist/lib/scope/scope-audit.d.ts.map +1 -1
- package/dist/lib/scope/scope-audit.js +57 -20
- package/dist/lib/scope/scope-audit.js.map +1 -1
- package/dist/lib/scope-templates/backlog-deprecation.md +1 -1
- package/dist/lib/scope-templates/backlog-tech-debt.md +1 -1
- package/dist/lib/scope-templates/bug-fix.md +1 -1
- package/dist/lib/scope-templates/implementation-prd.md +1 -1
- package/dist/lib/scope-templates/mission-notes.md +7 -2
- 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 +1 -1
- package/dist/lib/scope-templates/proof.md +1 -1
- package/dist/lib/scope-templates/release-feature.md +1 -1
- package/dist/lib/scope-templates/research.md +1 -1
- 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 +13 -6
- 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/slack/config.d.ts +41 -0
- package/dist/slack/config.d.ts.map +1 -0
- package/dist/slack/config.js +60 -0
- package/dist/slack/config.js.map +1 -0
- package/dist/slack/inbound.d.ts +75 -0
- package/dist/slack/inbound.d.ts.map +1 -0
- package/dist/slack/inbound.js +133 -0
- package/dist/slack/inbound.js.map +1 -0
- package/dist/slack/message.d.ts +26 -0
- package/dist/slack/message.d.ts.map +1 -0
- package/dist/slack/message.js +60 -0
- package/dist/slack/message.js.map +1 -0
- package/dist/slack/outbound.d.ts +39 -0
- package/dist/slack/outbound.d.ts.map +1 -0
- package/dist/slack/outbound.js +52 -0
- package/dist/slack/outbound.js.map +1 -0
- package/dist/slack/queue-bridge.d.ts +56 -0
- package/dist/slack/queue-bridge.d.ts.map +1 -0
- package/dist/slack/queue-bridge.js +114 -0
- package/dist/slack/queue-bridge.js.map +1 -0
- package/dist/slack/secrets.d.ts +21 -0
- package/dist/slack/secrets.d.ts.map +1 -0
- package/dist/slack/secrets.js +73 -0
- package/dist/slack/secrets.js.map +1 -0
- package/dist/slack/slack-api.d.ts +49 -0
- package/dist/slack/slack-api.d.ts.map +1 -0
- package/dist/slack/slack-api.js +110 -0
- package/dist/slack/slack-api.js.map +1 -0
- package/dist/slack/state-store.d.ts +62 -0
- package/dist/slack/state-store.d.ts.map +1 -0
- package/dist/slack/state-store.js +132 -0
- package/dist/slack/state-store.js.map +1 -0
- package/package.json +1 -1
- package/ui/dist/assets/index-DkNi0RT8.js +623 -0
- package/ui/dist/assets/index-N-SdPj-I.css +32 -0
- package/ui/dist/index.html +2 -2
- package/daemon/assets/plugins/openrig-core/skills/openrig-architect/SKILL.md +0 -361
- package/daemon/assets/plugins/openrig-core/skills/openrig-operator/SKILL.md +0 -222
- package/daemon/docs/reference/product-factory-vps-runbook.md +0 -132
- package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +0 -115
- package/daemon/specs/agents/shared/skills/core/openrig-installer/SKILL.md +0 -142
- package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +0 -110
- package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +0 -1245
- package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +0 -153
- package/ui/dist/assets/index-D69ZhNIr.js +0 -598
- package/ui/dist/assets/index-DJYun-8d.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";
|
|
@@ -52,6 +55,7 @@ import { UpCommandRouter } from "./domain/up-command-router.js";
|
|
|
52
55
|
import { RigTeardownOrchestrator } from "./domain/rig-teardown.js";
|
|
53
56
|
import { ResumeMetadataRefresher } from "./domain/resume-metadata-refresher.js";
|
|
54
57
|
import { TranscriptStore } from "./domain/transcript-store.js";
|
|
58
|
+
import { resumeRunningTranscriptCaptures } from "./domain/transcript-capture.js";
|
|
55
59
|
import { SessionTransport } from "./domain/session-transport.js";
|
|
56
60
|
import { AgentActivityStore } from "./domain/agent-activity-store.js";
|
|
57
61
|
import { HistoryQuery } from "./domain/history-query.js";
|
|
@@ -59,6 +63,7 @@ import { AskService } from "./domain/ask-service.js";
|
|
|
59
63
|
import { ChatRepository } from "./domain/chat-repository.js";
|
|
60
64
|
import { StreamStore } from "./domain/stream-store.js";
|
|
61
65
|
import { QueueRepository } from "./domain/queue-repository.js";
|
|
66
|
+
import { createWorkflowFrontierPredicate } from "./domain/workflow-frontier-guard.js";
|
|
62
67
|
import { InboxHandler } from "./domain/inbox-handler.js";
|
|
63
68
|
import { OutboxHandler } from "./domain/outbox-handler.js";
|
|
64
69
|
import { ProjectClassifier } from "./domain/project-classifier.js";
|
|
@@ -137,6 +142,12 @@ import { resumeVerificationSchema } from "./db/migrations/045_resume_verificatio
|
|
|
137
142
|
import { seatIdentityVerdictsSchema } from "./db/migrations/046_seat_identity_verdicts.js";
|
|
138
143
|
import { eventsNodeTypeIndexSchema } from "./db/migrations/047_events_node_type_index.js";
|
|
139
144
|
import { queueItemEvidenceRefSchema } from "./db/migrations/048_queue_item_evidence_ref.js";
|
|
145
|
+
import { workflowInstanceVersionSchema } from "./db/migrations/049_workflow_instance_version.js";
|
|
146
|
+
import { workflowSpecJsonSchema } from "./db/migrations/050_workflow_spec_json.js";
|
|
147
|
+
import { workflowResumeSchema } from "./db/migrations/051_workflow_resume.js";
|
|
148
|
+
import { workflowInstanceBoundRigSchema } from "./db/migrations/052_workflow_instance_bound_rig.js";
|
|
149
|
+
import { sessionsNodeIdIndexSchema } from "./db/migrations/053_sessions_node_id_index.js";
|
|
150
|
+
import { queueTransitionsArchiveSchema } from "./db/migrations/054_queue_transitions_archive.js";
|
|
140
151
|
import { RigPolicyStore } from "./domain/rig-policy/rig-policy-store.js";
|
|
141
152
|
import { MissionControlActionLog } from "./domain/mission-control/mission-control-action-log.js";
|
|
142
153
|
import { MissionControlWriteContract } from "./domain/mission-control/mission-control-write-contract.js";
|
|
@@ -157,6 +168,15 @@ const KNOWN_PROVIDER_AUTH_ENV = new Set([
|
|
|
157
168
|
"OPENAI_BASE_URL",
|
|
158
169
|
"OPENAI_ORG_ID",
|
|
159
170
|
"OPENAI_PROJECT_ID",
|
|
171
|
+
// OPR.0.4.6.PI1 FR-7 — Pi seat providers. Without these in the KNOWN set,
|
|
172
|
+
// a daemon-launched Pi seat can never receive its provider key (the
|
|
173
|
+
// pi-runner's own deny-by-default allowlist then has nothing to pass
|
|
174
|
+
// through). Double opt-in preserved: the operator must still name each var
|
|
175
|
+
// in recovery.provider_auth_env_allowlist. OpenRouter is the founder-ruled
|
|
176
|
+
// preferred path (2026-07-06); zai/kimi-coding are the secondary natives.
|
|
177
|
+
"OPENROUTER_API_KEY",
|
|
178
|
+
"ZAI_API_KEY",
|
|
179
|
+
"KIMI_API_KEY",
|
|
160
180
|
]);
|
|
161
181
|
export function collectAllowlistedProviderAuthEnv(raw, env) {
|
|
162
182
|
const out = {};
|
|
@@ -178,7 +198,7 @@ export function collectAllowlistedProviderAuthEnv(raw, env) {
|
|
|
178
198
|
export async function createDaemon(opts) {
|
|
179
199
|
const dbPath = opts?.dbPath ?? ":memory:";
|
|
180
200
|
const db = createDb(dbPath);
|
|
181
|
-
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]);
|
|
201
|
+
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]);
|
|
182
202
|
const rigRepo = new RigRepository(db);
|
|
183
203
|
const sessionRegistry = new SessionRegistry(db);
|
|
184
204
|
const eventBus = new EventBus(db);
|
|
@@ -186,17 +206,17 @@ export async function createDaemon(opts) {
|
|
|
186
206
|
// Reject `<member>@<unknown-rig>` shapes by checking the rig portion
|
|
187
207
|
// against the rig registry. Bare ids without `@` are also rejected
|
|
188
208
|
// (no canonical rig binding).
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
209
|
+
// OPR.0.4.6.MH1 FR-8: this gate is the ARCHETYPE consumer of the shared
|
|
210
|
+
// parse contract — human-seat classification BEFORE parse, then the
|
|
211
|
+
// greedy first-@ rig (so "member@rig@x" looks up rig "rig@x", misses,
|
|
212
|
+
// and rejects with the same unknown_destination_rig as ever — BR-1).
|
|
192
213
|
const topologyValidateRig = (sessionRef) => {
|
|
193
214
|
if (isHumanSeatSessionRef(sessionRef))
|
|
194
215
|
return true;
|
|
195
|
-
const
|
|
196
|
-
if (
|
|
216
|
+
const parsed = parseSessionName(sessionRef);
|
|
217
|
+
if (parsed.kind !== "canonical")
|
|
197
218
|
return false;
|
|
198
|
-
|
|
199
|
-
return rigRepo.findRigsByName(rigName).length > 0;
|
|
219
|
+
return rigRepo.findRigsByName(parsed.rig).length > 0;
|
|
200
220
|
};
|
|
201
221
|
// PL-004 Phase A — shared coordination services. Constructed early so
|
|
202
222
|
// both the queueRepo dep slot and inboxHandler can share one instance.
|
|
@@ -204,6 +224,10 @@ export async function createDaemon(opts) {
|
|
|
204
224
|
// attachTransport().
|
|
205
225
|
const queueRepoInstance = new QueueRepository(db, eventBus, {
|
|
206
226
|
validateRig: topologyValidateRig,
|
|
227
|
+
// OPR.0.4.6.WF3 FR-6 — the frontier close-path guard's predicate,
|
|
228
|
+
// INJECTED here (arch layering pin: the queue never imports the
|
|
229
|
+
// workflow domain; startup wires them — the validateRig precedent).
|
|
230
|
+
workflowFrontierPredicate: createWorkflowFrontierPredicate(db),
|
|
207
231
|
});
|
|
208
232
|
// PL-004 Phase B — classifier lease manager. Constructed early so both
|
|
209
233
|
// the leaseManager dep slot and project-classifier can share one instance.
|
|
@@ -286,6 +310,26 @@ export async function createDaemon(opts) {
|
|
|
286
310
|
OPENRIG_ACTIVITY_HOOK_TOKEN: resolvedActivityHookToken,
|
|
287
311
|
...providerAuthEnv,
|
|
288
312
|
};
|
|
313
|
+
// OPR.0.4.6.02 S1 — ONE shared tmux option-defaults applier, injected into
|
|
314
|
+
// BOTH NodeLauncher and (via AppDeps → the seat-handover route) the fresh
|
|
315
|
+
// successor launcher, so every fresh seat gets the same mouse/status/
|
|
316
|
+
// clipboard defaults and the server-scope defaults assert once per daemon
|
|
317
|
+
// lifetime (shared memo). The status-bar read resolves `terminal.status_bar`
|
|
318
|
+
// FRESH per launch (resolveOne re-reads the config file) so an operator flip
|
|
319
|
+
// applies to the NEXT launch without a daemon restart; a resolution failure
|
|
320
|
+
// falls back to off (bar hidden).
|
|
321
|
+
const tmuxOptionSettings = new ContextPackSettingsStore();
|
|
322
|
+
const tmuxOptionDefaults = new TmuxOptionDefaultsApplier({
|
|
323
|
+
tmuxAdapter,
|
|
324
|
+
readTmuxOptionDefaults: () => {
|
|
325
|
+
try {
|
|
326
|
+
return { statusBar: tmuxOptionSettings.resolveOne("terminal.status_bar").value === true };
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
return { statusBar: false };
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
});
|
|
289
333
|
const nodeLauncher = new NodeLauncher({
|
|
290
334
|
db,
|
|
291
335
|
rigRepo,
|
|
@@ -294,12 +338,19 @@ export async function createDaemon(opts) {
|
|
|
294
338
|
tmuxAdapter,
|
|
295
339
|
transcriptStore,
|
|
296
340
|
sessionEnv: launchSessionEnv,
|
|
341
|
+
tmuxOptionDefaults,
|
|
297
342
|
});
|
|
298
343
|
const snapshotRepo = new SnapshotRepository(db);
|
|
299
344
|
const checkpointStore = new CheckpointStore(db);
|
|
300
345
|
const snapshotCapture = new SnapshotCapture({ db, rigRepo, sessionRegistry, eventBus, snapshotRepo, checkpointStore });
|
|
301
346
|
const claudeResume = new ClaudeResumeAdapter(tmuxAdapter);
|
|
302
347
|
const codexResume = new CodexResumeAdapter(tmuxAdapter);
|
|
348
|
+
// OPR.0.4.6.PI1 — the Pi seat-state root + the compiled runner entry (daemon
|
|
349
|
+
// dist). Shared by the Pi runtime adapter, the resume adapter, and the
|
|
350
|
+
// resume-token capture sidecar reader.
|
|
351
|
+
const piStateRoot = nodePath.join(OPENRIG_HOME, "state", "pi");
|
|
352
|
+
const piRunnerEntryPath = nodePath.resolve(import.meta.dirname, "./adapters/pi-runner.js");
|
|
353
|
+
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 });
|
|
303
354
|
// Services infrastructure (RigEnv) — created early so restore/bootstrap can use it
|
|
304
355
|
const { ComposeServicesAdapter } = await import("./adapters/compose-services-adapter.js");
|
|
305
356
|
const { ServiceOrchestrator } = await import("./domain/service-orchestrator.js");
|
|
@@ -307,7 +358,7 @@ export async function createDaemon(opts) {
|
|
|
307
358
|
const serviceOrchestrator = new ServiceOrchestrator({ rigRepo, composeAdapter });
|
|
308
359
|
const restoreOrchestrator = new RestoreOrchestrator({
|
|
309
360
|
db, rigRepo, sessionRegistry, eventBus, snapshotRepo, snapshotCapture,
|
|
310
|
-
checkpointStore, nodeLauncher, tmuxAdapter, claudeResume, codexResume,
|
|
361
|
+
checkpointStore, nodeLauncher, tmuxAdapter, claudeResume, codexResume, piResume,
|
|
311
362
|
transcriptStore, serviceOrchestrator,
|
|
312
363
|
});
|
|
313
364
|
// Connect to cmux at startup — degrades gracefully if absent
|
|
@@ -348,6 +399,19 @@ export async function createDaemon(opts) {
|
|
|
348
399
|
console.log(`startup reconcile: rigs=${rigs.length} checked=${reconcileChecked} detached=${reconcileDetached} errors=${reconcileErrors}`);
|
|
349
400
|
}
|
|
350
401
|
catch { /* logging must never throw */ }
|
|
402
|
+
// Transcript rotators are process-local. Reattach them after lifecycle
|
|
403
|
+
// reconciliation so surviving tmux sessions keep ingesting across daemon
|
|
404
|
+
// restarts while genuinely detached sessions stay excluded.
|
|
405
|
+
try {
|
|
406
|
+
await resumeRunningTranscriptCaptures(db, tmuxAdapter, transcriptStore);
|
|
407
|
+
}
|
|
408
|
+
catch (err) {
|
|
409
|
+
try {
|
|
410
|
+
// eslint-disable-next-line no-console
|
|
411
|
+
console.warn(`startup transcript capture warning: ${err instanceof Error ? err.message : String(err)}`);
|
|
412
|
+
}
|
|
413
|
+
catch { /* logging must never throw */ }
|
|
414
|
+
}
|
|
351
415
|
const podRepo = new PodRepository(db);
|
|
352
416
|
const rigSpecExporter = new RigSpecExporter({ rigRepo, sessionRegistry, podRepo });
|
|
353
417
|
const rigSpecPreflight = new RigSpecPreflight({
|
|
@@ -404,6 +468,7 @@ export async function createDaemon(opts) {
|
|
|
404
468
|
const { StartupOrchestrator } = await import("./domain/startup-orchestrator.js");
|
|
405
469
|
const { ClaudeCodeAdapter } = await import("./adapters/claude-code-adapter.js");
|
|
406
470
|
const { CodexRuntimeAdapter } = await import("./adapters/codex-runtime-adapter.js");
|
|
471
|
+
const { PiRuntimeAdapter } = await import("./adapters/pi-runtime-adapter.js");
|
|
407
472
|
const startupOrchestrator = new StartupOrchestrator({ db, sessionRegistry, eventBus, tmuxAdapter, readFile: (p) => fs.readFileSync(p, "utf-8") });
|
|
408
473
|
const runtimeSettings = new ContextPackSettingsStore().resolveConfig();
|
|
409
474
|
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 })) {
|
|
@@ -418,6 +483,14 @@ export async function createDaemon(opts) {
|
|
|
418
483
|
else
|
|
419
484
|
r.push(pre ? nodePath.join(pre, e.name) : e.name);
|
|
420
485
|
} } w(dir, ""); return r; }, homedir: os.homedir() }, activityRelayPath: nodePath.resolve(import.meta.dirname, "../assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs") });
|
|
486
|
+
// OPR.0.4.6.PI1 — the RPC-first Pi adapter (runner-in-a-pane). Same fsOps
|
|
487
|
+
// shape as the Codex adapter; seat isolation roots under piStateRoot.
|
|
488
|
+
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 })) {
|
|
489
|
+
if (e.isDirectory())
|
|
490
|
+
w(nodePath.join(d, e.name), nodePath.join(pre, e.name));
|
|
491
|
+
else
|
|
492
|
+
r.push(pre ? nodePath.join(pre, e.name) : e.name);
|
|
493
|
+
} } w(dir, ""); return r; } }, stateRoot: piStateRoot, runnerEntryPath: piRunnerEntryPath });
|
|
421
494
|
// plugin-primitive Phase 3a slice 3.5 — ensure Codex feature flag
|
|
422
495
|
// codex_hooks = true is set in ~/.codex/config.toml so plugin-shipped
|
|
423
496
|
// hooks fire on Codex runtime. Slice 27 also creates the default
|
|
@@ -504,6 +577,10 @@ export async function createDaemon(opts) {
|
|
|
504
577
|
logger: (...args) => console.log("[openrig]", ...args),
|
|
505
578
|
});
|
|
506
579
|
await vendorService.ensureLatest("openrig-core");
|
|
580
|
+
vendorService.ensureSkillGlobally("openrig-core", "openrig-skills", [
|
|
581
|
+
nodePath.join(os.homedir(), ".claude", "skills"),
|
|
582
|
+
nodePath.join(os.homedir(), ".agents", "skills"),
|
|
583
|
+
]);
|
|
507
584
|
}
|
|
508
585
|
catch (err) {
|
|
509
586
|
console.error(`[openrig] plugin vendor setup warning: ${err.message}`);
|
|
@@ -579,7 +656,7 @@ export async function createDaemon(opts) {
|
|
|
579
656
|
db, rigRepo, podRepo,
|
|
580
657
|
sessionRegistry, eventBus, nodeLauncher, startupOrchestrator,
|
|
581
658
|
fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), exists: (p) => fs.existsSync(p) },
|
|
582
|
-
adapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
659
|
+
adapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "pi": piAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
583
660
|
tmuxAdapter,
|
|
584
661
|
contextPackLibrary,
|
|
585
662
|
agentImageLibrary,
|
|
@@ -672,6 +749,8 @@ export async function createDaemon(opts) {
|
|
|
672
749
|
// (Claude sidecar reader + Codex thread-id capturer, both reuse).
|
|
673
750
|
contextUsageStore,
|
|
674
751
|
resumeTokenCapturer: resumeMetadataRefresher,
|
|
752
|
+
// OPR.0.4.6.PI1 FR-6 — pi-runner sidecar reader (the adapter exposes it).
|
|
753
|
+
piRunnerStateStore: piAdapter,
|
|
675
754
|
});
|
|
676
755
|
const selfAttachService = new SelfAttachService({
|
|
677
756
|
db, rigRepo, podRepo, sessionRegistry, eventBus, tmuxAdapter, transcriptStore,
|
|
@@ -709,6 +788,7 @@ export async function createDaemon(opts) {
|
|
|
709
788
|
eventBus,
|
|
710
789
|
nodeLauncher,
|
|
711
790
|
tmuxAdapter,
|
|
791
|
+
tmuxOptionDefaults,
|
|
712
792
|
sessionEnv: launchSessionEnv,
|
|
713
793
|
cmuxAdapter,
|
|
714
794
|
snapshotCapture,
|
|
@@ -751,7 +831,7 @@ export async function createDaemon(opts) {
|
|
|
751
831
|
}),
|
|
752
832
|
podInstantiator,
|
|
753
833
|
podBundleSourceResolver,
|
|
754
|
-
runtimeAdapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
834
|
+
runtimeAdapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "pi": piAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
755
835
|
transcriptStore,
|
|
756
836
|
sessionTransport: (() => {
|
|
757
837
|
const t = new SessionTransport({ db, rigRepo, sessionRegistry, tmuxAdapter, agentActivityStore, eventBus });
|
|
@@ -932,13 +1012,40 @@ export async function createDaemon(opts) {
|
|
|
932
1012
|
// slice IMPL § Write Set / § Driver Handoff Contract).
|
|
933
1013
|
const queueRepoForWorkflow = deps.queueRepo;
|
|
934
1014
|
let workflowRuntime;
|
|
1015
|
+
let workflowExceptionEnsurer;
|
|
935
1016
|
if (queueRepoForWorkflow) {
|
|
936
1017
|
workflowRuntime = new WorkflowRuntime({
|
|
937
1018
|
db,
|
|
938
1019
|
eventBus,
|
|
939
1020
|
queueRepo: queueRepoForWorkflow,
|
|
1021
|
+
// OPR.0.4.6.WF1 FR-3: instantiate/handoff auto-arm the
|
|
1022
|
+
// per-instance workflow-keepalive job in-txn; terminal disarms.
|
|
1023
|
+
watchdogJobsRepo: watchdogJobsRepoInstance,
|
|
1024
|
+
// OPR.0.4.6.WF5 FR-2: the maturity dial — host default read LIVE
|
|
1025
|
+
// per exception from the settings twin (dial flips affect future
|
|
1026
|
+
// items only, never retroactive re-routing).
|
|
1027
|
+
exceptionDial: {
|
|
1028
|
+
hostDefault: () => {
|
|
1029
|
+
const v = new ContextPackSettingsStore().resolveOne("workflow.exception_routing")
|
|
1030
|
+
.value;
|
|
1031
|
+
return v === "orchestrator" || v === "human_only" ? v : null;
|
|
1032
|
+
},
|
|
1033
|
+
humanFallbackSeat: "human@host",
|
|
1034
|
+
},
|
|
940
1035
|
});
|
|
941
1036
|
deps.workflowRuntime = workflowRuntime;
|
|
1037
|
+
// OPR.0.4.6.WF5 FR-2 class (b): the shared detection-time exception
|
|
1038
|
+
// ensurer — sweep + keepalive both call it; dedup by occurrence tags.
|
|
1039
|
+
{
|
|
1040
|
+
const { makeEnsureStuckExceptionItem } = await import("./domain/workflow-exception-escalation.js");
|
|
1041
|
+
workflowExceptionEnsurer = makeEnsureStuckExceptionItem({
|
|
1042
|
+
db,
|
|
1043
|
+
queueRepo: queueRepoForWorkflow,
|
|
1044
|
+
resolveRoute: (name, version, cls, boundRig) => workflowRuntime.resolveExceptionRouteFor(name, version, cls, boundRig),
|
|
1045
|
+
humanFallbackSeat: "human@host",
|
|
1046
|
+
log: (line) => console.log(line),
|
|
1047
|
+
});
|
|
1048
|
+
}
|
|
942
1049
|
// Seed built-in starter workflow_specs into the cache. Idempotent
|
|
943
1050
|
// + workspace-surface-respecting — operator
|
|
944
1051
|
// overrides at workspace paths are preserved (skip-if-cached).
|
|
@@ -1180,6 +1287,93 @@ export async function createDaemon(opts) {
|
|
|
1180
1287
|
activityStore: agentActivityStore,
|
|
1181
1288
|
});
|
|
1182
1289
|
}
|
|
1290
|
+
// OPR.0.4.6.02 C3 — the terminal-provider-ride service (ONE composer for
|
|
1291
|
+
// every view kind). Built here (post-hoc) so it can read the lazily-built
|
|
1292
|
+
// reviewGatherer for derived mission/slice views; if the gatherer never
|
|
1293
|
+
// built, those scopes honestly return not-found rather than throwing.
|
|
1294
|
+
{
|
|
1295
|
+
const { TerminalService } = await import("./domain/terminal/terminal-service.js");
|
|
1296
|
+
const { HerdrAdapter } = await import("./domain/terminal/herdr-adapter.js");
|
|
1297
|
+
const { createHerdrSocketRpc, createHerdrSocketTransport } = await import("./domain/terminal/herdr-transport.js");
|
|
1298
|
+
const { CmuxProviderAdapter } = await import("./domain/terminal/cmux-provider-adapter.js");
|
|
1299
|
+
const { CmuxLayoutService } = await import("./domain/cmux-layout-service.js");
|
|
1300
|
+
const { TerminalViewsStore } = await import("./domain/terminal/terminal-views-store.js");
|
|
1301
|
+
const { getNodeInventory } = await import("./domain/node-inventory.js");
|
|
1302
|
+
const { loadHostRegistry, resolveHost: resolveHostInRegistry } = await import("./domain/hosts/hosts-registry-reader.js");
|
|
1303
|
+
// NodeInventoryEntry → the composer's minimal LiveSeatRow (single-host
|
|
1304
|
+
// inventory: the canonical session name IS the tmux session; no host field).
|
|
1305
|
+
const toLiveSeatRow = (e) => ({
|
|
1306
|
+
canonicalSessionName: e.canonicalSessionName,
|
|
1307
|
+
attachmentType: e.attachmentType ?? null,
|
|
1308
|
+
tmuxSession: e.canonicalSessionName,
|
|
1309
|
+
rigName: e.rigName,
|
|
1310
|
+
logicalId: e.logicalId,
|
|
1311
|
+
});
|
|
1312
|
+
const herdrProvider = new HerdrAdapter({
|
|
1313
|
+
// FB4: herdr speaks its unix control socket (there is no `layout` CLI).
|
|
1314
|
+
transportFactory: createHerdrSocketTransport(createHerdrSocketRpc()),
|
|
1315
|
+
});
|
|
1316
|
+
const cmuxProvider = new CmuxProviderAdapter({
|
|
1317
|
+
cmuxAdapter,
|
|
1318
|
+
// One gridded workspace per composed page — the same grid machinery as
|
|
1319
|
+
// the rig-scope /cmux/launch endpoint, never one window per seat.
|
|
1320
|
+
layoutService: new CmuxLayoutService(cmuxAdapter),
|
|
1321
|
+
});
|
|
1322
|
+
const providerMap = {
|
|
1323
|
+
herdr: herdrProvider,
|
|
1324
|
+
cmux: cmuxProvider,
|
|
1325
|
+
};
|
|
1326
|
+
deps.terminalService = new TerminalService({
|
|
1327
|
+
resolveProvider: (name) => providerMap[name] ?? null,
|
|
1328
|
+
viewsStore: new TerminalViewsStore(),
|
|
1329
|
+
listRigSeats: (rigArg) => {
|
|
1330
|
+
const rigs = rigRepo.listRigs();
|
|
1331
|
+
const rig = rigs.find((r) => r.name === rigArg) ?? rigs.find((r) => r.id === rigArg);
|
|
1332
|
+
if (!rig)
|
|
1333
|
+
return null;
|
|
1334
|
+
return getNodeInventory(db, rig.id).map(toLiveSeatRow);
|
|
1335
|
+
},
|
|
1336
|
+
listPodSeats: (rigArg, pod) => {
|
|
1337
|
+
const rigs = rigRepo.listRigs();
|
|
1338
|
+
const rig = rigs.find((r) => r.name === rigArg) ?? rigs.find((r) => r.id === rigArg);
|
|
1339
|
+
if (!rig)
|
|
1340
|
+
return null;
|
|
1341
|
+
const rows = getNodeInventory(db, rig.id)
|
|
1342
|
+
.filter((e) => e.podNamespace === pod)
|
|
1343
|
+
.map(toLiveSeatRow);
|
|
1344
|
+
// No node carries that pod namespace → an unknown pod (not an empty view).
|
|
1345
|
+
return rows.length > 0 ? rows : null;
|
|
1346
|
+
},
|
|
1347
|
+
listScopeSeats: (scope) => {
|
|
1348
|
+
const gatherer = deps.reviewGatherer;
|
|
1349
|
+
if (!gatherer)
|
|
1350
|
+
return null;
|
|
1351
|
+
// N1 (dev44-driver2 pre-guard): cast to the real AgentsScope union (not
|
|
1352
|
+
// `never`) so the compile guard on the scope grammar is restored.
|
|
1353
|
+
const band = gatherer.composeAgents(scope);
|
|
1354
|
+
if (!band)
|
|
1355
|
+
return null;
|
|
1356
|
+
const wanted = new Set(band.rows.map((r) => r.sessionName));
|
|
1357
|
+
const rows = [];
|
|
1358
|
+
for (const rig of rigRepo.listRigs()) {
|
|
1359
|
+
for (const e of getNodeInventory(db, rig.id)) {
|
|
1360
|
+
if (e.canonicalSessionName && wanted.has(e.canonicalSessionName))
|
|
1361
|
+
rows.push(toLiveSeatRow(e));
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
return rows;
|
|
1365
|
+
},
|
|
1366
|
+
listRigNames: () => rigRepo.listRigs().map((r) => r.name),
|
|
1367
|
+
resolveHost: (id) => {
|
|
1368
|
+
const res = loadHostRegistry();
|
|
1369
|
+
if (!res.ok)
|
|
1370
|
+
return null;
|
|
1371
|
+
const r = resolveHostInRegistry(res.registry, id);
|
|
1372
|
+
return r.ok ? r.host : null;
|
|
1373
|
+
},
|
|
1374
|
+
hasSession: (session) => tmuxAdapter.hasSession(session),
|
|
1375
|
+
});
|
|
1376
|
+
}
|
|
1183
1377
|
// UI Enhancement Pack v0:
|
|
1184
1378
|
// - file allowlist (item 3) from OPENRIG_FILES_ALLOWLIST
|
|
1185
1379
|
// - atomic write service (item 4) wired only when allowlist non-empty
|
|
@@ -1270,7 +1464,13 @@ export async function createDaemon(opts) {
|
|
|
1270
1464
|
// shared AgentActivityStore (constructed above, before the engine)
|
|
1271
1465
|
// into one bounded wake. Wakes/flags only; cooldown via engine throttle.
|
|
1272
1466
|
additionalPolicies: [
|
|
1273
|
-
makeWorkflowKeepalivePolicy({
|
|
1467
|
+
makeWorkflowKeepalivePolicy({
|
|
1468
|
+
db,
|
|
1469
|
+
// OPR.0.4.6.WF5 FR-2 class (b): detection-time exception items,
|
|
1470
|
+
// dedup by occurrence; dial resolved via the runtime's cached
|
|
1471
|
+
// spec (never-lost fallback inside the helper).
|
|
1472
|
+
ensureStuckExceptionItem: workflowExceptionEnsurer,
|
|
1473
|
+
}),
|
|
1274
1474
|
makeIdleGateQitemPolicy({ db, agentActivityStore }),
|
|
1275
1475
|
],
|
|
1276
1476
|
});
|
|
@@ -1280,6 +1480,28 @@ export async function createDaemon(opts) {
|
|
|
1280
1480
|
});
|
|
1281
1481
|
deps.watchdogPolicyEngine = watchdogPolicyEngine;
|
|
1282
1482
|
deps.watchdogScheduler = watchdogScheduler;
|
|
1483
|
+
// OPR.0.4.6.WF1 FR-4: the workflow startup resume sweep — re-arm
|
|
1484
|
+
// keepalives, reissue lost post-commit nudges (pending frontier
|
|
1485
|
+
// packets never nudged), surface stuck instances. Runs after the
|
|
1486
|
+
// watchdog + transport are wired so re-nudges actually deliver.
|
|
1487
|
+
// Failures are logged, never fatal: a sweep problem must not
|
|
1488
|
+
// bring the daemon down.
|
|
1489
|
+
if (workflowRuntime && queueRepoForWorkflow) {
|
|
1490
|
+
try {
|
|
1491
|
+
const { runWorkflowBootSweep } = await import("./domain/workflow-boot-sweep.js");
|
|
1492
|
+
await runWorkflowBootSweep({
|
|
1493
|
+
instanceStore: workflowRuntime.instanceStore,
|
|
1494
|
+
queueRepo: queueRepoForWorkflow,
|
|
1495
|
+
watchdogJobsRepo: watchdogJobsRepoInstance,
|
|
1496
|
+
log: (line) => console.log(line),
|
|
1497
|
+
// OPR.0.4.6.WF5 FR-2 class (b): the sweep leg of detection.
|
|
1498
|
+
ensureStuckExceptionItem: workflowExceptionEnsurer,
|
|
1499
|
+
});
|
|
1500
|
+
}
|
|
1501
|
+
catch (err) {
|
|
1502
|
+
console.warn(`workflow boot sweep: failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1283
1505
|
}
|
|
1284
1506
|
// Context monitor — constructed before createApp so routes can access pollOnce for refresh.
|
|
1285
1507
|
// Caller (index.ts) starts polling after listen.
|
|
@@ -1294,6 +1516,7 @@ export async function createDaemon(opts) {
|
|
|
1294
1516
|
const contextMonitor = new ContextMonitor(db, contextUsageStore, claudeAdapter, compactionEnforcer, {
|
|
1295
1517
|
"claude-code": claudeAdapter,
|
|
1296
1518
|
codex: codexAdapter,
|
|
1519
|
+
pi: piAdapter,
|
|
1297
1520
|
});
|
|
1298
1521
|
deps.contextMonitor = contextMonitor;
|
|
1299
1522
|
// OPR.0.4.3.14 — expose the SAME enforcer instance to routes for the manual
|