@openrig/cli 0.6.12 → 0.6.14

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 (494) hide show
  1. package/README.md +69 -14
  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/openrig-user/SKILL.md +11 -3
  9. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +73 -48
  10. package/daemon/assets/skills/rigs/SKILL.md +8 -4
  11. package/daemon/context-packs/help/manifest.yaml +1 -1
  12. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  13. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +76 -16
  14. package/daemon/context-packs/reference/getting-started.md +135 -28
  15. package/daemon/context-packs/reference/manifest.yaml +1 -1
  16. package/daemon/context-packs/reference/rig-spec.md +5 -5
  17. package/daemon/context-packs/reference/whats-new.md +65 -167
  18. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +5 -0
  43. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/openrig-user/SKILL.md +11 -3
  46. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +73 -48
  69. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  73. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  74. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  75. package/daemon/dist/adapters/claude-code-adapter.d.ts +9 -1
  76. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  77. package/daemon/dist/adapters/claude-code-adapter.js +110 -52
  78. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  79. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  80. package/daemon/dist/adapters/codex-runtime-adapter.js +47 -6
  81. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  82. package/daemon/dist/adapters/pi-resume.d.ts +1 -1
  83. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
  84. package/daemon/dist/adapters/pi-resume.js +4 -1
  85. package/daemon/dist/adapters/pi-resume.js.map +1 -1
  86. package/daemon/dist/adapters/pi-runner-protocol.d.ts +9 -0
  87. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  88. package/daemon/dist/adapters/pi-runner-protocol.js +16 -0
  89. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  90. package/daemon/dist/adapters/pi-runner.d.ts +5 -2
  91. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  92. package/daemon/dist/adapters/pi-runner.js +72 -15
  93. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  94. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
  95. package/daemon/dist/adapters/pi-runtime-adapter.js +2 -0
  96. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  97. package/daemon/dist/adapters/stub-compaction.d.ts +1 -0
  98. package/daemon/dist/adapters/stub-compaction.d.ts.map +1 -1
  99. package/daemon/dist/adapters/stub-compaction.js +2 -0
  100. package/daemon/dist/adapters/stub-compaction.js.map +1 -1
  101. package/daemon/dist/adapters/stub-refocus.d.ts +6 -0
  102. package/daemon/dist/adapters/stub-refocus.d.ts.map +1 -0
  103. package/daemon/dist/adapters/stub-refocus.js +22 -0
  104. package/daemon/dist/adapters/stub-refocus.js.map +1 -0
  105. package/daemon/dist/adapters/stub-runner.d.ts +6 -0
  106. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  107. package/daemon/dist/adapters/stub-runner.js +18 -1
  108. package/daemon/dist/adapters/stub-runner.js.map +1 -1
  109. package/daemon/dist/adapters/stub-script.d.ts +2 -2
  110. package/daemon/dist/adapters/stub-script.d.ts.map +1 -1
  111. package/daemon/dist/adapters/stub-script.js +2 -2
  112. package/daemon/dist/adapters/stub-script.js.map +1 -1
  113. package/daemon/dist/adapters/tmux.js +1 -1
  114. package/daemon/dist/adapters/tmux.js.map +1 -1
  115. package/daemon/dist/build-info.js +3 -3
  116. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  117. package/daemon/dist/db/all-migrations.js +2 -0
  118. package/daemon/dist/db/all-migrations.js.map +1 -1
  119. package/daemon/dist/db/migrations/117_provider_account_readings.d.ts +3 -0
  120. package/daemon/dist/db/migrations/117_provider_account_readings.d.ts.map +1 -0
  121. package/daemon/dist/db/migrations/117_provider_account_readings.js +32 -0
  122. package/daemon/dist/db/migrations/117_provider_account_readings.js.map +1 -0
  123. package/daemon/dist/domain/claim-service.d.ts +9 -18
  124. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  125. package/daemon/dist/domain/claim-service.js +83 -0
  126. package/daemon/dist/domain/claim-service.js.map +1 -1
  127. package/daemon/dist/domain/claude-activity-hooks.d.ts +6 -0
  128. package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
  129. package/daemon/dist/domain/claude-activity-hooks.js +19 -1
  130. package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
  131. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +2 -2
  132. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  133. package/daemon/dist/domain/claude-compaction-enforcer.js +20 -14
  134. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  135. package/daemon/dist/domain/claude-core-plugin-env.d.ts +2 -0
  136. package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
  137. package/daemon/dist/domain/claude-core-plugin-env.js +6 -2
  138. package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
  139. package/daemon/dist/domain/claude-managed-launch.d.ts +5 -0
  140. package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
  141. package/daemon/dist/domain/claude-managed-launch.js +48 -7
  142. package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
  143. package/daemon/dist/domain/claude-mcp-menu.d.ts +5 -0
  144. package/daemon/dist/domain/claude-mcp-menu.d.ts.map +1 -0
  145. package/daemon/dist/domain/claude-mcp-menu.js +25 -0
  146. package/daemon/dist/domain/claude-mcp-menu.js.map +1 -0
  147. package/daemon/dist/domain/fresh-occupant-relation.d.ts +7 -0
  148. package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -1
  149. package/daemon/dist/domain/fresh-occupant-relation.js +45 -0
  150. package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -1
  151. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +14 -2
  152. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -1
  153. package/daemon/dist/domain/gateway/slack/channel-recovery.js +128 -89
  154. package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -1
  155. package/daemon/dist/domain/gateway/slack/inbound.d.ts +4 -0
  156. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  157. package/daemon/dist/domain/gateway/slack/inbound.js +5 -3
  158. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  159. package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts +24 -0
  160. package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts.map +1 -0
  161. package/daemon/dist/domain/gateway/slack/recovery-budget.js +18 -0
  162. package/daemon/dist/domain/gateway/slack/recovery-budget.js.map +1 -0
  163. package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts +104 -0
  164. package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts.map +1 -0
  165. package/daemon/dist/domain/gateway/slack/slack-recovery.js +236 -0
  166. package/daemon/dist/domain/gateway/slack/slack-recovery.js.map +1 -0
  167. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  168. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +29 -6
  169. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  170. package/daemon/dist/domain/gateway/slack/state-store.d.ts +34 -0
  171. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  172. package/daemon/dist/domain/gateway/slack/state-store.js +67 -0
  173. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  174. package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts +37 -0
  175. package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts.map +1 -0
  176. package/daemon/dist/domain/gateway/slack/thread-recovery.js +173 -0
  177. package/daemon/dist/domain/gateway/slack/thread-recovery.js.map +1 -0
  178. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +8 -0
  179. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  180. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  181. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  182. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +6 -1
  183. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  184. package/daemon/dist/domain/model-divergence/current-generation-record.js +4 -1
  185. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  186. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts +74 -0
  187. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts.map +1 -0
  188. package/daemon/dist/domain/model-divergence/current-model-reader.js +246 -0
  189. package/daemon/dist/domain/model-divergence/current-model-reader.js.map +1 -0
  190. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +18 -0
  191. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -1
  192. package/daemon/dist/domain/model-divergence/effective-model-readers.js +24 -8
  193. package/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -1
  194. package/daemon/dist/domain/native-process-lineage.d.ts +8 -1
  195. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  196. package/daemon/dist/domain/native-process-lineage.js +40 -26
  197. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  198. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  199. package/daemon/dist/domain/native-resume-probe.js +34 -8
  200. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  201. package/daemon/dist/domain/node-inventory.d.ts +1 -1
  202. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  203. package/daemon/dist/domain/node-inventory.js +84 -18
  204. package/daemon/dist/domain/node-inventory.js.map +1 -1
  205. package/daemon/dist/domain/process-census.d.ts +1 -1
  206. package/daemon/dist/domain/process-census.d.ts.map +1 -1
  207. package/daemon/dist/domain/process-table.d.ts +26 -0
  208. package/daemon/dist/domain/process-table.d.ts.map +1 -0
  209. package/daemon/dist/domain/process-table.js +185 -0
  210. package/daemon/dist/domain/process-table.js.map +1 -0
  211. package/daemon/dist/domain/profile-resolver.d.ts +8 -0
  212. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  213. package/daemon/dist/domain/profile-resolver.js +11 -0
  214. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  215. package/daemon/dist/domain/projection-planner.js +1 -1
  216. package/daemon/dist/domain/projection-planner.js.map +1 -1
  217. package/daemon/dist/domain/provider/claude-usage-windows.d.ts +3 -1
  218. package/daemon/dist/domain/provider/claude-usage-windows.d.ts.map +1 -1
  219. package/daemon/dist/domain/provider/claude-usage-windows.js +48 -3
  220. package/daemon/dist/domain/provider/claude-usage-windows.js.map +1 -1
  221. package/daemon/dist/domain/provider/codex-usage-reader.d.ts +4 -1
  222. package/daemon/dist/domain/provider/codex-usage-reader.d.ts.map +1 -1
  223. package/daemon/dist/domain/provider/codex-usage-reader.js +3 -0
  224. package/daemon/dist/domain/provider/codex-usage-reader.js.map +1 -1
  225. package/daemon/dist/domain/provider/codex-usage-windows.d.ts +3 -1
  226. package/daemon/dist/domain/provider/codex-usage-windows.d.ts.map +1 -1
  227. package/daemon/dist/domain/provider/codex-usage-windows.js +1 -0
  228. package/daemon/dist/domain/provider/codex-usage-windows.js.map +1 -1
  229. package/daemon/dist/domain/provider/provider-account-readings.d.ts +42 -0
  230. package/daemon/dist/domain/provider/provider-account-readings.d.ts.map +1 -0
  231. package/daemon/dist/domain/provider/provider-account-readings.js +132 -0
  232. package/daemon/dist/domain/provider/provider-account-readings.js.map +1 -0
  233. package/daemon/dist/domain/provider/provider-types.d.ts +29 -0
  234. package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -1
  235. package/daemon/dist/domain/provider/usage-across-hosts.d.ts.map +1 -1
  236. package/daemon/dist/domain/provider/usage-across-hosts.js +6 -0
  237. package/daemon/dist/domain/provider/usage-across-hosts.js.map +1 -1
  238. package/daemon/dist/domain/provider/usage-windows.d.ts +25 -0
  239. package/daemon/dist/domain/provider/usage-windows.d.ts.map +1 -1
  240. package/daemon/dist/domain/provider/usage-windows.js +100 -4
  241. package/daemon/dist/domain/provider/usage-windows.js.map +1 -1
  242. package/daemon/dist/domain/queue-repository.d.ts +23 -0
  243. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  244. package/daemon/dist/domain/queue-repository.js +59 -1
  245. package/daemon/dist/domain/queue-repository.js.map +1 -1
  246. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  247. package/daemon/dist/domain/queue-stuck-sweep.js +47 -4
  248. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  249. package/daemon/dist/domain/restore-check-service.d.ts +10 -0
  250. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  251. package/daemon/dist/domain/restore-check-service.js +73 -10
  252. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  253. package/daemon/dist/domain/restore-guidance.d.ts +6 -0
  254. package/daemon/dist/domain/restore-guidance.d.ts.map +1 -1
  255. package/daemon/dist/domain/restore-guidance.js +21 -5
  256. package/daemon/dist/domain/restore-guidance.js.map +1 -1
  257. package/daemon/dist/domain/restore-orchestrator.js +1 -1
  258. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  259. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  260. package/daemon/dist/domain/resume-metadata-refresher.js +6 -29
  261. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  262. package/daemon/dist/domain/rig-repository.d.ts +3 -0
  263. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  264. package/daemon/dist/domain/rig-repository.js +6 -0
  265. package/daemon/dist/domain/rig-repository.js.map +1 -1
  266. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  267. package/daemon/dist/domain/rigspec-instantiator.js +4 -2
  268. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  269. package/daemon/dist/domain/rigspec-preflight.d.ts +4 -0
  270. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  271. package/daemon/dist/domain/rigspec-preflight.js +12 -2
  272. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  273. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  274. package/daemon/dist/domain/rigspec-schema.js +11 -0
  275. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  276. package/daemon/dist/domain/runtime-adapter.d.ts +13 -0
  277. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  278. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  279. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  280. package/daemon/dist/domain/seat-attention-reconciler.js +15 -1
  281. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  282. package/daemon/dist/domain/seat-cwd-preparation.d.ts +22 -0
  283. package/daemon/dist/domain/seat-cwd-preparation.d.ts.map +1 -0
  284. package/daemon/dist/domain/seat-cwd-preparation.js +107 -0
  285. package/daemon/dist/domain/seat-cwd-preparation.js.map +1 -0
  286. package/daemon/dist/domain/seat-effort.d.ts +4 -3
  287. package/daemon/dist/domain/seat-effort.d.ts.map +1 -1
  288. package/daemon/dist/domain/seat-effort.js +21 -3
  289. package/daemon/dist/domain/seat-effort.js.map +1 -1
  290. package/daemon/dist/domain/seat-lifecycle-service.d.ts +36 -2
  291. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  292. package/daemon/dist/domain/seat-lifecycle-service.js +206 -15
  293. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  294. package/daemon/dist/domain/seat-restart-in-place.d.ts +14 -0
  295. package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -1
  296. package/daemon/dist/domain/seat-restart-in-place.js +59 -3
  297. package/daemon/dist/domain/seat-restart-in-place.js.map +1 -1
  298. package/daemon/dist/domain/seat-status-service.d.ts +2 -0
  299. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  300. package/daemon/dist/domain/seat-status-service.js +1 -0
  301. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  302. package/daemon/dist/domain/seat-structural-activity-service.d.ts +7 -1
  303. package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
  304. package/daemon/dist/domain/seat-structural-activity-service.js +9 -3
  305. package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
  306. package/daemon/dist/domain/session-name.d.ts +8 -0
  307. package/daemon/dist/domain/session-name.d.ts.map +1 -1
  308. package/daemon/dist/domain/session-name.js +12 -0
  309. package/daemon/dist/domain/session-name.js.map +1 -1
  310. package/daemon/dist/domain/session-transport.d.ts +78 -3
  311. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  312. package/daemon/dist/domain/session-transport.js +306 -15
  313. package/daemon/dist/domain/session-transport.js.map +1 -1
  314. package/daemon/dist/domain/successor-session-launcher.js +1 -1
  315. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  316. package/daemon/dist/domain/topology-converge.d.ts +1 -0
  317. package/daemon/dist/domain/topology-converge.d.ts.map +1 -1
  318. package/daemon/dist/domain/topology-converge.js +1 -0
  319. package/daemon/dist/domain/topology-converge.js.map +1 -1
  320. package/daemon/dist/domain/types.d.ts +14 -0
  321. package/daemon/dist/domain/types.d.ts.map +1 -1
  322. package/daemon/dist/domain/types.js.map +1 -1
  323. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  324. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  325. package/daemon/dist/domain/user-settings/settings-store.js +4 -0
  326. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  327. package/daemon/dist/domain/wake-resolve-service.d.ts +1 -0
  328. package/daemon/dist/domain/wake-resolve-service.d.ts.map +1 -1
  329. package/daemon/dist/domain/wake-resolve-service.js +10 -0
  330. package/daemon/dist/domain/wake-resolve-service.js.map +1 -1
  331. package/daemon/dist/domain/wake-resolver.d.ts.map +1 -1
  332. package/daemon/dist/domain/wake-resolver.js +7 -0
  333. package/daemon/dist/domain/wake-resolver.js.map +1 -1
  334. package/daemon/dist/domain/watchdog-delivery.d.ts +29 -0
  335. package/daemon/dist/domain/watchdog-delivery.d.ts.map +1 -0
  336. package/daemon/dist/domain/watchdog-delivery.js +113 -0
  337. package/daemon/dist/domain/watchdog-delivery.js.map +1 -0
  338. package/daemon/dist/domain/watchdog-policy-engine.d.ts +60 -1
  339. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  340. package/daemon/dist/domain/watchdog-policy-engine.js +154 -28
  341. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  342. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  343. package/daemon/dist/domain/watchdog-scheduler.js +6 -1
  344. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  345. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  346. package/daemon/dist/domain/workflow-instance-store.js +6 -2
  347. package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  348. package/daemon/dist/routes/attention.d.ts.map +1 -1
  349. package/daemon/dist/routes/attention.js +41 -1
  350. package/daemon/dist/routes/attention.js.map +1 -1
  351. package/daemon/dist/routes/compaction.js +1 -1
  352. package/daemon/dist/routes/compaction.js.map +1 -1
  353. package/daemon/dist/routes/queue.d.ts.map +1 -1
  354. package/daemon/dist/routes/queue.js +3 -1
  355. package/daemon/dist/routes/queue.js.map +1 -1
  356. package/daemon/dist/routes/restore-check.d.ts.map +1 -1
  357. package/daemon/dist/routes/restore-check.js +19 -1
  358. package/daemon/dist/routes/restore-check.js.map +1 -1
  359. package/daemon/dist/routes/seat.d.ts.map +1 -1
  360. package/daemon/dist/routes/seat.js +15 -2
  361. package/daemon/dist/routes/seat.js.map +1 -1
  362. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  363. package/daemon/dist/routes/sessions.js +42 -1
  364. package/daemon/dist/routes/sessions.js.map +1 -1
  365. package/daemon/dist/routes/transport.d.ts.map +1 -1
  366. package/daemon/dist/routes/transport.js +13 -2
  367. package/daemon/dist/routes/transport.js.map +1 -1
  368. package/daemon/dist/server.d.ts +1 -0
  369. package/daemon/dist/server.d.ts.map +1 -1
  370. package/daemon/dist/server.js +7 -4
  371. package/daemon/dist/server.js.map +1 -1
  372. package/daemon/dist/startup.d.ts.map +1 -1
  373. package/daemon/dist/startup.js +41 -118
  374. package/daemon/dist/startup.js.map +1 -1
  375. package/daemon/docs/reference/agent-spec.md +1 -1
  376. package/daemon/docs/reference/agent-startup-guide.md +84 -0
  377. package/daemon/docs/reference/getting-started.md +135 -28
  378. package/daemon/docs/reference/publishing-a-rig-bundle.md +5 -2
  379. package/daemon/docs/reference/quickstart.md +187 -0
  380. package/daemon/docs/reference/refocus-channel.md +11 -1
  381. package/daemon/docs/reference/rig-spec.md +5 -5
  382. package/daemon/docs/reference/rosters.md +29 -2
  383. package/daemon/docs/reference/slack-app-setup.md +47 -17
  384. package/daemon/docs/reference/whats-new.md +65 -167
  385. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -0
  386. package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -0
  387. package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -0
  388. package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -0
  389. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -0
  390. package/daemon/specs/agents/design/product-designer/agent.yaml +1 -0
  391. package/daemon/specs/agents/development/implementer/agent.yaml +1 -0
  392. package/daemon/specs/agents/development/qa/agent.yaml +1 -0
  393. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -0
  394. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -0
  395. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -0
  396. package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
  397. package/daemon/specs/agents/research/analyst/agent.yaml +1 -0
  398. package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -0
  399. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -0
  400. package/dist/build-info.js +3 -3
  401. package/dist/client.d.ts +7 -1
  402. package/dist/client.d.ts.map +1 -1
  403. package/dist/client.js +28 -0
  404. package/dist/client.js.map +1 -1
  405. package/dist/commands/ask.d.ts.map +1 -1
  406. package/dist/commands/ask.js +13 -3
  407. package/dist/commands/ask.js.map +1 -1
  408. package/dist/commands/capture.d.ts.map +1 -1
  409. package/dist/commands/capture.js +14 -0
  410. package/dist/commands/capture.js.map +1 -1
  411. package/dist/commands/chatroom.d.ts.map +1 -1
  412. package/dist/commands/chatroom.js +1 -0
  413. package/dist/commands/chatroom.js.map +1 -1
  414. package/dist/commands/compact.d.ts.map +1 -1
  415. package/dist/commands/compact.js +5 -4
  416. package/dist/commands/compact.js.map +1 -1
  417. package/dist/commands/config.d.ts.map +1 -1
  418. package/dist/commands/config.js +4 -2
  419. package/dist/commands/config.js.map +1 -1
  420. package/dist/commands/doctor.d.ts +3 -0
  421. package/dist/commands/doctor.d.ts.map +1 -1
  422. package/dist/commands/doctor.js +47 -23
  423. package/dist/commands/doctor.js.map +1 -1
  424. package/dist/commands/grow.d.ts.map +1 -1
  425. package/dist/commands/grow.js +24 -7
  426. package/dist/commands/grow.js.map +1 -1
  427. package/dist/commands/provider.d.ts.map +1 -1
  428. package/dist/commands/provider.js +43 -7
  429. package/dist/commands/provider.js.map +1 -1
  430. package/dist/commands/ps.d.ts +2 -0
  431. package/dist/commands/ps.d.ts.map +1 -1
  432. package/dist/commands/ps.js +12 -1
  433. package/dist/commands/ps.js.map +1 -1
  434. package/dist/commands/reconcile-session.d.ts.map +1 -1
  435. package/dist/commands/reconcile-session.js +25 -4
  436. package/dist/commands/reconcile-session.js.map +1 -1
  437. package/dist/commands/remove.d.ts.map +1 -1
  438. package/dist/commands/remove.js +20 -1
  439. package/dist/commands/remove.js.map +1 -1
  440. package/dist/commands/roster.d.ts +2 -1
  441. package/dist/commands/roster.d.ts.map +1 -1
  442. package/dist/commands/roster.js +10 -5
  443. package/dist/commands/roster.js.map +1 -1
  444. package/dist/commands/scope.js +1 -1
  445. package/dist/commands/scope.js.map +1 -1
  446. package/dist/commands/seat.d.ts.map +1 -1
  447. package/dist/commands/seat.js +75 -8
  448. package/dist/commands/seat.js.map +1 -1
  449. package/dist/commands/slack.d.ts.map +1 -1
  450. package/dist/commands/slack.js +14 -1
  451. package/dist/commands/slack.js.map +1 -1
  452. package/dist/commands/ui.d.ts.map +1 -1
  453. package/dist/commands/ui.js +8 -1
  454. package/dist/commands/ui.js.map +1 -1
  455. package/dist/commands/usage.d.ts.map +1 -1
  456. package/dist/commands/usage.js +4 -3
  457. package/dist/commands/usage.js.map +1 -1
  458. package/dist/config-store.d.ts +2 -1
  459. package/dist/config-store.d.ts.map +1 -1
  460. package/dist/config-store.js +5 -0
  461. package/dist/config-store.js.map +1 -1
  462. package/dist/daemon-lifecycle.d.ts.map +1 -1
  463. package/dist/daemon-lifecycle.js +11 -3
  464. package/dist/daemon-lifecycle.js.map +1 -1
  465. package/dist/front-door.d.ts.map +1 -1
  466. package/dist/front-door.js +3 -1
  467. package/dist/front-door.js.map +1 -1
  468. package/dist/lib/model-observation.d.ts +13 -0
  469. package/dist/lib/model-observation.d.ts.map +1 -0
  470. package/dist/lib/model-observation.js +25 -0
  471. package/dist/lib/model-observation.js.map +1 -0
  472. package/dist/local-daemon-owner.d.ts +28 -0
  473. package/dist/local-daemon-owner.d.ts.map +1 -0
  474. package/dist/local-daemon-owner.js +98 -0
  475. package/dist/local-daemon-owner.js.map +1 -0
  476. package/dist/mcp-server.d.ts.map +1 -1
  477. package/dist/mcp-server.js +1 -0
  478. package/dist/mcp-server.js.map +1 -1
  479. package/package.json +1 -1
  480. package/tui/dist/attention/attention-model.js +6 -5
  481. package/tui/dist/attention/attention-model.js.map +1 -1
  482. package/tui/dist/attention/source-continuity.d.ts.map +1 -1
  483. package/tui/dist/attention/source-continuity.js +2 -0
  484. package/tui/dist/attention/source-continuity.js.map +1 -1
  485. package/tui/dist/terminals/open-window.d.ts +11 -1
  486. package/tui/dist/terminals/open-window.d.ts.map +1 -1
  487. package/tui/dist/terminals/open-window.js +47 -2
  488. package/tui/dist/terminals/open-window.js.map +1 -1
  489. package/tui/dist/usage/usage-model.d.ts +2 -0
  490. package/tui/dist/usage/usage-model.d.ts.map +1 -1
  491. package/tui/dist/usage/usage-model.js +38 -3
  492. package/tui/dist/usage/usage-model.js.map +1 -1
  493. package/ui/dist/assets/{index-Cfbtfd9G.js → index-CVgod3Pm.js} +1 -1
  494. package/ui/dist/index.html +1 -1
