@openrig/cli 0.6.10 → 0.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -1
  2. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +6 -1
  3. package/daemon/assets/skills/rigs/SKILL.md +1 -1
  4. package/daemon/context-packs/help/manifest.yaml +1 -1
  5. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  6. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +36 -11
  7. package/daemon/context-packs/reference/manifest.yaml +1 -1
  8. package/daemon/context-packs/reference/rig-spec.md +2 -2
  9. package/daemon/context-packs/reference/whats-new.md +135 -134
  10. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  11. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  12. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  13. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  14. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  15. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  16. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  17. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +1 -1
  23. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +3 -3
  24. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +6 -1
  60. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  64. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  65. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  66. package/daemon/dist/adapters/claude-code-adapter.d.ts +0 -14
  67. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  68. package/daemon/dist/adapters/claude-code-adapter.js +27 -73
  69. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  70. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +35 -0
  71. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  72. package/daemon/dist/adapters/codex-runtime-adapter.js +94 -44
  73. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  74. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  75. package/daemon/dist/adapters/pi-runner.js +6 -3
  76. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  77. package/daemon/dist/adapters/pi-runtime-adapter.js +1 -1
  78. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  79. package/daemon/dist/adapters/tmux.d.ts +23 -0
  80. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  81. package/daemon/dist/adapters/tmux.js +127 -6
  82. package/daemon/dist/adapters/tmux.js.map +1 -1
  83. package/daemon/dist/build-info.js +3 -3
  84. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  85. package/daemon/dist/db/all-migrations.js +2 -0
  86. package/daemon/dist/db/all-migrations.js.map +1 -1
  87. package/daemon/dist/db/migrations/103_session_stop_intent.d.ts +4 -0
  88. package/daemon/dist/db/migrations/103_session_stop_intent.d.ts.map +1 -0
  89. package/daemon/dist/db/migrations/103_session_stop_intent.js +9 -0
  90. package/daemon/dist/db/migrations/103_session_stop_intent.js.map +1 -0
  91. package/daemon/dist/domain/active-occupant.d.ts +14 -0
  92. package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  93. package/daemon/dist/domain/active-occupant.js +17 -0
  94. package/daemon/dist/domain/active-occupant.js.map +1 -1
  95. package/daemon/dist/domain/codex-network-default.d.ts +3 -0
  96. package/daemon/dist/domain/codex-network-default.d.ts.map +1 -1
  97. package/daemon/dist/domain/codex-network-default.js +1 -1
  98. package/daemon/dist/domain/codex-network-default.js.map +1 -1
  99. package/daemon/dist/domain/codex-pane-patterns.d.ts +2 -0
  100. package/daemon/dist/domain/codex-pane-patterns.d.ts.map +1 -0
  101. package/daemon/dist/domain/codex-pane-patterns.js +5 -0
  102. package/daemon/dist/domain/codex-pane-patterns.js.map +1 -0
  103. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  104. package/daemon/dist/domain/context-monitor.js +46 -22
  105. package/daemon/dist/domain/context-monitor.js.map +1 -1
  106. package/daemon/dist/domain/cwd-resolution.d.ts +8 -0
  107. package/daemon/dist/domain/cwd-resolution.d.ts.map +1 -1
  108. package/daemon/dist/domain/cwd-resolution.js +24 -3
  109. package/daemon/dist/domain/cwd-resolution.js.map +1 -1
  110. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -1
  111. package/daemon/dist/domain/gateway/slack/channel-recovery.js +4 -3
  112. package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -1
  113. package/daemon/dist/domain/native-process-lineage.d.ts +5 -0
  114. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  115. package/daemon/dist/domain/native-process-lineage.js +53 -15
  116. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  117. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  118. package/daemon/dist/domain/node-inventory.js +15 -7
  119. package/daemon/dist/domain/node-inventory.js.map +1 -1
  120. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  121. package/daemon/dist/domain/node-launcher.js +2 -1
  122. package/daemon/dist/domain/node-launcher.js.map +1 -1
  123. package/daemon/dist/domain/pane-cutover.d.ts +27 -0
  124. package/daemon/dist/domain/pane-cutover.d.ts.map +1 -0
  125. package/daemon/dist/domain/pane-cutover.js +37 -0
  126. package/daemon/dist/domain/pane-cutover.js.map +1 -0
  127. package/daemon/dist/domain/parent-session-env.d.ts +8 -0
  128. package/daemon/dist/domain/parent-session-env.d.ts.map +1 -0
  129. package/daemon/dist/domain/parent-session-env.js +37 -0
  130. package/daemon/dist/domain/parent-session-env.js.map +1 -0
  131. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +11 -0
  132. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  133. package/daemon/dist/domain/policies/parked-owner-consumer.js +81 -11
  134. package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  135. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  136. package/daemon/dist/domain/profile-resolver.js +2 -3
  137. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  138. package/daemon/dist/domain/proof/judgments.d.ts +10 -5
  139. package/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
  140. package/daemon/dist/domain/proof/judgments.js +27 -19
  141. package/daemon/dist/domain/proof/judgments.js.map +1 -1
  142. package/daemon/dist/domain/provider/codex-limit-banner.d.ts +2 -2
  143. package/daemon/dist/domain/provider/codex-limit-banner.d.ts.map +1 -1
  144. package/daemon/dist/domain/provider/codex-limit-banner.js +56 -9
  145. package/daemon/dist/domain/provider/codex-limit-banner.js.map +1 -1
  146. package/daemon/dist/domain/provider/codex-usage-reader.d.ts +31 -0
  147. package/daemon/dist/domain/provider/codex-usage-reader.d.ts.map +1 -0
  148. package/daemon/dist/domain/provider/codex-usage-reader.js +115 -0
  149. package/daemon/dist/domain/provider/codex-usage-reader.js.map +1 -0
  150. package/daemon/dist/domain/provider/codex-usage-windows.d.ts +78 -0
  151. package/daemon/dist/domain/provider/codex-usage-windows.d.ts.map +1 -0
  152. package/daemon/dist/domain/provider/codex-usage-windows.js +259 -0
  153. package/daemon/dist/domain/provider/codex-usage-windows.js.map +1 -0
  154. package/daemon/dist/domain/provider/provider-service-impl.d.ts +10 -0
  155. package/daemon/dist/domain/provider/provider-service-impl.d.ts.map +1 -1
  156. package/daemon/dist/domain/provider/provider-service-impl.js +27 -1
  157. package/daemon/dist/domain/provider/provider-service-impl.js.map +1 -1
  158. package/daemon/dist/domain/provider/provider-service.d.ts +5 -0
  159. package/daemon/dist/domain/provider/provider-service.d.ts.map +1 -1
  160. package/daemon/dist/domain/provider/provider-types.d.ts +65 -0
  161. package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -1
  162. package/daemon/dist/domain/ps-projection.d.ts +5 -2
  163. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  164. package/daemon/dist/domain/ps-projection.js +27 -25
  165. package/daemon/dist/domain/ps-projection.js.map +1 -1
  166. package/daemon/dist/domain/queue-repository.d.ts +2 -0
  167. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  168. package/daemon/dist/domain/queue-repository.js +16 -3
  169. package/daemon/dist/domain/queue-repository.js.map +1 -1
  170. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  171. package/daemon/dist/domain/queue-stuck-sweep.js +21 -7
  172. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  173. package/daemon/dist/domain/restore-check-service.d.ts +8 -0
  174. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  175. package/daemon/dist/domain/restore-check-service.js +12 -3
  176. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  177. package/daemon/dist/domain/restore-orchestrator.d.ts +4 -0
  178. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  179. package/daemon/dist/domain/restore-orchestrator.js +34 -5
  180. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  181. package/daemon/dist/domain/restore-plan-preview.d.ts +4 -0
  182. package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  183. package/daemon/dist/domain/restore-plan-preview.js +14 -3
  184. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  185. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  186. package/daemon/dist/domain/rigspec-preflight.js +7 -6
  187. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  188. package/daemon/dist/domain/runtime-adapter.d.ts +1 -0
  189. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  190. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  191. package/daemon/dist/domain/scope/scope-view-projection.d.ts +4 -2
  192. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  193. package/daemon/dist/domain/scope/scope-view-projection.js +6 -4
  194. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  195. package/daemon/dist/domain/seat-lifecycle-service.d.ts +117 -2
  196. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  197. package/daemon/dist/domain/seat-lifecycle-service.js +335 -74
  198. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  199. package/daemon/dist/domain/seat-restart-in-place.d.ts +292 -0
  200. package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -0
  201. package/daemon/dist/domain/seat-restart-in-place.js +895 -0
  202. package/daemon/dist/domain/seat-restart-in-place.js.map +1 -0
  203. package/daemon/dist/domain/seat-structural-activity-service.d.ts +1 -1
  204. package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
  205. package/daemon/dist/domain/seat-structural-activity-service.js +5 -6
  206. package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
  207. package/daemon/dist/domain/session-fingerprinter.d.ts.map +1 -1
  208. package/daemon/dist/domain/session-fingerprinter.js +9 -5
  209. package/daemon/dist/domain/session-fingerprinter.js.map +1 -1
  210. package/daemon/dist/domain/session-registry.d.ts +3 -0
  211. package/daemon/dist/domain/session-registry.d.ts.map +1 -1
  212. package/daemon/dist/domain/session-registry.js +6 -1
  213. package/daemon/dist/domain/session-registry.js.map +1 -1
  214. package/daemon/dist/domain/session-transport.d.ts +33 -3
  215. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  216. package/daemon/dist/domain/session-transport.js +391 -21
  217. package/daemon/dist/domain/session-transport.js.map +1 -1
  218. package/daemon/dist/domain/startup-orchestrator.d.ts +2 -0
  219. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  220. package/daemon/dist/domain/startup-orchestrator.js +4 -3
  221. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  222. package/daemon/dist/domain/successor-session-launcher.d.ts +3 -7
  223. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  224. package/daemon/dist/domain/successor-session-launcher.js +6 -32
  225. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  226. package/daemon/dist/domain/types.d.ts +29 -0
  227. package/daemon/dist/domain/types.d.ts.map +1 -1
  228. package/daemon/dist/domain/types.js.map +1 -1
  229. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  230. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  231. package/daemon/dist/domain/user-settings/settings-store.js +31 -0
  232. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  233. package/daemon/dist/domain/wake-resolver.js +2 -2
  234. package/daemon/dist/domain/wake-resolver.js.map +1 -1
  235. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  236. package/daemon/dist/domain/watchdog-jobs-repository.js +19 -3
  237. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  238. package/daemon/dist/domain/whoami-service.d.ts +4 -1
  239. package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
  240. package/daemon/dist/domain/whoami-service.js +25 -19
  241. package/daemon/dist/domain/whoami-service.js.map +1 -1
  242. package/daemon/dist/domain/workspace/project-read.d.ts +2 -0
  243. package/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
  244. package/daemon/dist/domain/workspace/project-read.js +19 -8
  245. package/daemon/dist/domain/workspace/project-read.js.map +1 -1
  246. package/daemon/dist/index.d.ts.map +1 -1
  247. package/daemon/dist/index.js +6 -0
  248. package/daemon/dist/index.js.map +1 -1
  249. package/daemon/dist/routes/chat.d.ts.map +1 -1
  250. package/daemon/dist/routes/chat.js +23 -2
  251. package/daemon/dist/routes/chat.js.map +1 -1
  252. package/daemon/dist/routes/proof.d.ts.map +1 -1
  253. package/daemon/dist/routes/proof.js +99 -10
  254. package/daemon/dist/routes/proof.js.map +1 -1
  255. package/daemon/dist/routes/provider.d.ts.map +1 -1
  256. package/daemon/dist/routes/provider.js +31 -0
  257. package/daemon/dist/routes/provider.js.map +1 -1
  258. package/daemon/dist/routes/queue.d.ts.map +1 -1
  259. package/daemon/dist/routes/queue.js +18 -6
  260. package/daemon/dist/routes/queue.js.map +1 -1
  261. package/daemon/dist/routes/rigs.js +5 -3
  262. package/daemon/dist/routes/rigs.js.map +1 -1
  263. package/daemon/dist/routes/scopes.d.ts.map +1 -1
  264. package/daemon/dist/routes/scopes.js +5 -3
  265. package/daemon/dist/routes/scopes.js.map +1 -1
  266. package/daemon/dist/routes/seat.d.ts.map +1 -1
  267. package/daemon/dist/routes/seat.js +32 -0
  268. package/daemon/dist/routes/seat.js.map +1 -1
  269. package/daemon/dist/startup.d.ts.map +1 -1
  270. package/daemon/dist/startup.js +12 -2
  271. package/daemon/dist/startup.js.map +1 -1
  272. package/daemon/docs/reference/agent-startup-guide.md +19 -0
  273. package/daemon/docs/reference/keeping-a-watch.md +156 -0
  274. package/daemon/docs/reference/rig-spec.md +2 -2
  275. package/daemon/docs/reference/sdlc-conventions.md +11 -1
  276. package/daemon/docs/reference/slack-app-setup.md +6 -4
  277. package/daemon/docs/reference/whats-new.md +135 -134
  278. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -1
  279. package/dist/build-info.js +3 -3
  280. package/dist/commands/config.d.ts.map +1 -1
  281. package/dist/commands/config.js +2 -0
  282. package/dist/commands/config.js.map +1 -1
  283. package/dist/commands/daemon.d.ts.map +1 -1
  284. package/dist/commands/daemon.js +7 -0
  285. package/dist/commands/daemon.js.map +1 -1
  286. package/dist/commands/proof.d.ts.map +1 -1
  287. package/dist/commands/proof.js +11 -5
  288. package/dist/commands/proof.js.map +1 -1
  289. package/dist/commands/provider.d.ts.map +1 -1
  290. package/dist/commands/provider.js +72 -0
  291. package/dist/commands/provider.js.map +1 -1
  292. package/dist/commands/ps.d.ts +4 -0
  293. package/dist/commands/ps.d.ts.map +1 -1
  294. package/dist/commands/ps.js +13 -4
  295. package/dist/commands/ps.js.map +1 -1
  296. package/dist/commands/queue.d.ts +15 -5
  297. package/dist/commands/queue.d.ts.map +1 -1
  298. package/dist/commands/queue.js +113 -37
  299. package/dist/commands/queue.js.map +1 -1
  300. package/dist/commands/scope.d.ts.map +1 -1
  301. package/dist/commands/scope.js +57 -36
  302. package/dist/commands/scope.js.map +1 -1
  303. package/dist/commands/seat.d.ts.map +1 -1
  304. package/dist/commands/seat.js +161 -10
  305. package/dist/commands/seat.js.map +1 -1
  306. package/dist/commands/start.d.ts.map +1 -1
  307. package/dist/commands/start.js +4 -3
  308. package/dist/commands/start.js.map +1 -1
  309. package/dist/commands/up.d.ts.map +1 -1
  310. package/dist/commands/up.js +10 -0
  311. package/dist/commands/up.js.map +1 -1
  312. package/dist/config-store.d.ts +7 -1
  313. package/dist/config-store.d.ts.map +1 -1
  314. package/dist/config-store.js +43 -0
  315. package/dist/config-store.js.map +1 -1
  316. package/dist/lib/scope/mission-composition.d.ts +5 -1
  317. package/dist/lib/scope/mission-composition.d.ts.map +1 -1
  318. package/dist/lib/scope/mission-composition.js +61 -1
  319. package/dist/lib/scope/mission-composition.js.map +1 -1
  320. package/dist/lib/scope/scope-fs.d.ts +2 -1
  321. package/dist/lib/scope/scope-fs.d.ts.map +1 -1
  322. package/dist/lib/scope/scope-fs.js +4 -4
  323. package/dist/lib/scope/scope-fs.js.map +1 -1
  324. package/dist/lib/scope/slice-claims.d.ts +8 -0
  325. package/dist/lib/scope/slice-claims.d.ts.map +1 -0
  326. package/dist/lib/scope/slice-claims.js +88 -0
  327. package/dist/lib/scope/slice-claims.js.map +1 -0
  328. package/dist/queue-receipt.d.ts +41 -0
  329. package/dist/queue-receipt.d.ts.map +1 -0
  330. package/dist/queue-receipt.js +272 -0
  331. package/dist/queue-receipt.js.map +1 -0
  332. package/package.json +1 -1
  333. package/tui/dist/config/config-model.d.ts.map +1 -1
  334. package/tui/dist/config/config-model.js +2 -0
  335. package/tui/dist/config/config-model.js.map +1 -1
  336. package/tui/dist/hydrate.d.ts.map +1 -1
  337. package/tui/dist/hydrate.js +11 -4
  338. package/tui/dist/hydrate.js.map +1 -1
  339. package/tui/dist/pulse/pulse-model.d.ts +1 -0
  340. package/tui/dist/pulse/pulse-model.d.ts.map +1 -1
  341. package/tui/dist/pulse/pulse-model.js +7 -3
  342. package/tui/dist/pulse/pulse-model.js.map +1 -1
  343. package/tui/dist/pulse/render-pulse.d.ts.map +1 -1
  344. package/tui/dist/pulse/render-pulse.js +3 -1
  345. package/tui/dist/pulse/render-pulse.js.map +1 -1
  346. package/tui/dist/render.d.ts.map +1 -1
  347. package/tui/dist/render.js +26 -11
  348. package/tui/dist/render.js.map +1 -1
  349. package/tui/dist/types.d.ts +3 -0
  350. package/tui/dist/types.d.ts.map +1 -1
  351. package/ui/dist/assets/{index-D5n8EwkG.js → index-DhmxKuZf.js} +159 -159
  352. package/ui/dist/index.html +1 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: openrig-skills
