@openrig/cli 0.4.4 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +6 -8
  2. package/daemon/assets/plugins/openrig-core/skills/openrig-cmux/SKILL.md +86 -0
  3. package/daemon/assets/plugins/openrig-core/skills/openrig-herdr/SKILL.md +158 -0
  4. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +744 -96
  5. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  6. package/daemon/dist/adapters/codex-runtime-adapter.js +12 -8
  7. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  8. package/daemon/dist/adapters/pi-resume.d.ts +32 -0
  9. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -0
  10. package/daemon/dist/adapters/pi-resume.js +125 -0
  11. package/daemon/dist/adapters/pi-resume.js.map +1 -0
  12. package/daemon/dist/adapters/pi-runner-protocol.d.ts +88 -0
  13. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -0
  14. package/daemon/dist/adapters/pi-runner-protocol.js +153 -0
  15. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -0
  16. package/daemon/dist/adapters/pi-runner.d.ts +99 -0
  17. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -0
  18. package/daemon/dist/adapters/pi-runner.js +519 -0
  19. package/daemon/dist/adapters/pi-runner.js.map +1 -0
  20. package/daemon/dist/adapters/pi-runtime-adapter.d.ts +61 -0
  21. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -0
  22. package/daemon/dist/adapters/pi-runtime-adapter.js +356 -0
  23. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -0
  24. package/daemon/dist/adapters/tmux.d.ts +22 -1
  25. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  26. package/daemon/dist/adapters/tmux.js +40 -1
  27. package/daemon/dist/adapters/tmux.js.map +1 -1
  28. package/daemon/dist/build-info.js +3 -3
  29. package/daemon/dist/builtins/workflow-specs/branched-remediation.yaml +31 -0
  30. package/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +152 -0
  31. package/daemon/dist/builtins/workflow-specs/gated-release.yaml +26 -0
  32. package/daemon/dist/builtins/workflow-specs/linear-build.yaml +21 -0
  33. package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts +20 -0
  34. package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts.map +1 -0
  35. package/daemon/dist/db/migrations/049_workflow_instance_version.js +24 -0
  36. package/daemon/dist/db/migrations/049_workflow_instance_version.js.map +1 -0
  37. package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts +22 -0
  38. package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts.map +1 -0
  39. package/daemon/dist/db/migrations/050_workflow_spec_json.js +26 -0
  40. package/daemon/dist/db/migrations/050_workflow_spec_json.js.map +1 -0
  41. package/daemon/dist/db/migrations/051_workflow_resume.d.ts +22 -0
  42. package/daemon/dist/db/migrations/051_workflow_resume.d.ts.map +1 -0
  43. package/daemon/dist/db/migrations/051_workflow_resume.js +27 -0
  44. package/daemon/dist/db/migrations/051_workflow_resume.js.map +1 -0
  45. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts +26 -0
  46. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts.map +1 -0
  47. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js +30 -0
  48. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js.map +1 -0
  49. package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts +48 -0
  50. package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts.map +1 -0
  51. package/daemon/dist/db/migrations/053_sessions_node_id_index.js +53 -0
  52. package/daemon/dist/db/migrations/053_sessions_node_id_index.js.map +1 -0
  53. package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts +34 -0
  54. package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts.map +1 -0
  55. package/daemon/dist/db/migrations/054_queue_transitions_archive.js +49 -0
  56. package/daemon/dist/db/migrations/054_queue_transitions_archive.js.map +1 -0
  57. package/daemon/dist/domain/claim-service.d.ts +11 -0
  58. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  59. package/daemon/dist/domain/claim-service.js +3 -1
  60. package/daemon/dist/domain/claim-service.js.map +1 -1
  61. package/daemon/dist/domain/discovery-types.d.ts +1 -1
  62. package/daemon/dist/domain/discovery-types.d.ts.map +1 -1
  63. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +1 -0
  64. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
  65. package/daemon/dist/domain/hosts/hosts-registry-reader.js +19 -0
  66. package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
  67. package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts +11 -0
  68. package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts.map +1 -0
  69. package/daemon/dist/domain/hosts/hosts-registry-writer.js +54 -0
  70. package/daemon/dist/domain/hosts/hosts-registry-writer.js.map +1 -0
  71. package/daemon/dist/domain/hosts/read-through.d.ts +28 -0
  72. package/daemon/dist/domain/hosts/read-through.d.ts.map +1 -0
  73. package/daemon/dist/domain/hosts/read-through.js +139 -0
  74. package/daemon/dist/domain/hosts/read-through.js.map +1 -0
  75. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts +21 -0
  76. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -1
  77. package/daemon/dist/domain/hosts/remote-daemon-http.js +49 -0
  78. package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -1
  79. package/daemon/dist/domain/node-inventory.d.ts +18 -0
  80. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  81. package/daemon/dist/domain/node-inventory.js +206 -95
  82. package/daemon/dist/domain/node-inventory.js.map +1 -1
  83. package/daemon/dist/domain/node-launcher.d.ts +11 -0
  84. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  85. package/daemon/dist/domain/node-launcher.js +10 -0
  86. package/daemon/dist/domain/node-launcher.js.map +1 -1
  87. package/daemon/dist/domain/policies/workflow-keepalive.d.ts +7 -0
  88. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  89. package/daemon/dist/domain/policies/workflow-keepalive.js +93 -13
  90. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  91. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  92. package/daemon/dist/domain/ps-projection.js +37 -26
  93. package/daemon/dist/domain/ps-projection.js.map +1 -1
  94. package/daemon/dist/domain/queue-repository.d.ts +105 -0
  95. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  96. package/daemon/dist/domain/queue-repository.js +193 -4
  97. package/daemon/dist/domain/queue-repository.js.map +1 -1
  98. package/daemon/dist/domain/queue-retention.d.ts +130 -0
  99. package/daemon/dist/domain/queue-retention.d.ts.map +1 -0
  100. package/daemon/dist/domain/queue-retention.js +224 -0
  101. package/daemon/dist/domain/queue-retention.js.map +1 -0
  102. package/daemon/dist/domain/restore-orchestrator.d.ts +5 -0
  103. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  104. package/daemon/dist/domain/restore-orchestrator.js +29 -2
  105. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  106. package/daemon/dist/domain/resume-token-capture.d.ts +13 -0
  107. package/daemon/dist/domain/resume-token-capture.d.ts.map +1 -1
  108. package/daemon/dist/domain/resume-token-capture.js +14 -1
  109. package/daemon/dist/domain/resume-token-capture.js.map +1 -1
  110. package/daemon/dist/domain/resume-token-validation.d.ts +1 -1
  111. package/daemon/dist/domain/resume-token-validation.d.ts.map +1 -1
  112. package/daemon/dist/domain/resume-token-validation.js +58 -10
  113. package/daemon/dist/domain/resume-token-validation.js.map +1 -1
  114. package/daemon/dist/domain/review/compose.d.ts +50 -1
  115. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  116. package/daemon/dist/domain/review/compose.js +92 -3
  117. package/daemon/dist/domain/review/compose.js.map +1 -1
  118. package/daemon/dist/domain/review/fleet-compose.d.ts +52 -0
  119. package/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -0
  120. package/daemon/dist/domain/review/fleet-compose.js +294 -0
  121. package/daemon/dist/domain/review/fleet-compose.js.map +1 -0
  122. package/daemon/dist/domain/review/gather.d.ts +16 -1
  123. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  124. package/daemon/dist/domain/review/gather.js +177 -41
  125. package/daemon/dist/domain/review/gather.js.map +1 -1
  126. package/daemon/dist/domain/review/types.d.ts +104 -1
  127. package/daemon/dist/domain/review/types.d.ts.map +1 -1
  128. package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  129. package/daemon/dist/domain/rig-expansion-service.js +3 -0
  130. package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  131. package/daemon/dist/domain/rig-repository.d.ts +7 -6
  132. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  133. package/daemon/dist/domain/rig-repository.js +33 -11
  134. package/daemon/dist/domain/rig-repository.js.map +1 -1
  135. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  136. package/daemon/dist/domain/rigspec-codec.js +3 -0
  137. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  138. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  139. package/daemon/dist/domain/rigspec-exporter.js +4 -0
  140. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  141. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  142. package/daemon/dist/domain/rigspec-instantiator.js +11 -0
  143. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  144. package/daemon/dist/domain/rigspec-preflight.d.ts +6 -0
  145. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  146. package/daemon/dist/domain/rigspec-preflight.js +26 -1
  147. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  148. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  149. package/daemon/dist/domain/rigspec-schema.js +20 -1
  150. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  151. package/daemon/dist/domain/runtime-verifier.d.ts +7 -1
  152. package/daemon/dist/domain/runtime-verifier.d.ts.map +1 -1
  153. package/daemon/dist/domain/runtime-verifier.js +39 -1
  154. package/daemon/dist/domain/runtime-verifier.js.map +1 -1
  155. package/daemon/dist/domain/seat-handover-service.d.ts +9 -0
  156. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  157. package/daemon/dist/domain/seat-handover-service.js +2 -0
  158. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  159. package/daemon/dist/domain/seat-identity-store.d.ts +7 -0
  160. package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
  161. package/daemon/dist/domain/seat-identity-store.js +27 -0
  162. package/daemon/dist/domain/seat-identity-store.js.map +1 -1
  163. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  164. package/daemon/dist/domain/seat-status-service.js +6 -4
  165. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  166. package/daemon/dist/domain/session-name.d.ts +22 -0
  167. package/daemon/dist/domain/session-name.d.ts.map +1 -1
  168. package/daemon/dist/domain/session-name.js +29 -0
  169. package/daemon/dist/domain/session-name.js.map +1 -1
  170. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  171. package/daemon/dist/domain/slices/slice-detail-projector.js +4 -5
  172. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  173. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +18 -2
  174. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -1
  175. package/daemon/dist/domain/spec-library-workflow-scanner.js +23 -1
  176. package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -1
  177. package/daemon/dist/domain/startup-proof.d.ts +10 -6
  178. package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  179. package/daemon/dist/domain/startup-proof.js +35 -7
  180. package/daemon/dist/domain/startup-proof.js.map +1 -1
  181. package/daemon/dist/domain/successor-session-launcher.d.ts +16 -0
  182. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  183. package/daemon/dist/domain/successor-session-launcher.js +13 -0
  184. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  185. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts +27 -0
  186. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -0
  187. package/daemon/dist/domain/terminal/cmux-provider-adapter.js +67 -0
  188. package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -0
  189. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +77 -0
  190. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -0
  191. package/daemon/dist/domain/terminal/herdr-adapter.js +266 -0
  192. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -0
  193. package/daemon/dist/domain/terminal/herdr-transport.d.ts +50 -0
  194. package/daemon/dist/domain/terminal/herdr-transport.d.ts.map +1 -0
  195. package/daemon/dist/domain/terminal/herdr-transport.js +145 -0
  196. package/daemon/dist/domain/terminal/herdr-transport.js.map +1 -0
  197. package/daemon/dist/domain/terminal/terminal-provider.d.ts +88 -0
  198. package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -0
  199. package/daemon/dist/domain/terminal/terminal-provider.js +17 -0
  200. package/daemon/dist/domain/terminal/terminal-provider.js.map +1 -0
  201. package/daemon/dist/domain/terminal/terminal-service.d.ts +60 -0
  202. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -0
  203. package/daemon/dist/domain/terminal/terminal-service.js +174 -0
  204. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -0
  205. package/daemon/dist/domain/terminal/terminal-views-store.d.ts +77 -0
  206. package/daemon/dist/domain/terminal/terminal-views-store.d.ts.map +1 -0
  207. package/daemon/dist/domain/terminal/terminal-views-store.js +146 -0
  208. package/daemon/dist/domain/terminal/terminal-views-store.js.map +1 -0
  209. package/daemon/dist/domain/terminal/view-composer.d.ts +42 -0
  210. package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -0
  211. package/daemon/dist/domain/terminal/view-composer.js +137 -0
  212. package/daemon/dist/domain/terminal/view-composer.js.map +1 -0
  213. package/daemon/dist/domain/tmux-option-defaults.d.ts +89 -0
  214. package/daemon/dist/domain/tmux-option-defaults.d.ts.map +1 -0
  215. package/daemon/dist/domain/tmux-option-defaults.js +132 -0
  216. package/daemon/dist/domain/tmux-option-defaults.js.map +1 -0
  217. package/daemon/dist/domain/types.d.ts +34 -1
  218. package/daemon/dist/domain/types.d.ts.map +1 -1
  219. package/daemon/dist/domain/types.js.map +1 -1
  220. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  221. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  222. package/daemon/dist/domain/user-settings/settings-store.js +92 -0
  223. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  224. package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts.map +1 -1
  225. package/daemon/dist/domain/workflow/slice-workflow-projection.js +6 -2
  226. package/daemon/dist/domain/workflow/slice-workflow-projection.js.map +1 -1
  227. package/daemon/dist/domain/workflow-boot-sweep.d.ts +28 -0
  228. package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -0
  229. package/daemon/dist/domain/workflow-boot-sweep.js +102 -0
  230. package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -0
  231. package/daemon/dist/domain/workflow-deadline.d.ts +74 -0
  232. package/daemon/dist/domain/workflow-deadline.d.ts.map +1 -0
  233. package/daemon/dist/domain/workflow-deadline.js +165 -0
  234. package/daemon/dist/domain/workflow-deadline.js.map +1 -0
  235. package/daemon/dist/domain/workflow-exception-escalation.d.ts +33 -0
  236. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -0
  237. package/daemon/dist/domain/workflow-exception-escalation.js +104 -0
  238. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -0
  239. package/daemon/dist/domain/workflow-exception-router.d.ts +33 -0
  240. package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -0
  241. package/daemon/dist/domain/workflow-exception-router.js +96 -0
  242. package/daemon/dist/domain/workflow-exception-router.js.map +1 -0
  243. package/daemon/dist/domain/workflow-exception.d.ts +90 -0
  244. package/daemon/dist/domain/workflow-exception.d.ts.map +1 -0
  245. package/daemon/dist/domain/workflow-exception.js +122 -0
  246. package/daemon/dist/domain/workflow-exception.js.map +1 -0
  247. package/daemon/dist/domain/workflow-frontier-guard.d.ts +24 -0
  248. package/daemon/dist/domain/workflow-frontier-guard.d.ts.map +1 -0
  249. package/daemon/dist/domain/workflow-frontier-guard.js +30 -0
  250. package/daemon/dist/domain/workflow-frontier-guard.js.map +1 -0
  251. package/daemon/dist/domain/workflow-instance-store.d.ts +28 -0
  252. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  253. package/daemon/dist/domain/workflow-instance-store.js +66 -10
  254. package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  255. package/daemon/dist/domain/workflow-keepalive-arming.d.ts +35 -0
  256. package/daemon/dist/domain/workflow-keepalive-arming.d.ts.map +1 -0
  257. package/daemon/dist/domain/workflow-keepalive-arming.js +87 -0
  258. package/daemon/dist/domain/workflow-keepalive-arming.js.map +1 -0
  259. package/daemon/dist/domain/workflow-projector.d.ts +117 -2
  260. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  261. package/daemon/dist/domain/workflow-projector.js +672 -41
  262. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  263. package/daemon/dist/domain/workflow-role-context.d.ts +57 -0
  264. package/daemon/dist/domain/workflow-role-context.d.ts.map +1 -0
  265. package/daemon/dist/domain/workflow-role-context.js +120 -0
  266. package/daemon/dist/domain/workflow-role-context.js.map +1 -0
  267. package/daemon/dist/domain/workflow-role-resolver.d.ts +65 -0
  268. package/daemon/dist/domain/workflow-role-resolver.d.ts.map +1 -0
  269. package/daemon/dist/domain/workflow-role-resolver.js +108 -0
  270. package/daemon/dist/domain/workflow-role-resolver.js.map +1 -0
  271. package/daemon/dist/domain/workflow-runtime.d.ts +157 -1
  272. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  273. package/daemon/dist/domain/workflow-runtime.js +718 -11
  274. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  275. package/daemon/dist/domain/workflow-spec-cache.d.ts +26 -1
  276. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  277. package/daemon/dist/domain/workflow-spec-cache.js +327 -13
  278. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  279. package/daemon/dist/domain/workflow-types.d.ts +143 -8
  280. package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
  281. package/daemon/dist/domain/workflow-types.js +14 -1
  282. package/daemon/dist/domain/workflow-types.js.map +1 -1
  283. package/daemon/dist/domain/workflow-validator.d.ts +11 -1
  284. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  285. package/daemon/dist/domain/workflow-validator.js +246 -1
  286. package/daemon/dist/domain/workflow-validator.js.map +1 -1
  287. package/daemon/dist/index.d.ts +17 -0
  288. package/daemon/dist/index.d.ts.map +1 -1
  289. package/daemon/dist/index.js +44 -0
  290. package/daemon/dist/index.js.map +1 -1
  291. package/daemon/dist/routes/activity.js +22 -0
  292. package/daemon/dist/routes/activity.js.map +1 -1
  293. package/daemon/dist/routes/hosts.d.ts +5 -0
  294. package/daemon/dist/routes/hosts.d.ts.map +1 -0
  295. package/daemon/dist/routes/hosts.js +346 -0
  296. package/daemon/dist/routes/hosts.js.map +1 -0
  297. package/daemon/dist/routes/queue.d.ts +2 -7
  298. package/daemon/dist/routes/queue.d.ts.map +1 -1
  299. package/daemon/dist/routes/queue.js +264 -9
  300. package/daemon/dist/routes/queue.js.map +1 -1
  301. package/daemon/dist/routes/review.d.ts.map +1 -1
  302. package/daemon/dist/routes/review.js +26 -0
  303. package/daemon/dist/routes/review.js.map +1 -1
  304. package/daemon/dist/routes/seat.js +13 -0
  305. package/daemon/dist/routes/seat.js.map +1 -1
  306. package/daemon/dist/routes/terminal.d.ts +11 -0
  307. package/daemon/dist/routes/terminal.d.ts.map +1 -0
  308. package/daemon/dist/routes/terminal.js +104 -0
  309. package/daemon/dist/routes/terminal.js.map +1 -0
  310. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  311. package/daemon/dist/routes/workflow.js +102 -10
  312. package/daemon/dist/routes/workflow.js.map +1 -1
  313. package/daemon/dist/server.d.ts +5 -0
  314. package/daemon/dist/server.d.ts.map +1 -1
  315. package/daemon/dist/server.js +22 -0
  316. package/daemon/dist/server.js.map +1 -1
  317. package/daemon/dist/startup.d.ts.map +1 -1
  318. package/daemon/dist/startup.js +221 -12
  319. package/daemon/dist/startup.js.map +1 -1
  320. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +29 -0
  321. package/daemon/specs/agents/factory-rsi/dogfood/guidance/role.md +37 -0
  322. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +29 -0
  323. package/daemon/specs/agents/factory-rsi/release-manager/guidance/role.md +40 -0
  324. package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +6 -8
  325. package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +86 -0
  326. package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +158 -0
  327. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +6 -6
  328. package/daemon/specs/rigs/launch/factory-rsi/CULTURE.md +47 -0
  329. package/daemon/specs/rigs/launch/factory-rsi/rig.yaml +115 -0
  330. package/dist/build-info.js +3 -3
  331. package/dist/commands/broadcast.d.ts +6 -1
  332. package/dist/commands/broadcast.d.ts.map +1 -1
  333. package/dist/commands/broadcast.js +101 -15
  334. package/dist/commands/broadcast.js.map +1 -1
  335. package/dist/commands/capture.d.ts.map +1 -1
  336. package/dist/commands/capture.js +99 -8
  337. package/dist/commands/capture.js.map +1 -1
  338. package/dist/commands/config.d.ts.map +1 -1
  339. package/dist/commands/config.js +4 -0
  340. package/dist/commands/config.js.map +1 -1
  341. package/dist/commands/down.d.ts.map +1 -1
  342. package/dist/commands/down.js +5 -0
  343. package/dist/commands/down.js.map +1 -1
  344. package/dist/commands/host.d.ts +14 -0
  345. package/dist/commands/host.d.ts.map +1 -1
  346. package/dist/commands/host.js +338 -14
  347. package/dist/commands/host.js.map +1 -1
  348. package/dist/commands/launch.d.ts.map +1 -1
  349. package/dist/commands/launch.js +5 -0
  350. package/dist/commands/launch.js.map +1 -1
  351. package/dist/commands/ps.d.ts.map +1 -1
  352. package/dist/commands/ps.js +10 -4
  353. package/dist/commands/ps.js.map +1 -1
  354. package/dist/commands/queue.d.ts +36 -0
  355. package/dist/commands/queue.d.ts.map +1 -1
  356. package/dist/commands/queue.js +73 -7
  357. package/dist/commands/queue.js.map +1 -1
  358. package/dist/commands/restore-packet.d.ts.map +1 -1
  359. package/dist/commands/restore-packet.js +13 -2
  360. package/dist/commands/restore-packet.js.map +1 -1
  361. package/dist/commands/send.d.ts.map +1 -1
  362. package/dist/commands/send.js +114 -9
  363. package/dist/commands/send.js.map +1 -1
  364. package/dist/commands/terminal.d.ts +6 -0
  365. package/dist/commands/terminal.d.ts.map +1 -0
  366. package/dist/commands/terminal.js +116 -0
  367. package/dist/commands/terminal.js.map +1 -0
  368. package/dist/commands/transcript.d.ts +6 -1
  369. package/dist/commands/transcript.d.ts.map +1 -1
  370. package/dist/commands/transcript.js +113 -30
  371. package/dist/commands/transcript.js.map +1 -1
  372. package/dist/commands/up.d.ts.map +1 -1
  373. package/dist/commands/up.js +9 -0
  374. package/dist/commands/up.js.map +1 -1
  375. package/dist/commands/whoami.d.ts.map +1 -1
  376. package/dist/commands/whoami.js +11 -0
  377. package/dist/commands/whoami.js.map +1 -1
  378. package/dist/commands/workflow-errors.d.ts +23 -0
  379. package/dist/commands/workflow-errors.d.ts.map +1 -0
  380. package/dist/commands/workflow-errors.js +100 -0
  381. package/dist/commands/workflow-errors.js.map +1 -0
  382. package/dist/commands/workflow-follow.d.ts +71 -0
  383. package/dist/commands/workflow-follow.d.ts.map +1 -0
  384. package/dist/commands/workflow-follow.js +259 -0
  385. package/dist/commands/workflow-follow.js.map +1 -0
  386. package/dist/commands/workflow-render.d.ts +114 -0
  387. package/dist/commands/workflow-render.d.ts.map +1 -0
  388. package/dist/commands/workflow-render.js +223 -0
  389. package/dist/commands/workflow-render.js.map +1 -0
  390. package/dist/commands/workflow.d.ts +1 -0
  391. package/dist/commands/workflow.d.ts.map +1 -1
  392. package/dist/commands/workflow.js +278 -14
  393. package/dist/commands/workflow.js.map +1 -1
  394. package/dist/config-store.d.ts +15 -1
  395. package/dist/config-store.d.ts.map +1 -1
  396. package/dist/config-store.js +103 -0
  397. package/dist/config-store.js.map +1 -1
  398. package/dist/cross-host-cli-helpers.d.ts +13 -0
  399. package/dist/cross-host-cli-helpers.d.ts.map +1 -1
  400. package/dist/cross-host-cli-helpers.js +27 -0
  401. package/dist/cross-host-cli-helpers.js.map +1 -1
  402. package/dist/cross-host-target.d.ts +49 -0
  403. package/dist/cross-host-target.d.ts.map +1 -0
  404. package/dist/cross-host-target.js +35 -0
  405. package/dist/cross-host-target.js.map +1 -0
  406. package/dist/host-registry.d.ts +8 -0
  407. package/dist/host-registry.d.ts.map +1 -1
  408. package/dist/host-registry.js +32 -0
  409. package/dist/host-registry.js.map +1 -1
  410. package/dist/host-selection.d.ts +13 -0
  411. package/dist/host-selection.d.ts.map +1 -0
  412. package/dist/host-selection.js +54 -0
  413. package/dist/host-selection.js.map +1 -0
  414. package/dist/index.d.ts +2 -0
  415. package/dist/index.d.ts.map +1 -1
  416. package/dist/index.js +2 -0
  417. package/dist/index.js.map +1 -1
  418. package/dist/remote-host-ops.d.ts +1 -0
  419. package/dist/remote-host-ops.d.ts.map +1 -1
  420. package/dist/remote-host-ops.js +11 -4
  421. package/dist/remote-host-ops.js.map +1 -1
  422. package/dist/session-name.d.ts +23 -0
  423. package/dist/session-name.d.ts.map +1 -0
  424. package/dist/session-name.js +61 -0
  425. package/dist/session-name.js.map +1 -0
  426. package/package.json +1 -1
  427. package/ui/dist/assets/index-CFqxa0zW.css +32 -0
  428. package/ui/dist/assets/index-zrFqS7gL.js +623 -0
  429. package/ui/dist/index.html +2 -2
  430. package/ui/dist/assets/index-D69ZhNIr.js +0 -598
  431. package/ui/dist/assets/index-DJYun-8d.css +0 -32
@@ -0,0 +1,158 @@
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
+ distribution_scope: product-bound
14
+ source_evidence: |
15
+ Empirical herdr 0.7.1 hands-on findings + the ratified implementation PRD. Authored
16
+ clean-room (patterns only, no herdr source text; AGPL arm's-length).
17
+ transfer_test: pending
18
+ sibling_skills:
19
+ - openrig-cmux
20
+ - openrig-user
21
+ ---
22
+
23
+ # openrig-herdr
24
+
25
+ OpenRig decides **which** agents make up a view (a rig, a pod, a mission, a slice, or a saved
26
+ group); **herdr** renders the pixels. A view opens as live, interactive terminal tiles — each tile
27
+ is a nested `tmux attach` to a daemon-owned agent session, so you get the real session, not a
28
+ snapshot. OpenRig owns the semantics; herdr owns the surface. You drive it entirely through the
29
+ `rig terminal` CLI, which rides the installed herdr binary at arm's length — never link, embed, or
30
+ plugin it.
31
+
32
+ ## The whole surface — three verbs
33
+
34
+ ```bash
35
+ rig terminal open <view> [--provider herdr|cmux] [--json] # herdr is the default provider
36
+ rig terminal views [--json] # list openable views (saved + derived)
37
+ rig terminal status [--provider] [--json] # provider liveness / health
38
+ ```
39
+
40
+ `<view>` resolves, in order, to one of:
41
+ - a **rig name** — every live agent in that rig, auto-laid-out;
42
+ - **`pod:<rig>/<podNamespace>`** — every live agent in one pod of a rig (the rig's inventory filtered by pod);
43
+ - **`mission:<id>`** — the agents working that mission (derived live from topology);
44
+ - **`slice:<id>`** — the agents working that slice (derived live);
45
+ - a **saved-view name** — a user-defined group (see Saved views).
46
+
47
+ ## Compose a view from a sentence
48
+
49
+ An agent asked "open all my rigs plus a mission as views" runs one `open` per target:
50
+
51
+ ```bash
52
+ rig terminal open acme-web # a whole rig, live agents as tiles
53
+ rig terminal open mission:site-relaunch # exactly the agents working the mission
54
+ rig terminal open slice:02-search-filters # the agents working one slice
55
+ ```
56
+
57
+ No hand-listing of seats: the mission/slice membership is derived from live topology at open time.
58
+
59
+ ## Read the result honestly — partial and degrade
60
+
61
+ The result is a partition — every seat lands in exactly one bucket, each **named**:
62
+
63
+ - **opened** — the live agents now showing as tiles.
64
+ - **absent** — seats in the view that aren't currently live: **named and skipped, never silently
65
+ dropped.** A view that opens *some* of its seats is a success (the partial is disclosed) and exits
66
+ **0**. Only a view where **no** pane opens exits **non-zero**.
67
+ - **degraded** — an agent that structurally cannot tile, named **with the reason**. The v1 case:
68
+ an agent on a host registered over HTTP has no ssh path, so its tile can't be composed — it reads
69
+ as **"host `<id>` is http-registered; tiles need ssh"** and is skipped, never dropped. (ssh-reachable
70
+ hosts tile via an ssh-wrapped attach; full http-host tiling is deferred to the cross-host transport
71
+ seam.)
72
+
73
+ Read `--json` to branch on the partition programmatically; the exit code alone tells you opened-something
74
+ (0) vs opened-nothing (non-zero).
75
+
76
+ ## Read-only — who's interactive, who's watch-only
77
+
78
+ Read-only is composed into the pane at open time — a read-only tile is a `tmux attach -r`, the client
79
+ reports `readonly=1`, and it **physically cannot send input**. The current policy, by view kind:
80
+
81
+ - **A rig view or a `pod:` view is interactive** — you asked for that rig (or pod) directly, so you
82
+ can drive its agents.
83
+ - **`mission:` and `slice:` views are read-only by construction** — these derived views cut across
84
+ rigs; you watch and scroll, you don't keystroke into them.
85
+ - **A saved view is per-member** — each member carries its own `readOnly` (omit = interactive;
86
+ `true` = `attach -r`).
87
+
88
+ So you don't have to remember to be careful: the view kind (and, for a saved view, the per-member
89
+ flag) sets it at open time.
90
+
91
+ ## Safety rails (hard — the fleet-safety rail)
92
+
93
+ - A tile is a **view** (a nested `tmux attach`) of a daemon-owned session. **Never** move, join, kill,
94
+ or re-parent a daemon-owned pane. Closing a tile detaches one tmux client — the daemon's session is
95
+ untouched and its addressing (send/capture/nudge) is unaffected.
96
+ - Host-local read-only viewing mutates nothing. Anything that would change a **live** daemon session's
97
+ shared state (e.g. flipping a tmux option on a running seat) is a config/design change — prove it in
98
+ an isolated environment, never live-flip in production.
99
+
100
+ ## Scroll + copy work out of the box
101
+
102
+ On a freshly-launched agent tile the mouse wheel scrolls the pane's history and a drag-select copies
103
+ to your **system** clipboard — with no tmux commands typed. This rides the daemon's terminal defaults
104
+ (a per-session scroll option set at launch, plus the daemon tmux server's clipboard defaults). Honest
105
+ timing: agents that were already running before this shipped pick up wheel-scroll at their **next
106
+ natural relaunch** (the scroll default is per-session and running seats are never retro-flipped);
107
+ system-clipboard copy works immediately (it's server-wide).
108
+
109
+ ## Limits — state them, don't paper over them
110
+
111
+ - **Tile chrome v1 = a plain label** (agent + slice). Rich per-tile status is roadmap.
112
+ - **Duplicate / multi-view membership** (the same agent live in two views at once) works — put the
113
+ duplicates in **same-size panes**. Different-sized duplicate panes have an inherent tmux
114
+ multi-client resize mismatch (tmux clamps to the smallest client); it is **documented, not fixed** —
115
+ don't expect a setting to remove it.
116
+ - **Inner tmux status bar** is hidden by default (herdr provides the chrome); one config key
117
+ (`terminal.status_bar`) flips it back on for raw-tmux / no-provider surfaces, and the flip applies
118
+ to **future launches only**.
119
+
120
+ ## Saved views — the library (`terminal-views.yaml`)
121
+
122
+ In v1 you **create** a saved view by **hand-authoring** `terminal-views.yaml` — there is no save/write
123
+ verb (`open` / `views` / `status` are the whole surface; a `rig terminal save <id>` verb is a named
124
+ stretch/follow-up). You **reopen** it like any other view: `rig terminal open <id>`.
125
+
126
+ The file lives at the OpenRig home root (resolved via `getDefaultOpenRigPath()`), is written
127
+ atomically (tmp + rename), and is byte-stable. **Only hand-authored saved views live here — derived
128
+ views (a rig, `pod:<rig>/<pod>`, `mission:<id>`, `slice:<id>`) are computed live and never written to
129
+ this file.**
130
+
131
+ Schema — use these field names **exactly**, in this order; **omit** optional fields when absent
132
+ (never write `null`):
133
+
134
+ ```yaml
135
+ version: 1
136
+ views:
137
+ - id: my-view-id # required — the id `rig terminal open <id>` takes
138
+ name: Human Name # required
139
+ members:
140
+ - seat: pod-member@rig # required — the canonical session name
141
+ label: agent . slice # optional — pane label
142
+ host: some-host-id # optional — STRUCTURED host id (NEVER a `member@rig@host` string);
143
+ # omit for local. ssh-registered hosts tile;
144
+ # http-registered hosts honest-degrade (named + skipped, with reason)
145
+ tmuxSession: sessname # optional — defaults to `seat`
146
+ readOnly: true # optional — omit = interactive; true = `tmux attach -r`
147
+ ```
148
+
149
+ An agent composing a saved view on request **writes this YAML** and then opens the id:
150
+ `rig terminal open my-view-id` (add `--provider cmux` for cmux). The library is provider-agnostic —
151
+ the same saved view opens in herdr or cmux.
152
+
153
+ ## AGPL / clean-room
154
+
155
+ Driving herdr through the `rig terminal` CLI (which talks to the installed herdr binary over its
156
+ CLI/socket) is arm's-length and fine. Do **not** link herdr's source, embed it in-process, or ship a
157
+ herdr plugin — a plugin needs legal review. This skill and its docs are clean-room: patterns only,
158
+ never herdr source text.
@@ -28,7 +28,7 @@ the receipt and move on.
28
28
  Example:
29
29
 
30
30
  ```bash
31
- rig send velocity-guard@openrig-velocity "Heads up — filing per-commit handoff on slice-22 Bug 1 BONUS at tip 6b8673b6." --verify
31
+ rig send reviewer@acme-web "Heads up — filing the per-commit handoff on the search-filters slice at the current tip." --verify
32
32
  ```
33
33
 
34
34
  ### `rig queue create --source <X> --destination <Y> --tags <...> --body "<...>"` — durable work item
@@ -47,9 +47,9 @@ Example:
47
47
 
48
48
  ```bash
49
49
  rig queue create \
50
- --source redo-driver-2@openrig-velocity \
51
- --destination redo-guard-2@openrig-velocity \
52
- --tags "mission:release-0.3.2,slice:22-rig-up-paper-cut-fix-round,gate:guard,handoff:per-commit,checkpoint:bug-1-bonus" \
50
+ --source builder@acme-web \
51
+ --destination reviewer@acme-web \
52
+ --tags "mission:site-relaunch,slice:02-search-filters,gate:guard,handoff:per-commit,checkpoint:bug-1" \
53
53
  --body "$(cat /tmp/per-commit-body.txt)"
54
54
  ```
55
55
 
@@ -64,8 +64,8 @@ Example:
64
64
 
65
65
  ```bash
66
66
  rig queue handoff qitem-20260601012431-d78aa805 \
67
- --to velocity-qa@openrig-velocity \
68
- --tags "mission:release-0.3.2,slice:22-rig-up-paper-cut-fix-round,gate:qa,handoff:adversarial-dogfood"
67
+ --to qa@acme-web \
68
+ --tags "mission:site-relaunch,slice:02-search-filters,gate:qa,handoff:adversarial-dogfood"
69
69
  ```
70
70
 
71
71
  ### §1b doctrine — turn ends by passing the ball
@@ -0,0 +1,47 @@
1
+ # factory-rsi — the single-rig RSI factory MVP
2
+
3
+ This rig IS a recursive-self-improvement loop. One workflow (`factory-rsi`)
4
+ moves one slice through the inner loop **plan → implement → check → review →
5
+ release**. Dogfood is decoupled from that gated loop: it continuously uses the
6
+ **shipped** product out-of-band and feeds its findings into the **next** plan
7
+ cycle. That feedback edge is the whole point — and it needs no human in the loop.
8
+
9
+ ## How the loop runs
10
+
11
+ - The **engine routes the inner loop**, not the orchestrator. A failing check or
12
+ review routes back to build for bounded remediation; a clean review proceeds
13
+ to release prep. Nobody hand-relays a packet around the loop.
14
+ - **Dogfood is out-of-band.** It runs continuously against the SHIPPED product —
15
+ not a second QA on the pre-release build artifact — and records findings that
16
+ become the next plan's input. The RSI recursion stays ungated: dogfood findings
17
+ feed the next plan with no human gate (a human MAY steer via the roadmap but is
18
+ never required; there is no loop-stop in the MVP).
19
+ - **Findings are recorded state, not memory.** The next plan builds from the
20
+ recorded dogfood findings — never a seat's chat history.
21
+ - **Exceptions go orchestrator-first** (the WF-5 dial); the human knows at
22
+ altitude. A `max_hops` trip is an exception, and a resume grants exactly one
23
+ more bounded window — the loop never runs away.
24
+ - **Publishing is a human act.** The release seat PREPARES notes/docs/PR and
25
+ holds the ship decision at a human gate. No seat pushes, tags, or publishes.
26
+
27
+ ## The seats
28
+
29
+ | Seat | Runtime | Does |
30
+ |---|---|---|
31
+ | `plan-planner` | claude-code | turns the corpus / previous findings into ONE buildable slice spec |
32
+ | `build-implementer` | claude-code | builds the slice, produces proof |
33
+ | `check-qa` | codex | checks the artifact; a failing check loops back to build |
34
+ | `review-reviewer` | codex | reviews (cross-runtime vs the builder) |
35
+ | `dogfood-tester` | codex | continuously USES the shipped product out-of-band; records findings that feed the next plan |
36
+ | `release-manager` | claude-code | prepares the release, holds the human gate |
37
+ | `orch-lead` | claude-code | the exception dial target — exceptions only |
38
+
39
+ Seats inherit their runtime's default model (no per-seat model pin): plan,
40
+ build, release, and orchestration run on claude-code; check, review, and dogfood
41
+ run on codex for cross-runtime diversity against the builder.
42
+
43
+ ## Deployment
44
+
45
+ As a shipped starter this rig is workspace-agnostic — point
46
+ `rig up factory-rsi --cwd <repo>` at whatever real repository the loop should
47
+ improve, and the planner's product-intent corpus is that repo's real specs.
@@ -0,0 +1,115 @@
1
+ version: "0.2"
2
+ name: factory-rsi
3
+ culture_file: CULTURE.md
4
+ summary: >
5
+ The single-rig RSI factory MVP (OPR.0.4.6.FAC2): ONE rig whose seats map 1:1
6
+ to the `factory-rsi` workflow — the inner loop plans, builds, checks, and
7
+ reviews one slice, then prepares its release. Dogfood is decoupled: it
8
+ continuously uses the SHIPPED product out-of-band and feeds findings back into
9
+ the next plan — the recursive-self-improvement edge, with no human required in
10
+ the loop. Run it with `rig up factory-rsi`, then instantiate the `factory-rsi`
11
+ workflow and watch the loop close. Seats inherit their runtime's default
12
+ model; qa, review, and dogfood run on the alternate runtime for cross-runtime
13
+ diversity against the builder.
14
+
15
+ # Seven pods, one member each, so every canonical session name is
16
+ # `<pod>-<member>@factory-rsi` and matches the workflow's preferred_targets 1:1.
17
+ pods:
18
+ - id: plan
19
+ label: Planning
20
+ members:
21
+ - id: planner
22
+ agent_ref: "local:../../../agents/conveyor/planner"
23
+ runtime: claude-code
24
+ profile: default
25
+ cwd: "."
26
+ edges: []
27
+
28
+ - id: build
29
+ label: Build
30
+ members:
31
+ - id: implementer
32
+ agent_ref: "local:../../../agents/development/implementer"
33
+ runtime: claude-code
34
+ profile: default
35
+ cwd: "."
36
+ edges: []
37
+
38
+ - id: check
39
+ label: Check
40
+ members:
41
+ - id: qa
42
+ agent_ref: "local:../../../agents/development/qa"
43
+ runtime: codex
44
+ profile: default
45
+ cwd: "."
46
+ edges: []
47
+
48
+ - id: review
49
+ label: Review
50
+ members:
51
+ - id: reviewer
52
+ agent_ref: "local:../../../agents/review/independent-reviewer"
53
+ runtime: codex
54
+ profile: default
55
+ cwd: "."
56
+ edges: []
57
+
58
+ - id: dogfood
59
+ label: Dogfood
60
+ members:
61
+ - id: tester
62
+ agent_ref: "local:../../../agents/factory-rsi/dogfood"
63
+ runtime: codex
64
+ profile: default
65
+ cwd: "."
66
+ edges: []
67
+
68
+ - id: release
69
+ label: Release
70
+ members:
71
+ - id: manager
72
+ agent_ref: "local:../../../agents/factory-rsi/release-manager"
73
+ runtime: claude-code
74
+ profile: default
75
+ cwd: "."
76
+ edges: []
77
+
78
+ - id: orch
79
+ label: Orchestration
80
+ members:
81
+ - id: lead
82
+ agent_ref: "local:../../../agents/orchestration/orchestrator"
83
+ runtime: claude-code
84
+ profile: default
85
+ cwd: "."
86
+ edges: []
87
+
88
+ # The orchestrator delegates across the pipeline; review and check can observe
89
+ # the build. Workflow ROUTING is the `factory-rsi` spec's job (the engine
90
+ # routes the loop-close); these edges are topology hints, not the routing.
91
+ edges:
92
+ - kind: delegates_to
93
+ from: orch.lead
94
+ to: plan.planner
95
+ - kind: delegates_to
96
+ from: orch.lead
97
+ to: build.implementer
98
+ - kind: delegates_to
99
+ from: orch.lead
100
+ to: check.qa
101
+ - kind: delegates_to
102
+ from: orch.lead
103
+ to: review.reviewer
104
+ - kind: delegates_to
105
+ from: orch.lead
106
+ to: dogfood.tester
107
+ - kind: delegates_to
108
+ from: orch.lead
109
+ to: release.manager
110
+ - kind: can_observe
111
+ from: check.qa
112
+ to: build.implementer
113
+ - kind: can_observe
114
+ from: review.reviewer
115
+ to: build.implementer
@@ -1,9 +1,9 @@
1
1
  // GENERATED by scripts/build-package.sh — the packaged build-identity stamp.
2
2
  export const BUILD_INFO = {
3
- semver: "0.4.4",
4
- commit: "ac75777a3cad318592dae9d616a09d824f1398e5",
3
+ semver: "0.4.6",
4
+ commit: "8250d702a27aa24bb9acf0b4bef12f58fd83df12",
5
5
  dirty: false,
6
- builtAt: "2026-07-06T08:21:05Z",
6
+ builtAt: "2026-07-09T22:59:04Z",
7
7
  };
8
8
  export function stampFields(info = BUILD_INFO) {
9
9
  if (!info.commit) return {};
@@ -1,4 +1,9 @@
1
1
  import { Command } from "commander";
2
2
  import type { StatusDeps } from "./status.js";
3
- export declare function broadcastCommand(depsOverride?: StatusDeps): Command;
3
+ import { loadHostRegistry } from "../host-registry.js";
4
+ export interface BroadcastDeps extends StatusDeps {
5
+ /** Test seam: inject a registry loader so no real ~/.openrig is touched. */
6
+ hostRegistryLoader?: () => ReturnType<typeof loadHostRegistry>;
7
+ }
8
+ export declare function broadcastCommand(depsOverride?: BroadcastDeps): Command;
4
9
  //# sourceMappingURL=broadcast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/commands/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,wBAAgB,gBAAgB,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAsEnE"}
1
+ {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/commands/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAkC,MAAM,qBAAqB,CAAC;AAYvF,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,MAAM,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;CAChE;AAED,wBAAgB,gBAAgB,CAAC,YAAY,CAAC,EAAE,aAAa,GAAG,OAAO,CAiFtE"}
@@ -1,7 +1,18 @@
1
1
  import { Command } from "commander";
2
+ import { resolveEffectiveHost } from "../host-selection.js";
2
3
  import { DaemonClient } from "../client.js";
3
4
  import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
4
5
  import { realDeps } from "./daemon.js";
6
+ import { loadHostRegistry, resolveHost, hostDisplayTarget } from "../host-registry.js";
7
+ import { emitCrossHostError, emitRemoteHttpFailure } from "../cross-host-cli-helpers.js";
8
+ import { runRemoteHttpOp } from "../remote-host-ops.js";
9
+ /**
10
+ * OPR.0.4.6.MH4 C3 — the cross-host broadcast deadline, named at the call
11
+ * site (arch delivery-lane note (a)): the remote route responds only after
12
+ * the ORIGIN daemon's per-target fan-out loop completes, so a many-seat rig
13
+ * needs more than the 5s read-class default.
14
+ */
15
+ const BROADCAST_REMOTE_TIMEOUT_MS = 30_000;
5
16
  export function broadcastCommand(depsOverride) {
6
17
  const cmd = new Command("broadcast").description("Send a message to multiple agent sessions");
7
18
  const getDeps = () => depsOverride ?? {
@@ -13,6 +24,7 @@ export function broadcastCommand(depsOverride) {
13
24
  .option("--rig <name>", "Broadcast to all sessions in a rig")
14
25
  .option("--pod <name>", "Broadcast to all sessions in a pod")
15
26
  .option("--force", "Send even if targets appear mid-task")
27
+ .option("--host <id>", "Broadcast on a remote host declared in ~/.openrig/hosts.yaml (http hosts only — CLI-direct to the remote daemon's fan-out)")
16
28
  .option("--json", "JSON output for agents")
17
29
  .addHelpText("after", `
18
30
  Examples:
@@ -20,11 +32,32 @@ Examples:
20
32
  rig broadcast --pod dev "New task spec at docs/planning/next-task.md"
21
33
  rig broadcast "System maintenance in 5 minutes."
22
34
  rig broadcast --rig my-rig "message" --json
35
+ rig broadcast --host vps-b --rig remote-rig "coordinate the remote factory"
23
36
 
24
37
  Without --rig or --pod, broadcasts to ALL running tmux sessions plus any attached external_cli nodes across all rigs.
25
- Unsupported external_cli targets are returned as explicit per-target failures in the result.`)
38
+ Unsupported external_cli targets are returned as explicit per-target failures in the result.
39
+
40
+ --host broadcasts on a remote host declared in ~/.openrig/hosts.yaml,
41
+ CLI-direct against that daemon's shipped broadcast fan-out (http-registered
42
+ hosts, e.g. pair-registered; an ssh-registered host fails with the structured
43
+ transport-requirement error). The REMOTE daemon resolves --rig/--pod on ITS
44
+ topology and its per-target results print verbatim — a partial fan-out exits
45
+ non-zero exactly as a local one does. The positional is message text (never
46
+ parsed as a target), so broadcast takes --host or the persisted host
47
+ selection, not the agent@rig@host sugar.`)
26
48
  .action(async (text, opts) => {
49
+ // OPR.0.4.6.MH4 C3 — explicit --host > persisted selection. Broadcast
50
+ // has NO session-target operand (the positional is message text, which
51
+ // must never be sugar-parsed), so the §4 sugar does not apply here.
52
+ opts.host = resolveEffectiveHost(opts.host);
27
53
  const deps = getDeps();
54
+ // --- Cross-host path (CLI-direct POST to the remote daemon's shipped
55
+ // /api/transport/broadcast; its own fan-out engine resolves the
56
+ // TargetSpec on ITS topology; daemon untouched). ---
57
+ if (opts.host) {
58
+ await runCrossHostBroadcast(opts.host, text, opts, deps);
59
+ return;
60
+ }
28
61
  const status = await getDaemonStatus(deps.lifecycleDeps);
29
62
  if (status.state !== "running" || status.healthy === false) {
30
63
  console.error("Daemon not running. Start it with: rig daemon start");
@@ -51,21 +84,74 @@ Unsupported external_cli targets are returned as explicit per-target failures in
51
84
  process.exitCode = 1;
52
85
  return;
53
86
  }
54
- const data = res.data;
55
- const results = data["results"] ?? [];
56
- for (const r of results) {
57
- if (r.ok) {
58
- console.log(`${r.sessionName}: sent`);
59
- }
60
- else {
61
- console.log(`${r.sessionName}: FAILED — ${r.error ?? "unknown error"}`);
62
- }
63
- }
64
- console.log(`${data["sent"]}/${data["total"]} delivered`);
65
- if (data["failed"] > 0 || results.some((r) => !r.ok)) {
66
- process.exitCode = 1;
67
- }
87
+ renderBroadcastResults(res.data);
68
88
  });
69
89
  return cmd;
70
90
  }
91
+ /**
92
+ * OPR.0.4.6.MH4 C3 — cross-host broadcast over http, CLI-DIRECT to the
93
+ * remote daemon's shipped POST /api/transport/broadcast (zero daemon-side
94
+ * changes). The body is the LOCAL shape verbatim ({text, force, rig?,
95
+ * pod?}); the ORIGIN daemon's own fan-out engine resolves the TargetSpec on
96
+ * ITS topology and returns per-target results, printed VERBATIM — per-target
97
+ * honesty is passthrough, never summarized; a partial fan-out exits non-zero
98
+ * exactly as the local path does. Deadline: BROADCAST_REMOTE_TIMEOUT_MS
99
+ * (named — a full fan-out outlives the read-class default).
100
+ */
101
+ async function runCrossHostBroadcast(hostId, text, opts, deps) {
102
+ const loader = deps.hostRegistryLoader ?? loadHostRegistry;
103
+ const registry = loader();
104
+ if (!registry.ok) {
105
+ emitCrossHostError(hostId, "registry-load-failed", registry.error, opts.json);
106
+ return;
107
+ }
108
+ const resolved = resolveHost(registry.registry, hostId);
109
+ if (!resolved.ok) {
110
+ emitCrossHostError(hostId, "unknown-host", resolved.error, opts.json);
111
+ return;
112
+ }
113
+ const host = resolved.host;
114
+ const body = { text, force: opts.force };
115
+ if (opts.rig)
116
+ body.rig = opts.rig;
117
+ if (opts.pod)
118
+ body.pod = opts.pod;
119
+ const result = await runRemoteHttpOp(hostId, "POST", "/api/transport/broadcast", body, deps, {
120
+ timeoutMs: BROADCAST_REMOTE_TIMEOUT_MS,
121
+ });
122
+ if (opts.json) {
123
+ console.log(JSON.stringify({
124
+ cross_host: { host: host.id, target: hostDisplayTarget(host), transport: "http" },
125
+ result,
126
+ }));
127
+ const results = result.data?.["results"] ?? [];
128
+ if (!result.ok || results.some((r) => !r.ok))
129
+ process.exitCode = 1;
130
+ return;
131
+ }
132
+ if (!result.ok) {
133
+ emitRemoteHttpFailure(host.id, hostDisplayTarget(host), result, false);
134
+ return;
135
+ }
136
+ console.log(`[via host=${host.id} (${hostDisplayTarget(host)})]`);
137
+ renderBroadcastResults((result.data ?? {}));
138
+ }
139
+ /** One renderer, two callers — the remote route returns the same shape the
140
+ * local route does, so per-target honesty prints identically. A partial
141
+ * fan-out sets a non-zero exit either way. */
142
+ function renderBroadcastResults(data) {
143
+ const results = data["results"] ?? [];
144
+ for (const r of results) {
145
+ if (r.ok) {
146
+ console.log(`${r.sessionName}: sent`);
147
+ }
148
+ else {
149
+ console.log(`${r.sessionName}: FAILED — ${r.error ?? "unknown error"}`);
150
+ }
151
+ }
152
+ console.log(`${data["sent"]}/${data["total"]} delivered`);
153
+ if (data["failed"] > 0 || results.some((r) => !r.ok)) {
154
+ process.exitCode = 1;
155
+ }
156
+ }
71
157
  //# sourceMappingURL=broadcast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../../src/commands/broadcast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../../src/commands/broadcast.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAkC,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAG9F,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,kBAAkB,CAAC,EAAE,MAAM,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAC/C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE,uBAAuB,KAC3B,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAC7C;AAED,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CA0FlE"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAsD,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAK9F,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,kBAAkB,CAAC,EAAE,MAAM,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAC/C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE,uBAAuB,KAC3B,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAC7C;AAED,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAsHlE"}