@openrig/cli 0.6.13 → 0.7.0

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 (823) hide show
  1. package/README.md +58 -9
  2. package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
  3. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
  4. package/daemon/assets/plugins/openrig-core/README.md +11 -4
  5. package/daemon/assets/plugins/openrig-core/hooks/codex.json +6 -6
  6. package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +13 -1
  7. package/daemon/assets/plugins/openrig-core/hooks/scripts/codex-hook-trust.cjs +49 -0
  8. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +26 -5
  9. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +9 -2
  10. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +3 -2
  11. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +24 -0
  12. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +2 -2
  13. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +39 -21
  14. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +10 -4
  15. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +12 -32
  16. package/daemon/assets/skills/rigs/SKILL.md +24 -5
  17. package/daemon/context-packs/help/manifest.yaml +1 -1
  18. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  19. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +18 -8
  20. package/daemon/context-packs/reference/getting-started.md +178 -35
  21. package/daemon/context-packs/reference/manifest.yaml +1 -1
  22. package/daemon/context-packs/reference/rig-spec.md +1 -1
  23. package/daemon/context-packs/reference/whats-new.md +126 -100
  24. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +9 -2
  28. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +24 -0
  34. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +2 -2
  39. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +11 -5
  42. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +3 -2
  51. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/openrig-user/SKILL.md +39 -21
  56. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/pods/development-team/SKILL.md +2 -0
  66. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +3 -1
  67. package/daemon/context-packs/skills/pods/development-team/references/refactoring.md +11 -0
  68. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/pods/review-team/SKILL.md +46 -96
  71. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  73. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  74. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  75. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  76. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  78. package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +17 -80
  79. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +5 -3
  80. package/daemon/context-packs/skills/process/verification-before-completion/references/performance-claims.md +12 -0
  81. package/daemon/context-packs/skills/queue-handoff/SKILL.md +10 -4
  82. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  83. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  84. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +12 -32
  85. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  86. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  87. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  88. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  89. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  90. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  91. package/daemon/dist/adapters/claude-code-adapter.d.ts +6 -2
  92. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  93. package/daemon/dist/adapters/claude-code-adapter.js +33 -6
  94. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  95. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  96. package/daemon/dist/adapters/codex-resume.js +2 -7
  97. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  98. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +68 -2
  99. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  100. package/daemon/dist/adapters/codex-runtime-adapter.js +371 -60
  101. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  102. package/daemon/dist/adapters/compose-services-adapter.d.ts +16 -0
  103. package/daemon/dist/adapters/compose-services-adapter.d.ts.map +1 -1
  104. package/daemon/dist/adapters/compose-services-adapter.js +52 -9
  105. package/daemon/dist/adapters/compose-services-adapter.js.map +1 -1
  106. package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -1
  107. package/daemon/dist/adapters/kernel-authority.js +9 -5
  108. package/daemon/dist/adapters/kernel-authority.js.map +1 -1
  109. package/daemon/dist/adapters/pi-runner.d.ts +2 -0
  110. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  111. package/daemon/dist/adapters/pi-runner.js +5 -0
  112. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  113. package/daemon/dist/adapters/runtime-probe-exec.d.ts +11 -0
  114. package/daemon/dist/adapters/runtime-probe-exec.d.ts.map +1 -0
  115. package/daemon/dist/adapters/runtime-probe-exec.js +25 -0
  116. package/daemon/dist/adapters/runtime-probe-exec.js.map +1 -0
  117. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  118. package/daemon/dist/adapters/stub-runner.js +2 -0
  119. package/daemon/dist/adapters/stub-runner.js.map +1 -1
  120. package/daemon/dist/adapters/tmux.d.ts +21 -1
  121. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  122. package/daemon/dist/adapters/tmux.js +101 -14
  123. package/daemon/dist/adapters/tmux.js.map +1 -1
  124. package/daemon/dist/build-info.js +3 -3
  125. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  126. package/daemon/dist/db/all-migrations.js +12 -0
  127. package/daemon/dist/db/all-migrations.js.map +1 -1
  128. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.d.ts +3 -0
  129. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.d.ts.map +1 -0
  130. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.js +8 -0
  131. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.js.map +1 -0
  132. package/daemon/dist/db/migrations/118_human_quiet_windows.d.ts +3 -0
  133. package/daemon/dist/db/migrations/118_human_quiet_windows.d.ts.map +1 -0
  134. package/daemon/dist/db/migrations/118_human_quiet_windows.js +30 -0
  135. package/daemon/dist/db/migrations/118_human_quiet_windows.js.map +1 -0
  136. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.d.ts +3 -0
  137. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.d.ts.map +1 -0
  138. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.js +7 -0
  139. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.js.map +1 -0
  140. package/daemon/dist/db/migrations/121_rig_startup_layers.d.ts +13 -0
  141. package/daemon/dist/db/migrations/121_rig_startup_layers.d.ts.map +1 -0
  142. package/daemon/dist/db/migrations/121_rig_startup_layers.js +17 -0
  143. package/daemon/dist/db/migrations/121_rig_startup_layers.js.map +1 -0
  144. package/daemon/dist/db/migrations/122_human_operating_modes.d.ts +3 -0
  145. package/daemon/dist/db/migrations/122_human_operating_modes.d.ts.map +1 -0
  146. package/daemon/dist/db/migrations/122_human_operating_modes.js +55 -0
  147. package/daemon/dist/db/migrations/122_human_operating_modes.js.map +1 -0
  148. package/daemon/dist/db/migrations/123_queue_delegated_decision.d.ts +3 -0
  149. package/daemon/dist/db/migrations/123_queue_delegated_decision.d.ts.map +1 -0
  150. package/daemon/dist/db/migrations/123_queue_delegated_decision.js +10 -0
  151. package/daemon/dist/db/migrations/123_queue_delegated_decision.js.map +1 -0
  152. package/daemon/dist/domain/active-occupant.d.ts +5 -3
  153. package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  154. package/daemon/dist/domain/active-occupant.js +2 -2
  155. package/daemon/dist/domain/active-occupant.js.map +1 -1
  156. package/daemon/dist/domain/activity-taxonomy.d.ts +16 -1
  157. package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -1
  158. package/daemon/dist/domain/activity-taxonomy.js +21 -0
  159. package/daemon/dist/domain/activity-taxonomy.js.map +1 -1
  160. package/daemon/dist/domain/agent-activity-store.d.ts +20 -0
  161. package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
  162. package/daemon/dist/domain/agent-activity-store.js +41 -5
  163. package/daemon/dist/domain/agent-activity-store.js.map +1 -1
  164. package/daemon/dist/domain/agent-images/evidence-guard.js +3 -3
  165. package/daemon/dist/domain/agent-images/evidence-guard.js.map +1 -1
  166. package/daemon/dist/domain/agent-images/resume-token-discovery.d.ts.map +1 -1
  167. package/daemon/dist/domain/agent-images/resume-token-discovery.js +2 -10
  168. package/daemon/dist/domain/agent-images/resume-token-discovery.js.map +1 -1
  169. package/daemon/dist/domain/ask-service.d.ts +1 -0
  170. package/daemon/dist/domain/ask-service.d.ts.map +1 -1
  171. package/daemon/dist/domain/ask-service.js +7 -1
  172. package/daemon/dist/domain/ask-service.js.map +1 -1
  173. package/daemon/dist/domain/bootstrap-orchestrator.d.ts +2 -0
  174. package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
  175. package/daemon/dist/domain/bootstrap-orchestrator.js +5 -6
  176. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  177. package/daemon/dist/domain/claim-service.d.ts +10 -19
  178. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  179. package/daemon/dist/domain/claim-service.js +90 -0
  180. package/daemon/dist/domain/claim-service.js.map +1 -1
  181. package/daemon/dist/domain/classification-sources.d.ts.map +1 -1
  182. package/daemon/dist/domain/classification-sources.js +2 -0
  183. package/daemon/dist/domain/classification-sources.js.map +1 -1
  184. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +19 -6
  185. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  186. package/daemon/dist/domain/claude-compaction-enforcer.js +108 -38
  187. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  188. package/daemon/dist/domain/claude-core-plugin-env.d.ts +11 -0
  189. package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
  190. package/daemon/dist/domain/claude-core-plugin-env.js +15 -0
  191. package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
  192. package/daemon/dist/domain/codex-core-plugin-install.d.ts +41 -0
  193. package/daemon/dist/domain/codex-core-plugin-install.d.ts.map +1 -0
  194. package/daemon/dist/domain/codex-core-plugin-install.js +126 -0
  195. package/daemon/dist/domain/codex-core-plugin-install.js.map +1 -0
  196. package/daemon/dist/domain/codex-thread-id.d.ts +23 -1
  197. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  198. package/daemon/dist/domain/codex-thread-id.js +58 -17
  199. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  200. package/daemon/dist/domain/context-monitor.d.ts +13 -5
  201. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  202. package/daemon/dist/domain/context-monitor.js +47 -13
  203. package/daemon/dist/domain/context-monitor.js.map +1 -1
  204. package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  205. package/daemon/dist/domain/context-usage-store.js +3 -0
  206. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  207. package/daemon/dist/domain/current-work.d.ts +18 -0
  208. package/daemon/dist/domain/current-work.d.ts.map +1 -1
  209. package/daemon/dist/domain/current-work.js +17 -3
  210. package/daemon/dist/domain/current-work.js.map +1 -1
  211. package/daemon/dist/domain/draft-aware-delivery.d.ts +7 -7
  212. package/daemon/dist/domain/draft-aware-delivery.d.ts.map +1 -1
  213. package/daemon/dist/domain/draft-aware-delivery.js +61 -82
  214. package/daemon/dist/domain/draft-aware-delivery.js.map +1 -1
  215. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  216. package/daemon/dist/domain/execution-view.js +2 -1
  217. package/daemon/dist/domain/execution-view.js.map +1 -1
  218. package/daemon/dist/domain/existing-rig-restore.d.ts +110 -0
  219. package/daemon/dist/domain/existing-rig-restore.d.ts.map +1 -0
  220. package/daemon/dist/domain/existing-rig-restore.js +254 -0
  221. package/daemon/dist/domain/existing-rig-restore.js.map +1 -0
  222. package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -1
  223. package/daemon/dist/domain/fresh-occupant-relation.js +11 -3
  224. package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -1
  225. package/daemon/dist/domain/gateway/channel-operations.d.ts +3 -4
  226. package/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -1
  227. package/daemon/dist/domain/gateway/channel-operations.js.map +1 -1
  228. package/daemon/dist/domain/gateway/connections-projection.d.ts +0 -5
  229. package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
  230. package/daemon/dist/domain/gateway/connections-projection.js +3 -46
  231. package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
  232. package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts +11 -1
  233. package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts.map +1 -1
  234. package/daemon/dist/domain/gateway/delivery-rules-engine.js +12 -2
  235. package/daemon/dist/domain/gateway/delivery-rules-engine.js.map +1 -1
  236. package/daemon/dist/domain/gateway/dispatch-buffer.d.ts +4 -0
  237. package/daemon/dist/domain/gateway/dispatch-buffer.d.ts.map +1 -1
  238. package/daemon/dist/domain/gateway/dispatch-buffer.js +18 -0
  239. package/daemon/dist/domain/gateway/dispatch-buffer.js.map +1 -1
  240. package/daemon/dist/domain/gateway/human-mode-account.d.ts +61 -0
  241. package/daemon/dist/domain/gateway/human-mode-account.d.ts.map +1 -0
  242. package/daemon/dist/domain/gateway/human-mode-account.js +112 -0
  243. package/daemon/dist/domain/gateway/human-mode-account.js.map +1 -0
  244. package/daemon/dist/domain/gateway/human-operating-modes.d.ts +171 -0
  245. package/daemon/dist/domain/gateway/human-operating-modes.d.ts.map +1 -0
  246. package/daemon/dist/domain/gateway/human-operating-modes.js +422 -0
  247. package/daemon/dist/domain/gateway/human-operating-modes.js.map +1 -0
  248. package/daemon/dist/domain/gateway/human-quiet-windows.d.ts +121 -0
  249. package/daemon/dist/domain/gateway/human-quiet-windows.d.ts.map +1 -0
  250. package/daemon/dist/domain/gateway/human-quiet-windows.js +217 -0
  251. package/daemon/dist/domain/gateway/human-quiet-windows.js.map +1 -0
  252. package/daemon/dist/domain/gateway/human-registry.d.ts +23 -2
  253. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  254. package/daemon/dist/domain/gateway/human-registry.js +67 -5
  255. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  256. package/daemon/dist/domain/gateway/operator-delivery-engine.d.ts.map +1 -1
  257. package/daemon/dist/domain/gateway/operator-delivery-engine.js +9 -0
  258. package/daemon/dist/domain/gateway/operator-delivery-engine.js.map +1 -1
  259. package/daemon/dist/domain/gateway/slack/inbound.d.ts +10 -2
  260. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  261. package/daemon/dist/domain/gateway/slack/inbound.js +24 -2
  262. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  263. package/daemon/dist/domain/gateway/slack/message.d.ts +1 -0
  264. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
  265. package/daemon/dist/domain/gateway/slack/message.js +5 -1
  266. package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
  267. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +9 -3
  268. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  269. package/daemon/dist/domain/gateway/slack/outbound-driver.js +40 -6
  270. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  271. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +19 -1
  272. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  273. package/daemon/dist/domain/gateway/slack/slack-delivery.js +128 -41
  274. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  275. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +3 -2
  276. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  277. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +268 -50
  278. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  279. package/daemon/dist/domain/health-passive-ceremony.d.ts +4 -0
  280. package/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -1
  281. package/daemon/dist/domain/health-passive-ceremony.js +34 -4
  282. package/daemon/dist/domain/health-passive-ceremony.js.map +1 -1
  283. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +3 -1
  284. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
  285. package/daemon/dist/domain/hosts/hosts-registry-reader.js +9 -9
  286. package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
  287. package/daemon/dist/domain/hosts/learned-host-bindings.d.ts +28 -0
  288. package/daemon/dist/domain/hosts/learned-host-bindings.d.ts.map +1 -0
  289. package/daemon/dist/domain/hosts/learned-host-bindings.js +77 -0
  290. package/daemon/dist/domain/hosts/learned-host-bindings.js.map +1 -0
  291. package/daemon/dist/domain/hot-potato-enforcer.d.ts +7 -5
  292. package/daemon/dist/domain/hot-potato-enforcer.d.ts.map +1 -1
  293. package/daemon/dist/domain/hot-potato-enforcer.js +19 -10
  294. package/daemon/dist/domain/hot-potato-enforcer.js.map +1 -1
  295. package/daemon/dist/domain/human-questions.d.ts +8 -1
  296. package/daemon/dist/domain/human-questions.d.ts.map +1 -1
  297. package/daemon/dist/domain/human-questions.js.map +1 -1
  298. package/daemon/dist/domain/kernel-boot-tracker.d.ts +17 -1
  299. package/daemon/dist/domain/kernel-boot-tracker.d.ts.map +1 -1
  300. package/daemon/dist/domain/kernel-boot-tracker.js +44 -3
  301. package/daemon/dist/domain/kernel-boot-tracker.js.map +1 -1
  302. package/daemon/dist/domain/kernel-boot.d.ts +21 -0
  303. package/daemon/dist/domain/kernel-boot.d.ts.map +1 -1
  304. package/daemon/dist/domain/kernel-boot.js +57 -2
  305. package/daemon/dist/domain/kernel-boot.js.map +1 -1
  306. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +2 -1
  307. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  308. package/daemon/dist/domain/model-divergence/current-generation-record.js +8 -3
  309. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  310. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  311. package/daemon/dist/domain/native-process-lineage.js +43 -15
  312. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  313. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  314. package/daemon/dist/domain/node-inventory.js +26 -12
  315. package/daemon/dist/domain/node-inventory.js.map +1 -1
  316. package/daemon/dist/domain/node-launcher.d.ts +5 -3
  317. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  318. package/daemon/dist/domain/node-launcher.js +29 -25
  319. package/daemon/dist/domain/node-launcher.js.map +1 -1
  320. package/daemon/dist/domain/outbox-handler.d.ts +3 -5
  321. package/daemon/dist/domain/outbox-handler.d.ts.map +1 -1
  322. package/daemon/dist/domain/outbox-handler.js +9 -19
  323. package/daemon/dist/domain/outbox-handler.js.map +1 -1
  324. package/daemon/dist/domain/park-wake-text.d.ts +11 -0
  325. package/daemon/dist/domain/park-wake-text.d.ts.map +1 -0
  326. package/daemon/dist/domain/park-wake-text.js +26 -0
  327. package/daemon/dist/domain/park-wake-text.js.map +1 -0
  328. package/daemon/dist/domain/plugin-vendor-service.d.ts +4 -0
  329. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  330. package/daemon/dist/domain/plugin-vendor-service.js +29 -6
  331. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  332. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts +1 -0
  333. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -1
  334. package/daemon/dist/domain/policies/delivery-digest-flush.js +25 -4
  335. package/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -1
  336. package/daemon/dist/domain/policies/mode-scheduled-end.d.ts +37 -0
  337. package/daemon/dist/domain/policies/mode-scheduled-end.d.ts.map +1 -0
  338. package/daemon/dist/domain/policies/mode-scheduled-end.js +161 -0
  339. package/daemon/dist/domain/policies/mode-scheduled-end.js.map +1 -0
  340. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +11 -7
  341. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  342. package/daemon/dist/domain/policies/parked-owner-consumer.js +82 -113
  343. package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  344. package/daemon/dist/domain/policies/quiet-release.d.ts +109 -0
  345. package/daemon/dist/domain/policies/quiet-release.d.ts.map +1 -0
  346. package/daemon/dist/domain/policies/quiet-release.js +213 -0
  347. package/daemon/dist/domain/policies/quiet-release.js.map +1 -0
  348. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  349. package/daemon/dist/domain/profile-resolver.js +8 -3
  350. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  351. package/daemon/dist/domain/proof/source-watch.js +2 -2
  352. package/daemon/dist/domain/proof/source-watch.js.map +1 -1
  353. package/daemon/dist/domain/queue-destination-check.d.ts +6 -0
  354. package/daemon/dist/domain/queue-destination-check.d.ts.map +1 -0
  355. package/daemon/dist/domain/queue-destination-check.js +35 -0
  356. package/daemon/dist/domain/queue-destination-check.js.map +1 -0
  357. package/daemon/dist/domain/queue-owner.d.ts.map +1 -1
  358. package/daemon/dist/domain/queue-owner.js +2 -1
  359. package/daemon/dist/domain/queue-owner.js.map +1 -1
  360. package/daemon/dist/domain/queue-recovery.d.ts +1 -1
  361. package/daemon/dist/domain/queue-recovery.d.ts.map +1 -1
  362. package/daemon/dist/domain/queue-recovery.js +3 -2
  363. package/daemon/dist/domain/queue-recovery.js.map +1 -1
  364. package/daemon/dist/domain/queue-repository.d.ts +108 -67
  365. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  366. package/daemon/dist/domain/queue-repository.js +316 -140
  367. package/daemon/dist/domain/queue-repository.js.map +1 -1
  368. package/daemon/dist/domain/queue-stuck-sweep.d.ts +13 -1
  369. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  370. package/daemon/dist/domain/queue-stuck-sweep.js +95 -13
  371. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  372. package/daemon/dist/domain/queue-transition-log.d.ts +5 -0
  373. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  374. package/daemon/dist/domain/queue-transition-log.js +25 -8
  375. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  376. package/daemon/dist/domain/queue-wake-ladder.d.ts +2 -0
  377. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  378. package/daemon/dist/domain/queue-wake-ladder.js +94 -11
  379. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  380. package/daemon/dist/domain/quiet-hold-custody.d.ts +24 -0
  381. package/daemon/dist/domain/quiet-hold-custody.d.ts.map +1 -0
  382. package/daemon/dist/domain/quiet-hold-custody.js +85 -0
  383. package/daemon/dist/domain/quiet-hold-custody.js.map +1 -0
  384. package/daemon/dist/domain/rehydrate-eligibility.d.ts +12 -1
  385. package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  386. package/daemon/dist/domain/rehydrate-eligibility.js +47 -9
  387. package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  388. package/daemon/dist/domain/restore-orchestrator.d.ts +11 -0
  389. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  390. package/daemon/dist/domain/restore-orchestrator.js +144 -15
  391. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  392. package/daemon/dist/domain/restore-plan-preview.d.ts +3 -1
  393. package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  394. package/daemon/dist/domain/restore-plan-preview.js +30 -13
  395. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  396. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  397. package/daemon/dist/domain/review/gather.js +8 -5
  398. package/daemon/dist/domain/review/gather.js.map +1 -1
  399. package/daemon/dist/domain/rig-mode/operating-posture.d.ts.map +1 -1
  400. package/daemon/dist/domain/rig-mode/operating-posture.js +3 -1
  401. package/daemon/dist/domain/rig-mode/operating-posture.js.map +1 -1
  402. package/daemon/dist/domain/rig-repository.d.ts +11 -1
  403. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  404. package/daemon/dist/domain/rig-repository.js +27 -3
  405. package/daemon/dist/domain/rig-repository.js.map +1 -1
  406. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  407. package/daemon/dist/domain/rig-teardown.js +31 -4
  408. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  409. package/daemon/dist/domain/rigspec-instantiator.d.ts +9 -0
  410. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  411. package/daemon/dist/domain/rigspec-instantiator.js +59 -28
  412. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  413. package/daemon/dist/domain/rigspec-schema.d.ts +5 -0
  414. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  415. package/daemon/dist/domain/rigspec-schema.js +30 -0
  416. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  417. package/daemon/dist/domain/runtime-adapter.d.ts +27 -2
  418. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  419. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  420. package/daemon/dist/domain/seat-activity-service.d.ts +18 -3
  421. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  422. package/daemon/dist/domain/seat-activity-service.js +124 -57
  423. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  424. package/daemon/dist/domain/seat-attention-reconciler.d.ts +8 -1
  425. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  426. package/daemon/dist/domain/seat-attention-reconciler.js +3 -1
  427. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  428. package/daemon/dist/domain/seat-delivery-guard.d.ts.map +1 -1
  429. package/daemon/dist/domain/seat-delivery-guard.js +21 -5
  430. package/daemon/dist/domain/seat-delivery-guard.js.map +1 -1
  431. package/daemon/dist/domain/seat-handover-service.d.ts +2 -2
  432. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  433. package/daemon/dist/domain/seat-handover-service.js +28 -2
  434. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  435. package/daemon/dist/domain/seat-identity-reconciler.js +1 -1
  436. package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  437. package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
  438. package/daemon/dist/domain/seat-identity-store.js +5 -2
  439. package/daemon/dist/domain/seat-identity-store.js.map +1 -1
  440. package/daemon/dist/domain/seat-launch-environment.d.ts.map +1 -1
  441. package/daemon/dist/domain/seat-launch-environment.js +17 -1
  442. package/daemon/dist/domain/seat-launch-environment.js.map +1 -1
  443. package/daemon/dist/domain/seat-lifecycle-service.d.ts +4 -0
  444. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  445. package/daemon/dist/domain/seat-restart-in-place.d.ts +33 -14
  446. package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -1
  447. package/daemon/dist/domain/seat-restart-in-place.js +102 -30
  448. package/daemon/dist/domain/seat-restart-in-place.js.map +1 -1
  449. package/daemon/dist/domain/self-attach-service.d.ts +3 -2
  450. package/daemon/dist/domain/self-attach-service.d.ts.map +1 -1
  451. package/daemon/dist/domain/self-attach-service.js +18 -1
  452. package/daemon/dist/domain/self-attach-service.js.map +1 -1
  453. package/daemon/dist/domain/services-readiness.d.ts.map +1 -1
  454. package/daemon/dist/domain/services-readiness.js +14 -3
  455. package/daemon/dist/domain/services-readiness.js.map +1 -1
  456. package/daemon/dist/domain/session-registry.d.ts +45 -0
  457. package/daemon/dist/domain/session-registry.d.ts.map +1 -1
  458. package/daemon/dist/domain/session-registry.js +124 -0
  459. package/daemon/dist/domain/session-registry.js.map +1 -1
  460. package/daemon/dist/domain/session-transport.d.ts +24 -6
  461. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  462. package/daemon/dist/domain/session-transport.js +58 -41
  463. package/daemon/dist/domain/session-transport.js.map +1 -1
  464. package/daemon/dist/domain/skill-discovery.d.ts +7 -1
  465. package/daemon/dist/domain/skill-discovery.d.ts.map +1 -1
  466. package/daemon/dist/domain/skill-discovery.js +41 -7
  467. package/daemon/dist/domain/skill-discovery.js.map +1 -1
  468. package/daemon/dist/domain/snapshot-repository.d.ts +1 -0
  469. package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
  470. package/daemon/dist/domain/snapshot-repository.js +23 -10
  471. package/daemon/dist/domain/snapshot-repository.js.map +1 -1
  472. package/daemon/dist/domain/startup-orchestrator.d.ts +21 -3
  473. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  474. package/daemon/dist/domain/startup-orchestrator.js +66 -16
  475. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  476. package/daemon/dist/domain/startup-submission-evidence.d.ts +4 -11
  477. package/daemon/dist/domain/startup-submission-evidence.d.ts.map +1 -1
  478. package/daemon/dist/domain/startup-submission-evidence.js +11 -17
  479. package/daemon/dist/domain/startup-submission-evidence.js.map +1 -1
  480. package/daemon/dist/domain/successor-session-launcher.d.ts +2 -1
  481. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  482. package/daemon/dist/domain/successor-session-launcher.js +3 -1
  483. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  484. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +1 -1
  485. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  486. package/daemon/dist/domain/terminal/herdr-adapter.js +22 -4
  487. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  488. package/daemon/dist/domain/topology-converge.d.ts +1 -0
  489. package/daemon/dist/domain/topology-converge.d.ts.map +1 -1
  490. package/daemon/dist/domain/topology-converge.js +1 -0
  491. package/daemon/dist/domain/topology-converge.js.map +1 -1
  492. package/daemon/dist/domain/types.d.ts +15 -4
  493. package/daemon/dist/domain/types.d.ts.map +1 -1
  494. package/daemon/dist/domain/types.js.map +1 -1
  495. package/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -1
  496. package/daemon/dist/domain/user-settings/settings-browser.js +2 -0
  497. package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -1
  498. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  499. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  500. package/daemon/dist/domain/user-settings/settings-store.js +37 -7
  501. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  502. package/daemon/dist/domain/wake-resolve-service.d.ts +1 -0
  503. package/daemon/dist/domain/wake-resolve-service.d.ts.map +1 -1
  504. package/daemon/dist/domain/wake-resolve-service.js +10 -0
  505. package/daemon/dist/domain/wake-resolve-service.js.map +1 -1
  506. package/daemon/dist/domain/wake-resolver.d.ts.map +1 -1
  507. package/daemon/dist/domain/wake-resolver.js +7 -0
  508. package/daemon/dist/domain/wake-resolver.js.map +1 -1
  509. package/daemon/dist/domain/watchdog-delivery.d.ts +3 -23
  510. package/daemon/dist/domain/watchdog-delivery.d.ts.map +1 -1
  511. package/daemon/dist/domain/watchdog-delivery.js +12 -89
  512. package/daemon/dist/domain/watchdog-delivery.js.map +1 -1
  513. package/daemon/dist/domain/watchdog-history-log.d.ts +5 -2
  514. package/daemon/dist/domain/watchdog-history-log.d.ts.map +1 -1
  515. package/daemon/dist/domain/watchdog-history-log.js.map +1 -1
  516. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -2
  517. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  518. package/daemon/dist/domain/watchdog-jobs-repository.js +4 -0
  519. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  520. package/daemon/dist/domain/watchdog-policy-engine.d.ts +16 -24
  521. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  522. package/daemon/dist/domain/watchdog-policy-engine.js +44 -43
  523. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  524. package/daemon/dist/domain/whoami-service.d.ts +2 -0
  525. package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
  526. package/daemon/dist/domain/whoami-service.js +23 -6
  527. package/daemon/dist/domain/whoami-service.js.map +1 -1
  528. package/daemon/dist/domain/workflow-boot-sweep.d.ts +2 -1
  529. package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -1
  530. package/daemon/dist/domain/workflow-boot-sweep.js +11 -5
  531. package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -1
  532. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  533. package/daemon/dist/domain/workflow-exception-escalation.js +2 -1
  534. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  535. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  536. package/daemon/dist/domain/workflow-projector.js +5 -2
  537. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  538. package/daemon/dist/domain/workflow-role-context.js +2 -2
  539. package/daemon/dist/domain/workflow-role-context.js.map +1 -1
  540. package/daemon/dist/domain/workflow-runtime.d.ts +1 -1
  541. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  542. package/daemon/dist/domain/workflow-runtime.js +2 -0
  543. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  544. package/daemon/dist/routes/activity.d.ts +13 -1
  545. package/daemon/dist/routes/activity.d.ts.map +1 -1
  546. package/daemon/dist/routes/activity.js +67 -2
  547. package/daemon/dist/routes/activity.js.map +1 -1
  548. package/daemon/dist/routes/agent-images.d.ts.map +1 -1
  549. package/daemon/dist/routes/agent-images.js +2 -0
  550. package/daemon/dist/routes/agent-images.js.map +1 -1
  551. package/daemon/dist/routes/compaction.d.ts.map +1 -1
  552. package/daemon/dist/routes/compaction.js +8 -3
  553. package/daemon/dist/routes/compaction.js.map +1 -1
  554. package/daemon/dist/routes/discovery.js +3 -0
  555. package/daemon/dist/routes/discovery.js.map +1 -1
  556. package/daemon/dist/routes/down.js +9 -1
  557. package/daemon/dist/routes/down.js.map +1 -1
  558. package/daemon/dist/routes/gateway.d.ts +2 -0
  559. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  560. package/daemon/dist/routes/gateway.js +181 -1
  561. package/daemon/dist/routes/gateway.js.map +1 -1
  562. package/daemon/dist/routes/kernel-status.js +6 -1
  563. package/daemon/dist/routes/kernel-status.js.map +1 -1
  564. package/daemon/dist/routes/provider.d.ts.map +1 -1
  565. package/daemon/dist/routes/provider.js +0 -73
  566. package/daemon/dist/routes/provider.js.map +1 -1
  567. package/daemon/dist/routes/queue.d.ts.map +1 -1
  568. package/daemon/dist/routes/queue.js +73 -13
  569. package/daemon/dist/routes/queue.js.map +1 -1
  570. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  571. package/daemon/dist/routes/rigs.js +29 -10
  572. package/daemon/dist/routes/rigs.js.map +1 -1
  573. package/daemon/dist/routes/rigspec.js +2 -3
  574. package/daemon/dist/routes/rigspec.js.map +1 -1
  575. package/daemon/dist/routes/seat.js +2 -2
  576. package/daemon/dist/routes/seat.js.map +1 -1
  577. package/daemon/dist/routes/sessions.js +35 -0
  578. package/daemon/dist/routes/sessions.js.map +1 -1
  579. package/daemon/dist/routes/skills.js +2 -2
  580. package/daemon/dist/routes/skills.js.map +1 -1
  581. package/daemon/dist/routes/transcripts.d.ts.map +1 -1
  582. package/daemon/dist/routes/transcripts.js +7 -3
  583. package/daemon/dist/routes/transcripts.js.map +1 -1
  584. package/daemon/dist/routes/transport.js +1 -1
  585. package/daemon/dist/routes/transport.js.map +1 -1
  586. package/daemon/dist/routes/up.js +36 -52
  587. package/daemon/dist/routes/up.js.map +1 -1
  588. package/daemon/dist/server.d.ts.map +1 -1
  589. package/daemon/dist/server.js +6 -4
  590. package/daemon/dist/server.js.map +1 -1
  591. package/daemon/dist/startup.d.ts.map +1 -1
  592. package/daemon/dist/startup.js +104 -65
  593. package/daemon/dist/startup.js.map +1 -1
  594. package/daemon/docs/reference/agent-state-taxonomy.md +17 -2
  595. package/daemon/docs/reference/getting-started.md +178 -35
  596. package/daemon/docs/reference/quickstart.md +200 -0
  597. package/daemon/docs/reference/refocus-channel.md +9 -3
  598. package/daemon/docs/reference/rig-spec.md +1 -1
  599. package/daemon/docs/reference/seat-delivery.md +57 -18
  600. package/daemon/docs/reference/slack-app-setup.md +49 -2
  601. package/daemon/docs/reference/whats-new.md +126 -100
  602. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +24 -0
  603. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +2 -2
  604. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +11 -5
  605. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +2 -0
  606. package/daemon/specs/agents/shared/skills/pods/development-team/references/refactoring.md +11 -0
  607. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +46 -96
  608. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +17 -80
  609. package/daemon/specs/agents/shared/skills/process/verification-before-completion/references/performance-claims.md +12 -0
  610. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +93 -14
  611. package/dist/build-info.js +3 -3
  612. package/dist/cli-error.d.ts +4 -0
  613. package/dist/cli-error.d.ts.map +1 -1
  614. package/dist/cli-error.js +6 -0
  615. package/dist/cli-error.js.map +1 -1
  616. package/dist/client.d.ts +7 -1
  617. package/dist/client.d.ts.map +1 -1
  618. package/dist/client.js +28 -0
  619. package/dist/client.js.map +1 -1
  620. package/dist/commands/agent-image.d.ts.map +1 -1
  621. package/dist/commands/agent-image.js +15 -7
  622. package/dist/commands/agent-image.js.map +1 -1
  623. package/dist/commands/archive.d.ts.map +1 -1
  624. package/dist/commands/archive.js +17 -3
  625. package/dist/commands/archive.js.map +1 -1
  626. package/dist/commands/ask.d.ts.map +1 -1
  627. package/dist/commands/ask.js +13 -3
  628. package/dist/commands/ask.js.map +1 -1
  629. package/dist/commands/attach.d.ts.map +1 -1
  630. package/dist/commands/attach.js +6 -4
  631. package/dist/commands/attach.js.map +1 -1
  632. package/dist/commands/broadcast.js +2 -0
  633. package/dist/commands/broadcast.js.map +1 -1
  634. package/dist/commands/chatroom.d.ts.map +1 -1
  635. package/dist/commands/chatroom.js +1 -0
  636. package/dist/commands/chatroom.js.map +1 -1
  637. package/dist/commands/community-harness.d.ts.map +1 -1
  638. package/dist/commands/community-harness.js +2 -1
  639. package/dist/commands/community-harness.js.map +1 -1
  640. package/dist/commands/compact-plan.d.ts.map +1 -1
  641. package/dist/commands/compact-plan.js +2 -1
  642. package/dist/commands/compact-plan.js.map +1 -1
  643. package/dist/commands/compact.d.ts.map +1 -1
  644. package/dist/commands/compact.js +15 -7
  645. package/dist/commands/compact.js.map +1 -1
  646. package/dist/commands/config.d.ts.map +1 -1
  647. package/dist/commands/config.js +11 -2
  648. package/dist/commands/config.js.map +1 -1
  649. package/dist/commands/context.d.ts.map +1 -1
  650. package/dist/commands/context.js +16 -9
  651. package/dist/commands/context.js.map +1 -1
  652. package/dist/commands/doctor.d.ts +3 -0
  653. package/dist/commands/doctor.d.ts.map +1 -1
  654. package/dist/commands/doctor.js +39 -16
  655. package/dist/commands/doctor.js.map +1 -1
  656. package/dist/commands/expand.d.ts.map +1 -1
  657. package/dist/commands/expand.js +16 -2
  658. package/dist/commands/expand.js.map +1 -1
  659. package/dist/commands/export.d.ts.map +1 -1
  660. package/dist/commands/export.js +9 -2
  661. package/dist/commands/export.js.map +1 -1
  662. package/dist/commands/fork.d.ts.map +1 -1
  663. package/dist/commands/fork.js +3 -1
  664. package/dist/commands/fork.js.map +1 -1
  665. package/dist/commands/gateway.d.ts +39 -0
  666. package/dist/commands/gateway.d.ts.map +1 -1
  667. package/dist/commands/gateway.js +310 -3
  668. package/dist/commands/gateway.js.map +1 -1
  669. package/dist/commands/health.js +3 -2
  670. package/dist/commands/health.js.map +1 -1
  671. package/dist/commands/host.d.ts +1 -1
  672. package/dist/commands/host.d.ts.map +1 -1
  673. package/dist/commands/host.js +2 -2
  674. package/dist/commands/host.js.map +1 -1
  675. package/dist/commands/launch.d.ts.map +1 -1
  676. package/dist/commands/launch.js +9 -2
  677. package/dist/commands/launch.js.map +1 -1
  678. package/dist/commands/plugin.d.ts.map +1 -1
  679. package/dist/commands/plugin.js +2 -1
  680. package/dist/commands/plugin.js.map +1 -1
  681. package/dist/commands/provider.d.ts.map +1 -1
  682. package/dist/commands/provider.js +0 -73
  683. package/dist/commands/provider.js.map +1 -1
  684. package/dist/commands/ps.d.ts +4 -0
  685. package/dist/commands/ps.d.ts.map +1 -1
  686. package/dist/commands/ps.js +95 -5
  687. package/dist/commands/ps.js.map +1 -1
  688. package/dist/commands/queue.d.ts +4 -0
  689. package/dist/commands/queue.d.ts.map +1 -1
  690. package/dist/commands/queue.js +78 -3
  691. package/dist/commands/queue.js.map +1 -1
  692. package/dist/commands/reconcile-session.d.ts.map +1 -1
  693. package/dist/commands/reconcile-session.js +25 -4
  694. package/dist/commands/reconcile-session.js.map +1 -1
  695. package/dist/commands/release.d.ts.map +1 -1
  696. package/dist/commands/release.js +16 -2
  697. package/dist/commands/release.js.map +1 -1
  698. package/dist/commands/restore-check.d.ts.map +1 -1
  699. package/dist/commands/restore-check.js +2 -1
  700. package/dist/commands/restore-check.js.map +1 -1
  701. package/dist/commands/restore-packet.d.ts.map +1 -1
  702. package/dist/commands/restore-packet.js +2 -1
  703. package/dist/commands/restore-packet.js.map +1 -1
  704. package/dist/commands/restore.d.ts.map +1 -1
  705. package/dist/commands/restore.js +23 -6
  706. package/dist/commands/restore.js.map +1 -1
  707. package/dist/commands/scope.d.ts.map +1 -1
  708. package/dist/commands/scope.js +5 -2
  709. package/dist/commands/scope.js.map +1 -1
  710. package/dist/commands/seat.js +0 -4
  711. package/dist/commands/seat.js.map +1 -1
  712. package/dist/commands/send.d.ts.map +1 -1
  713. package/dist/commands/send.js +27 -3
  714. package/dist/commands/send.js.map +1 -1
  715. package/dist/commands/setup.d.ts +3 -0
  716. package/dist/commands/setup.d.ts.map +1 -1
  717. package/dist/commands/setup.js +29 -9
  718. package/dist/commands/setup.js.map +1 -1
  719. package/dist/commands/shrink.d.ts.map +1 -1
  720. package/dist/commands/shrink.js +16 -2
  721. package/dist/commands/shrink.js.map +1 -1
  722. package/dist/commands/slack.d.ts.map +1 -1
  723. package/dist/commands/slack.js +11 -24
  724. package/dist/commands/slack.js.map +1 -1
  725. package/dist/commands/snapshot.d.ts.map +1 -1
  726. package/dist/commands/snapshot.js +36 -10
  727. package/dist/commands/snapshot.js.map +1 -1
  728. package/dist/commands/specs.d.ts.map +1 -1
  729. package/dist/commands/specs.js +11 -5
  730. package/dist/commands/specs.js.map +1 -1
  731. package/dist/commands/start.d.ts.map +1 -1
  732. package/dist/commands/start.js +36 -10
  733. package/dist/commands/start.js.map +1 -1
  734. package/dist/commands/status.d.ts.map +1 -1
  735. package/dist/commands/status.js +4 -1
  736. package/dist/commands/status.js.map +1 -1
  737. package/dist/commands/transcript.d.ts.map +1 -1
  738. package/dist/commands/transcript.js +12 -7
  739. package/dist/commands/transcript.js.map +1 -1
  740. package/dist/commands/ui.d.ts.map +1 -1
  741. package/dist/commands/ui.js +8 -1
  742. package/dist/commands/ui.js.map +1 -1
  743. package/dist/commands/unarchive.d.ts.map +1 -1
  744. package/dist/commands/unarchive.js +16 -2
  745. package/dist/commands/unarchive.js.map +1 -1
  746. package/dist/commands/up.d.ts.map +1 -1
  747. package/dist/commands/up.js +33 -7
  748. package/dist/commands/up.js.map +1 -1
  749. package/dist/commands/walk.d.ts.map +1 -1
  750. package/dist/commands/walk.js +2 -1
  751. package/dist/commands/walk.js.map +1 -1
  752. package/dist/commands/whoami.d.ts.map +1 -1
  753. package/dist/commands/whoami.js +3 -0
  754. package/dist/commands/whoami.js.map +1 -1
  755. package/dist/config-store.d.ts +5 -2
  756. package/dist/config-store.d.ts.map +1 -1
  757. package/dist/config-store.js +39 -7
  758. package/dist/config-store.js.map +1 -1
  759. package/dist/daemon-lifecycle.d.ts +9 -4
  760. package/dist/daemon-lifecycle.d.ts.map +1 -1
  761. package/dist/daemon-lifecycle.js +38 -12
  762. package/dist/daemon-lifecycle.js.map +1 -1
  763. package/dist/daemon-reachability.d.ts +13 -0
  764. package/dist/daemon-reachability.d.ts.map +1 -1
  765. package/dist/daemon-reachability.js +28 -0
  766. package/dist/daemon-reachability.js.map +1 -1
  767. package/dist/fetch-with-timeout.d.ts.map +1 -1
  768. package/dist/fetch-with-timeout.js +19 -16
  769. package/dist/fetch-with-timeout.js.map +1 -1
  770. package/dist/front-door.d.ts.map +1 -1
  771. package/dist/front-door.js +3 -1
  772. package/dist/front-door.js.map +1 -1
  773. package/dist/host-bindings.d.ts +6 -0
  774. package/dist/host-bindings.d.ts.map +1 -1
  775. package/dist/host-bindings.js +7 -4
  776. package/dist/host-bindings.js.map +1 -1
  777. package/dist/lib/bundle-check.d.ts.map +1 -1
  778. package/dist/lib/bundle-check.js +13 -5
  779. package/dist/lib/bundle-check.js.map +1 -1
  780. package/dist/local-daemon-owner.d.ts +28 -0
  781. package/dist/local-daemon-owner.d.ts.map +1 -0
  782. package/dist/local-daemon-owner.js +98 -0
  783. package/dist/local-daemon-owner.js.map +1 -0
  784. package/dist/mcp-server.d.ts.map +1 -1
  785. package/dist/mcp-server.js +57 -14
  786. package/dist/mcp-server.js.map +1 -1
  787. package/dist/rig-handle.d.ts +18 -1
  788. package/dist/rig-handle.d.ts.map +1 -1
  789. package/dist/rig-handle.js +19 -2
  790. package/dist/rig-handle.js.map +1 -1
  791. package/package.json +1 -1
  792. package/tui/dist/config/config-model.js +1 -1
  793. package/tui/dist/config/config-model.js.map +1 -1
  794. package/tui/dist/connections/connections-model.d.ts +0 -5
  795. package/tui/dist/connections/connections-model.d.ts.map +1 -1
  796. package/tui/dist/connections/connections-model.js +1 -1
  797. package/tui/dist/connections/connections-model.js.map +1 -1
  798. package/tui/dist/daemon-client.d.ts +2 -0
  799. package/tui/dist/daemon-client.d.ts.map +1 -1
  800. package/tui/dist/daemon-client.js +23 -0
  801. package/tui/dist/daemon-client.js.map +1 -1
  802. package/tui/dist/hydrate.d.ts.map +1 -1
  803. package/tui/dist/hydrate.js +13 -1
  804. package/tui/dist/hydrate.js.map +1 -1
  805. package/tui/dist/live.d.ts +10 -1
  806. package/tui/dist/live.d.ts.map +1 -1
  807. package/tui/dist/live.js +56 -7
  808. package/tui/dist/live.js.map +1 -1
  809. package/tui/dist/main.js +35 -2
  810. package/tui/dist/main.js.map +1 -1
  811. package/tui/dist/render.d.ts.map +1 -1
  812. package/tui/dist/render.js +111 -7
  813. package/tui/dist/render.js.map +1 -1
  814. package/tui/dist/types.d.ts +53 -0
  815. package/tui/dist/types.d.ts.map +1 -1
  816. package/tui/dist/version-skew.d.ts +24 -0
  817. package/tui/dist/version-skew.d.ts.map +1 -0
  818. package/tui/dist/version-skew.js +37 -0
  819. package/tui/dist/version-skew.js.map +1 -0
  820. package/daemon/dist/domain/provider/subscription-moves.d.ts +0 -77
  821. package/daemon/dist/domain/provider/subscription-moves.d.ts.map +0 -1
  822. package/daemon/dist/domain/provider/subscription-moves.js +0 -140
  823. package/daemon/dist/domain/provider/subscription-moves.js.map +0 -1