3
- description: "Use when you're operating OpenRig and need the right skill or context for fleet recovery, seat handover, new-seat orientation, a watchdog wake, cross-host reach to an agent on another machine, rig packaging, an OpenRig upgrade, systematic debugging, queue triage, or implementation planning; also use when you don't know what applies or nothing is projected on cold boot."
3
+ description: "Use when an agent running inside OpenRig needs the right skill or context for fleet recovery, seat handover, new-seat orientation, a watchdog wake, cross-host reach to an agent on another machine, rig packaging, an OpenRig upgrade, systematic debugging, queue triage, or implementation planning; also when the agent doesn't know what applies or nothing is projected on cold boot. Installing, starting or updating OpenRig, getting back to a team or bringing a stopped one back from a person's own session is the rigs skill."
4
4
  allowed-tools: Bash(rig:*)
5
5
  metadata:
6
6
  openrig:
@@ -351,7 +351,12 @@ def render_held_and_next(evidence):
351
351
  missions = ", ".join(row.get("missions") or [])
352
352
  output.append(f"- {row.get('qitemId') or 'a row'} — {row.get('summary') or 'no summary'}"
353
353
  + (f" [mission: {missions}]" if missions else ""))
354
- if evidence.get("heldAndNextTruncated"):
354
+ if "heldTruncated" in evidence or "nextTruncated" in evidence:
355
+ if evidence.get("heldTruncated"):
356
+ output.append("(the held list was cut; `rig queue list --owned --state blocked` has the rest)")
357
+ if evidence.get("nextTruncated"):
358
+ output.append("(the next list was cut; `rig queue list --owned --state pending` has the rest)")
359
+ elif evidence.get("heldAndNextTruncated"):
355
360
  output.append("(held and next lists were cut; `rig queue list` has the rest)")
356
361
  return "\n".join(output)
357
362
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rigs
3
- description: Use when the user mentions OpenRig, rigs or the rig command, or wants a team of coding agents (Claude Code, Codex) on their project. That includes installing, setting up, starting or updating OpenRig, seeing or getting back to their OpenRig agents, TUI or operator, starting or sharing a team, and joining this session to one.
3
+ description: Use when a person in their own Claude Code or Codex session mentions OpenRig, rigs or the rig command, or wants a team of coding agents (Claude Code, Codex) on their project. That includes installing, setting up, starting or updating OpenRig, seeing, getting back to or re-attaching to their OpenRig agents (including bringing a stopped team back), TUI or operator, starting or sharing a team, and joining this session to one. Operating a running rig from inside it (fleet recovery, seat handover, watchdog wakes, in-rig upgrades) is the openrig-skills skill.
4
4
  ---
5
5
 
6
6
  # rigs: your route into OpenRig
@@ -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.10"
3
+ version: "0.6.11"
4
4
  taxonomy: world
5
5
  purpose: "What an agent does when its user says OpenRig isn't working: diagnose, fix within permissions, verify, and escalate to OpenRig support."
6
6
  files:
@@ -1,6 +1,6 @@
1
1
  # Public capability and source-map width for the default onboarding walk.
2
2
  name: onboarding-width
3
- version: "0.6.10"
3
+ version: "0.6.11"
4
4
  taxonomy: world
5
5
  purpose: "The public capability map and source map referenced by the default onboarding walk."
6
6
  files:
@@ -11,7 +11,7 @@ not know exists.** So the point of what follows is not skill. It is recognition:
11
11
  lands, something rhymes, and you go check instead of building.
12
12
 
13
13
  Eighty-seven top-level verbs ship (capability canon refreshed through
14
- `capability-delta-v0.6.10`). This marker describes the pack's teaching, not publication or live
14
+ `capability-delta-v0.6.11`). This marker describes the pack's teaching, not publication or live
15
15
  adoption. Read this once for shape, and let it make you suspicious that a thing already exists.
16
16
  Model-divergence proclamations are live product (trust them; pins use canonical
17
17
  model IDs).
@@ -90,6 +90,8 @@ unseen — which makes messages the one delivery channel that never gets skipped
90
90
  confirm by effect, never relaunch on it. A send or wake to a seat whose latest hook is a
91
91
  question waiting for a person is refused with `target_needs_input`, even when its screen
92
92
  can't be read: read it with `rig capture` and get the question answered instead of retrying.
93
+ `--wait-for-idle N` waits before it takes the seat's delivery lease, so other sends and wakes to
94
+ that seat aren't held behind it; N is a deadline from the start of the wait.
93
95
  Over `--host` to an http-registered host, a send that may have reached the remote reads
