@openrig/cli 0.6.12 → 0.6.13

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 (432) hide show
  1. package/README.md +19 -12
  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 +9 -2
  5. package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +25 -9
  6. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +7 -4
  7. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +5 -0
  8. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +61 -16
  9. package/daemon/assets/skills/rigs/SKILL.md +8 -4
  10. package/daemon/context-packs/help/manifest.yaml +1 -1
  11. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  12. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +60 -12
  13. package/daemon/context-packs/reference/getting-started.md +44 -14
  14. package/daemon/context-packs/reference/manifest.yaml +1 -1
  15. package/daemon/context-packs/reference/rig-spec.md +5 -5
  16. package/daemon/context-packs/reference/whats-new.md +90 -163
  17. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +5 -0
  42. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +61 -16
  67. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  71. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  72. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  73. package/daemon/dist/adapters/claude-code-adapter.d.ts +9 -1
  74. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  75. package/daemon/dist/adapters/claude-code-adapter.js +110 -52
  76. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  77. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  78. package/daemon/dist/adapters/codex-runtime-adapter.js +47 -6
  79. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  80. package/daemon/dist/adapters/pi-resume.d.ts +1 -1
  81. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
  82. package/daemon/dist/adapters/pi-resume.js +4 -1
  83. package/daemon/dist/adapters/pi-resume.js.map +1 -1
  84. package/daemon/dist/adapters/pi-runner-protocol.d.ts +9 -0
  85. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  86. package/daemon/dist/adapters/pi-runner-protocol.js +16 -0
  87. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  88. package/daemon/dist/adapters/pi-runner.d.ts +5 -2
  89. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  90. package/daemon/dist/adapters/pi-runner.js +72 -15
  91. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  92. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
  93. package/daemon/dist/adapters/pi-runtime-adapter.js +2 -0
  94. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  95. package/daemon/dist/adapters/stub-compaction.d.ts +1 -0
  96. package/daemon/dist/adapters/stub-compaction.d.ts.map +1 -1
  97. package/daemon/dist/adapters/stub-compaction.js +2 -0
  98. package/daemon/dist/adapters/stub-compaction.js.map +1 -1
  99. package/daemon/dist/adapters/stub-refocus.d.ts +6 -0
  100. package/daemon/dist/adapters/stub-refocus.d.ts.map +1 -0
  101. package/daemon/dist/adapters/stub-refocus.js +22 -0
  102. package/daemon/dist/adapters/stub-refocus.js.map +1 -0
  103. package/daemon/dist/adapters/stub-runner.d.ts +6 -0
  104. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  105. package/daemon/dist/adapters/stub-runner.js +18 -1
  106. package/daemon/dist/adapters/stub-runner.js.map +1 -1
  107. package/daemon/dist/adapters/stub-script.d.ts +2 -2
  108. package/daemon/dist/adapters/stub-script.d.ts.map +1 -1
  109. package/daemon/dist/adapters/stub-script.js +2 -2
  110. package/daemon/dist/adapters/stub-script.js.map +1 -1
  111. package/daemon/dist/build-info.js +3 -3
  112. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  113. package/daemon/dist/db/all-migrations.js +2 -0
  114. package/daemon/dist/db/all-migrations.js.map +1 -1
  115. package/daemon/dist/db/migrations/117_provider_account_readings.d.ts +3 -0
  116. package/daemon/dist/db/migrations/117_provider_account_readings.d.ts.map +1 -0
  117. package/daemon/dist/db/migrations/117_provider_account_readings.js +32 -0
  118. package/daemon/dist/db/migrations/117_provider_account_readings.js.map +1 -0
  119. package/daemon/dist/domain/claude-activity-hooks.d.ts +6 -0
  120. package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
  121. package/daemon/dist/domain/claude-activity-hooks.js +19 -1
  122. package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
  123. package/daemon/dist/domain/claude-core-plugin-env.d.ts +2 -0
  124. package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
  125. package/daemon/dist/domain/claude-core-plugin-env.js +6 -2
  126. package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
  127. package/daemon/dist/domain/claude-managed-launch.d.ts +5 -0
  128. package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
  129. package/daemon/dist/domain/claude-managed-launch.js +48 -7
  130. package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
  131. package/daemon/dist/domain/claude-mcp-menu.d.ts +5 -0
  132. package/daemon/dist/domain/claude-mcp-menu.d.ts.map +1 -0
  133. package/daemon/dist/domain/claude-mcp-menu.js +25 -0
  134. package/daemon/dist/domain/claude-mcp-menu.js.map +1 -0
  135. package/daemon/dist/domain/fresh-occupant-relation.d.ts +7 -0
  136. package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -1
  137. package/daemon/dist/domain/fresh-occupant-relation.js +44 -0
  138. package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -1
  139. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +14 -2
  140. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -1
  141. package/daemon/dist/domain/gateway/slack/channel-recovery.js +128 -89
  142. package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -1
  143. package/daemon/dist/domain/gateway/slack/inbound.d.ts +4 -0
  144. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  145. package/daemon/dist/domain/gateway/slack/inbound.js +5 -3
  146. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  147. package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts +24 -0
  148. package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts.map +1 -0
  149. package/daemon/dist/domain/gateway/slack/recovery-budget.js +18 -0
  150. package/daemon/dist/domain/gateway/slack/recovery-budget.js.map +1 -0
  151. package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts +104 -0
  152. package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts.map +1 -0
  153. package/daemon/dist/domain/gateway/slack/slack-recovery.js +236 -0
  154. package/daemon/dist/domain/gateway/slack/slack-recovery.js.map +1 -0
  155. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  156. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +29 -6
  157. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  158. package/daemon/dist/domain/gateway/slack/state-store.d.ts +34 -0
  159. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  160. package/daemon/dist/domain/gateway/slack/state-store.js +67 -0
  161. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  162. package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts +37 -0
  163. package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts.map +1 -0
  164. package/daemon/dist/domain/gateway/slack/thread-recovery.js +173 -0
  165. package/daemon/dist/domain/gateway/slack/thread-recovery.js.map +1 -0
  166. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +8 -0
  167. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  168. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  169. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  170. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +6 -1
  171. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  172. package/daemon/dist/domain/model-divergence/current-generation-record.js +4 -1
  173. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  174. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts +74 -0
  175. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts.map +1 -0
  176. package/daemon/dist/domain/model-divergence/current-model-reader.js +246 -0
  177. package/daemon/dist/domain/model-divergence/current-model-reader.js.map +1 -0
  178. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +18 -0
  179. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -1
  180. package/daemon/dist/domain/model-divergence/effective-model-readers.js +24 -8
  181. package/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -1
  182. package/daemon/dist/domain/native-process-lineage.d.ts +8 -1
  183. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  184. package/daemon/dist/domain/native-process-lineage.js +40 -26
  185. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  186. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  187. package/daemon/dist/domain/native-resume-probe.js +34 -8
  188. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  189. package/daemon/dist/domain/node-inventory.d.ts +1 -1
  190. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  191. package/daemon/dist/domain/node-inventory.js +84 -18
  192. package/daemon/dist/domain/node-inventory.js.map +1 -1
  193. package/daemon/dist/domain/process-census.d.ts +1 -1
  194. package/daemon/dist/domain/process-census.d.ts.map +1 -1
  195. package/daemon/dist/domain/process-table.d.ts +26 -0
  196. package/daemon/dist/domain/process-table.d.ts.map +1 -0
  197. package/daemon/dist/domain/process-table.js +185 -0
  198. package/daemon/dist/domain/process-table.js.map +1 -0
  199. package/daemon/dist/domain/profile-resolver.d.ts +8 -0
  200. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  201. package/daemon/dist/domain/profile-resolver.js +11 -0
  202. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  203. package/daemon/dist/domain/projection-planner.js +1 -1
  204. package/daemon/dist/domain/projection-planner.js.map +1 -1
  205. package/daemon/dist/domain/provider/claude-usage-windows.d.ts +3 -1
  206. package/daemon/dist/domain/provider/claude-usage-windows.d.ts.map +1 -1
  207. package/daemon/dist/domain/provider/claude-usage-windows.js +48 -3
  208. package/daemon/dist/domain/provider/claude-usage-windows.js.map +1 -1
  209. package/daemon/dist/domain/provider/codex-usage-reader.d.ts +4 -1
  210. package/daemon/dist/domain/provider/codex-usage-reader.d.ts.map +1 -1
  211. package/daemon/dist/domain/provider/codex-usage-reader.js +3 -0
  212. package/daemon/dist/domain/provider/codex-usage-reader.js.map +1 -1
  213. package/daemon/dist/domain/provider/codex-usage-windows.d.ts +3 -1
  214. package/daemon/dist/domain/provider/codex-usage-windows.d.ts.map +1 -1
  215. package/daemon/dist/domain/provider/codex-usage-windows.js +1 -0
  216. package/daemon/dist/domain/provider/codex-usage-windows.js.map +1 -1
  217. package/daemon/dist/domain/provider/provider-account-readings.d.ts +42 -0
  218. package/daemon/dist/domain/provider/provider-account-readings.d.ts.map +1 -0
  219. package/daemon/dist/domain/provider/provider-account-readings.js +132 -0
  220. package/daemon/dist/domain/provider/provider-account-readings.js.map +1 -0
  221. package/daemon/dist/domain/provider/provider-types.d.ts +29 -0
  222. package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -1
  223. package/daemon/dist/domain/provider/usage-across-hosts.d.ts.map +1 -1
  224. package/daemon/dist/domain/provider/usage-across-hosts.js +6 -0
  225. package/daemon/dist/domain/provider/usage-across-hosts.js.map +1 -1
  226. package/daemon/dist/domain/provider/usage-windows.d.ts +25 -0
  227. package/daemon/dist/domain/provider/usage-windows.d.ts.map +1 -1
  228. package/daemon/dist/domain/provider/usage-windows.js +100 -4
  229. package/daemon/dist/domain/provider/usage-windows.js.map +1 -1
  230. package/daemon/dist/domain/queue-repository.d.ts +23 -0
  231. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  232. package/daemon/dist/domain/queue-repository.js +59 -1
  233. package/daemon/dist/domain/queue-repository.js.map +1 -1
  234. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  235. package/daemon/dist/domain/queue-stuck-sweep.js +47 -4
  236. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  237. package/daemon/dist/domain/restore-check-service.d.ts +10 -0
  238. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  239. package/daemon/dist/domain/restore-check-service.js +73 -10
  240. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  241. package/daemon/dist/domain/restore-guidance.d.ts +6 -0
  242. package/daemon/dist/domain/restore-guidance.d.ts.map +1 -1
  243. package/daemon/dist/domain/restore-guidance.js +21 -5
  244. package/daemon/dist/domain/restore-guidance.js.map +1 -1
  245. package/daemon/dist/domain/restore-orchestrator.js +1 -1
  246. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  247. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  248. package/daemon/dist/domain/resume-metadata-refresher.js +6 -29
  249. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  250. package/daemon/dist/domain/rig-repository.d.ts +3 -0
  251. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  252. package/daemon/dist/domain/rig-repository.js +6 -0
  253. package/daemon/dist/domain/rig-repository.js.map +1 -1
  254. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  255. package/daemon/dist/domain/rigspec-instantiator.js +4 -2
  256. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  257. package/daemon/dist/domain/rigspec-preflight.d.ts +4 -0
  258. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  259. package/daemon/dist/domain/rigspec-preflight.js +12 -2
  260. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  261. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  262. package/daemon/dist/domain/rigspec-schema.js +11 -0
  263. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  264. package/daemon/dist/domain/runtime-adapter.d.ts +13 -0
  265. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  266. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  267. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  268. package/daemon/dist/domain/seat-attention-reconciler.js +15 -1
  269. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  270. package/daemon/dist/domain/seat-cwd-preparation.d.ts +22 -0
  271. package/daemon/dist/domain/seat-cwd-preparation.d.ts.map +1 -0
  272. package/daemon/dist/domain/seat-cwd-preparation.js +107 -0
  273. package/daemon/dist/domain/seat-cwd-preparation.js.map +1 -0
  274. package/daemon/dist/domain/seat-effort.d.ts +4 -3
  275. package/daemon/dist/domain/seat-effort.d.ts.map +1 -1
  276. package/daemon/dist/domain/seat-effort.js +21 -3
  277. package/daemon/dist/domain/seat-effort.js.map +1 -1
  278. package/daemon/dist/domain/seat-lifecycle-service.d.ts +36 -2
  279. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  280. package/daemon/dist/domain/seat-lifecycle-service.js +206 -15
  281. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  282. package/daemon/dist/domain/seat-restart-in-place.d.ts +14 -0
  283. package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -1
  284. package/daemon/dist/domain/seat-restart-in-place.js +59 -3
  285. package/daemon/dist/domain/seat-restart-in-place.js.map +1 -1
  286. package/daemon/dist/domain/seat-status-service.d.ts +2 -0
  287. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  288. package/daemon/dist/domain/seat-status-service.js +1 -0
  289. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  290. package/daemon/dist/domain/seat-structural-activity-service.d.ts +7 -1
  291. package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
  292. package/daemon/dist/domain/seat-structural-activity-service.js +9 -3
  293. package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
  294. package/daemon/dist/domain/session-name.d.ts +8 -0
  295. package/daemon/dist/domain/session-name.d.ts.map +1 -1
  296. package/daemon/dist/domain/session-name.js +12 -0
  297. package/daemon/dist/domain/session-name.js.map +1 -1
  298. package/daemon/dist/domain/session-transport.d.ts +78 -3
  299. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  300. package/daemon/dist/domain/session-transport.js +306 -15
  301. package/daemon/dist/domain/session-transport.js.map +1 -1
  302. package/daemon/dist/domain/successor-session-launcher.js +1 -1
  303. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  304. package/daemon/dist/domain/types.d.ts +14 -0
  305. package/daemon/dist/domain/types.d.ts.map +1 -1
  306. package/daemon/dist/domain/types.js.map +1 -1
  307. package/daemon/dist/domain/watchdog-delivery.d.ts +29 -0
  308. package/daemon/dist/domain/watchdog-delivery.d.ts.map +1 -0
  309. package/daemon/dist/domain/watchdog-delivery.js +113 -0
  310. package/daemon/dist/domain/watchdog-delivery.js.map +1 -0
  311. package/daemon/dist/domain/watchdog-policy-engine.d.ts +60 -1
  312. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  313. package/daemon/dist/domain/watchdog-policy-engine.js +154 -28
  314. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  315. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  316. package/daemon/dist/domain/watchdog-scheduler.js +6 -1
  317. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  318. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  319. package/daemon/dist/domain/workflow-instance-store.js +6 -2
  320. package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  321. package/daemon/dist/routes/attention.d.ts.map +1 -1
  322. package/daemon/dist/routes/attention.js +41 -1
  323. package/daemon/dist/routes/attention.js.map +1 -1
  324. package/daemon/dist/routes/compaction.js +1 -1
  325. package/daemon/dist/routes/compaction.js.map +1 -1
  326. package/daemon/dist/routes/queue.d.ts.map +1 -1
  327. package/daemon/dist/routes/queue.js +3 -1
  328. package/daemon/dist/routes/queue.js.map +1 -1
  329. package/daemon/dist/routes/restore-check.d.ts.map +1 -1
  330. package/daemon/dist/routes/restore-check.js +19 -1
  331. package/daemon/dist/routes/restore-check.js.map +1 -1
  332. package/daemon/dist/routes/seat.d.ts.map +1 -1
  333. package/daemon/dist/routes/seat.js +15 -2
  334. package/daemon/dist/routes/seat.js.map +1 -1
  335. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  336. package/daemon/dist/routes/sessions.js +7 -1
  337. package/daemon/dist/routes/sessions.js.map +1 -1
  338. package/daemon/dist/routes/transport.d.ts.map +1 -1
  339. package/daemon/dist/routes/transport.js +13 -2
  340. package/daemon/dist/routes/transport.js.map +1 -1
  341. package/daemon/dist/server.d.ts +1 -0
  342. package/daemon/dist/server.d.ts.map +1 -1
  343. package/daemon/dist/server.js +1 -0
  344. package/daemon/dist/server.js.map +1 -1
  345. package/daemon/dist/startup.d.ts.map +1 -1
  346. package/daemon/dist/startup.js +39 -113
  347. package/daemon/dist/startup.js.map +1 -1
  348. package/daemon/docs/reference/agent-spec.md +1 -1
  349. package/daemon/docs/reference/agent-startup-guide.md +84 -0
  350. package/daemon/docs/reference/getting-started.md +44 -14
  351. package/daemon/docs/reference/publishing-a-rig-bundle.md +5 -2
  352. package/daemon/docs/reference/refocus-channel.md +11 -1
  353. package/daemon/docs/reference/rig-spec.md +5 -5
  354. package/daemon/docs/reference/rosters.md +29 -2
  355. package/daemon/docs/reference/slack-app-setup.md +47 -17
  356. package/daemon/docs/reference/whats-new.md +90 -163
  357. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -0
  358. package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -0
  359. package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -0
  360. package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -0
  361. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -0
  362. package/daemon/specs/agents/design/product-designer/agent.yaml +1 -0
  363. package/daemon/specs/agents/development/implementer/agent.yaml +1 -0
  364. package/daemon/specs/agents/development/qa/agent.yaml +1 -0
  365. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -0
  366. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -0
  367. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -0
  368. package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
  369. package/daemon/specs/agents/research/analyst/agent.yaml +1 -0
  370. package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -0
  371. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -0
  372. package/dist/build-info.js +3 -3
  373. package/dist/commands/capture.d.ts.map +1 -1
  374. package/dist/commands/capture.js +14 -0
  375. package/dist/commands/capture.js.map +1 -1
  376. package/dist/commands/config.d.ts.map +1 -1
  377. package/dist/commands/config.js +3 -2
  378. package/dist/commands/config.js.map +1 -1
  379. package/dist/commands/doctor.d.ts.map +1 -1
  380. package/dist/commands/doctor.js +8 -7
  381. package/dist/commands/doctor.js.map +1 -1
  382. package/dist/commands/grow.d.ts.map +1 -1
  383. package/dist/commands/grow.js +24 -7
  384. package/dist/commands/grow.js.map +1 -1
  385. package/dist/commands/provider.d.ts.map +1 -1
  386. package/dist/commands/provider.js +43 -7
  387. package/dist/commands/provider.js.map +1 -1
  388. package/dist/commands/ps.d.ts +2 -0
  389. package/dist/commands/ps.d.ts.map +1 -1
  390. package/dist/commands/ps.js +12 -1
  391. package/dist/commands/ps.js.map +1 -1
  392. package/dist/commands/remove.d.ts.map +1 -1
  393. package/dist/commands/remove.js +20 -1
  394. package/dist/commands/remove.js.map +1 -1
  395. package/dist/commands/roster.d.ts +2 -1
  396. package/dist/commands/roster.d.ts.map +1 -1
  397. package/dist/commands/roster.js +10 -5
  398. package/dist/commands/roster.js.map +1 -1
  399. package/dist/commands/scope.js +1 -1
  400. package/dist/commands/scope.js.map +1 -1
  401. package/dist/commands/seat.d.ts.map +1 -1
  402. package/dist/commands/seat.js +75 -8
  403. package/dist/commands/seat.js.map +1 -1
  404. package/dist/commands/slack.d.ts.map +1 -1
  405. package/dist/commands/slack.js +14 -1
  406. package/dist/commands/slack.js.map +1 -1
  407. package/dist/commands/usage.d.ts.map +1 -1
  408. package/dist/commands/usage.js +4 -3
  409. package/dist/commands/usage.js.map +1 -1
  410. package/dist/lib/model-observation.d.ts +13 -0
  411. package/dist/lib/model-observation.d.ts.map +1 -0
  412. package/dist/lib/model-observation.js +25 -0
  413. package/dist/lib/model-observation.js.map +1 -0
  414. package/dist/mcp-server.d.ts.map +1 -1
  415. package/dist/mcp-server.js +1 -0
  416. package/dist/mcp-server.js.map +1 -1
  417. package/package.json +1 -1
  418. package/tui/dist/attention/attention-model.js +6 -5
  419. package/tui/dist/attention/attention-model.js.map +1 -1
  420. package/tui/dist/attention/source-continuity.d.ts.map +1 -1
  421. package/tui/dist/attention/source-continuity.js +2 -0
  422. package/tui/dist/attention/source-continuity.js.map +1 -1
  423. package/tui/dist/terminals/open-window.d.ts +11 -1
  424. package/tui/dist/terminals/open-window.d.ts.map +1 -1
  425. package/tui/dist/terminals/open-window.js +47 -2
  426. package/tui/dist/terminals/open-window.js.map +1 -1
  427. package/tui/dist/usage/usage-model.d.ts +2 -0
  428. package/tui/dist/usage/usage-model.d.ts.map +1 -1
  429. package/tui/dist/usage/usage-model.js +38 -3
  430. package/tui/dist/usage/usage-model.js.map +1 -1
  431. package/ui/dist/assets/{index-Cfbtfd9G.js → index-CVgod3Pm.js} +1 -1
  432. package/ui/dist/index.html +1 -1
