@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.
Files changed (678) hide show
  1. package/daemon/assets/guidance/CULTURE-default.md +19 -0
  2. package/daemon/assets/guidance/openrig-start.md +20 -5
  3. package/daemon/assets/plugins/openrig-core/README.md +1 -1
  4. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +9 -6
  5. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +11 -72
  6. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +34 -22
  7. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +108 -0
  8. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +11 -16
  9. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +95 -0
  10. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +819 -101
  11. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +26 -9
  12. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +11 -9
  13. package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +162 -0
  14. package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +165 -0
  15. package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -1
  16. package/daemon/dist/adapters/cmux-transport.js +8 -1
  17. package/daemon/dist/adapters/cmux-transport.js.map +1 -1
  18. package/daemon/dist/adapters/cmux.d.ts +9 -0
  19. package/daemon/dist/adapters/cmux.d.ts.map +1 -1
  20. package/daemon/dist/adapters/cmux.js +21 -0
  21. package/daemon/dist/adapters/cmux.js.map +1 -1
  22. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +3 -0
  23. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  24. package/daemon/dist/adapters/codex-runtime-adapter.js +32 -12
  25. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  26. package/daemon/dist/adapters/pi-resume.d.ts +32 -0
  27. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -0
  28. package/daemon/dist/adapters/pi-resume.js +125 -0
  29. package/daemon/dist/adapters/pi-resume.js.map +1 -0
  30. package/daemon/dist/adapters/pi-runner-protocol.d.ts +88 -0
  31. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -0
  32. package/daemon/dist/adapters/pi-runner-protocol.js +153 -0
  33. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -0
  34. package/daemon/dist/adapters/pi-runner.d.ts +99 -0
  35. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -0
  36. package/daemon/dist/adapters/pi-runner.js +519 -0
  37. package/daemon/dist/adapters/pi-runner.js.map +1 -0
  38. package/daemon/dist/adapters/pi-runtime-adapter.d.ts +61 -0
  39. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -0
  40. package/daemon/dist/adapters/pi-runtime-adapter.js +356 -0
  41. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -0
  42. package/daemon/dist/adapters/tmux.d.ts +22 -1
  43. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  44. package/daemon/dist/adapters/tmux.js +40 -1
  45. package/daemon/dist/adapters/tmux.js.map +1 -1
  46. package/daemon/dist/build-info.js +3 -3
  47. package/daemon/dist/builtins/workflow-specs/branched-remediation.yaml +31 -0
  48. package/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +152 -0
  49. package/daemon/dist/builtins/workflow-specs/gated-release.yaml +26 -0
  50. package/daemon/dist/builtins/workflow-specs/linear-build.yaml +21 -0
  51. package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts +20 -0
  52. package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts.map +1 -0
  53. package/daemon/dist/db/migrations/049_workflow_instance_version.js +24 -0
  54. package/daemon/dist/db/migrations/049_workflow_instance_version.js.map +1 -0
  55. package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts +22 -0
  56. package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts.map +1 -0
  57. package/daemon/dist/db/migrations/050_workflow_spec_json.js +26 -0
  58. package/daemon/dist/db/migrations/050_workflow_spec_json.js.map +1 -0
  59. package/daemon/dist/db/migrations/051_workflow_resume.d.ts +22 -0
  60. package/daemon/dist/db/migrations/051_workflow_resume.d.ts.map +1 -0
  61. package/daemon/dist/db/migrations/051_workflow_resume.js +27 -0
  62. package/daemon/dist/db/migrations/051_workflow_resume.js.map +1 -0
  63. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts +26 -0
  64. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts.map +1 -0
  65. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js +30 -0
  66. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js.map +1 -0
  67. package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts +48 -0
  68. package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts.map +1 -0
  69. package/daemon/dist/db/migrations/053_sessions_node_id_index.js +53 -0
  70. package/daemon/dist/db/migrations/053_sessions_node_id_index.js.map +1 -0
  71. package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts +34 -0
  72. package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts.map +1 -0
  73. package/daemon/dist/db/migrations/054_queue_transitions_archive.js +49 -0
  74. package/daemon/dist/db/migrations/054_queue_transitions_archive.js.map +1 -0
  75. package/daemon/dist/domain/claim-service.d.ts +11 -0
  76. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  77. package/daemon/dist/domain/claim-service.js +3 -1
  78. package/daemon/dist/domain/claim-service.js.map +1 -1
  79. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +3 -0
  80. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  81. package/daemon/dist/domain/claude-compaction-enforcer.js +19 -3
  82. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  83. package/daemon/dist/domain/cmux-layout-service.d.ts +36 -0
  84. package/daemon/dist/domain/cmux-layout-service.d.ts.map +1 -1
  85. package/daemon/dist/domain/cmux-layout-service.js +100 -28
  86. package/daemon/dist/domain/cmux-layout-service.js.map +1 -1
  87. package/daemon/dist/domain/context-monitor.d.ts +2 -0
  88. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  89. package/daemon/dist/domain/context-monitor.js +14 -0
  90. package/daemon/dist/domain/context-monitor.js.map +1 -1
  91. package/daemon/dist/domain/discovery-types.d.ts +1 -1
  92. package/daemon/dist/domain/discovery-types.d.ts.map +1 -1
  93. package/daemon/dist/domain/feed/attention-aggregator.js +1 -1
  94. package/daemon/dist/domain/feed/attention-aggregator.js.map +1 -1
  95. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +1 -0
  96. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
  97. package/daemon/dist/domain/hosts/hosts-registry-reader.js +31 -10
  98. package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
  99. package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts +11 -0
  100. package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts.map +1 -0
  101. package/daemon/dist/domain/hosts/hosts-registry-writer.js +55 -0
  102. package/daemon/dist/domain/hosts/hosts-registry-writer.js.map +1 -0
  103. package/daemon/dist/domain/hosts/read-through.d.ts +28 -0
  104. package/daemon/dist/domain/hosts/read-through.d.ts.map +1 -0
  105. package/daemon/dist/domain/hosts/read-through.js +139 -0
  106. package/daemon/dist/domain/hosts/read-through.js.map +1 -0
  107. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts +21 -0
  108. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -1
  109. package/daemon/dist/domain/hosts/remote-daemon-http.js +56 -4
  110. package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -1
  111. package/daemon/dist/domain/node-inventory.d.ts +10 -1
  112. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  113. package/daemon/dist/domain/node-inventory.js +250 -97
  114. package/daemon/dist/domain/node-inventory.js.map +1 -1
  115. package/daemon/dist/domain/node-launcher.d.ts +11 -0
  116. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  117. package/daemon/dist/domain/node-launcher.js +10 -0
  118. package/daemon/dist/domain/node-launcher.js.map +1 -1
  119. package/daemon/dist/domain/plugin-vendor-service.d.ts +2 -0
  120. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  121. package/daemon/dist/domain/plugin-vendor-service.js +23 -0
  122. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  123. package/daemon/dist/domain/policies/workflow-keepalive.d.ts +7 -0
  124. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  125. package/daemon/dist/domain/policies/workflow-keepalive.js +93 -13
  126. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  127. package/daemon/dist/domain/projection-lane.d.ts +7 -0
  128. package/daemon/dist/domain/projection-lane.d.ts.map +1 -0
  129. package/daemon/dist/domain/projection-lane.js +28 -0
  130. package/daemon/dist/domain/projection-lane.js.map +1 -0
  131. package/daemon/dist/domain/ps-projection.d.ts +19 -0
  132. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  133. package/daemon/dist/domain/ps-projection.js +81 -30
  134. package/daemon/dist/domain/ps-projection.js.map +1 -1
  135. package/daemon/dist/domain/queue-repository.d.ts +116 -7
  136. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  137. package/daemon/dist/domain/queue-repository.js +226 -16
  138. package/daemon/dist/domain/queue-repository.js.map +1 -1
  139. package/daemon/dist/domain/queue-retention.d.ts +130 -0
  140. package/daemon/dist/domain/queue-retention.d.ts.map +1 -0
  141. package/daemon/dist/domain/queue-retention.js +224 -0
  142. package/daemon/dist/domain/queue-retention.js.map +1 -0
  143. package/daemon/dist/domain/restore-orchestrator.d.ts +5 -0
  144. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  145. package/daemon/dist/domain/restore-orchestrator.js +29 -2
  146. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  147. package/daemon/dist/domain/resume-token-capture.d.ts +13 -0
  148. package/daemon/dist/domain/resume-token-capture.d.ts.map +1 -1
  149. package/daemon/dist/domain/resume-token-capture.js +14 -1
  150. package/daemon/dist/domain/resume-token-capture.js.map +1 -1
  151. package/daemon/dist/domain/resume-token-validation.d.ts +1 -1
  152. package/daemon/dist/domain/resume-token-validation.d.ts.map +1 -1
  153. package/daemon/dist/domain/resume-token-validation.js +58 -10
  154. package/daemon/dist/domain/resume-token-validation.js.map +1 -1
  155. package/daemon/dist/domain/review/compose.d.ts +127 -5
  156. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  157. package/daemon/dist/domain/review/compose.js +244 -19
  158. package/daemon/dist/domain/review/compose.js.map +1 -1
  159. package/daemon/dist/domain/review/fleet-compose.d.ts +52 -0
  160. package/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -0
  161. package/daemon/dist/domain/review/fleet-compose.js +294 -0
  162. package/daemon/dist/domain/review/fleet-compose.js.map +1 -0
  163. package/daemon/dist/domain/review/gather.d.ts +17 -2
  164. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  165. package/daemon/dist/domain/review/gather.js +269 -108
  166. package/daemon/dist/domain/review/gather.js.map +1 -1
  167. package/daemon/dist/domain/review/proof-io.d.ts +2 -0
  168. package/daemon/dist/domain/review/proof-io.d.ts.map +1 -0
  169. package/daemon/dist/domain/review/proof-io.js +38 -0
  170. package/daemon/dist/domain/review/proof-io.js.map +1 -0
  171. package/daemon/dist/domain/review/types.d.ts +104 -1
  172. package/daemon/dist/domain/review/types.d.ts.map +1 -1
  173. package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  174. package/daemon/dist/domain/rig-expansion-service.js +3 -0
  175. package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  176. package/daemon/dist/domain/rig-repository.d.ts +7 -6
  177. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  178. package/daemon/dist/domain/rig-repository.js +33 -11
  179. package/daemon/dist/domain/rig-repository.js.map +1 -1
  180. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  181. package/daemon/dist/domain/rigspec-codec.js +3 -0
  182. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  183. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  184. package/daemon/dist/domain/rigspec-exporter.js +4 -0
  185. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  186. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  187. package/daemon/dist/domain/rigspec-instantiator.js +26 -2
  188. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  189. package/daemon/dist/domain/rigspec-preflight.d.ts +6 -0
  190. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  191. package/daemon/dist/domain/rigspec-preflight.js +26 -1
  192. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  193. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  194. package/daemon/dist/domain/rigspec-schema.js +20 -1
  195. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  196. package/daemon/dist/domain/runtime-verifier.d.ts +7 -1
  197. package/daemon/dist/domain/runtime-verifier.d.ts.map +1 -1
  198. package/daemon/dist/domain/runtime-verifier.js +39 -1
  199. package/daemon/dist/domain/runtime-verifier.js.map +1 -1
  200. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +8 -0
  201. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -0
  202. package/daemon/dist/domain/scope/plan-lock-artifacts.js +57 -0
  203. package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -0
  204. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +38 -0
  205. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -0
  206. package/daemon/dist/domain/scope/scaffold-placeholder.js +98 -0
  207. package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -0
  208. package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  209. package/daemon/dist/domain/scope/scope-approve.js +22 -1
  210. package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  211. package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  212. package/daemon/dist/domain/scope/scope-audit.js +57 -20
  213. package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  214. package/daemon/dist/domain/seat-handover-service.d.ts +9 -0
  215. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  216. package/daemon/dist/domain/seat-handover-service.js +2 -0
  217. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  218. package/daemon/dist/domain/seat-identity-store.d.ts +7 -0
  219. package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
  220. package/daemon/dist/domain/seat-identity-store.js +27 -0
  221. package/daemon/dist/domain/seat-identity-store.js.map +1 -1
  222. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  223. package/daemon/dist/domain/seat-status-service.js +6 -4
  224. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  225. package/daemon/dist/domain/session-name.d.ts +22 -0
  226. package/daemon/dist/domain/session-name.d.ts.map +1 -1
  227. package/daemon/dist/domain/session-name.js +29 -0
  228. package/daemon/dist/domain/session-name.js.map +1 -1
  229. package/daemon/dist/domain/session-transport.d.ts +17 -0
  230. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  231. package/daemon/dist/domain/session-transport.js +44 -0
  232. package/daemon/dist/domain/session-transport.js.map +1 -1
  233. package/daemon/dist/domain/slices/qitem-membership.d.ts +17 -0
  234. package/daemon/dist/domain/slices/qitem-membership.d.ts.map +1 -0
  235. package/daemon/dist/domain/slices/qitem-membership.js +60 -0
  236. package/daemon/dist/domain/slices/qitem-membership.js.map +1 -0
  237. package/daemon/dist/domain/slices/slice-detail-projector.d.ts +5 -0
  238. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  239. package/daemon/dist/domain/slices/slice-detail-projector.js +161 -16
  240. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  241. package/daemon/dist/domain/slices/slice-indexer.d.ts +86 -0
  242. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  243. package/daemon/dist/domain/slices/slice-indexer.js +422 -45
  244. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  245. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +18 -2
  246. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -1
  247. package/daemon/dist/domain/spec-library-workflow-scanner.js +23 -1
  248. package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -1
  249. package/daemon/dist/domain/startup-orchestrator.d.ts +9 -0
  250. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  251. package/daemon/dist/domain/startup-orchestrator.js +71 -3
  252. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  253. package/daemon/dist/domain/startup-proof.d.ts +10 -6
  254. package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  255. package/daemon/dist/domain/startup-proof.js +35 -7
  256. package/daemon/dist/domain/startup-proof.js.map +1 -1
  257. package/daemon/dist/domain/successor-session-launcher.d.ts +16 -0
  258. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  259. package/daemon/dist/domain/successor-session-launcher.js +13 -0
  260. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  261. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts +28 -0
  262. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -0
  263. package/daemon/dist/domain/terminal/cmux-provider-adapter.js +100 -0
  264. package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -0
  265. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +94 -0
  266. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -0
  267. package/daemon/dist/domain/terminal/herdr-adapter.js +307 -0
  268. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -0
  269. package/daemon/dist/domain/terminal/herdr-transport.d.ts +50 -0
  270. package/daemon/dist/domain/terminal/herdr-transport.d.ts.map +1 -0
  271. package/daemon/dist/domain/terminal/herdr-transport.js +145 -0
  272. package/daemon/dist/domain/terminal/herdr-transport.js.map +1 -0
  273. package/daemon/dist/domain/terminal/terminal-provider.d.ts +88 -0
  274. package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -0
  275. package/daemon/dist/domain/terminal/terminal-provider.js +17 -0
  276. package/daemon/dist/domain/terminal/terminal-provider.js.map +1 -0
  277. package/daemon/dist/domain/terminal/terminal-service.d.ts +60 -0
  278. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -0
  279. package/daemon/dist/domain/terminal/terminal-service.js +174 -0
  280. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -0
  281. package/daemon/dist/domain/terminal/terminal-views-store.d.ts +77 -0
  282. package/daemon/dist/domain/terminal/terminal-views-store.d.ts.map +1 -0
  283. package/daemon/dist/domain/terminal/terminal-views-store.js +146 -0
  284. package/daemon/dist/domain/terminal/terminal-views-store.js.map +1 -0
  285. package/daemon/dist/domain/terminal/view-composer.d.ts +42 -0
  286. package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -0
  287. package/daemon/dist/domain/terminal/view-composer.js +137 -0
  288. package/daemon/dist/domain/terminal/view-composer.js.map +1 -0
  289. package/daemon/dist/domain/tmux-option-defaults.d.ts +89 -0
  290. package/daemon/dist/domain/tmux-option-defaults.d.ts.map +1 -0
  291. package/daemon/dist/domain/tmux-option-defaults.js +132 -0
  292. package/daemon/dist/domain/tmux-option-defaults.js.map +1 -0
  293. package/daemon/dist/domain/transcript-capture.d.ts +3 -0
  294. package/daemon/dist/domain/transcript-capture.d.ts.map +1 -1
  295. package/daemon/dist/domain/transcript-capture.js +28 -0
  296. package/daemon/dist/domain/transcript-capture.js.map +1 -1
  297. package/daemon/dist/domain/transcript-store.d.ts +10 -0
  298. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  299. package/daemon/dist/domain/transcript-store.js +26 -0
  300. package/daemon/dist/domain/transcript-store.js.map +1 -1
  301. package/daemon/dist/domain/types.d.ts +38 -1
  302. package/daemon/dist/domain/types.d.ts.map +1 -1
  303. package/daemon/dist/domain/types.js.map +1 -1
  304. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  305. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  306. package/daemon/dist/domain/user-settings/settings-store.js +92 -0
  307. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  308. package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts.map +1 -1
  309. package/daemon/dist/domain/workflow/slice-workflow-projection.js +6 -2
  310. package/daemon/dist/domain/workflow/slice-workflow-projection.js.map +1 -1
  311. package/daemon/dist/domain/workflow-boot-sweep.d.ts +28 -0
  312. package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -0
  313. package/daemon/dist/domain/workflow-boot-sweep.js +102 -0
  314. package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -0
  315. package/daemon/dist/domain/workflow-deadline.d.ts +74 -0
  316. package/daemon/dist/domain/workflow-deadline.d.ts.map +1 -0
  317. package/daemon/dist/domain/workflow-deadline.js +165 -0
  318. package/daemon/dist/domain/workflow-deadline.js.map +1 -0
  319. package/daemon/dist/domain/workflow-exception-escalation.d.ts +33 -0
  320. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -0
  321. package/daemon/dist/domain/workflow-exception-escalation.js +104 -0
  322. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -0
  323. package/daemon/dist/domain/workflow-exception-router.d.ts +33 -0
  324. package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -0
  325. package/daemon/dist/domain/workflow-exception-router.js +96 -0
  326. package/daemon/dist/domain/workflow-exception-router.js.map +1 -0
  327. package/daemon/dist/domain/workflow-exception.d.ts +90 -0
  328. package/daemon/dist/domain/workflow-exception.d.ts.map +1 -0
  329. package/daemon/dist/domain/workflow-exception.js +122 -0
  330. package/daemon/dist/domain/workflow-exception.js.map +1 -0
  331. package/daemon/dist/domain/workflow-frontier-guard.d.ts +24 -0
  332. package/daemon/dist/domain/workflow-frontier-guard.d.ts.map +1 -0
  333. package/daemon/dist/domain/workflow-frontier-guard.js +30 -0
  334. package/daemon/dist/domain/workflow-frontier-guard.js.map +1 -0
  335. package/daemon/dist/domain/workflow-instance-store.d.ts +28 -0
  336. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  337. package/daemon/dist/domain/workflow-instance-store.js +66 -10
  338. package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  339. package/daemon/dist/domain/workflow-keepalive-arming.d.ts +35 -0
  340. package/daemon/dist/domain/workflow-keepalive-arming.d.ts.map +1 -0
  341. package/daemon/dist/domain/workflow-keepalive-arming.js +87 -0
  342. package/daemon/dist/domain/workflow-keepalive-arming.js.map +1 -0
  343. package/daemon/dist/domain/workflow-projector.d.ts +117 -2
  344. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  345. package/daemon/dist/domain/workflow-projector.js +672 -41
  346. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  347. package/daemon/dist/domain/workflow-role-context.d.ts +57 -0
  348. package/daemon/dist/domain/workflow-role-context.d.ts.map +1 -0
  349. package/daemon/dist/domain/workflow-role-context.js +120 -0
  350. package/daemon/dist/domain/workflow-role-context.js.map +1 -0
  351. package/daemon/dist/domain/workflow-role-resolver.d.ts +65 -0
  352. package/daemon/dist/domain/workflow-role-resolver.d.ts.map +1 -0
  353. package/daemon/dist/domain/workflow-role-resolver.js +108 -0
  354. package/daemon/dist/domain/workflow-role-resolver.js.map +1 -0
  355. package/daemon/dist/domain/workflow-runtime.d.ts +157 -1
  356. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  357. package/daemon/dist/domain/workflow-runtime.js +718 -11
  358. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  359. package/daemon/dist/domain/workflow-spec-cache.d.ts +26 -1
  360. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  361. package/daemon/dist/domain/workflow-spec-cache.js +327 -13
  362. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  363. package/daemon/dist/domain/workflow-types.d.ts +143 -8
  364. package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
  365. package/daemon/dist/domain/workflow-types.js +14 -1
  366. package/daemon/dist/domain/workflow-types.js.map +1 -1
  367. package/daemon/dist/domain/workflow-validator.d.ts +11 -1
  368. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  369. package/daemon/dist/domain/workflow-validator.js +246 -1
  370. package/daemon/dist/domain/workflow-validator.js.map +1 -1
  371. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  372. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +9 -4
  373. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  374. package/daemon/dist/domain/workspace/workspace-doctor.js +1 -1
  375. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  376. package/daemon/dist/index.d.ts +17 -0
  377. package/daemon/dist/index.d.ts.map +1 -1
  378. package/daemon/dist/index.js +44 -0
  379. package/daemon/dist/index.js.map +1 -1
  380. package/daemon/dist/routes/activity.js +22 -0
  381. package/daemon/dist/routes/activity.js.map +1 -1
  382. package/daemon/dist/routes/hosts.d.ts +5 -0
  383. package/daemon/dist/routes/hosts.d.ts.map +1 -0
  384. package/daemon/dist/routes/hosts.js +346 -0
  385. package/daemon/dist/routes/hosts.js.map +1 -0
  386. package/daemon/dist/routes/mission-control.js +1 -1
  387. package/daemon/dist/routes/mission-control.js.map +1 -1
  388. package/daemon/dist/routes/missions.d.ts +7 -0
  389. package/daemon/dist/routes/missions.d.ts.map +1 -1
  390. package/daemon/dist/routes/missions.js +6 -1
  391. package/daemon/dist/routes/missions.js.map +1 -1
  392. package/daemon/dist/routes/ps.d.ts.map +1 -1
  393. package/daemon/dist/routes/ps.js +5 -1
  394. package/daemon/dist/routes/ps.js.map +1 -1
  395. package/daemon/dist/routes/queue.d.ts +2 -7
  396. package/daemon/dist/routes/queue.d.ts.map +1 -1
  397. package/daemon/dist/routes/queue.js +272 -10
  398. package/daemon/dist/routes/queue.js.map +1 -1
  399. package/daemon/dist/routes/review.d.ts.map +1 -1
  400. package/daemon/dist/routes/review.js +26 -0
  401. package/daemon/dist/routes/review.js.map +1 -1
  402. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  403. package/daemon/dist/routes/rigs.js +21 -10
  404. package/daemon/dist/routes/rigs.js.map +1 -1
  405. package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  406. package/daemon/dist/routes/scope-audit.js +141 -135
  407. package/daemon/dist/routes/scope-audit.js.map +1 -1
  408. package/daemon/dist/routes/seat.js +13 -0
  409. package/daemon/dist/routes/seat.js.map +1 -1
  410. package/daemon/dist/routes/sessions.js +2 -1
  411. package/daemon/dist/routes/sessions.js.map +1 -1
  412. package/daemon/dist/routes/slices.d.ts.map +1 -1
  413. package/daemon/dist/routes/slices.js +48 -38
  414. package/daemon/dist/routes/slices.js.map +1 -1
  415. package/daemon/dist/routes/terminal.d.ts +11 -0
  416. package/daemon/dist/routes/terminal.d.ts.map +1 -0
  417. package/daemon/dist/routes/terminal.js +104 -0
  418. package/daemon/dist/routes/terminal.js.map +1 -0
  419. package/daemon/dist/routes/transcripts.d.ts.map +1 -1
  420. package/daemon/dist/routes/transcripts.js +62 -33
  421. package/daemon/dist/routes/transcripts.js.map +1 -1
  422. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  423. package/daemon/dist/routes/workflow.js +102 -10
  424. package/daemon/dist/routes/workflow.js.map +1 -1
  425. package/daemon/dist/server.d.ts +5 -0
  426. package/daemon/dist/server.d.ts.map +1 -1
  427. package/daemon/dist/server.js +22 -0
  428. package/daemon/dist/server.js.map +1 -1
  429. package/daemon/dist/startup.d.ts.map +1 -1
  430. package/daemon/dist/startup.js +235 -12
  431. package/daemon/dist/startup.js.map +1 -1
  432. package/daemon/docs/reference/agent-startup-guide.md +1 -0
  433. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +2 -1
  434. package/daemon/specs/agents/conveyor/builder/agent.yaml +2 -1
  435. package/daemon/specs/agents/conveyor/lead/agent.yaml +2 -1
  436. package/daemon/specs/agents/conveyor/planner/agent.yaml +2 -1
  437. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +2 -1
  438. package/daemon/specs/agents/design/product-designer/agent.yaml +12 -2
  439. package/daemon/specs/agents/development/implementer/agent.yaml +12 -2
  440. package/daemon/specs/agents/development/qa/agent.yaml +12 -2
  441. package/daemon/specs/agents/development/qa/guidance/role.md +1 -0
  442. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +30 -0
  443. package/daemon/specs/agents/factory-rsi/dogfood/guidance/role.md +37 -0
  444. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +30 -0
  445. package/daemon/specs/agents/factory-rsi/release-manager/guidance/role.md +40 -0
  446. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +12 -2
  447. package/daemon/specs/agents/product-management/pm/agent.yaml +1 -2
  448. package/daemon/specs/agents/research/analyst/agent.yaml +2 -1
  449. package/daemon/specs/agents/research/synthesizer/agent.yaml +2 -1
  450. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +12 -2
  451. package/daemon/specs/agents/shared/agent.yaml +5 -8
  452. package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +13 -1
  453. package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +132 -0
  454. package/daemon/{assets/plugins/openrig-core/skills → specs/agents/shared/skills/core}/agent-startup-and-context-ingestion/SKILL.md +27 -19
  455. package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +264 -0
  456. package/daemon/specs/agents/shared/skills/core/cross-host-rig-commands/SKILL.md +190 -0
  457. package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +104 -0
  458. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +25 -8
  459. package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +81 -0
  460. package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +153 -0
  461. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +460 -0
  462. package/daemon/specs/agents/shared/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
  463. package/daemon/specs/agents/shared/skills/core/rig-lifecycle/SKILL.md +22 -11
  464. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +160 -0
  465. package/daemon/specs/agents/shared/skills/core/specification-system/SKILL.md +103 -0
  466. package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
  467. package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +125 -0
  468. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +4 -4
  469. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +3 -0
  470. package/daemon/specs/agents/shared/skills/process/brainstorming/OPENRIG.md +3 -3
  471. package/daemon/specs/agents/shared/skills/process/executing-plans/OPENRIG.md +1 -1
  472. package/daemon/specs/agents/shared/skills/process/frontend-design/SKILL.md +6 -3
  473. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +1 -1
  474. package/daemon/specs/agents/shared/skills/process/using-superpowers/OPENRIG.md +1 -1
  475. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +12 -2
  476. package/daemon/specs/agents/shared/skills/process/writing-plans/OPENRIG.md +1 -1
  477. package/daemon/specs/rigs/focused/pm-team/CULTURE.md +1 -1
  478. package/daemon/specs/rigs/launch/factory-rsi/CULTURE.md +47 -0
  479. package/daemon/specs/rigs/launch/factory-rsi/rig.yaml +115 -0
  480. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/agent.yaml +2 -2
  481. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +5 -4
  482. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/agent.yaml +2 -2
  483. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +3 -5
  484. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/agent.yaml +2 -2
  485. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +3 -4
  486. package/daemon/specs/rigs/preview/product-team/CULTURE.md +1 -1
  487. package/dist/bin-wrapper.d.ts.map +1 -1
  488. package/dist/bin-wrapper.js +3 -1
  489. package/dist/bin-wrapper.js.map +1 -1
  490. package/dist/build-info.js +3 -3
  491. package/dist/cli-error.d.ts +33 -0
  492. package/dist/cli-error.d.ts.map +1 -0
  493. package/dist/cli-error.js +94 -0
  494. package/dist/cli-error.js.map +1 -0
  495. package/dist/commands/broadcast.d.ts +6 -1
  496. package/dist/commands/broadcast.d.ts.map +1 -1
  497. package/dist/commands/broadcast.js +101 -15
  498. package/dist/commands/broadcast.js.map +1 -1
  499. package/dist/commands/capture.d.ts.map +1 -1
  500. package/dist/commands/capture.js +99 -8
  501. package/dist/commands/capture.js.map +1 -1
  502. package/dist/commands/config-init-workspace.js +1 -1
  503. package/dist/commands/config.d.ts.map +1 -1
  504. package/dist/commands/config.js +4 -0
  505. package/dist/commands/config.js.map +1 -1
  506. package/dist/commands/doctor.d.ts +1 -1
  507. package/dist/commands/doctor.d.ts.map +1 -1
  508. package/dist/commands/doctor.js +17 -11
  509. package/dist/commands/doctor.js.map +1 -1
  510. package/dist/commands/down.d.ts.map +1 -1
  511. package/dist/commands/down.js +5 -0
  512. package/dist/commands/down.js.map +1 -1
  513. package/dist/commands/host.d.ts +14 -0
  514. package/dist/commands/host.d.ts.map +1 -1
  515. package/dist/commands/host.js +361 -23
  516. package/dist/commands/host.js.map +1 -1
  517. package/dist/commands/launch.d.ts.map +1 -1
  518. package/dist/commands/launch.js +5 -0
  519. package/dist/commands/launch.js.map +1 -1
  520. package/dist/commands/proof.js +1 -1
  521. package/dist/commands/proof.js.map +1 -1
  522. package/dist/commands/ps.d.ts.map +1 -1
  523. package/dist/commands/ps.js +26 -6
  524. package/dist/commands/ps.js.map +1 -1
  525. package/dist/commands/queue.d.ts +36 -0
  526. package/dist/commands/queue.d.ts.map +1 -1
  527. package/dist/commands/queue.js +176 -31
  528. package/dist/commands/queue.js.map +1 -1
  529. package/dist/commands/restore-packet.d.ts.map +1 -1
  530. package/dist/commands/restore-packet.js +13 -2
  531. package/dist/commands/restore-packet.js.map +1 -1
  532. package/dist/commands/rig.d.ts.map +1 -1
  533. package/dist/commands/rig.js +122 -0
  534. package/dist/commands/rig.js.map +1 -1
  535. package/dist/commands/scope.js +2 -2
  536. package/dist/commands/scope.js.map +1 -1
  537. package/dist/commands/send.d.ts.map +1 -1
  538. package/dist/commands/send.js +229 -30
  539. package/dist/commands/send.js.map +1 -1
  540. package/dist/commands/slack.d.ts +37 -0
  541. package/dist/commands/slack.d.ts.map +1 -0
  542. package/dist/commands/slack.js +274 -0
  543. package/dist/commands/slack.js.map +1 -0
  544. package/dist/commands/terminal.d.ts +6 -0
  545. package/dist/commands/terminal.d.ts.map +1 -0
  546. package/dist/commands/terminal.js +116 -0
  547. package/dist/commands/terminal.js.map +1 -0
  548. package/dist/commands/transcript.d.ts +6 -1
  549. package/dist/commands/transcript.d.ts.map +1 -1
  550. package/dist/commands/transcript.js +113 -30
  551. package/dist/commands/transcript.js.map +1 -1
  552. package/dist/commands/ui.d.ts +1 -0
  553. package/dist/commands/ui.d.ts.map +1 -1
  554. package/dist/commands/ui.js +2 -0
  555. package/dist/commands/ui.js.map +1 -1
  556. package/dist/commands/up.d.ts.map +1 -1
  557. package/dist/commands/up.js +10 -1
  558. package/dist/commands/up.js.map +1 -1
  559. package/dist/commands/whoami.d.ts.map +1 -1
  560. package/dist/commands/whoami.js +14 -3
  561. package/dist/commands/whoami.js.map +1 -1
  562. package/dist/commands/workflow-errors.d.ts +23 -0
  563. package/dist/commands/workflow-errors.d.ts.map +1 -0
  564. package/dist/commands/workflow-errors.js +100 -0
  565. package/dist/commands/workflow-errors.js.map +1 -0
  566. package/dist/commands/workflow-follow.d.ts +71 -0
  567. package/dist/commands/workflow-follow.d.ts.map +1 -0
  568. package/dist/commands/workflow-follow.js +259 -0
  569. package/dist/commands/workflow-follow.js.map +1 -0
  570. package/dist/commands/workflow-render.d.ts +114 -0
  571. package/dist/commands/workflow-render.d.ts.map +1 -0
  572. package/dist/commands/workflow-render.js +223 -0
  573. package/dist/commands/workflow-render.js.map +1 -0
  574. package/dist/commands/workflow.d.ts +1 -0
  575. package/dist/commands/workflow.d.ts.map +1 -1
  576. package/dist/commands/workflow.js +278 -14
  577. package/dist/commands/workflow.js.map +1 -1
  578. package/dist/config-store.d.ts +15 -1
  579. package/dist/config-store.d.ts.map +1 -1
  580. package/dist/config-store.js +103 -0
  581. package/dist/config-store.js.map +1 -1
  582. package/dist/cross-host-cli-helpers.d.ts +13 -0
  583. package/dist/cross-host-cli-helpers.d.ts.map +1 -1
  584. package/dist/cross-host-cli-helpers.js +27 -0
  585. package/dist/cross-host-cli-helpers.js.map +1 -1
  586. package/dist/cross-host-target.d.ts +49 -0
  587. package/dist/cross-host-target.d.ts.map +1 -0
  588. package/dist/cross-host-target.js +35 -0
  589. package/dist/cross-host-target.js.map +1 -0
  590. package/dist/daemon-lifecycle.d.ts.map +1 -1
  591. package/dist/daemon-lifecycle.js +45 -14
  592. package/dist/daemon-lifecycle.js.map +1 -1
  593. package/dist/host-registry.d.ts +14 -1
  594. package/dist/host-registry.d.ts.map +1 -1
  595. package/dist/host-registry.js +47 -6
  596. package/dist/host-registry.js.map +1 -1
  597. package/dist/host-selection.d.ts +13 -0
  598. package/dist/host-selection.d.ts.map +1 -0
  599. package/dist/host-selection.js +54 -0
  600. package/dist/host-selection.js.map +1 -0
  601. package/dist/index.d.ts +5 -0
  602. package/dist/index.d.ts.map +1 -1
  603. package/dist/index.js +8 -1
  604. package/dist/index.js.map +1 -1
  605. package/dist/lib/scope/scaffold-placeholder.d.ts +38 -0
  606. package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -0
  607. package/dist/lib/scope/scaffold-placeholder.js +98 -0
  608. package/dist/lib/scope/scaffold-placeholder.js.map +1 -0
  609. package/dist/lib/scope/scope-audit.d.ts.map +1 -1
  610. package/dist/lib/scope/scope-audit.js +57 -20
  611. package/dist/lib/scope/scope-audit.js.map +1 -1
  612. package/dist/lib/scope-templates/backlog-deprecation.md +1 -1
  613. package/dist/lib/scope-templates/backlog-tech-debt.md +1 -1
  614. package/dist/lib/scope-templates/bug-fix.md +1 -1
  615. package/dist/lib/scope-templates/implementation-prd.md +1 -1
  616. package/dist/lib/scope-templates/mission-notes.md +7 -2
  617. package/dist/lib/scope-templates/mission-placeholder.md +1 -1
  618. package/dist/lib/scope-templates/mission-progress.md +1 -1
  619. package/dist/lib/scope-templates/mission-release.md +1 -1
  620. package/dist/lib/scope-templates/placeholder.md +1 -1
  621. package/dist/lib/scope-templates/proof.md +1 -1
  622. package/dist/lib/scope-templates/release-feature.md +1 -1
  623. package/dist/lib/scope-templates/research.md +1 -1
  624. package/dist/lib/scope-templates/slice-progress.md +1 -1
  625. package/dist/remote-host-ops.d.ts +1 -0
  626. package/dist/remote-host-ops.d.ts.map +1 -1
  627. package/dist/remote-host-ops.js +13 -6
  628. package/dist/remote-host-ops.js.map +1 -1
  629. package/dist/session-name.d.ts +23 -0
  630. package/dist/session-name.d.ts.map +1 -0
  631. package/dist/session-name.js +61 -0
  632. package/dist/session-name.js.map +1 -0
  633. package/dist/slack/config.d.ts +41 -0
  634. package/dist/slack/config.d.ts.map +1 -0
  635. package/dist/slack/config.js +60 -0
  636. package/dist/slack/config.js.map +1 -0
  637. package/dist/slack/inbound.d.ts +75 -0
  638. package/dist/slack/inbound.d.ts.map +1 -0
  639. package/dist/slack/inbound.js +133 -0
  640. package/dist/slack/inbound.js.map +1 -0
  641. package/dist/slack/message.d.ts +26 -0
  642. package/dist/slack/message.d.ts.map +1 -0
  643. package/dist/slack/message.js +60 -0
  644. package/dist/slack/message.js.map +1 -0
  645. package/dist/slack/outbound.d.ts +39 -0
  646. package/dist/slack/outbound.d.ts.map +1 -0
  647. package/dist/slack/outbound.js +52 -0
  648. package/dist/slack/outbound.js.map +1 -0
  649. package/dist/slack/queue-bridge.d.ts +56 -0
  650. package/dist/slack/queue-bridge.d.ts.map +1 -0
  651. package/dist/slack/queue-bridge.js +114 -0
  652. package/dist/slack/queue-bridge.js.map +1 -0
  653. package/dist/slack/secrets.d.ts +21 -0
  654. package/dist/slack/secrets.d.ts.map +1 -0
  655. package/dist/slack/secrets.js +73 -0
  656. package/dist/slack/secrets.js.map +1 -0
  657. package/dist/slack/slack-api.d.ts +49 -0
  658. package/dist/slack/slack-api.d.ts.map +1 -0
  659. package/dist/slack/slack-api.js +110 -0
  660. package/dist/slack/slack-api.js.map +1 -0
  661. package/dist/slack/state-store.d.ts +62 -0
  662. package/dist/slack/state-store.d.ts.map +1 -0
  663. package/dist/slack/state-store.js +132 -0
  664. package/dist/slack/state-store.js.map +1 -0
  665. package/package.json +1 -1
  666. package/ui/dist/assets/index-DkNi0RT8.js +623 -0
  667. package/ui/dist/assets/index-N-SdPj-I.css +32 -0
  668. package/ui/dist/index.html +2 -2
  669. package/daemon/assets/plugins/openrig-core/skills/openrig-architect/SKILL.md +0 -361
  670. package/daemon/assets/plugins/openrig-core/skills/openrig-operator/SKILL.md +0 -222
  671. package/daemon/docs/reference/product-factory-vps-runbook.md +0 -132
  672. package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +0 -115
  673. package/daemon/specs/agents/shared/skills/core/openrig-installer/SKILL.md +0 -142
  674. package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +0 -110
  675. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +0 -1245
  676. package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +0 -153
  677. package/ui/dist/assets/index-D69ZhNIr.js +0 -598
  678. package/ui/dist/assets/index-DJYun-8d.css +0 -32