94
96
  `remote-outcome-unknown` ("Delivery UNCONFIRMED"): check the target with `rig capture <session>
95
97
  --host <id>` before any resend. Only a host that was never reached reads as unreachable.
@@ -184,9 +186,11 @@ your context, your compaction and your replacement — and it is the only thing
184
186
  `handoff`'s, confirms the row was saved; the owner is woken after that. Before you say they were
185
187
  told, read the row's transitions, or use `--verify`. For a seat it reports the wake's terminal
186
188
  receipt and any claim separately: an unconfirmed receipt is not a failed handoff, and a claim is
187
- pickup, not proof the body was read. For a row the seat already claimed, `outcome` can read
188
- `indeterminate` while `claim` is accurate: read `claim`. It isn't a failed handoff, so don't
189
- re-run the create.
189
+ pickup, not proof the body was read. For a claimed row whose wake wasn't confirmed, `outcome`
190
+ reads `claimed`; it isn't a failed handoff, so don't re-run the create. For a registered person
191
+ who is also a seat with a pane, it also waits for the Slack receipt and reports it on its own,
192
+ up to the 30-second default, even when Slack isn't set up or the row won't be posted. With `output.compact` on (off by default), the queue write commands print a short
193
+ receipt and `--full` prints the whole row.
190
194
  - **`rig queue show`** — what a row *actually says*. The header is not the body.
191
195
  - **`rig queue claim` / `unclaim`** — is this mine and running, or still pending where two agents
192
196
  might double-work it. Put it down honestly when it is not yours.
@@ -201,7 +205,11 @@ your context, your compaction and your replacement — and it is the only thing
201
205
  visible**, with a plain-language summary and a pointer to what a human must judge; `resolve`
202
206
  writes their decision onto the durable record and wakes the owner. **Closing it would be a lie
203
207
  and sitting on it silently is indistinguishable from a crash.** `--wake-after <duration>` arms
204
- one wake for this park episode; a new park supersedes it and every exit route retires it.
208
+ one wake for this park episode; a new park supersedes it and every exit route retires it. In
209
+ this release a wake the typing guard holds back (`retained`) is recorded as that one fire and
210
+ later wakes aren't, so the timer isn't retired: it can wake the owner again at each interval
211
+ while the row stays parked. A row attached to a shared timer with `--wake-watchdog` loses its
212
+ one wake if that wake is held back.
205
213
  - **`rig queue overdue`** — what was claimed and never closed in time. **Defaults to the current
206
214
  rig**; ask for more if you mean more.
207
215
  - **`rig queue undelivered`** — pending create-path nudge failures only. For gateway or human
@@ -359,7 +367,11 @@ not have to tear one down to change it, and you rarely have to start from nothin
359
367
  is archived), so check `rig ps --nodes` first. Launch-created `AGENTS.md` or `CLAUDE` files now show in `git status`.
360
368
  `rig up <rig> --existing` puts back the OpenRig guidance blocks `rig down` removed before a
361
369
  resumed seat starts. A seat still missing one makes the rig `partially_restored` (its node lists
362
- `guidanceGaps`) and `rig up` exits 1.
370
+ `guidanceGaps`) and `rig up` exits 1. A seat that wasn't running at the snapshot, but whose
371
+ earlier session left a resume token, stops at `awaiting-decision` instead of starting fresh, in
372
+ `rig up --existing` and in `rig launch` (exit 1); the message names the command that starts it
373
+ fresh on purpose. In a pod-aware rig, a seat is rolled back as unresumable only when its runtime
374
+ reports the conversation missing.
363
375
  - **`rig down`** — stop a rig's seats and take it out of the running set. It ends the agents'
364
376
  sessions and any work in progress; don't run it on a live team unless the person asked. In
365
377
  human mode it first prints one line with each agent's last known activity, or “unknown”: a
@@ -372,7 +384,16 @@ not have to tear one down to change it, and you rarely have to start from nothin
372
384
  `rig seat launch <session> --fresh --stop`.
373
385
  - **`rig seat launch <seat> --fresh --reason <why>`** — deliberately create a blank occupant for
374
386
  exactly one existing seat. It uses no resume, fork, rebuild, snapshot, or restore packet;
375
- siblings and durable work stay put, and unmanaged ambiguity refuses.
387
+ siblings and durable work stay put, and unmanaged ambiguity refuses. With `--stop`, a seat with a
388
+ still-live older session is refused before anything is stopped; `--plan` previews it.
389
+ - **`rig seat restart <seat> --keep-conversation --reason <why>`** — restart one Codex seat in its
390
+ own pane on the same conversation, so it starts again on whatever account its Codex home now
391
+ holds; it doesn't switch accounts itself. It refuses with nothing stopped unless the seat is a
392
+ Codex seat OpenRig launched, in a single pane, with a conversation it can prove and unchanged
393
+ running settings. `--plan` runs every check and stops nothing; `--verify --expect-account
394
+ <account>` reports `moved` only when a tool turn has completed in the same conversation since
395
+ the restart and Codex's status names that account. Linux only: on macOS a
396
+ request that reaches the running-process check refuses before stopping the seat.
376
397
  - **`rig add`** / **`rig expand`** — graft one more member, or a whole new pod, onto a rig that is
377
398
  already running. `rig add` takes the rig's name or ID; a name two active rigs share is refused
378
399
  with `rig_ambiguous` and the candidates. `rig grow --new-pod` and `rig expand` are one ingress; choose by input shape.
@@ -480,7 +501,8 @@ version, from checking the environment to a useful report to the OpenRig team.
480
501
  updating Codex is the operator's job.
481
502
  - **`rig seat set-model` / `stop` / `clean`** — persist the model for later managed resumes, stop
482
503
  exactly one live seat (ending its session and any work in progress), or clear a dead seat's
483
- stale binding. When the topology is right and only
504
+ stale binding. A stop is recorded, so the rig doesn't read `degraded` for that seat, and a rig
505
+ whose seats were all stopped this way reads `stopped`. When the topology is right and only
484
506
  the occupant is wrong, use these seat lifecycle verbs or `rig handover`, not a rig down/up cycle.
485
507
  Effective-model detection follows the identity-verified current occupant, not a retained
486
508
  predecessor; a `<synthetic>` transcript record is skipped, so a PENDING model check is not a
@@ -568,7 +590,8 @@ scheme, and nothing downstream can see it.
568
590
  source actually bound. When someone later asks where the contract items came from, the drop's
569
591
  own echo is the answer — not a re-read of the files.
570
592
  - **`rig proof judge` / `rig proof show`** — record an attributed judgment on a contract item once,
571
- then read derived proof, slice, mission and project readiness. The owning scope selects
593
+ then read derived proof, slice, mission and project readiness. Both take `--project <id>` or a
594
+ `<project>:` scope prefix. The owning scope selects
572
595
  `proofPolicy.judges` (nearest slice, mission or project policy wins); consult `rig proof --help`
573
596
  for that setup and the item/evidence selectors. Accept, reject or withdraw against readable
574
597
  evidence; corrections preserve history and unrelated judgments without ancestor status edits.
@@ -795,8 +818,10 @@ your circumstances is configuration, and the ones that are not, another agent ca
795
818
  accounts, what the usage signals say, and whether a seat can be moved without stranding the
796
819
  conversation it is in the middle of. **`provider signals` reports anomalies rather than a
797
820
  listing** — unbound seats, accounts shared across several seats. A Codex seat showing its
