@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
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cross-host-rig-commands
|
|
3
|
+
description: Use when issuing `rig` commands against a remote host via `--host <id>` flag (single-hop SSH to a host declared in `~/.openrig/hosts.yaml`). Covers the 4 structured failure modes (ssh-unreachable / permission-gate / remote-daemon-unreachable / remote-command-failed), the `--verify` honest pass-through (SSH success is NOT verify success), and the host-registry shape. v0 supports `rig send / capture / ps / whoami --host <id>`.
|
|
4
|
+
metadata:
|
|
5
|
+
cli_surfaces_referenced:
|
|
6
|
+
- capture
|
|
7
|
+
- daemon start
|
|
8
|
+
- host list
|
|
9
|
+
- host show
|
|
10
|
+
- ps
|
|
11
|
+
- send
|
|
12
|
+
- whoami
|
|
13
|
+
openrig:
|
|
14
|
+
stage: factory-approved
|
|
15
|
+
sibling_skills:
|
|
16
|
+
- rig-lifecycle
|
|
17
|
+
- topology-mutation-and-seat-management
|
|
18
|
+
- seat-scaling-and-specialization
|
|
19
|
+
- sidecar-operator
|
|
20
|
+
- rig-bundles-and-shareable-artifacts
|
|
21
|
+
- specification-system
|
|
22
|
+
- extension-and-user-workspace
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Cross-Host Rig Commands
|
|
26
|
+
|
|
27
|
+
A first-class OpenRig surface for issuing `rig` commands against a
|
|
28
|
+
remote host via single-hop SSH. v0 productizes the existing SSH-envelope
|
|
29
|
+
operator pattern (`ssh <host> rig <cmd>`) with declared host identity,
|
|
30
|
+
explicit cross-host invocation path, preserved `--verify` semantics, and
|
|
31
|
+
4 named failure modes.
|
|
32
|
+
|
|
33
|
+
**Current-host note (2026-07-14):** this skill still preserves the original
|
|
34
|
+
SSH-v0 doctrine below, but the live host registry may also contain HTTP
|
|
35
|
+
read-through/tunnel entries such as `your-vm` and `your-other-vm`. Use the
|
|
36
|
+
host registry entry as ground truth for transport shape, and use
|
|
37
|
+
`conventions/multi-host-naming/README.md` for host-id naming. HTTP entries
|
|
38
|
+
require `url` plus exactly one of `bearer_file` or `bearer_env`.
|
|
39
|
+
|
|
40
|
+
**v0 is CLI-side shell-out only — `packages/daemon/` is NOT touched.**
|
|
41
|
+
The remote host has its own managed `rig` available on `$PATH`.
|
|
42
|
+
|
|
43
|
+
## Use this when
|
|
44
|
+
|
|
45
|
+
- Driving a Tart VM from the host (the immediate cross-host consumer)
|
|
46
|
+
- Operating Mac host A against Mac host B
|
|
47
|
+
- Reading remote state via `rig ps --host` / `rig whoami --host`
|
|
48
|
+
- Sending or capturing on a remote rig session (`rig send/capture --host <id>`)
|
|
49
|
+
- Authoring a `~/.openrig/hosts.yaml` registry entry
|
|
50
|
+
|
|
51
|
+
## Don't use this when
|
|
52
|
+
|
|
53
|
+
- The target is local. Don't pass `--host` for local commands.
|
|
54
|
+
- You need multi-hop SSH (host A → host B → host C). v0 is single-hop only.
|
|
55
|
+
- You want reverse direction (remote initiates back to local). v0 is originator-pull only.
|
|
56
|
+
- Cross-host **seat handover** (moving a durable owned seat across hosts) — deferred to higher-level primitives. (Cross-host **queue writes**, by contrast, now ship — see "Cross-host queue writes" below.)
|
|
57
|
+
- The transport isn't SSH. v0 supports `transport: ssh` only.
|
|
58
|
+
|
|
59
|
+
## Cross-host queue writes (updated 2026-07-21 vs main d37a08ad)
|
|
60
|
+
|
|
61
|
+
Cross-host **queue writes** are no longer deferred — they ship — but the rule
|
|
62
|
+
differs from the interactive verbs (`send`/`capture`/`ps`/`whoami`):
|
|
63
|
+
|
|
64
|
+
- **Queue writes are EXPLICIT-only.** Address the target host explicitly with
|
|
65
|
+
`--host <id>` or the `member@rig@<host>` form. A queue write **never** follows a
|
|
66
|
+
persisted host selection.
|
|
67
|
+
- **`host select` stickiness does NOT apply to queue.** `host select` affects the
|
|
68
|
+
`resolveEffectiveHost` verbs (`send`/`capture`/`ps`/`whoami`) — those follow the
|
|
69
|
+
selected host — but a queue write ignores it and requires explicit addressing.
|
|
70
|
+
- **Host address parsing differs** between the interactive verbs and the queue
|
|
71
|
+
verbs; do not assume the interactive form carries over. When unsure, address the
|
|
72
|
+
host explicitly.
|
|
73
|
+
|
|
74
|
+
## Host registry shape (`~/.openrig/hosts.yaml`)
|
|
75
|
+
|
|
76
|
+
Host ids should follow the OpenRig-work multi-host naming convention:
|
|
77
|
+
`conventions/multi-host-naming/README.md`. In this environment that means
|
|
78
|
+
physical hosts such as `your-vm`, local OpenRig development VMs such as
|
|
79
|
+
`your-vm`, persistent product VMs such as `your-other-vm`, and VPS hosts such
|
|
80
|
+
as `your-vps`. Keep old aliases during migration until no live routing
|
|
81
|
+
depends on them.
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
hosts:
|
|
85
|
+
- id: a-test-vm
|
|
86
|
+
transport: ssh # v0 supports "ssh" only
|
|
87
|
+
target: a-test-vm.local # DNS name, SSH config alias, or IP
|
|
88
|
+
user: wrandom # optional
|
|
89
|
+
notes: "Tart VM" # optional
|
|
90
|
+
- id: laptop-b
|
|
91
|
+
transport: ssh
|
|
92
|
+
target: laptop-b.tail-scale-net
|
|
93
|
+
user: wrandom
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Validation rules:
|
|
97
|
+
|
|
98
|
+
- `hosts` required, non-null array
|
|
99
|
+
- Each entry: `id` required (non-empty, unique), `transport` required (`ssh` only), `target` required
|
|
100
|
+
- `user` and `notes` optional
|
|
101
|
+
- Operator-managed file; v0 does NOT include any sub-command to add/remove/list hosts (operators edit YAML directly)
|
|
102
|
+
- Missing or invalid file returns a clear error pointing at the canonical path
|
|
103
|
+
|
|
104
|
+
## CLI surface (v0 shipped)
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
rig send <session> "msg" --host <id> --verify
|
|
108
|
+
rig capture <session> --host <id>
|
|
109
|
+
rig ps --host <id> [--nodes] [...]
|
|
110
|
+
rig whoami --host <id>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Forwards every shaping flag (`--nodes`, `--full`, `--limit`, `--fields`,
|
|
114
|
+
`--summary`, `--filter`, `--json`) to the remote `rig` invocation. The
|
|
115
|
+
remote rig's output is verbatim passthrough on success.
|
|
116
|
+
|
|
117
|
+
## The 4 structured failure modes (load-bearing API contract)
|
|
118
|
+
|
|
119
|
+
The CLI distinguishes 4 failure modes; operators get an actionable error
|
|
120
|
+
per mode; JSON output preserves the `failedStep` enum:
|
|
121
|
+
|
|
122
|
+
| Mode | Cause | Action |
|
|
123
|
+
|---|---|---|
|
|
124
|
+
| `ssh-unreachable` | SSH itself failed (connection refused, host key mismatch, DNS failure, timeout) | Verify SSH access and the registry entry |
|
|
125
|
+
| `permission-gate` | SSH hit auth/permission gate (Permission denied, Keychain) | Error includes hint to keychain-over-SSH field note (L4-3 D6) |
|
|
126
|
+
| `remote-daemon-unreachable` | SSH succeeded but remote `rig` reported the remote daemon was not reachable | `ssh <target> rig daemon start` |
|
|
127
|
+
| `remote-command-failed` | SSH succeeded but remote `rig` exited non-zero for some other reason; remote stderr is surfaced | Read remote stderr; debug remote command |
|
|
128
|
+
|
|
129
|
+
Each is distinct and routable. Don't conflate them.
|
|
130
|
+
|
|
131
|
+
## `--verify` honest pass-through (load-bearing)
|
|
132
|
+
|
|
133
|
+
`--verify` against a remote target must:
|
|
134
|
+
|
|
135
|
+
- **Propagate** the verification request to the remote daemon (or remote `rig` invocation that talks to it)
|
|
136
|
+
- **Bring back a structured verification result** (true/false + reason if false), NOT just SSH exit code 0
|
|
137
|
+
- **Distinguish "SSH succeeded but verify returned false" from "SSH itself failed"** — these are different operator actions
|
|
138
|
+
|
|
139
|
+
**SSH success is NOT verify success.** The remote rig is authoritative
|
|
140
|
+
on `--verify`; its `Verified: yes/no` line is surfaced verbatim. Verified
|
|
141
|
+
at 3 layers (executor unit, command integration, source impl).
|
|
142
|
+
|
|
143
|
+
## Hard boundaries (do-not list)
|
|
144
|
+
|
|
145
|
+
- **Do NOT collapse `--verify` honest result into SSH exit code.** Operators and agents rely on the distinction.
|
|
146
|
+
- **Do NOT silently retry SSH failures inside the primitive.** Surface them; let the caller decide.
|
|
147
|
+
- **Do NOT introduce non-SSH transports in v0.** Goal is productizing the existing shipped pattern, not replacing it.
|
|
148
|
+
- **Do NOT touch host-side daemon code as part of v0.** Cross-host shape is on the originator side.
|
|
149
|
+
|
|
150
|
+
## Cross-host annotation
|
|
151
|
+
|
|
152
|
+
Every cross-host invocation is observable as cross-host:
|
|
153
|
+
|
|
154
|
+
- **Operator output**: `[via host=<id> (<target>)]` annotation
|
|
155
|
+
- **JSON output**: `cross_host: { host, target }` field
|
|
156
|
+
|
|
157
|
+
Annotation is PRESENT when `--host` is set and ABSENT otherwise
|
|
158
|
+
(compat regression).
|
|
159
|
+
|
|
160
|
+
## Currently shipped (v0) vs deferred
|
|
161
|
+
|
|
162
|
+
Shipped at openrig `cdce3a6` (2026-04-30):
|
|
163
|
+
- `--host <id>` flag on `rig send / capture / ps / whoami` (initial 2 commands; promoted to 4 at `6b7043a` same day)
|
|
164
|
+
- Read-only host registry validation
|
|
165
|
+
- Single-hop SSH executor with 4-mode `failedStep` enum
|
|
166
|
+
- `--verify` honest pass-through
|
|
167
|
+
- Cross-host annotation (operator + JSON)
|
|
168
|
+
- Daemon untouched
|
|
169
|
+
|
|
170
|
+
Deferred:
|
|
171
|
+
- Tier 2 real-runtime cross-host proof (disposable Tart VM cycle)
|
|
172
|
+
- `rig host list / show` read-only sub-namespace (only if host count grows past comfortable manual editing)
|
|
173
|
+
- Non-SSH transports
|
|
174
|
+
- Multi-hop SSH
|
|
175
|
+
- Reverse direction (remote initiates)
|
|
176
|
+
- Connection pooling/caching
|
|
177
|
+
|
|
178
|
+
## See also
|
|
179
|
+
|
|
180
|
+
- `seat-continuity-and-handover` skill — host-aware seat-binding semantics for cross-host handover (deferred to v1 on top of this v0 baseline)
|
|
181
|
+
- `openrig-user` skill — the local CLI surface that cross-host commands wrap
|
|
182
|
+
|
|
183
|
+
## Sender identity is ASYMMETRIC (verified vs current main, 2026-07-25)
|
|
184
|
+
|
|
185
|
+
The `@host` sugar is **target-addressing only**, not sender-identity. A cross-host
|
|
186
|
+
message's **From:** is `member@rig` — the sender carries **NO `@host` suffix**. The target
|
|
187
|
+
supports `member@rig@<host>` for addressing; the sender does not reflect its own host in
|
|
188
|
+
`From:`. **Do NOT teach or expect a host-qualified `from`** (in openrig-user / operator send
|
|
189
|
+
docs or anywhere) until that core gap is fixed. (pm@your-rig verified this against
|
|
190
|
+
current main, 2026-07-25 — a known asymmetry, not a doc error to paper over.)
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: human-in-the-loop
|
|
3
|
+
description: Use when classifying a slice closeout (auto-continue / human gate / park), routing a real decision to a human, or designing a human queue/dashboard surface. Treats humans as durable network participants with attention surfaces, queues, and decision records — escalation lands as a durable attention item, not a chat message. Approval is NOT required for every clean closeout; the default RSI conveyor continues unless an explicit human gate is reached.
|
|
4
|
+
metadata:
|
|
5
|
+
openrig:
|
|
6
|
+
stage: factory-approved
|
|
7
|
+
sibling_skills:
|
|
8
|
+
- queue-handoff
|
|
9
|
+
- workflow-runtime
|
|
10
|
+
- watchdog
|
|
11
|
+
- alignment-trace
|
|
12
|
+
- looping-workflows
|
|
13
|
+
- intake-routing
|
|
14
|
+
- attention-queue
|
|
15
|
+
- dispatching-parallel-agents
|
|
16
|
+
- subagent-driven-development
|
|
17
|
+
- control-plane-capabilities
|
|
18
|
+
- status-not-chat-orchestrator
|
|
19
|
+
- control-plane-queue
|
|
20
|
+
- control-plane-watchdog
|
|
21
|
+
- control-plane-workflows
|
|
22
|
+
- control-plane-delivery-loop
|
|
23
|
+
- control-plane-rollout-manager
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Human In The Loop
|
|
27
|
+
|
|
28
|
+
The primitive that treats humans as **durable network participants** —
|
|
29
|
+
attention surfaces, queues, decision records, routing semantics — not
|
|
30
|
+
as ad-hoc chat receivers.
|
|
31
|
+
|
|
32
|
+
**Autonomy is not the absence of humans; it is knowing when human
|
|
33
|
+
judgment is needed and making that handoff crisp.**
|
|
34
|
+
|
|
35
|
+
## Use this when
|
|
36
|
+
|
|
37
|
+
- A slice closeout needs classifying: auto-continue, human gate, or park
|
|
38
|
+
- A real decision needs to land in front of a human (usage limits, provider auth, roadmap tradeoff, product-intent ambiguity)
|
|
39
|
+
- Designing a human queue/dashboard surface
|
|
40
|
+
- Returning a hot potato to orchestration after human approval
|
|
41
|
+
|
|
42
|
+
## Don't use this when
|
|
43
|
+
|
|
44
|
+
- The slice closeout is clean and `PROGRESS.md` already names the next safe slice. **Default RSI conveyor continues; do NOT manufacture a human gate.**
|
|
45
|
+
- The escalation is just a status update. Humans are participants for *decisions*, not narration.
|
|
46
|
+
- The next owner is another agent. Use queue-handoff, not human-in-the-loop.
|
|
47
|
+
|
|
48
|
+
## The 3-class closeout classification
|
|
49
|
+
|
|
50
|
+
In a productized daemon-backed version, closeout classifies the next
|
|
51
|
+
step BEFORE touching the human queue:
|
|
52
|
+
|
|
53
|
+
| Class | When | Action |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| **auto-continue** | Slice closes cleanly, next named slice in workstream plan | Mark closed; create next-owner qitem from plan |
|
|
56
|
+
| **human gate** | Genuine decision needed (usage limits, provider auth, product-intent ambiguity, roadmap tradeoff) | Create human queue item with proof + decision text + recommended default + action outcomes |
|
|
57
|
+
| **park** | Intentionally stop the conveyor (e.g., waiting on external) | Stop with reason + resumption path |
|
|
58
|
+
|
|
59
|
+
## Failure modes (5)
|
|
60
|
+
|
|
61
|
+
1. **Human decision needed, but the rig only mentions it in chat.** Decisions belong as durable attention items, not chat messages.
|
|
62
|
+
2. **Human queue item lacks enough plain-English context for a decision.** Include proof + decision text + recommended default + action outcomes.
|
|
63
|
+
3. **Human response updates a file but does not wake the next owner.** Approval should return the hot potato; feedback should create the next durable qitem.
|
|
64
|
+
4. **The dashboard shows too much raw rig state and hides the actual decision queue.** Decision queue is the primary surface; rig state is secondary.
|
|
65
|
+
5. **A clean closeout is parked on the human even though `PROGRESS.md` already names the next safe slice.** Don't manufacture human gates.
|
|
66
|
+
|
|
67
|
+
## Proof standard (both paths)
|
|
68
|
+
|
|
69
|
+
A trustworthy human-in-the-loop system proves both directions:
|
|
70
|
+
|
|
71
|
+
- **Blocking gate path**: real item routed to human → human decision recorded through UI → resulting hot-potato handoff wakes correct next owner
|
|
72
|
+
- **Non-blocking closeout path**: proof inspectable by human, but orchestrator continues to next named slice without manufacturing a human gate
|
|
73
|
+
|
|
74
|
+
A primitive that only wakes humans is not trustworthy. It must also know when NOT to.
|
|
75
|
+
|
|
76
|
+
## Product shape (SHIPPED — Mission Control, PL-005)
|
|
77
|
+
|
|
78
|
+
This surface has shipped as **Mission Control** (product UI, `/mission-control`
|
|
79
|
+
route; actions via `POST /api/mission-control/action`). The seven verbs the
|
|
80
|
+
human acts with:
|
|
81
|
+
- **approve** (returns the hot potato to orchestration or the chosen owner)
|
|
82
|
+
- **deny** (reject the item)
|
|
83
|
+
- **route** (send to a different owner)
|
|
84
|
+
- **annotate** (add context without action)
|
|
85
|
+
- **hold** (intentional pause with reason)
|
|
86
|
+
- **drop** (mark not-actionable)
|
|
87
|
+
- **handoff** (hand to a specific next owner — creates the next durable qitem)
|
|
88
|
+
|
|
89
|
+
**Approval returns the hot potato to orchestration or the chosen owner;
|
|
90
|
+
feedback creates the next durable qitem rather than only mutating the source
|
|
91
|
+
queue file** — enforced by the shipped verbs (handoff/route create qitems).
|
|
92
|
+
See `docs/as-built/architecture/mission-control.md`.
|
|
93
|
+
|
|
94
|
+
## Long-term shape
|
|
95
|
+
|
|
96
|
+
Likely needs **multiple humans with different scopes**, not a singleton
|
|
97
|
+
human attention feed. Different humans own different decision
|
|
98
|
+
domains; queue items route by scope.
|
|
99
|
+
|
|
100
|
+
## See also
|
|
101
|
+
|
|
102
|
+
- `queue-handoff` skill — durable handoff via queue items; human-in-the-loop is the human-side complement
|
|
103
|
+
- `watchdog` skill — when to wake (humans included) vs no-op
|
|
104
|
+
- `looping-workflows` (convention) — the looping-workflows convention covers loop closeouts; human-in-the-loop is the escape hatch
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: openrig-architect
|
|
3
|
-
description: Use when designing multi-agent topologies that run ON OpenRig — authoring RigSpec and AgentSpec files for new rigs, creating agent startup content (guidance / skills / culture), or diagnosing why a launched rig's agents aren't behaving as intended. NOT for changing OpenRig itself (
|
|
3
|
+
description: Use when designing multi-agent topologies that run ON OpenRig — authoring RigSpec and AgentSpec files for new rigs, creating agent startup content (guidance / skills / culture), or diagnosing why a launched rig's agents aren't behaving as intended. NOT for changing OpenRig itself (use openrig-builder); NOT for ordinary CLI operation of an existing rig (use openrig-user). Covers the full authoring lifecycle from user intent to validated, launchable rig.
|
|
4
4
|
metadata:
|
|
5
|
+
cli_surfaces_referenced:
|
|
6
|
+
- agent validate
|
|
7
|
+
- capture
|
|
8
|
+
- daemon start
|
|
9
|
+
- ps
|
|
10
|
+
- send
|
|
11
|
+
- spec validate
|
|
12
|
+
- specs ls
|
|
13
|
+
- up
|
|
14
|
+
- whoami
|
|
5
15
|
openrig:
|
|
6
16
|
stage: factory-approved
|
|
7
|
-
last_verified: "2026-05-04"
|
|
8
|
-
distribution_scope: product-bound
|
|
9
|
-
source_evidence: |
|
|
10
|
-
Bootstrap skill — NPM install lands this in personal homes (~/.claude/skills/, ~/.agents/skills/) for users authoring their own rigs.
|
|
11
17
|
sibling_skills:
|
|
12
18
|
- openrig-user
|
|
13
19
|
- openrig-operator
|
|
20
|
+
- openrig-builder
|
|
21
|
+
- openrig-upgrade
|
|
14
22
|
- forming-an-openrig-mental-model
|
|
15
|
-
|
|
23
|
+
- ai-dev-workflows
|
|
24
|
+
notes: |
|
|
25
|
+
Description was already correct (starts with "Use when..."; lists specific authoring triggers including the diagnose-bad-rig case). Final sentence ("Covers the full authoring lifecycle from user intent to validated, launchable rig.") is workflow-summary-adjacent; on next iteration, consider trimming. For factory-adoption cycle, kept as-is to match product source-of-truth.
|
|
16
26
|
---
|
|
17
27
|
|
|
18
28
|
# OpenRig Architect
|
|
@@ -47,8 +57,13 @@ Load these before starting any design work. The quality of your output depends o
|
|
|
47
57
|
|
|
48
58
|
**Read if present on this host:**
|
|
49
59
|
|
|
50
|
-
4. **Host-level doctrine
|
|
51
|
-
|
|
60
|
+
4. **Host-level doctrine** in your host's topology doc, if it keeps one. If this file exists, it supersedes the baseline process below for complex or high-stakes rigs. Specifically:
|
|
61
|
+
- §3 defines the canonical rig classes (kernel, project, ephemeral, infra-build, managed-app). Classify before designing.
|
|
62
|
+
- §4 defines context-sharing patterns (pods as context domains, pair pattern, HA via mental-model-ha skill + substrate session logs, terminal nodes as common-room, chatroom/substrate/transcripts/Corpus).
|
|
63
|
+
- **§7 is the canonical 12-step rig-spec authoring SOP for high-stakes rigs — use it instead of the baseline "Design Process" below when the rig is ≥4 members, uses HA, is a managed-app, or will be shared/copied.** The baseline below still applies to small/focused rigs.
|
|
64
|
+
- §10 contains the host's bootstrap sequence so you know where your new rig fits.
|
|
65
|
+
- §12 has the naming canon and vocabulary mapping to shipped terms.
|
|
66
|
+
5. **`building-agent-software` skill** if available in your skill catalog. Design principles for agent-facing tools and surfaces. Relevant when your rig ships a new CLI, service, or managed app.
|
|
52
67
|
|
|
53
68
|
**Load as needed:**
|
|
54
69
|
- Domain-specific skills when designing specialist agents — find shipped skills inside the OpenRig installation under the `specs/agents/` tree
|
|
@@ -231,6 +246,8 @@ rig spec validate rig.yaml
|
|
|
231
246
|
rig agent validate agents/my-agent/agent.yaml
|
|
232
247
|
```
|
|
233
248
|
|
|
249
|
+
Then run `rig spec audit rig.yaml` for advisory checks such as stale seat references and other cross-file drift that schema validation cannot detect.
|
|
250
|
+
|
|
234
251
|
If validation fails, fix the errors. Do not try to launch an invalid spec — it will fail with a less helpful error.
|
|
235
252
|
|
|
236
253
|
## Diagnosis: When Things Go Wrong
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openrig-cmux
|
|
3
|
+
description: >
|
|
4
|
+
Use when opening OpenRig fleet terminals into cmux — turning a rig, pod, mission, slice, or saved
|
|
5
|
+
view into live agent tiles via `rig terminal --provider cmux`, or driving cmux on an agent's
|
|
6
|
+
request. Same OpenRig view semantics as openrig-herdr (the verbs, honest-partial/degrade, read-only
|
|
7
|
+
cross-rig, scroll/copy, same-size-only duplicates); cmux is the **best-effort** provider (herdr is
|
|
8
|
+
the default and the proof-gated one). Prefer openrig-herdr unless cmux is specifically wanted.
|
|
9
|
+
metadata:
|
|
10
|
+
openrig:
|
|
11
|
+
stage: candidate
|
|
12
|
+
sibling_skills:
|
|
13
|
+
- openrig-herdr
|
|
14
|
+
- openrig-user
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# openrig-cmux
|
|
18
|
+
|
|
19
|
+
cmux is a **provider** for OpenRig views — the same `rig terminal` surface as herdr, rendering the
|
|
20
|
+
tiles into cmux instead. It is the provider OpenRig already shipped (the existing "Launch in cmux"
|
|
21
|
+
affordance generalizes onto `rig terminal <provider>`), kept working. The OpenRig-semantic half is
|
|
22
|
+
identical to openrig-herdr: OpenRig decides **which** agents form a view; the provider renders the
|
|
23
|
+
pixels. **Read openrig-herdr first for the full model** — this skill only calls out what differs for
|
|
24
|
+
cmux.
|
|
25
|
+
|
|
26
|
+
## Provider status — cmux is best-effort
|
|
27
|
+
|
|
28
|
+
- **herdr is the default and the proof-gated provider**; **cmux is best-effort** — it ships on the
|
|
29
|
+
same `rig terminal <provider>` + web-launcher neighborhood, but a cmux miss is not a slice failure.
|
|
30
|
+
Reach for cmux when it is specifically wanted; otherwise default to herdr (`rig terminal open <view>`
|
|
31
|
+
with no `--provider`).
|
|
32
|
+
- Views are **provider-agnostic**: the same view + the same agents + the same semantics carry across
|
|
33
|
+
herdr and cmux. A saved view opens in either.
|
|
34
|
+
|
|
35
|
+
## The surface (same three verbs, `--provider cmux`)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
rig terminal open <view> --provider cmux [--json] # open a view into cmux (herdr is the no-flag default)
|
|
39
|
+
rig terminal views [--json] # the same view library, provider-agnostic
|
|
40
|
+
rig terminal status --provider cmux [--json] # cmux liveness / health
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`<view>` resolves exactly as with herdr: a **rig name** · **`pod:<rig>/<podNamespace>`** ·
|
|
44
|
+
**`mission:<id>`** · **`slice:<id>`** (derived live) · a **saved-view name**.
|
|
45
|
+
|
|
46
|
+
## What carries over unchanged from openrig-herdr
|
|
47
|
+
|
|
48
|
+
All of these behave identically — see openrig-herdr for the detail:
|
|
49
|
+
|
|
50
|
+
- **Honest-partial / honest-degrade** — opened / absent / degraded, each named; partial opens exit 0,
|
|
51
|
+
zero-pane exits non-zero; an http-registered host's agents degrade with the reason ("host `<id>` is
|
|
52
|
+
http-registered; tiles need ssh"), never silently dropped.
|
|
53
|
+
- **Read-only policy** — a rig or `pod:` view is interactive; `mission:` / `slice:` views are
|
|
54
|
+
read-only by construction; a saved view is per-member (`readOnly`). A read-only pane is
|
|
55
|
+
`tmux attach -r` (client `readonly=1`, keystrokes physically cannot reach the agent). See openrig-herdr.
|
|
56
|
+
- **Safety rails (the fleet-safety rail)** — a tile is a *view* (nested `tmux attach`) of a
|
|
57
|
+
daemon-owned session; never move/join/kill/re-parent a daemon-owned pane; closing a tile detaches
|
|
58
|
+
one client and leaves the session untouched; never live-flip tmux options on a running seat in
|
|
59
|
+
production (prove it in an isolated environment first).
|
|
60
|
+
- **Scroll + copy out of the box** — the daemon's terminal defaults (per-session scroll at launch +
|
|
61
|
+
the server's clipboard defaults); running seats pick up wheel-scroll at their next relaunch.
|
|
62
|
+
- **Limits** — tile chrome v1 = a plain label; same-size panes for duplicate/multi-view membership
|
|
63
|
+
(the different-size resize mismatch is an inherent tmux multi-client limit, documented not fixed).
|
|
64
|
+
|
|
65
|
+
## cmux-specific notes
|
|
66
|
+
|
|
67
|
+
- **Open-or-focus per agent** — cmux's shipped integration opens a node or focuses it if already open;
|
|
68
|
+
expect focus (not a duplicate) when a seat is already tiled in cmux.
|
|
69
|
+
- **The shipped "Launch in cmux" affordance is preserved** (byte-compatible) and generalizes into the
|
|
70
|
+
provider + view picker; opening cmux from the web launcher still works.
|
|
71
|
+
- **No AGPL arm's-length concern** — unlike herdr, cmux is OpenRig's shipped provider integration; the
|
|
72
|
+
clean-room/never-embed rail that applies to herdr is not a cmux constraint. (This skill itself is
|
|
73
|
+
still authored clean-room.)
|
|
74
|
+
|
|
75
|
+
## Saved views — provider-agnostic
|
|
76
|
+
|
|
77
|
+
Saved views are **hand-authored** in `terminal-views.yaml` (v1 has no save/write verb) and are
|
|
78
|
+
**provider-agnostic** — see **openrig-herdr** for the exact schema, the store facts (atomic tmp+rename,
|
|
79
|
+
byte-stable, at the OpenRig home root), and the derived-views-never-persisted rule. Reopen any saved
|
|
80
|
+
view in cmux with `rig terminal open <id> --provider cmux`. Derived views (a rig, `pod:<rig>/<pod>`,
|
|
81
|
+
`mission:<id>`, `slice:<id>`) are computed live and never written to the file.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openrig-herdr
|
|
3
|
+
description: >
|
|
4
|
+
Use when opening OpenRig fleet terminals as a herdr wall — turning a rig, pod, mission, slice, or
|
|
5
|
+
saved view into live interactive agent tiles via `rig terminal`, watching another rig read-only,
|
|
6
|
+
or driving herdr on an agent's request ("open all my rigs + a mission as views"). Covers the
|
|
7
|
+
`rig terminal open|views|status` verbs, the honest-partial/degrade reading of the result, the
|
|
8
|
+
read-only-by-construction rail for cross-rig views, scroll/copy out of the box, and the
|
|
9
|
+
same-size-only duplicate-pane limit. herdr is the default, proof-gated provider.
|
|
10
|
+
metadata:
|
|
11
|
+
openrig:
|
|
12
|
+
stage: candidate
|
|
13
|
+
sibling_skills:
|
|
14
|
+
- openrig-cmux
|
|
15
|
+
- openrig-user
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# openrig-herdr
|
|
19
|
+
|
|
20
|
+
OpenRig decides **which** agents make up a view (a rig, a pod, a mission, a slice, or a saved
|
|
21
|
+
group); **herdr** renders the pixels. A view opens as live, interactive terminal tiles — each tile
|
|
22
|
+
is a nested `tmux attach` to a daemon-owned agent session, so you get the real session, not a
|
|
23
|
+
snapshot. OpenRig owns the semantics; herdr owns the surface. You drive it entirely through the
|
|
24
|
+
`rig terminal` CLI, which rides the installed herdr binary at arm's length — never link, embed, or
|
|
25
|
+
plugin it.
|
|
26
|
+
|
|
27
|
+
## The whole surface — three verbs
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
rig terminal open <view> [--provider herdr|cmux] [--json] # herdr is the default provider
|
|
31
|
+
rig terminal views [--json] # list openable views (saved + derived)
|
|
32
|
+
rig terminal status [--provider] [--json] # provider liveness / health
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`<view>` resolves, in order, to one of:
|
|
36
|
+
- a **rig name** — every live agent in that rig, auto-laid-out;
|
|
37
|
+
- **`pod:<rig>/<podNamespace>`** — every live agent in one pod of a rig (the rig's inventory filtered by pod);
|
|
38
|
+
- **`mission:<id>`** — the agents working that mission (derived live from topology);
|
|
39
|
+
- **`slice:<id>`** — the agents working that slice (derived live);
|
|
40
|
+
- a **saved-view name** — a user-defined group (see Saved views).
|
|
41
|
+
|
|
42
|
+
## Compose a view from a sentence
|
|
43
|
+
|
|
44
|
+
An agent asked "open all my rigs plus a mission as views" runs one `open` per target:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
rig terminal open acme-web # a whole rig, live agents as tiles
|
|
48
|
+
rig terminal open mission:site-relaunch # exactly the agents working the mission
|
|
49
|
+
rig terminal open slice:search-filters # the agents working one slice
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
No hand-listing of seats: the mission/slice membership is derived from live topology at open time.
|
|
53
|
+
|
|
54
|
+
## Read the result honestly — partial and degrade
|
|
55
|
+
|
|
56
|
+
The result is a partition — every seat lands in exactly one bucket, each **named**:
|
|
57
|
+
|
|
58
|
+
- **opened** — the live agents now showing as tiles.
|
|
59
|
+
- **absent** — seats in the view that aren't currently live: **named and skipped, never silently
|
|
60
|
+
dropped.** A view that opens *some* of its seats is a success (the partial is disclosed) and exits
|
|
61
|
+
**0**. Only a view where **no** pane opens exits **non-zero**.
|
|
62
|
+
- **degraded** — an agent that structurally cannot tile, named **with the reason**. The v1 case:
|
|
63
|
+
an agent on a host registered over HTTP has no ssh path, so its tile can't be composed — it reads
|
|
64
|
+
as **"host `<id>` is http-registered; tiles need ssh"** and is skipped, never dropped. (ssh-reachable
|
|
65
|
+
hosts tile via an ssh-wrapped attach; full http-host tiling is deferred to the cross-host transport
|
|
66
|
+
seam.)
|
|
67
|
+
|
|
68
|
+
Read `--json` to branch on the partition programmatically; the exit code alone tells you opened-something
|
|
69
|
+
(0) vs opened-nothing (non-zero).
|
|
70
|
+
|
|
71
|
+
## Read-only — who's interactive, who's watch-only
|
|
72
|
+
|
|
73
|
+
Read-only is composed into the pane at open time — a read-only tile is a `tmux attach -r`, the client
|
|
74
|
+
reports `readonly=1`, and it **physically cannot send input**. The current policy, by view kind:
|
|
75
|
+
|
|
76
|
+
- **A rig view or a `pod:` view is interactive** — you asked for that rig (or pod) directly, so you
|
|
77
|
+
can drive its agents.
|
|
78
|
+
- **`mission:` and `slice:` views are read-only by construction** — these derived views cut across
|
|
79
|
+
rigs; you watch and scroll, you don't keystroke into them.
|
|
80
|
+
- **A saved view is per-member** — each member carries its own `readOnly` (omit = interactive;
|
|
81
|
+
`true` = `attach -r`).
|
|
82
|
+
|
|
83
|
+
So you don't have to remember to be careful: the view kind (and, for a saved view, the per-member
|
|
84
|
+
flag) sets it at open time.
|
|
85
|
+
|
|
86
|
+
## Safety rails (hard — the fleet-safety rail)
|
|
87
|
+
|
|
88
|
+
- A tile is a **view** (a nested `tmux attach`) of a daemon-owned session. **Never** move, join, kill,
|
|
89
|
+
or re-parent a daemon-owned pane. Closing a tile detaches one tmux client — the daemon's session is
|
|
90
|
+
untouched and its addressing (send/capture/nudge) is unaffected.
|
|
91
|
+
- Host-local read-only viewing mutates nothing. Anything that would change a **live** daemon session's
|
|
92
|
+
shared state (e.g. flipping a tmux option on a running seat) is a config/design change — prove it in
|
|
93
|
+
an isolated environment, never live-flip in production.
|
|
94
|
+
|
|
95
|
+
## Scroll + copy work out of the box
|
|
96
|
+
|
|
97
|
+
On a freshly-launched agent tile the mouse wheel scrolls the pane's history and a drag-select copies
|
|
98
|
+
to your **system** clipboard — with no tmux commands typed. This rides the daemon's terminal defaults
|
|
99
|
+
(a per-session scroll option set at launch, plus the daemon tmux server's clipboard defaults). Honest
|
|
100
|
+
timing: agents that were already running before this shipped pick up wheel-scroll at their **next
|
|
101
|
+
natural relaunch** (the scroll default is per-session and running seats are never retro-flipped);
|
|
102
|
+
system-clipboard copy works immediately (it's server-wide).
|
|
103
|
+
|
|
104
|
+
## Limits — state them, don't paper over them
|
|
105
|
+
|
|
106
|
+
- **Tile chrome v1 = a plain label** (agent + slice). Rich per-tile status is roadmap.
|
|
107
|
+
- **Duplicate / multi-view membership** (the same agent live in two views at once) works — put the
|
|
108
|
+
duplicates in **same-size panes**. Different-sized duplicate panes have an inherent tmux
|
|
109
|
+
multi-client resize mismatch (tmux clamps to the smallest client); it is **documented, not fixed** —
|
|
110
|
+
don't expect a setting to remove it.
|
|
111
|
+
- **Inner tmux status bar** is hidden by default (herdr provides the chrome); one config key
|
|
112
|
+
(`terminal.status_bar`) flips it back on for raw-tmux / no-provider surfaces, and the flip applies
|
|
113
|
+
to **future launches only**.
|
|
114
|
+
|
|
115
|
+
## Saved views — the library (`terminal-views.yaml`)
|
|
116
|
+
|
|
117
|
+
In v1 you **create** a saved view by **hand-authoring** `terminal-views.yaml` — there is no save/write
|
|
118
|
+
verb (`open` / `views` / `status` are the whole surface; a `rig terminal save <id>` verb is a named
|
|
119
|
+
stretch/follow-up). You **reopen** it like any other view: `rig terminal open <id>`.
|
|
120
|
+
|
|
121
|
+
The file lives at the OpenRig home root (resolved via `getDefaultOpenRigPath()`), is written
|
|
122
|
+
atomically (tmp + rename), and is byte-stable. **Only hand-authored saved views live here — derived
|
|
123
|
+
views (a rig, `pod:<rig>/<pod>`, `mission:<id>`, `slice:<id>`) are computed live and never written to
|
|
124
|
+
this file.**
|
|
125
|
+
|
|
126
|
+
Schema — use these field names **exactly**, in this order; **omit** optional fields when absent
|
|
127
|
+
(never write `null`):
|
|
128
|
+
|
|
129
|
+
```yaml
|
|
130
|
+
version: 1
|
|
131
|
+
views:
|
|
132
|
+
- id: my-view-id # required — the id `rig terminal open <id>` takes
|
|
133
|
+
name: Human Name # required
|
|
134
|
+
members:
|
|
135
|
+
- seat: pod-member@rig # required — the canonical session name
|
|
136
|
+
label: agent . slice # optional — pane label
|
|
137
|
+
host: some-host-id # optional — STRUCTURED host id (NEVER a `member@rig@host` string);
|
|
138
|
+
# omit for local. ssh-registered hosts tile;
|
|
139
|
+
# http-registered hosts honest-degrade (named + skipped, with reason)
|
|
140
|
+
tmuxSession: sessname # optional — defaults to `seat`
|
|
141
|
+
readOnly: true # optional — omit = interactive; true = `tmux attach -r`
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
An agent composing a saved view on request **writes this YAML** and then opens the id:
|
|
145
|
+
`rig terminal open my-view-id` (add `--provider cmux` for cmux). The library is provider-agnostic —
|
|
146
|
+
the same saved view opens in herdr or cmux.
|
|
147
|
+
|
|
148
|
+
## AGPL / clean-room
|
|
149
|
+
|
|
150
|
+
Driving herdr through the `rig terminal` CLI (which talks to the installed herdr binary over its
|
|
151
|
+
CLI/socket) is arm's-length and fine. Do **not** link herdr's source, embed it in-process, or ship a
|
|
152
|
+
herdr plugin — a plugin needs legal review. This skill and its docs are clean-room: patterns only,
|
|
153
|
+
never herdr source text.
|