@@ -5,8 +5,10 @@ import { bindingsSessionsSchema } from "./db/migrations/002_bindings_sessions.js
5
5
  import { eventsSchema } from "./db/migrations/003_events.js";
6
6
  import { RigRepository } from "./domain/rig-repository.js";
7
7
  import { SessionRegistry } from "./domain/session-registry.js";
8
+ import { isHumanSeatSessionRef, parseSessionName } from "./domain/session-name.js";
8
9
  import { EventBus } from "./domain/event-bus.js";
9
10
  import { NodeLauncher } from "./domain/node-launcher.js";
11
+ import { TmuxOptionDefaultsApplier } from "./domain/tmux-option-defaults.js";
10
12
  import { TmuxAdapter } from "./adapters/tmux.js";
11
13
  import { CmuxAdapter } from "./adapters/cmux.js";
12
14
  import { execCommand } from "./adapters/tmux-exec.js";
@@ -17,6 +19,7 @@ import { SnapshotCapture } from "./domain/snapshot-capture.js";
17
19
  import { RestoreOrchestrator } from "./domain/restore-orchestrator.js";
18
20
  import { ClaudeResumeAdapter } from "./adapters/claude-resume.js";
19
21
  import { CodexResumeAdapter } from "./adapters/codex-resume.js";