798
- usage-limit banner reads activity `unknown` with reason `usage_limit`, and `provider signals` can
799
- show a provider-event signal for that seat's account that allows a switch decision.
821
+ usage-limit banner reads activity `unknown` with reason `usage_limit`, and keeps it while its
822
+ screen redraws; `provider signals` can show a provider-event signal for that seat's account that
823
+ allows a switch decision. With `provider.usage_windows` on (off by default), `rig provider status
824
+ --refresh` reads a Codex login's usage windows once.
800
825
  - **Codex configuration fragments** — a `codex_config_fragment` must open with a table header and
801
826
  never overrides a user-declared table; see `docs/reference/agent-spec.md`.
802
827
  - **`rig env`** — the real services behind a rig: are they up, what are they saying, how do you
@@ -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.10"
4
+ version: "0.6.11"
5
5
  taxonomy: world
6
6
  purpose: "Version-matched reference guides the help guide links to. Load a single file or section by address; don't load the whole pack."
7
7
  files:
@@ -397,7 +397,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
397
397
  | `profile` | string | yes | — | Profile name from the referenced AgentSpec. Use `default` for the default profile. Exception: `none` for terminal nodes. |
398
398
  | `codex_config_profile` | string | no | — | Codex-only native profile passed as `-p <name>`; letters, numbers, `_`, `.`, `-`. Separate from the AgentSpec `profile`. With the normal launch mode, this replaces OpenRig's explicit workspace-write sandbox flag. A full-bypass policy instead emits danger-full-access and omits this profile argument. |
399
399
  | `runtime` | string | yes | — | Agent runtime. Current supported values: `claude-code`, `codex`, `pi`, `omp`, `terminal`, `stub`. `stub` is a deterministic test harness, not an agent: a Node runner in the seat's tmux pane goes through the normal launch, skill projection, startup-file and readiness path, follows `<cwd>/.openrig/stub/script.json` when present, and calls no model. See "What a stub can and cannot prove" in `docs/as-built/test-layers.md`. |
400
- | `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec); an absolute path is used as is. Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. A cwd inside the OpenRig installation fails preflight unless `--cwd` is given. |
400
+ | `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec). If that path exists as written, it is used. Otherwise a leading `~` or `~/` expands to the home directory (`~user` does not) and `$VAR` / `${VAR}` expand from the daemon host's environment; a relative result still resolves against the rig root. A reference to an unset variable stays as written, so the cwd is that literal path and works only if it exists. Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. A cwd inside the OpenRig installation fails preflight unless `--cwd` is given. |
401
401
  | `label` | string | no | — | Human-readable member name. Shown in UI when present. |
402
402
  | `model` | string | no | — | Model override. Runtime-specific (e.g., `claude-opus-4-6` for Claude Code). |
403
403
  | `effort` | string | no | — | Reasoning effort override, trimmed. A non-string value is ignored with an advisory. |
@@ -406,7 +406,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
406
406
  | `restore_policy` | string | no | the AgentSpec's | Restore behavior. One of: `resume_if_possible`, `relaunch_fresh`, `checkpoint_only`. The default comes from the AgentSpec's `defaults.lifecycle` (else `resume_if_possible`) as narrowed by its profile; a member value may only narrow it further, in that order. |
407
407
  | `compaction_strategy` | string | no | — | `default-compaction`, `managed-compaction`, `handover` or `apprentice-handover`; `harness_native` and `pod_continuity` are accepted as deprecated aliases, and `custom_prompt` is refused. |
408
408
  | `mechanic` | string | no | — | A canonical `seat@rig` session address, for `apprentice-handover`. |
409
- | `session_source` | object | no | — | Start the seat from an existing session: `fork` with `native_id`, `rebuild` with `artifact_set`, or `agent_image` with `image_name`. Not valid on terminal members. |
409
+ | `session_source` | object | no | — | Start the seat from an existing session: `fork` with `native_id`, `rebuild` with `artifact_set`, or `agent_image` with `image_name`. A Claude Code `fork` needs Claude Code 2.0.73 or later. Not valid on terminal members. |
410
410
  | `starter_ref` | object | no | — | `{ name }` of an agent starter (`^[a-zA-Z0-9][a-zA-Z0-9_-]*$`) whose files lead the seat's startup. Not valid on terminal members or with a fork. |
411
411
  | `startup` | StartupBlock | no | — | Member-level startup files and actions. Applied only to this member. |
412
412
 
@@ -1,7 +1,7 @@
1
- # What changed in OpenRig 0.6.10
1
+ # What changed in OpenRig 0.6.11
2
2
 
3
- This note is for an agent on an install that was just upgraded to 0.6.10. It lists only what behaves differently from
4
- 0.6.9 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.11. It lists only what behaves differently from
4
+ 0.6.10 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,158 +9,159 @@ 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`). Two migrations run on the first start: `099`
13
- adds one partial index to the queue table, and `101` adds four empty columns to `sessions`. Neither changes existing
14
- data. There is no migration `100`. The bundled openrig-core plugin goes from 0.1.8 to 0.1.9.
12
+ - **Restart the daemon** (`rig daemon stop`, then `rig daemon start`). One migration runs on the first start: `103`
13
+ adds one column to `sessions`, `intentionally_stopped`, which is 0 for every existing row. There are no migrations
14
+ `100` or `102`. The bundled openrig-core plugin stays at 0.1.9; two of its files changed.
15
+ - **Two new switches, both off by default:**
16
+ - `output.compact` (or `OPENRIG_OUTPUT_COMPACT`): the seven queue write commands (`rig queue create`, `claim`,
17
+ `unclaim`, `update`, `block`, `handoff` and `handoff-and-complete`) print a short receipt instead of the whole
18
+ row, and `--full` prints the whole row. While it's off their output is unchanged, `--full` is accepted, and
19
+ `rig config` lists the key.
20
+ - `provider.usage_windows` (or `OPENRIG_PROVIDER_USAGE_WINDOWS` in the daemon's environment): `rig provider status
21
+ --refresh` reads a Codex login's usage windows once. While it's off, `--refresh` says how to turn it on and exits 1.
15
22
 
16
23
  ## Output that changed shape
17
24
 
18
- - **`rig capture --lines N` is the last N lines,** after blank rows at the bottom are dropped. When earlier lines are
19
- cut, stderr says `[rig capture: <session>: N earlier lines not shown; last M shown]`. In `--json`, `lines` is then
20
- the count returned, and `requestedLines` and `omittedLines` are new (per seat under `--rig` or `--pod`). For the old
21
- output, N history lines plus the whole pane, add `--history-plus-pane`; it keeps the old JSON too, without
22
- `requestedLines` or `omittedLines`. Without `--lines`, or with a non-numeric or zero `--lines`, nothing changed. A
23
- short capture doesn't prove a seat is idle.
24
- - **Compact `rig queue list` rows carry `summary`,** and so do `overdue` and `undelivered`. The fields they leave out
25
- (`body`, `evidenceRef`, `humanDetail`, `waiting`, `chainOfRecord`, `replyTo`, `humanQuestions`, `humanAnswers`) are
26
- now absent, not `null` or `""`, and `fieldsElided` names them. A filter that tested those fields for null must test
27
- for presence. Read a full row with `rig queue show <id> --full --json`.
28
- - **`lastNudgeResult` reads `claimed`** on a claimed row whose wake was recorded as `delivered-ack-pending` or
29
- `indeterminate:…`. The recorded value is unchanged and shows in the new `lastNudgeWireResult`; unclaiming brings it
30
- back. `claimed` is never promoted to `verified`.
31
- - **`rig chatroom history` returns the newest messages** when you give neither `--after` nor `--since`, still listed
32
- oldest first. Before, a room longer than the limit returned its oldest messages. `--after` and `--since` still page
33
- forward from that point, and `rig chatroom wait` is unchanged.
25
+ - **`rig queue create --verify` reports `outcome: "claimed"`** for a claimed row whose wake wasn't confirmed, instead
26
+ of `indeterminate`. A claim is pickup, not proof the body was read.
27
+ - **`rig queue create --verify` to a registered person who is also a seat with a pane reports the Slack side too.**
28
+ Beside the terminal wake it adds a `gateway` object: `posted` (`connectorAccepted: true`), `transport-failed` or
29
+ `never-posted` (`connectorAccepted: false`, with the detail), or `still-pending` (`connectorAccepted: null`). The
30
+ wait is still bounded by the existing 30-second default, and it can use all of it even when Slack isn't set up or the
31
+ row won't be posted; the Slack side then reads `still-pending`. Posted isn't read, and "This is not a failed handoff"
32
+ isn't shown when Slack reports a failed delivery. `GET /api/queue/:qitemId` returns `ownerNotificationLevel`, or
33
+ `null`.
34
+ - **`rig queue whoami --work-candidates` returns up to 50 held and 50 next rows,** with `heldTruncated` and
35
+ `nextTruncated`. `heldAndNextTruncated` now means either list was cut. With `OPENRIG_REFOCUS_WORK_PACKET` on (off by
36
+ default, as in 0.6.10), the refocus work packet lists held and next work separately, up to 50 each.
37
+ - **`rig ps --nodes --json` carries `intentionallyStopped`,** and `rig ps --nodes` shows `usage_limit` under REASON for a
38
+ Codex seat at its usage limit.
34
39
 
35
40
  ## Seats and restore
36
41
 
37
- - **`rig launch <rigId> <seat>` no longer calls an exited agent running.** When a seat's kept pane is at an idle shell,
38
- the launch returns `attention_required` (HTTP 409, exit 1) with `Session alive, agent not running for '<seat>'` and
39
- the ways back: resume it with `--snapshot-id <id>` when a snapshot can, `rig seat launch <session> --fresh --stop`, or
40
- restart the agent in the pane. The pane and its history are kept. This covers Claude Code, Codex, Pi and OMP seats.
41
- - **`rig up <rig> --existing` puts back the guidance `rig down` removed.** Before a resumed seat starts, the missing
42
- OpenRig managed blocks go back into the rig's Claude file (`CLAUDE.md`, or `CLAUDE.local.md`) or `AGENTS.md` for
43
- Codex. Existing blocks and the person's own text are untouched, and nothing is sent to the conversation. The
44
- warnings say `Restore guidance: <seat>: put back missing blocks …`. A seat still missing a block keeps running, its
45
- node lists `guidanceGaps`, the rig reads `partially_restored` instead of `fully_restored`, and `rig up` exits 1.
46
- - **A resumed Claude seat whose session ID changed can prove.** When Claude continues `--resume T1` under a new ID T2,
47
- and the first SessionStart hook from the process OpenRig launched reports `source: "resume"`, OpenRig records T2. The
48
- seat restores as `resumed`, `rig seat clear-attention` can clear it, and sends stop warning that the launch identity
49
- differs. Resume commands now start with `OPENRIG_RESUME_LAUNCH='<T1>'`. It needs openrig-core 0.1.9; `/clear`, an
50
- in-process `/resume`, or a hand-started process still keep the refusal.
51
- - **A restore no longer proves a seat from a launcher's token** when the launcher isn't Claude and the Claude it
52
- started names a different conversation. That seat reads `mismatch` and the restore returns `attention_required`.
53
- - **A seat whose tmux session is confirmed gone reads `detached`,** with activity `unknown` and reason
54
- `session_missing`. `rig ps --nodes` shows `tmux session missing; restore or relaunch the seat`, `rig seat status`
55
- prints a `Reason:` line, and `--full --json` adds `storedSessionStatus`. The stored status isn't rewritten.
56
- - **A Codex seat at its usage limit reads `unknown` with reason `usage_limit`,** not idle, when its screen ends with
57
- the `■ You've hit your usage limit` banner. For a seat bound to a known Codex account, `rig provider signals` can show
58
- a provider-event signal for that account that allows a switch decision.
59
- - **`rig add <rig> …` takes the rig's name as well as its ID.** A name two active rigs share is refused with
60
- `rig_ambiguous` and the candidates. `rig launch` still takes an ID only.
61
- - **`rig start` says why it skipped an existing kernel:** `Kernel auto-boot skipped (kernel rig already managed).` and,
62
- if its seats aren't running, `rig up kernel --existing`.
42
+ - **A restore no longer starts a seat fresh when an earlier occupant left a resume token.** If a seat wasn't running
43
+ when the snapshot was taken, but an earlier session recorded a resume token, `rig up --existing` and `rig launch`
44
+ stop that seat at `awaiting-decision` and start nothing, because the token doesn't prove that conversation can still
45
+ resume. `rig launch` of such a seat exits 1 where it used to start it fresh. The message names the command that
46
+ starts it fresh on purpose. See the known gap below for how this shows in the rig status API.
47
+ - **In a restore of a rig whose seats are in pods, a seat is rolled back as unresumable only when its runtime reports
48
+ the conversation missing.** When Claude, Codex or Pi reports that, the seat goes back to `awaiting-decision` and
49
+ nothing starts, instead of a failed launch that left the new pane behind. A rig where every seat ends this way reads
50
+ `partially_restored` instead of `failed`; the exit code is 1 either way. A Claude that exits to its shell for another
51
+ reason keeps 0.6.10's result: the seat is reported failed and its pane is kept, so you can read what happened. Restores
52
+ of rigs without pods keep their earlier handling.
53
+ - **`rig seat launch --fresh --stop` checks before it stops anything.** A seat with a still-live older session is
54
+ refused before the current agent is stopped; 0.6.10 stopped it first. `--plan` previews a fresh launch without
55
+ changing anything and exits 0 even when it would be blocked. `--reason` is required only to execute; leaving it out
56
+ reports `missing_reason`.
57
+ - **A seat you stop on purpose no longer makes its rig read `degraded`.** `rig seat stop` records the stop, and `rig ps`
58
+ and the TUI leave that seat out of the rig's state; running counts still exclude it. A rig whose seats were all
59
+ stopped this way reads `stopped`.
60
+ - **Restart one Codex seat in place, on Linux:** `rig seat restart <seat> --keep-conversation --reason "<why>"`
61
+ restarts it in its own pane on the same conversation, so it starts again on whatever account its Codex home now
62
+ holds. It doesn't switch accounts itself. Before it stops anything, it checks that the seat is a Codex seat OpenRig
63
+ launched, in a single pane, with a conversation it can prove, and that relaunching wouldn't change the running
64
+ settings; any doubt refuses with nothing stopped. `--plan` runs every check and stops nothing.
65
+ `--verify --expect-account <account>` reports `moved` only when a tool turn has completed in the same conversation
66
+ since the restart and Codex's status names that account.
67
+ On macOS, a request that gets as far as reading the running process refuses before stopping the seat, because that
68
+ reading depends on `/proc`.
69
+ - **A forked Claude seat launches with its own session ID** (`rig fork`, or `session_source: fork`), so strict restore
70
+ and clear-attention can verify it as its own conversation. Forking a Claude seat needs Claude Code 2.0.73 or later,
71
+ which OpenRig doesn't check. Forks launched before this keep reading `mismatch` until they're relaunched.
72
+ - **Seats no longer inherit the launching Claude Code or Herdr session's identity variables,** such as `CLAUDECODE`.
73
+ If removing them fails, the launch goes ahead with a warning.
74
+ - **A member's `cwd` in a rig spec can be `~`, start with `~/`, or use `$VAR` or `${VAR}`,** expanded from the daemon's
75
+ environment, when the path as written doesn't exist. `rig up` warns on stderr when it chose `/` as the launch folder
76
+ itself.
77
+ - **A late readiness result no longer overwrites a newer launch attempt.**
63
78
 
64
79
  ## Sends and wakes
65
80
 
66
- - **Codex seats behind a launcher receive sends.** When a seat's `codex` is a launcher that starts Codex as a child,
67
- `rig send` and queue wakes used to refuse with "reports sh as the foreground command". The deepest `codex` on one
68
- process chain now counts as the seat. Codex processes on separate branches, or naming different conversations, are
69
- still refused.
70
- - **Claude's faint suggested prompt isn't a person's draft.** A send to an idle Claude seat whose empty input box shows
71
- only that suggestion is no longer refused as `prompt_draft`. OpenRig takes one styled capture to tell; real typed or
72
- pasted text is still refused, and a suggestion that wraps onto a second row still reads as a draft.
73
- - **`rig queue create --verify` reports a seat's wake and claim.** For an agent destination it returns as soon as a
74
- wake result or a claim is recorded, bounded at 30 seconds, with `receiptSource: "terminal"`, `outcome`, `wakeResult`
75
- and `claim {observed, claimedAt, pickup}`. An unconfirmed receipt is not a failed handoff. See the known gap below
76
- for a row the seat already claimed.
77
- - **Keep agent-to-agent escalations off the person's Slack (off by default).** `rig config set queue.wake_human_rung
78
- explicit-only` (or `OPENRIG_QUEUE_WAKE_HUMAN_RUNG`) stops the wake ladder's last step at `rig view show escalations`
79
- unless the row is addressed to a person: an `@external` address or a registered human. A seat stuck at a prompt only
80
- a person can clear still reaches one, and an unreadable human registry posts everything. The default, `always`,
81
- changes nothing.
82
-
83
- ## Slack
84
-
85
- - **A decision click that isn't recorded gets one reply in the thread** saying why: the clicker isn't registered, the
86
- decision was sent to someone else or is no longer waiting, the button no longer matches, or OpenRig can't find the
87
- decision. Where it helps, the reply asks for an answer in words. A recorded click still gets its usual reply, and a
88
- redelivered click gets no second one. It's best effort and needs the bot token. A successful press doesn't exercise
89
- these replies.
90
-
91
- ## Terminals and attach
92
-
93
- - **Attach commands name the daemon's tmux server.** When the daemon was started inside tmux on a non-default socket,
94
- every attach command OpenRig prints carries `-L <name>` or `-S <path>`, including `tmuxAttachCommand` in `rig ps
95
- --json`. From inside tmux, run it as `env -u TMUX <tmuxAttachCommand>`. On the default server nothing changed.
96
- - **When a caller of the daemon's terminal API names no provider, the daemon uses cmux if Herdr isn't available** and
97
- cmux is, and says so. A named `--provider` is used as named. `rig terminal open` without `--provider`, and the TUI's
98
- "Open terminals", open Herdr, or plain tmux when Herdr is missing, never cmux. The TUI's preview now asks for the
99
- same provider as the window it opens, so it isn't refused when cmux is running.
100
- - **A tmux started inside a Herdr pane is recognised** by Herdr's markers (`HERDR_ENV`, `HERDR_PANE_ID`,
101
- `HERDR_SOCKET_PATH`), so `rig terminal open --window` opens in that Herdr.
102
-
103
- ## Setup
104
-
105
- - **`rig setup --providers claude|codex|both`** (or a comma list) sets which harnesses it installs and checks. One not
106
- chosen reads `skipped` with `Not selected: …`, never failed. Without the flag, setup is unchanged. `rig doctor` still
107
- checks both.
108
- - **A first `rig daemon start` after a timed-out probe goes ahead when the port is free,** as on WSL2. A port that's
109
- really held is refused with `Address already in use (EADDRINUSE)` and the `--port` advice.
110
-
111
- ## Teams
112
-
113
- - **Starter and factory teams run their own first steps and checks without stopping for approval** where they can:
114
- plain `rig` commands, the file tool instead of a heredoc, the project's test command first. Their leads read the goal
115
- from `rig queue show <id> --full`.
116
- - **The operator says what a team launch changes in the person's folder before asking** (`CLAUDE.md`, skills,
117
- `.mcp.json`, `.openrig/`, and an accept-edits `.claude/settings.local.json`), and offers a separate copy such as a git
118
- worktree. When a seat shows `needs_input`, the operator or lead tells the person which seat, what it asks, and its
119
- attach command.
81
+ - **`rig send --wait-for-idle N` waits before it takes the seat's delivery lease,** so other sends and queue wakes to
82
+ that seat aren't held behind a long wait. N is now a deadline from the start of the wait, including any time spent
83
+ waiting for the lease. A timeout names the wait you asked for.
84
+ - **A parked seat whose occupant is known isn't woken again for the same rows after a wake was delivered,** until it
85
+ updates one of them or one changes state. A failed, refused or unrecorded wake still repeats at the next park, and a
86
+ new occupant gets its first wake. "Delivered" means the wake was typed into the seat's terminal, not that the agent
87
+ read it.
88
+ - **`rig send --verify` confirms enveloped multi-line messages that the agent's screen indents,** and queue wakes use
89
+ the same check.
90
+ - **A Claude footer in auto, bypass or plan mode on the last line reads idle** when no activity hook is reporting.
91
+ - **A failed Pi or OMP turn shows the provider's own reason** when it gives one.
92
+ - **A `handed-off` closure with no visible successor** gets the same custody advisory and stuck-sweep finding as a
93
+ `done` closure.
94
+
95
+ ## Status
96
+
97
+ - **A Codex seat at its usage limit stays `unknown` with reason `usage_limit`** while its screen redraws, instead of
98
+ reading `running`. It clears when a readable screen shows no banner, or when Codex shows it's working again. See the
99
+ known gap below.
100
+ - **`rig ps` takes a rig's running count and status from the same set of sessions as `rig ps --nodes`.**
101
+ - **`rig whoami --full --json` shows a Codex seat's `runtimeContext.threadId`** when its stored conversation ID was
102
+ verified resumable.
103
+ - **The TUI says when a queue sample hit its cap or failed to load:** counts read `N+`, a seat missing from the sample
104
+ shows `?`, and Pulse no longer lists a NEEDS YOU item a second time. The caps count the whole host, so a quiet rig can
105
+ read `?` while another rig is busy.
106
+ - **The TUI Topology table's Q, WORK and NOW columns fill again** on drilled views and on a seat's page.
120
107
 
121
108
  ## Smaller fixes
122
109
 
123
- - `_` and `%` in a `rig view show <lens> --rig <name>` rig name are no longer wildcards, in all seven lenses that
124
- filter by rig.
125
- - `rig ask` matches chat keywords such as `config.json` or `C++` literally.
126
- - `rig heartbeat` reads CRLF queue files and reads a zone-less proof timestamp as UTC when picking the latest.
127
- - `rig usage top` reads every sample in its window; `rig usage top|series --json` prints the daemon's error as JSON.
128
- - A `?limit=` that isn't a number returns 400, not 500.
129
- - `rig workflow instantiate` and `project` print the instance and packet the daemon returned.
130
- - `rig transcript --tail` keeps a line ending in `%` and drops a repeated prompt.
131
- - `--json` after `--` no longer turns an error into JSON; `rig env` prints the daemon's error.
132
- - A file read over 1 MiB ends at a whole UTF-8 character, and `truncatedAtBytes` says where.
133
- - The TUI counts CR+LF as one Enter, keeps an emoji whole at a wrap, pages Local reading directories by 10, and skips
134
- fenced examples when opening a file at a heading.
135
- - Scope progress rows go only under a matching `##` heading, frontmatter updates stay inside the exact `---`
136
- delimiters, a capability delta expires only with a readable successor file, and fenced examples no longer count as
137
- slice sections or progress tasks.
138
- - `rig package install` looks for a guidance block's closing marker only after its opening one.
139
- - A Codex seat keeps its last context reading across quota-only usage records, and a fresh Codex launch keeps git
140
- metadata paths that end in whitespace.
110
+ - A Slack reply sent with "Also send to channel" in the default channel is recovered after a connection gap.
111
+ - `rig config set daemon.port` refuses a port outside 0–65535, and a port like that from the environment or
112
+ `config.json` falls back to the file or default with a warning. `rig daemon start --port` refuses one too, with exit 1.
113
+ - Parallel `rig scope slice create` calls get different slice numbers. A number is never reused, and each create leaves
114
+ a hidden `slices/.nn-NN` claim file.
115
+ - `rig proof show` and `rig proof judge` take `--project <id>` or a `<project>:` scope prefix. Scope readiness for a
116
+ project selected in the TUI uses that project's own root.
117
+ - The chat send and topic routes return 400 before storing anything for payloads that used to fail with 500;
118
+ `/api/wake-resolve` answers a fractional or non-numeric generation with its usual "does not exist" reply; watchdog
119
+ registration refuses a `scan_interval_seconds` that can't be turned into a number (non-numeric text, a boolean, an
120
+ empty array); and unmanaged-pane discovery matches agent
121
+ process names exactly, plus `claude.exe` and names cut to 15 or 16 characters.
122
+ - The `rigs` and `openrig-skills` skill descriptions split by who is asking: a person in their own session, or an agent
123
+ inside a rig.
124
+ - A new reference page covers keeping a watch for a person with today's queue commands, installed at
125
+ `$OPENRIG_HOME/reference/keeping-a-watch.md`. See the known gap below.
141
126
 
142
127
  ## What to stop doing
143
128
 
144
- - **Stop reading "already running" from `rig launch` as healthy** for a seat whose agent may have exited; 0.6.10 says
145
- `attention_required`.
146
- - **Stop reading `rig capture --lines N` as N history lines plus the pane.** Add `--history-plus-pane` for that.
147
- - **Stop testing compact queue rows for null fields.** They're absent; check `fieldsElided`.
148
- - **Stop attaching to the default tmux server** when the printed command names `-L` or `-S`.
149
-
150
- ## Known gaps in 0.6.10
151
-
152
- - **`rig queue create --verify` can report `outcome: "indeterminate"` for a row the seat already claimed,** with
153
- "Terminal receipt unconfirmed (claimed)." Read `claim` for pickup: neither the claim nor this outcome shows the
154
- message was displayed or read. It isn't a failed handoff, so don't re-run the create.
155
- - **The latest first-install check used 0.6.9 on Linux only.** macOS was last checked with 0.6.8, and native Windows
156
- hasn't been checked.
129
+ - **Stop expecting a restore to start a seat fresh** when an earlier session left a resume token; decide at
130
+ `awaiting-decision`, or use the command the message names.
131
+ - **Stop reading `indeterminate` as the answer for a claimed row** from `rig queue create --verify`; 0.6.11 says
132
+ `claimed`.
133
+ - **Stop treating `degraded` as a stopped seat's doing** after `rig seat stop`; the rig leaves that seat out.
134
+ - **Stop counting a long `--wait-for-idle` as extra time after the lease;** N is a deadline from the start of the wait.
135
+
136
+ ## Known gaps in 0.6.11
137
+
138
+ - **`rig seat restart --keep-conversation` supports Linux only.** Its automated tests are hermetic: they don't restart a
139
+ real Codex seat.
140
+ - **The rig status API can call a running rig `blocked` because of one seat that isn't running.** It happens when the
141
+ latest snapshot recorded no occupant for that seat, an earlier session of the seat left a resume token, and its newest
142
+ session's restore policy is `resume_if_possible`. A restore from that snapshot would stop at the seat for a decision,
143
+ and `GET /api/rigs/:id/status` folds that forecast into the rig's status, so it mixes current status with restore
144
+ readiness: no seat is halted. `rig status` and the TUI's rig list don't show it for a running rig.
145
+ - **A Codex seat can keep reading as at its usage limit** when an old usage-limit banner is followed by a submitted
146
+ prompt and the agent's reply, with no Codex working line and no input line below. It's recorded again every five
147
+ minutes, where 0.6.10 let it age out. The case was constructed from the source and hasn't been seen in a real
148
+ session.
149
+ - **The keeping-a-watch page says a timer fires once; a held-back wake uses up that fire.** When the typing guard holds
150
+ a one-shot `--wake-after` wake back (it shows as `retained`), that held-back attempt is recorded as the timer's one
151
+ fire and later wakes aren't, so the timer isn't retired: it can wake the owner again at each interval while the row
152
+ stays set aside. A row sharing the timer through `--wake-watchdog`, after the original row was handed off or stopped,
153
+ loses its one wake if that wake is held back. Read the row's transitions after each wake.
154
+ - **After `rig scope slice create` says it couldn't verify membership, the slice was kept.** Check `mission.yaml` before
155
+ creating it again: creating it again makes a second slice with the same name.
156
+ - **The latest first-install check before this release used 0.6.10 on Linux only.** macOS was last checked with 0.6.8,
157
+ and native Windows hasn't been checked.
157
158
  - **Only one selected lifecycle-help command has been checked in a live Claude session;** source and parser coverage
158
159
  is broader. If a help command still asks, report it.
159
160
  - **Codex team seats aren't asked before lifecycle commands yet.**
160
161
  - **The send gate trusts the most recently recorded hook.** If hooks are recorded out of order, it can hold a send for
161
162
  a question that's already answered, or miss one that's waiting. `rig capture` shows the real screen.
162
163
  - **A Codex seat whose permission request was approved automatically can still read "needs input".**
163
- - **A launched team still writes into its working folder;** the operator now says what changes before you agree.
164
+ - **A launched team still writes into its working folder;** the operator says what changes before you agree.
164
165
  - **After a restart, `rig status` shows `Kernel: skipped` whatever the kernel seats' state.** Read them with
165
166
  `rig ps --nodes --rig kernel --full`.
166
167
  - **`rig tui --shared` still attaches on the default tmux server,** so it can't find the dashboard when the daemon runs
@@ -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.10"
4
+ version: "0.6.11"
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.10"
4
+ version: "0.6.11"
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.10"
4
+ version: "0.6.11"
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.10"
4
+ version: "0.6.11"
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.10"
4
+ version: "0.6.11"
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: