@openrig/cli 0.4.6 → 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 (352) 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 -14
  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 +175 -105
  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 +20 -4
  25. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  26. package/daemon/dist/build-info.js +3 -3
  27. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +3 -0
  28. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  29. package/daemon/dist/domain/claude-compaction-enforcer.js +19 -3
  30. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  31. package/daemon/dist/domain/cmux-layout-service.d.ts +36 -0
  32. package/daemon/dist/domain/cmux-layout-service.d.ts.map +1 -1
  33. package/daemon/dist/domain/cmux-layout-service.js +100 -28
  34. package/daemon/dist/domain/cmux-layout-service.js.map +1 -1
  35. package/daemon/dist/domain/context-monitor.d.ts +2 -0
  36. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  37. package/daemon/dist/domain/context-monitor.js +14 -0
  38. package/daemon/dist/domain/context-monitor.js.map +1 -1
  39. package/daemon/dist/domain/feed/attention-aggregator.js +1 -1
  40. package/daemon/dist/domain/feed/attention-aggregator.js.map +1 -1
  41. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
  42. package/daemon/dist/domain/hosts/hosts-registry-reader.js +12 -10
  43. package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
  44. package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts.map +1 -1
  45. package/daemon/dist/domain/hosts/hosts-registry-writer.js +3 -2
  46. package/daemon/dist/domain/hosts/hosts-registry-writer.js.map +1 -1
  47. package/daemon/dist/domain/hosts/read-through.js +1 -1
  48. package/daemon/dist/domain/hosts/read-through.js.map +1 -1
  49. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -1
  50. package/daemon/dist/domain/hosts/remote-daemon-http.js +8 -5
  51. package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -1
  52. package/daemon/dist/domain/node-inventory.d.ts +3 -12
  53. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  54. package/daemon/dist/domain/node-inventory.js +55 -13
  55. package/daemon/dist/domain/node-inventory.js.map +1 -1
  56. package/daemon/dist/domain/plugin-vendor-service.d.ts +2 -0
  57. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  58. package/daemon/dist/domain/plugin-vendor-service.js +23 -0
  59. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  60. package/daemon/dist/domain/projection-lane.d.ts +7 -0
  61. package/daemon/dist/domain/projection-lane.d.ts.map +1 -0
  62. package/daemon/dist/domain/projection-lane.js +28 -0
  63. package/daemon/dist/domain/projection-lane.js.map +1 -0
  64. package/daemon/dist/domain/ps-projection.d.ts +19 -0
  65. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  66. package/daemon/dist/domain/ps-projection.js +46 -6
  67. package/daemon/dist/domain/ps-projection.js.map +1 -1
  68. package/daemon/dist/domain/queue-repository.d.ts +14 -10
  69. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  70. package/daemon/dist/domain/queue-repository.js +33 -12
  71. package/daemon/dist/domain/queue-repository.js.map +1 -1
  72. package/daemon/dist/domain/review/compose.d.ts +77 -4
  73. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  74. package/daemon/dist/domain/review/compose.js +152 -16
  75. package/daemon/dist/domain/review/compose.js.map +1 -1
  76. package/daemon/dist/domain/review/fleet-compose.js +1 -1
  77. package/daemon/dist/domain/review/fleet-compose.js.map +1 -1
  78. package/daemon/dist/domain/review/gather.d.ts +1 -1
  79. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  80. package/daemon/dist/domain/review/gather.js +92 -67
  81. package/daemon/dist/domain/review/gather.js.map +1 -1
  82. package/daemon/dist/domain/review/proof-io.d.ts +2 -0
  83. package/daemon/dist/domain/review/proof-io.d.ts.map +1 -0
  84. package/daemon/dist/domain/review/proof-io.js +38 -0
  85. package/daemon/dist/domain/review/proof-io.js.map +1 -0
  86. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  87. package/daemon/dist/domain/rigspec-instantiator.js +15 -2
  88. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  89. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +8 -0
  90. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -0
  91. package/daemon/dist/domain/scope/plan-lock-artifacts.js +57 -0
  92. package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -0
  93. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +38 -0
  94. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -0
  95. package/daemon/dist/domain/scope/scaffold-placeholder.js +98 -0
  96. package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -0
  97. package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  98. package/daemon/dist/domain/scope/scope-approve.js +22 -1
  99. package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  100. package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  101. package/daemon/dist/domain/scope/scope-audit.js +57 -20
  102. package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  103. package/daemon/dist/domain/session-transport.d.ts +17 -0
  104. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  105. package/daemon/dist/domain/session-transport.js +44 -0
  106. package/daemon/dist/domain/session-transport.js.map +1 -1
  107. package/daemon/dist/domain/slices/qitem-membership.d.ts +17 -0
  108. package/daemon/dist/domain/slices/qitem-membership.d.ts.map +1 -0
  109. package/daemon/dist/domain/slices/qitem-membership.js +60 -0
  110. package/daemon/dist/domain/slices/qitem-membership.js.map +1 -0
  111. package/daemon/dist/domain/slices/slice-detail-projector.d.ts +5 -0
  112. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  113. package/daemon/dist/domain/slices/slice-detail-projector.js +157 -11
  114. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  115. package/daemon/dist/domain/slices/slice-indexer.d.ts +86 -0
  116. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  117. package/daemon/dist/domain/slices/slice-indexer.js +422 -45
  118. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  119. package/daemon/dist/domain/startup-orchestrator.d.ts +9 -0
  120. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  121. package/daemon/dist/domain/startup-orchestrator.js +71 -3
  122. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  123. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts +12 -11
  124. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -1
  125. package/daemon/dist/domain/terminal/cmux-provider-adapter.js +61 -28
  126. package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -1
  127. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +27 -10
  128. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  129. package/daemon/dist/domain/terminal/herdr-adapter.js +74 -33
  130. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  131. package/daemon/dist/domain/transcript-capture.d.ts +3 -0
  132. package/daemon/dist/domain/transcript-capture.d.ts.map +1 -1
  133. package/daemon/dist/domain/transcript-capture.js +28 -0
  134. package/daemon/dist/domain/transcript-capture.js.map +1 -1
  135. package/daemon/dist/domain/transcript-store.d.ts +10 -0
  136. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  137. package/daemon/dist/domain/transcript-store.js +26 -0
  138. package/daemon/dist/domain/transcript-store.js.map +1 -1
  139. package/daemon/dist/domain/types.d.ts +4 -0
  140. package/daemon/dist/domain/types.d.ts.map +1 -1
  141. package/daemon/dist/domain/types.js.map +1 -1
  142. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  143. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +9 -4
  144. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  145. package/daemon/dist/domain/workspace/workspace-doctor.js +1 -1
  146. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  147. package/daemon/dist/routes/mission-control.js +1 -1
  148. package/daemon/dist/routes/mission-control.js.map +1 -1
  149. package/daemon/dist/routes/missions.d.ts +7 -0
  150. package/daemon/dist/routes/missions.d.ts.map +1 -1
  151. package/daemon/dist/routes/missions.js +6 -1
  152. package/daemon/dist/routes/missions.js.map +1 -1
  153. package/daemon/dist/routes/ps.d.ts.map +1 -1
  154. package/daemon/dist/routes/ps.js +5 -1
  155. package/daemon/dist/routes/ps.js.map +1 -1
  156. package/daemon/dist/routes/queue.d.ts.map +1 -1
  157. package/daemon/dist/routes/queue.js +9 -2
  158. package/daemon/dist/routes/queue.js.map +1 -1
  159. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  160. package/daemon/dist/routes/rigs.js +21 -10
  161. package/daemon/dist/routes/rigs.js.map +1 -1
  162. package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  163. package/daemon/dist/routes/scope-audit.js +141 -135
  164. package/daemon/dist/routes/scope-audit.js.map +1 -1
  165. package/daemon/dist/routes/sessions.js +2 -1
  166. package/daemon/dist/routes/sessions.js.map +1 -1
  167. package/daemon/dist/routes/slices.d.ts.map +1 -1
  168. package/daemon/dist/routes/slices.js +48 -38
  169. package/daemon/dist/routes/slices.js.map +1 -1
  170. package/daemon/dist/routes/transcripts.d.ts.map +1 -1
  171. package/daemon/dist/routes/transcripts.js +62 -33
  172. package/daemon/dist/routes/transcripts.js.map +1 -1
  173. package/daemon/dist/startup.d.ts.map +1 -1
  174. package/daemon/dist/startup.js +25 -11
  175. package/daemon/dist/startup.js.map +1 -1
  176. package/daemon/docs/reference/agent-startup-guide.md +1 -0
  177. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +2 -1
  178. package/daemon/specs/agents/conveyor/builder/agent.yaml +2 -1
  179. package/daemon/specs/agents/conveyor/lead/agent.yaml +2 -1
  180. package/daemon/specs/agents/conveyor/planner/agent.yaml +2 -1
  181. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +2 -1
  182. package/daemon/specs/agents/design/product-designer/agent.yaml +12 -2
  183. package/daemon/specs/agents/development/implementer/agent.yaml +12 -2
  184. package/daemon/specs/agents/development/qa/agent.yaml +12 -2
  185. package/daemon/specs/agents/development/qa/guidance/role.md +1 -0
  186. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +2 -1
  187. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +2 -1
  188. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +12 -2
  189. package/daemon/specs/agents/product-management/pm/agent.yaml +1 -2
  190. package/daemon/specs/agents/research/analyst/agent.yaml +2 -1
  191. package/daemon/specs/agents/research/synthesizer/agent.yaml +2 -1
  192. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +12 -2
  193. package/daemon/specs/agents/shared/agent.yaml +5 -8
  194. package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +13 -1
  195. package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +132 -0
  196. package/daemon/{assets/plugins/openrig-core/skills → specs/agents/shared/skills/core}/agent-startup-and-context-ingestion/SKILL.md +27 -19
  197. package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +264 -0
  198. package/daemon/specs/agents/shared/skills/core/cross-host-rig-commands/SKILL.md +190 -0
  199. package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +104 -0
  200. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +25 -8
  201. package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +0 -5
  202. package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +1 -6
  203. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +460 -0
  204. package/daemon/specs/agents/shared/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
  205. package/daemon/specs/agents/shared/skills/core/rig-lifecycle/SKILL.md +22 -11
  206. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +160 -0
  207. package/daemon/specs/agents/shared/skills/core/specification-system/SKILL.md +103 -0
  208. package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
  209. package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +125 -0
  210. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +4 -4
  211. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +3 -0
  212. package/daemon/specs/agents/shared/skills/process/brainstorming/OPENRIG.md +3 -3
  213. package/daemon/specs/agents/shared/skills/process/executing-plans/OPENRIG.md +1 -1
  214. package/daemon/specs/agents/shared/skills/process/frontend-design/SKILL.md +6 -3
  215. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +1 -1
  216. package/daemon/specs/agents/shared/skills/process/using-superpowers/OPENRIG.md +1 -1
  217. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +12 -2
  218. package/daemon/specs/agents/shared/skills/process/writing-plans/OPENRIG.md +1 -1
  219. package/daemon/specs/rigs/focused/pm-team/CULTURE.md +1 -1
  220. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/agent.yaml +2 -2
  221. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +5 -4
  222. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/agent.yaml +2 -2
  223. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +3 -5
  224. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/agent.yaml +2 -2
  225. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +3 -4
  226. package/daemon/specs/rigs/preview/product-team/CULTURE.md +1 -1
  227. package/dist/bin-wrapper.d.ts.map +1 -1
  228. package/dist/bin-wrapper.js +3 -1
  229. package/dist/bin-wrapper.js.map +1 -1
  230. package/dist/build-info.js +3 -3
  231. package/dist/cli-error.d.ts +33 -0
  232. package/dist/cli-error.d.ts.map +1 -0
  233. package/dist/cli-error.js +94 -0
  234. package/dist/cli-error.js.map +1 -0
  235. package/dist/commands/config-init-workspace.js +1 -1
  236. package/dist/commands/doctor.d.ts +1 -1
  237. package/dist/commands/doctor.d.ts.map +1 -1
  238. package/dist/commands/doctor.js +17 -11
  239. package/dist/commands/doctor.js.map +1 -1
  240. package/dist/commands/host.d.ts.map +1 -1
  241. package/dist/commands/host.js +24 -10
  242. package/dist/commands/host.js.map +1 -1
  243. package/dist/commands/proof.js +1 -1
  244. package/dist/commands/proof.js.map +1 -1
  245. package/dist/commands/ps.d.ts.map +1 -1
  246. package/dist/commands/ps.js +16 -2
  247. package/dist/commands/ps.js.map +1 -1
  248. package/dist/commands/queue.d.ts.map +1 -1
  249. package/dist/commands/queue.js +103 -24
  250. package/dist/commands/queue.js.map +1 -1
  251. package/dist/commands/rig.d.ts.map +1 -1
  252. package/dist/commands/rig.js +122 -0
  253. package/dist/commands/rig.js.map +1 -1
  254. package/dist/commands/scope.js +2 -2
  255. package/dist/commands/scope.js.map +1 -1
  256. package/dist/commands/send.d.ts.map +1 -1
  257. package/dist/commands/send.js +118 -24
  258. package/dist/commands/send.js.map +1 -1
  259. package/dist/commands/slack.d.ts +37 -0
  260. package/dist/commands/slack.d.ts.map +1 -0
  261. package/dist/commands/slack.js +274 -0
  262. package/dist/commands/slack.js.map +1 -0
  263. package/dist/commands/ui.d.ts +1 -0
  264. package/dist/commands/ui.d.ts.map +1 -1
  265. package/dist/commands/ui.js +2 -0
  266. package/dist/commands/ui.js.map +1 -1
  267. package/dist/commands/up.js +1 -1
  268. package/dist/commands/up.js.map +1 -1
  269. package/dist/commands/whoami.d.ts.map +1 -1
  270. package/dist/commands/whoami.js +3 -3
  271. package/dist/commands/whoami.js.map +1 -1
  272. package/dist/daemon-lifecycle.d.ts.map +1 -1
  273. package/dist/daemon-lifecycle.js +45 -14
  274. package/dist/daemon-lifecycle.js.map +1 -1
  275. package/dist/host-registry.d.ts +6 -1
  276. package/dist/host-registry.d.ts.map +1 -1
  277. package/dist/host-registry.js +15 -6
  278. package/dist/host-registry.js.map +1 -1
  279. package/dist/index.d.ts +3 -0
  280. package/dist/index.d.ts.map +1 -1
  281. package/dist/index.js +6 -1
  282. package/dist/index.js.map +1 -1
  283. package/dist/lib/scope/scaffold-placeholder.d.ts +38 -0
  284. package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -0
  285. package/dist/lib/scope/scaffold-placeholder.js +98 -0
  286. package/dist/lib/scope/scaffold-placeholder.js.map +1 -0
  287. package/dist/lib/scope/scope-audit.d.ts.map +1 -1
  288. package/dist/lib/scope/scope-audit.js +57 -20
  289. package/dist/lib/scope/scope-audit.js.map +1 -1
  290. package/dist/lib/scope-templates/backlog-deprecation.md +1 -1
  291. package/dist/lib/scope-templates/backlog-tech-debt.md +1 -1
  292. package/dist/lib/scope-templates/bug-fix.md +1 -1
  293. package/dist/lib/scope-templates/implementation-prd.md +1 -1
  294. package/dist/lib/scope-templates/mission-notes.md +7 -2
  295. package/dist/lib/scope-templates/mission-placeholder.md +1 -1
  296. package/dist/lib/scope-templates/mission-progress.md +1 -1
  297. package/dist/lib/scope-templates/mission-release.md +1 -1
  298. package/dist/lib/scope-templates/placeholder.md +1 -1
  299. package/dist/lib/scope-templates/proof.md +1 -1
  300. package/dist/lib/scope-templates/release-feature.md +1 -1
  301. package/dist/lib/scope-templates/research.md +1 -1
  302. package/dist/lib/scope-templates/slice-progress.md +1 -1
  303. package/dist/remote-host-ops.d.ts.map +1 -1
  304. package/dist/remote-host-ops.js +2 -2
  305. package/dist/remote-host-ops.js.map +1 -1
  306. package/dist/slack/config.d.ts +41 -0
  307. package/dist/slack/config.d.ts.map +1 -0
  308. package/dist/slack/config.js +60 -0
  309. package/dist/slack/config.js.map +1 -0
  310. package/dist/slack/inbound.d.ts +75 -0
  311. package/dist/slack/inbound.d.ts.map +1 -0
  312. package/dist/slack/inbound.js +133 -0
  313. package/dist/slack/inbound.js.map +1 -0
  314. package/dist/slack/message.d.ts +26 -0
  315. package/dist/slack/message.d.ts.map +1 -0
  316. package/dist/slack/message.js +60 -0
  317. package/dist/slack/message.js.map +1 -0
  318. package/dist/slack/outbound.d.ts +39 -0
  319. package/dist/slack/outbound.d.ts.map +1 -0
  320. package/dist/slack/outbound.js +52 -0
  321. package/dist/slack/outbound.js.map +1 -0
  322. package/dist/slack/queue-bridge.d.ts +56 -0
  323. package/dist/slack/queue-bridge.d.ts.map +1 -0
  324. package/dist/slack/queue-bridge.js +114 -0
  325. package/dist/slack/queue-bridge.js.map +1 -0
  326. package/dist/slack/secrets.d.ts +21 -0
  327. package/dist/slack/secrets.d.ts.map +1 -0
  328. package/dist/slack/secrets.js +73 -0
  329. package/dist/slack/secrets.js.map +1 -0
  330. package/dist/slack/slack-api.d.ts +49 -0
  331. package/dist/slack/slack-api.d.ts.map +1 -0
  332. package/dist/slack/slack-api.js +110 -0
  333. package/dist/slack/slack-api.js.map +1 -0
  334. package/dist/slack/state-store.d.ts +62 -0
  335. package/dist/slack/state-store.d.ts.map +1 -0
  336. package/dist/slack/state-store.js +132 -0
  337. package/dist/slack/state-store.js.map +1 -0
  338. package/package.json +1 -1
  339. package/ui/dist/assets/{index-zrFqS7gL.js → index-DkNi0RT8.js} +184 -184
  340. package/ui/dist/assets/index-N-SdPj-I.css +32 -0
  341. package/ui/dist/index.html +2 -2
  342. package/daemon/assets/plugins/openrig-core/skills/openrig-architect/SKILL.md +0 -361
  343. package/daemon/assets/plugins/openrig-core/skills/openrig-cmux/SKILL.md +0 -86
  344. package/daemon/assets/plugins/openrig-core/skills/openrig-herdr/SKILL.md +0 -158
  345. package/daemon/assets/plugins/openrig-core/skills/openrig-operator/SKILL.md +0 -222
  346. package/daemon/docs/reference/product-factory-vps-runbook.md +0 -132
  347. package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +0 -113
  348. package/daemon/specs/agents/shared/skills/core/openrig-installer/SKILL.md +0 -142
  349. package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +0 -110
  350. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +0 -1245
  351. package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +0 -153
  352. package/ui/dist/assets/index-CFqxa0zW.css +0 -32
@@ -1,361 +0,0 @@
1
- ---
2
- name: openrig-architect
3
- description: Use when designing multi-agent topologies that run ON OpenRig — authoring RigSpec and AgentSpec files for new rigs, creating agent startup content (guidance / skills / culture), or diagnosing why a launched rig's agents aren't behaving as intended. NOT for changing OpenRig itself (work in the openrig product repo); NOT for ordinary CLI operation of an existing rig (use openrig-user). Covers the full authoring lifecycle from user intent to validated, launchable rig.
4
- metadata:
5
- openrig:
6
- stage: factory-approved
7
- last_verified: "2026-05-04"
8
- distribution_scope: product-bound
9
- source_evidence: |
10
- Bootstrap skill — NPM install lands this in personal homes (~/.claude/skills/, ~/.agents/skills/) for users authoring their own rigs.
11
- sibling_skills:
12
- - openrig-user
13
- - openrig-operator
14
- - forming-an-openrig-mental-model
15
- transfer_test: pending
16
- ---
17
-
18
- # OpenRig Architect
19
-
20
- You are now an OpenRig architect. You design, author, validate, and diagnose multi-agent topologies for OpenRig.
21
-
22
- Your job is to take a user's intent — "I need a team that does X" — and produce a complete, functioning rig: the topology spec, the agent specs, the guidance files, the culture, the startup content, and everything else needed for the rig to boot and the agents to know what to do.
23
-
24
- You also diagnose problems when a rig launches but agents aren't behaving as intended.
25
-
26
- ## Before You Design: Required Reading
27
-
28
- Load these before starting any design work. The quality of your output depends on the depth of knowledge you bring.
29
-
30
- **Required (read all of these):**
31
-
32
- 1. **`openrig-user` skill** — full OpenRig CLI surface. You must know the operator primitives. If your runtime supports skills, load it by name. Otherwise, look for it at `~/.openrig/skills/openrig-user/SKILL.md` (the runtime install dogfood mirror — packaged skills land here) or inside the OpenRig installation under `packages/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md`. The `~/.openrig/reference/` directory holds reference docs (rig-spec.md, agent-spec.md, etc.), NOT skills.
33
-
34
- 2. **OpenRig reference docs** — these are installed at `~/.openrig/reference/` when the daemon starts. Read all of them:
35
- - `~/.openrig/reference/rig-spec.md` — canonical RigSpec YAML reference. Every field, validation rule, default.
36
- - `~/.openrig/reference/agent-spec.md` — canonical AgentSpec YAML reference. Same depth.
37
- - `~/.openrig/reference/agent-startup-guide.md` — how to think about what goes into agent startup. Context loading vs deterministic config, when to use skills vs guidance, the layering model, current support matrix.
38
- - `~/.openrig/reference/edge-types.md` — what edges do today vs what they're intended to do.
39
-
40
- If `~/.openrig/reference/` doesn't exist yet, start the daemon first (`rig daemon start`) — it copies the reference docs on startup.
41
-
42
- **Read as worked examples:**
43
-
44
- 3. **Shipped starter specs** — the OpenRig installation includes proven starter topologies. Find them by running `rig specs ls`. Read the ones that are relevant to your design task, especially:
45
- - `implementation-pair` — the smallest effective development unit (2 agents)
46
- - `secrets-manager` — a managed-app rig with services integration and a specialist agent
47
-
48
- **Read if present on this host:**
49
-
50
- 4. **Host-level doctrine file** (if your team maintains one — e.g., a HOST-TOPOLOGY doc that defines canonical rig classes, context-sharing patterns, and authoring SOPs for high-stakes rigs). If present, it supersedes the baseline process below for complex or high-stakes rigs (≥4 members, HA, managed-app, or shared/copied). Solo operators and small/focused rigs use the baseline below directly.
51
- 5. **Agent-facing software design principles** if your rig ships a new CLI, service, or managed app that agents will operate. Treat the operating surface as a context-engineering problem: every error message and help text gives the agent information to act on.
52
-
53
- **Load as needed:**
54
- - Domain-specific skills when designing specialist agents — find shipped skills inside the OpenRig installation under the `specs/agents/` tree
55
- - If the design session is long and you're running inside a managed rig, use `rig whoami --json` to recover your identity after compaction
56
-
57
- Do not skip the required reading. A rig architect who doesn't know the spec format will produce specs that don't validate. An architect who doesn't know the startup layering model will produce agents that boot without knowing their role. An architect who doesn't check for host-level doctrine will reinvent conventions the host has already established.
58
-
59
- ## The Design Process
60
-
61
- ### Step 1: Understand the User's Intent
62
-
63
- Before touching YAML, understand what the user actually needs:
64
-
65
- - **What is the goal?** Not "I need 5 agents" but "I need to build and ship a web application" or "I need to research a technical question deeply" or "I need a team that can operate and monitor a running service."
66
- - **What are the workflows?** How does work flow from intent to completion? Who does what? Where are the handoffs?
67
- - **What is the project?** What codebase, what tech stack, what domain? This shapes agent specialization and startup content.
68
- - **What runtimes are available?** Does the user have Claude Code? Codex? Both? Runtime availability constrains topology design.
69
- - **How autonomous should it be?** Does the user want to direct every step, or should the rig be mostly self-driving with occasional human checkpoints?
70
-
71
- Ask clarifying questions if the intent is ambiguous. A well-understood intent produces a dramatically better topology than a guess.
72
-
73
- ### Step 2: Identify Bounded Contexts → Pods
74
-
75
- Every rig is organized into pods — bounded context groups where members share a workflow concern. The question is: what are the natural groupings?
76
-
77
- **Common pod patterns:**
78
-
79
- | Pod | Purpose | When to use |
80
- |-----|---------|-------------|
81
- | Orchestration | Coordination, dispatch, monitoring | Almost always — any rig with 3+ agents needs an orchestrator |
82
- | Development | Implementation, testing, quality | Any rig that writes code |
83
- | Review | Independent code review, architecture review | When quality gates matter (production code, security-sensitive work) |
84
- | Research | Deep investigation, analysis, synthesis | When the work requires research before implementation |
85
- | Design | UX, interaction design, product decisions | When the work has a user-facing interface |
86
- | Specialist | Domain-specific operations (Vault, DB, infra) | When a specific technology needs dedicated expertise |
87
-
88
- **Sizing principles:**
89
-
90
- - **Solo agent:** Only when the task is genuinely single-person (quick script, simple question). No rig needed.
91
- - **Pair (2 agents):** The minimum effective unit for quality work. One does, one verifies. The `implementation-pair` pattern.
92
- - **Small team (3-5 agents):** Orchestrator + one or two working pods. Good starting point for focused projects.
93
- - **Full team (6-10 agents):** Multiple bounded contexts with orchestration, development, review, and potentially research or design.
94
- - **Large team (10-40+ agents):** Complex projects with many concerns. Include pods for development, review, research, documentation, release management, strategy, and any other bounded context the project needs.
95
-
96
- **Important:** Agents do NOT all need to be busy at the same time. A rig is a network, not an assembly line. Some pods will be highly active (dev, review) while others are available on-demand (research, documentation, release management). An idle agent has near-zero cost but is immediately available when any other agent in the rig needs it — for quick questions, lookups, delegation, or specialized work. Design for availability, not constant utilization.
97
-
98
- **Start small to increase the likelihood of success,** not because large rigs are wasteful. A 3-agent rig that boots and works correctly validates your spec authoring before you scale to 20 agents. Once the core topology works, expand with additional pods as needed.
99
-
100
- ### Step 3: Design Agent Roles → Members
101
-
102
- Each pod member needs a clear role. The role determines:
103
- - What agent spec to reference (builtin or custom)
104
- - What profile to use
105
- - What guidance and startup content to provide
106
-
107
- **Builtin agents shipped with OpenRig:**
108
-
109
- | Agent | agent_ref (in shipped starters) | Purpose |
110
- |-------|-------------------------------|---------|
111
- | orchestrator | `local:agents/orchestration/orchestrator` | Rig orchestration lead |
112
- | implementer | `local:agents/development/implementer` | TDD implementation agent |
113
- | qa | `local:agents/development/qa` | Quality assurance agent |
114
- | independent-reviewer | `local:agents/review/independent-reviewer` | Independent code reviewer |
115
- | product-designer | `local:agents/design/product-designer` | Product designer |
116
- | pm | `local:agents/product-management/pm` | Product manager |
117
- | analyst | `local:agents/research/analyst` | Research analyst |
118
- | synthesizer | `local:agents/research/synthesizer` | Research synthesizer |
119
- | vault-specialist | `local:agents/apps/vault-specialist` | Vault domain specialist |
120
-
121
- To verify the current builtin set on this host, run `rig specs ls` and look for entries with type `agent` and source `builtin`.
122
-
123
- **Path resolution:** The `local:` prefix means relative to the rig spec file's directory. In shipped starters, these paths resolve against the builtin specs directory inside the OpenRig installation. When authoring a custom rig spec outside the installation, you have two options:
124
- - **Reference your own agent specs** with `local:` paths relative to your rig spec file
125
- - **Use `path:` with an absolute path** to reference builtins inside the OpenRig installation (look under the `specs/agents/` directory near where `rig` is installed)
126
-
127
- **When to create a custom agent spec:**
128
- - The builtin doesn't match the role (e.g., you need a documentation specialist, a security auditor, a data scientist)
129
- - The role needs domain-specific skills that no builtin carries
130
- - The role needs custom guidance that goes beyond what startup files can provide
131
-
132
- **When to reuse a builtin:**
133
- - The role maps cleanly to an existing builtin (most implementation, QA, review, and orchestration roles)
134
- - You can customize behavior through startup files and culture without changing the agent spec
135
-
136
- ### Step 4: Choose Runtimes and Models
137
-
138
- Each member needs a `runtime` and optionally a `model`.
139
-
140
- **Runtime selection:**
141
- - `claude-code` — Claude Code. Best for: complex reasoning, architecture, code review, orchestration. Supports `/loop` for recurring tasks, rich hooks system, MCP servers.
142
- - `codex` — Codex. Best for: parallel work, implementation, testing. Different approval model. Less reliable for recurring tasks.
143
- - `terminal` — Infrastructure nodes. Servers, log tails, build watchers. Not an agent — a process.
144
-
145
- **Runtime diversity is valuable.** Using both Claude Code and Codex in the same rig gives you different reasoning perspectives. The `product-team` starter uses Claude Code for the lead/impl/design/r1 roles and Codex for peer/qa/r2 roles. This is deliberate — model diversity catches different classes of issues.
146
-
147
- **Model selection** is optional. The runtime's default model is usually fine. Override only when you have a specific reason (e.g., a complex architecture agent might benefit from a specific model).
148
-
149
- ### Step 5: Design Edge Topology
150
-
151
- Edges define relationships between members. See `~/.openrig/reference/edge-types.md` for the full reference.
152
-
153
- **Practical rules:**
154
- - Every working pod should have at least one `delegates_to` edge from the orchestrator
155
- - Review pods should have `can_observe` edges to the pods they review
156
- - Within a pod, the primary workflow direction should be expressed as `delegates_to` (e.g., impl → qa)
157
- - `delegates_to` and `spawned_by` affect launch order. Use them for dependency chains.
158
- - `can_observe`, `collaborates_with`, `escalates_to` are informational — they help agents understand the topology but don't constrain launch.
159
-
160
- **Start simple.** You can always add edges later. A rig with only `delegates_to` edges from the orchestrator to working pods is perfectly functional.
161
-
162
- ### Step 6: Design Startup Content Strategy
163
-
164
- This is where most rigs succeed or fail. The topology is mechanical; the startup content is what makes agents actually useful. See `~/.openrig/reference/agent-startup-guide.md` for the full guide.
165
-
166
- **Minimum for every rig:**
167
- 1. Each agent has a `guidance/role.md` — who they are, what they do
168
- 2. The rig has a `CULTURE.md` — how the team works together
169
- 3. Each agent gets `openrig-user` skill — so they know how to use the rig primitives
170
-
171
- **For serious rigs, also include:**
172
- 4. `startup/context.md` per agent — boot-time grounding (project info, environment details)
173
- 5. Pod SOP skills — how each pod operates (implementation-pair SOP, review-pair SOP, etc.)
174
- 6. Project-specific documentation in rig-level startup files
175
-
176
- **The key principle:** An agent that boots without knowing its role, its team's culture, and its project context will produce generic, unhelpful work. The startup content IS the product value. Invest in it.
177
-
178
- ### Step 7: Services Integration (If Needed)
179
-
180
- If the rig needs managed software (databases, API servers, etc.), add a `services` block. See `~/.openrig/reference/rig-spec.md` for the full services reference.
181
-
182
- **When to add services:**
183
- - The agents operate ON software (not just write code)
184
- - The project needs a local dev environment (Postgres, Redis, etc.)
185
- - You're building a managed-app rig (software + specialist agent)
186
-
187
- **Services boot before agents.** If health checks fail, no agents start. This is the hard gate — the environment must be healthy before agents can work.
188
-
189
- ## Authoring: The File Creation Workflow
190
-
191
- ### Directory Layout
192
-
193
- ```
194
- my-rig/
195
- rig.yaml # The RigSpec — required
196
- culture/
197
- CULTURE.md # Rig-wide culture — strongly recommended
198
- agents/
199
- my-custom-agent/
200
- agent.yaml # AgentSpec — if custom agent needed
201
- guidance/
202
- role.md # Role guidance
203
- startup/
204
- context.md # Boot-time context
205
- skills/
206
- my-skill/
207
- SKILL.md # Custom skill if needed
208
- docker-compose.yaml # Only if services block is used
209
- ```
210
-
211
- For rigs that reuse builtin agents, the agents directory is often unnecessary — the rig spec references the builtins directly.
212
-
213
- ### Workflow
214
-
215
- 1. **Write the rig spec** (`rig.yaml`) — define pods, members, edges, optionally services
216
- 2. **Write or reference agent specs** — builtins for standard roles, custom for specialized roles
217
- 3. **Write CULTURE.md** — the team operating manual
218
- 4. **Write role guidance** for each custom agent — who they are, what they do
219
- 5. **Write startup context** for agents that need environment grounding
220
- 6. **Validate:** `rig spec validate rig.yaml` and `rig agent validate agents/*/agent.yaml`
221
- 7. **Confirm the runtime cwd** — do not assume agents should work from the directory where the rig spec is stored. The spec root controls file resolution; the runtime cwd controls trust, project guidance, permissions, and repo context.
222
- 8. **Launch:** `rig up rig.yaml --cwd /path/to/project`
223
- 9. **Verify:** `rig ps --nodes` — all agents ready? Check `rig capture` on each agent.
224
-
225
- ### Validation Is Non-Negotiable
226
-
227
- Always validate before launching:
228
-
229
- ```bash
230
- rig spec validate rig.yaml
231
- rig agent validate agents/my-agent/agent.yaml
232
- ```
233
-
234
- If validation fails, fix the errors. Do not try to launch an invalid spec — it will fail with a less helpful error.
235
-
236
- ## Diagnosis: When Things Go Wrong
237
-
238
- ### Agent doesn't know its role
239
-
240
- **Symptom:** Agent produces generic output, doesn't follow team conventions.
241
- **Root cause:** Missing or insufficient `guidance/role.md`.
242
- **Fix:** Write a clear role guidance file. Include responsibilities, working rhythm, and principles. Reference it in both `resources.guidance` and `startup.files`.
243
-
244
- ### Agent can't coordinate with peers
245
-
246
- **Symptom:** Agent tries raw tmux commands instead of `rig send`, doesn't know peer session names.
247
- **Root cause:** Agent didn't receive `openrig-user` skill or `openrig-start` overlay.
248
- **Fix:** Ensure the agent's profile `uses.skills` includes `openrig-user`. Verify via `rig ps --nodes` that the agent shows expected startup status; check installed skills via direct startup/capture/transcript evidence or the UI node detail (the `rig ps --nodes` projection does not expose installed-resource counts).
249
-
250
- ### Agent hits approval prompts on rig commands
251
-
252
- **Symptom:** Agent stalls on `rig whoami`, `rig send`, etc.
253
- **Root cause:** Claude Code permissions not configured for rig commands.
254
- **Fix:** Describe the required permissions in startup context. The agent should configure `~/.claude/settings.json` with allowlisted rig commands. See `~/.openrig/reference/agent-startup-guide.md` for the current support matrix.
255
-
256
- ### Agents idle — topology doesn't engage the team
257
-
258
- **Symptom:** Orchestrator works with one or two agents, others sit idle.
259
- **Root cause:** Missing `CULTURE.md` or pod SOP content that describes how the full team coordinates.
260
- **Fix:** Write a culture file that explicitly describes the coordination protocol. Include delegation patterns, review gates, and when each pod should be engaged.
261
-
262
- ### Services don't boot
263
-
264
- **Symptom:** `rig up` fails before agents launch with a service health error.
265
- **Root cause:** Docker Compose issue, health check failure, or port conflict.
266
- **Fix:** Check `docker compose up` manually with the compose file. Verify health check URLs are correct. Check for port conflicts.
267
-
268
- ### Agent boots from the wrong project context
269
-
270
- **Symptom:** Agent misses expected guidance, trust settings, permissions, or repo context even though the spec validates.
271
- **Root cause:** The rig spec directory was treated as the agent's runtime cwd by assumption.
272
- **Fix:** Confirm the intended cwd before launch. The spec can live in a rig/spec shelf while the agent works from the project or hub directory that carries the relevant `AGENTS.md`, `CLAUDE.md`, trust, and permissions. Use member `cwd` or `rig up --cwd` deliberately.
273
-
274
- ### Startup content not delivered
275
-
276
- **Symptom:** Agent is missing expected guidance/skills.
277
- **Root cause:** File paths in the spec don't resolve, or `delivery_hint` is wrong.
278
- **Fix:** Verify file paths resolve relative to their owning artifact — AgentSpec resource paths are relative to the agent spec directory; RigSpec startup, culture, compose, cwd, and `local:` agent-ref paths are relative to the rig root. Check `delivery_hint` — use `guidance_merge` for pre-boot content, `send_text` for post-boot instructions.
279
-
280
- ### Agent startup delivered but agent doesn't use skills
281
-
282
- **Symptom:** Skills are projected but agent doesn't invoke them.
283
- **Root cause:** Agent wasn't told to load them.
284
- **Fix:** In the startup context or role guidance, explicitly tell the agent which skills to load. The belt-and-suspenders pattern: project the skills via the spec AND tell the agent to read them in the guidance.
285
-
286
- ## Pattern Catalog
287
-
288
- ### The Implementation Pair
289
- **2 agents, 1 pod.** The smallest effective development unit. One implements (TDD), one does QA. The implementer proposes, QA approves or rejects, then the implementer commits.
290
-
291
- ```yaml
292
- pods:
293
- - id: dev
294
- label: Development
295
- members:
296
- - id: impl
297
- agent_ref: "local:agents/development/implementer"
298
- runtime: claude-code
299
- profile: default
300
- cwd: "."
301
- - id: qa
302
- agent_ref: "local:agents/development/qa"
303
- runtime: codex
304
- profile: default
305
- cwd: "."
306
- edges:
307
- - kind: delegates_to
308
- from: impl
309
- to: qa
310
- ```
311
-
312
- **Use when:** Focused feature work, bug fixes, small-to-medium implementation tasks.
313
-
314
- ### The Orchestrated Team
315
- **5-7 agents, 3 pods.** Orchestration + development + review. The orchestrator dispatches work, the dev pair implements, the review pair validates independently.
316
-
317
- **Use when:** Production-quality work that needs coordination and independent review.
318
-
319
- ### The Research Team
320
- **3 agents, 2 pods.** Orchestrator + research pair (analyst + synthesizer). The analyst investigates deeply, the synthesizer consolidates findings.
321
-
322
- **Use when:** Technical research, competitive analysis, architecture exploration.
323
-
324
- ### The Managed App
325
- **1+ agents, 1 pod, services block.** Software infrastructure (Docker Compose) plus a specialist agent who knows how to operate it.
326
-
327
- ```yaml
328
- services:
329
- kind: compose
330
- compose_file: docker-compose.yaml
331
- wait_for:
332
- - url: http://127.0.0.1:8200/v1/sys/health
333
-
334
- pods:
335
- - id: vault
336
- label: Vault
337
- members:
338
- - id: specialist
339
- agent_ref: "local:agents/apps/vault-specialist"
340
- runtime: claude-code
341
- profile: default
342
- cwd: "."
343
- edges: []
344
- ```
345
-
346
- **Use when:** The work involves operating software, not just writing code.
347
-
348
- ### The Full Product Team
349
- **7 agents, 3 pods.** The kitchen-sink topology: orchestration pair, development pod (impl + qa + design), review pair. See the `product-team` starter spec for the complete worked example.
350
-
351
- **Use when:** Full product development with design, implementation, QA, and independent review. Requires strong culture and SOP content to keep all agents engaged.
352
-
353
- ## Final Notes
354
-
355
- **Start simple, add complexity when needed.** A working implementation pair is better than a broken full team. Launch with the minimum viable topology, verify it works, then expand.
356
-
357
- **Culture is not optional for team rigs.** Any rig with 3+ agents needs a CULTURE.md. Without it, agents will default to generic behavior and the topology will underperform.
358
-
359
- **Validate early and often.** Run `rig spec validate` after every change. Run `rig agent validate` after every agent spec edit. Fix errors immediately — don't accumulate them.
360
-
361
- **The startup content IS the product.** The YAML topology is scaffolding. What makes a rig actually useful is the guidance, culture, skills, and startup context that agents receive. Invest your authoring time there.
@@ -1,86 +0,0 @@
1
- ---
2
- name: openrig-cmux
3
- description: >
4
- Use when opening OpenRig fleet terminals into cmux — turning a rig, pod, mission, slice, or saved
5
- view into live agent tiles via `rig terminal --provider cmux`, or driving cmux on an agent's
6
- request. Same OpenRig view semantics as openrig-herdr (the verbs, honest-partial/degrade, read-only
7
- cross-rig, scroll/copy, same-size-only duplicates); cmux is the **best-effort** provider (herdr is
8
- the default and the proof-gated one). Prefer openrig-herdr unless cmux is specifically wanted.
9
- metadata:
10
- openrig:
11
- stage: candidate
12
- distribution_scope: product-bound
13
- source_evidence: |
14
- cmux is OpenRig's shipped terminal provider generalized onto `rig terminal <provider>` —
15
- best-effort, not proof-gated. Authored clean-room.
16
- transfer_test: pending
17
- sibling_skills:
18
- - openrig-herdr
19
- - openrig-user
20
- ---
21
-
22
- # openrig-cmux
23
-
24
- cmux is a **provider** for OpenRig views — the same `rig terminal` surface as herdr, rendering the
25
- tiles into cmux instead. It is the provider OpenRig already shipped (the existing "Launch in cmux"
26
- affordance generalizes onto `rig terminal <provider>`), kept working. The OpenRig-semantic half is
27
- identical to openrig-herdr: OpenRig decides **which** agents form a view; the provider renders the
28
- pixels. **Read openrig-herdr first for the full model** — this skill only calls out what differs for
29
- cmux.
30
-
31
- ## Provider status — cmux is best-effort
32
-
33
- - **herdr is the default and the proof-gated provider**; **cmux is best-effort** — it ships on the
34
- same `rig terminal <provider>` + web-launcher neighborhood, but a cmux miss is not a slice failure.
35
- Reach for cmux when it is specifically wanted; otherwise default to herdr (`rig terminal open <view>`
36
- with no `--provider`).
37
- - Views are **provider-agnostic**: the same view + the same agents + the same semantics carry across
38
- herdr and cmux. A saved view opens in either.
39
-
40
- ## The surface (same three verbs, `--provider cmux`)
41
-
42
- ```bash
43
- rig terminal open <view> --provider cmux [--json] # open a view into cmux (herdr is the no-flag default)
44
- rig terminal views [--json] # the same view library, provider-agnostic
45
- rig terminal status --provider cmux [--json] # cmux liveness / health
46
- ```
47
-
48
- `<view>` resolves exactly as with herdr: a **rig name** · **`pod:<rig>/<podNamespace>`** ·
49
- **`mission:<id>`** · **`slice:<id>`** (derived live) · a **saved-view name**.
50
-
51
- ## What carries over unchanged from openrig-herdr
52
-
53
- All of these behave identically — see openrig-herdr for the detail:
54
-
55
- - **Honest-partial / honest-degrade** — opened / absent / degraded, each named; partial opens exit 0,
56
- zero-pane exits non-zero; an http-registered host's agents degrade with the reason ("host `<id>` is
57
- http-registered; tiles need ssh"), never silently dropped.
58
- - **Read-only policy** — a rig or `pod:` view is interactive; `mission:` / `slice:` views are
59
- read-only by construction; a saved view is per-member (`readOnly`). A read-only pane is
60
- `tmux attach -r` (client `readonly=1`, keystrokes physically cannot reach the agent). See openrig-herdr.
61
- - **Safety rails (the fleet-safety rail)** — a tile is a *view* (nested `tmux attach`) of a
62
- daemon-owned session; never move/join/kill/re-parent a daemon-owned pane; closing a tile detaches
63
- one client and leaves the session untouched; never live-flip tmux options on a running seat in
64
- production (prove it in an isolated environment first).
65
- - **Scroll + copy out of the box** — the daemon's terminal defaults (per-session scroll at launch +
66
- the server's clipboard defaults); running seats pick up wheel-scroll at their next relaunch.
67
- - **Limits** — tile chrome v1 = a plain label; same-size panes for duplicate/multi-view membership
68
- (the different-size resize mismatch is an inherent tmux multi-client limit, documented not fixed).
69
-
70
- ## cmux-specific notes
71
-
72
- - **Open-or-focus per agent** — cmux's shipped integration opens a node or focuses it if already open;
73
- expect focus (not a duplicate) when a seat is already tiled in cmux.
74
- - **The shipped "Launch in cmux" affordance is preserved** (byte-compatible) and generalizes into the
75
- provider + view picker; opening cmux from the web launcher still works.
76
- - **No AGPL arm's-length concern** — unlike herdr, cmux is OpenRig's shipped provider integration; the
77
- clean-room/never-embed rail that applies to herdr is not a cmux constraint. (This skill itself is
78
- still authored clean-room.)
79
-
80
- ## Saved views — provider-agnostic
81
-
82
- Saved views are **hand-authored** in `terminal-views.yaml` (v1 has no save/write verb) and are
83
- **provider-agnostic** — see **openrig-herdr** for the exact schema, the store facts (atomic tmp+rename,
84
- byte-stable, at the OpenRig home root), and the derived-views-never-persisted rule. Reopen any saved
85
- view in cmux with `rig terminal open <id> --provider cmux`. Derived views (a rig, `pod:<rig>/<pod>`,
86
- `mission:<id>`, `slice:<id>`) are computed live and never written to the file.
@@ -1,158 +0,0 @@
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.