22
+ import { PiResumeAdapter } from "./adapters/pi-resume.js";
20
23
  import { RigSpecExporter } from "./domain/rigspec-exporter.js";
21
24
  import { PodRepository } from "./domain/pod-repository.js";
22
25
  import { RigSpecPreflight } from "./domain/rigspec-preflight.js";
@@ -52,6 +55,7 @@ import { UpCommandRouter } from "./domain/up-command-router.js";
52
55
  import { RigTeardownOrchestrator } from "./domain/rig-teardown.js";
53
56
  import { ResumeMetadataRefresher } from "./domain/resume-metadata-refresher.js";
54
57
  import { TranscriptStore } from "./domain/transcript-store.js";
58
+ import { resumeRunningTranscriptCaptures } from "./domain/transcript-capture.js";
55
59
  import { SessionTransport } from "./domain/session-transport.js";
56
60
  import { AgentActivityStore } from "./domain/agent-activity-store.js";
57
61
  import { HistoryQuery } from "./domain/history-query.js";
@@ -59,6 +63,7 @@ import { AskService } from "./domain/ask-service.js";
59
63
  import { ChatRepository } from "./domain/chat-repository.js";
60
64
  import { StreamStore } from "./domain/stream-store.js";
61
65
  import { QueueRepository } from "./domain/queue-repository.js";
66
+ import { createWorkflowFrontierPredicate } from "./domain/workflow-frontier-guard.js";
62
67
  import { InboxHandler } from "./domain/inbox-handler.js";
63
68
  import { OutboxHandler } from "./domain/outbox-handler.js";
64
69
  import { ProjectClassifier } from "./domain/project-classifier.js";
@@ -137,6 +142,12 @@ import { resumeVerificationSchema } from "./db/migrations/045_resume_verificatio
137
142
  import { seatIdentityVerdictsSchema } from "./db/migrations/046_seat_identity_verdicts.js";
138
143
  import { eventsNodeTypeIndexSchema } from "./db/migrations/047_events_node_type_index.js";
139
144
  import { queueItemEvidenceRefSchema } from "./db/migrations/048_queue_item_evidence_ref.js";
145
+ import { workflowInstanceVersionSchema } from "./db/migrations/049_workflow_instance_version.js";
146
+ import { workflowSpecJsonSchema } from "./db/migrations/050_workflow_spec_json.js";
147
+ import { workflowResumeSchema } from "./db/migrations/051_workflow_resume.js";
148
+ import { workflowInstanceBoundRigSchema } from "./db/migrations/052_workflow_instance_bound_rig.js";
149
+ import { sessionsNodeIdIndexSchema } from "./db/migrations/053_sessions_node_id_index.js";
150
+ import { queueTransitionsArchiveSchema } from "./db/migrations/054_queue_transitions_archive.js";
140
151
  import { RigPolicyStore } from "./domain/rig-policy/rig-policy-store.js";
141
152
  import { MissionControlActionLog } from "./domain/mission-control/mission-control-action-log.js";
142
153
  import { MissionControlWriteContract } from "./domain/mission-control/mission-control-write-contract.js";
@@ -157,6 +168,15 @@ const KNOWN_PROVIDER_AUTH_ENV = new Set([
157
168
  "OPENAI_BASE_URL",
158
169
  "OPENAI_ORG_ID",
159
170
  "OPENAI_PROJECT_ID",
171
+ // OPR.0.4.6.PI1 FR-7 — Pi seat providers. Without these in the KNOWN set,
172
+ // a daemon-launched Pi seat can never receive its provider key (the
173
+ // pi-runner's own deny-by-default allowlist then has nothing to pass
174
+ // through). Double opt-in preserved: the operator must still name each var
175
+ // in recovery.provider_auth_env_allowlist. OpenRouter is the founder-ruled
176
+ // preferred path (2026-07-06); zai/kimi-coding are the secondary natives.
177
+ "OPENROUTER_API_KEY",
178
+ "ZAI_API_KEY",
179
+ "KIMI_API_KEY",
160
180
  ]);
161
181
  export function collectAllowlistedProviderAuthEnv(raw, env) {
162
182
  const out = {};
@@ -178,7 +198,7 @@ export function collectAllowlistedProviderAuthEnv(raw, env) {
178
198
  export async function createDaemon(opts) {
179
199
  const dbPath = opts?.dbPath ?? ":memory:";
180
200
  const db = createDb(dbPath);
181
- migrate(db, [coreSchema, bindingsSessionsSchema, eventsSchema, snapshotsSchema, checkpointsSchema, resumeMetadataSchema, nodeSpecFieldsSchema, packagesSchema, installJournalSchema, journalSeqSchema, bootstrapSchema, discoverySchema, discoveryFkFix, agentspecRebootSchema, startupContextSchema, chatMessagesSchema, podNamespaceSchema, contextUsageSchema, externalCliAttachmentSchema, rigServicesSchema, seatHandoverObservabilitySchema, nodeCodexConfigProfileSchema, streamItemsSchema, queueItemsSchema, queueTransitionsSchema, inboxEntriesSchema, outboxEntriesSchema, projectClassificationsSchema, classifierLeasesSchema, viewsCustomSchema, watchdogJobsSchema, watchdogHistorySchema, workflowSpecsSchema, workflowInstancesSchema, workflowStepTrailsSchema, watchdogPolicyEnumExtensionSchema, missionControlActionsSchema, workspacePrimitiveSchema, queueTargetRepoSchema, workflowSpecsDiagnosticSchema, rigPolicySchema, rigArchiveSchema, resumeProvenanceSchema, queueItemSummarySchema, resumeVerificationSchema, seatIdentityVerdictsSchema, eventsNodeTypeIndexSchema, queueItemEvidenceRefSchema]);
201
+ migrate(db, [coreSchema, bindingsSessionsSchema, eventsSchema, snapshotsSchema, checkpointsSchema, resumeMetadataSchema, nodeSpecFieldsSchema, packagesSchema, installJournalSchema, journalSeqSchema, bootstrapSchema, discoverySchema, discoveryFkFix, agentspecRebootSchema, startupContextSchema, chatMessagesSchema, podNamespaceSchema, contextUsageSchema, externalCliAttachmentSchema, rigServicesSchema, seatHandoverObservabilitySchema, nodeCodexConfigProfileSchema, streamItemsSchema, queueItemsSchema, queueTransitionsSchema, inboxEntriesSchema, outboxEntriesSchema, projectClassificationsSchema, classifierLeasesSchema, viewsCustomSchema, watchdogJobsSchema, watchdogHistorySchema, workflowSpecsSchema, workflowInstancesSchema, workflowStepTrailsSchema, watchdogPolicyEnumExtensionSchema, missionControlActionsSchema, workspacePrimitiveSchema, queueTargetRepoSchema, workflowSpecsDiagnosticSchema, rigPolicySchema, rigArchiveSchema, resumeProvenanceSchema, queueItemSummarySchema, resumeVerificationSchema, seatIdentityVerdictsSchema, eventsNodeTypeIndexSchema, queueItemEvidenceRefSchema, workflowInstanceVersionSchema, workflowSpecJsonSchema, workflowResumeSchema, workflowInstanceBoundRigSchema, sessionsNodeIdIndexSchema, queueTransitionsArchiveSchema]);
182
202
  const rigRepo = new RigRepository(db);
183
203
  const sessionRegistry = new SessionRegistry(db);
184
204
  const eventBus = new EventBus(db);
@@ -186,17 +206,17 @@ export async function createDaemon(opts) {
186
206
  // Reject `<member>@<unknown-rig>` shapes by checking the rig portion
187
207
  // against the rig registry. Bare ids without `@` are also rejected
188
208
  // (no canonical rig binding).
189
- const isHumanSeatSessionRef = (sessionRef) => {
190
- return /^human(?:-[A-Za-z0-9._-]+)?@(kernel|host)$/.test(sessionRef);
191
- };
209
+ // OPR.0.4.6.MH1 FR-8: this gate is the ARCHETYPE consumer of the shared
210
+ // parse contract — human-seat classification BEFORE parse, then the
211
+ // greedy first-@ rig (so "member@rig@x" looks up rig "rig@x", misses,
212
+ // and rejects with the same unknown_destination_rig as ever — BR-1).
192
213
  const topologyValidateRig = (sessionRef) => {
193
214
  if (isHumanSeatSessionRef(sessionRef))
194
215
  return true;
195
- const m = /^[^@]+@(.+)$/.exec(sessionRef);
196
- if (!m)
216
+ const parsed = parseSessionName(sessionRef);
217
+ if (parsed.kind !== "canonical")
197
218
  return false;
198
- const rigName = m[1];
199
- return rigRepo.findRigsByName(rigName).length > 0;
219
+ return rigRepo.findRigsByName(parsed.rig).length > 0;
200
220
  };
201
221
  // PL-004 Phase A — shared coordination services. Constructed early so
202
222
  // both the queueRepo dep slot and inboxHandler can share one instance.
@@ -204,6 +224,10 @@ export async function createDaemon(opts) {
204
224
  // attachTransport().
205
225
  const queueRepoInstance = new QueueRepository(db, eventBus, {
206
226
  validateRig: topologyValidateRig,
227
+ // OPR.0.4.6.WF3 FR-6 — the frontier close-path guard's predicate,
228
+ // INJECTED here (arch layering pin: the queue never imports the
229
+ // workflow domain; startup wires them — the validateRig precedent).
230
+ workflowFrontierPredicate: createWorkflowFrontierPredicate(db),
207
231
  });
208
232
  // PL-004 Phase B — classifier lease manager. Constructed early so both
209
233
  // the leaseManager dep slot and project-classifier can share one instance.
@@ -286,6 +310,26 @@ export async function createDaemon(opts) {
286
310
  OPENRIG_ACTIVITY_HOOK_TOKEN: resolvedActivityHookToken,
287
311
  ...providerAuthEnv,
288
312
  };
313
+ // OPR.0.4.6.02 S1 — ONE shared tmux option-defaults applier, injected into
314
+ // BOTH NodeLauncher and (via AppDeps → the seat-handover route) the fresh
315
+ // successor launcher, so every fresh seat gets the same mouse/status/
316
+ // clipboard defaults and the server-scope defaults assert once per daemon
317
+ // lifetime (shared memo). The status-bar read resolves `terminal.status_bar`
318
+ // FRESH per launch (resolveOne re-reads the config file) so an operator flip
319
+ // applies to the NEXT launch without a daemon restart; a resolution failure
320
+ // falls back to off (bar hidden).
321
+ const tmuxOptionSettings = new ContextPackSettingsStore();
322
+ const tmuxOptionDefaults = new TmuxOptionDefaultsApplier({
323
+ tmuxAdapter,
324
+ readTmuxOptionDefaults: () => {
325
+ try {
326
+ return { statusBar: tmuxOptionSettings.resolveOne("terminal.status_bar").value === true };
327
+ }
328
+ catch {
329
+ return { statusBar: false };
330
+ }
331
+ },
332
+ });
289
333
  const nodeLauncher = new NodeLauncher({
290
334
  db,
291
335
  rigRepo,
@@ -294,12 +338,19 @@ export async function createDaemon(opts) {
294
338
  tmuxAdapter,
295
339
  transcriptStore,
296
340
  sessionEnv: launchSessionEnv,
341
+ tmuxOptionDefaults,
297
342
  });
298
343
  const snapshotRepo = new SnapshotRepository(db);
299
344
  const checkpointStore = new CheckpointStore(db);
300
345
  const snapshotCapture = new SnapshotCapture({ db, rigRepo, sessionRegistry, eventBus, snapshotRepo, checkpointStore });
301
346
  const claudeResume = new ClaudeResumeAdapter(tmuxAdapter);
302
347
  const codexResume = new CodexResumeAdapter(tmuxAdapter);
348
+ // OPR.0.4.6.PI1 — the Pi seat-state root + the compiled runner entry (daemon
349
+ // dist). Shared by the Pi runtime adapter, the resume adapter, and the
350
+ // resume-token capture sidecar reader.
351
+ const piStateRoot = nodePath.join(OPENRIG_HOME, "state", "pi");
352
+ const piRunnerEntryPath = nodePath.resolve(import.meta.dirname, "./adapters/pi-runner.js");
353
+ const piResume = new PiResumeAdapter(tmuxAdapter, { readFile: (p) => fs.readFileSync(p, "utf-8"), writeFile: (p, c) => fs.writeFileSync(p, c, "utf-8"), exists: (p) => fs.existsSync(p), mkdirp: (p) => fs.mkdirSync(p, { recursive: true }) }, { stateRoot: piStateRoot, runnerEntryPath: piRunnerEntryPath });
303
354
  // Services infrastructure (RigEnv) — created early so restore/bootstrap can use it
304
355
  const { ComposeServicesAdapter } = await import("./adapters/compose-services-adapter.js");
305
356
  const { ServiceOrchestrator } = await import("./domain/service-orchestrator.js");
@@ -307,7 +358,7 @@ export async function createDaemon(opts) {
307
358
  const serviceOrchestrator = new ServiceOrchestrator({ rigRepo, composeAdapter });
308
359
  const restoreOrchestrator = new RestoreOrchestrator({
309
360
  db, rigRepo, sessionRegistry, eventBus, snapshotRepo, snapshotCapture,
310
- checkpointStore, nodeLauncher, tmuxAdapter, claudeResume, codexResume,
361
+ checkpointStore, nodeLauncher, tmuxAdapter, claudeResume, codexResume, piResume,
311
362
  transcriptStore, serviceOrchestrator,
312
363
  });
313
364
  // Connect to cmux at startup — degrades gracefully if absent
@@ -348,6 +399,19 @@ export async function createDaemon(opts) {
348
399
  console.log(`startup reconcile: rigs=${rigs.length} checked=${reconcileChecked} detached=${reconcileDetached} errors=${reconcileErrors}`);
349
400
  }
350
401
  catch { /* logging must never throw */ }
402
+ // Transcript rotators are process-local. Reattach them after lifecycle
403
+ // reconciliation so surviving tmux sessions keep ingesting across daemon
404
+ // restarts while genuinely detached sessions stay excluded.
405
+ try {
406
+ await resumeRunningTranscriptCaptures(db, tmuxAdapter, transcriptStore);
407
+ }
408
+ catch (err) {
409
+ try {
410
+ // eslint-disable-next-line no-console
411
+ console.warn(`startup transcript capture warning: ${err instanceof Error ? err.message : String(err)}`);
412
+ }
413
+ catch { /* logging must never throw */ }
414
+ }
351
415
  const podRepo = new PodRepository(db);
352
416
  const rigSpecExporter = new RigSpecExporter({ rigRepo, sessionRegistry, podRepo });
353
417
  const rigSpecPreflight = new RigSpecPreflight({
@@ -404,6 +468,7 @@ export async function createDaemon(opts) {
404
468
  const { StartupOrchestrator } = await import("./domain/startup-orchestrator.js");
405
469
  const { ClaudeCodeAdapter } = await import("./adapters/claude-code-adapter.js");
406
470
  const { CodexRuntimeAdapter } = await import("./adapters/codex-runtime-adapter.js");
471
+ const { PiRuntimeAdapter } = await import("./adapters/pi-runtime-adapter.js");
407
472
  const startupOrchestrator = new StartupOrchestrator({ db, sessionRegistry, eventBus, tmuxAdapter, readFile: (p) => fs.readFileSync(p, "utf-8") });
408
473
  const runtimeSettings = new ContextPackSettingsStore().resolveConfig();
409
474
  const claudeAdapter = new ClaudeCodeAdapter({ tmux: tmuxAdapter, fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), writeFile: (p, c) => fs.writeFileSync(p, c, "utf-8"), exists: (p) => fs.existsSync(p), mkdirp: (p) => fs.mkdirSync(p, { recursive: true }), copyFile: (src, dest) => fs.copyFileSync(src, dest), listFiles: (dir) => { const r = []; function w(d, pre) { for (const e of fs.readdirSync(d, { withFileTypes: true })) {
@@ -418,6 +483,14 @@ export async function createDaemon(opts) {
418
483
  else
419
484
  r.push(pre ? nodePath.join(pre, e.name) : e.name);
420
485
  } } w(dir, ""); return r; }, homedir: os.homedir() }, activityRelayPath: nodePath.resolve(import.meta.dirname, "../assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs") });
486
+ // OPR.0.4.6.PI1 — the RPC-first Pi adapter (runner-in-a-pane). Same fsOps
487
+ // shape as the Codex adapter; seat isolation roots under piStateRoot.
488
+ const piAdapter = new PiRuntimeAdapter({ tmux: tmuxAdapter, fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), writeFile: (p, c) => fs.writeFileSync(p, c, "utf-8"), exists: (p) => fs.existsSync(p), mkdirp: (p) => fs.mkdirSync(p, { recursive: true }), listFiles: (dir) => { const r = []; function w(d, pre) { for (const e of fs.readdirSync(d, { withFileTypes: true })) {
489
+ if (e.isDirectory())
490
+ w(nodePath.join(d, e.name), nodePath.join(pre, e.name));
491
+ else
492
+ r.push(pre ? nodePath.join(pre, e.name) : e.name);
493
+ } } w(dir, ""); return r; } }, stateRoot: piStateRoot, runnerEntryPath: piRunnerEntryPath });
421
494
  // plugin-primitive Phase 3a slice 3.5 — ensure Codex feature flag
422
495
  // codex_hooks = true is set in ~/.codex/config.toml so plugin-shipped
423
496
  // hooks fire on Codex runtime. Slice 27 also creates the default
@@ -504,6 +577,10 @@ export async function createDaemon(opts) {
504
577
  logger: (...args) => console.log("[openrig]", ...args),
505
578
  });
506
579
  await vendorService.ensureLatest("openrig-core");
580
+ vendorService.ensureSkillGlobally("openrig-core", "openrig-skills", [
581
+ nodePath.join(os.homedir(), ".claude", "skills"),
582
+ nodePath.join(os.homedir(), ".agents", "skills"),
583
+ ]);
507
584
  }
508
585
  catch (err) {
509
586
  console.error(`[openrig] plugin vendor setup warning: ${err.message}`);
@@ -579,7 +656,7 @@ export async function createDaemon(opts) {
579
656
  db, rigRepo, podRepo,
580
657
  sessionRegistry, eventBus, nodeLauncher, startupOrchestrator,
581
658
  fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), exists: (p) => fs.existsSync(p) },
582
- adapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
659
+ adapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "pi": piAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
583
660
  tmuxAdapter,
584
661
  contextPackLibrary,
585
662
  agentImageLibrary,
@@ -672,6 +749,8 @@ export async function createDaemon(opts) {
672
749
  // (Claude sidecar reader + Codex thread-id capturer, both reuse).
673
750
  contextUsageStore,
674
751
  resumeTokenCapturer: resumeMetadataRefresher,
752
+ // OPR.0.4.6.PI1 FR-6 — pi-runner sidecar reader (the adapter exposes it).
753
+ piRunnerStateStore: piAdapter,
675
754
  });
676
755
  const selfAttachService = new SelfAttachService({
677
756
  db, rigRepo, podRepo, sessionRegistry, eventBus, tmuxAdapter, transcriptStore,
@@ -709,6 +788,7 @@ export async function createDaemon(opts) {
709
788
  eventBus,
710
789
  nodeLauncher,
711
790
  tmuxAdapter,
791
+ tmuxOptionDefaults,
712
792
  sessionEnv: launchSessionEnv,
713
793
  cmuxAdapter,
714
794
  snapshotCapture,
@@ -751,7 +831,7 @@ export async function createDaemon(opts) {
751
831
  }),
752
832
  podInstantiator,
753
833
  podBundleSourceResolver,
754
- runtimeAdapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
834
+ runtimeAdapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "pi": piAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
755
835
  transcriptStore,
756
836
  sessionTransport: (() => {
757
837
  const t = new SessionTransport({ db, rigRepo, sessionRegistry, tmuxAdapter, agentActivityStore, eventBus });
@@ -932,13 +1012,40 @@ export async function createDaemon(opts) {
932
1012
  // slice IMPL § Write Set / § Driver Handoff Contract).
933
1013
  const queueRepoForWorkflow = deps.queueRepo;
934
1014
  let workflowRuntime;
1015
+ let workflowExceptionEnsurer;
935
1016
  if (queueRepoForWorkflow) {
936
1017
  workflowRuntime = new WorkflowRuntime({
937
1018
  db,
938
1019
  eventBus,
939
1020
  queueRepo: queueRepoForWorkflow,
1021
+ // OPR.0.4.6.WF1 FR-3: instantiate/handoff auto-arm the
1022
+ // per-instance workflow-keepalive job in-txn; terminal disarms.
1023
+ watchdogJobsRepo: watchdogJobsRepoInstance,
1024
+ // OPR.0.4.6.WF5 FR-2: the maturity dial — host default read LIVE
1025
+ // per exception from the settings twin (dial flips affect future
1026
+ // items only, never retroactive re-routing).
1027
+ exceptionDial: {
1028
+ hostDefault: () => {
1029
+ const v = new ContextPackSettingsStore().resolveOne("workflow.exception_routing")
1030
+ .value;
1031
+ return v === "orchestrator" || v === "human_only" ? v : null;
1032
+ },
1033
+ humanFallbackSeat: "human@host",
1034
+ },
940
1035
  });
941
1036
  deps.workflowRuntime = workflowRuntime;
1037
+ // OPR.0.4.6.WF5 FR-2 class (b): the shared detection-time exception
1038
+ // ensurer — sweep + keepalive both call it; dedup by occurrence tags.
1039
+ {
1040
+ const { makeEnsureStuckExceptionItem } = await import("./domain/workflow-exception-escalation.js");
1041
+ workflowExceptionEnsurer = makeEnsureStuckExceptionItem({
1042
+ db,
1043
+ queueRepo: queueRepoForWorkflow,
1044
+ resolveRoute: (name, version, cls, boundRig) => workflowRuntime.resolveExceptionRouteFor(name, version, cls, boundRig),
1045
+ humanFallbackSeat: "human@host",
1046
+ log: (line) => console.log(line),
1047
+ });
1048
+ }
942
1049
  // Seed built-in starter workflow_specs into the cache. Idempotent
943
1050
  // + workspace-surface-respecting — operator
944
1051
  // overrides at workspace paths are preserved (skip-if-cached).
@@ -1180,6 +1287,93 @@ export async function createDaemon(opts) {
1180
1287
  activityStore: agentActivityStore,
1181
1288
  });
1182
1289
  }
1290
+ // OPR.0.4.6.02 C3 — the terminal-provider-ride service (ONE composer for
1291
+ // every view kind). Built here (post-hoc) so it can read the lazily-built
1292
+ // reviewGatherer for derived mission/slice views; if the gatherer never
1293
+ // built, those scopes honestly return not-found rather than throwing.
1294
+ {
1295
+ const { TerminalService } = await import("./domain/terminal/terminal-service.js");
1296
+ const { HerdrAdapter } = await import("./domain/terminal/herdr-adapter.js");
1297
+ const { createHerdrSocketRpc, createHerdrSocketTransport } = await import("./domain/terminal/herdr-transport.js");
1298
+ const { CmuxProviderAdapter } = await import("./domain/terminal/cmux-provider-adapter.js");
1299
+ const { CmuxLayoutService } = await import("./domain/cmux-layout-service.js");
1300
+ const { TerminalViewsStore } = await import("./domain/terminal/terminal-views-store.js");
1301
+ const { getNodeInventory } = await import("./domain/node-inventory.js");
1302
+ const { loadHostRegistry, resolveHost: resolveHostInRegistry } = await import("./domain/hosts/hosts-registry-reader.js");
1303
+ // NodeInventoryEntry → the composer's minimal LiveSeatRow (single-host
1304
+ // inventory: the canonical session name IS the tmux session; no host field).
1305
+ const toLiveSeatRow = (e) => ({
1306
+ canonicalSessionName: e.canonicalSessionName,
1307
+ attachmentType: e.attachmentType ?? null,
1308
+ tmuxSession: e.canonicalSessionName,
1309
+ rigName: e.rigName,
1310
+ logicalId: e.logicalId,
1311
+ });
1312
+ const herdrProvider = new HerdrAdapter({
1313
+ // FB4: herdr speaks its unix control socket (there is no `layout` CLI).
1314
+ transportFactory: createHerdrSocketTransport(createHerdrSocketRpc()),
1315
+ });
1316
+ const cmuxProvider = new CmuxProviderAdapter({
1317
+ cmuxAdapter,
1318
+ // One gridded workspace per composed page — the same grid machinery as
1319
+ // the rig-scope /cmux/launch endpoint, never one window per seat.
1320
+ layoutService: new CmuxLayoutService(cmuxAdapter),
1321
+ });
1322
+ const providerMap = {
1323
+ herdr: herdrProvider,
1324
+ cmux: cmuxProvider,
1325
+ };
1326
+ deps.terminalService = new TerminalService({
1327
+ resolveProvider: (name) => providerMap[name] ?? null,
1328
+ viewsStore: new TerminalViewsStore(),
1329
+ listRigSeats: (rigArg) => {
1330
+ const rigs = rigRepo.listRigs();
1331
+ const rig = rigs.find((r) => r.name === rigArg) ?? rigs.find((r) => r.id === rigArg);
1332
+ if (!rig)
1333
+ return null;
1334
+ return getNodeInventory(db, rig.id).map(toLiveSeatRow);
1335
+ },
1336
+ listPodSeats: (rigArg, pod) => {
1337
+ const rigs = rigRepo.listRigs();
1338
+ const rig = rigs.find((r) => r.name === rigArg) ?? rigs.find((r) => r.id === rigArg);
1339
+ if (!rig)
1340
+ return null;
1341
+ const rows = getNodeInventory(db, rig.id)
1342
+ .filter((e) => e.podNamespace === pod)
1343
+ .map(toLiveSeatRow);
1344
+ // No node carries that pod namespace → an unknown pod (not an empty view).
1345
+ return rows.length > 0 ? rows : null;
1346
+ },
1347
+ listScopeSeats: (scope) => {
1348
+ const gatherer = deps.reviewGatherer;
1349
+ if (!gatherer)
1350
+ return null;
1351
+ // N1 (dev44-driver2 pre-guard): cast to the real AgentsScope union (not
1352
+ // `never`) so the compile guard on the scope grammar is restored.
1353
+ const band = gatherer.composeAgents(scope);
1354
+ if (!band)
1355
+ return null;
1356
+ const wanted = new Set(band.rows.map((r) => r.sessionName));
1357
+ const rows = [];
1358
+ for (const rig of rigRepo.listRigs()) {
1359
+ for (const e of getNodeInventory(db, rig.id)) {
1360
+ if (e.canonicalSessionName && wanted.has(e.canonicalSessionName))
1361
+ rows.push(toLiveSeatRow(e));
1362
+ }
1363
+ }
1364
+ return rows;
1365
+ },
1366
+ listRigNames: () => rigRepo.listRigs().map((r) => r.name),
1367
+ resolveHost: (id) => {
1368
+ const res = loadHostRegistry();
1369
+ if (!res.ok)
1370
+ return null;
1371
+ const r = resolveHostInRegistry(res.registry, id);
1372
+ return r.ok ? r.host : null;
1373
+ },
1374
+ hasSession: (session) => tmuxAdapter.hasSession(session),
1375
+ });
1376
+ }
1183
1377
  // UI Enhancement Pack v0:
1184
1378
  // - file allowlist (item 3) from OPENRIG_FILES_ALLOWLIST
1185
1379
  // - atomic write service (item 4) wired only when allowlist non-empty
@@ -1270,7 +1464,13 @@ export async function createDaemon(opts) {
1270
1464
  // shared AgentActivityStore (constructed above, before the engine)
1271
1465
  // into one bounded wake. Wakes/flags only; cooldown via engine throttle.
1272
1466
  additionalPolicies: [
1273
- makeWorkflowKeepalivePolicy({ db }),
1467
+ makeWorkflowKeepalivePolicy({
1468
+ db,
1469
+ // OPR.0.4.6.WF5 FR-2 class (b): detection-time exception items,
1470
+ // dedup by occurrence; dial resolved via the runtime's cached
1471
+ // spec (never-lost fallback inside the helper).
1472
+ ensureStuckExceptionItem: workflowExceptionEnsurer,
1473
+ }),
1274
1474
  makeIdleGateQitemPolicy({ db, agentActivityStore }),
1275
1475
  ],
1276
1476
  });
@@ -1280,6 +1480,28 @@ export async function createDaemon(opts) {
1280
1480
  });
1281
1481
  deps.watchdogPolicyEngine = watchdogPolicyEngine;
1282
1482
  deps.watchdogScheduler = watchdogScheduler;
1483
+ // OPR.0.4.6.WF1 FR-4: the workflow startup resume sweep — re-arm
1484
+ // keepalives, reissue lost post-commit nudges (pending frontier
1485
+ // packets never nudged), surface stuck instances. Runs after the
1486
+ // watchdog + transport are wired so re-nudges actually deliver.
1487
+ // Failures are logged, never fatal: a sweep problem must not
1488
+ // bring the daemon down.
1489
+ if (workflowRuntime && queueRepoForWorkflow) {
1490
+ try {
1491
+ const { runWorkflowBootSweep } = await import("./domain/workflow-boot-sweep.js");
1492
+ await runWorkflowBootSweep({
1493
+ instanceStore: workflowRuntime.instanceStore,
1494
+ queueRepo: queueRepoForWorkflow,
1495
+ watchdogJobsRepo: watchdogJobsRepoInstance,
1496
+ log: (line) => console.log(line),
1497
+ // OPR.0.4.6.WF5 FR-2 class (b): the sweep leg of detection.
1498
+ ensureStuckExceptionItem: workflowExceptionEnsurer,
1499
+ });
1500
+ }
1501
+ catch (err) {
1502
+ console.warn(`workflow boot sweep: failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
1503
+ }
1504
+ }
1283
1505
  }
1284
1506
  // Context monitor — constructed before createApp so routes can access pollOnce for refresh.
1285
1507
  // Caller (index.ts) starts polling after listen.
@@ -1294,6 +1516,7 @@ export async function createDaemon(opts) {
1294
1516
  const contextMonitor = new ContextMonitor(db, contextUsageStore, claudeAdapter, compactionEnforcer, {
1295
1517
  "claude-code": claudeAdapter,
1296
1518
  codex: codexAdapter,
1519
+ pi: piAdapter,
1297
1520
  });
1298
1521
  deps.contextMonitor = contextMonitor;
1299
1522
  // OPR.0.4.3.14 — expose the SAME enforcer instance to routes for the manual