@@ -15,12 +15,20 @@ operator in the OpenRig view.
15
15
 
16
16
  ## Before you start
17
17
 
18
- You need Node.js 22 or 24 and tmux, on macOS or Linux. On Linux, the
19
- distribution's own Node.js can be older (Ubuntu 24.04's is 18); install a
20
- supported version with [nvm](https://github.com/nvm-sh/nvm) (`nvm install 22`)
21
- or NodeSource. On a Mac with Apple
22
- silicon, use Node.js 22 (see the [compatibility
23
- history](../releases/v0.5.15.md#known-compatibility-limitation)). Native
18
+ You need Node.js 22 or 24 and tmux, on macOS or Linux, and one working Claude
19
+ Code or Codex account: one is enough, since the kernel operator adapts the
20
+ shipped `starter` team to whichever you have. On Linux, the distribution's own
21
+ Node.js can be older (Ubuntu 24.04's is 18); install a supported version with
22
+ [nvm](https://github.com/nvm-sh/nvm) (`nvm install 22`) or NodeSource. On a Mac
23
+ with Apple silicon, use Node.js 22 (see the [compatibility
24
+ history](../releases/v0.5.15.md#known-compatibility-limitation)). On a Mac where
25
+ you aren't an administrator, or where Homebrew belongs to another account (its
26
+ `brew install` is refused), install Node.js in your own home folder with
27
+ [nvm](https://github.com/nvm-sh/nvm): run `touch ~/.zshrc` (a new Mac account
28
+ 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
24
32
  Windows isn't supported. On Windows, use WSL2: it's the Windows route OpenRig
25
33
  supports, though OpenRig's automated tests don't run on it yet. One user's
26
34
  [working setup](#wsl2-a-reported-working-setup) is below. Node 20 and
@@ -123,19 +131,20 @@ You can also read [`skills/rigs/SKILL.md`](../../skills/rigs/SKILL.md) directly.
123
131
  script will do and changes nothing:
124
132
 
125
133
  ```sh
126
- curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.12/scripts/install.sh | sh -s -- --dry-run
134
+ curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.13/scripts/install.sh | sh -s -- --dry-run
127
135
  ```
128
136
 
129
137
  The same command without `--dry-run`,
130
- `curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.12/scripts/install.sh | sh`, installs the
138
+ `curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.13/scripts/install.sh | sh`, installs the
131
139
  latest published `@openrig/cli` with `npm install -g`,
132
140
  runs the Node.js and SQLite check, then `rig setup --dry-run` and `rig setup`. `rig setup` checks both Claude Code and
133
- Codex and may install a missing one, as described below. A failed step prints
134
- `FAILED [n/4] <command or check> (exit <code>)`. Where a provider isn't signed in yet, step 4 ends that way and
135
- `rig setup` lists each sign-in under "Some steps need attention". If the only remaining failures are provider
136
- sign-ins, the install steps finished: sign in to each selected provider as below, then continue at
137
- [Start the kernel](#start-the-kernel-and-check-its-state). To install only what the selected providers need, go step
138
- by step instead:
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:
139
148
 
140
149
  ### Choose your providers
141
150
 
@@ -249,6 +258,17 @@ same view and plan, or creates one if none matches, preserving its config and ex
249
258
  caller's Herdr endpoint must match the daemon's endpoint; a mismatch is reported
250
259
  without opening a window or putting the view in another session.
251
260
 
261
+ The shared TUI (`rig tui --shared`) runs in the daemon's tmux server, so its own environment never
262
+ carries the Herdr you are looking at; the markers are on the tmux client attached to it. When you
263
+ open a terminal view from it on Linux, the TUI passes the markers of the client that was active last
264
+ (normally the one that pressed the key) to the command, which then opens the view in that Herdr. The
265
+ chosen client may belong to a different viewer: tmux only counts keys a client types, so a key sent
266
+ by an agent (`send-keys`) or by a control-mode client doesn't count as any client's activity, and the
267
+ view opens in the Herdr of the interactive client that typed last, however long ago. With no client
268
+ attached, more than one client active in the same second, or a client that isn't in Herdr or can't be
269
+ read, nothing is passed and the result is what it was before. Other platforms, and every other way of
270
+ running `rig terminal open`, keep the previous result too.
271
+
252
272
  On Linux, a local graphical display and a supported hosting terminal are required
253
273
  (Ghostty, GNOME Terminal, Konsole or xterm). Linux reports a window request; verify
254
274
  what actually appeared. SSH, headless, CI and unsupported Linux hosts get a
@@ -544,6 +564,16 @@ views. If the provider cannot open, each labelled fallback command joins a diffe
544
564
  seat. Keep all returned commands
545
565
  complete when sharing them; a created workspace alone does not confirm visibility.
546
566
 
567
+ ### Built by the community
568
+
569
+ Tools built around OpenRig are maintained by their authors. We have not tested them;
570
+ this list does not promise support or compatibility with your OpenRig version.
571
+
572
+ - **[Rig HQ](https://github.com/dmelo/rig-hq)**, by [dmelo](https://github.com/dmelo):
573
+ a read-only pixel-office viewer for rigs, seats, attention and queue handoffs, as
574
+ described in the [author's introduction](https://github.com/mvschwarz/openrig/discussions/879).
575
+ The author reports testing it with OpenRig 0.6.5. See its repository for setup and support.
576
+
547
577
  ## Continue real project work
548
578
 
549
579
  Return to the same owner with the next outcome, citing the earlier result.
@@ -1,7 +1,7 @@
1
1
  # Reference guides the help pack links to, loaded one file or section at a time by address
2
2
  # (rig context get reference/<file>#<section>). Each file is a symlink to docs/reference/.
3
3
  name: reference
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: world
6
6
  purpose: "Version-matched reference guides the help guide links to. Load a single file or section by address; don't load the whole pack."
7
7
  files:
@@ -361,7 +361,7 @@ pods:
361
361
  **Where the declared names reach, by runtime.** Declared values are handed to the seat's terminal as tmux environment, so most seats take them as given:
362
362
 
363
363
  - Plain Claude Code (no permission mode selected), Codex and terminal seats take a spec `HOME`, `PATH` or `CLAUDE_CONFIG_DIR` as given.
364
- - The cleared environment (`env -i`) belongs only to a managed Claude launch, which is the one used when a permission mode is selected for the seat (for example `permission_policy: builtin:auto`). It forwards the declared names through the cleared environment, except `PATH`, `HOME` and `CLAUDE_CONFIG_DIR`, which OpenRig sets for that launch itself, and `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN`, for which it sets its own renderer setting. A spec value for any of those four is not forwarded. A seat that selected the shipped `openrig-core` plugin also has `CLAUDE_CODE_PLUGIN_DIRS` (the vendored plugin, added after a list the seat declares itself) among its declared names, so it is forwarded like the others and the plugin's hooks load in a seat with a permission mode as in one without; a seat that didn't select the plugin has no such name added.
364
+ - The cleared environment (`env -i`) belongs only to a managed Claude launch, which is the one used when a permission mode is selected for the seat (for example `permission_policy: builtin:auto`). It forwards the declared names through the cleared environment, except `PATH`, `HOME` and `CLAUDE_CONFIG_DIR`, which OpenRig sets for that launch itself, and `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN`, for which it sets its own renderer setting. A spec value for any of those four is not forwarded. A seat that selected the shipped `openrig-core` plugin also has `CLAUDE_CODE_PLUGIN_DIRS` (the vendored plugin, added after a list the seat declares itself) among its declared names, so it is forwarded like the others and the plugin's hooks load in a seat with a permission mode as in one without; a seat that didn't select the plugin has no such name added. Beyond the declared names, the launch also forwards, by name and only when the seat's terminal has them set, the terminal and locale variables (`TERM`, `COLORTERM`, `TERM_PROGRAM`, `TERM_PROGRAM_VERSION`, `LANG` and the `LC_*` names) and the person's editor and display session: `EDITOR`, `VISUAL`, `DISPLAY`, `XAUTHORITY` and `WAYLAND_DISPLAY`. They let Claude's external-editor action open the person's editor and let image paste reach the clipboard, without a value in a spec. `WAYLAND_DISPLAY` is passed as an absolute path: an absolute value is kept, and a relative one is joined to the terminal's `XDG_RUNTIME_DIR`; if the terminal has no `XDG_RUNTIME_DIR` for it, the name is left out. `XDG_RUNTIME_DIR` itself is not forwarded, because D-Bus clients look for the session bus at `$XDG_RUNTIME_DIR/bus` and would reach the keyring and `systemctl --user`. `DBUS_SESSION_BUS_ADDRESS`, `XDG_SESSION_TYPE`, `XDG_CURRENT_DESKTOP` and `SSH_AUTH_SOCK` are not forwarded either. A running seat picks the names up at its next managed Claude launch, not before: `rig seat launch <seat> --fresh --stop --reason "<why>"` for that seat alone (a new conversation), or a restore of the whole rig (`rig down <rig>`, then `rig up <rig> --existing`, which resumes each conversation but restarts every seat in the rig), or a handover. A seat that is up keeps the environment it started with.
365
365
  - Codex seats run OpenRig's own Codex executable whatever a spec `PATH` says, and use the daemon's `CODEX_HOME` when the daemon has one.
366
366
  - On Pi and OMP seats the values reach the terminal. The agent process gets only what the runner passes on, so a spec or one-off value reaches it only for the names the runner always passes: `PATH`, `HOME`, `USER`, `LOGNAME`, `TERM`, `LANG`, `LC_ALL`, `SHELL` and `TMPDIR`. Pi's agent process receives the runner's `HOME`, so a spec or one-off `HOME` value that reaches the runner is passed to Pi; OMP's agent process gets its seat state directory (`$OPENRIG_HOME/state/omp/<seat>`, see Oh My Pi below) as `HOME`, so a `HOME` value does not reach it. The selected provider's variables are passed separately, as described under each runtime.
367
367
 
@@ -436,10 +436,10 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
436
436
  | `profile` | string | yes | — | Profile name from the referenced AgentSpec. Use `default` for the default profile. Exception: `none` for terminal nodes. |
437
437
  | `codex_config_profile` | string | no | — | Codex-only native profile passed as `-p <name>`; letters, numbers, `_`, `.`, `-`. Separate from the AgentSpec `profile`. With the normal launch mode, this replaces OpenRig's explicit workspace-write sandbox flag. A full-bypass policy instead emits danger-full-access and omits this profile argument. |
438
438
  | `runtime` | string | yes | — | Agent runtime. Current supported values: `claude-code`, `codex`, `pi`, `omp`, `terminal`, `stub`. `stub` is a deterministic test harness, not an agent: a Node runner in the seat's tmux pane goes through the normal launch, skill projection, startup-file and readiness path, follows `<cwd>/.openrig/stub/script.json` when present, and calls no model. See "What a stub can and cannot prove" in `docs/as-built/test-layers.md`. |
439
- | `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec). If that path exists as written, it is used. Otherwise a leading `~` or `~/` expands to the home directory (`~user` does not) and `$VAR` / `${VAR}` expand from the daemon host's environment; a relative result still resolves against the rig root. A reference to an unset variable stays as written, so the cwd is that literal path and works only if it exists. Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. A cwd inside the OpenRig installation fails preflight unless `--cwd` is given. |
439
+ | `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec). If that path exists as written, it is used. Otherwise a leading `~` or `~/` expands to the home directory (`~user` does not) and `$VAR` / `${VAR}` expand from the daemon host's environment; a relative result still resolves against the rig root. A reference to an unset variable stays as written, so the cwd is that literal path and works only if it exists. Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. A cwd inside the OpenRig installation fails preflight unless `--cwd` is given. Editing this declaration does not update an existing seat; use [`rig seat set-cwd`](agent-startup-guide.md#change-an-existing-seats-working-directory) to save its future launch directory. |
440
440
  | `label` | string | no | — | Human-readable member name. Shown in UI when present. |
441
441
  | `model` | string | no | — | Model override. Runtime-specific (e.g., `claude-opus-4-6` for Claude Code). |
442
- | `effort` | string | no | — | Reasoning effort override, trimmed. A non-string value is ignored with an advisory. |
442
+ | `effort` | string | no | — | Reasoning effort override, trimmed. Claude gets `--effort`, Codex `-c model_reasoning_effort=…`, Pi `--thinking` (see "Pi" below). A non-string value is ignored with an advisory. |
443
443
  | `permission_policy` | string | no | — | Member-level permission policy; overrides the rig's. Not valid on terminal members. |
444
444
  | `env` | map | no | — | Launch environment for this seat, laid over the rig's `env`. Same rules as the rig-level field. Valid on terminal members too. See "Launch environment" below. |
445
445
  | `role` | string | no | — | The seat's role, letters, digits, `_`, `.` and `-`. Not valid on terminal members. |
@@ -455,7 +455,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
455
455
  `runtime: pi` launches the Pi coding agent (`pi --mode rpc`) through OpenRig's RPC runner.
456
456
 
457
457
  - **State:** Each seat uses `$OPENRIG_HOME/state/pi/<session>/agent` as its Pi agent directory, with `sessions/` beside it, instead of your default `~/.pi/agent`. The runner sets `PI_CODING_AGENT_DIR` to that directory. `<session>` is the seat's session name, unchanged; for a pod member it is `{podId}-{memberId}@{rigName}`. `$OPENRIG_HOME` defaults to `~/.openrig`. OpenRig creates these directories at launch and does not copy anything from `~/.pi/agent`.
458
- - **Thinking level:** OpenRig does not pass a node's `effort` to Pi. To set Pi's thinking level, add it to the model as a suffix, for example `model: openrouter/x-ai/grok-4:high`. Pi accepts `off`, `minimal`, `low`, `medium`, `high`, `xhigh` and `max`. Pi first looks for a model whose id is the whole pin, and uses it when there is one, suffix included. Only when there is none does Pi read the suffix as the level and record the model without it. Any other suffix, such as OpenRouter's `:free`, stays part of the model id. The model-divergence check reads the pin literally when the seat's `models.json` defines a model with that exact id; otherwise it accepts the model with or without the suffix. If the seat's `models.json` can't be read, a pin with a suffix stays unchecked, with the usual warning, when the recorded model matches the whole pin or the pin without its suffix. A record that matches neither is reported.
458
+ - **Thinking level:** A Pi seat's effort (the choice saved with `rig seat set-effort`, else the spec's `effort`) is sent to Pi as `--thinking <level>` on every managed launch and resume: fresh launch, successor and restore. Pi accepts `off`, `minimal`, `low`, `medium`, `high`, `xhigh` and `max`; OpenRig passes the value as written and does not translate it, so Codex's `none` is not mapped to `off`. Only a value of the shape `set-effort` accepts (a letter, then up to 31 letters, digits, `-` or `_`) is sent; any other spec value, such as one with a space or one that starts with `--`, is left out, and `rig seat effort` says so. An unfamiliar level gets an advisory (a warning from `set-effort`), never a refusal, and Pi itself ignores an unknown level with a warning and keeps the level it would use without the flag: a model suffix, the resumed session's level, or its default. With no effort resolved, no flag is sent. The effort wins over a model suffix, and the model string is never changed. `rig seat effort` reports the level sent at launch and, on Pi 0.99.0 or later, the `thinkingLevel` Pi records on this launch's latest successful assistant turn (error and aborted turns are skipped); that is the session's level after Pi's own cap, not proof the provider applied it, and it is shown apart from the level sent when they differ. On older Pi it is NOT VERIFIED. Without an effort, you can still set the level as a model suffix, for example `model: openrouter/x-ai/grok-4:high`. Pi first looks for a model whose id is the whole pin, and uses it when there is one, suffix included. Only when there is none does Pi read the suffix as the level and record the model without it. Any other suffix, such as OpenRouter's `:free`, stays part of the model id. The model-divergence check reads the pin literally when the seat's `models.json` defines a model with that exact id; otherwise it accepts the model with or without the suffix. If the seat's `models.json` can't be read, a pin with a suffix stays unchecked, with the usual warning, when the recorded model matches the whole pin or the pin without its suffix. A record that matches neither is reported.
459
459
  - **Custom models:** Pi reads `models.json` from its agent directory, so a seat reads `$OPENRIG_HOME/state/pi/<session>/agent/models.json`, not `~/.pi/agent/models.json`. Custom provider and model definitions for a seat go in that file. A seat that uses only providers Pi already includes does not need one. OpenRig does not create or write `models.json`.
460
460
  - **Credentials:** The Pi process receives only `PATH`, `HOME`, `USER`, `LOGNAME`, `TERM`, `LANG`, `LC_ALL`, `SHELL`, `TMPDIR`, a fixed set of OpenRig seat and instance variables, `PI_CODING_AGENT_DIR`, `PI_CODING_AGENT_SESSION_DIR`, and at most one provider key. That key is `OPENROUTER_API_KEY`, `ZAI_API_KEY`, `KIMI_API_KEY` or `MINIMAX_API_KEY`, passed only when it is set in the seat's environment and the seat's `model` is written as `openrouter/<id>`, `zai/<id>`, `kimi-coding/<id>` or `minimax/<id>`. Naming that variable in `recovery.provider_auth_env_allowlist` (empty by default) makes the daemon add it, when set in the daemon's environment, to the seat's launch environment. No other variable reaches Pi, including other providers' keys and a custom provider's own key variable.
461
461
 
@@ -466,7 +466,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
466
466
  - **State:** Each seat uses `$OPENRIG_HOME/state/omp/<seat>/agent` and `sessions/` instead of your default `~/.omp` profile, and runs with that seat directory as `HOME`. OpenRig does not copy OMP credentials. The runner finds the real `omp` binary before switching `HOME`, so a version-manager shim such as mise on the daemon's `PATH` still works.
467
467
  - **Credentials:** Provision each seat separately, or put the provider's key variable in `recovery.provider_auth_env_allowlist` (for example `ANTHROPIC_API_KEY` or `MISTRAL_API_KEY`). The allowlist accepts the key variable of every provider in OpenRig's OMP provider map, from `anthropic` through `litellm`. A seat receives a key only when its `model` is written as `provider/id`, such as `anthropic/claude-sonnet-4-5`. Short names such as `opus` pass no key. A provider whose key is scoped to one endpoint also accepts that endpoint's variable: `anthropic`, `openai` and `litellm` each take their `<PROVIDER>_BASE_URL` — `ANTHROPIC_BASE_URL`, `OPENAI_BASE_URL`, `LITELLM_BASE_URL`. The allowlist admits each variable on its own, so an endpoint named without its key is admitted too, which suits a keyless local proxy. The launch gate admits these endpoint names for OMP seats; the match against the seat's declared `provider/id` happens at the OMP child, which forwards a matching endpoint already in the runner's environment just as it forwards a key. OMP also reads the launch directory's `.env`, so use a trusted working directory.
468
468
  - **Approval posture:** The default floor is `--approval-mode always-ask`. Because the runner is headless, OMP approval requests are cancelled and the seat stays in needing-attention after the turn ends, until the next agent run starts. A `full_bypass` permission policy selects `--approval-mode yolo`.
469
- - **Model errors:** A rejected prompt, a provider or authentication error during a turn, or exhausted automatic retries is printed in the pane and keeps the seat in needing-attention until the next agent run starts.
469
+ - **Model errors:** Errors are printed in the pane. A completed assistant failure with a numeric `errorStatus` of 408, 429, 500, 502, 503, 504, or 529 returns to idle at terminal `agent_end`, allowing an ordinary retry. Until that terminal boundary it stays in needing-attention. Intermediate `agent_end(isTerminal:false)` events do not release attention. A statusless failed retry summary retains that classification only when its attempt matches an announced retry and its final error exactly matches the latest typed transient assistant failure in that attempt. New assistant/turn boundaries invalidate the previous failure; unmatched summaries remain runtime errors. Rejected prompts, auth/configuration failures, exhausted retries without a typed transient status, and untyped errors (including text such as `529 overloaded`) retain attention until the next agent run starts. The runner does not classify diagnostic text. A transient failure does not clear a denied approval or another unresolved runtime failure in the same turn.
470
470
  - **Restore:** OMP creates its session file after the first persisted turn. A new seat with no persisted turn has no resume token; restoring it requires `rig up --existing <rig> --fresh <seat>`. After that file exists, OpenRig restores that exact session file. If a full rig restore leaves an OMP seat in `attention_required` or `failed`, `rig seat clear-attention` cannot yet reconcile it to `operator_recovered`, even with `--reason`, because restore reconciliation only verifies Claude Code and Codex processes ([#41](https://github.com/mvschwarz/openrig/issues/41)). Relaunch that seat with `rig up --existing <rig> --fresh <seat>`, or restore it manually.
471
471
 
472
472
  ### Terminal Nodes
@@ -1,7 +1,7 @@
1
- # What changed in OpenRig 0.6.12
1
+ # What changed in OpenRig 0.6.13
2
2
 
3
- This note is for an agent on an install that was just upgraded to 0.6.12. It lists only what behaves differently from
4
- 0.6.11 and what to do about it. For everything OpenRig can do, read the capability map:
3
+ This note is for an agent on an install that was just upgraded to 0.6.13. It lists only what behaves differently from
4
+ 0.6.12 and what to do about it. For everything OpenRig can do, read the capability map:
5
5
  `rig context get onboarding-width/public-what-you-can-do.md`. Each release replaces this file, so
6
6
  `rig context get reference/whats-new.md` describes the installed version once the upgraded daemon is running. Without
7
7
  a running daemon, read `$OPENRIG_HOME/reference/whats-new.md`. The daemon refreshes that copy when it starts, so right
@@ -9,181 +9,108 @@ after an upgrade it can still hold the previous version's note.
9
9
 
10
10
  ## After the upgrade
11
11
 
12
- - **Restart the daemon** (`rig daemon stop`, then `rig daemon start`). Twelve migrations run on the first start,
13
- whatever you use: `100`, `104`, `105`, `107` to `115`. They add columns and tables for the typing guard's modes, a
14
- seat's saved effort, Claude's cost estimate, Pi usage, mode and posture categories, workflow scope, seat environment
15
- values, the Codex `--no-daemon` record and `sessions.agent_app`; build two indexes for recent queue activity (about
16
- 10 to 12 MB on a long-running install); and rebuild the Slack thread map. There are no migrations `102` or `106`.
17
- - **Claude seats now run the openrig-core plugin's hooks.** The bundled plugin goes from 0.1.9 to 0.1.13. A Claude
18
- seat whose plugins include `openrig-core` (every shipped agent spec selects it) starts with `CLAUDE_CODE_PLUGIN_DIRS`
19
- pointing at OpenRig's copy, so the activity relay, the compaction save and restore hooks and refocus actually run. It
20
- needs Claude Code 2.1.280 or later, which nothing checks. A running seat picks it up at its next launch, restore or
21
- handover. The refocus hook may take up to 60 seconds, so a hung refocus can hold a prompt that long.
22
- - **Six new settings, all off except one:** `output.whoami_peers` (8, used only while `output.compact` is on),
23
- `bundle.services_enabled`, `provider.subscription_moves`, `usage.pi_cost_facts`, `usage.pi_openrouter_charge` and
24
- `transport.verify_input_box`. See "Off by default" below.
12
+ - **Restart the daemon** (`rig daemon stop`, then `rig daemon start`). Migration `117` runs on every upgrade: it adds
13
+ an empty, Codex-only `provider_account_readings` table. It fills only with `provider.usage_windows` on (off by
14
+ default), and then keeps each resolved Codex account's readings across a restart. There's no migration `116`.
15
+ Coming from 0.6.11 or earlier, 0.6.12's twelve migrations run first.
16
+ - **The bundled openrig-core plugin goes from 0.1.13 to 0.1.14.** Generated Claude hook commands in a project's
17
+ `.claude/settings.local.json` call the daemon's Node by its absolute path; existing bare-`node` entries refresh on
18
+ their own, and a person's wrapper is kept. The plugin's own manifest hooks still call bare `node`.
19
+ - **Seats pick up some changes only at their next launch:** a Pi seat's `effort` (sent as `--thinking`), a managed
20
+ Claude seat's `EDITOR`, `VISUAL`, `DISPLAY`, `XAUTHORITY` and `WAYLAND_DISPLAY`, and the shipped agent specs' role
21
+ file as the seat's role. Use `rig seat launch <seat> --fresh --stop --reason "<why>"` only when the person wants it
22
+ now; don't relaunch a working team just to pick these up.
23
+ - **Slack recovery's first pass after the upgrade** scans tracked threads inside the seven-day window once from their
24
+ root. Replies that already landed aren't delivered twice; recovered ones land as late rows that never answer a
25
+ decision.
25
26
 
26
27
  ## Output that changed shape
27
28
 
28
- - **Exit codes:** eleven client-fixable `rig queue update` refusals now answer HTTP 400 and exit 1 instead of 500 and
29
- exit 2 (`blocker_not_found`, `blocker_not_live` and `blocker_malformed` still exit 2). `rig ask` exits 1 for an
30
- unknown or ambiguous rig. `rig compact` exits 1 (was 2) for `pane_unknown_protected`, and its route answers 409 (was
31
- 502). Over the shared transport, a write that throws without a code makes `rig send` exit 1 with HTTP 409 instead of 2
32
- with 500, and a guarded send whose text was written returns `sent: true` with `inputPhase: "written"`.
33
- - **`rig compact` and `rig compact --state` add a `compact` result:** `submitted_unconfirmed` (shown as "submitted,
34
- unconfirmed"), `uncertain` or `not_sent`. "Submitted" means `/compact` and Enter reached the seat, not that compaction
35
- ran.
36
- - **`rig capture --lines N --json`** adds `activity: "unknown"` and `activityNote` when lines were cut.
37
- - **`rig start --last --json`** carries `keptDown` (always) and `warnings` (`seat_status_unreadable`).
38
- - **`rig queue show <id> --full`** on a closed row adds `closingTransition`; plain `rig queue show` on such a row reads
39
- `readView.complete: false` and lists it in `omittedFields`. `rig queue show` returns `resolution` when a close stored
40
- one.
41
- - **After `rig down`,** `rig ps`, the TUI and the rig summary read the rig `stopped`, not recoverable, and
42
- `hasLiveAgents` can read `false`.
43
- - **`rig seat status`** reads `Typing guard: on (hold)` for hold, and its JSON's `desired` and `effective` mean hold only;
44
- `desiredMode` and `effectiveMode` give the mode.
45
- - **`rig usage top`** measures tokens and rates within one conversation and one window, so figures can drop and more
46
- seats read `insufficient_samples`.
47
- - **The execution view** binds a row to a mission by its exact `mission:` tag first; `q1_lanes[].waiting` and
48
- `folded.merge_report` are new.
49
- - **Smaller:** `rig create --json` carries `detail` on failure; `rig status --json` is new; `rig mcp serve` lists 23 tools
50
- (five queue tools added); a JSON body of `null` gets 400 `invalid_json`; `GET /api/events` takes `?replay=`; a Slack
51
- seat post's sender line ends `on <host id>`; `rig ps --nodes` `resumeCommand` can carry `--no-daemon`.
29
+ - **`rig ps --nodes`** prints one line per seat after the table: `Model (<session>): configured <m>; last observed
30
+ <model> (<source>; native record <time>)`, or `UNKNOWN (<reason>)`. JSON carries `modelObservation`; compact output
31
+ is `[model, source, time]`, `{status: "unknown", reason}`, or `null` from an older daemon. Roster
32
+ `live.observedModel` is now filled in.
33
+ - **`rig capture`** writes `[rig capture: <seat>: input box: <hint>]` to stderr for a Claude Code or Codex seat; stdout
34
+ is unchanged. `--json` and the MCP tool carry `inputBox` (`status`, `confidence`, `cursor`, regions, `evidence`,
35
+ `hint`). It's a heuristic: `unknown` means unknown.
36
+ - **`rig provider status`** rows carry a sign-in fact (`usable`, `needs sign-in`, `unknown`; JSON `signIn`). A
37
+ signed-in Claude login never reads better than `unknown`. A signed-out Codex login reports `not_signed_in`, not
38
+ `rpc_error`.
39
+ - **`rig provider status`** (with `provider.usage_windows` on) Codex rows keep their last reading across a daemon
40
+ restart as history (`retained: "before_restart"`), labelled "kept from before the daemon restarted; not a current
41
+ reading", with availability unknown until a fresh read. Rows add `accountHistory` (`linked`, or `unknown`; every
42
+ Claude row is `unknown`), `lastObservedExhausted`, `retained` and, on an inactive account, `savedProfile: "not
43
+ linked"`. A window whose reset has passed gains `expectation`: planning, not a reading. Run `rig provider status
44
+ --refresh` before telling anyone an account has room.
45
+ - **`rig send`** can refuse with `caller_cancelled` (HTTP 409, `sent: false`, `inputPhase: "not_reached"`) when its
46
+ caller went away before input started.
47
+ - **`rig seat restart --keep-conversation`** reports name a Codex startup screen: `Codex startup gate (<kind>): …`, and
48
+ JSON gains `codexNoDaemonFlag`, `processMode` (always `unknown` for now) and `account.startupGateKind`.
49
+ - **`rig restore-check`**'s hook check can read `ready_with_caveats` where it read green; the exit code is still 0.
50
+ - **`GET /api/attention`** adds `queue-update:<qitemId>` items and a `"queue updates"` source.
51
+ - **The node-detail API's `targetPath`** names the file a guidance block is really in, or `""`; `declaredTarget` and
52
+ `effectiveTarget` are new.
53
+ - **`rig grow --json`'s `rigId`** is the resolved id, and `rig grow` and `rig remove` can return `rig_ambiguous`.
54
+ - **The one-line installer** ends with `INSTALLED, SETUP NOT COMPLETE (exit N)` when `rig setup` isn't ready.
52
55
 
53
56
  ## Seats and restore
54
57
 
55
- - **`rig start --last` leaves down a rig stopped on purpose** (`rig down` or `rig seat stop`) and prints how to bring it
56
- back: `rig start --rigs <rig>`, or `rig up '<name>' --existing`.
57
- - **An ordinary terminal seat relaunches fresh on restore** and re-runs its startup actions; don't answer `--fresh` for
58
- it. A missing required startup file for such a seat blocks the whole restore before anything launches.
59
- - **Restore stops a seat whose current runtime differs from its snapshot's,** before launching it; `--fresh` doesn't
60
- bypass it. Restore from a snapshot taken with the seat's current runtime.
61
- - **A slow Claude restore ends `attention_required`, not failed:** "Claude resume did not finish within Ns; Claude may
62
- still be starting, so the launch was kept". Look at the pane, and once Claude is up run `rig seat clear-attention`.
63
- Each such seat can add up to about the readiness timeout, one after another, so `rig up` can pass its 120-second
64
- wait while the daemon keeps working: check `rig ps` before running it again.
65
- - **"Returned to a shell" now means the process tree shows an idle shell.** "The pane shows a shell that is not a proven
66
- idle shell; a launch script may still be starting …" means the seat may still be coming up. A Pi or OMP seat at a
67
- bare shell reads `attention_required`.
68
- - **A Codex fork whose new conversation ID arrives late** stops at `attention_required` with its startup context kept;
69
- let it finish starting, then run `rig seat continue <seat>`. A handover to a Codex fork can complete with `Fork id:
70
- PENDING`.
71
- - **A seat whose startup failed for a recoverable reason** becomes ready after a successful send or capture.
72
- - **`rig launch` takes a rig's name as well as its ID;** a name two active rigs share stops with `rig_ambiguous`.
73
- - **`rig add`, single-seat `rig launch` and `rig launch --seats` wait up to 120 seconds.** A timeout still isn't a
74
- rollback.
75
- - **A runtime `--version` check gives up after 30 seconds.** `rig bootstrap` blocks on a runtime that's installed but
76
- fails its check, reported apart from one that's missing; `rig up`'s preflight fails a Claude, Codex or OMP check that
77
- doesn't answer (a warning for Pi).
78
- - **Claude login detection:** only a current refusal reads `login_required`, not the "Not logged in" footer alone.
79
- - **Model pins:** `fable` now names `claude-fable-5-1`, a trailing `[1m]` is set aside, and pinned Pi seats are checked
80
- (a `:high`-style thinking suffix is accepted).
81
- - **A custom permission policy saved with CRLF line endings** now takes effect at the next launch or restore, instead
82
- of the advisory floor.
83
- - **`rig scope mission create`** writes `status: planned`; set it `active` to count it in `rig proof show --project`.
84
- With `--workspace <project>`, missions go under the project's declared `missions.root`.
58
+ - **A fresh in-place Claude handover** checks a ready result from the old pane's history against the current screen,
59
+ so the packet waits for the successor. It can still admit early when the screen, pane or process can't be read or
60
+ proven: check that the successor read its packet.
61
+ - **A Claude launched through a wrapper script** is proven by its executable path; a restored auto-mode seat resumes
62
+ ready.
63
+ - **After a failed restore, a ready `rig seat launch --fresh`** clears the old restore warning, and `rig seat
64
+ clear-attention` no longer refuses for it.
65
+ - **A complete idle Claude Code or Codex screen** reads `idle` through terminal repaints.
66
+ - **Claude Code's MCP-server approval menu** reads `mcp_gate` and needs input; a restore doesn't call it ready, and an
67
+ ordinary send is refused instead of pasted. A fresh running hook still sends into it.
68
+ - **Codex's "Trust this folder?" panel** reads `trust_gate` during launch, resume and restore.
69
+ - **A rig name with a dot** is refused at launch, at adding a member and at a first-start retry.
85
70
 
86
71
  ## Sends, wakes and the queue
87
72
 
88
- - **A send to a pane in tmux copy or view mode** leaves the mode and delivers; `pane_in_mode` means the pane couldn't
89
- leave its mode. Leave it in that pane, then send again.
90
- - **`rig send --dangerously-interact` types exactly what you give it.** Enter is added only for a complete answer
91
- staged in a recognised Claude Code or Codex input box; anywhere else, put CR in the payload. With `--verify` it reads
92
- unchecked.
93
- - **A Codex seat reads "needs you" only when a real prompt is visible;** a pending permission request reads
94
- `permission_request_pending` first, and an unreadable pane gets `permission_request_unverified` after a grace.
95
- Codex's `»` prompt is recognised.
96
- - **Managed `/compact` is short enough to run and is sent only to an idle seat.** Confirm compaction by effect: the
97
- restore request, or the drop in context.
98
- - **A held-back (`retained`) wake doesn't use up a one-shot park timer;** it's tried again at the interval. You don't
99
- need to re-arm after one.
100
- - **A retired watchdog doesn't deliver a late wake.** A row parked on its owner's own repeating reminder reads
101
- `servedByOwnReminder` in `rig parked` and draws no extra parked-owner wake.
102
- - **`rig queue update <id> --summary "<text>"`** alone corrects a row's subject. Close with **`--resolution
103
- "<outcome>"`** to store the outcome on the row.
104
- - **`rig remove` and `rig shrink`** keep a seat that gets work while stopping (409, `retained: true`) unless
105
- `--fallback` takes it. A stale `rig unclaim` is refused with `session_not_current`.
73
+ - **A send whose caller went away** types nothing, then or later, if no input had started.
74
+ - **An old numbered menu in a Codex pane's scrollback** no longer blocks a send when a complete empty input box sits
75
+ below the status row.
76
+ - **An OMP seat** whose turn ended with a typed transient provider failure (408, 429, 500, 502, 503, 504 or 529) can
77
+ take an ordinary `rig send` retry; nothing retries on its own.
78
+ - **Parked rows for one seat that fall due in the same pass** arrive as one message naming each row.
79
+ - **A stuck-item finding on a person's item that an agent closed** goes to that agent, not the person.
80
+ - **`rig queue list --state "pending, in-progress"`** matches both states.
106
81
 
107
82
  ## New things you can do
108
83
 
109
- - **Set one seat's reasoning effort:** `rig seat set-effort <seat> --effort <level> --reason "<why>"` (or `--clear`); it
110
- applies at the next managed launch, not to the running process. Check it with `rig seat effort <seat>`.
111
- - **Change a seat's stored permission policy:** `rig policy apply <policy> --seat <seat> --reason "<why>"`. `rig policy
112
- current` and plain `rig ps` don't show it; `rig seat status` does.
113
- - **Give seats environment values:** `env:` on the rig or a member in `rig.yaml`, or `rig up <spec> --env KEY=VALUE` for
114
- one launch. Never put secrets there.
115
- - **Scope a workflow run:** `--project`, `--mission`, `--slice` and `--tags` on `rig workflow instantiate` and `run`;
116
- write a target as `member@{rig}` to follow the bound rig.
117
- - **Read cost:** `rig usage cost [--seat <session>] [--json]`. A missing figure is never $0, and Claude's figure is an
118
- estimate, not an invoice.
119
- - **Hand work over without a shell:** `rig mcp serve` with `OPENRIG_SESSION_NAME` set gives `rig_queue_create`,
120
- `rig_queue_show`, `rig_queue_list`, `rig_queue_claim` and `rig_queue_update`. Nothing wakes that agent.
121
- - **`rig status --json`:** treat `daemon.reachable: null` as unconfirmed, not down.
122
- - OpenRig 0.6.12 adds `rig community-harness list` for installed community-harness presets, showing their maintainer
123
- and declared limits. These harnesses are not tested by OpenRig. Support is launch-only: no resume or fork, no
124
- resource projection or startup-file delivery, and identity remains unconfirmed. A quiet screen is not proof that the
125
- seat is idle. (#1392, #1518)
126
- - **Guidance:** the `rigs` skill offers to join the team before the first operator message, and offers Codex users one
127
- removable rules file; `delegating-work` says to brief a peer by the model `rig ps --nodes --json` shows; the operator
128
- reads `$OPENRIG_HOME/reference/keeping-a-watch.md` when asked to watch or remind, including a low-allowance warning.
129
- - User-visible text says "harness" for the agent software around a model, and "community harness" for one an outside
130
- contributor maintains; `docs/reference/topology-naming.md` defines the terms. (#1506)
84
+ - **Move a seat to a new working folder:** `rig seat set-cwd <seat> --cwd <absolute-path> --reason <text>` saves it
85
+ for the next fresh launch or rebuild handover; the running agent doesn't move. Switch promptly with `rig seat launch
86
+ <seat> --fresh --stop --reason "<why>"` or a rebuild handover, and not after a `rig down`/`rig up` or fork handover.
87
+ - **Set a Pi seat's effort:** `rig seat set-effort <seat> --effort <level> --reason "<why>"` and `rig seat effort
88
+ <seat>` now work for Pi.
89
+ - **See which model a seat was using:** `rig ps --nodes`, `rig roster show`, `rig roster find`.
90
+ - **Use a rig name in `rig grow` and `rig remove`.**
91
+ - **Slack:** missed messages in mapped channels, recent threads and relayed channels are recovered; `rig slack status`
92
+ shows a line per channel and a thread line.
131
93
 
132
94
  ## Off by default
133
95
 
134
- - **`output.compact`** now also shortens `rig queue show` and `rig queue transitions` (`--full` for everything) and
135
- bounds `rig whoami --json` peers to `output.whoami_peers` (`--all-peers` lists all).
136
- - **`provider.usage_windows`** now also shows Claude's windows, each seat's configured account and, with
137
- `--all-hosts` or `--hosts`, every registered machine's windows. A Claude account's current availability always reads
138
- `unknown`: don't tell a person an account has room from a seat's reading.
139
- - **`usage.pi_cost_facts`** and **`usage.pi_openrouter_charge`** take effect when a Pi seat next launches or resumes, not
140
- at once; what was recorded stays visible after they're turned off.
141
- - **`provider.subscription_moves`** enables `rig provider moves`. The `openrig-user` skill's section for it mentions apps
142
- that don't ship in this release.
143
- - **`bundle.services_enabled`**, **`transport.verify_input_box`**, the per-seat draft-aware typing guard (`rig seat
144
- set-typing-guard <seat> --mode draft-aware`), `rig bundle create --include-login-files`, `OPENRIG_TMUX_CONTROL=1`
145
- and `OPENRIG_REFOCUS_BUDGET_MS` (4500 to 52000) each act only when chosen.
146
- - **The daemon runs tmux without `/bin/sh`** on Linux and macOS; `OPENRIG_TMUX_SHELL=1` at daemon start keeps the old
147
- path.
96
+ - **The refocus work packet** stays off for Claude Code and Codex. With `OPENRIG_REFOCUS_WORK_PACKET=1`, its fields
97
+ are bounded (about 160 characters per summary, 20 held and 10 next rows, about 1,500 characters per section).
148
98
 
149
99
  ## What to stop doing
150
100
 
151
- - **Stop looking up a rig's ID before `rig launch`;** the name works.
152
- - **Stop expecting `rig start --last` to bring back a rig taken down on purpose;** use `rig start --rigs <rig>` or `rig
153
- up '<name>' --existing`.
154
- - **Stop counting on `--dangerously-interact` to press Enter;** put CR in the payload.
155
- - **Stop taking the preparation prompt's delivery as the compaction's result;** read the `compact` result and confirm by
156
- effect.
157
- - **Stop answering `--fresh` for an ordinary terminal seat on every restore.**
158
- - **Stop branching on exit 2 for a fixable `rig queue update` refusal;** it's exit 1.
159
- - **Stop recreating a seat, or editing the database, to change its permission policy;** use `rig policy apply --seat`.
160
-
161
- ## Known gaps in 0.6.12
162
-
163
- - **Managed compaction's 600-character budget** rests on one comparison on Claude Code 2.1.282, and nothing confirms
164
- compaction ran.
165
- - **The plugin hooks haven't run through this path in a real session,** and two hook runs for one seat aren't
166
- serialized: a post-compaction record can be lost or a refocus delivered twice.
167
- - **One Slack app across machines was simulated in one process,** never run on two real machines. Relayed events are
168
- trusted from the calling daemon, and `rig slack verify` on the hub doesn't check relayed channels.
169
- - **`env:` values aren't secret,** and members added with `rig grow` can't carry a member-level `env:`.
170
- - **`rig up --env` is not forwarded for flat-node specs or v1 bundles,** although the launch may succeed. Do not rely on
171
- the flag for those formats in this release.
172
- - **The draft-aware guard waits for idle inside the seat's delivery lease,** which can delay other work for that seat.
173
- - **With `bundle.services_enabled` on, `rig up <file>.rigbundle` installs into the current folder** when no `--target` is
174
- given.
175
- - **`rig seat restart --keep-conversation` supports Linux only,** and hasn't been re-run on 0.6.12.
176
- - **The rig status API can call a running rig `blocked`** because of one seat that isn't running: it folds a restore
177
- forecast into current status.
178
- - **A Codex seat can keep reading as at its usage limit** in a constructed screen case not seen in a real session.
179
- - **After `rig scope slice create` says it couldn't verify membership, the slice was kept.** Check `mission.yaml` before
180
- creating it again.
181
- - **A Claude Code seat whose permission request was approved automatically can still read "needs input";** the Codex
182
- case is fixed.
183
- - **Codex team seats aren't asked before lifecycle commands yet.**
184
- - **The send gate trusts the most recently recorded hook;** `rig capture` shows the real screen.
185
- - **A launched team still writes into its working folder;** the operator says what changes before you agree.
186
- - **After a restart, `rig status` shows `Kernel: skipped` whatever the kernel seats' state.** Read them with
187
- `rig ps --nodes --rig kernel --full`.
188
- - **`rig tui --shared` still attaches on the default tmux server,** so use `rig tui` when the daemon runs on a non-default
189
- tmux socket.
101
+ - **Don't read `FAILED [4/4]` from the installer as a failed install:** the script now says `INSTALLED, SETUP NOT
102
+ COMPLETE`, and the fix is `rig setup` again, not a reinstall.
103
+ - **Don't rely on Slack recovery for older open threads:** only threads whose root or close is within seven days are
104
+ caught up.
105
+
106
+ ## Known gaps in 0.6.13
107
+
108
+ - **On a Mac with more than one user account,** a second user's `rig` commands can reach the first user's daemon on
109
+ its default port (7433). Running each user's daemon on its own port lets both work but doesn't keep them apart.
110
+ - **Managed compaction, refocus after a compaction and snapshot restore** behave as in 0.6.12: confirm a compaction by
111
+ its restore request or the drop in context, and check that a restored seat is really working.
112
+ - **A fresh in-place Claude handover** can still report ready early when the screen, pane or process can't be read or
113
+ proven.
114
+ - **One Slack app across machines** hasn't run on two real machines, and Slack recovery doesn't catch up older open
115
+ threads.
116
+ - **`rig seat set-cwd`** checks the new folder once; switch promptly.
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "agent-operated-software"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when designing, building, operating, or diagnosing an ongoing application whose live backend or control loop includes OpenRig agents, including applications with a Markdown, YAML, or JSON agent control plane or a thin surface over specialist agent roles."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "agent-operated-workflows"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when a bounded real-world procedure has a deterministic happy path but brownfield, variable, or partially knowable state; when an operation must resume from verified evidence; or when deciding whether agent judgment or ordinary code should own a procedure's control loop."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "applying-a-permission-policy"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use before launching a team during agent-guided setup, or when a user asks to configure OpenRig command permissions, reduce repeated native approval prompts, or apply a selected rig/seat permission policy."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "claude-compaction-restore"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when a Claude Code session is about to compact, has just compacted, reached its context limit, resumed after /compact, or must rebuild its working picture of a long-running seat from its own restore map, its JSONL transcript and the files it touched."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "agent-starters"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when creating, refreshing, packaging, inspecting, promoting, or deprecating a named per-seat starting point — Agent Starter manifest authoring, the 6-state lifecycle (captured → named → inspectable → used → promoted → deprecated), provenance honesty, and refusal rules. NOT a VM image; a managed starting point composed from agent role + startup context + optional native session source + provenance."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "agent-startup-and-context-ingestion"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when designing or auditing how an agent becomes useful after launch — AGENTS.md overlays, role files, skills, rig specs, workflow specs, startup checklists, refocus messages, \"rig context\" surface. Covers the 4 failure modes that make startup context fail (old rig spec misses current operating mode; current agents never told about new guidance; startup file as dumping ground; orchestrator transmits implementation without preserving product intent)."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "cross-host-rig-commands"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when addressing a registered remote OpenRig host, choosing its transport, or interpreting a cross-host result."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "human-in-the-loop"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when classifying a slice closeout (auto-continue / human gate / park), routing a real decision to a human, or designing a human queue/dashboard surface. Treats humans as durable network participants with attention surfaces, queues, and decision records — escalation lands as a durable attention item, not a chat message. Approval is NOT required for every clean closeout; the default RSI conveyor continues unless an explicit human gate is reached."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "messaging-the-human"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when project policy calls for a human decision or update, a human delivery is pending or failed, or a reply must resume the right work."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "openrig-architect"
4
- version: "0.6.12"
4
+ version: "0.6.13"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when designing multi-agent topologies that run ON OpenRig — authoring RigSpec and AgentSpec files for new rigs, creating agent startup content (guidance / skills / culture), or diagnosing why a launched rig's agents aren't behaving as intended. NOT for changing OpenRig itself (use developing-openrig); NOT for ordinary CLI operation of an existing rig (use openrig-user). Covers the full authoring lifecycle from user intent to validated, launchable rig."
7
7
  files: