@openrig/cli 0.6.14 → 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 (778) hide show
  1. package/README.md +10 -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 +28 -18
  14. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +10 -4
  15. package/daemon/assets/skills/rigs/SKILL.md +24 -5
  16. package/daemon/context-packs/help/manifest.yaml +1 -1
  17. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  18. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +4 -6
  19. package/daemon/context-packs/reference/getting-started.md +87 -21
  20. package/daemon/context-packs/reference/manifest.yaml +1 -1
  21. package/daemon/context-packs/reference/rig-spec.md +1 -1
  22. package/daemon/context-packs/reference/whats-new.md +123 -68
  23. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +9 -2
  27. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +24 -0
  33. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +2 -2
  38. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +11 -5
  41. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +3 -2
  50. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/openrig-user/SKILL.md +28 -18
  55. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/pods/development-team/SKILL.md +2 -0
  65. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +3 -1
  66. package/daemon/context-packs/skills/pods/development-team/references/refactoring.md +11 -0
  67. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/pods/review-team/SKILL.md +46 -96
  70. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  73. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  74. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  75. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  76. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +17 -80
  78. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +5 -3
  79. package/daemon/context-packs/skills/process/verification-before-completion/references/performance-claims.md +12 -0
  80. package/daemon/context-packs/skills/queue-handoff/SKILL.md +10 -4
  81. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  82. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  83. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  84. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  85. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  86. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  87. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  88. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  89. package/daemon/dist/adapters/claude-code-adapter.d.ts +6 -2
  90. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  91. package/daemon/dist/adapters/claude-code-adapter.js +33 -6
  92. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  93. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  94. package/daemon/dist/adapters/codex-resume.js +2 -7
  95. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  96. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +68 -2
  97. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  98. package/daemon/dist/adapters/codex-runtime-adapter.js +371 -60
  99. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  100. package/daemon/dist/adapters/compose-services-adapter.d.ts +16 -0
  101. package/daemon/dist/adapters/compose-services-adapter.d.ts.map +1 -1
  102. package/daemon/dist/adapters/compose-services-adapter.js +52 -9
  103. package/daemon/dist/adapters/compose-services-adapter.js.map +1 -1
  104. package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -1
  105. package/daemon/dist/adapters/kernel-authority.js +9 -5
  106. package/daemon/dist/adapters/kernel-authority.js.map +1 -1
  107. package/daemon/dist/adapters/pi-runner.d.ts +2 -0
  108. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  109. package/daemon/dist/adapters/pi-runner.js +5 -0
  110. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  111. package/daemon/dist/adapters/runtime-probe-exec.d.ts +11 -0
  112. package/daemon/dist/adapters/runtime-probe-exec.d.ts.map +1 -0
  113. package/daemon/dist/adapters/runtime-probe-exec.js +25 -0
  114. package/daemon/dist/adapters/runtime-probe-exec.js.map +1 -0
  115. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  116. package/daemon/dist/adapters/stub-runner.js +2 -0
  117. package/daemon/dist/adapters/stub-runner.js.map +1 -1
  118. package/daemon/dist/adapters/tmux.d.ts +21 -1
  119. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  120. package/daemon/dist/adapters/tmux.js +100 -13
  121. package/daemon/dist/adapters/tmux.js.map +1 -1
  122. package/daemon/dist/build-info.js +3 -3
  123. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  124. package/daemon/dist/db/all-migrations.js +12 -0
  125. package/daemon/dist/db/all-migrations.js.map +1 -1
  126. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.d.ts +3 -0
  127. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.d.ts.map +1 -0
  128. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.js +8 -0
  129. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.js.map +1 -0
  130. package/daemon/dist/db/migrations/118_human_quiet_windows.d.ts +3 -0
  131. package/daemon/dist/db/migrations/118_human_quiet_windows.d.ts.map +1 -0
  132. package/daemon/dist/db/migrations/118_human_quiet_windows.js +30 -0
  133. package/daemon/dist/db/migrations/118_human_quiet_windows.js.map +1 -0
  134. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.d.ts +3 -0
  135. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.d.ts.map +1 -0
  136. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.js +7 -0
  137. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.js.map +1 -0
  138. package/daemon/dist/db/migrations/121_rig_startup_layers.d.ts +13 -0
  139. package/daemon/dist/db/migrations/121_rig_startup_layers.d.ts.map +1 -0
  140. package/daemon/dist/db/migrations/121_rig_startup_layers.js +17 -0
  141. package/daemon/dist/db/migrations/121_rig_startup_layers.js.map +1 -0
  142. package/daemon/dist/db/migrations/122_human_operating_modes.d.ts +3 -0
  143. package/daemon/dist/db/migrations/122_human_operating_modes.d.ts.map +1 -0
  144. package/daemon/dist/db/migrations/122_human_operating_modes.js +55 -0
  145. package/daemon/dist/db/migrations/122_human_operating_modes.js.map +1 -0
  146. package/daemon/dist/db/migrations/123_queue_delegated_decision.d.ts +3 -0
  147. package/daemon/dist/db/migrations/123_queue_delegated_decision.d.ts.map +1 -0
  148. package/daemon/dist/db/migrations/123_queue_delegated_decision.js +10 -0
  149. package/daemon/dist/db/migrations/123_queue_delegated_decision.js.map +1 -0
  150. package/daemon/dist/domain/active-occupant.d.ts +5 -3
  151. package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  152. package/daemon/dist/domain/active-occupant.js +2 -2
  153. package/daemon/dist/domain/active-occupant.js.map +1 -1
  154. package/daemon/dist/domain/activity-taxonomy.d.ts +16 -1
  155. package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -1
  156. package/daemon/dist/domain/activity-taxonomy.js +21 -0
  157. package/daemon/dist/domain/activity-taxonomy.js.map +1 -1
  158. package/daemon/dist/domain/agent-activity-store.d.ts +20 -0
  159. package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
  160. package/daemon/dist/domain/agent-activity-store.js +41 -5
  161. package/daemon/dist/domain/agent-activity-store.js.map +1 -1
  162. package/daemon/dist/domain/agent-images/evidence-guard.js +3 -3
  163. package/daemon/dist/domain/agent-images/evidence-guard.js.map +1 -1
  164. package/daemon/dist/domain/agent-images/resume-token-discovery.d.ts.map +1 -1
  165. package/daemon/dist/domain/agent-images/resume-token-discovery.js +2 -10
  166. package/daemon/dist/domain/agent-images/resume-token-discovery.js.map +1 -1
  167. package/daemon/dist/domain/ask-service.d.ts +1 -0
  168. package/daemon/dist/domain/ask-service.d.ts.map +1 -1
  169. package/daemon/dist/domain/ask-service.js +7 -1
  170. package/daemon/dist/domain/ask-service.js.map +1 -1
  171. package/daemon/dist/domain/bootstrap-orchestrator.d.ts +2 -0
  172. package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
  173. package/daemon/dist/domain/bootstrap-orchestrator.js +5 -6
  174. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  175. package/daemon/dist/domain/claim-service.d.ts +1 -1
  176. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  177. package/daemon/dist/domain/claim-service.js +7 -0
  178. package/daemon/dist/domain/claim-service.js.map +1 -1
  179. package/daemon/dist/domain/classification-sources.d.ts.map +1 -1
  180. package/daemon/dist/domain/classification-sources.js +2 -0
  181. package/daemon/dist/domain/classification-sources.js.map +1 -1
  182. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +17 -4
  183. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  184. package/daemon/dist/domain/claude-compaction-enforcer.js +88 -24
  185. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  186. package/daemon/dist/domain/claude-core-plugin-env.d.ts +11 -0
  187. package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
  188. package/daemon/dist/domain/claude-core-plugin-env.js +15 -0
  189. package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
  190. package/daemon/dist/domain/codex-core-plugin-install.d.ts +41 -0
  191. package/daemon/dist/domain/codex-core-plugin-install.d.ts.map +1 -0
  192. package/daemon/dist/domain/codex-core-plugin-install.js +126 -0
  193. package/daemon/dist/domain/codex-core-plugin-install.js.map +1 -0
  194. package/daemon/dist/domain/codex-thread-id.d.ts +23 -1
  195. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  196. package/daemon/dist/domain/codex-thread-id.js +58 -17
  197. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  198. package/daemon/dist/domain/context-monitor.d.ts +13 -5
  199. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  200. package/daemon/dist/domain/context-monitor.js +47 -13
  201. package/daemon/dist/domain/context-monitor.js.map +1 -1
  202. package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  203. package/daemon/dist/domain/context-usage-store.js +3 -0
  204. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  205. package/daemon/dist/domain/current-work.d.ts +18 -0
  206. package/daemon/dist/domain/current-work.d.ts.map +1 -1
  207. package/daemon/dist/domain/current-work.js +17 -3
  208. package/daemon/dist/domain/current-work.js.map +1 -1
  209. package/daemon/dist/domain/draft-aware-delivery.d.ts +7 -7
  210. package/daemon/dist/domain/draft-aware-delivery.d.ts.map +1 -1
  211. package/daemon/dist/domain/draft-aware-delivery.js +61 -82
  212. package/daemon/dist/domain/draft-aware-delivery.js.map +1 -1
  213. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  214. package/daemon/dist/domain/execution-view.js +2 -1
  215. package/daemon/dist/domain/execution-view.js.map +1 -1
  216. package/daemon/dist/domain/existing-rig-restore.d.ts +110 -0
  217. package/daemon/dist/domain/existing-rig-restore.d.ts.map +1 -0
  218. package/daemon/dist/domain/existing-rig-restore.js +254 -0
  219. package/daemon/dist/domain/existing-rig-restore.js.map +1 -0
  220. package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -1
  221. package/daemon/dist/domain/fresh-occupant-relation.js +9 -2
  222. package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -1
  223. package/daemon/dist/domain/gateway/channel-operations.d.ts +3 -4
  224. package/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -1
  225. package/daemon/dist/domain/gateway/channel-operations.js.map +1 -1
  226. package/daemon/dist/domain/gateway/connections-projection.d.ts +0 -5
  227. package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
  228. package/daemon/dist/domain/gateway/connections-projection.js +3 -46
  229. package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
  230. package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts +11 -1
  231. package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts.map +1 -1
  232. package/daemon/dist/domain/gateway/delivery-rules-engine.js +12 -2
  233. package/daemon/dist/domain/gateway/delivery-rules-engine.js.map +1 -1
  234. package/daemon/dist/domain/gateway/dispatch-buffer.d.ts +4 -0
  235. package/daemon/dist/domain/gateway/dispatch-buffer.d.ts.map +1 -1
  236. package/daemon/dist/domain/gateway/dispatch-buffer.js +18 -0
  237. package/daemon/dist/domain/gateway/dispatch-buffer.js.map +1 -1
  238. package/daemon/dist/domain/gateway/human-mode-account.d.ts +61 -0
  239. package/daemon/dist/domain/gateway/human-mode-account.d.ts.map +1 -0
  240. package/daemon/dist/domain/gateway/human-mode-account.js +112 -0
  241. package/daemon/dist/domain/gateway/human-mode-account.js.map +1 -0
  242. package/daemon/dist/domain/gateway/human-operating-modes.d.ts +171 -0
  243. package/daemon/dist/domain/gateway/human-operating-modes.d.ts.map +1 -0
  244. package/daemon/dist/domain/gateway/human-operating-modes.js +422 -0
  245. package/daemon/dist/domain/gateway/human-operating-modes.js.map +1 -0
  246. package/daemon/dist/domain/gateway/human-quiet-windows.d.ts +121 -0
  247. package/daemon/dist/domain/gateway/human-quiet-windows.d.ts.map +1 -0
  248. package/daemon/dist/domain/gateway/human-quiet-windows.js +217 -0
  249. package/daemon/dist/domain/gateway/human-quiet-windows.js.map +1 -0
  250. package/daemon/dist/domain/gateway/human-registry.d.ts +23 -2
  251. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  252. package/daemon/dist/domain/gateway/human-registry.js +67 -5
  253. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  254. package/daemon/dist/domain/gateway/operator-delivery-engine.d.ts.map +1 -1
  255. package/daemon/dist/domain/gateway/operator-delivery-engine.js +9 -0
  256. package/daemon/dist/domain/gateway/operator-delivery-engine.js.map +1 -1
  257. package/daemon/dist/domain/gateway/slack/inbound.d.ts +10 -2
  258. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  259. package/daemon/dist/domain/gateway/slack/inbound.js +24 -2
  260. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  261. package/daemon/dist/domain/gateway/slack/message.d.ts +1 -0
  262. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
  263. package/daemon/dist/domain/gateway/slack/message.js +5 -1
  264. package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
  265. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +9 -3
  266. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  267. package/daemon/dist/domain/gateway/slack/outbound-driver.js +40 -6
  268. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  269. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +19 -1
  270. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  271. package/daemon/dist/domain/gateway/slack/slack-delivery.js +128 -41
  272. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  273. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +3 -2
  274. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  275. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +268 -50
  276. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  277. package/daemon/dist/domain/health-passive-ceremony.d.ts +4 -0
  278. package/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -1
  279. package/daemon/dist/domain/health-passive-ceremony.js +34 -4
  280. package/daemon/dist/domain/health-passive-ceremony.js.map +1 -1
  281. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +3 -1
  282. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
  283. package/daemon/dist/domain/hosts/hosts-registry-reader.js +9 -9
  284. package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
  285. package/daemon/dist/domain/hosts/learned-host-bindings.d.ts +28 -0
  286. package/daemon/dist/domain/hosts/learned-host-bindings.d.ts.map +1 -0
  287. package/daemon/dist/domain/hosts/learned-host-bindings.js +77 -0
  288. package/daemon/dist/domain/hosts/learned-host-bindings.js.map +1 -0
  289. package/daemon/dist/domain/hot-potato-enforcer.d.ts +7 -5
  290. package/daemon/dist/domain/hot-potato-enforcer.d.ts.map +1 -1
  291. package/daemon/dist/domain/hot-potato-enforcer.js +19 -10
  292. package/daemon/dist/domain/hot-potato-enforcer.js.map +1 -1
  293. package/daemon/dist/domain/human-questions.d.ts +8 -1
  294. package/daemon/dist/domain/human-questions.d.ts.map +1 -1
  295. package/daemon/dist/domain/human-questions.js.map +1 -1
  296. package/daemon/dist/domain/kernel-boot-tracker.d.ts +17 -1
  297. package/daemon/dist/domain/kernel-boot-tracker.d.ts.map +1 -1
  298. package/daemon/dist/domain/kernel-boot-tracker.js +44 -3
  299. package/daemon/dist/domain/kernel-boot-tracker.js.map +1 -1
  300. package/daemon/dist/domain/kernel-boot.d.ts +21 -0
  301. package/daemon/dist/domain/kernel-boot.d.ts.map +1 -1
  302. package/daemon/dist/domain/kernel-boot.js +57 -2
  303. package/daemon/dist/domain/kernel-boot.js.map +1 -1
  304. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +2 -1
  305. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  306. package/daemon/dist/domain/model-divergence/current-generation-record.js +8 -3
  307. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  308. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  309. package/daemon/dist/domain/native-process-lineage.js +43 -15
  310. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  311. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  312. package/daemon/dist/domain/node-inventory.js +26 -12
  313. package/daemon/dist/domain/node-inventory.js.map +1 -1
  314. package/daemon/dist/domain/node-launcher.d.ts +5 -3
  315. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  316. package/daemon/dist/domain/node-launcher.js +29 -25
  317. package/daemon/dist/domain/node-launcher.js.map +1 -1
  318. package/daemon/dist/domain/outbox-handler.d.ts +3 -5
  319. package/daemon/dist/domain/outbox-handler.d.ts.map +1 -1
  320. package/daemon/dist/domain/outbox-handler.js +9 -19
  321. package/daemon/dist/domain/outbox-handler.js.map +1 -1
  322. package/daemon/dist/domain/park-wake-text.d.ts +11 -0
  323. package/daemon/dist/domain/park-wake-text.d.ts.map +1 -0
  324. package/daemon/dist/domain/park-wake-text.js +26 -0
  325. package/daemon/dist/domain/park-wake-text.js.map +1 -0
  326. package/daemon/dist/domain/plugin-vendor-service.d.ts +4 -0
  327. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  328. package/daemon/dist/domain/plugin-vendor-service.js +29 -6
  329. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  330. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts +1 -0
  331. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -1
  332. package/daemon/dist/domain/policies/delivery-digest-flush.js +25 -4
  333. package/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -1
  334. package/daemon/dist/domain/policies/mode-scheduled-end.d.ts +37 -0
  335. package/daemon/dist/domain/policies/mode-scheduled-end.d.ts.map +1 -0
  336. package/daemon/dist/domain/policies/mode-scheduled-end.js +161 -0
  337. package/daemon/dist/domain/policies/mode-scheduled-end.js.map +1 -0
  338. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +11 -7
  339. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  340. package/daemon/dist/domain/policies/parked-owner-consumer.js +82 -113
  341. package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  342. package/daemon/dist/domain/policies/quiet-release.d.ts +109 -0
  343. package/daemon/dist/domain/policies/quiet-release.d.ts.map +1 -0
  344. package/daemon/dist/domain/policies/quiet-release.js +213 -0
  345. package/daemon/dist/domain/policies/quiet-release.js.map +1 -0
  346. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  347. package/daemon/dist/domain/profile-resolver.js +8 -3
  348. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  349. package/daemon/dist/domain/proof/source-watch.js +2 -2
  350. package/daemon/dist/domain/proof/source-watch.js.map +1 -1
  351. package/daemon/dist/domain/queue-destination-check.d.ts +6 -0
  352. package/daemon/dist/domain/queue-destination-check.d.ts.map +1 -0
  353. package/daemon/dist/domain/queue-destination-check.js +35 -0
  354. package/daemon/dist/domain/queue-destination-check.js.map +1 -0
  355. package/daemon/dist/domain/queue-owner.d.ts.map +1 -1
  356. package/daemon/dist/domain/queue-owner.js +2 -1
  357. package/daemon/dist/domain/queue-owner.js.map +1 -1
  358. package/daemon/dist/domain/queue-recovery.d.ts +1 -1
  359. package/daemon/dist/domain/queue-recovery.d.ts.map +1 -1
  360. package/daemon/dist/domain/queue-recovery.js +3 -2
  361. package/daemon/dist/domain/queue-recovery.js.map +1 -1
  362. package/daemon/dist/domain/queue-repository.d.ts +108 -67
  363. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  364. package/daemon/dist/domain/queue-repository.js +316 -140
  365. package/daemon/dist/domain/queue-repository.js.map +1 -1
  366. package/daemon/dist/domain/queue-stuck-sweep.d.ts +13 -1
  367. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  368. package/daemon/dist/domain/queue-stuck-sweep.js +95 -13
  369. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  370. package/daemon/dist/domain/queue-transition-log.d.ts +5 -0
  371. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  372. package/daemon/dist/domain/queue-transition-log.js +25 -8
  373. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  374. package/daemon/dist/domain/queue-wake-ladder.d.ts +2 -0
  375. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  376. package/daemon/dist/domain/queue-wake-ladder.js +94 -11
  377. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  378. package/daemon/dist/domain/quiet-hold-custody.d.ts +24 -0
  379. package/daemon/dist/domain/quiet-hold-custody.d.ts.map +1 -0
  380. package/daemon/dist/domain/quiet-hold-custody.js +85 -0
  381. package/daemon/dist/domain/quiet-hold-custody.js.map +1 -0
  382. package/daemon/dist/domain/rehydrate-eligibility.d.ts +12 -1
  383. package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  384. package/daemon/dist/domain/rehydrate-eligibility.js +47 -9
  385. package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  386. package/daemon/dist/domain/restore-orchestrator.d.ts +11 -0
  387. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  388. package/daemon/dist/domain/restore-orchestrator.js +144 -15
  389. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  390. package/daemon/dist/domain/restore-plan-preview.d.ts +3 -1
  391. package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  392. package/daemon/dist/domain/restore-plan-preview.js +30 -13
  393. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  394. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  395. package/daemon/dist/domain/review/gather.js +8 -5
  396. package/daemon/dist/domain/review/gather.js.map +1 -1
  397. package/daemon/dist/domain/rig-mode/operating-posture.d.ts.map +1 -1
  398. package/daemon/dist/domain/rig-mode/operating-posture.js +3 -1
  399. package/daemon/dist/domain/rig-mode/operating-posture.js.map +1 -1
  400. package/daemon/dist/domain/rig-repository.d.ts +11 -1
  401. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  402. package/daemon/dist/domain/rig-repository.js +27 -3
  403. package/daemon/dist/domain/rig-repository.js.map +1 -1
  404. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  405. package/daemon/dist/domain/rig-teardown.js +31 -4
  406. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  407. package/daemon/dist/domain/rigspec-instantiator.d.ts +9 -0
  408. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  409. package/daemon/dist/domain/rigspec-instantiator.js +59 -28
  410. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  411. package/daemon/dist/domain/rigspec-schema.d.ts +5 -0
  412. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  413. package/daemon/dist/domain/rigspec-schema.js +30 -0
  414. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  415. package/daemon/dist/domain/runtime-adapter.d.ts +27 -2
  416. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  417. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  418. package/daemon/dist/domain/seat-activity-service.d.ts +18 -3
  419. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  420. package/daemon/dist/domain/seat-activity-service.js +124 -57
  421. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  422. package/daemon/dist/domain/seat-attention-reconciler.d.ts +8 -1
  423. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  424. package/daemon/dist/domain/seat-attention-reconciler.js +3 -1
  425. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  426. package/daemon/dist/domain/seat-delivery-guard.d.ts.map +1 -1
  427. package/daemon/dist/domain/seat-delivery-guard.js +21 -5
  428. package/daemon/dist/domain/seat-delivery-guard.js.map +1 -1
  429. package/daemon/dist/domain/seat-handover-service.d.ts +2 -2
  430. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  431. package/daemon/dist/domain/seat-handover-service.js +28 -2
  432. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  433. package/daemon/dist/domain/seat-identity-reconciler.js +1 -1
  434. package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  435. package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
  436. package/daemon/dist/domain/seat-identity-store.js +5 -2
  437. package/daemon/dist/domain/seat-identity-store.js.map +1 -1
  438. package/daemon/dist/domain/seat-launch-environment.d.ts.map +1 -1
  439. package/daemon/dist/domain/seat-launch-environment.js +17 -1
  440. package/daemon/dist/domain/seat-launch-environment.js.map +1 -1
  441. package/daemon/dist/domain/seat-lifecycle-service.d.ts +4 -0
  442. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  443. package/daemon/dist/domain/seat-restart-in-place.d.ts +33 -14
  444. package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -1
  445. package/daemon/dist/domain/seat-restart-in-place.js +102 -30
  446. package/daemon/dist/domain/seat-restart-in-place.js.map +1 -1
  447. package/daemon/dist/domain/self-attach-service.d.ts +3 -2
  448. package/daemon/dist/domain/self-attach-service.d.ts.map +1 -1
  449. package/daemon/dist/domain/self-attach-service.js +18 -1
  450. package/daemon/dist/domain/self-attach-service.js.map +1 -1
  451. package/daemon/dist/domain/services-readiness.d.ts.map +1 -1
  452. package/daemon/dist/domain/services-readiness.js +14 -3
  453. package/daemon/dist/domain/services-readiness.js.map +1 -1
  454. package/daemon/dist/domain/session-registry.d.ts +45 -0
  455. package/daemon/dist/domain/session-registry.d.ts.map +1 -1
  456. package/daemon/dist/domain/session-registry.js +124 -0
  457. package/daemon/dist/domain/session-registry.js.map +1 -1
  458. package/daemon/dist/domain/session-transport.d.ts +24 -6
  459. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  460. package/daemon/dist/domain/session-transport.js +58 -41
  461. package/daemon/dist/domain/session-transport.js.map +1 -1
  462. package/daemon/dist/domain/skill-discovery.d.ts +7 -1
  463. package/daemon/dist/domain/skill-discovery.d.ts.map +1 -1
  464. package/daemon/dist/domain/skill-discovery.js +41 -7
  465. package/daemon/dist/domain/skill-discovery.js.map +1 -1
  466. package/daemon/dist/domain/snapshot-repository.d.ts +1 -0
  467. package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
  468. package/daemon/dist/domain/snapshot-repository.js +23 -10
  469. package/daemon/dist/domain/snapshot-repository.js.map +1 -1
  470. package/daemon/dist/domain/startup-orchestrator.d.ts +21 -3
  471. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  472. package/daemon/dist/domain/startup-orchestrator.js +66 -16
  473. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  474. package/daemon/dist/domain/startup-submission-evidence.d.ts +4 -11
  475. package/daemon/dist/domain/startup-submission-evidence.d.ts.map +1 -1
  476. package/daemon/dist/domain/startup-submission-evidence.js +11 -17
  477. package/daemon/dist/domain/startup-submission-evidence.js.map +1 -1
  478. package/daemon/dist/domain/successor-session-launcher.d.ts +2 -1
  479. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  480. package/daemon/dist/domain/successor-session-launcher.js +3 -1
  481. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  482. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +1 -1
  483. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  484. package/daemon/dist/domain/terminal/herdr-adapter.js +22 -4
  485. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  486. package/daemon/dist/domain/types.d.ts +15 -4
  487. package/daemon/dist/domain/types.d.ts.map +1 -1
  488. package/daemon/dist/domain/types.js.map +1 -1
  489. package/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -1
  490. package/daemon/dist/domain/user-settings/settings-browser.js +2 -0
  491. package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -1
  492. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  493. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  494. package/daemon/dist/domain/user-settings/settings-store.js +33 -7
  495. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  496. package/daemon/dist/domain/watchdog-delivery.d.ts +3 -23
  497. package/daemon/dist/domain/watchdog-delivery.d.ts.map +1 -1
  498. package/daemon/dist/domain/watchdog-delivery.js +12 -89
  499. package/daemon/dist/domain/watchdog-delivery.js.map +1 -1
  500. package/daemon/dist/domain/watchdog-history-log.d.ts +5 -2
  501. package/daemon/dist/domain/watchdog-history-log.d.ts.map +1 -1
  502. package/daemon/dist/domain/watchdog-history-log.js.map +1 -1
  503. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -2
  504. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  505. package/daemon/dist/domain/watchdog-jobs-repository.js +4 -0
  506. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  507. package/daemon/dist/domain/watchdog-policy-engine.d.ts +16 -24
  508. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  509. package/daemon/dist/domain/watchdog-policy-engine.js +44 -43
  510. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  511. package/daemon/dist/domain/whoami-service.d.ts +2 -0
  512. package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
  513. package/daemon/dist/domain/whoami-service.js +23 -6
  514. package/daemon/dist/domain/whoami-service.js.map +1 -1
  515. package/daemon/dist/domain/workflow-boot-sweep.d.ts +2 -1
  516. package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -1
  517. package/daemon/dist/domain/workflow-boot-sweep.js +11 -5
  518. package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -1
  519. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  520. package/daemon/dist/domain/workflow-exception-escalation.js +2 -1
  521. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  522. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  523. package/daemon/dist/domain/workflow-projector.js +5 -2
  524. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  525. package/daemon/dist/domain/workflow-role-context.js +2 -2
  526. package/daemon/dist/domain/workflow-role-context.js.map +1 -1
  527. package/daemon/dist/domain/workflow-runtime.d.ts +1 -1
  528. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  529. package/daemon/dist/domain/workflow-runtime.js +2 -0
  530. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  531. package/daemon/dist/routes/activity.d.ts +13 -1
  532. package/daemon/dist/routes/activity.d.ts.map +1 -1
  533. package/daemon/dist/routes/activity.js +67 -2
  534. package/daemon/dist/routes/activity.js.map +1 -1
  535. package/daemon/dist/routes/agent-images.d.ts.map +1 -1
  536. package/daemon/dist/routes/agent-images.js +2 -0
  537. package/daemon/dist/routes/agent-images.js.map +1 -1
  538. package/daemon/dist/routes/compaction.d.ts.map +1 -1
  539. package/daemon/dist/routes/compaction.js +7 -2
  540. package/daemon/dist/routes/compaction.js.map +1 -1
  541. package/daemon/dist/routes/discovery.js +3 -0
  542. package/daemon/dist/routes/discovery.js.map +1 -1
  543. package/daemon/dist/routes/down.js +9 -1
  544. package/daemon/dist/routes/down.js.map +1 -1
  545. package/daemon/dist/routes/gateway.d.ts +2 -0
  546. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  547. package/daemon/dist/routes/gateway.js +181 -1
  548. package/daemon/dist/routes/gateway.js.map +1 -1
  549. package/daemon/dist/routes/kernel-status.js +6 -1
  550. package/daemon/dist/routes/kernel-status.js.map +1 -1
  551. package/daemon/dist/routes/provider.d.ts.map +1 -1
  552. package/daemon/dist/routes/provider.js +0 -73
  553. package/daemon/dist/routes/provider.js.map +1 -1
  554. package/daemon/dist/routes/queue.d.ts.map +1 -1
  555. package/daemon/dist/routes/queue.js +73 -13
  556. package/daemon/dist/routes/queue.js.map +1 -1
  557. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  558. package/daemon/dist/routes/rigs.js +29 -10
  559. package/daemon/dist/routes/rigs.js.map +1 -1
  560. package/daemon/dist/routes/rigspec.js +2 -3
  561. package/daemon/dist/routes/rigspec.js.map +1 -1
  562. package/daemon/dist/routes/seat.js +2 -2
  563. package/daemon/dist/routes/seat.js.map +1 -1
  564. package/daemon/dist/routes/skills.js +2 -2
  565. package/daemon/dist/routes/skills.js.map +1 -1
  566. package/daemon/dist/routes/transcripts.d.ts.map +1 -1
  567. package/daemon/dist/routes/transcripts.js +7 -3
  568. package/daemon/dist/routes/transcripts.js.map +1 -1
  569. package/daemon/dist/routes/transport.js +1 -1
  570. package/daemon/dist/routes/transport.js.map +1 -1
  571. package/daemon/dist/routes/up.js +36 -52
  572. package/daemon/dist/routes/up.js.map +1 -1
  573. package/daemon/dist/startup.d.ts.map +1 -1
  574. package/daemon/dist/startup.js +102 -60
  575. package/daemon/dist/startup.js.map +1 -1
  576. package/daemon/docs/reference/agent-state-taxonomy.md +17 -2
  577. package/daemon/docs/reference/getting-started.md +87 -21
  578. package/daemon/docs/reference/quickstart.md +33 -20
  579. package/daemon/docs/reference/refocus-channel.md +9 -3
  580. package/daemon/docs/reference/rig-spec.md +1 -1
  581. package/daemon/docs/reference/seat-delivery.md +57 -18
  582. package/daemon/docs/reference/slack-app-setup.md +49 -2
  583. package/daemon/docs/reference/whats-new.md +123 -68
  584. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +24 -0
  585. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +2 -2
  586. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +11 -5
  587. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +2 -0
  588. package/daemon/specs/agents/shared/skills/pods/development-team/references/refactoring.md +11 -0
  589. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +46 -96
  590. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +17 -80
  591. package/daemon/specs/agents/shared/skills/process/verification-before-completion/references/performance-claims.md +12 -0
  592. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +93 -14
  593. package/dist/build-info.js +3 -3
  594. package/dist/cli-error.d.ts +4 -0
  595. package/dist/cli-error.d.ts.map +1 -1
  596. package/dist/cli-error.js +6 -0
  597. package/dist/cli-error.js.map +1 -1
  598. package/dist/commands/agent-image.d.ts.map +1 -1
  599. package/dist/commands/agent-image.js +15 -7
  600. package/dist/commands/agent-image.js.map +1 -1
  601. package/dist/commands/archive.d.ts.map +1 -1
  602. package/dist/commands/archive.js +17 -3
  603. package/dist/commands/archive.js.map +1 -1
  604. package/dist/commands/attach.d.ts.map +1 -1
  605. package/dist/commands/attach.js +6 -4
  606. package/dist/commands/attach.js.map +1 -1
  607. package/dist/commands/broadcast.js +2 -0
  608. package/dist/commands/broadcast.js.map +1 -1
  609. package/dist/commands/community-harness.d.ts.map +1 -1
  610. package/dist/commands/community-harness.js +2 -1
  611. package/dist/commands/community-harness.js.map +1 -1
  612. package/dist/commands/compact-plan.d.ts.map +1 -1
  613. package/dist/commands/compact-plan.js +2 -1
  614. package/dist/commands/compact-plan.js.map +1 -1
  615. package/dist/commands/compact.d.ts.map +1 -1
  616. package/dist/commands/compact.js +10 -3
  617. package/dist/commands/compact.js.map +1 -1
  618. package/dist/commands/config.d.ts.map +1 -1
  619. package/dist/commands/config.js +10 -2
  620. package/dist/commands/config.js.map +1 -1
  621. package/dist/commands/context.d.ts.map +1 -1
  622. package/dist/commands/context.js +16 -9
  623. package/dist/commands/context.js.map +1 -1
  624. package/dist/commands/expand.d.ts.map +1 -1
  625. package/dist/commands/expand.js +16 -2
  626. package/dist/commands/expand.js.map +1 -1
  627. package/dist/commands/export.d.ts.map +1 -1
  628. package/dist/commands/export.js +9 -2
  629. package/dist/commands/export.js.map +1 -1
  630. package/dist/commands/fork.d.ts.map +1 -1
  631. package/dist/commands/fork.js +3 -1
  632. package/dist/commands/fork.js.map +1 -1
  633. package/dist/commands/gateway.d.ts +39 -0
  634. package/dist/commands/gateway.d.ts.map +1 -1
  635. package/dist/commands/gateway.js +310 -3
  636. package/dist/commands/gateway.js.map +1 -1
  637. package/dist/commands/health.js +3 -2
  638. package/dist/commands/health.js.map +1 -1
  639. package/dist/commands/host.d.ts +1 -1
  640. package/dist/commands/host.d.ts.map +1 -1
  641. package/dist/commands/host.js +2 -2
  642. package/dist/commands/host.js.map +1 -1
  643. package/dist/commands/launch.d.ts.map +1 -1
  644. package/dist/commands/launch.js +9 -2
  645. package/dist/commands/launch.js.map +1 -1
  646. package/dist/commands/plugin.d.ts.map +1 -1
  647. package/dist/commands/plugin.js +2 -1
  648. package/dist/commands/plugin.js.map +1 -1
  649. package/dist/commands/provider.d.ts.map +1 -1
  650. package/dist/commands/provider.js +0 -73
  651. package/dist/commands/provider.js.map +1 -1
  652. package/dist/commands/ps.d.ts +4 -0
  653. package/dist/commands/ps.d.ts.map +1 -1
  654. package/dist/commands/ps.js +95 -5
  655. package/dist/commands/ps.js.map +1 -1
  656. package/dist/commands/queue.d.ts +4 -0
  657. package/dist/commands/queue.d.ts.map +1 -1
  658. package/dist/commands/queue.js +78 -3
  659. package/dist/commands/queue.js.map +1 -1
  660. package/dist/commands/release.d.ts.map +1 -1
  661. package/dist/commands/release.js +16 -2
  662. package/dist/commands/release.js.map +1 -1
  663. package/dist/commands/restore-check.d.ts.map +1 -1
  664. package/dist/commands/restore-check.js +2 -1
  665. package/dist/commands/restore-check.js.map +1 -1
  666. package/dist/commands/restore-packet.d.ts.map +1 -1
  667. package/dist/commands/restore-packet.js +2 -1
  668. package/dist/commands/restore-packet.js.map +1 -1
  669. package/dist/commands/restore.d.ts.map +1 -1
  670. package/dist/commands/restore.js +23 -6
  671. package/dist/commands/restore.js.map +1 -1
  672. package/dist/commands/scope.d.ts.map +1 -1
  673. package/dist/commands/scope.js +5 -2
  674. package/dist/commands/scope.js.map +1 -1
  675. package/dist/commands/seat.js +0 -4
  676. package/dist/commands/seat.js.map +1 -1
  677. package/dist/commands/send.d.ts.map +1 -1
  678. package/dist/commands/send.js +27 -3
  679. package/dist/commands/send.js.map +1 -1
  680. package/dist/commands/setup.d.ts +3 -0
  681. package/dist/commands/setup.d.ts.map +1 -1
  682. package/dist/commands/setup.js +29 -9
  683. package/dist/commands/setup.js.map +1 -1
  684. package/dist/commands/shrink.d.ts.map +1 -1
  685. package/dist/commands/shrink.js +16 -2
  686. package/dist/commands/shrink.js.map +1 -1
  687. package/dist/commands/slack.d.ts.map +1 -1
  688. package/dist/commands/slack.js +11 -24
  689. package/dist/commands/slack.js.map +1 -1
  690. package/dist/commands/snapshot.d.ts.map +1 -1
  691. package/dist/commands/snapshot.js +36 -10
  692. package/dist/commands/snapshot.js.map +1 -1
  693. package/dist/commands/specs.d.ts.map +1 -1
  694. package/dist/commands/specs.js +11 -5
  695. package/dist/commands/specs.js.map +1 -1
  696. package/dist/commands/start.d.ts.map +1 -1
  697. package/dist/commands/start.js +36 -10
  698. package/dist/commands/start.js.map +1 -1
  699. package/dist/commands/status.d.ts.map +1 -1
  700. package/dist/commands/status.js +4 -1
  701. package/dist/commands/status.js.map +1 -1
  702. package/dist/commands/transcript.d.ts.map +1 -1
  703. package/dist/commands/transcript.js +12 -7
  704. package/dist/commands/transcript.js.map +1 -1
  705. package/dist/commands/unarchive.d.ts.map +1 -1
  706. package/dist/commands/unarchive.js +16 -2
  707. package/dist/commands/unarchive.js.map +1 -1
  708. package/dist/commands/up.d.ts.map +1 -1
  709. package/dist/commands/up.js +33 -7
  710. package/dist/commands/up.js.map +1 -1
  711. package/dist/commands/walk.d.ts.map +1 -1
  712. package/dist/commands/walk.js +2 -1
  713. package/dist/commands/walk.js.map +1 -1
  714. package/dist/commands/whoami.d.ts.map +1 -1
  715. package/dist/commands/whoami.js +3 -0
  716. package/dist/commands/whoami.js.map +1 -1
  717. package/dist/config-store.d.ts +4 -2
  718. package/dist/config-store.d.ts.map +1 -1
  719. package/dist/config-store.js +34 -7
  720. package/dist/config-store.js.map +1 -1
  721. package/dist/daemon-lifecycle.d.ts +9 -4
  722. package/dist/daemon-lifecycle.d.ts.map +1 -1
  723. package/dist/daemon-lifecycle.js +27 -9
  724. package/dist/daemon-lifecycle.js.map +1 -1
  725. package/dist/daemon-reachability.d.ts +13 -0
  726. package/dist/daemon-reachability.d.ts.map +1 -1
  727. package/dist/daemon-reachability.js +28 -0
  728. package/dist/daemon-reachability.js.map +1 -1
  729. package/dist/fetch-with-timeout.d.ts.map +1 -1
  730. package/dist/fetch-with-timeout.js +19 -16
  731. package/dist/fetch-with-timeout.js.map +1 -1
  732. package/dist/host-bindings.d.ts +6 -0
  733. package/dist/host-bindings.d.ts.map +1 -1
  734. package/dist/host-bindings.js +7 -4
  735. package/dist/host-bindings.js.map +1 -1
  736. package/dist/lib/bundle-check.d.ts.map +1 -1
  737. package/dist/lib/bundle-check.js +13 -5
  738. package/dist/lib/bundle-check.js.map +1 -1
  739. package/dist/mcp-server.d.ts.map +1 -1
  740. package/dist/mcp-server.js +57 -14
  741. package/dist/mcp-server.js.map +1 -1
  742. package/dist/rig-handle.d.ts +18 -1
  743. package/dist/rig-handle.d.ts.map +1 -1
  744. package/dist/rig-handle.js +19 -2
  745. package/dist/rig-handle.js.map +1 -1
  746. package/package.json +1 -1
  747. package/tui/dist/config/config-model.js +1 -1
  748. package/tui/dist/config/config-model.js.map +1 -1
  749. package/tui/dist/connections/connections-model.d.ts +0 -5
  750. package/tui/dist/connections/connections-model.d.ts.map +1 -1
  751. package/tui/dist/connections/connections-model.js +1 -1
  752. package/tui/dist/connections/connections-model.js.map +1 -1
  753. package/tui/dist/daemon-client.d.ts +2 -0
  754. package/tui/dist/daemon-client.d.ts.map +1 -1
  755. package/tui/dist/daemon-client.js +23 -0
  756. package/tui/dist/daemon-client.js.map +1 -1
  757. package/tui/dist/hydrate.d.ts.map +1 -1
  758. package/tui/dist/hydrate.js +13 -1
  759. package/tui/dist/hydrate.js.map +1 -1
  760. package/tui/dist/live.d.ts +10 -1
  761. package/tui/dist/live.d.ts.map +1 -1
  762. package/tui/dist/live.js +56 -7
  763. package/tui/dist/live.js.map +1 -1
  764. package/tui/dist/main.js +35 -2
  765. package/tui/dist/main.js.map +1 -1
  766. package/tui/dist/render.d.ts.map +1 -1
  767. package/tui/dist/render.js +111 -7
  768. package/tui/dist/render.js.map +1 -1
  769. package/tui/dist/types.d.ts +53 -0
  770. package/tui/dist/types.d.ts.map +1 -1
  771. package/tui/dist/version-skew.d.ts +24 -0
  772. package/tui/dist/version-skew.d.ts.map +1 -0
  773. package/tui/dist/version-skew.js +37 -0
  774. package/tui/dist/version-skew.js.map +1 -0
  775. package/daemon/dist/domain/provider/subscription-moves.d.ts +0 -77
  776. package/daemon/dist/domain/provider/subscription-moves.d.ts.map +0 -1
  777. package/daemon/dist/domain/provider/subscription-moves.js +0 -140
  778. package/daemon/dist/domain/provider/subscription-moves.js.map +0 -1
