@openrig/cli 0.6.9 → 0.6.11

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 (570) hide show
  1. package/README.md +2 -2
  2. package/daemon/assets/onboarding/02-self-and-competent-action.md +4 -3
  3. package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
  4. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
  5. package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +42 -2
  6. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -1
  7. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +7 -1
  8. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +6 -1
  9. package/daemon/assets/skills/rigs/SKILL.md +7 -5
  10. package/daemon/context-packs/help/manifest.yaml +1 -1
  11. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  12. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +64 -14
  13. package/daemon/context-packs/reference/getting-started.md +10 -6
  14. package/daemon/context-packs/reference/manifest.yaml +1 -1
  15. package/daemon/context-packs/reference/rig-spec.md +2 -2
  16. package/daemon/context-packs/reference/whats-new.md +151 -74
  17. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +1 -1
  30. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +3 -3
  31. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +2 -2
  38. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/openrig-user/SKILL.md +7 -1
  46. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +6 -1
  69. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  73. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  74. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  75. package/daemon/dist/adapters/claude-code-adapter.d.ts +0 -14
  76. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  77. package/daemon/dist/adapters/claude-code-adapter.js +43 -80
  78. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  79. package/daemon/dist/adapters/claude-resume-launch.d.ts +4 -0
  80. package/daemon/dist/adapters/claude-resume-launch.d.ts.map +1 -0
  81. package/daemon/dist/adapters/claude-resume-launch.js +13 -0
  82. package/daemon/dist/adapters/claude-resume-launch.js.map +1 -0
  83. package/daemon/dist/adapters/claude-resume.d.ts +2 -1
  84. package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
  85. package/daemon/dist/adapters/claude-resume.js +9 -4
  86. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  87. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +35 -0
  88. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  89. package/daemon/dist/adapters/codex-runtime-adapter.js +94 -44
  90. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  91. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  92. package/daemon/dist/adapters/pi-runner.js +6 -3
  93. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  94. package/daemon/dist/adapters/pi-runtime-adapter.js +1 -1
  95. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  96. package/daemon/dist/adapters/tmux-server.d.ts +15 -0
  97. package/daemon/dist/adapters/tmux-server.d.ts.map +1 -0
  98. package/daemon/dist/adapters/tmux-server.js +58 -0
  99. package/daemon/dist/adapters/tmux-server.js.map +1 -0
  100. package/daemon/dist/adapters/tmux.d.ts +26 -1
  101. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  102. package/daemon/dist/adapters/tmux.js +130 -7
  103. package/daemon/dist/adapters/tmux.js.map +1 -1
  104. package/daemon/dist/build-info.js +3 -3
  105. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  106. package/daemon/dist/db/all-migrations.js +6 -0
  107. package/daemon/dist/db/all-migrations.js.map +1 -1
  108. package/daemon/dist/db/migrations/099_queue_items_recovery_tags.d.ts +3 -0
  109. package/daemon/dist/db/migrations/099_queue_items_recovery_tags.d.ts.map +1 -0
  110. package/daemon/dist/db/migrations/099_queue_items_recovery_tags.js +19 -0
  111. package/daemon/dist/db/migrations/099_queue_items_recovery_tags.js.map +1 -0
  112. package/daemon/dist/db/migrations/101_claude_resume_rotation.d.ts +3 -0
  113. package/daemon/dist/db/migrations/101_claude_resume_rotation.d.ts.map +1 -0
  114. package/daemon/dist/db/migrations/101_claude_resume_rotation.js +19 -0
  115. package/daemon/dist/db/migrations/101_claude_resume_rotation.js.map +1 -0
  116. package/daemon/dist/db/migrations/103_session_stop_intent.d.ts +4 -0
  117. package/daemon/dist/db/migrations/103_session_stop_intent.d.ts.map +1 -0
  118. package/daemon/dist/db/migrations/103_session_stop_intent.js +9 -0
  119. package/daemon/dist/db/migrations/103_session_stop_intent.js.map +1 -0
  120. package/daemon/dist/domain/active-occupant.d.ts +14 -0
  121. package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  122. package/daemon/dist/domain/active-occupant.js +17 -0
  123. package/daemon/dist/domain/active-occupant.js.map +1 -1
  124. package/daemon/dist/domain/agent-activity-store.js +3 -0
  125. package/daemon/dist/domain/agent-activity-store.js.map +1 -1
  126. package/daemon/dist/domain/bootstrap-repository.js +1 -1
  127. package/daemon/dist/domain/bootstrap-repository.js.map +1 -1
  128. package/daemon/dist/domain/chat-repository.d.ts +3 -0
  129. package/daemon/dist/domain/chat-repository.d.ts.map +1 -1
  130. package/daemon/dist/domain/chat-repository.js +15 -4
  131. package/daemon/dist/domain/chat-repository.js.map +1 -1
  132. package/daemon/dist/domain/claude-managed-launch.d.ts +1 -1
  133. package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
  134. package/daemon/dist/domain/claude-managed-launch.js +3 -2
  135. package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
  136. package/daemon/dist/domain/cmux-layout-service.d.ts.map +1 -1
  137. package/daemon/dist/domain/cmux-layout-service.js +2 -1
  138. package/daemon/dist/domain/cmux-layout-service.js.map +1 -1
  139. package/daemon/dist/domain/codex-git-add-dirs.js +1 -1
  140. package/daemon/dist/domain/codex-git-add-dirs.js.map +1 -1
  141. package/daemon/dist/domain/codex-network-default.d.ts +3 -0
  142. package/daemon/dist/domain/codex-network-default.d.ts.map +1 -1
  143. package/daemon/dist/domain/codex-network-default.js +1 -1
  144. package/daemon/dist/domain/codex-network-default.js.map +1 -1
  145. package/daemon/dist/domain/codex-pane-patterns.d.ts +2 -0
  146. package/daemon/dist/domain/codex-pane-patterns.d.ts.map +1 -0
  147. package/daemon/dist/domain/codex-pane-patterns.js +5 -0
  148. package/daemon/dist/domain/codex-pane-patterns.js.map +1 -0
  149. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  150. package/daemon/dist/domain/context-monitor.js +46 -22
  151. package/daemon/dist/domain/context-monitor.js.map +1 -1
  152. package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  153. package/daemon/dist/domain/context-usage-store.js +6 -1
  154. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  155. package/daemon/dist/domain/crash-cart-conductor.d.ts.map +1 -1
  156. package/daemon/dist/domain/crash-cart-conductor.js +3 -1
  157. package/daemon/dist/domain/crash-cart-conductor.js.map +1 -1
  158. package/daemon/dist/domain/cwd-resolution.d.ts +8 -0
  159. package/daemon/dist/domain/cwd-resolution.d.ts.map +1 -1
  160. package/daemon/dist/domain/cwd-resolution.js +24 -3
  161. package/daemon/dist/domain/cwd-resolution.js.map +1 -1
  162. package/daemon/dist/domain/files/file-read.d.ts.map +1 -1
  163. package/daemon/dist/domain/files/file-read.js +11 -3
  164. package/daemon/dist/domain/files/file-read.js.map +1 -1
  165. package/daemon/dist/domain/gateway/connections-projection.d.ts +1 -1
  166. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -1
  167. package/daemon/dist/domain/gateway/slack/channel-recovery.js +4 -3
  168. package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -1
  169. package/daemon/dist/domain/gateway/slack/inbound.d.ts +21 -2
  170. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  171. package/daemon/dist/domain/gateway/slack/inbound.js +70 -11
  172. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  173. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +4 -0
  174. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  175. package/daemon/dist/domain/gateway/slack/slack-delivery.js +1 -1
  176. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  177. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  178. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +7 -4
  179. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  180. package/daemon/dist/domain/history-query.d.ts.map +1 -1
  181. package/daemon/dist/domain/history-query.js +8 -6
  182. package/daemon/dist/domain/history-query.js.map +1 -1
  183. package/daemon/dist/domain/human-questions.d.ts +4 -1
  184. package/daemon/dist/domain/human-questions.d.ts.map +1 -1
  185. package/daemon/dist/domain/human-questions.js.map +1 -1
  186. package/daemon/dist/domain/install-engine.js +2 -2
  187. package/daemon/dist/domain/install-engine.js.map +1 -1
  188. package/daemon/dist/domain/native-process-lineage.d.ts +57 -4
  189. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  190. package/daemon/dist/domain/native-process-lineage.js +277 -42
  191. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  192. package/daemon/dist/domain/node-cmux-service.d.ts.map +1 -1
  193. package/daemon/dist/domain/node-cmux-service.js +2 -1
  194. package/daemon/dist/domain/node-cmux-service.js.map +1 -1
  195. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  196. package/daemon/dist/domain/node-inventory.js +71 -18
  197. package/daemon/dist/domain/node-inventory.js.map +1 -1
  198. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  199. package/daemon/dist/domain/node-launcher.js +2 -1
  200. package/daemon/dist/domain/node-launcher.js.map +1 -1
  201. package/daemon/dist/domain/pane-cutover.d.ts +27 -0
  202. package/daemon/dist/domain/pane-cutover.d.ts.map +1 -0
  203. package/daemon/dist/domain/pane-cutover.js +37 -0
  204. package/daemon/dist/domain/pane-cutover.js.map +1 -0
  205. package/daemon/dist/domain/parent-session-env.d.ts +8 -0
  206. package/daemon/dist/domain/parent-session-env.d.ts.map +1 -0
  207. package/daemon/dist/domain/parent-session-env.js +37 -0
  208. package/daemon/dist/domain/parent-session-env.js.map +1 -0
  209. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +11 -0
  210. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  211. package/daemon/dist/domain/policies/parked-owner-consumer.js +81 -11
  212. package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  213. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  214. package/daemon/dist/domain/profile-resolver.js +2 -3
  215. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  216. package/daemon/dist/domain/progress/progress-indexer.d.ts.map +1 -1
  217. package/daemon/dist/domain/progress/progress-indexer.js +19 -0
  218. package/daemon/dist/domain/progress/progress-indexer.js.map +1 -1
  219. package/daemon/dist/domain/proof/judgments.d.ts +10 -5
  220. package/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
  221. package/daemon/dist/domain/proof/judgments.js +27 -19
  222. package/daemon/dist/domain/proof/judgments.js.map +1 -1
  223. package/daemon/dist/domain/provider/codex-limit-banner.d.ts +40 -0
  224. package/daemon/dist/domain/provider/codex-limit-banner.d.ts.map +1 -0
  225. package/daemon/dist/domain/provider/codex-limit-banner.js +168 -0
  226. package/daemon/dist/domain/provider/codex-limit-banner.js.map +1 -0
  227. package/daemon/dist/domain/provider/codex-usage-reader.d.ts +31 -0
  228. package/daemon/dist/domain/provider/codex-usage-reader.d.ts.map +1 -0
  229. package/daemon/dist/domain/provider/codex-usage-reader.js +115 -0
  230. package/daemon/dist/domain/provider/codex-usage-reader.js.map +1 -0
  231. package/daemon/dist/domain/provider/codex-usage-windows.d.ts +78 -0
  232. package/daemon/dist/domain/provider/codex-usage-windows.d.ts.map +1 -0
  233. package/daemon/dist/domain/provider/codex-usage-windows.js +259 -0
  234. package/daemon/dist/domain/provider/codex-usage-windows.js.map +1 -0
  235. package/daemon/dist/domain/provider/provider-service-impl.d.ts +10 -0
  236. package/daemon/dist/domain/provider/provider-service-impl.d.ts.map +1 -1
  237. package/daemon/dist/domain/provider/provider-service-impl.js +27 -1
  238. package/daemon/dist/domain/provider/provider-service-impl.js.map +1 -1
  239. package/daemon/dist/domain/provider/provider-service.d.ts +5 -0
  240. package/daemon/dist/domain/provider/provider-service.d.ts.map +1 -1
  241. package/daemon/dist/domain/provider/provider-types.d.ts +65 -0
  242. package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -1
  243. package/daemon/dist/domain/ps-projection.d.ts +5 -2
  244. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  245. package/daemon/dist/domain/ps-projection.js +29 -26
  246. package/daemon/dist/domain/ps-projection.js.map +1 -1
  247. package/daemon/dist/domain/queue-recovery.d.ts.map +1 -1
  248. package/daemon/dist/domain/queue-recovery.js +10 -3
  249. package/daemon/dist/domain/queue-recovery.js.map +1 -1
  250. package/daemon/dist/domain/queue-repository.d.ts +68 -13
  251. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  252. package/daemon/dist/domain/queue-repository.js +72 -43
  253. package/daemon/dist/domain/queue-repository.js.map +1 -1
  254. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  255. package/daemon/dist/domain/queue-stuck-sweep.js +26 -9
  256. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  257. package/daemon/dist/domain/queue-wake-ladder.d.ts +17 -0
  258. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  259. package/daemon/dist/domain/queue-wake-ladder.js +49 -3
  260. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  261. package/daemon/dist/domain/restore-check-service.d.ts +8 -0
  262. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  263. package/daemon/dist/domain/restore-check-service.js +12 -3
  264. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  265. package/daemon/dist/domain/restore-guidance.d.ts +39 -0
  266. package/daemon/dist/domain/restore-guidance.d.ts.map +1 -0
  267. package/daemon/dist/domain/restore-guidance.js +163 -0
  268. package/daemon/dist/domain/restore-guidance.js.map +1 -0
  269. package/daemon/dist/domain/restore-orchestrator.d.ts +10 -1
  270. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  271. package/daemon/dist/domain/restore-orchestrator.js +192 -9
  272. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  273. package/daemon/dist/domain/restore-plan-preview.d.ts +4 -0
  274. package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  275. package/daemon/dist/domain/restore-plan-preview.js +14 -3
  276. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  277. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  278. package/daemon/dist/domain/rigspec-preflight.js +7 -6
  279. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  280. package/daemon/dist/domain/runtime-adapter.d.ts +3 -0
  281. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  282. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  283. package/daemon/dist/domain/scope/scope-view-projection.d.ts +4 -2
  284. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  285. package/daemon/dist/domain/scope/scope-view-projection.js +11 -11
  286. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  287. package/daemon/dist/domain/seat-attention-reconciler.d.ts +5 -2
  288. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  289. package/daemon/dist/domain/seat-attention-reconciler.js +18 -4
  290. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  291. package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
  292. package/daemon/dist/domain/seat-identity-reconciler.js +7 -2
  293. package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  294. package/daemon/dist/domain/seat-lifecycle-service.d.ts +117 -2
  295. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  296. package/daemon/dist/domain/seat-lifecycle-service.js +335 -74
  297. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  298. package/daemon/dist/domain/seat-restart-in-place.d.ts +292 -0
  299. package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -0
  300. package/daemon/dist/domain/seat-restart-in-place.js +895 -0
  301. package/daemon/dist/domain/seat-restart-in-place.js.map +1 -0
  302. package/daemon/dist/domain/seat-status-service.d.ts +2 -1
  303. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  304. package/daemon/dist/domain/seat-status-service.js +1 -0
  305. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  306. package/daemon/dist/domain/seat-structural-activity-service.d.ts +9 -1
  307. package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
  308. package/daemon/dist/domain/seat-structural-activity-service.js +27 -4
  309. package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
  310. package/daemon/dist/domain/seat-switch-client-service.d.ts.map +1 -1
  311. package/daemon/dist/domain/seat-switch-client-service.js +2 -1
  312. package/daemon/dist/domain/seat-switch-client-service.js.map +1 -1
  313. package/daemon/dist/domain/session-fingerprinter.d.ts.map +1 -1
  314. package/daemon/dist/domain/session-fingerprinter.js +9 -5
  315. package/daemon/dist/domain/session-fingerprinter.js.map +1 -1
  316. package/daemon/dist/domain/session-registry.d.ts +49 -0
  317. package/daemon/dist/domain/session-registry.d.ts.map +1 -1
  318. package/daemon/dist/domain/session-registry.js +92 -5
  319. package/daemon/dist/domain/session-registry.js.map +1 -1
  320. package/daemon/dist/domain/session-transport.d.ts +46 -4
  321. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  322. package/daemon/dist/domain/session-transport.js +492 -26
  323. package/daemon/dist/domain/session-transport.js.map +1 -1
  324. package/daemon/dist/domain/startup-orchestrator.d.ts +10 -0
  325. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  326. package/daemon/dist/domain/startup-orchestrator.js +41 -4
  327. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  328. package/daemon/dist/domain/successor-session-launcher.d.ts +3 -7
  329. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  330. package/daemon/dist/domain/successor-session-launcher.js +6 -32
  331. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  332. package/daemon/dist/domain/terminal/terminal-service.d.ts +5 -1
  333. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  334. package/daemon/dist/domain/terminal/terminal-service.js +30 -4
  335. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  336. package/daemon/dist/domain/terminal/view-composer.d.ts +6 -0
  337. package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -1
  338. package/daemon/dist/domain/terminal/view-composer.js +2 -1
  339. package/daemon/dist/domain/terminal/view-composer.js.map +1 -1
  340. package/daemon/dist/domain/transcript-store.js +1 -1
  341. package/daemon/dist/domain/transcript-store.js.map +1 -1
  342. package/daemon/dist/domain/types.d.ts +38 -0
  343. package/daemon/dist/domain/types.d.ts.map +1 -1
  344. package/daemon/dist/domain/types.js +5 -0
  345. package/daemon/dist/domain/types.js.map +1 -1
  346. package/daemon/dist/domain/usage-series.d.ts.map +1 -1
  347. package/daemon/dist/domain/usage-series.js +9 -4
  348. package/daemon/dist/domain/usage-series.js.map +1 -1
  349. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  350. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  351. package/daemon/dist/domain/user-settings/settings-store.js +44 -0
  352. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  353. package/daemon/dist/domain/view-projector.d.ts +4 -0
  354. package/daemon/dist/domain/view-projector.d.ts.map +1 -1
  355. package/daemon/dist/domain/view-projector.js +19 -4
  356. package/daemon/dist/domain/view-projector.js.map +1 -1
  357. package/daemon/dist/domain/wake-resolver.js +2 -2
  358. package/daemon/dist/domain/wake-resolver.js.map +1 -1
  359. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  360. package/daemon/dist/domain/watchdog-jobs-repository.js +19 -3
  361. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  362. package/daemon/dist/domain/whoami-service.d.ts +4 -1
  363. package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
  364. package/daemon/dist/domain/whoami-service.js +25 -19
  365. package/daemon/dist/domain/whoami-service.js.map +1 -1
  366. package/daemon/dist/domain/workflow-runtime.d.ts +1 -1
  367. package/daemon/dist/domain/workspace/project-read.d.ts +2 -0
  368. package/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
  369. package/daemon/dist/domain/workspace/project-read.js +19 -8
  370. package/daemon/dist/domain/workspace/project-read.js.map +1 -1
  371. package/daemon/dist/index.d.ts.map +1 -1
  372. package/daemon/dist/index.js +6 -0
  373. package/daemon/dist/index.js.map +1 -1
  374. package/daemon/dist/routes/activity.d.ts.map +1 -1
  375. package/daemon/dist/routes/activity.js +33 -1
  376. package/daemon/dist/routes/activity.js.map +1 -1
  377. package/daemon/dist/routes/chat.d.ts.map +1 -1
  378. package/daemon/dist/routes/chat.js +29 -4
  379. package/daemon/dist/routes/chat.js.map +1 -1
  380. package/daemon/dist/routes/projects.d.ts.map +1 -1
  381. package/daemon/dist/routes/projects.js +5 -1
  382. package/daemon/dist/routes/projects.js.map +1 -1
  383. package/daemon/dist/routes/proof.d.ts.map +1 -1
  384. package/daemon/dist/routes/proof.js +99 -10
  385. package/daemon/dist/routes/proof.js.map +1 -1
  386. package/daemon/dist/routes/provider.d.ts.map +1 -1
  387. package/daemon/dist/routes/provider.js +31 -0
  388. package/daemon/dist/routes/provider.js.map +1 -1
  389. package/daemon/dist/routes/query-limit.d.ts +19 -0
  390. package/daemon/dist/routes/query-limit.d.ts.map +1 -0
  391. package/daemon/dist/routes/query-limit.js +24 -0
  392. package/daemon/dist/routes/query-limit.js.map +1 -0
  393. package/daemon/dist/routes/queue.d.ts.map +1 -1
  394. package/daemon/dist/routes/queue.js +35 -12
  395. package/daemon/dist/routes/queue.js.map +1 -1
  396. package/daemon/dist/routes/rig-cmux.js +8 -10
  397. package/daemon/dist/routes/rig-cmux.js.map +1 -1
  398. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  399. package/daemon/dist/routes/rigs.js +11 -7
  400. package/daemon/dist/routes/rigs.js.map +1 -1
  401. package/daemon/dist/routes/scopes.d.ts.map +1 -1
  402. package/daemon/dist/routes/scopes.js +5 -3
  403. package/daemon/dist/routes/scopes.js.map +1 -1
  404. package/daemon/dist/routes/seat.d.ts.map +1 -1
  405. package/daemon/dist/routes/seat.js +32 -0
  406. package/daemon/dist/routes/seat.js.map +1 -1
  407. package/daemon/dist/routes/stream.d.ts.map +1 -1
  408. package/daemon/dist/routes/stream.js +5 -1
  409. package/daemon/dist/routes/stream.js.map +1 -1
  410. package/daemon/dist/routes/up.d.ts.map +1 -1
  411. package/daemon/dist/routes/up.js +2 -1
  412. package/daemon/dist/routes/up.js.map +1 -1
  413. package/daemon/dist/routes/views.d.ts.map +1 -1
  414. package/daemon/dist/routes/views.js +7 -1
  415. package/daemon/dist/routes/views.js.map +1 -1
  416. package/daemon/dist/startup.d.ts.map +1 -1
  417. package/daemon/dist/startup.js +30 -1
  418. package/daemon/dist/startup.js.map +1 -1
  419. package/daemon/docs/reference/agent-startup-guide.md +19 -0
  420. package/daemon/docs/reference/getting-started.md +10 -6
  421. package/daemon/docs/reference/keeping-a-watch.md +156 -0
  422. package/daemon/docs/reference/rig-spec.md +2 -2
  423. package/daemon/docs/reference/sdlc-conventions.md +11 -1
  424. package/daemon/docs/reference/slack-app-setup.md +12 -4
  425. package/daemon/docs/reference/whats-new.md +151 -74
  426. package/daemon/specs/agents/development/qa/guidance/role.md +9 -0
  427. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -1
  428. package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +2 -2
  429. package/daemon/specs/rigs/launch/factory/CULTURE.md +13 -0
  430. package/daemon/specs/rigs/launch/factory/guidance/lead-first-move.md +18 -5
  431. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +20 -1
  432. package/daemon/specs/rigs/launch/starter/CULTURE.md +13 -0
  433. package/daemon/specs/rigs/launch/starter/guidance/lead-first-move.md +18 -5
  434. package/dist/build-info.js +3 -3
  435. package/dist/cli-error.d.ts.map +1 -1
  436. package/dist/cli-error.js +2 -0
  437. package/dist/cli-error.js.map +1 -1
  438. package/dist/commands/add.d.ts.map +1 -1
  439. package/dist/commands/add.js +55 -4
  440. package/dist/commands/add.js.map +1 -1
  441. package/dist/commands/capture.d.ts +9 -0
  442. package/dist/commands/capture.d.ts.map +1 -1
  443. package/dist/commands/capture.js +93 -41
  444. package/dist/commands/capture.js.map +1 -1
  445. package/dist/commands/config.d.ts.map +1 -1
  446. package/dist/commands/config.js +6 -1
  447. package/dist/commands/config.js.map +1 -1
  448. package/dist/commands/daemon.d.ts.map +1 -1
  449. package/dist/commands/daemon.js +44 -3
  450. package/dist/commands/daemon.js.map +1 -1
  451. package/dist/commands/down.d.ts.map +1 -1
  452. package/dist/commands/down.js +1 -50
  453. package/dist/commands/down.js.map +1 -1
  454. package/dist/commands/env.d.ts.map +1 -1
  455. package/dist/commands/env.js +6 -0
  456. package/dist/commands/env.js.map +1 -1
  457. package/dist/commands/heartbeat.js +2 -2
  458. package/dist/commands/heartbeat.js.map +1 -1
  459. package/dist/commands/proof.d.ts.map +1 -1
  460. package/dist/commands/proof.js +11 -5
  461. package/dist/commands/proof.js.map +1 -1
  462. package/dist/commands/provider.d.ts.map +1 -1
  463. package/dist/commands/provider.js +72 -0
  464. package/dist/commands/provider.js.map +1 -1
  465. package/dist/commands/ps.d.ts +7 -0
  466. package/dist/commands/ps.d.ts.map +1 -1
  467. package/dist/commands/ps.js +20 -6
  468. package/dist/commands/ps.js.map +1 -1
  469. package/dist/commands/queue.d.ts +48 -5
  470. package/dist/commands/queue.d.ts.map +1 -1
  471. package/dist/commands/queue.js +215 -45
  472. package/dist/commands/queue.js.map +1 -1
  473. package/dist/commands/scope.d.ts.map +1 -1
  474. package/dist/commands/scope.js +57 -36
  475. package/dist/commands/scope.js.map +1 -1
  476. package/dist/commands/seat.d.ts.map +1 -1
  477. package/dist/commands/seat.js +167 -10
  478. package/dist/commands/seat.js.map +1 -1
  479. package/dist/commands/setup.d.ts +6 -0
  480. package/dist/commands/setup.d.ts.map +1 -1
  481. package/dist/commands/setup.js +100 -44
  482. package/dist/commands/setup.js.map +1 -1
  483. package/dist/commands/start.d.ts.map +1 -1
  484. package/dist/commands/start.js +9 -4
  485. package/dist/commands/start.js.map +1 -1
  486. package/dist/commands/up.d.ts.map +1 -1
  487. package/dist/commands/up.js +10 -0
  488. package/dist/commands/up.js.map +1 -1
  489. package/dist/commands/usage.d.ts.map +1 -1
  490. package/dist/commands/usage.js +10 -5
  491. package/dist/commands/usage.js.map +1 -1
  492. package/dist/commands/workflow.d.ts.map +1 -1
  493. package/dist/commands/workflow.js +8 -8
  494. package/dist/commands/workflow.js.map +1 -1
  495. package/dist/config-store.d.ts +8 -1
  496. package/dist/config-store.d.ts.map +1 -1
  497. package/dist/config-store.js +57 -0
  498. package/dist/config-store.js.map +1 -1
  499. package/dist/daemon-lifecycle.d.ts +4 -0
  500. package/dist/daemon-lifecycle.d.ts.map +1 -1
  501. package/dist/daemon-lifecycle.js +16 -4
  502. package/dist/daemon-lifecycle.js.map +1 -1
  503. package/dist/lib/scope/capability-delta.d.ts.map +1 -1
  504. package/dist/lib/scope/capability-delta.js +8 -0
  505. package/dist/lib/scope/capability-delta.js.map +1 -1
  506. package/dist/lib/scope/mission-composition.d.ts +5 -1
  507. package/dist/lib/scope/mission-composition.d.ts.map +1 -1
  508. package/dist/lib/scope/mission-composition.js +61 -1
  509. package/dist/lib/scope/mission-composition.js.map +1 -1
  510. package/dist/lib/scope/progress-edit.js +1 -1
  511. package/dist/lib/scope/progress-edit.js.map +1 -1
  512. package/dist/lib/scope/scope-fs.d.ts +2 -1
  513. package/dist/lib/scope/scope-fs.d.ts.map +1 -1
  514. package/dist/lib/scope/scope-fs.js +7 -7
  515. package/dist/lib/scope/scope-fs.js.map +1 -1
  516. package/dist/lib/scope/slice-claims.d.ts +8 -0
  517. package/dist/lib/scope/slice-claims.d.ts.map +1 -0
  518. package/dist/lib/scope/slice-claims.js +88 -0
  519. package/dist/lib/scope/slice-claims.js.map +1 -0
  520. package/dist/queue-receipt.d.ts +41 -0
  521. package/dist/queue-receipt.d.ts.map +1 -0
  522. package/dist/queue-receipt.js +272 -0
  523. package/dist/queue-receipt.js.map +1 -0
  524. package/dist/rig-handle.d.ts +45 -0
  525. package/dist/rig-handle.d.ts.map +1 -0
  526. package/dist/rig-handle.js +51 -0
  527. package/dist/rig-handle.js.map +1 -0
  528. package/dist/system-preflight.d.ts +5 -0
  529. package/dist/system-preflight.d.ts.map +1 -1
  530. package/dist/system-preflight.js +8 -0
  531. package/dist/system-preflight.js.map +1 -1
  532. package/dist/terminal-window.d.ts.map +1 -1
  533. package/dist/terminal-window.js +3 -1
  534. package/dist/terminal-window.js.map +1 -1
  535. package/package.json +1 -1
  536. package/tui/dist/config/config-model.d.ts.map +1 -1
  537. package/tui/dist/config/config-model.js +3 -0
  538. package/tui/dist/config/config-model.js.map +1 -1
  539. package/tui/dist/daemon-client.d.ts +3 -0
  540. package/tui/dist/daemon-client.d.ts.map +1 -1
  541. package/tui/dist/daemon-client.js +4 -1
  542. package/tui/dist/daemon-client.js.map +1 -1
  543. package/tui/dist/detail.d.ts.map +1 -1
  544. package/tui/dist/detail.js +6 -1
  545. package/tui/dist/detail.js.map +1 -1
  546. package/tui/dist/hydrate.d.ts.map +1 -1
  547. package/tui/dist/hydrate.js +30 -21
  548. package/tui/dist/hydrate.js.map +1 -1
  549. package/tui/dist/input.d.ts.map +1 -1
  550. package/tui/dist/input.js +15 -4
  551. package/tui/dist/input.js.map +1 -1
  552. package/tui/dist/local-reading.js +2 -2
  553. package/tui/dist/local-reading.js.map +1 -1
  554. package/tui/dist/pulse/pulse-model.d.ts +1 -0
  555. package/tui/dist/pulse/pulse-model.d.ts.map +1 -1
  556. package/tui/dist/pulse/pulse-model.js +7 -3
  557. package/tui/dist/pulse/pulse-model.js.map +1 -1
  558. package/tui/dist/pulse/render-pulse.d.ts.map +1 -1
  559. package/tui/dist/pulse/render-pulse.js +3 -1
  560. package/tui/dist/pulse/render-pulse.js.map +1 -1
  561. package/tui/dist/reading.d.ts.map +1 -1
  562. package/tui/dist/reading.js +14 -3
  563. package/tui/dist/reading.js.map +1 -1
  564. package/tui/dist/render.d.ts.map +1 -1
  565. package/tui/dist/render.js +26 -11
  566. package/tui/dist/render.js.map +1 -1
  567. package/tui/dist/types.d.ts +3 -0
  568. package/tui/dist/types.d.ts.map +1 -1
  569. package/ui/dist/assets/{index-D5n8EwkG.js → index-DhmxKuZf.js} +159 -159
  570. package/ui/dist/index.html +1 -1
package/README.md CHANGED
@@ -42,7 +42,7 @@ To install with Bun instead, run `bun add -g @openrig/cli`. OpenRig still runs o
42
42
 
43
43
  npm 11 and later can skip that postinstall script and print `npm warn install-scripts` naming `@openrig/cli`. That's expected: the CLI still works, and only the Node.js and SQLite check was skipped. To run it yourself, use `node "$(npm root -g)/@openrig/cli/scripts/check-abi.mjs"`; `rig doctor` checks the Node.js version only.
44
44
 
45
- Choose the working account you already have: **Claude Code, Codex, or both**. Reuse an explicit choice; no second subscription is required. `rig setup --dry-run` previews the broader setup; applying `rig setup` checks both harnesses and installs a missing one, plus Herdr unless declined with `--no-herdr`. On macOS, the installing agent offers Ghostty once. Setup leaves an existing cmux installation alone. It is optional for the [selected-provider path](docs/reference/getting-started.md#choose-your-providers).
45
+ Choose the working account you already have: **Claude Code, Codex, or both**. Reuse an explicit choice; no second subscription is required. `rig setup --dry-run` previews the broader setup; applying `rig setup` checks both harnesses and installs a missing one, plus Herdr unless declined with `--no-herdr`. Pass the choice with `--providers claude` or `--providers codex` so the other reads not selected instead of failed. The one-command install above doesn't know the choice, so it installs and checks both; for one provider, go step by step and run `rig setup --providers <choice>`. On macOS, the installing agent offers Ghostty once. Setup leaves an existing cmux installation alone. It is optional for the [selected-provider path](docs/reference/getting-started.md#choose-your-providers).
46
46
 
47
47
  A team seat with no permission policy, per-seat choice or (for Codex) named profile launches with OpenRig's [team default](docs/reference/rig-spec.md#team-launch-defaults): Claude runs ordinary `rig` commands, project reads and common tests without prompting, while lifecycle commands such as `rig up` and `rig down` still ask; Codex also gets the OpenRig workspace and its pod's state directory as writable directories. Before launching, your agent recommends keeping that default, and offers to remember selected OpenRig commands in your native settings only if you want that, at personal project scope unless you explicitly choose user-wide sessions. It is not global YOLO or permission to invent work. On Yes, the agent [adds and verifies native rules](docs/reference/getting-started.md#have-your-agent-configure-permissions); No or no answer keeps the team default and leaves settings unchanged. An existing explicit choice is reused. Say “Undo the OpenRig command allowances added by this setup” to remove only its additions.
48
48
 
@@ -447,7 +447,7 @@ Before setup or managed launch, review [what OpenRig changes on your machine](#w
447
447
 
448
448
  Already-running adopted sessions may need restart before they pick up newly written runtime config.
449
449
 
450
- **For agents:** First ask which available provider(s) the user wants, reusing an explicit choice. Recommend the working account they already have and follow the selected-provider guide above. Offer core setup (`rig setup`) or the fuller workstation path (`rig setup --full`) only when they want those additional tools. Inspect the result with `--json` and use `rig doctor` to finish any remaining machine-specific issues. Then start the daemon if it is stopped, open the OpenRig TUI and operator for them (say so, then run `rig terminal open saved:kernel --window --json`; no commands for the person to copy), and hand the person's goal and project folder to the kernel operator ([installing-agent handoff](docs/reference/getting-started.md#installing-agent-handoff)). Installation is finished when the person is talking to the operator; don't implement the project yourself. When OpenRig itself misbehaves, read [docs/reference/help.md](docs/reference/help.md) (installed agents can run `rig context get help`; the same text is at [openrig.dev/help/agents](https://www.openrig.dev/help/agents)): it covers the next step, known problems, and how to reach the team if you're still stuck.
450
+ **For agents:** First ask which available provider(s) the user wants, reusing an explicit choice, and pass it to setup (`rig setup --providers claude`, `codex` or `both`). Recommend the working account they already have and follow the selected-provider guide above. Offer core setup (`rig setup`) or the fuller workstation path (`rig setup --full`) only when they want those additional tools. Inspect the result with `--json` and use `rig doctor` to finish any remaining machine-specific issues. Starting OpenRig and opening its view are the last steps of installing, not extras, so do them without stopping to ask whether to go on: start the daemon if it is stopped, open the OpenRig TUI and operator for them (say so, then run `rig terminal open saved:kernel --window --json`; no commands for the person to copy), and hand the person's goal and project folder to the kernel operator ([installing-agent handoff](docs/reference/getting-started.md#installing-agent-handoff)). Installation is finished when the person is talking to the operator; don't implement the project yourself. When OpenRig itself misbehaves, read [docs/reference/help.md](docs/reference/help.md) (installed agents can run `rig context get help`; the same text is at [openrig.dev/help/agents](https://www.openrig.dev/help/agents)): it covers the next step, known problems, and how to reach the team if you're still stuck.
451
451
 
452
452
  ## Comparison with Claude Managed Agents
453
453
 
@@ -67,9 +67,10 @@ conversation. Explain the failure and help with the chosen fallback; do not atta
67
67
  Over headless SSH, explain that no visible terminal opened; tell the person to open a new terminal window or
68
68
  tab and give one complete connection and attachment command using the current Herdr endpoint, as in the guide.
69
69
  No, SSH and headless use are valid background outcomes. If the person chooses a manual operator attachment after
70
- a failure, find the `operator.agent` row with `rig ps --nodes --rig kernel --json`. Give the exact
71
- `env -u TMUX tmux attach-session -t '=<canonicalSessionName>'` with the observed name filled in for a new terminal
72
- on the same host and user (over SSH, connect there first). Ctrl-b, then d detaches without stopping it.
70
+ a failure, find the `operator.agent` row with
71
+ `rig ps --nodes --rig kernel --json --fields logicalId,canonicalSessionName,tmuxAttachCommand`. Give `env -u TMUX` followed by
72
+ that row's `tmuxAttachCommand`, exactly as listed (it names the daemon's tmux server when that isn't the default
73
+ one), for a new terminal on the same host and user (over SSH, connect there first). Ctrl-b, then d detaches without stopping it.
73
74
  Ask the person's goal and project folder, then hand them to the ready operator; do not implement the project yourself.
74
75
  Find the `operator.agent` row with `rig ps --nodes --rig kernel --json` and use its `canonicalSessionName` with
75
76
  `rig send <canonicalSessionName> 'This is the agent that installed OpenRig. The person will answer in your pane. Goal: <goal>. Project folder: <absolute path>.'`,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openrig-core",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "OpenRig canonical skills and hooks for cross-runtime agent topology coordination, continuity, and operating discipline.",
5
5
  "author": {
6
6
  "name": "Mike Schwarz",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openrig-core",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "OpenRig canonical skills and hooks for cross-runtime agent topology coordination, continuity, and operating discipline.",
5
5
  "author": {
6
6
  "name": "Mike Schwarz",
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
 
4
+ const crypto = require("node:crypto");
5
+ const fs = require("node:fs");
6
+ const os = require("node:os");
7
+ const path = require("node:path");
8
+
4
9
  // OpenRig activity-relay hook script.
5
10
  // Reads a hook event payload from stdin, normalizes it, and POSTs to the
6
11
  // OpenRig daemon's /api/activity/hooks endpoint for real-time UI seat-status.
@@ -154,6 +159,13 @@ function buildSessionIdentityPayload(providerPayload, env = process.env, now = (
154
159
  const sessionName = firstString(env.OPENRIG_SESSION_NAME, env.RIGGED_SESSION_NAME);
155
160
  const nodeId = firstString(env.OPENRIG_NODE_ID, env.RIGGED_NODE_ID);
156
161
  const runtime = firstString(env.OPENRIG_RUNTIME, env.RIGGED_RUNTIME);
162
+ const generation = firstString(env.OPENRIG_OCCUPANT_GENERATION, env.RIGGED_OCCUPANT_GENERATION);
163
+ // How this session began (startup, resume, clear or compact). The daemon tells a resumed
164
+ // conversation's new id from a /clear by it; it is absent from runtimes that do not report it.
165
+ const source = firstString(providerPayload.source);
166
+ // Set only on the command OpenRig sends to resume this seat, so the daemon can tell the process
167
+ // it launched from another Claude sharing the seat's environment.
168
+ const resumeLaunch = firstString(env.OPENRIG_RESUME_LAUNCH);
157
169
 
158
170
  if ((!sessionName && !nodeId) || !runtime) return null;
159
171
 
@@ -162,18 +174,45 @@ function buildSessionIdentityPayload(providerPayload, env = process.env, now = (
162
174
  sessionName,
163
175
  nodeId,
164
176
  runtime,
177
+ generation,
165
178
  hookEvent,
179
+ source,
180
+ resumeLaunch,
181
+ // The daemon finds the Claude that ran this hook from its parent chain.
182
+ hookPid: process.pid,
166
183
  sessionId,
167
184
  occurredAt: now().toISOString(),
168
185
  };
169
186
  }
170
187
 
188
+ // #1077 — whether this is the first SessionStart of the launch OpenRig armed (OPENRIG_RESUME_LAUNCH
189
+ // for this occupant generation). Recorded on local disk before anything is posted, so a first hook
190
+ // whose post never reaches the daemon still makes every later one (an in-process /resume, a child
191
+ // sharing the environment) report false. Any error reports false.
192
+ function claimFirstLaunchHook(resumeLaunch, generation, dir = path.join(os.tmpdir(), `openrig-resume-launch-${uid()}`)) {
193
+ if (!resumeLaunch || !generation) return false;
194
+ try {
195
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
196
+ const key = crypto.createHash("sha256").update(`${generation}\0${resumeLaunch}`).digest("hex");
197
+ fs.closeSync(fs.openSync(path.join(dir, key), "wx", 0o600));
198
+ return true;
199
+ } catch {
200
+ return false;
201
+ }
202
+ }
203
+
204
+ function uid() {
205
+ try { return typeof process.getuid === "function" ? String(process.getuid()) : "user"; } catch { return "user"; }
206
+ }
207
+
171
208
  async function main() {
172
209
  const providerPayload = parseJson(await readStdin());
173
210
  const payload = buildOpenRigPayload(providerPayload);
174
- await postHookPayload(payload);
175
-
176
211
  const identityPayload = buildSessionIdentityPayload(providerPayload, process.env);
212
+ if (identityPayload && identityPayload.resumeLaunch) {
213
+ identityPayload.resumeLaunchFirst = claimFirstLaunchHook(identityPayload.resumeLaunch, identityPayload.generation);
214
+ }
215
+ await postHookPayload(payload);
177
216
  if (identityPayload) {
178
217
  await postHookPayload(identityPayload);
179
218
  }
@@ -185,6 +224,7 @@ if (require.main === module) {
185
224
 
186
225
  module.exports = {
187
226
  buildOpenRigPayload,
227
+ claimFirstLaunchHook,
188
228
  buildSessionIdentityPayload,
189
229
  parseJson,
190
230
  postHookPayload,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: openrig-skills
3
- description: "Use when you're operating OpenRig and need the right skill or context for fleet recovery, seat handover, new-seat orientation, a watchdog wake, cross-host reach to an agent on another machine, rig packaging, an OpenRig upgrade, systematic debugging, queue triage, or implementation planning; also use when you don't know what applies or nothing is projected on cold boot."
3
+ description: "Use when an agent running inside OpenRig needs the right skill or context for fleet recovery, seat handover, new-seat orientation, a watchdog wake, cross-host reach to an agent on another machine, rig packaging, an OpenRig upgrade, systematic debugging, queue triage, or implementation planning; also when the agent doesn't know what applies or nothing is projected on cold boot. Installing, starting or updating OpenRig, getting back to a team or bringing a stopped one back from a person's own session is the rigs skill."
4
4
  allowed-tools: Bash(rig:*)
5
5
  metadata:
6
6
  openrig:
@@ -1302,7 +1302,7 @@ Node-granular managed partial restore (v0.3.4+):
1302
1302
  ### Add a member to an existing pod — v0.3.3+
1303
1303
 
1304
1304
  ```bash
1305
- rig add <rig-id> <pod-namespace> <member-fragment-path> [--json]
1305
+ rig add <rig> <pod-namespace> <member-fragment-path> [--json]
1306
1306
  ```
1307
1307
 
1308
1308
  `rig add` is the top-level verb for the `add_member` converge op. It adds a
@@ -1310,6 +1310,12 @@ single member to an existing pod from a YAML/JSON member fragment file. The
1310
1310
  daemon resolves the named pod, validates the member, runs preflight, and
1311
1311
  launches the member in place.
1312
1312
 
1313
+ `<rig>` is the rig id or its exact name (the `rigName` that `rig whoami --json`
1314
+ reports). A name shared by more than one rig is refused before anything is
1315
+ added, with the matching ids listed (`rig_ambiguous` under `--json`). `rig add`
1316
+ always targets the local daemon: while a remote host is selected it refuses to
1317
+ resolve a name (`remote_host_selected`); an exact local id still works.
1318
+
1313
1319
  HTTP outcomes:
1314
1320
  - `201` — member added; per-node launch state included in the response.
1315
1321
  - `400` — `validation_failed` or `preflight_failed` (the fragment or its launch posture is rejected before any state change).
@@ -351,7 +351,12 @@ def render_held_and_next(evidence):
351
351
  missions = ", ".join(row.get("missions") or [])
352
352
  output.append(f"- {row.get('qitemId') or 'a row'} — {row.get('summary') or 'no summary'}"
353
353
  + (f" [mission: {missions}]" if missions else ""))
354
- if evidence.get("heldAndNextTruncated"):
354
+ if "heldTruncated" in evidence or "nextTruncated" in evidence:
355
+ if evidence.get("heldTruncated"):
356
+ output.append("(the held list was cut; `rig queue list --owned --state blocked` has the rest)")
357
+ if evidence.get("nextTruncated"):
358
+ output.append("(the next list was cut; `rig queue list --owned --state pending` has the rest)")
359
+ elif evidence.get("heldAndNextTruncated"):
355
360
  output.append("(held and next lists were cut; `rig queue list` has the rest)")
356
361
  return "\n".join(output)
357
362
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rigs
3
- description: Use when the user mentions OpenRig, rigs or the rig command, or wants a team of coding agents (Claude Code, Codex) on their project. That includes installing, setting up, starting or updating OpenRig, seeing or getting back to their OpenRig agents, TUI or operator, starting or sharing a team, and joining this session to one.
3
+ description: Use when a person in their own Claude Code or Codex session mentions OpenRig, rigs or the rig command, or wants a team of coding agents (Claude Code, Codex) on their project. That includes installing, setting up, starting or updating OpenRig, seeing, getting back to or re-attaching to their OpenRig agents (including bringing a stopped team back), TUI or operator, starting or sharing a team, and joining this session to one. Operating a running rig from inside it (fleet recovery, seat handover, watchdog wakes, in-rig upgrades) is the openrig-skills skill.
4
4
  ---
5
5
 
6
6
  # rigs: your route into OpenRig
@@ -68,9 +68,10 @@ guidance in `AGENTS.md` or `CLAUDE.md` plus the team's skills and plugins. Say s
68
68
  and ends with `run:` and a command (the `error` field with `--json`). That command already names the installed
69
69
  herdr binary and the daemon's socket, or the conversation to attach. Relay it exactly rather than composing one.
70
70
  If a note asks you to place the view once Herdr starts, run that `rig terminal open` yourself after they start it.
71
- - **If it printed no command:** find `operator.agent` in `rig ps --nodes --rig kernel --json`, take its
72
- `canonicalSessionName` (never a guessed name) and give
73
- `env -u TMUX tmux attach-session -t '=<canonicalSessionName>'` for the operator's conversation.
71
+ - **If it printed no command:** find `operator.agent` in
72
+ `rig ps --nodes --rig kernel --json --fields logicalId,canonicalSessionName,tmuxAttachCommand` and give
73
+ `env -u TMUX` followed by its `tmuxAttachCommand`, exactly as listed (never a guessed name), for the operator's
74
+ conversation. That command names the daemon's tmux server when it isn't the default one.
74
75
 
75
76
  For any other failure, the table under "What can interrupt installation and the OpenRig view" in
76
77
  `rig context get reference/getting-started.md#open-the-kernel-conversations` says why and what to do next.
@@ -80,7 +81,8 @@ guidance in `AGENTS.md` or `CLAUDE.md` plus the team's skills and plugins. Say s
80
81
  `rig send <canonicalSessionName> 'This is the agent that installed OpenRig. The person will answer in your pane. Goal: <goal>. Project folder: <absolute path>. Branch: <branch>.'`
81
82
  Or the person types the goal and folder in the operator's pane. If they give you a goal later, forward it the same
82
83
  way. The operator helps them pick a team that fits their logins, starts it on their yes and gives the goal to the
83
- team's lead. Show them where the operator answers, and don't build the project yourself.
84
+ team's lead. Before that yes, it says what launching into their folder changes for their own agent there; relay
85
+ that with the question. Show them where the operator answers, and don't build the project yourself.
84
86
  - **Relay the operator's questions:** the operator asks in its own pane, and the person may not be looking there.
85
87
  After each step you hand it, read its screen with `rig capture <canonicalSessionName>`. When it asks the person
86
88
  something (start this team? which folder? which option?), ask them here in the operator's words and send their
@@ -1,6 +1,6 @@
1
1
  # Agent help: the single troubleshooting and escalation guide (docs/reference/help.md).
2
2
  name: help
3
- version: "0.6.9"
3
+ version: "0.6.11"
4
4
  taxonomy: world
5
5
  purpose: "What an agent does when its user says OpenRig isn't working: diagnose, fix within permissions, verify, and escalate to OpenRig support."
6
6
  files:
@@ -1,6 +1,6 @@
1
1
  # Public capability and source-map width for the default onboarding walk.
2
2
  name: onboarding-width
3
- version: "0.6.9"
3
+ version: "0.6.11"
4
4
  taxonomy: world
5
5
  purpose: "The public capability map and source map referenced by the default onboarding walk."
6
6
  files:
@@ -11,7 +11,7 @@ not know exists.** So the point of what follows is not skill. It is recognition:
11
11
  lands, something rhymes, and you go check instead of building.
12
12
 
13
13
  Eighty-seven top-level verbs ship (capability canon refreshed through
14
- `capability-delta-v0.6.9`). This marker describes the pack's teaching, not publication or live
14
+ `capability-delta-v0.6.11`). This marker describes the pack's teaching, not publication or live
15
15
  adoption. Read this once for shape, and let it make you suspicious that a thing already exists.
16
16
  Model-divergence proclamations are live product (trust them; pins use canonical
17
17
  model IDs).
@@ -28,8 +28,9 @@ one command away. Your memory of the fleet is a claim about the past.
28
28
  - **`rig ps`** — what rigs exist. **`rig ps --nodes -A`** — the state of every seat everywhere,
29
29
  *including the broken ones*. **The bare form is the question you usually want:** `--active`
30
30
  filters to running and **hides detached, exited and attention states** — which are exactly the
31
- cells you were scanning for. **`rig ps --resources`** shows this host's load and transcript
32
- capture cost.
31
+ cells you were scanning for. A seat whose tmux session is confirmed gone reads `detached`
32
+ (activity reason `session_missing`), and `rig ps --nodes` says to restore or relaunch it.
33
+ **`rig ps --resources`** shows this host's load and transcript capture cost.
33
34
  - **`rig ps --all-hosts --nodes -A`** — the same across every registered machine. Rollup-only
34
35
  unless you ask for nodes.
35
36
  - **`rig discover`** — what is running on this box that OpenRig is *not* managing.
@@ -89,6 +90,8 @@ unseen — which makes messages the one delivery channel that never gets skipped
89
90
  confirm by effect, never relaunch on it. A send or wake to a seat whose latest hook is a
90
91
  question waiting for a person is refused with `target_needs_input`, even when its screen
91
92
  can't be read: read it with `rig capture` and get the question answered instead of retrying.
93
+ `--wait-for-idle N` waits before it takes the seat's delivery lease, so other sends and wakes to
94
+ that seat aren't held behind it; N is a deadline from the start of the wait.
92
95
  Over `--host` to an http-registered host, a send that may have reached the remote reads
93
96
  `remote-outcome-unknown` ("Delivery UNCONFIRMED"): check the target with `rig capture <session>
94
97
  --host <id>` before any resend. Only a host that was never reached reads as unreachable.
@@ -100,7 +103,9 @@ unseen — which makes messages the one delivery channel that never gets skipped
100
103
  the wording wrong on the fourth. **Blast radius is real** — on a large rig this lands in every
101
104
  seat's turn.
102
105
  - **`rig capture <seat>`** — read what is on their screen right now. **`--rig` / `--pod`** captures
103
- every seat in one call.
106
+ every seat in one call. `--lines N` is the last N lines (stderr says how many earlier lines were
107
+ cut); `--history-plus-pane` gives the older N history lines plus the whole pane. A short capture
108
+ doesn't prove a seat is idle.
104
109
  - **`rig transcript <seat>`** — what has been *said* in a seat, and **seat-scoped rather than
105
110
  session-scoped**: one file spanning every agent generation that has occupied it, so it reaches
106
111
  back through handovers. Capped (`transcripts.lines`, default 1000 — raise it for depth), and
@@ -131,7 +136,9 @@ unseen — which makes messages the one delivery channel that never gets skipped
131
136
  window, and only then say that clicking macOS's Allow is fine. Herdr is visible only in a
132
137
  terminal the person can see; switching the shared TUI to `:terminals` does not open one. Over
133
138
  SSH, in CI or with no display, the command returns a definite no-window result with the reason
134
- and an attach command: relay that command exactly. Inspect the result and visible content, or
139
+ and an attach command: relay that command exactly. When the daemon runs on a non-default tmux
140
+ server, attach commands carry `-L <name>` or `-S <path>`; from inside tmux run them as
141
+ `env -u TMUX <tmuxAttachCommand>`. Inspect the result and visible content, or
135
142
  say what cannot be verified. On a desktop, do not finish by printing a command for the person to
136
143
  type. Only if the window cannot open, `rig tui --shared` is the dashboard-only fallback; explain
137
144
  the failure. `--provider herdr` or `--provider cmux` adds tiles inside a workspace that is
@@ -177,7 +184,13 @@ your context, your compaction and your replacement — and it is the only thing
177
184
 
178
185
  - **`rig queue create`** — a row with an owner, a body and a transition history. Its reply, like
179
186
  `handoff`'s, confirms the row was saved; the owner is woken after that. Before you say they were
180
- told, read the row's transitions (or use `--verify` for a person's request).
187
+ told, read the row's transitions, or use `--verify`. For a seat it reports the wake's terminal
188
+ receipt and any claim separately: an unconfirmed receipt is not a failed handoff, and a claim is
189
+ pickup, not proof the body was read. For a claimed row whose wake wasn't confirmed, `outcome`
190
+ reads `claimed`; it isn't a failed handoff, so don't re-run the create. For a registered person
191
+ who is also a seat with a pane, it also waits for the Slack receipt and reports it on its own,
192
+ up to the 30-second default, even when Slack isn't set up or the row won't be posted. With `output.compact` on (off by default), the queue write commands print a short
193
+ receipt and `--full` prints the whole row.
181
194
  - **`rig queue show`** — what a row *actually says*. The header is not the body.
182
195
  - **`rig queue claim` / `unclaim`** — is this mine and running, or still pending where two agents
183
196
  might double-work it. Put it down honestly when it is not yours.
@@ -192,13 +205,22 @@ your context, your compaction and your replacement — and it is the only thing
192
205
  visible**, with a plain-language summary and a pointer to what a human must judge; `resolve`
193
206
  writes their decision onto the durable record and wakes the owner. **Closing it would be a lie
194
207
  and sitting on it silently is indistinguishable from a crash.** `--wake-after <duration>` arms
195
- one wake for this park episode; a new park supersedes it and every exit route retires it.
208
+ one wake for this park episode; a new park supersedes it and every exit route retires it. In
209
+ this release a wake the typing guard holds back (`retained`) is recorded as that one fire and
210
+ later wakes aren't, so the timer isn't retired: it can wake the owner again at each interval
211
+ while the row stays parked. A row attached to a shared timer with `--wake-watchdog` loses its
212
+ one wake if that wake is held back.
196
213
  - **`rig queue overdue`** — what was claimed and never closed in time. **Defaults to the current
197
214
  rig**; ask for more if you mean more.
198
215
  - **`rig queue undelivered`** — pending create-path nudge failures only. For gateway or human
199
216
  delivery, the row's transitions are the receipt ledger; `undelivered` does not answer whether a
200
217
  person received the escalation. **`overdue` and `undelivered` are the two halves of "is anything
201
218
  silently stuck", and a rig can be clean on one and rotten on the other.**
219
+ - **`queue.wake_human_rung`** — when a seat can't be woken, the last escalation step posts to a
220
+ person. `rig config set queue.wake_human_rung explicit-only` (default `always`) keeps that post
221
+ for rows addressed to a person (an `@external` address or a registered human); the rest stop at
222
+ `rig view show escalations`. A seat stuck at a prompt only a person can clear still reaches one,
223
+ and an unreadable human registry posts everything.
202
224
  - **`rig queue inbox-drop` / `inbox-pending` / `inbox-absorb` / `inbox-deny`** — put something in
203
225
  front of a seat that it can *refuse*. Mail, not assignment.
204
226
  - **`rig queue outbox-record` / `outbox-list`** — what you dispatched, in a record that survives
@@ -343,6 +365,13 @@ not have to tear one down to change it, and you rarely have to start from nothin
343
365
  by name, a bundle someone handed you, a GitHub folder link (pinned to one commit), or a stopped
344
366
  rig. `rig up` with a pod-aware spec on a stopped team's name replaces that team (the earlier one
345
367
  is archived), so check `rig ps --nodes` first. Launch-created `AGENTS.md` or `CLAUDE` files now show in `git status`.
368
+ `rig up <rig> --existing` puts back the OpenRig guidance blocks `rig down` removed before a
369
+ resumed seat starts. A seat still missing one makes the rig `partially_restored` (its node lists
370
+ `guidanceGaps`) and `rig up` exits 1. A seat that wasn't running at the snapshot, but whose
371
+ earlier session left a resume token, stops at `awaiting-decision` instead of starting fresh, in
372
+ `rig up --existing` and in `rig launch` (exit 1); the message names the command that starts it
373
+ fresh on purpose. In a pod-aware rig, a seat is rolled back as unresumable only when its runtime
374
+ reports the conversation missing.
346
375
  - **`rig down`** — stop a rig's seats and take it out of the running set. It ends the agents'
347
376
  sessions and any work in progress; don't run it on a live team unless the person asked. In
348
377
  human mode it first prints one line with each agent's last known activity, or “unknown”: a
@@ -350,12 +379,24 @@ not have to tear one down to change it, and you rarely have to start from nothin
350
379
  that reports errors exits 2.
351
380
  - **`rig launch <rigId> [seat]`** — one seat is down; start just that one, without disturbing the
352
381
  rest. It takes the rig ID from `rig ps --json`; a rig name gives `rig_not_found`. Add `--plan` to preview it first, locally or with `--host`; a plan is never sent to a
353
- daemon older than 0.5.9, which would ignore it and launch.
382
+ daemon older than 0.5.9, which would ignore it and launch. A seat whose agent exited to a shell in
383
+ its kept pane reads `attention_required` (exit 1), not already running: resume it, or
384
+ `rig seat launch <session> --fresh --stop`.
354
385
  - **`rig seat launch <seat> --fresh --reason <why>`** — deliberately create a blank occupant for
355
386
  exactly one existing seat. It uses no resume, fork, rebuild, snapshot, or restore packet;
356
- siblings and durable work stay put, and unmanaged ambiguity refuses.
387
+ siblings and durable work stay put, and unmanaged ambiguity refuses. With `--stop`, a seat with a
388
+ still-live older session is refused before anything is stopped; `--plan` previews it.
389
+ - **`rig seat restart <seat> --keep-conversation --reason <why>`** — restart one Codex seat in its
390
+ own pane on the same conversation, so it starts again on whatever account its Codex home now
391
+ holds; it doesn't switch accounts itself. It refuses with nothing stopped unless the seat is a
392
+ Codex seat OpenRig launched, in a single pane, with a conversation it can prove and unchanged
393
+ running settings. `--plan` runs every check and stops nothing; `--verify --expect-account
394
+ <account>` reports `moved` only when a tool turn has completed in the same conversation since
395
+ the restart and Codex's status names that account. Linux only: on macOS a
396
+ request that reaches the running-process check refuses before stopping the seat.
357
397
  - **`rig add`** / **`rig expand`** — graft one more member, or a whole new pod, onto a rig that is
358
- already running. `rig grow --new-pod` and `rig expand` are one ingress; choose by input shape.
398
+ already running. `rig add` takes the rig's name or ID; a name two active rigs share is refused
399
+ with `rig_ambiguous` and the candidates. `rig grow --new-pod` and `rig expand` are one ingress; choose by input shape.
359
400
  - **`rig remove`** / **`rig shrink`** — take a seat, or an entire pod, out of a running topology.
360
401
  If it holds active work, pass `--fallback <live-seat>` to reroute before mutation; without a
361
402
  valid fallback the command refuses rather than strand the rows.
@@ -460,7 +501,8 @@ version, from checking the environment to a useful report to the OpenRig team.
460
501
  updating Codex is the operator's job.
461
502
  - **`rig seat set-model` / `stop` / `clean`** — persist the model for later managed resumes, stop
462
503
  exactly one live seat (ending its session and any work in progress), or clear a dead seat's
463
- stale binding. When the topology is right and only
504
+ stale binding. A stop is recorded, so the rig doesn't read `degraded` for that seat, and a rig
505
+ whose seats were all stopped this way reads `stopped`. When the topology is right and only
464
506
  the occupant is wrong, use these seat lifecycle verbs or `rig handover`, not a rig down/up cycle.
465
507
  Effective-model detection follows the identity-verified current occupant, not a retained
466
508
  predecessor; a `<synthetic>` transcript record is skipped, so a PENDING model check is not a
@@ -548,7 +590,8 @@ scheme, and nothing downstream can see it.
548
590
  source actually bound. When someone later asks where the contract items came from, the drop's
549
591
  own echo is the answer — not a re-read of the files.
550
592
  - **`rig proof judge` / `rig proof show`** — record an attributed judgment on a contract item once,
551
- then read derived proof, slice, mission and project readiness. The owning scope selects
593
+ then read derived proof, slice, mission and project readiness. Both take `--project <id>` or a
594
+ `<project>:` scope prefix. The owning scope selects
552
595
  `proofPolicy.judges` (nearest slice, mission or project policy wins); consult `rig proof --help`
553
596
  for that setup and the item/evidence selectors. Accept, reject or withdraw against readable
554
597
  evidence; corrections preserve history and unrelated judgments without ancestor status edits.
@@ -774,7 +817,11 @@ your circumstances is configuration, and the ones that are not, another agent ca
774
817
  - **`rig provider accounts` / `bindings` / `signals` / `switch`** — which seats are bound to which
775
818
  accounts, what the usage signals say, and whether a seat can be moved without stranding the
776
819
  conversation it is in the middle of. **`provider signals` reports anomalies rather than a
777
- listing** — unbound seats, accounts shared across several seats.
820
+ listing** — unbound seats, accounts shared across several seats. A Codex seat showing its
821
+ usage-limit banner reads activity `unknown` with reason `usage_limit`, and keeps it while its
822
+ screen redraws; `provider signals` can show a provider-event signal for that seat's account that
823
+ allows a switch decision. With `provider.usage_windows` on (off by default), `rig provider status
824
+ --refresh` reads a Codex login's usage windows once.
778
825
  - **Codex configuration fragments** — a `codex_config_fragment` must open with a table header and
779
826
  never overrides a user-declared table; see `docs/reference/agent-spec.md`.
780
827
  - **`rig env`** — the real services behind a rig: are they up, what are they saying, how do you
@@ -782,7 +829,8 @@ your circumstances is configuration, and the ones that are not, another agent ca
782
829
  - **`rig setup`** — what OpenRig would change about this machine, shown before it touches anything.
783
830
  It installs herdr by default on macOS and Linux (`--no-herdr` declines; if the install fails,
784
831
  views fall back to plain tmux) and on a Mac offers Ghostty once (`--ghostty` / `--no-ghostty`).
785
- It no longer installs cmux; an existing cmux still works.
832
+ It no longer installs cmux; an existing cmux still works. `--providers claude`, `codex` or
833
+ `both` sets which harnesses it installs and checks; one not chosen reads `skipped`, never failed.
786
834
  - **`rig usage series`** — what a seat's token curve has looked like over time: climbing steadily,
787
835
  reset, or stopped reporting entirely. The last one is a signal, not a gap.
788
836
  - **`rig tui`** — the interactive view over rigs, pods, seats and specs. `rig` and `rig tui` open
@@ -868,6 +916,8 @@ database. It is one more set of primitives on a machine full of them.
868
916
  - **"Did that actually land?"** — `rig queue show <qitemId>` gives a bounded preview,
869
917
  original byte size and the exact expansion command. Read the complete original record with
870
918
  `rig queue show <qitemId> --full --json`; a preview or a compact list is not the whole body.
919
+ Compact `rig queue list` rows carry `summary`; the fields they leave out are absent, not empty,
920
+ and `fieldsElided` names them.
871
921
  Delivery status is separate from content: inspect its receipt before claiming it was consumed.
872
922
  - **"What am I waiting on?"** — the queue row's `waiting` view derives its owner, exact blocker
873
923
  and blocker owner, last meaningful change, activity confidence and next backstop from live
@@ -137,7 +137,9 @@ The other provider's CLI/login is optional. Herdr is installed by default unless
137
137
  you decline it; cmux remains optional. Do not copy credentials
138
138
  or start repeated sign-in attempts. Recheck the selected login after the user
139
139
  completes it. `rig setup --dry-run` previews the broader setup; applying
140
- `rig setup` checks **both** harnesses and installs a missing one with npm; on
140
+ `rig setup` checks **both** harnesses and installs a missing one with npm, unless
141
+ you pass the person's choice: `rig setup --providers claude` (or `codex`) leaves
142
+ the other out, so it reads not selected instead of failed. On
141
143
  macOS it uses an existing Homebrew (it does not install Homebrew) to install a
142
144
  missing tmux (elsewhere tmux is checked, not installed). Herdr installs on
143
145
  macOS and Linux; pass `--no-herdr` to decline it. Setup also
@@ -198,7 +200,7 @@ leaves existing cmux settings alone and does not open a view during setup.
198
200
 
199
201
  On a Mac, the installing agent also asks once, "Install Ghostty for the OpenRig
200
202
  view?" On Yes it reruns setup with `--ghostty`, preserving earlier choices such
201
- as `--no-herdr`. This installs the
203
+ as `--no-herdr` and `--providers`. This installs the
202
204
  [documented Homebrew cask](https://ghostty.org/docs/install/binary) and checks for
203
205
  the app. On No it uses `--no-ghostty`; Terminal.app remains available. Plain setup
204
206
  reports this offer without installing Ghostty or waiting for input. The person
@@ -331,17 +333,19 @@ For the first desktop handoff, use `--window`. Only if the window cannot open,
331
333
  For an explicitly requested manual attachment, inspect the current bindings:
332
334
 
333
335
  ```sh
334
- rig ps --nodes --rig kernel --json
336
+ rig ps --nodes --rig kernel --json --fields logicalId,canonicalSessionName,tmuxAttachCommand
335
337
  ```
336
338
 
337
- Find `logicalId: operator.agent` and use its `canonicalSessionName` in a new
339
+ Find `logicalId: operator.agent` and run its `tmuxAttachCommand`, after `env -u TMUX`, in a new
338
340
  terminal on the same host and account:
339
341
 
340
342
  ```sh
341
- env -u TMUX tmux attach-session -t '=<canonicalSessionName>'
343
+ env -u TMUX <tmuxAttachCommand>
342
344
  ```
343
345
 
344
- The installing agent fills in the actual session name. This optional manual route
346
+ When the daemon was started inside tmux on a non-default socket, its sessions live on that
347
+ server, and `tmuxAttachCommand` names it (`tmux -L <name> …` or `tmux -S <path> …`). The installing
348
+ agent fills in the actual command. This optional manual route
345
349
  is separate from the first-install desktop action above.
346
350
 
347
351
  ### Plain terminal: a new viewing session
@@ -1,7 +1,7 @@
1
1
  # Reference guides the help pack links to, loaded one file or section at a time by address
2
2
  # (rig context get reference/<file>#<section>). Each file is a symlink to docs/reference/.
3
3
  name: reference
4
- version: "0.6.9"
4
+ version: "0.6.11"
5
5
  taxonomy: world
6
6
  purpose: "Version-matched reference guides the help guide links to. Load a single file or section by address; don't load the whole pack."
7
7
  files:
@@ -397,7 +397,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
397
397
  | `profile` | string | yes | — | Profile name from the referenced AgentSpec. Use `default` for the default profile. Exception: `none` for terminal nodes. |
398
398
  | `codex_config_profile` | string | no | — | Codex-only native profile passed as `-p <name>`; letters, numbers, `_`, `.`, `-`. Separate from the AgentSpec `profile`. With the normal launch mode, this replaces OpenRig's explicit workspace-write sandbox flag. A full-bypass policy instead emits danger-full-access and omits this profile argument. |
399
399
  | `runtime` | string | yes | — | Agent runtime. Current supported values: `claude-code`, `codex`, `pi`, `omp`, `terminal`, `stub`. `stub` is a deterministic test harness, not an agent: a Node runner in the seat's tmux pane goes through the normal launch, skill projection, startup-file and readiness path, follows `<cwd>/.openrig/stub/script.json` when present, and calls no model. See "What a stub can and cannot prove" in `docs/as-built/test-layers.md`. |
400
- | `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec); an absolute path is used as is. Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. A cwd inside the OpenRig installation fails preflight unless `--cwd` is given. |
400
+ | `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec). If that path exists as written, it is used. Otherwise a leading `~` or `~/` expands to the home directory (`~user` does not) and `$VAR` / `${VAR}` expand from the daemon host's environment; a relative result still resolves against the rig root. A reference to an unset variable stays as written, so the cwd is that literal path and works only if it exists. Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. A cwd inside the OpenRig installation fails preflight unless `--cwd` is given. |
401
401
  | `label` | string | no | — | Human-readable member name. Shown in UI when present. |
402
402
  | `model` | string | no | — | Model override. Runtime-specific (e.g., `claude-opus-4-6` for Claude Code). |
403
403
  | `effort` | string | no | — | Reasoning effort override, trimmed. A non-string value is ignored with an advisory. |
@@ -406,7 +406,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
406
406
  | `restore_policy` | string | no | the AgentSpec's | Restore behavior. One of: `resume_if_possible`, `relaunch_fresh`, `checkpoint_only`. The default comes from the AgentSpec's `defaults.lifecycle` (else `resume_if_possible`) as narrowed by its profile; a member value may only narrow it further, in that order. |
407
407
  | `compaction_strategy` | string | no | — | `default-compaction`, `managed-compaction`, `handover` or `apprentice-handover`; `harness_native` and `pod_continuity` are accepted as deprecated aliases, and `custom_prompt` is refused. |
408
408
  | `mechanic` | string | no | — | A canonical `seat@rig` session address, for `apprentice-handover`. |
409
- | `session_source` | object | no | — | Start the seat from an existing session: `fork` with `native_id`, `rebuild` with `artifact_set`, or `agent_image` with `image_name`. Not valid on terminal members. |
409
+ | `session_source` | object | no | — | Start the seat from an existing session: `fork` with `native_id`, `rebuild` with `artifact_set`, or `agent_image` with `image_name`. A Claude Code `fork` needs Claude Code 2.0.73 or later. Not valid on terminal members. |
410
410
  | `starter_ref` | object | no | — | `{ name }` of an agent starter (`^[a-zA-Z0-9][a-zA-Z0-9_-]*$`) whose files lead the seat's startup. Not valid on terminal members or with a fork. |
411
411
  | `startup` | StartupBlock | no | — | Member-level startup files and actions. Applied only to this member. |
412
412