@@ -1,20 +1,66 @@
1
- # Getting started: meet the kernel, then make one useful change
2
-
3
- Install OpenRig, use a working provider login, and meet the kernel operator with
4
- the advisor and TUI beside it. No starter team is needed to reach that view.
5
- Tell the operator what you want to do, then choose a project team for a bounded
6
- change you can exercise. Reuse the accounts and terminal tools you already have.
7
-
8
- After installation and sign-in, your agent opens the **OpenRig TUI and operator** for you. The path is `rig daemon start` (if stopped),
9
- then `rig terminal open saved:kernel --window`. The second command opens the
10
- desktop window itself. An agent can run it from its shell on the daemon's
11
- desktop; it does not need to type into your current terminal. See
12
- [Open the kernel conversations](#open-the-kernel-conversations).
13
- `rig tui` is the team dashboard; installation ends when you are talking to the
14
- operator in the OpenRig view.
1
+ # OpenRig setup reference
2
+
3
+ This is the full reference for installing and running OpenRig, written for the agent doing the setup and for anyone
4
+ who wants the detail. The short version for people is [Getting started](quickstart.md).
5
+
6
+ ## For the agent doing the setup
7
+
8
+ The `rigs` skill is the procedure: follow it in order. This page is what it looks things up in.
9
+
10
+ - **Done** means the person is talking to the operator in a visible OpenRig view. A healthy daemon, a started kernel
11
+ or an opened window isn't done on its own. If they'd rather talk later, the handoff is still pending: say so, and
12
+ leave them the exact command.
13
+ - **Read readiness; don't assume it:**
14
+ - **The kernel:** the `Kernel:` line in `rig status`, and `rig ps --nodes --rig kernel`.
15
+ - **A team:** `rig ps --nodes --rig <team>`.
16
+ - A missing or unknown signal isn't ready.
17
+ - `rig up` exiting 1 with `Status: partial` and `Startup attention` means a seat is waiting at a prompt. Answer it,
18
+ or ask the person to, then run the `rig seat continue <seat>` it names.
19
+ - **Prerequisites:** check the person's existing toolchain first (mise, nvm, Homebrew or the nodejs.org installer)
20
+ and the PATH. Use what's there. Don't change a shared Homebrew's ownership, and don't make a local workaround the
21
+ standard route. If Node.js is installed after your session started, check that new shells and the session's hooks
22
+ can find it. In one published-0.6.11 Mac run, OpenRig's Claude hooks reported `node: command not found` until the
23
+ PATH was fixed.
24
+ - **Ask once, then reuse the answer:** the provider (Claude Code, Codex or both), Herdr, Ghostty on macOS,
25
+ remembered command allowances, and the team.
26
+ - **Before changing their machine:** say what applies to their route, then wait for a yes. See
27
+ [what OpenRig changes on your machine](../../README.md#what-openrig-changes-on-your-machine).
28
+ - **When something stops:**
29
+ - [Incomplete setup and restart](#incomplete-setup-and-restart) maps what you see to the next action.
30
+ - [What can interrupt installation and the OpenRig view](#what-can-interrupt-installation-and-the-openrig-view)
31
+ covers the view.
32
+ - [Headless or SSH handoff](#headless-or-ssh-handoff) covers no-display cases.
33
+ - A timed-out command may still have taken effect. Read `rig ps` or `rig seat status <seat>` before you run it
34
+ again.
35
+ - **Don't:**
36
+ - relaunch a team to reopen its view;
37
+ - start another seat to clear a prompt;
38
+ - build the person's project yourself. Give the goal to the operator.
15
39
 
16
40
  ## Before you start
17
41
 
42
+ > **What OpenRig changes on your machine**
43
+ > - **Install:** `@openrig/cli` goes in globally with npm.
44
+ > - **Setup:** `rig setup` adds an OpenRig block to `~/.tmux.conf`. It can install tmux (with Homebrew on macOS), and
45
+ > Herdr unless you pass `--no-herdr`. Plain `rig setup`, which is what the one-command install runs, checks both
46
+ > Claude Code and Codex and may install a missing one; `rig setup --providers claude` (or `codex`) limits it to
47
+ > yours.
48
+ > - **Starting OpenRig, for the coding agent you use** (paths are the usual defaults):
49
+ > - Codex: hooks and trust in `~/.codex/config.toml`.
50
+ > - Claude Code: workspace trust in `~/.claude.json`, and activity hooks in the project's
51
+ > `.claude/settings.local.json`, plus a status line unless you already have your own.
52
+ > - Discovery skills go in `~/.claude/skills` and `~/.agents/skills`.
53
+ > - **Starting a team in your project:** adds managed guidance to `AGENTS.md` or `CLAUDE.md`, plus the team's skills
54
+ > and plugins.
55
+ > - **Permissions:** by default, OpenRig's own kernel gets broader permissions than a project team gets by default.
56
+ > On Codex that's full access with no approval prompts (`-s danger-full-access -a never`). On Claude Code, its file
57
+ > tools, web fetches and operational commands, including reads under your home folder, run without asking. A
58
+ > permission policy, per-agent choice or Codex profile changes that. What your team can do depends on the team you
59
+ > choose and your settings; `workshop`, for example, ships with broad access.
60
+ > - **Backups:** OpenRig doesn't guarantee it can preserve or roll back these files, so back them up first.
61
+ >
62
+ > [Everything OpenRig writes, and why →](https://github.com/mvschwarz/openrig#what-openrig-changes-on-your-machine)
63
+
18
64
  You need Node.js 22 or 24 and tmux, on macOS or Linux, and one working Claude
19
65
  Code or Codex account: one is enough, since the kernel operator adapts the
20
66
  shipped `starter` team to whichever you have. On Linux, the distribution's own
@@ -26,12 +72,16 @@ you aren't an administrator, or where Homebrew belongs to another account (its
26
72
  `brew install` is refused), install Node.js in your own home folder with
27
73
  [nvm](https://github.com/nvm-sh/nvm): run `touch ~/.zshrc` (a new Mac account
28
74
  has none, and nvm's installer only adds itself to a profile file that already
29
- exists), then the install command on nvm's page, open a new terminal, and run
30
- `nvm install 22`. That needs no administrator password, and `npm install -g`
31
- then installs into your nvm folder. Native
32
- Windows isn't supported. On Windows, use WSL2: it's the Windows route OpenRig
33
- supports, though OpenRig's automated tests don't run on it yet. One user's
34
- [working setup](#wsl2-a-reported-working-setup) is below. Node 20 and
75
+ exists), then nvm's install command, for nvm v0.40.8
76
+ `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash`
77
+ ([nvm's page](https://github.com/nvm-sh/nvm#install--update-script) has the
78
+ newest), open a new terminal, and run `nvm install 22`. nvm itself needs no
79
+ administrator password, and `npm install -g` then installs into your nvm folder.
80
+ If nvm's installer says you need Apple's command line tools, run
81
+ `xcode-select --install`, then its install command again. Native Windows isn't
82
+ supported. On Windows, use WSL2: it's the Windows route
83
+ OpenRig supports, though OpenRig's automated tests don't run on it yet. One
84
+ user's [working setup](#wsl2-a-reported-working-setup) is below. Node 20 and
35
85
  odd-numbered releases (23, 25 and so on) are not supported; Node 26 and later
36
86
  even-numbered releases are untested.
37
87
 
@@ -131,20 +181,19 @@ You can also read [`skills/rigs/SKILL.md`](../../skills/rigs/SKILL.md) directly.
131
181
  script will do and changes nothing:
132
182
 
133
183
  ```sh
134
- curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.13/scripts/install.sh | sh -s -- --dry-run
184
+ curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.7.0/scripts/install.sh | sh -s -- --dry-run
135
185
  ```
136
186
 
137
187
  The same command without `--dry-run`,
138
- `curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.13/scripts/install.sh | sh`, installs the
188
+ `curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.7.0/scripts/install.sh | sh`, installs the
139
189
  latest published `@openrig/cli` with `npm install -g`,
140
190
  runs the Node.js and SQLite check, then `rig setup --dry-run` and `rig setup`. `rig setup` checks both Claude Code and
141
- Codex and may install a missing one, as described below. A failed step among the first three prints
142
- `FAILED [n/4] <command or check> (exit <code>)`. When `rig setup` (step 4) doesn't finish ready, for example because a
143
- provider isn't signed in yet, the script ends with `INSTALLED, SETUP NOT COMPLETE (exit <code>)`: the CLI is
144
- installed, and `rig setup` lists what's left under "Some steps need attention". If the only items left are provider
145
- sign-ins, sign in to each selected provider as below, then continue at
146
- [Start the kernel](#start-the-kernel-and-check-its-state); run `rig setup` again rather than reinstalling the CLI. To
147
- install only what the selected providers need, go step by step instead:
191
+ Codex and may install a missing one, as described below. A failed step prints
192
+ `FAILED [n/4] <command or check> (exit <code>)`. Where a provider isn't signed in yet, step 4 ends that way and
193
+ `rig setup` lists each sign-in under "Some steps need attention". If the only remaining failures are provider
194
+ sign-ins, the install steps finished: sign in to each selected provider as below, then continue at
195
+ [Start the kernel](#start-the-kernel-and-check-its-state). To install only what the selected providers need, go step
196
+ by step instead:
148
197
 
149
198
  ### Choose your providers
150
199
 
@@ -174,6 +223,26 @@ writes an OpenRig-managed block (mouse on, a longer history) into `~/.tmux.conf`
174
223
  It is optional for this selected-provider path, not a requirement to fix an unused
175
224
  provider.
176
225
 
226
+ The block keeps `terminal.history_limit` rows of scrollback per pane (default
227
+ 10000). To keep more, run `rig config set terminal.history_limit 50000`, then
228
+ `rig setup` again. A running tmux server keeps its old limit until it restarts
229
+ or you run `tmux source-file ~/.tmux.conf`; before tmux 3.7 that changes new
230
+ panes only.
231
+
232
+ New managed agents and handover successors on macOS/Linux start from the daemon's
233
+ selected launch environment and declared seat values, rather than stored tmux globals.
234
+ Values named by tmux's `update-environment` option, including its default SSH-agent
235
+ and display variables, come from the daemon's environment.
236
+ Normal shell startup and configured tmux shell commands still run. If your custom setup
237
+ intentionally supplies values through tmux's global environment, opt in with
238
+ `rig config set terminal.inherit_tmux_environment true`. Setup points out this option
239
+ when it detects custom tmux configuration; it never enables it automatically. The setting
240
+ applies to future launches and successors, not running agents or your personal tmux server.
241
+ If the scoped environment cannot be prepared, launch keeps its previous environment and
242
+ reports a warning in fresh launch results and the daemon log. For handovers, check
243
+ that log for this warning. This is not a promise that shell startup cannot add or override values.
244
+
245
+
177
246
  ## Start the kernel and check its state
178
247
 
179
248
  With a working selected login, start the daemon if it is stopped, then read its
@@ -205,9 +274,51 @@ A missing or unknown readiness signal is not proof of readiness. Follow
205
274
  startup or missing-seat problems.
206
275
 
207
276
  `rig setup` itself does not start the daemon. Preserve a daemon and kernel that
208
- already exist: ordinary daemon startup skips a managed kernel, and
209
- `OPENRIG_NO_KERNEL=1` skips automatic kernel startup. If neither runtime is
210
- authenticated, kernel boot reports `auth_blocked`. Do not restart or recreate an
277
+ already exist: daemon startup does not boot a second kernel when one is managed,
278
+ and `OPENRIG_NO_KERNEL=1` (`--no-kernel`) skips automatic kernel startup,
279
+ including the restore below. If neither runtime is authenticated, kernel boot
280
+ reports `auth_blocked`.
281
+
282
+ Daemon startup restores one existing kernel by itself: a managed kernel whose
283
+ seats are all `detached` and still bound to their newest session, which is what
284
+ startup reconcile leaves when every kernel terminal is gone, for example after a
285
+ reboot. It does not detect a reboot as such. It uses the same restore as
286
+ `rig up kernel --existing`, and `rig status` reports it as `Kernel: booting`
287
+ until the seats are ready. A kernel stopped with `rig down kernel`, including
288
+ one whose seats were already detached, stays down on later starts. So do a kernel
289
+ with only some seats stopped and seats you unclaimed. Start one again with
290
+ `rig up kernel --existing`.
291
+ When the tmux server is gone, an explicit `rig down` of any rig can start an
292
+ empty server and probe again. It records the stop and clears eligible bindings
293
+ only after confirming the sessions are absent. This can leave an empty tmux
294
+ server running; it never launches an agent or provider session. Unreadable or
295
+ permission results and changed occupants leave the stop bookkeeping unchanged.
296
+
297
+ While that automatic restore runs, `rig start` continues to your other rigs and
298
+ says the kernel is still restoring (`kernelRestore.state: "restoring"` with
299
+ `--json`). Its exit status 0 then does not mean the kernel is ready; check
300
+ `rig status`. When the restore has returned without a ready kernel, `rig start`
301
+ still goes on to your other rigs but exits 1 (`kernelRestore.state: "failed"`),
302
+ so `rig start && next` does not run `next`. A `rig down kernel` made during the
303
+ restore waits for it to return and then stops the kernel, which stays down on
304
+ later starts. A `rig up kernel --existing` with no fresh seats and no change to
305
+ the saved non-interruptive choice, made during the restore, or after it restored
306
+ every seat while those seats still run the sessions it started, reports that
307
+ restore's outcome instead of starting another. Explicitly repeating the saved
308
+ `--non-interruptive` or `--no-non-interruptive` choice also joins that restore.
309
+
310
+ An explicit `rig up kernel --existing --fresh <seat...>` waits for startup's
311
+ restore to finish, then replaces only the named seats that still hold the exact
312
+ sessions startup launched. Other seats keep running. An operator's conversation
313
+ correction also takes effect for that seat on the next explicit `up` or
314
+ `restore`, using the corrected target; editing the token alone restarts nothing.
315
+ Each replacement takes new seat leases, rechecks the managed occupant and terminal,
316
+ and reports its own per-seat outcome. If the occupant changed, it is left alone.
317
+ A different `--non-interruptive` or `--no-non-interruptive` choice after startup
318
+ launched the seats is refused: the running launch choice stays unchanged. Stop
319
+ the rig, then rerun with the desired choice.
320
+
321
+ Do not restart or recreate an
211
322
  existing kernel merely to open its view. The startup TUI (`rig`) offers its own
212
323
  kernel setup and individual-seat recovery; it does not automatically boot agents
213
324
  when it starts the daemon.
@@ -644,7 +755,7 @@ the lifecycle API without booting a new kernel, then stop the remaining rigs.
644
755
  | Shared terminal is absent | Inspect the existing kernel binding and recovery state; use standalone `rig tui` while resolving it. |
645
756
  | Viewing terminal was closed | Open the conversations again with `rig terminal open saved:kernel --window`; `rig tui --shared` is only the dashboard fallback if that window cannot open. Do not relaunch the team. |
646
757
  | Daemon restarted but tmux survived | Re-read `rig status` and the existing queue; a daemon restart is not a fresh project. |
647
- | Host reboot lost tmux sessions | Open `rig`, start the daemon if needed (press **S** if it opens on the work views), and select the existing rig and seats. Resume is the default; a fresh conversation needs a separate decision. |
758
+ | Host reboot lost tmux sessions | Starting the daemon restores the kernel by itself when all of its seats were lost; check `rig status`, and if it reports the restore failed, run `rig up kernel --existing`. For other rigs, open `rig`, start the daemon if needed (press **S** if it opens on the work views), and select the existing rig and seats. Resume is the default; a fresh conversation needs a separate decision. |
648
759
  | Launch reports no usable snapshot | Inspect the existing rig and retained project files, then follow the same-seat recovery below. |
649
760
  | Work is waiting on a prompt or decision | Read the row, transition and named prompt; preserve the obligation until the missing decision arrives. |
650
761
 
@@ -675,8 +786,9 @@ This recovery is for the case the reporter hit: the kernel's seats failed and no
675
786
  IDs, for example `advisor.lead operator.agent operator.human queue.worker` when all four failed. `--fresh` starts a
676
787
  new conversation for each seat you name. Seats you don't name follow their normal recovery policy and may remain
677
788
  awaiting a decision if their old conversation can't be resumed. A later `rig daemon start` doesn't retry the failed
678
- seats by itself: once a kernel exists, startup skips the built-in kernel boot, and `rig status` then reads
679
- `Kernel: skipped` whatever its seats' state, so check `rig ps --nodes --rig kernel --full`.
789
+ seats by itself: once a kernel exists, startup skips the built-in kernel boot and restores only a kernel whose seats
790
+ were all lost, not seats that failed. `rig status` then reads `Kernel: skipped` unless some of its seats are running
791
+ and ready, so check `rig ps --nodes --rig kernel --full`.
680
792
 
681
793
  If a snapshot is unavailable, the startup view checks the selected seat's
682
794
  retained startup source and authoritative occupant relation. It reports a
@@ -995,6 +1107,37 @@ same-seat stop/resume path after checking its retained policy; do not erase the
995
1107
  rig or start a duplicate to reset permissions. A resume can reapply the stored
996
1108
  launch mode, so verify the native mode again before continuing work.
997
1109
 
1110
+ ## Optional Mac local-user check
1111
+
1112
+ On a Mac shared by multiple OS accounts, `transport.local_user_guard` can reduce
1113
+ accidental CLI routing to another account's local daemon. It is **off by default**.
1114
+ Enable it with `rig config set transport.local_user_guard true`, or set
1115
+ `OPENRIG_TRANSPORT_LOCAL_USER_GUARD=true` in the CLI's environment. Set it to
1116
+ `false` to turn it off; no daemon restart is needed for the CLI check.
1117
+
1118
+ When enabled, automatic local CLI data requests compare the daemon's reported
1119
+ `/healthz` PID and effective UID (`euid`) with two `ps` UID/start observations and
1120
+ a second health response, with at most one second of observation per check.
1121
+ Only stable agreement on a foreign effective UID stops the request. This does
1122
+ not require visibility into another user's socket descriptors. It does not
1123
+ stop the daemon, choose another port or retry. Diagnostic health/status checks
1124
+ remain available. Older daemons without `euid` remain unknown and are permitted.
1125
+ `sudo rig …` uses the caller's **effective** UID, so an enabled check against a
1126
+ user-owned daemon refuses when its reported/observed UID differs from root.
1127
+
1128
+ Explicit `OPENRIG_URL`/`RIGGED_URL` targets and registered remote hosts retain
1129
+ their selected routing, including tunnels. An internally resolved local URL is
1130
+ still checked. Default UI and TUI openings are checked before launch; this does
1131
+ not police later browser or TUI connections.
1132
+
1133
+ Missing, disagreeing, restricted or timed-out evidence **continues today's
1134
+ behavior**. This is a partial accidental-routing check, not authenticated user
1135
+ isolation: it trusts the daemon's PID/UID report and corroborates that process;
1136
+ it does not establish the socket's owner. Identity can change between observation
1137
+ and connection, and equal UIDs do not distinguish separate instances belonging
1138
+ to one account. The check
1139
+ does not add authentication to the daemon or protect direct HTTP clients.
1140
+
998
1141
  ## Custom settings and precedence
999
1142
 
1000
1143
  - **OpenRig:** member `permission_policy` overrides rig `permission_policy`.
@@ -0,0 +1,200 @@
1
+ # Getting started
2
+
3
+ OpenRig runs a team of coding agents (Claude Code, Codex and others) on your project, each in its own terminal. You
4
+ talk to one agent, and it hands work to the others. The team keeps its tasks and messages between sessions.
5
+
6
+ Most people let their coding agent set it up. This page explains what happens either way, so nothing is a black
7
+ box, and shows how to do each step by hand if you'd rather.
8
+
9
+ ## The quick way: let your coding agent do it
10
+
11
+ In your project folder, add OpenRig's `rigs` skill to the agent you use:
12
+
13
+ ```sh
14
+ # Claude Code
15
+ npx skills add https://github.com/mvschwarz/openrig/tree/<release-tag>/skills/rigs --skill rigs --agent claude-code
16
+ # Codex
17
+ npx skills add https://github.com/mvschwarz/openrig/tree/<release-tag>/skills/rigs --skill rigs --agent codex
18
+ ```
19
+
20
+ For a new install, use the latest release's tag, for example `v0.7.0`. If OpenRig is already installed, use the tag
21
+ that matches `rig --version`, or upgrade first. If the command fails with `npx: command not found`, Node.js isn't
22
+ installed or isn't on your PATH yet (see [What you need](#what-you-need)). Then type `/rigs` in Claude Code, or `$rigs` in Codex, and say what
23
+ you want built.
24
+
25
+ The skill has your agent work through the steps below in order. It says what it will run and change before it runs
26
+ it, and it asks before installing anything on your system. It finishes when you're talking to the operator.
27
+
28
+ ## How the pieces fit
29
+
30
+ - **`rig`** is the command you and your agents use. It comes from the npm package `@openrig/cli`.
31
+ - **The daemon** is a small background service on your machine. It keeps tasks, messages and state in a local
32
+ database. `rig daemon start` starts it.
33
+ - **tmux** runs each agent in its own terminal session. Agents keep running when you close a window, and one agent
34
+ can type into another's terminal.
35
+ - **The kernel** is OpenRig's own small team, which starts with the daemon. You talk to its **operator**, which
36
+ starts and runs teams for you. Its **advisor** helps you think through what you want.
37
+ - **Your team** (a *rig*) is the set of agents that work on your project, such as `starter`.
38
+ - **The OpenRig view** is a terminal window with the operator and, beside it or on another page, a dashboard of your
39
+ agents.
40
+
41
+ ## What you need
42
+
43
+ - macOS or Linux. On Windows, use WSL2 ([one person's working setup](getting-started.md#wsl2-a-reported-working-setup)).
44
+ - Node.js 22 or 24 (on Apple silicon, Node.js 22) and tmux.
45
+ - Claude Code or Codex, signed in. One is enough to start.
46
+
47
+ If `node --version` does not show a supported version, first check your existing Node installation and PATH.
48
+ Ask your coding agent to help use the toolchain already on your machine. On a Mac, a shared Homebrew installation
49
+ may belong to another user; do not change its ownership to complete this setup. After correcting PATH or installing
50
+ Node, open a new terminal and check `node --version` and `npx --version` before continuing.
51
+
52
+ On a Mac where you aren't an administrator, or where another account owns Homebrew, install Node.js in your own home
53
+ folder with [nvm](https://github.com/nvm-sh/nvm); nvm itself needs no administrator password. A new Mac account has no
54
+ `~/.zshrc`, and nvm's installer only adds itself to a profile file that already exists, so create one first:
55
+
56
+ ```sh
57
+ touch ~/.zshrc
58
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash
59
+ ```
60
+
61
+ Then open a new terminal and run `nvm install 22`. If nvm's installer says you need Apple's command line tools, run
62
+ `xcode-select --install`, then its install command again. That's nvm v0.40.8's install command; [nvm's
63
+ page](https://github.com/nvm-sh/nvm#install--update-script) has the newest.
64
+
65
+ ## What happens, step by step
66
+
67
+ Each step shows the command, so you can run it yourself.
68
+
69
+ ### 1. Install the `rig` command
70
+
71
+ ```sh
72
+ npm install -g @openrig/cli
73
+ rig --version
74
+ ```
75
+
76
+ This installs the CLI globally under your npm prefix. `rig --version` prints the version and a commit, such as
77
+ `0.6.12 (9e5382dd)`. With npm 11 or later, an `npm warn install-scripts` line is expected: it means only the
78
+ Node.js and SQLite check was skipped.
79
+
80
+ ### 2. Set up the tools around it
81
+
82
+ ```sh
83
+ rig setup --providers claude
84
+ ```
85
+
86
+ Use `codex` or `both` in place of `claude` to match the coding agents you use. Add `--dry-run` first to see the plan without changing anything. Setup does four things:
87
+ - it checks Node.js, tmux and your sign-in;
88
+ - it installs a missing tmux (with Homebrew on macOS, if you have it) or the coding agent you chose;
89
+ - it installs Herdr, a terminal workspace app the OpenRig view can use, unless you add `--no-herdr`;
90
+ - it adds an OpenRig block to `~/.tmux.conf` (mouse support and longer scrollback).
91
+
92
+ It doesn't start anything. It ends with a summary of what's done and what still needs you. A missing sign-in shows
93
+ there: run `claude auth login` or `codex login`, then carry on.
94
+
95
+ ### 3. Start OpenRig
96
+
97
+ ```sh
98
+ rig daemon start
99
+ rig status
100
+ rig ps --nodes --rig kernel
101
+ ```
102
+
103
+ The daemon starts and boots the kernel with the coding agents you're signed in to, or both if you're signed in to both.
104
+
105
+ **What starting OpenRig changes, for the coding agents you use** (paths are the usual defaults):
106
+ - **For Codex:** hooks and trust in `~/.codex/config.toml`, when OpenRig or a Codex agent starts.
107
+ - **For Claude Code:** workspace trust in `~/.claude.json`, and activity hooks in the project's
108
+ `.claude/settings.local.json`, plus a status line unless you already have your own.
109
+ - **For both:** small discovery skills in `~/.claude/skills` and `~/.agents/skills`.
110
+ - **Kernel access:** by default the kernel gets broader permissions than a project team gets by default. On Codex
111
+ that's full access with no approval prompts. On Claude Code, its file tools, web fetches and operational commands,
112
+ including reads under your home folder, run without asking. A permission policy, per-agent choice or Codex profile
113
+ changes that.
114
+
115
+ OpenRig doesn't guarantee it can preserve or roll back these files, so back them up first. [Everything OpenRig writes, and why](../../README.md#what-openrig-changes-on-your-machine).
116
+
117
+ Started isn't the same as ready. `rig status` shows a `Kernel:` line, and `rig ps --nodes --rig kernel` shows each
118
+ kernel agent's state. They can take a moment after the daemon is up.
119
+
120
+ ### 4. Open the OpenRig view
121
+
122
+ ```sh
123
+ rig terminal open saved:kernel --window
124
+ ```
125
+
126
+ **What you'll see:**
127
+ - **Where it opens:** a new terminal window or tab. If your agent is already running inside Herdr, it opens a new
128
+ Herdr space instead. It uses Herdr when installed, plain tmux otherwise.
129
+ - **Layout:** in a narrow window, or when the width can't be measured, the operator fills the first page. From 120
130
+ columns, the dashboard and the operator share it. The advisor has its own tab.
131
+ - **On a Mac:** you may be asked to let your terminal app be controlled. Allowing it is fine.
132
+ - **Over SSH or with no display:** the window can't open. The command says why and, where it can, prints a command
133
+ to run in a new terminal. Otherwise your agent works out the exact command to join the operator.
134
+
135
+ You're installed when you're talking to the operator.
136
+
137
+ ### 5. Start your first team
138
+
139
+ Tell the operator what you want built, and in which folder. It recommends one of three teams:
140
+ - `starter`: a builder and a reviewer, for one bounded change;
141
+ - `workshop`: a lead, a builder, QA and a reviewer, for ongoing work in one repository;
142
+ - `factory`: seven agents, for sustained product work.
143
+
144
+ Before it starts one, it tells you what starting a team in your folder changes: managed guidance in `AGENTS.md` or
145
+ `CLAUDE.md`, plus the team's skills. Then it waits for your yes. As shipped, `starter` uses both Claude Code and
146
+ Codex. With only one of them, ask the operator to adapt it.
147
+
148
+ By hand, from your repository (the first command shows what it would start, and starts nothing):
149
+
150
+ ```sh
151
+ rig up starter --cwd . --plan
152
+ rig up starter --cwd .
153
+ rig ps --nodes --rig starter
154
+ ```
155
+
156
+ If an agent stops at a sign-in, trust or permission prompt, `rig up` reports `Status: partial` and names the prompt.
157
+ Answer it in that agent's terminal, then run the `rig seat continue <seat>` command it prints. The team is ready
158
+ for work once its agents show as ready in `rig ps --nodes --rig starter`.
159
+
160
+ ### 6. Give the team work, and stop it
161
+
162
+ ```sh
163
+ rig send dev-build@starter 'Fix <one useful thing>. Ask dev-review to check it, and record the result and how I can try it.'
164
+ rig queue list --destination dev-build@starter
165
+ ```
166
+
167
+ The builder records the work as a task, so you can follow it with `rig queue`. When you're done, `rig down starter`
168
+ stops that team. `rig daemon stop` stops the background service and leaves agent sessions running.
169
+
170
+ ## The one-command install
171
+
172
+ Instead of steps 1 and 2 (the first line shows the plan and changes nothing):
173
+
174
+ ```sh
175
+ curl -fsSL https://openrig.dev/install.sh | sh -s -- --dry-run
176
+ curl -fsSL https://openrig.dev/install.sh | sh
177
+ ```
178
+
179
+ It checks Node.js and npm, installs the latest `@openrig/cli`, then runs `rig setup`. It doesn't know which coding agent
180
+ you use, so it checks and may install both. For just one, use steps 1 and 2. If a sign-in is missing, setup reports
181
+ it as the step to finish: sign in, then continue at step 3.
182
+
183
+ ## What these words mean
184
+
185
+ - **Rig:** a team of agents, started with one command. Your first one is usually `starter`.
186
+ - **Seat:** one agent's role and address in a team, such as `dev-build@starter`.
187
+ - **Harness:** the software around the model that an agent runs in: Claude Code, Codex or Pi.
188
+ - **Kernel:** OpenRig's own small team, which starts with OpenRig. It isn't your project's team.
189
+ - **Operator:** the kernel's agent you talk to first. It recommends a team for your goal and starts it when you say
190
+ yes.
191
+ - **Advisor:** the kernel's agent for thinking through what you want before a team starts. It has its own tab.
192
+ - **OpenRig view:** the terminal view that opens on the operator. In a wide window the dashboard sits beside it;
193
+ otherwise, or when the width can't be measured, the dashboard is on its own page. `saved:kernel` in
194
+ `rig terminal open saved:kernel` is the name of this saved view.
195
+
196
+ ## More
197
+
198
+ - **Every detail of setup:** troubleshooting, permissions, headless and SSH use, and what can stop the view from
199
+ opening. See the [setup reference](getting-started.md).
200
+ - **Stuck?** Run `rig context get help`, or read [Help](help.md).
@@ -36,9 +36,15 @@ own project folder is the same project and still acts as the seat, as before thi
36
36
  launched before this change, a manual run) the hooks do what they always did. The plugin's activity relay stays quiet next to
37
37
  the seat's own `settings.local.json` copy only when that entry is exactly OpenRig's and the script it names is the same
38
38
  script; an entry from an older install doesn't match, so both report until the seat's next launch refreshes it.
39
- Codex has no way to load a plugin from a directory; its hooks come from the daemon's
40
- managed block in `config.toml`, which today carries the activity relay only, so the Codex column above describes
41
- `hooks/codex.json`'s registration and not a hook a Codex seat currently runs.
39
+ OpenRig automatically installs its Codex plugin for seats that select it. On its first installation, the six exact shipped
40
+ hook definitions are trusted before launch, after checking the installed hook files against this daemon's shipped copy.
41
+ Existing plugin disables and hook choices are retained. An existing untrusted installation stays under native review:
42
+ Codex's "continue without trusting" leaves no record, so OpenRig does not assume an absent trust record is permission.
43
+ The file check happens only when trust is granted: a later edit to the cached hook scripts keeps that trust, as with any hook trusted in Codex.
44
+ The Codex
45
+ column above then applies only to a Codex seat whose plugin selection includes openrig-core: every Codex hook command
46
+ exits 0 before running anything unless OpenRig gave that seat `OPENRIG_SEAT_PROJECT_DIR` and an explicit
47
+ `OPENRIG_NODE`.
42
48
 
43
49
  Claude's additional firing signal is **transcript growth** — not turns (one turn
44
50
  can burn 200k tokens across fifty tool calls) and not wall-clock (the failure is
@@ -354,7 +354,7 @@ pods:
354
354
 
355
355
  - A seat gets the rig's `env` with its own `env` laid over it, name by name.
356
356
  - The same environment is applied on first launch, on `rig up <rig-name>` restore, and to the successor of a seat handover.
357
- - `rig up <spec> --env KEY=VALUE` (repeatable) adds or overrides a value for one launch. A one-off value belongs to the terminal that launch creates: it stays in that terminal's environment for as long as the terminal lives, and OpenRig removes it from the tmux session's environment as soon as the terminal has started, so a terminal started later in that session does not get it. A restore, a handover successor or any later launch starts from the spec's `env:` alone, so the value is not saved and does not carry forward. To keep a value, put it in `env:`. One exception to "does not carry forward", for a managed Claude seat (see below): a one-off name that the seat's spec does not declare stays on the session's list of names, `OPENRIG_SEAT_ENV_KEYS` (names only, no values), because the first launch and an in-place restart of the same terminal read that list. So if a later pane in that session gets a value for that name from the tmux server's own environment, its managed Claude launch can forward that value, where a launch without `--env` would leave it out. The first launch's one-off value itself is not passed on to that pane. This comes from reading the code and has not been measured. `--env` does not apply to `rig up <rig-name>` (a restore) or to a topology (several rigs from their own specs); the CLI refuses both. For a topology, put `env:` in each rig's spec.
357
+ - `rig up <spec> --env KEY=VALUE` (repeatable) adds or overrides a value for one launch. A one-off value belongs to the terminal that launch creates: it stays in that terminal's environment for as long as the terminal lives, and OpenRig removes it from the tmux session's environment as soon as the terminal has started, so a terminal started later in that session does not get it. If OpenRig can't take it out, the seat keeps running and the launch warns, naming the variable and the tmux command to put it back or remove it. Until then, a terminal started later in that session would get it. A restore, a handover successor or any later launch starts from the spec's `env:` alone, so the value is not saved and does not carry forward. To keep a value, put it in `env:`. One exception to "does not carry forward", for a managed Claude seat (see below): a one-off name that the seat's spec does not declare stays on the session's list of names, `OPENRIG_SEAT_ENV_KEYS` (names only, no values), because the first launch and an in-place restart of the same terminal read that list. So if a later pane in that session gets a value for that name from the tmux server's own environment, its managed Claude launch can forward that value, where a launch without `--env` would leave it out. The first launch's one-off value itself is not passed on to that pane. This comes from reading the code and has not been measured. `--env` does not apply to `rig up <rig-name>` (a restore) or to a topology (several rigs from their own specs); the CLI refuses both. For a topology, put `env:` in each rig's spec.
358
358
  - Names starting `OPENRIG_` are reserved for OpenRig and refused. Empty values are refused, because the launch omits empty variables.
359
359
  - `rig export` writes the rig and member `env:` back out.
360
360
 
@@ -8,7 +8,7 @@ daemon-owned retry scheduler. Sibling seats keep their own mode.
8
8
  | Mode | Terminal input | When input is unavailable |
9
9
  |---|---|---|
10
10
  | `off` (default) | Existing delivery and prompt checks | Existing send result |
11
- | `draft-aware` | Paste into a recognized empty composer; check ownership again before Enter | Immediately retain the original message with the exact refusal reason and ID |
11
+ | `draft-aware` | Paste into a recognized empty composer; check ownership again before Enter | Hold input and retain this attempt for inspection when bookkeeping is available |
12
12
  | `hold` | No automatic terminal input, even at an empty prompt | Retain for inspection outside the pane |
13
13
 
14
14
  Runtime permissions are separate. Recipient and interactive-prompt checks still
@@ -36,13 +36,22 @@ to finish. The API may return HTTP 202 with `pending: true`; wait for
36
36
  `pending: false` before relying on the requested mode. Status reports desired
37
37
  and effective modes and retains the text `Typing guard: on (hold)` for hold.
38
38
 
39
- A held send immediately returns `outcome: "retained"`, `sent: false`,
40
- `outboxIds` and its exact reason, such as `draft_input_busy` or
41
- `draft_input_unknown`. No automatic retry is scheduled, including when the
42
- caller requested wait-for-idle. The caller can inspect or route the retained work
43
- and decide when to make a new request. Reusing the same delivery ID reads its
44
- original result; it does not replay that message. Changing modes, clearing a
45
- draft, or restarting the daemon also does not flush held records.
39
+ A held send immediately returns `outcome: "retained"`, `sent: false`, its exact
40
+ reason (such as `draft_input_busy`) and the saved attempt's `outboxIds`. No automatic
41
+ retry is scheduled. Each explicit draft-aware request is a new attempt, including
42
+ one with a reused `deliveryId`; the result warns older callers that this field no
43
+ longer deduplicates input. The CLI does not generate a deduplication key.
44
+
45
+ Clearing a draft, changing modes or restarting does not flush saved messages or
46
+ callbacks. To try again, send a current request: it rechecks the recipient and input.
47
+ A caller abort before paste cancels input; after a write may have started, the
48
+ result preserves that uncertainty rather than claiming nothing was sent.
49
+
50
+ Bookkeeping is observational. If its write fails, an otherwise valid input attempt
51
+ still proceeds and the response includes a warning instead of a saved receipt.
52
+ Actual transport success stays success; an unknown write stays unknown. If input
53
+ was held and no record could be saved, the response reports failure with `sent:
54
+ false` and the protection reason, rather than claiming durable custody.
46
55
 
47
56
  Reading never sends. Retirement frees that record's active retention quota while
48
57
  preserving evidence; it does not deliver a message or close queue work.
@@ -72,22 +81,34 @@ A large paste can appear as several labels plus a literal tail. The existing
72
81
  boundary. That complete rendering must be observed after this operation's paste
73
82
  and remain unchanged before Enter. Labels alone do not prove arbitrary content.
74
83
 
75
- | Delivery state | Meaning |
84
+ | Historical delivery state | Meaning |
76
85
  |---|---|
77
- | `sending` | The original IDs have an unresolved write attempt |
78
- | `held` | No input was written; the original message remains retained or has been retired |
86
+ | `sending` | This saved attempt has an unresolved write outcome |
87
+ | `held` | No input was written; this attempt remains retained or has been retired |
79
88
  | `complete` | Transport execution succeeded, including render verification if requested; native consumption is not asserted |
80
- | `indeterminate` | Input may have occurred or requested render verification failed; no automatic replay |
89
+ | `indeterminate` | Input may have occurred or requested render verification failed |
90
+ | `failed` | A definite failure before input, such as caller cancellation |
81
91
 
82
92
  Migration `100_typing_guard_modes` extends the existing guard/audit rows and
83
93
  adds receipt metadata to the original outbox rows; it creates no tables, retry
84
94
  indexes or executable requests. Combined wakes retain each original ID and body.
85
- A held queue wake stays on the existing queue recovery path. Interrupted writes
86
- become indeterminate at startup regardless of which recovery component runs first.
95
+ A held queue wake stays on the existing queue recovery path. Interrupted historical
96
+ writes become indeterminate at startup. That history never suppresses a current
97
+ explicit request and is not consulted to determine its result.
98
+
99
+ At startup, the queue recovery pass retries still-current failed or unconfirmed
100
+ wake notifications. It preserves their original envelopes and warns that delivery
101
+ may repeat. Each notification is attempted once per pass, including coalesced
102
+ wakes; a failed attempt cannot spin in that pass. A no-write failure on a later
103
+ retry does not resolve an earlier unknown delivery. Prior-process claims are
104
+ reconciled before new startup sends can begin. Known deliveries and held or
105
+ retired messages stay untouched. Closed, claimed or reassigned work is not woken,
106
+ and the retry never repeats the queue mutation or a lifecycle action.
87
107
 
88
108
  The existing retention limits apply: 100 records and 8 MiB per seat, with a 1 MiB
89
- message limit. New admissions refuse at capacity; already-committed queue intent
90
- remains durable even if concurrent activation exceeds the limit.
109
+ message limit. Hold mode cannot retain another message at capacity. Draft-aware
110
+ input attempts continue with a bookkeeping warning if a record cannot be saved;
111
+ already-committed queue intent remains durable.
91
112
 
92
113
  ## Rollback and lifecycle
93
114
 
@@ -121,7 +142,25 @@ unchanged; no RigSpec field is required.
121
142
  ## Verification scope
122
143
 
123
144
  Regression tests exercise rollback/re-upgrade, same-value legacy writes, exact
124
- retained outcomes, restart without replay, unchanged IDs/bodies, trailing spaces,
125
- numbered bodies, real-menu refusals and multi-placeholder ownership. Native tests
145
+ retained outcomes, current requests after restart, coalesced queue bodies, trailing
146
+ spaces, numbered bodies, real-menu refusals and multi-placeholder ownership. Native tests
126
147
  use private real tmux panes with scripted editable composers. These verify the
127
148
  transport mechanics; they are not live Claude/Codex provider sessions.
149
+
150
+ ## Watchdog reminders
151
+
152
+ A currently due watchdog reminder makes a new delivery attempt, including after an interrupted attempt or job
153
+ accounting. Historical outbox receipts do not suppress a lone reminder or prevent it from joining a digest. The
154
+ message tells its recipient that delivery may repeat after an unconfirmed attempt. Its job history records the
155
+ current transport result; an unknown write is not proof that nothing arrived.
156
+
157
+ The transport still protects approval/question prompts, human drafts and recipient identity. Scheduler timing,
158
+ current parked-row eligibility and stop checks still apply. This changes message retries, not the idempotence of
159
+ structured continuity actions such as creating a cutover baton.
160
+
161
+ The parked-owner supervisor also retries current obligations despite an earlier failed, unknown or unrecorded attempt.
162
+ A recorded success to the same known occupant waits for a change in its obligations. Rotation includes retained attempts,
163
+ so a held input cannot starve another owner. Interactive prompts stay with the existing prompt-refusal recovery.
164
+ Its own reminders wait while managed compaction owes the turn boundary, restore or audit, including a fresh check
165
+ at the paste and Enter boundary. A stage that begins after paste leaves an honest partial-input result; OpenRig
166
+ does not erase or replay that text. Peer messages and unrelated reminder policies keep their existing behavior.