package/README.md CHANGED
@@ -26,9 +26,9 @@ use:
26
26
 
27
27
  ```sh
28
28
  # Claude Code
29
- npx skills add https://github.com/mvschwarz/openrig/tree/v0.6.14/skills/rigs --skill rigs --agent claude-code
29
+ npx skills add https://github.com/mvschwarz/openrig/tree/v0.7.0/skills/rigs --skill rigs --agent claude-code
30
30
  # Codex
31
- npx skills add https://github.com/mvschwarz/openrig/tree/v0.6.14/skills/rigs --skill rigs --agent codex
31
+ npx skills add https://github.com/mvschwarz/openrig/tree/v0.7.0/skills/rigs --skill rigs --agent codex
32
32
  ```
33
33
 
34
34
  Then type `/rigs` in Claude Code, or `$rigs` in Codex, and say what you want built. The skill has your agent tell
@@ -42,7 +42,7 @@ Already have OpenRig? Use the tag that matches `rig --version`, or upgrade first
42
42
 
43
43
  Prefer to type the commands yourself? [Install it yourself ↓](#install-it-yourself)
44
44
 
45
- Requires Node.js 22 or 24 and tmux, on macOS or Linux, and one working Claude Code or Codex account: one is enough, since the kernel operator adapts the shipped `starter` team to whichever you have. On Linux, the distribution's own Node.js can be older (Ubuntu 24.04's is 18); install a supported version with [nvm](https://github.com/nvm-sh/nvm) (`nvm install 22`) or NodeSource. On a Mac with Apple silicon, use Node.js 22 ([compatibility history](docs/releases/v0.5.15.md#known-compatibility-limitation)). On a Mac where you aren't an administrator, or where Homebrew belongs to another account (its `brew install` is refused), install Node.js in your own home folder with [nvm](https://github.com/nvm-sh/nvm): run `touch ~/.zshrc` (a new Mac account has none, and nvm's installer only adds itself to a profile file that already exists), then the install command on nvm's page, open a new terminal, and run `nvm install 22`. That needs no administrator password, and `npm install -g` then installs into your nvm folder. On Windows, use WSL2, the Windows route OpenRig supports; native Windows isn't supported. OpenRig's automated tests don't run on WSL2 yet; see [one user's working setup](docs/reference/getting-started.md#wsl2-a-reported-working-setup).
45
+ Requires Node.js 22 or 24 and tmux, on macOS or Linux, and one working Claude Code or Codex account: one is enough, since the kernel operator adapts the shipped `starter` team to whichever you have. On Linux, the distribution's own Node.js can be older (Ubuntu 24.04's is 18); install a supported version with [nvm](https://github.com/nvm-sh/nvm) (`nvm install 22`) or NodeSource. On a Mac with Apple silicon, use Node.js 22 ([compatibility history](docs/releases/v0.5.15.md#known-compatibility-limitation)). On a Mac where you aren't an administrator, or where Homebrew belongs to another account (its `brew install` is refused), install Node.js in your own home folder with [nvm](https://github.com/nvm-sh/nvm): run `touch ~/.zshrc` (a new Mac account has none, and nvm's installer only adds itself to a profile file that already exists), then nvm's install command, for nvm v0.40.8 `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash` ([nvm's page](https://github.com/nvm-sh/nvm#install--update-script) has the newest), open a new terminal, and run `nvm install 22`. nvm itself needs no administrator password, and `npm install -g` then installs into your nvm folder. If nvm's installer says you need Apple's command line tools, run `xcode-select --install`, then its install command again. On Windows, use WSL2, the Windows route OpenRig supports; native Windows isn't supported. OpenRig's automated tests don't run on WSL2 yet; see [one user's working setup](docs/reference/getting-started.md#wsl2-a-reported-working-setup).
46
46
 
47
47
  > **What OpenRig changes on your machine**
48
48
  > - **Install:** `@openrig/cli` goes in globally with npm.
@@ -68,14 +68,14 @@ Requires Node.js 22 or 24 and tmux, on macOS or Linux, and one working Claude Co
68
68
 
69
69
  ### Install it yourself
70
70
 
71
- This runs OpenRig's install script from the `v0.6.14` release. It checks Node.js and npm, installs the latest published `@openrig/cli` with `npm install -g`, runs the Node.js and SQLite check, then runs `rig setup --dry-run` and `rig setup`. The first line prints that plan and changes nothing:
71
+ This runs OpenRig's install script from the `v0.7.0` release. It checks Node.js and npm, installs the latest published `@openrig/cli` with `npm install -g`, runs the Node.js and SQLite check, then runs `rig setup --dry-run` and `rig setup`. The first line prints that plan and changes nothing:
72
72
 
73
73
  ```bash
74
- curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.14/scripts/install.sh | sh -s -- --dry-run
75
- curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.14/scripts/install.sh | sh
74
+ curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.7.0/scripts/install.sh | sh -s -- --dry-run
75
+ curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.7.0/scripts/install.sh | sh
76
76
  ```
77
77
 
78
- If `rig setup` doesn't finish ready, for example because a provider isn't signed in yet, the script ends with `INSTALLED, SETUP NOT COMPLETE`: the CLI is installed, and `rig setup` lists what's left under "Some steps need attention". If the only items left are provider sign-ins, sign in to each selected provider as below and continue; run `rig setup` again rather than reinstalling the CLI.
78
+ If a provider isn't signed in yet, the last step reports `FAILED [4/4]`, and `rig setup` lists the sign-in under "Some steps need attention". If the only remaining failures are provider sign-ins, the install steps finished; sign in to each selected provider as below and continue.
79
79
 
80
80
  **Or step by step:**
81
81
 
@@ -106,10 +106,11 @@ to an unused provider.
106
106
  ### Your agent opens OpenRig for you
107
107
 
108
108
  After installing, your agent opens the OpenRig TUI and the operator for you. To get back to them later, ask your
109
- agent for OpenRig or your agents in any words. After checking the selected login, it runs:
109
+ agent for OpenRig or your agents in any words. After checking the selected login, it starts the daemon if it's stopped
110
+ and opens the view:
110
111
 
111
112
  ```sh
112
- rig daemon start # if stopped
113
+ rig daemon start
113
114
  rig terminal open saved:kernel --window
114
115
  ```
115
116
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openrig-core",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "OpenRig canonical skills and hooks for cross-runtime agent topology coordination, continuity, and operating discipline.",
5
5
  "author": {
6
6
  "name": "Mike Schwarz",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openrig-core",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "OpenRig canonical skills and hooks for cross-runtime agent topology coordination, continuity, and operating discipline.",
5
5
  "author": {
6
6
  "name": "Mike Schwarz",
@@ -41,14 +41,21 @@ This plugin ships dual-manifest packaging — both `.claude-plugin/` and `.codex
41
41
  `CLAUDE_PROJECT_DIR` doesn't follow a `cd`. A Claude started in the seat's own project folder is the same project and
42
42
  still acts as the seat. A seat launched before this change has no `OPENRIG_SEAT_PROJECT_DIR` until its next launch, restore
43
43
  or handover, and behaves as before until then.
44
- - **Codex CLI** — Codex has no directory option for plugins, so it does not load this plugin. A Codex seat gets only the hooks
45
- the daemon writes into Codex's `config.toml` (the activity relay); `hooks/codex.json` is not read.
44
+ - **Codex CLI** — OpenRig installs the plugin automatically when a Codex seat selects it and hooks are enabled.
45
+ On the first installation, it trusts only the six exact shipped hook definitions, after checking installed hook files
46
+ and scripts against the daemon's packaged copy. Existing plugin disables and hook choices remain in place across
47
+ restart and upgrade. An existing untrusted plugin stays under native review: Codex does not persist "continue without
48
+ trusting", so an absent trust record on an existing installation is not treated as permission.
49
+ - **One activity producer:** the four managed inline hooks report Codex activity; the plugin's activity entries are
50
+ no-ops. The plugin supplies refocus and skills. Disabling an inline activity hook is not bypassed by the plugin.
51
+ - **Seat scope:** the commands require both `OPENRIG_SEAT_PROJECT_DIR` and the executable `OPENRIG_NODE`. Personal and
52
+ unselected sessions are no-ops. A nested Codex inheriting those seat variables still acts as that seat.
46
53
 
47
54
  Generated Claude settings commands for the activity relay and context collector use the daemon's absolute Node
48
55
  executable when its name is recognized (`node` or `node.exe`); other names keep the legacy bare `node` command and
49
56
  its PATH requirement. Pinned commands do not require Node on the Claude process's inherited PATH. The executable must
50
- remain installed; removing or moving it requires normal command refresh from a healthy runtime. This does not change the static plugin
51
- manifest commands, which still use `node`, or prove that an already-running Claude reloaded changed settings.
57
+ remain installed; removing or moving it requires normal command refresh from a healthy runtime. This does not change the Claude plugin
58
+ manifest's commands, which still use `node` (the Codex manifest's run `$OPENRIG_NODE`, above), or prove that an already-running Claude reloaded changed settings.
52
59
 
53
60
  One skill targets Claude Code's compaction behavior specifically:
54
61
  - `claude-compaction-restore` — used to rebuild a Claude Code agent's working mental model after `/compact`, from JSONL transcripts and touched files
@@ -5,7 +5,7 @@
5
5
  "hooks": [
6
6
  {
7
7
  "type": "command",
8
- "command": "node \"${PLUGIN_ROOT}/hooks/scripts/activity-relay.cjs\"",
8
+ "command": "test -n \"$OPENRIG_SEAT_PROJECT_DIR\" && test -f \"$OPENRIG_NODE\" && test -x \"$OPENRIG_NODE\" || exit 0; exec \"$OPENRIG_NODE\" \"${PLUGIN_ROOT}/hooks/scripts/activity-relay.cjs\" --from-plugin",
9
9
  "timeout": 5
10
10
  }
11
11
  ]
@@ -16,7 +16,7 @@
16
16
  "hooks": [
17
17
  {
18
18
  "type": "command",
19
- "command": "node \"${PLUGIN_ROOT}/hooks/scripts/activity-relay.cjs\"",
19
+ "command": "test -n \"$OPENRIG_SEAT_PROJECT_DIR\" && test -f \"$OPENRIG_NODE\" && test -x \"$OPENRIG_NODE\" || exit 0; exec \"$OPENRIG_NODE\" \"${PLUGIN_ROOT}/hooks/scripts/activity-relay.cjs\" --from-plugin",
20
20
  "timeout": 5
21
21
  }
22
22
  ]
@@ -25,7 +25,7 @@
25
25
  "hooks": [
26
26
  {
27
27
  "type": "command",
28
- "command": "node \"${PLUGIN_ROOT}/hooks/scripts/refocus.cjs\" --runtime codex",
28
+ "command": "test -n \"$OPENRIG_SEAT_PROJECT_DIR\" && test -f \"$OPENRIG_NODE\" && test -x \"$OPENRIG_NODE\" || exit 0; exec \"$OPENRIG_NODE\" \"${PLUGIN_ROOT}/hooks/scripts/refocus.cjs\" --runtime codex",
29
29
  "timeout": 60
30
30
  }
31
31
  ]
@@ -36,7 +36,7 @@
36
36
  "hooks": [
37
37
  {
38
38
  "type": "command",
39
- "command": "node \"${PLUGIN_ROOT}/hooks/scripts/activity-relay.cjs\"",
39
+ "command": "test -n \"$OPENRIG_SEAT_PROJECT_DIR\" && test -f \"$OPENRIG_NODE\" && test -x \"$OPENRIG_NODE\" || exit 0; exec \"$OPENRIG_NODE\" \"${PLUGIN_ROOT}/hooks/scripts/activity-relay.cjs\" --from-plugin",
40
40
  "timeout": 5
41
41
  }
42
42
  ]
@@ -47,7 +47,7 @@
47
47
  "hooks": [
48
48
  {
49
49
  "type": "command",
50
- "command": "node \"${PLUGIN_ROOT}/hooks/scripts/refocus.cjs\" --runtime codex",
50
+ "command": "test -n \"$OPENRIG_SEAT_PROJECT_DIR\" && test -f \"$OPENRIG_NODE\" && test -x \"$OPENRIG_NODE\" || exit 0; exec \"$OPENRIG_NODE\" \"${PLUGIN_ROOT}/hooks/scripts/refocus.cjs\" --runtime codex",
51
51
  "timeout": 60
52
52
  }
53
53
  ]
@@ -58,7 +58,7 @@
58
58
  "hooks": [
59
59
  {
60
60
  "type": "command",
61
- "command": "node \"${PLUGIN_ROOT}/hooks/scripts/activity-relay.cjs\"",
61
+ "command": "test -n \"$OPENRIG_SEAT_PROJECT_DIR\" && test -f \"$OPENRIG_NODE\" && test -x \"$OPENRIG_NODE\" || exit 0; exec \"$OPENRIG_NODE\" \"${PLUGIN_ROOT}/hooks/scripts/activity-relay.cjs\" --from-plugin",
62
62
  "timeout": 5
63
63
  }
64
64
  ]
@@ -46,7 +46,9 @@ function firstString(...values) {
46
46
  return null;
47
47
  }
48
48
 
49
- function buildOpenRigPayload(providerPayload, env = process.env, now = () => new Date()) {
49
+ // The route this run reports by, so the daemon can count one event once per route: "plugin" for the plugin's hook
50
+ // (started with --from-plugin), "managed" for the settings or managed hook copy.
51
+ function buildOpenRigPayload(providerPayload, env = process.env, now = () => new Date(), argv = process.argv) {
50
52
  const sessionName = firstString(env.OPENRIG_SESSION_NAME, env.RIGGED_SESSION_NAME);
51
53
  const nodeId = firstString(env.OPENRIG_NODE_ID, env.RIGGED_NODE_ID);
52
54
  const runtime = firstString(env.OPENRIG_RUNTIME, env.RIGGED_RUNTIME);
@@ -80,6 +82,7 @@ function buildOpenRigPayload(providerPayload, env = process.env, now = () => new
80
82
  subtype,
81
83
  turnId: firstString(providerPayload.turn_id, providerPayload.turnId),
82
84
  occurredAt: now().toISOString(),
85
+ relayRoute: argv.includes("--from-plugin") ? "plugin" : "managed",
83
86
  };
84
87
  }
85
88
 
@@ -170,6 +173,10 @@ function buildSessionIdentityPayload(providerPayload, env = process.env, now = (
170
173
 
171
174
  if ((!sessionName && !nodeId) || !runtime) return null;
172
175
 
176
+ // #1524 (a): whether the runtime sent transcript_path, and its raw value. Codex sends an explicit null for a
177
+ // thread it never persists; the daemon tells that apart from an absent key, an empty string or a malformed value.
178
+ const transcriptPathPresent = Object.prototype.hasOwnProperty.call(providerPayload, "transcript_path");
179
+
173
180
  return {
174
181
  eventFamily: "session_identity",
175
182
  sessionName,
@@ -182,6 +189,8 @@ function buildSessionIdentityPayload(providerPayload, env = process.env, now = (
182
189
  // The daemon finds the Claude that ran this hook from its parent chain.
183
190
  hookPid: process.pid,
184
191
  sessionId,
192
+ transcriptPathPresent,
193
+ ...(transcriptPathPresent ? { transcriptPath: providerPayload.transcript_path } : {}),
185
194
  occurredAt: now().toISOString(),
186
195
  };
187
196
  }
@@ -268,6 +277,9 @@ function settingsRelayReports(hookEvent, providerPayload, env = process.env) {
268
277
  function pluginRunIsRedundant(providerPayload, argv = process.argv, env = process.env) {
269
278
  if (!argv.includes("--from-plugin")) return false;
270
279
  const hookEvent = firstString(providerPayload.hookEvent, providerPayload.hookEventName, providerPayload.hook_event_name, providerPayload.event, providerPayload.eventName);
280
+ // Codex activity has one producer: OpenRig's managed inline hooks. The plugin supplies refocus and skills, but its
281
+ // activity entries are no-ops. Do not infer merged native hook state here or bypass a person's inline-hook disable.
282
+ if (firstString(env.OPENRIG_RUNTIME, env.RIGGED_RUNTIME) === "codex") return true;
271
283
  return settingsRelayReports(hookEvent, providerPayload, env);
272
284
  }
273
285
 
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ // Codex's hook trust identity: the key and hash Codex records for a hook it has trusted.
4
+ //
5
+ // The recipe reproduces Codex's (codex-rs hooks/src/engine/discovery.rs hook_hash at rust-v0.163.0): the normalized
6
+ // identity { event_name: <snake_case label>, matcher?, hooks: [<normalized handler>] }, with absent fields dropped, keys
7
+ // sorted recursively, compact JSON, then "sha256:" + hex. The daemon's trust writer for its own managed activity hooks uses
8
+ // it (codex-runtime-adapter.ts, computeCodexHookTrust). It needs no packages.
9
+
10
+ const crypto = require("node:crypto");
11
+
12
+ const EVENT_LABELS = {
13
+ SessionStart: "session_start",
14
+ UserPromptSubmit: "user_prompt_submit",
15
+ Stop: "stop",
16
+ PostCompact: "post_compact",
17
+ PermissionRequest: "permission_request",
18
+ };
19
+
20
+ function sortKeys(value) {
21
+ if (Array.isArray(value)) return value.map(sortKeys);
22
+ if (value !== null && typeof value === "object") {
23
+ const out = {};
24
+ for (const key of Object.keys(value).sort()) out[key] = sortKeys(value[key]);
25
+ return out;
26
+ }
27
+ return value;
28
+ }
29
+
30
+ /** Codex's trust hash for one command handler, from every field Codex folds into it. */
31
+ function codexHookHash(eventLabel, handler) {
32
+ const normalized = { type: "command", command: handler.command, timeout: handler.timeoutSec, async: handler.async === true };
33
+ if (handler.statusMessage != null) normalized.statusMessage = handler.statusMessage;
34
+ if (handler.additionalContextLimit != null) normalized.additionalContextLimit = handler.additionalContextLimit;
35
+ const identity = { event_name: eventLabel, hooks: [normalized] };
36
+ if (handler.matcher != null) identity.matcher = handler.matcher;
37
+ const hex = crypto.createHash("sha256").update(JSON.stringify(sortKeys(identity)), "utf8").digest("hex");
38
+ return `sha256:${hex}`;
39
+ }
40
+
41
+ /** Codex's persisted trust key and hash for one hook, at its position in the config layer. */
42
+ function computeCodexHookTrust(event, input) {
43
+ const label = EVENT_LABELS[event];
44
+ if (!label) throw new Error(`no Codex hook label for ${event}`);
45
+ const key = `${input.keySource}:${label}:${input.groupIndex ?? 0}:${input.handlerIndex ?? 0}`;
46
+ return { key, hash: codexHookHash(label, input) };
47
+ }
48
+
49
+ module.exports = { EVENT_LABELS, codexHookHash, computeCodexHookTrust };
@@ -17,6 +17,8 @@ const DEFAULT_THRESHOLD = 2_600_000;
17
17
  const FALSE_VALUES = new Set(["0", "false", "off", "no"]);
18
18
  // The issue report after a failed attempt gets this long once the attempt's lookups are done.
19
19
  const REPORT_MS = 1_500;
20
+ // A failed attempt's reason, kept for the retry's label. The attempt's own TRACE GAP line keeps the full text.
21
+ const PENDING_FAILURE_MAX = 300;
20
22
  // The hook's time budget. Both registrations allow this hook 60 s (hooks/claude.json, hooks/codex.json). With no budget
21
23
  // selected, every lookup keeps its fixed 2 s cap exactly as before. OPENRIG_REFOCUS_BUDGET_MS selects a longer one, up
22
24
  // to 52 s: each lookup's cap then scales with it and every lookup is also clipped to what's left of it, so a slow lookup
@@ -286,15 +288,17 @@ function renderTrace() {
286
288
  timeout,
287
289
  maxBuffer: 16 * 1024 * 1024,
288
290
  });
289
- const reason = result.error?.message || result.stderr?.trim() || `trace exited ${result.status ?? "without a status"}`;
291
+ const reason = String(result.error?.message || result.stderr?.trim() || `trace exited ${result.status ?? "without a status"}`)
292
+ .replace(/\s+/g, " ").trim();
290
293
  const failed = Boolean(result.error) || result.status !== 0 || !result.stdout?.trim();
291
294
  const trace = [
292
- ...(failed ? [`TRACE GAP — ${String(reason).replace(/\s+/g, " ").trim()}`] : []),
295
+ ...(failed ? [`TRACE GAP — ${reason}`] : []),
293
296
  result.stdout?.trim(),
294
297
  ].filter(Boolean).join("\n");
295
298
  return {
296
299
  text: [trace, role].filter(Boolean).join("\n\n"),
297
300
  failed,
301
+ failure: failed ? `trace gap: ${reason}` : null,
298
302
  };
299
303
  }
300
304
 
@@ -334,8 +338,14 @@ function runsForThisSeatsProject(env = process.env) {
334
338
  const rawPrompt = typeof input.prompt === "string" ? input.prompt.trim() : "";
335
339
  // Claude can wrap a complete submitted message as pasted content. Unwrap only
336
340
  // that envelope; a peer quoting a restore request is still an ordinary prompt.
337
- const prompt = harness === "claude"
338
- ? (rawPrompt.match(/^<pasted_content id="([^"]+)">\s*([\s\S]*)\s*<\/pasted_content id="\1">$/)?.[2]?.trim() ?? rawPrompt)
341
+ // Check the delimiters separately: overlapping whitespace/wildcard matches can
342
+ // backtrack excessively on an incomplete paste or text after the closing tag.
343
+ const opening = harness === "claude" ? rawPrompt.match(/^<pasted_content id="([^"]+)">/) : null;
344
+ const closing = opening ? `</pasted_content id="${opening[1]}">` : "";
345
+ const prompt = opening
346
+ && rawPrompt.length >= opening[0].length + closing.length
347
+ && rawPrompt.endsWith(closing)
348
+ ? rawPrompt.slice(opening[0].length, -closing.length).trim()
339
349
  : rawPrompt;
340
350
  if (event === "UserPromptSubmit" && prompt.startsWith("OpenRig post-compaction turn boundary.")) process.exit(0);
341
351
 
@@ -429,6 +439,7 @@ function runsForThisSeatsProject(env = process.env) {
429
439
  if (state.pendingOn !== "PostCompact") {
430
440
  delete state.pendingOn;
431
441
  delete state.pendingAt;
442
+ delete state.pendingFailure;
432
443
  }
433
444
  state.lastReset = { at: new Date().toISOString(), fromBytes: Number(state.lastBytes || 0), toBytes: size };
434
445
  state.lastBytes = size;
@@ -463,6 +474,8 @@ function runsForThisSeatsProject(env = process.env) {
463
474
  if (state.managedRestorePending) state.managedRestorePendingAt = new Date().toISOString();
464
475
  else delete state.managedRestorePendingAt;
465
476
  }
477
+ // A new compaction is a fresh obligation, not a retry of the refocus before it.
478
+ if (event === "PostCompact") delete state.pendingFailure;
466
479
  if (event === "PostCompact" || !state.pendingOn) state.pendingOn = event;
467
480
  state.pendingAt ||= new Date().toISOString();
468
481
  persist();
@@ -487,10 +500,13 @@ function runsForThisSeatsProject(env = process.env) {
487
500
  const trace = rendered.text;
488
501
  const configured = readConfiguredContent(home);
489
502
  const failed = rendered.failed || Boolean(configured.failure);
503
+ // A post-compaction refocus still pending after a failed attempt is a retry of it, not a second compaction.
490
504
  const why = onDemand
491
505
  ? "on demand"
492
506
  : state.pendingOn === "PostCompact"
493
- ? "just compacted — your picture is lossy"
507
+ ? state.pendingFailure
508
+ ? `retrying the post-compaction refocus; the last attempt failed: ${state.pendingFailure}`
509
+ : "just compacted — your picture is lossy"
494
510
  : `${Math.round(grown / 1e6 * 10) / 10}MB of work since your last refocus`;
495
511
 
496
512
  const body = configured.failure
@@ -541,6 +557,10 @@ function runsForThisSeatsProject(env = process.env) {
541
557
  if (failed || error) {
542
558
  state.pendingOn ||= event;
543
559
  state.pendingAt ||= new Date().toISOString();
560
+ const failure = rendered.failure
561
+ || (configured.failure ? `content ref ${configured.contentRef}: ${configured.failure}` : null)
562
+ || `the refocus could not be written: ${String(error?.message ?? error).replace(/\s+/g, " ").trim()}`;
563
+ state.pendingFailure = failure.length > PENDING_FAILURE_MAX ? `${failure.slice(0, PENDING_FAILURE_MAX - 1)}…` : failure;
544
564
  persist();
545
565
  return;
546
566
  }
@@ -549,6 +569,7 @@ function runsForThisSeatsProject(env = process.env) {
549
569
  state.firedOn = event;
550
570
  delete state.pendingOn;
551
571
  delete state.pendingAt;
572
+ delete state.pendingFailure;
552
573
  persist();
553
574
  });
554
575
  })();
@@ -221,12 +221,19 @@ The audit message asks for a read-depth table and tells you not to conserve toke
221
221
 
222
222
  The next restore map links this note, which keeps the chain unbroken.
223
223
 
224
+ ## Then resume
225
+
226
+ Resume the outcome selected by the user's current instructions, standing duties and assigned work. Use existing
227
+ task records, decisions and your recap to recover the next useful action, remaining constraints and evidence
228
+ already earned. Check uncertain effects before replaying work. Available skills and historical suggestions do not
229
+ by themselves widen scope or create required stages. Use authorized skills, subagents, peer help and useful tests
230
+ within your remit without another permission request. Route a missing decision to its existing owner and continue
231
+ unaffected work.
232
+
224
233
  ## Guardrails
225
234
 
226
235
  - Compaction is survival, not housekeeping. Compact only when a seat is genuinely near its limit, never to
227
236
  "lean" a seat or prepare a starter image; a compacted seat can sound confident while missing the context it needs.
228
- - Continue from the map and the files, not from the summary's "next step" alone: a hold placed after the
229
- summary was written still binds.
230
237
  - Do not launch a fresh session in place of restoring.
231
238
  - An honest `PARTIAL` with its reason is a correct outcome. Claiming coverage you did not reach is the
232
239
  failure.
@@ -242,8 +242,9 @@ If you're booting into a new seat in an OpenRig rig:
242
242
  4. **Check what skills you have** — list `.claude/skills/` or
243
243
  `.agents/skills/` in your cwd. Each skill has a frontmatter description
244
244
  that tells you when to reach for it.
245
- 5. **Check your peers** — `rig capture <peer-session>` to see what they're
246
- doing.
245
+ 5. **Check your peers** — `rig ps --nodes` and the queue first (who is up,
246
+ who holds what). Capture a peer (`rig capture <peer-session>`) only when
247
+ you actually need to see its screen.
247
248
  6. **Check the transcripts** if you're returning to an in-flight workstream
248
249
  — `rig transcript <session> --tail 100` for recent context.
249
250
  7. **Ask `rig ask <rig> "<question>"`** if you need cross-cutting evidence
@@ -5,6 +5,8 @@ metadata:
5
5
  cli_surfaces_referenced:
6
6
  - gateway human list
7
7
  - gateway human show
8
+ - gateway human mode room
9
+ - gateway human mode decide
8
10
  - queue create
9
11
  - queue transitions
10
12
  - queue block
@@ -69,6 +71,28 @@ rig queue create --destination <entityId>@external \
69
71
  --evidence-ref <durable-evidence> --verify --json
70
72
  ```
71
73
 
74
+ Before asking a **decision**, check whether the person has a mode on with a
75
+ decision room: what they said the team may decide for them meanwhile.
76
+
77
+ ```bash
78
+ rig gateway human mode room <entityId>
79
+ ```
80
+
81
+ If it names a room and your decision is plainly inside their words (and none of
82
+ their exclusions), decide instead of waiting. Create the ask as above, then
83
+ record your choice on it straight away:
84
+
85
+ ```bash
86
+ rig gateway human mode decide <qitem-id> --application <applicationId> \
87
+ --choose <question>=<option> --reason "<why>" --reversible # or --irreversible
88
+ ```
89
+
90
+ It's recorded as decided on their behalf, never as their answer, the ask
91
+ closes, and it's in their account when they're back. Say honestly whether it
92
+ can be undone. A permission prompt or an approval is never decided this way.
93
+ With no room, a room that doesn't plainly cover it, or any doubt, ask and wait;
94
+ a recommended option is not a decision.
95
+
72
96
  An optional `--human-detail-file <path>` supplies one coherent supplemental
73
97
  reply in the same thread. Announce its purpose in the brief; the product also
74
98
  marks that a detail reply follows. The primary must already contain the complete
@@ -91,7 +91,7 @@ These ship in the OpenRig repo and reach a seat when its profile selects them. T
91
91
  Pod handbooks (load when you're in that pod):
92
92
  - **orchestration-team** — you're orchestrating a rig: dispatching, monitoring, keeping the loop moving.
93
93
  - **development-team** — you're on the dev pod: building and shipping product changes.
94
- - **review-team** — you're reviewing: fresh scrutiny, anti-slop, empirical verification.
94
+ - **review-team** — you're reviewing: fresh scrutiny, anti-slop, grounded findings.
95
95
  - **oversight-team** — you're in an oversight pod: monitor boundaries and route findings without taking over the work.
96
96
 
97
97
  Product-management craft (load when shaping/reviewing work):
@@ -106,7 +106,7 @@ Product-management craft (load when shaping/reviewing work):
106
106
  ### Vendored craft — load when you're coding (ships with upstream provenance)
107
107
  General engineering skills OpenRig ships as vendored copies. Open when the task matches; they carry "modified by OpenRig" provenance.
108
108
 
109
- - **verification-before-completion** — about to claim done / passing / fixed: run the check and read the output first.
109
+ - **verification-before-completion** — about to claim done / passing / fixed: have evidence that applies to the candidate you name first.
110
110
  - **systematic-debugging** — debugging: find the root cause before the fix.
111
111
  - **agent-browser** — driving a browser (screenshot / screencast) from an agent.
112
112
  - **frontend-design** — designing frontend / UI.
@@ -90,6 +90,23 @@ rig queue handoff <qitem-id> \
90
90
  --body-file /tmp/import-report-handoff.md
91
91
  ```
92
92
 
93
+ ### After a queue write — use the response; read back only when it doesn't show what you need
94
+
95
+ A queue write (`create`, `claim`, `update`, `handoff`, `handoff-and-complete`) answers with the row it wrote; a
96
+ handoff answers with the closed row and its successor. When that answer shows what you need to establish, use it.
97
+ Read back (`rig queue show <id> --full --json`, or `rig queue transitions <id>`) when it doesn't, for example:
98
+
99
+ - the outcome was INDETERMINATE (a transport failure, or a 502 `remote_queue_write_failed`), or the write warned
100
+ `qitem_body_not_saved` (an existing row came back). Reconcile by the original ID before any retry;
101
+ - the output was compact or truncated and the field you need isn't in it (the compact receipt shows `bodyBytes`, not
102
+ the body, and its footer names what it left out);
103
+ - you need a transition note, a closure or blocker detail, or a successor that the output you saw omits;
104
+ - you need evidence from downstream of the write: the recipient's wake (`create --verify` waits for it), or its
105
+ pickup or claim (a later read);
106
+ - your team's custody rule asks for a separate read-back.
107
+
108
+ Don't read back only to see again a field the response already showed you.
109
+
93
110
  ### §1b doctrine — turn ends by passing the ball
94
111
 
95
112
  **A turn ends by passing the ball, never by going idle holding the slice waiting
@@ -956,12 +973,7 @@ rig auth seats … --runtime codex # seat -> profile registry (metadata
956
973
 
957
974
  ### Manage subscriptions across a fleet (when the person asks you to)
958
975
 
959
- **This applies only when both hold:**
960
- - the daemon's `provider.subscription_moves` setting is on. It's off by default; the person turns it on with
961
- `rig config set provider.subscription_moves true`;
962
- - the person has asked you to manage their subscriptions.
963
-
964
- Otherwise, don't take this job on. Installing or upgrading OpenRig appoints no agent, launches no bundle and starts no
976
+ **This applies only when the person has asked you to manage their subscriptions.** Otherwise, don't take this job on. Installing or upgrading OpenRig appoints no agent, launches no bundle and starts no
965
977
  rotation.
966
978
 
967
979
  When a person runs several Claude and Codex subscriptions across machines, the fleet studio bundle's one agent is meant
@@ -969,19 +981,19 @@ to keep work running, through the Fleet app. Until that bundle is available, the
969
981
  subscriptions can use this section. If that's you, you decide which subscription or home moves, and when. You decide
970
982
  from:
971
983
  - the usage and assignment readings, and their freshness;
972
- - the move record;
984
+ - your earlier move reports;
973
985
  - the person's standing preferences.
974
986
 
975
987
  You say why, and you see the outcome through. OpenRig gives you the facts and the tools; it never decides for you,
976
988
  and there's no threshold to obey.
977
989
 
978
990
  **Who decides:**
979
- - **The person's operator agent** can ask you for a move, or look at the record. It doesn't make competing moves of
991
+ - **The person's operator agent** can ask you for a move, or ask what you've moved. It doesn't make competing moves of
980
992
  its own.
981
993
  - **One agent manages subscriptions:** the one the person asked, or the fleet studio's agent once that bundle is
982
994
  available. There's no other fleet-manager role and no automatic manager. Use the commands below directly; no extra
983
995
  hand-off is needed.
984
- - **The Observatory is optional:** it can show your moves and readings, but you don't need it to rotate.
996
+ - **The Observatory is optional:** it can show readings, but you don't need it to rotate.
985
997
 
986
998
  **The unit is a Codex home, with every seat on it.** Moving some seats on a shared home to a different account, and
987
999
  moving Claude seats, aren't supported moves yet: say so instead of improvising.
@@ -1013,8 +1025,7 @@ moving Claude seats, aren't supported moves yet: say so instead of improvising.
1013
1025
  --expect-account <the target's Account line>`. `--verify` only checks; it never restarts. Only that check
1014
1026
  reports `moved`, and anything less is unconfirmed.
1015
1027
  - **A slow reply isn't a failure:** never restart a seat a second time. Follow up at your next look.
1016
- 5. **Record every move, partial or unconfirmed included,** with `rig provider moves record --file <move.json>`
1017
- (`--help` shows the shape):
1028
+ 5. **Report every move, partial or unconfirmed included,** to whoever asked for it (a queue item to their seat):
1018
1029
  - the home and machine;
1019
1030
  - from and to, as labels;
1020
1031
  - your reason;
@@ -1022,10 +1033,8 @@ moving Claude seats, aren't supported moves yet: say so instead of improvising.
1022
1033
  - each seat's result (`moved`, `unconfirmed` or `unknown`) with its evidence or what's missing;
1023
1034
  - the peers, for example "not restarted; account unverified".
1024
1035
 
1025
- A seat marked `moved` needs its `evidence`, and an `unconfirmed` or `unknown` one needs what's `missing`. A home
1026
- switched with every seat left as a peer is still a move to record, with `seats: []`. A follow-up that confirms an
1027
- earlier unconfirmed seat records a new move with `supersedes`. Asked "why did this
1028
- seat move?", answer from `rig provider moves --seat <seat>`. Never put credentials in a record.
1036
+ A home switched with every seat left as a peer is still a move to report. A follow-up that confirms an earlier
1037
+ unconfirmed seat says which report it follows. Never put credentials in a report.
1029
1038
  6. **When a sign-in is needed:**
1030
1039
  - Ask the person once, durably: a queue item to their seat, naming the machine and the subscription.
1031
1040
  - Move nothing onto that subscription until it's done.
@@ -1393,9 +1402,10 @@ or `rig add` (one member) when a seat needs an explicit model, a permission poli
1393
1402
  different agent spec or role profile, per-seat runtime or cwd, or startup files.
1394
1403
 
1395
1404
  Node-granular managed partial restore (v0.3.4+):
1396
- - `rig launch <rig> <nodeRef>` relaunches a single seat by logical id or node id through orchestration. `<rig>` is the
1397
- rig's name or ID; a name shared by more than one active rig stops with the candidate IDs.
1398
- - `rig launch <rig> --seats <a,b,c>` relaunches a comma-separated subset of seats.
1405
+ - `rig launch <rig> <nodeRef>` launches a single seat that isn't running, by logical id or node id, through orchestration.
1406
+ `<rig>` is the rig's name or ID; a name shared by more than one active rig stops with the candidate IDs. A seat that's
1407
+ already running is left as it is; for a fresh occupant there, use `rig seat launch <seat> --fresh --stop --reason <why>`.
1408
+ - `rig launch <rig> --seats <a,b,c>` launches a comma-separated subset of seats.
1399
1409
  - `--hold-reason <text>` records a reason for holding non-target seats during the partial launch.
1400
1410
  - This is a SUPPORTED managed path. The prior `pod_aware_launch_unsupported` dead-end is retired; pod-aware narrow launch now goes through this surface rather than ad-hoc rebuilds.
1401
1411
 
@@ -29,8 +29,9 @@ without an owner.
29
29
  with the rig appearing dormant.
30
30
  - **Finishing a slice that has a clear next step.** Default-nudge:
31
31
  receiver gets a wake-ping plus the durable queue item.
32
- - **Blocked on another agent's work.** Park the qitem with
33
- `closure_reason: blocked_on` and the blocker qitem id.
32
+ - **Blocked on another agent's work.** Use `rig queue block <id> --on <child>`
33
+ (or `rig queue update <id> --state blocked --blocked-on <child>`). The item
34
+ stays active and returns to pending when its blocker completes.
34
35
  - **Escalating to the human.** Make the escalation a durable attention
35
36
  item, not just a chat message.
36
37
 
@@ -53,16 +54,20 @@ human. The qitem state machine enforces this:
53
54
  `pending → in-progress → done` requires `closure_reason` from one of:
54
55
 
55
56
  - `handed_off_to` — work continues at a different seat (target = new owner)
56
- - `blocked_on` — parked pending another qitem (target = blocker qitem id)
57
57
  - `denied` — receiver rejected the work
58
58
  - `canceled` — sender or receiver withdrew
59
59
  - `no-follow-on` — terminal completion, nothing else needed
60
60
  - `escalation` — kicked up to a higher tier (target = escalation target)
61
+ - `superseded` — replaced by another qitem (target = successor qitem id)
61
62
 
62
- Three of those (`handed_off_to`, `blocked_on`, `escalation`) additionally
63
+ Two of those (`handed_off_to`, `escalation`) additionally
63
64
  require `closure_target`. The daemon enforces this at the domain layer;
64
65
  every surface (CLI, MCP, future UI) inherits the same guarantee.
65
66
 
67
+ `done` is terminal. `closure_reason: blocked_on` is valid only on an active
68
+ `state=blocked` park record, as used by workflow writers; combining it with
69
+ `state=done` is rejected. Use the block command above to wait on another qitem.
70
+
66
71
  **The drafted-park failure (draft ≠ throw).** The rule is about the *actual* pass, not the
67
72
  intention to pass. A turn that ends with a self-instruction **typed into your own prompt but left
68
73
  unsent** — a drafted go-ahead, a next-atom note you never sent — has **not** handed off; it has
@@ -120,6 +125,7 @@ inverted the default-nudge polarity.
120
125
  - **Scope tags `project:<id>`, `mission:<id>`, `slice:<id>`** on project work, set when you create the row (`--tags`; `create` also takes `--mission` and `--slice`). Tags can't be edited afterwards. A handoff keeps the source row's tags unless you pass `--tags` or `--gate`, either of which replaces them; repeat the scope tags in `--tags` when you use `--gate`.
121
126
  - **Pass work on with `handoff-and-complete`.** It closes your row as done and records the next row as its successor in one step. A `create` followed by `update --state done --closure-reason handed_off_to` records no successor, and the stuck sweep raises a recovery item for it.
122
127
  - **Close what you hold.** A row you claimed ends in a handoff or an `update --state done --closure-reason …`; `rig queue overdue` lists claimed rows past their deadline.
128
+ - **Use the write's response.** Read the row back only when the response doesn't show what you need (an indeterminate outcome, a field the compact output left out, downstream wake or pickup, a team custody rule): openrig-user, "After a queue write".
123
129
  - **Brief for the model that will read it.** Before handing a peer open-ended work, check which model it runs: `delegating-work`, "Check what kind of agent you're handing it to".
124
130
 
125
131
  ## Queue-body hygiene (token + parse safety)