package/README.md CHANGED
@@ -8,28 +8,74 @@ OpenRig is open-source software for building and running your own network of age
8
8
 
9
9
  It's the open-source system behind my AI civilization experiments.
10
10
 
11
- **Guide:** [Getting started](docs/reference/getting-started.md) · **Stuck?** [Help](docs/reference/help.md) · **Questions:** [Q&A](https://github.com/mvschwarz/openrig/discussions/92) · **Updates and demos:** [@_feralmachine on X](https://x.com/_feralmachine)
11
+ **Guide:** [Getting started](docs/reference/quickstart.md) · **Stuck?** [Help](docs/reference/help.md) · **Questions:** [Q&A](https://github.com/mvschwarz/openrig/discussions/92) · **Updates and demos:** [@_feralmachine on X](https://x.com/_feralmachine)
12
12
 
13
13
  ## See it running
14
14
 
15
15
  ![The OpenRig TUI: the build rig as a graph, then as a table of seats with runtime, model, context and state, then one seat in detail (real recording, 10 seconds)](assets/readme/openrig-agents-working.gif)
16
16
 
17
- **Start here:** [the guided first-use path](docs/reference/getting-started.md): install, talk to the kernel operator, then choose a team for your first useful change.
17
+ **Start here:** [the guided first-use path](docs/reference/quickstart.md): install, talk to the kernel operator, then choose a team for your first useful change.
18
18
 
19
19
  Not setting this up today? Get the next walkthrough and occasional OpenRig updates → https://openrig.dev/follow
20
20
 
21
21
  ## Install and first run
22
22
 
23
- Requires Node.js 22 or 24 and tmux, on macOS or Linux. 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 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). Launching a rig writes provider hooks and workspace trust settings. Before running the commands below, read [what OpenRig changes on your machine](#what-openrig-changes-on-your-machine) and back up the relevant files.
23
+ **Let your coding agent set it up.** First check that `node --version` shows 22 or 24: the command below needs
24
+ Node.js and the `npx` that comes with it. Then, in your project folder, add OpenRig's `rigs` skill to the agent you
25
+ use:
24
26
 
25
- **One command.** This runs OpenRig's install script from the `v0.6.12` 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:
27
+ ```sh
28
+ # Claude Code
29
+ npx skills add https://github.com/mvschwarz/openrig/tree/v0.6.14/skills/rigs --skill rigs --agent claude-code
30
+ # Codex
31
+ npx skills add https://github.com/mvschwarz/openrig/tree/v0.6.14/skills/rigs --skill rigs --agent codex
32
+ ```
33
+
34
+ Then type `/rigs` in Claude Code, or `$rigs` in Codex, and say what you want built. The skill has your agent tell
35
+ you what it will run and change before it does, install OpenRig, open the OpenRig view and pass your goal to
36
+ OpenRig's operator.
37
+
38
+ You need Node.js 22 or 24 (22 on Apple silicon), tmux, macOS or Linux (WSL2 on Windows), and Claude Code or Codex
39
+ signed in. One provider is enough to start.
40
+
41
+ Already have OpenRig? Use the tag that matches `rig --version`, or upgrade first.
42
+
43
+ Prefer to type the commands yourself? [Install it yourself ↓](#install-it-yourself)
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).
46
+
47
+ > **What OpenRig changes on your machine**
48
+ > - **Install:** `@openrig/cli` goes in globally with npm.
49
+ > - **Setup:** `rig setup` adds an OpenRig block to `~/.tmux.conf`. It can install tmux (with Homebrew on macOS), and
50
+ > Herdr unless you pass `--no-herdr`. Plain `rig setup`, which is what the one-command install runs, checks both
51
+ > Claude Code and Codex and may install a missing one; `rig setup --providers claude` (or `codex`) limits it to
52
+ > yours.
53
+ > - **Starting OpenRig, for the coding agent you use** (paths are the usual defaults):
54
+ > - Codex: hooks and trust in `~/.codex/config.toml`.
55
+ > - Claude Code: workspace trust in `~/.claude.json`, and activity hooks in the project's
56
+ > `.claude/settings.local.json`, plus a status line unless you already have your own.
57
+ > - Discovery skills go in `~/.claude/skills` and `~/.agents/skills`.
58
+ > - **Starting a team in your project:** adds managed guidance to `AGENTS.md` or `CLAUDE.md`, plus the team's skills
59
+ > and plugins.
60
+ > - **Permissions:** by default, OpenRig's own kernel gets broader permissions than a project team gets by default.
61
+ > On Codex that's full access with no approval prompts (`-s danger-full-access -a never`). On Claude Code, its file
62
+ > tools, web fetches and operational commands, including reads under your home folder, run without asking. A
63
+ > permission policy, per-agent choice or Codex profile changes that. What your team can do depends on the team you
64
+ > choose and your settings; `workshop`, for example, ships with broad access.
65
+ > - **Backups:** OpenRig doesn't guarantee it can preserve or roll back these files, so back them up first.
66
+ >
67
+ > [Everything OpenRig writes, and why →](https://github.com/mvschwarz/openrig#what-openrig-changes-on-your-machine)
68
+
69
+ ### Install it yourself
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:
26
72
 
27
73
  ```bash
28
- curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.12/scripts/install.sh | sh -s -- --dry-run
29
- curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.12/scripts/install.sh | sh
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
30
76
  ```
31
77
 
32
- 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.
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.
33
79
 
34
80
  **Or step by step:**
35
81
 
@@ -161,7 +207,7 @@ using a published package, since repository guidance can be ahead of npm.
161
207
  | --- | --- |
162
208
  | **npm installation** | Installs the CLI (`rig` and `openrig-tui`), bundled components and dependencies under your npm prefix (with Bun, under Bun's global directory). OpenRig's postinstall checks the Node.js version and that the SQLite module loads; Bun may block this script. It does not run daemon or provider setup. |
163
209
  | **`rig setup`** | Attempts missing tools and writes an OpenRig block in `~/.tmux.conf` for mouse support and scrollback. Installs herdr by default on macOS and Linux unless declined with `--no-herdr`; an unavailable herdr install is a warning. On macOS the installing agent offers Ghostty, and `--ghostty` attempts it after acceptance. Existing cmux settings are left unchanged. `--full` adds workstation tools. `--dry-run` shows setup's plan without applying it. |
164
- | **Daemon startup** | Creates/updates instance state under `OPENRIG_HOME` (normally `~/.openrig`), including its database and managed plugin resources. Seeds the `openrig-skills` discovery skill, the `refocusing` skill and the person-facing `rigs` skill in `~/.claude/skills` and `~/.agents/skills`, subject to existing version ownership. With `runtime.codex.hooks_enabled` enabled (the default), writes Codex hook configuration and trust records as described below—even before a rig launches. |
210
+ | **Daemon startup** | Creates/updates instance state under `OPENRIG_HOME` (normally `~/.openrig`), including its database and managed plugin resources. Seeds the `openrig-skills` discovery skill, the `refocusing` skill and the person-facing `rigs` skill in `~/.claude/skills` and `~/.agents/skills`, subject to existing version ownership. When a Codex seat is already recorded and `runtime.codex.hooks_enabled` is enabled (the default), ensures its hook configuration and trust records as described below. With no recorded Codex seat, enabled hooks wait for its first launch; disabled hooks still remove a stale OpenRig-managed hook block, if present. |
165
211
  | **Rig/seat launch and attachment** | Creates tmux sessions, supplies seat identity and daemon connection environment, and projects selected guidance, skills, plugins and runtime resources into the workspace. Managed startup pre-trusts the workspace. Claude context collection can also be provisioned for attached sessions and refreshed during monitoring. In a Git repository, newly created files under `.codex/plugins/shared:openrig-core/` (or the unqualified `.codex/plugins/openrig-core/`) are added to the repository's Git `info/exclude` inside an `# BEGIN OpenRig generated files` block; new `AGENTS.md`, `CLAUDE.md` and `CLAUDE.local.md` files stay visible with a warning. |
166
212
  | **Bundle install** (`rig bundle install`, or `rig up` with a `.rigbundle` or GitHub link) | Writes the bundle's files into the install target: `--target`, or the current directory for `rig up` and for a GitHub link. `rig bundle install` with a local archive needs `--target`. Routes its declared skills, plugins and context packs into your libraries. A GitHub link's archive is kept under `OPENRIG_HOME/bundle-imports/`, and installs are recorded in `OPENRIG_HOME/bundle-audit.jsonl`. A bundle that carries a project creates it under `workspace.projects_root` and records it, with the rig's association, in the workspace catalog. |
167
213
  | **Explicit permission configuration** | The built-in bootstrap does **not** add `rig` command allow rules to your settings files; a team seat with no permission policy, per-seat choice or (for Codex) named profile gets the per-launch [team default](docs/reference/rig-spec.md#team-launch-defaults) instead. Agent-guided setup recommends keeping it and requires your actual answer before the agent [adds remembered rules at your chosen scope](docs/reference/getting-started.md#have-your-agent-configure-permissions). No/no answer keeps the team default and preserves settings; existing choices and stricter rules remain relevant. Broader access is separate. |
@@ -175,7 +221,9 @@ user's home; changing `OPENRIG_HOME` alone does not isolate provider configurati
175
221
  writes `HOME/.claude.json`, and also `<CLAUDE_CONFIG_DIR>/.claude.json` when the
176
222
  daemon has that variable set. In the workspace, `.claude/settings.local.json` receives
177
223
  the context collector's `statusLine` command and selected activity hooks;
178
- the collector script lives under `.openrig/`, and the activity-hook relay under
224
+ a user's own status-line command is preserved, so it can prevent collector
225
+ installation. Selected settings resources can still replace overlapping keys.
226
+ The collector script lives under `.openrig/`, and the activity-hook relay under
179
227
  the instance's `state/claude-activity-hooks/`. Selected settings/MCP resources can also
180
228
  change that settings file and `.mcp.json`. The shared settings resource sets
181
229
  `permissions.defaultMode` to `acceptEdits` and enables Exa/Context7 MCP entries;
@@ -185,8 +233,10 @@ user's home; changing `OPENRIG_HOME` alone does not isolate provider configurati
185
233
  To keep your own status line alongside the collector, see
186
234
  [Custom Claude status line](docs/reference/claude-status-line.md).
187
235
  - **Codex:** writes the daemon's `CODEX_HOME/config.toml` (normally
188
- `~/.codex/config.toml`). Startup enables hooks, adds the OpenRig activity relay
189
- commands and pre-writes trust hashes for those commands. Seat startup adds
236
+ `~/.codex/config.toml`). With hooks enabled, daemon startup ensures the OpenRig
237
+ activity relay commands and their trust hashes when a Codex seat is already
238
+ recorded; otherwise the first Codex launch does so. With hooks disabled, startup
239
+ can remove a stale OpenRig-managed hook block even without a Codex seat. Seat startup adds
190
240
  `trust_level = "trusted"` for the workspace; selected config resources can
191
241
  add MCP settings. Managed launches pass `-c check_for_update_on_startup=false`,
192
242
  which writes no config; a recognized update notice that still appears can be
@@ -252,9 +302,12 @@ separates the desired selection from the last launch arguments; neither proves
252
302
  native enforcement. See the [permission guide](docs/reference/getting-started.md#per-seat-permission-mode).
253
303
 
254
304
  Managed hook blocks target OpenRig's entries and retain unrelated hooks, but
255
- trust entries, selected resource keys and Claude's existing status-line command
256
- can be replaced. Some writers recover unreadable settings as empty objects;
257
- this is not a complete preservation or rollback guarantee. Back up relevant
305
+ trust entries and selected resource keys can be replaced. Claude's collector,
306
+ activity-hook and JSON resource writers leave unreadable or malformed settings
307
+ untouched; this is not a product-wide preservation guarantee. Codex's workspace
308
+ trust writer can treat an unreadable `config.toml` as empty and write a new trust
309
+ configuration. Read-modify-write operations can also race other writers; there
310
+ is no complete preservation or rollback guarantee. Back up relevant
258
311
  files before first use. Daemon/bootstrap writes are automatic and do not each
259
312
  have an interactive preview; `rig setup --dry-run` does not preview every later
260
313
  startup effect.
@@ -335,6 +388,8 @@ For cmux, use `--provider cmux`. In the TUI, a rig's detail view has an `Open te
335
388
 
336
389
  ## Key Concepts
337
390
 
391
+ The first words you meet, in plain language: [What these words mean](docs/reference/quickstart.md#what-these-words-mean).
392
+
338
393
  - **RigSpec**: Declarative multi-agent harness definition in YAML. Pods, members, edges, continuity policies, culture file.
339
394
  - **AgentSpec**: Reusable agent blueprint with skills, guidance, hooks, profiles, and startup contracts.
340
395
  - **Seat**: A stable role and address in a rig, such as `dev-build@starter`. The conversation occupying it can change while its identity and authored context remain.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openrig-core",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
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.13",
3
+ "version": "0.1.15",
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",
@@ -26,8 +26,9 @@ This plugin ships dual-manifest packaging — both `.claude-plugin/` and `.codex
26
26
  A seat that has OpenRig's activity relay in its own `settings.local.json` (the `claude-activity-hooks` runtime resource)
27
27
  already reports activity from there, so the plugin's `activity-relay.cjs` (which the manifest starts with `--from-plugin`)
28
28
  exits for an event the seat's settings register it for. It does so only when the entry is exactly the one OpenRig writes
29
- (`node` and one quoted path to `state/claude-activity-hooks/activity-relay.cjs`) and the script at that path is this same
30
- script, so a missing script, a different one at that path, or a wrapper around it never silences the plugin. A seat without
29
+ (legacy `node` or a quoted absolute Node executable, then one quoted path to
30
+ `state/claude-activity-hooks/activity-relay.cjs`), the interpreter is executable, and the script at that path is this same
31
+ script. A missing interpreter/script, a different script, or a wrapper around it never silences the plugin. A seat without
31
32
  that resource, and a plugin installed outside OpenRig, report through the plugin's relay, so each event is reported once.
32
33
  A relay entry written by an older install (a different path or quoting) doesn't match, so until the seat is relaunched and
33
34
  its entry refreshed, both relays report and its events come twice. The plugin is not a Claude marketplace entry, so
@@ -43,6 +44,12 @@ This plugin ships dual-manifest packaging — both `.claude-plugin/` and `.codex
43
44
  - **Codex CLI** — Codex has no directory option for plugins, so it does not load this plugin. A Codex seat gets only the hooks
44
45
  the daemon writes into Codex's `config.toml` (the activity relay); `hooks/codex.json` is not read.
45
46
 
47
+ Generated Claude settings commands for the activity relay and context collector use the daemon's absolute Node
48
+ executable when its name is recognized (`node` or `node.exe`); other names keep the legacy bare `node` command and
49
+ 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.
52
+
46
53
  One skill targets Claude Code's compaction behavior specifically:
47
54
  - `claude-compaction-restore` — used to rebuild a Claude Code agent's working mental model after `/compact`, from JSONL transcripts and touched files
48
55
 
@@ -214,15 +214,30 @@ function uid() {
214
214
  // each event once either way. Anything unreadable, missing or different counts as "not registered": a seat is never silent.
215
215
  const SETTINGS_RELAY_TAIL = "state/claude-activity-hooks/activity-relay.cjs";
216
216
 
217
- // The adapter's own test for the entry it writes (isOwnedRelayCommand): `node` and one single-quoted token, in the form
218
- // shellQuote produces, naming the relay copy. A wrapper that only mentions the path is not that entry. Returns the path.
217
+ // Keep this finite generated-command grammar in parity with parseManagedClaudeNodeCommand.
218
+ // Bare-node legacy commands and a canonical quoted absolute Node path are recognised;
219
+ // extra arguments and user wrappers are not the settings relay.
219
220
  function settingsRelayPath(command) {
220
- const m = /^node\s+(.+)$/.exec(command.trim());
221
- const arg = m && m[1];
222
- if (!arg || arg.length < 2 || !arg.startsWith("'") || !arg.endsWith("'")) return null;
223
- const decoded = arg.slice(1, -1).split(`'"'"'`).join("'");
224
- if ("'" + decoded.replace(/'/g, `'"'"'`) + "'" !== arg) return null;
225
- return path.isAbsolute(decoded) && decoded.endsWith(`/${SETTINGS_RELAY_TAIL}`) ? decoded : null;
221
+ if (/[\r\n]/.test(command)) return null;
222
+ const m = /^(node|'(?:[^']|'"'"')*')[ \t]+('(?:[^']|'"'"')*')$/.exec(command.trim());
223
+ if (!m) return null;
224
+ const decode = token => token.slice(1, -1).split(`'"'"'`).join("'");
225
+ const quote = value => "'" + value.replace(/'/g, `'"'"'`) + "'";
226
+ const executable = m[1] === "node" ? "node" : decode(m[1]);
227
+ const relay = decode(m[2]);
228
+ if (quote(relay) !== m[2] || !path.isAbsolute(relay) || !relay.endsWith(`/${SETTINGS_RELAY_TAIL}`)) return null;
229
+ if (m[1] !== "node" && (quote(executable) !== m[1] || !path.isAbsolute(executable) || !/^node(?:\.exe)?$/i.test(path.basename(executable)))) return null;
230
+ return { executable, relay };
231
+ }
232
+
233
+ function interpreterAvailable(executable, env) {
234
+ const candidates = executable === "node"
235
+ ? typeof env.PATH === "string" ? env.PATH.split(path.delimiter).map(dir => path.resolve(dir || ".", "node")) : []
236
+ : [executable];
237
+ return candidates.some(candidate => {
238
+ try { fs.accessSync(candidate, fs.constants.X_OK); return fs.statSync(candidate).isFile(); }
239
+ catch { return false; }
240
+ });
226
241
  }
227
242
 
228
243
  // A settings entry only silences this run if it would really report: the file it names is there and is this very script.
@@ -243,7 +258,7 @@ function settingsRelayReports(hookEvent, providerPayload, env = process.env) {
243
258
  return Array.isArray(groups) && groups.some((group) => group && unrestricted(group) && Array.isArray(group.hooks)
244
259
  && group.hooks.some((hook) => {
245
260
  const relay = hook && typeof hook.command === "string" ? settingsRelayPath(hook.command) : null;
246
- return relay !== null && isThisScript(relay);
261
+ return relay !== null && interpreterAvailable(relay.executable, env) && isThisScript(relay.relay);
247
262
  }));
248
263
  } catch {
249
264
  return false;
@@ -306,4 +321,5 @@ module.exports = {
306
321
  resolveEndpoint,
307
322
  pluginRunIsRedundant,
308
323
  settingsRelayReports,
324
+ settingsRelayPath,
309
325
  };
@@ -125,11 +125,14 @@ function readConfiguredContent(home) {
125
125
  // current work, its basis travels to the trace script, which alone decides how to render it;
126
126
  // a failed or unreadable answer is passed as UNKNOWN. Never guess a work node here: a guess
127
127
  // would silently re-point the whole trace.
128
- // OPR.0.7.0.12 — the work packet, switched off by default: the trace receives the daemon's
129
- // labelled work candidates and carries duties and notes as text. With it off, every path below
130
- // is unchanged.
128
+ // OPR.0.7.0.12 — the work packet: the trace receives the daemon's labelled work candidates and
129
+ // carries duties and notes as text. OPENRIG_REFOCUS_WORK_PACKET=1 turns it on and =0 off; unset, each
130
+ // runtime's default below applies. A runtime defaults on only once a native run has shown the packet
131
+ // reaching the agent and leading to the right next action; neither has yet. With it off, every path
132
+ // below is unchanged.
133
+ const WORK_PACKET_DEFAULT = { claude: false, codex: false };
131
134
  function workPacketEnabled() {
132
- return enabled(process.env.OPENRIG_REFOCUS_WORK_PACKET, false);
135
+ return enabled(process.env.OPENRIG_REFOCUS_WORK_PACKET, WORK_PACKET_DEFAULT[runtime()] === true);
133
136
  }
134
137
 
135
138
  function readQueueWhoami(timeout = lookupTimeout()) {
@@ -109,6 +109,11 @@ When you `rig capture` a pane, **greyed / ghost autocomplete suggestions are NOT
109
109
 
110
110
  **Rule:** ignore ghost/autosuggest text entirely. Only *committed/rendered* pane output is real. When it matters, verify at source (git, the queue, the actual event) — never off a capture's ghost line.
111
111
 
112
+ A plain capture loses the grey, so `rig capture` reads it for you. For a Claude Code or Codex seat, a
113
+ `[rig capture: <seat>: input box: ...]` note on stderr (and `inputBox` in `--json`) says whether the input box's text
114
+ is likely a harness suggestion or typed, from where the cursor is and whether the text is drawn faint. Don't act on
115
+ `likely-suggestion` text as anyone's intent, and treat `unknown` as unknown: verify at source.
116
+
112
117
  ## Moment-of-truth checklist
113
118
 
114
119
  - **Starting a slice?** → do you know what it's for and what done looks like? mockups attached (UI slices)? **Are you on the light path?** (You are, unless the mission owner assigned the overlay.)
@@ -384,11 +384,19 @@ rig reconcile-session <session>
384
384
  rig reconcile-session <session> --rig <rigId> --node <logicalId>
385
385
  rig reconcile-session <session> --no-launch
386
386
  rig reconcile-session <session> --json
387
+ rig reconcile-session <session> --repair-missing-pane --no-launch
387
388
  ```
388
389
 
389
- This is a no-launch, no-input adopt. `--rig`/`--node` disambiguate when the
390
- canonical session name does not uniquely resolve. `--no-launch` is accepted
391
- for explicitness (it is the only mode this command has).
390
+ This is a no-launch, no-input adopt: it records a new claimed session row for
391
+ the seat (any running row is superseded); it re-captures the resume token if
392
+ it can, and conversation continuity stays unverified. `--rig`/`--node`
393
+ disambiguate when the canonical session name does not uniquely resolve.
394
+ `--no-launch` is accepted for explicitness.
395
+
396
+ `--repair-missing-pane --no-launch` is different: for a running launched seat
397
+ whose tmux pane was never recorded, it fills in the pane and keeps the
398
+ session, resume token and generation. It never adopts. Both forms refuse
399
+ while the seat's typing protection is on.
392
400
 
393
401
  ### Five-term restore status vocabulary
394
402
 
@@ -75,39 +75,19 @@ def read(path):
75
75
  return None
76
76
 
77
77
 
78
+ # Contract twin of CLI scope-fs.ts and daemon scope/node-file.ts; parity is tested.
79
+ NOTES_FILE_PRECEDENCE = ("NOTES.md", "MISSION_NOTES.md")
80
+
81
+
78
82
  def resolve_notes(node):
79
- try:
80
- result = subprocess.run(
81
- ["rig", "scope", "resolve-notes", str(node), "--json"],
82
- capture_output=True,
83
- text=True,
84
- timeout=10,
85
- check=False,
86
- )
87
- except subprocess.TimeoutExpired:
88
- return None, "resolver command timed out"
89
- except OSError as error:
90
- return None, f"resolver command could not start: {error}"
91
- if result.returncode != 0:
92
- detail = (result.stderr or result.stdout or "").strip().splitlines()
93
- suffix = f": {detail[0]}" if detail else ""
94
- return None, f"resolver command exited {result.returncode}{suffix}"
95
- try:
96
- payload = json.loads(result.stdout)
97
- except (json.JSONDecodeError, TypeError):
98
- return None, "resolver command returned malformed JSON"
99
- if not isinstance(payload, dict) or payload.get("ok") is not True or "resolution" not in payload:
100
- return None, "resolver command returned an invalid success shape"
101
- resolution = payload["resolution"]
102
- if resolution is None:
103
- return None, None
104
- if not isinstance(resolution, dict):
105
- return None, "resolver command returned an invalid resolution shape"
106
- resolved_path = resolution.get("path")
107
- resolved_name = resolution.get("name")
108
- if not isinstance(resolved_path, str) or not isinstance(resolved_name, str):
109
- return None, "resolver command returned an invalid resolution shape"
110
- return (Path(resolved_path), resolved_name), None
83
+ for name in NOTES_FILE_PRECEDENCE:
84
+ candidate = node / name
85
+ try:
86
+ if candidate.is_file() and os.access(candidate, os.R_OK):
87
+ return (candidate, name), None
88
+ except OSError:
89
+ pass
90
+ return None, None
111
91
 
112
92
 
113
93
  def intent(text):
@@ -157,6 +137,27 @@ DUTY_HEADINGS = ("my job here", "standing duties")
157
137
  NOTES_STATE_HEADINGS = ("current state",)
158
138
  HEADING = re.compile(r"^(#{1,6})\s+(.*?)\s*#*\s*$")
159
139
  DEFAULT_NOTES_MAX_AGE_DAYS = 14
140
+ # Each packet field is bounded on its own; there is no total cap. A row's summary and continuation are one line each,
141
+ # the held and next lists show their newest rows with the full count, and a matched section's body is cut at a line.
142
+ FIELD_CHARS = 160
143
+ HELD_SHOWN = 20
144
+ NEXT_SHOWN = 10
145
+ SECTION_CHARS = 1500
146
+
147
+
148
+ def one_line(text):
149
+ """(text as one line, cut to FIELD_CHARS, whether it was shortened)."""
150
+ flat = " ".join(str(text).split())
151
+ if len(flat) <= FIELD_CHARS:
152
+ return flat, flat != str(text).strip()
153
+ return flat[:FIELD_CHARS - 1].rstrip() + "…", True
154
+
155
+
156
+ def bounded_section(body):
157
+ if len(body) <= SECTION_CHARS:
158
+ return body
159
+ boundary = body.rfind("\n", 0, SECTION_CHARS)
160
+ return body[:boundary if boundary > 0 else SECTION_CHARS].rstrip() + "\n[… use --depth full for the rest]"
160
161
 
161
162
 
162
163
  def heading_sections(text, wanted):
@@ -180,7 +181,7 @@ def heading_sections(text, wanted):
180
181
 
181
182
  def by_section(text, wanted, path):
182
183
  found = heading_sections(text, wanted)
183
- shown = "\n\n".join(f"{title}\n{body}" if body else title for title, body in found)
184
+ shown = "\n\n".join(f"{title}\n{bounded_section(body)}" if body else title for title, body in found)
184
185
  missing = [phrase for phrase in wanted if not any(title.lower().startswith(phrase) for title, _ in found)]
185
186
  if not missing:
186
187
  return shown
@@ -335,28 +336,51 @@ def candidate_line(candidate):
335
336
  return line
336
337
 
337
338
 
339
+ def row_fields(row, *fields):
340
+ """Each named field as one bounded line, and a pointer to the whole row when any was shortened."""
341
+ values, cut = [], False
342
+ for field, missing in fields:
343
+ value, shortened = one_line(row.get(field) or missing)
344
+ values.append(value)
345
+ cut = cut or shortened
346
+ pointer = f" — full row: rig queue show {row['qitemId']}" if cut and row.get("qitemId") else ""
347
+ return values, pointer
348
+
349
+
350
+ def cut_notice(name, state, rows, shown, daemon_cut):
351
+ """The list's notice when it was cut here or by the daemon: how many are shown, of how many."""
352
+ if not daemon_cut and len(rows) <= shown:
353
+ return None
354
+ total = f"more than {len(rows)}" if daemon_cut else str(len(rows))
355
+ return (f"(the {name} list was cut: {min(len(rows), shown)} of {total} shown; "
356
+ f"`rig queue list --owned --state {state}` has the rest)")
357
+
358
+
338
359
  def render_held_and_next(evidence):
339
360
  output = []
361
+ per_list = "heldTruncated" in evidence or "nextTruncated" in evidence
340
362
  held = evidence.get("held") or []
341
363
  if held:
342
364
  output.append("HELD WORK (blocked; this is not next):")
343
- for row in held:
344
- output.append(f"- {row.get('qitemId') or 'a row'} — {row.get('summary') or 'no summary'} — "
345
- f"blocked on {row.get('blockedOn') or 'unknown'} — "
346
- f"continuation: {row.get('continuation') or 'none recorded'}")
365
+ for row in held[:HELD_SHOWN]:
366
+ (summary, blocked_on, continuation), pointer = row_fields(
367
+ row, ("summary", "no summary"), ("blockedOn", "unknown"), ("continuation", "none recorded"))
368
+ output.append(f"- {row.get('qitemId') or 'a row'} — {summary} — blocked on {blocked_on} — "
369
+ f"continuation: {continuation}{pointer}")
347
370
  following = evidence.get("next") or []
348
371
  if following:
349
372
  output.append("POSSIBLE NEXT WORK (pending; no order implied):")
350
- for row in following:
373
+ for row in following[:NEXT_SHOWN]:
351
374
  missions = ", ".join(row.get("missions") or [])
352
- output.append(f"- {row.get('qitemId') or 'a row'} — {row.get('summary') or 'no summary'}"
353
- + (f" [mission: {missions}]" if missions else ""))
354
- if "heldTruncated" in evidence or "nextTruncated" in evidence:
355
- if evidence.get("heldTruncated"):
356
- output.append("(the held list was cut; `rig queue list --owned --state blocked` has the rest)")
357
- if evidence.get("nextTruncated"):
358
- output.append("(the next list was cut; `rig queue list --owned --state pending` has the rest)")
359
- elif evidence.get("heldAndNextTruncated"):
375
+ (summary,), pointer = row_fields(row, ("summary", "no summary"))
376
+ output.append(f"- {row.get('qitemId') or 'a row'} — {summary}"
377
+ + (f" [mission: {missions}]" if missions else "") + pointer)
378
+ notices = [
379
+ cut_notice("held", "blocked", held, HELD_SHOWN, per_list and bool(evidence.get("heldTruncated"))),
380
+ cut_notice("next", "pending", following, NEXT_SHOWN, per_list and bool(evidence.get("nextTruncated"))),
381
+ ]
382
+ output.extend(notice for notice in notices if notice)
383
+ if not per_list and evidence.get("heldAndNextTruncated"):
360
384
  output.append("(held and next lists were cut; `rig queue list` has the rest)")
361
385
  return "\n".join(output)
362
386
 
@@ -390,8 +414,9 @@ def render_candidates(evidence, root, depth, failures):
390
414
  output.extend(candidate_line(candidate) for candidate in candidates)
391
415
  if unknown:
392
416
  output.append("In-progress rows the queue cannot place:")
393
- output.extend(f"- {row.get('qitemId') or 'a row'} — {row.get('summary') or 'no summary'}: {row.get('reason')}"
394
- for row in unknown)
417
+ for row in unknown:
418
+ (summary,), pointer = row_fields(row, ("summary", "no summary"))
419
+ output.append(f"- {row.get('qitemId') or 'a row'} — {summary}: {row.get('reason')}{pointer}")
395
420
  if not candidates:
396
421
  names = evidence.get("missionsOnHost") or []
397
422
  if names:
@@ -15,9 +15,13 @@ building it yourself.
15
15
 
16
16
  Tell the person what you're about to run and why before you run it. Don't install system packages or change their
17
17
  machine without a yes. Starting OpenRig and a team writes files: Codex hooks and settings in
18
- `~/.codex/config.toml`, a discovery skill in `~/.claude/skills` and `~/.agents/skills`, and, in the repository, managed
19
- guidance in `AGENTS.md` or `CLAUDE.md` plus the team's skills and plugins. Say so before you start OpenRig
20
- ([the full list](https://github.com/mvschwarz/openrig#what-openrig-changes-on-your-machine)).
18
+ `~/.codex/config.toml`, Claude Code workspace trust in `~/.claude.json`, discovery skills in `~/.claude/skills` and
19
+ `~/.agents/skills`, and, in the repository, managed guidance in `AGENTS.md` or `CLAUDE.md`, activity hooks in
20
+ `.claude/settings.local.json` and a status line there unless the project already has its own, plus the team's skills
21
+ and plugins. Unless a permission policy, a per-seat choice or (for Codex) a named profile applies, the kernel's own
22
+ seats run with an operational default: Codex with `-s danger-full-access -a never`, and Claude Code with its file
23
+ tools, web fetches and operational commands, including reads under the home folder, allowed without asking. Say so
24
+ before you start OpenRig ([the full list](https://github.com/mvschwarz/openrig#what-openrig-changes-on-your-machine)).
21
25
 
22
26
  ## 1. Install OpenRig, if it isn't installed
23
27
 
@@ -178,4 +182,4 @@ offer, so the person sees the real file, not a placeholder:
178
182
  - **Everything in the library:** `rig context list`.
179
183
  - **Exact syntax:** `rig <command> --help` is always current for the installed version.
180
184
 
181
- Written for OpenRig 0.6.7. When something here and `--help` disagree, `--help` wins.
185
+ When something here and `rig <command> --help` disagree, `--help` wins.
@@ -1,6 +1,6 @@
1
1
  # Agent help: the single troubleshooting and escalation guide (docs/reference/help.md).
2
2
  name: help
3
- version: "0.6.12"
3
+ version: "0.6.14"
4
4
  taxonomy: world
5
5
  purpose: "What an agent does when its user says OpenRig isn't working: diagnose, fix within permissions, verify, and escalate to OpenRig support."
6
6
  files:
@@ -1,6 +1,6 @@
1
1
  # Public capability and source-map width for the default onboarding walk.
2
2
  name: onboarding-width
3
- version: "0.6.12"
3
+ version: "0.6.14"
4
4
  taxonomy: world
5
5
  purpose: "The public capability map and source map referenced by the default onboarding walk."
6
6
  files: