@openrig/cli 0.5.4 → 0.5.5

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 (747) hide show
  1. package/daemon/assets/guidance/openrig-start.md +7 -0
  2. package/daemon/assets/onboarding/01-world-and-purpose.md +52 -0
  3. package/daemon/assets/onboarding/02-self-and-competent-action.md +57 -0
  4. package/daemon/assets/plugins/openrig-core/README.md +5 -2
  5. package/daemon/assets/plugins/openrig-core/hooks/claude.json +3 -12
  6. package/daemon/assets/plugins/openrig-core/hooks/codex.json +5 -12
  7. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +194 -124
  8. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +18 -23
  9. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/CHANGELOG.md +92 -0
  10. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/REVISION-GUIDE.md +34 -0
  11. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROADMAP.md +23 -0
  12. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROLLOUT.md +234 -0
  13. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +404 -0
  14. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/compose.py +653 -0
  15. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/scaffold.sh +34 -0
  16. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trace-due.sh +32 -0
  17. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trace-stamp.sh +5 -0
  18. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trunk-diff.sh +18 -0
  19. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/LEARNED.md +40 -0
  20. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/NOTES.md +9 -0
  21. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/PLAYBOOK.md +5 -0
  22. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SOP.md +24 -0
  23. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SPEC.md +54 -0
  24. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +2 -0
  25. package/daemon/assets/plugins/openrig-core/skills/refocusing/SKILL.md +31 -0
  26. package/daemon/assets/plugins/openrig-core/skills/refocusing/references/refocus.md +22 -0
  27. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +221 -0
  28. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -3
  29. package/daemon/context-packs/onboarding-width/manifest.yaml +11 -0
  30. package/daemon/context-packs/{world/install/reference-material.md → onboarding-width/public-reference-material.md} +4 -26
  31. package/daemon/context-packs/{world/install/what-you-can-do.md → onboarding-width/public-what-you-can-do.md} +13 -9
  32. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  34. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/attention-queue/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/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/SKILL.md +21 -15
  54. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +3 -3
  55. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +1 -1
  71. package/daemon/context-packs/world-example/manifest.yaml +8 -0
  72. package/daemon/context-packs/world-example/your-world.md +37 -0
  73. package/daemon/dist/adapters/claude-code-adapter.d.ts +15 -0
  74. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  75. package/daemon/dist/adapters/claude-code-adapter.js +57 -0
  76. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  77. package/daemon/dist/build-info.js +3 -3
  78. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  79. package/daemon/dist/db/all-migrations.js +4 -0
  80. package/daemon/dist/db/all-migrations.js.map +1 -1
  81. package/daemon/dist/db/migrations/072_thread_seat_map.d.ts +3 -0
  82. package/daemon/dist/db/migrations/072_thread_seat_map.d.ts.map +1 -0
  83. package/daemon/dist/db/migrations/072_thread_seat_map.js +22 -0
  84. package/daemon/dist/db/migrations/072_thread_seat_map.js.map +1 -0
  85. package/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts +3 -0
  86. package/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts.map +1 -0
  87. package/daemon/dist/db/migrations/073_queue_transition_wakes.js +21 -0
  88. package/daemon/dist/db/migrations/073_queue_transition_wakes.js.map +1 -0
  89. package/daemon/dist/domain/activity-taxonomy.d.ts +112 -0
  90. package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -0
  91. package/daemon/dist/domain/activity-taxonomy.js +99 -0
  92. package/daemon/dist/domain/activity-taxonomy.js.map +1 -0
  93. package/daemon/dist/domain/bind-plan.d.ts +19 -0
  94. package/daemon/dist/domain/bind-plan.d.ts.map +1 -0
  95. package/daemon/dist/domain/bind-plan.js +25 -0
  96. package/daemon/dist/domain/bind-plan.js.map +1 -0
  97. package/daemon/dist/domain/event-bus.d.ts +6 -0
  98. package/daemon/dist/domain/event-bus.d.ts.map +1 -1
  99. package/daemon/dist/domain/event-bus.js +15 -5
  100. package/daemon/dist/domain/event-bus.js.map +1 -1
  101. package/daemon/dist/domain/gateway/gateway-process-main.d.ts.map +1 -1
  102. package/daemon/dist/domain/gateway/gateway-process-main.js +9 -0
  103. package/daemon/dist/domain/gateway/gateway-process-main.js.map +1 -1
  104. package/daemon/dist/domain/gateway/gateway-process.d.ts.map +1 -1
  105. package/daemon/dist/domain/gateway/gateway-process.js +9 -0
  106. package/daemon/dist/domain/gateway/gateway-process.js.map +1 -1
  107. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +80 -0
  108. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -0
  109. package/daemon/dist/domain/gateway/gateway-subsystem.js +149 -0
  110. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -0
  111. package/daemon/dist/domain/gateway/human-registry.d.ts +109 -0
  112. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  113. package/daemon/dist/domain/gateway/human-registry.js +250 -0
  114. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  115. package/{dist → daemon/dist/domain/gateway}/slack/config.d.ts +8 -5
  116. package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -0
  117. package/{dist → daemon/dist/domain/gateway}/slack/config.js +8 -6
  118. package/daemon/dist/domain/gateway/slack/config.js.map +1 -0
  119. package/{dist → daemon/dist/domain/gateway}/slack/inbound-admission.d.ts +1 -1
  120. package/daemon/dist/domain/gateway/slack/inbound-admission.d.ts.map +1 -0
  121. package/daemon/dist/domain/gateway/slack/inbound-admission.js.map +1 -0
  122. package/{dist → daemon/dist/domain/gateway}/slack/inbound.d.ts +14 -3
  123. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -0
  124. package/{dist → daemon/dist/domain/gateway}/slack/inbound.js +6 -5
  125. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -0
  126. package/daemon/dist/domain/gateway/slack/message.d.ts +80 -0
  127. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -0
  128. package/daemon/dist/domain/gateway/slack/message.js +164 -0
  129. package/daemon/dist/domain/gateway/slack/message.js.map +1 -0
  130. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +54 -0
  131. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -0
  132. package/daemon/dist/domain/gateway/slack/outbound-driver.js +96 -0
  133. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -0
  134. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +53 -0
  135. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -0
  136. package/daemon/dist/domain/gateway/slack/queue-access.js +72 -0
  137. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -0
  138. package/daemon/dist/domain/gateway/slack/secrets.d.ts.map +1 -0
  139. package/daemon/dist/domain/gateway/slack/secrets.js.map +1 -0
  140. package/daemon/dist/domain/gateway/slack/slack-api.d.ts +106 -0
  141. package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -0
  142. package/daemon/dist/domain/gateway/slack/slack-api.js +198 -0
  143. package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -0
  144. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +47 -0
  145. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -0
  146. package/daemon/dist/domain/gateway/slack/slack-delivery.js +147 -0
  147. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -0
  148. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +21 -0
  149. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -0
  150. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +198 -0
  151. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -0
  152. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +30 -0
  153. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -0
  154. package/daemon/dist/domain/gateway/slack/socket-inbound.js +99 -0
  155. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -0
  156. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -0
  157. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -0
  158. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts +17 -0
  159. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -0
  160. package/daemon/dist/domain/gateway/slack/thread-routing.js +35 -0
  161. package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -0
  162. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +56 -0
  163. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -0
  164. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +103 -0
  165. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -0
  166. package/daemon/dist/domain/gateway/spawn-gateway.d.ts.map +1 -1
  167. package/daemon/dist/domain/gateway/spawn-gateway.js +9 -0
  168. package/daemon/dist/domain/gateway/spawn-gateway.js.map +1 -1
  169. package/daemon/dist/domain/gateway/transport.d.ts.map +1 -1
  170. package/daemon/dist/domain/gateway/transport.js +9 -0
  171. package/daemon/dist/domain/gateway/transport.js.map +1 -1
  172. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  173. package/daemon/dist/domain/node-inventory.js +20 -0
  174. package/daemon/dist/domain/node-inventory.js.map +1 -1
  175. package/daemon/dist/domain/parked-query.d.ts +81 -0
  176. package/daemon/dist/domain/parked-query.d.ts.map +1 -0
  177. package/daemon/dist/domain/parked-query.js +126 -0
  178. package/daemon/dist/domain/parked-query.js.map +1 -0
  179. package/daemon/dist/domain/queue-pickup.d.ts +38 -0
  180. package/daemon/dist/domain/queue-pickup.d.ts.map +1 -0
  181. package/daemon/dist/domain/queue-pickup.js +67 -0
  182. package/daemon/dist/domain/queue-pickup.js.map +1 -0
  183. package/daemon/dist/domain/queue-repository.d.ts +38 -10
  184. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  185. package/daemon/dist/domain/queue-repository.js +267 -35
  186. package/daemon/dist/domain/queue-repository.js.map +1 -1
  187. package/daemon/dist/domain/queue-stuck-sweep.d.ts +77 -0
  188. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -0
  189. package/daemon/dist/domain/queue-stuck-sweep.js +348 -0
  190. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -0
  191. package/daemon/dist/domain/queue-wake-ladder.d.ts +96 -0
  192. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -0
  193. package/daemon/dist/domain/queue-wake-ladder.js +533 -0
  194. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -0
  195. package/daemon/dist/domain/queue-wake-repository.d.ts +37 -0
  196. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -0
  197. package/daemon/dist/domain/queue-wake-repository.js +80 -0
  198. package/daemon/dist/domain/queue-wake-repository.js.map +1 -0
  199. package/daemon/dist/domain/rebuild-priming-chain.d.ts +28 -0
  200. package/daemon/dist/domain/rebuild-priming-chain.d.ts.map +1 -0
  201. package/daemon/dist/domain/rebuild-priming-chain.js +71 -0
  202. package/daemon/dist/domain/rebuild-priming-chain.js.map +1 -0
  203. package/daemon/dist/domain/review/compose.d.ts +3 -1
  204. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  205. package/daemon/dist/domain/review/compose.js +14 -8
  206. package/daemon/dist/domain/review/compose.js.map +1 -1
  207. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  208. package/daemon/dist/domain/review/gather.js +3 -1
  209. package/daemon/dist/domain/review/gather.js.map +1 -1
  210. package/daemon/dist/domain/rigspec-instantiator.d.ts +3 -0
  211. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  212. package/daemon/dist/domain/rigspec-instantiator.js +18 -0
  213. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  214. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +6 -5
  215. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  216. package/daemon/dist/domain/scope/plan-lock-artifacts.js +23 -20
  217. package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  218. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +4 -5
  219. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  220. package/daemon/dist/domain/scope/scaffold-placeholder.js +6 -7
  221. package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  222. package/daemon/dist/domain/scope/scope-approve.d.ts +1 -1
  223. package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  224. package/daemon/dist/domain/scope/scope-approve.js +5 -4
  225. package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  226. package/daemon/dist/domain/scope/scope-audit.d.ts +42 -3
  227. package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  228. package/daemon/dist/domain/scope/scope-audit.js +78 -93
  229. package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  230. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  231. package/daemon/dist/domain/scope/scope-view-projection.js +7 -2
  232. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  233. package/daemon/dist/domain/seat-activity-service.d.ts +91 -0
  234. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  235. package/daemon/dist/domain/seat-activity-service.js +416 -1
  236. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  237. package/daemon/dist/domain/seat-handover-planner.d.ts +14 -0
  238. package/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -1
  239. package/daemon/dist/domain/seat-handover-planner.js +14 -1
  240. package/daemon/dist/domain/seat-handover-planner.js.map +1 -1
  241. package/daemon/dist/domain/seat-handover-service.d.ts +54 -1
  242. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  243. package/daemon/dist/domain/seat-handover-service.js +162 -19
  244. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  245. package/daemon/dist/domain/session-transport.js +1 -2
  246. package/daemon/dist/domain/session-transport.js.map +1 -1
  247. package/daemon/dist/domain/successor-session-launcher.d.ts +6 -1
  248. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  249. package/daemon/dist/domain/successor-session-launcher.js +3 -3
  250. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  251. package/daemon/dist/domain/types.d.ts +33 -0
  252. package/daemon/dist/domain/types.d.ts.map +1 -1
  253. package/daemon/dist/domain/types.js.map +1 -1
  254. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  255. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  256. package/daemon/dist/domain/user-settings/settings-store.js +48 -0
  257. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  258. package/daemon/dist/domain/view-projector.d.ts +1 -1
  259. package/daemon/dist/domain/view-projector.d.ts.map +1 -1
  260. package/daemon/dist/domain/view-projector.js +41 -2
  261. package/daemon/dist/domain/view-projector.js.map +1 -1
  262. package/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
  263. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  264. package/daemon/dist/domain/watchdog-policy-engine.js +3 -0
  265. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  266. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +4 -3
  267. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  268. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +56 -196
  269. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  270. package/daemon/dist/domain/workspace/getting-started-narrative.js +1 -1
  271. package/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -1
  272. package/daemon/dist/domain/workspace/workspace-doctor.d.ts +8 -11
  273. package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  274. package/daemon/dist/domain/workspace/workspace-doctor.js +23 -25
  275. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  276. package/daemon/dist/gateway-slack-surface.d.ts +4 -0
  277. package/daemon/dist/gateway-slack-surface.d.ts.map +1 -0
  278. package/daemon/dist/gateway-slack-surface.js +8 -0
  279. package/daemon/dist/gateway-slack-surface.js.map +1 -0
  280. package/daemon/dist/index.d.ts +29 -0
  281. package/daemon/dist/index.d.ts.map +1 -1
  282. package/daemon/dist/index.js +99 -4
  283. package/daemon/dist/index.js.map +1 -1
  284. package/daemon/dist/lib/pane-envelope.d.ts +1 -1
  285. package/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  286. package/daemon/dist/lib/pane-envelope.js +8 -14
  287. package/daemon/dist/lib/pane-envelope.js.map +1 -1
  288. package/daemon/dist/routes/activity.d.ts +13 -0
  289. package/daemon/dist/routes/activity.d.ts.map +1 -1
  290. package/daemon/dist/routes/activity.js +186 -0
  291. package/daemon/dist/routes/activity.js.map +1 -1
  292. package/daemon/dist/routes/config.js +2 -2
  293. package/daemon/dist/routes/config.js.map +1 -1
  294. package/daemon/dist/routes/gateway.d.ts +3 -0
  295. package/daemon/dist/routes/gateway.d.ts.map +1 -0
  296. package/daemon/dist/routes/gateway.js +46 -0
  297. package/daemon/dist/routes/gateway.js.map +1 -0
  298. package/daemon/dist/routes/health-summary.d.ts.map +1 -1
  299. package/daemon/dist/routes/health-summary.js +8 -0
  300. package/daemon/dist/routes/health-summary.js.map +1 -1
  301. package/daemon/dist/routes/queue.d.ts.map +1 -1
  302. package/daemon/dist/routes/queue.js +3 -1
  303. package/daemon/dist/routes/queue.js.map +1 -1
  304. package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  305. package/daemon/dist/routes/scope-audit.js +72 -13
  306. package/daemon/dist/routes/scope-audit.js.map +1 -1
  307. package/daemon/dist/routes/seat.d.ts.map +1 -1
  308. package/daemon/dist/routes/seat.js +15 -0
  309. package/daemon/dist/routes/seat.js.map +1 -1
  310. package/daemon/dist/server.d.ts +17 -0
  311. package/daemon/dist/server.d.ts.map +1 -1
  312. package/daemon/dist/server.js +25 -4
  313. package/daemon/dist/server.js.map +1 -1
  314. package/daemon/dist/startup.d.ts +4 -0
  315. package/daemon/dist/startup.d.ts.map +1 -1
  316. package/daemon/dist/startup.js +33 -0
  317. package/daemon/dist/startup.js.map +1 -1
  318. package/daemon/docs/reference/agent-state-taxonomy.md +106 -0
  319. package/daemon/docs/reference/project-workspace.md +22 -14
  320. package/daemon/docs/reference/refocus-channel.md +27 -14
  321. package/daemon/docs/reference/sdlc-conventions.md +24 -13
  322. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  323. package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +21 -15
  324. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +1 -1
  325. package/dist/build-info.js +3 -3
  326. package/dist/commands/config-init-workspace.d.ts.map +1 -1
  327. package/dist/commands/config-init-workspace.js +32 -57
  328. package/dist/commands/config-init-workspace.js.map +1 -1
  329. package/dist/commands/config.d.ts.map +1 -1
  330. package/dist/commands/config.js +5 -0
  331. package/dist/commands/config.js.map +1 -1
  332. package/dist/commands/daemon.d.ts.map +1 -1
  333. package/dist/commands/daemon.js +14 -4
  334. package/dist/commands/daemon.js.map +1 -1
  335. package/dist/commands/gateway.d.ts +19 -1
  336. package/dist/commands/gateway.d.ts.map +1 -1
  337. package/dist/commands/gateway.js +157 -33
  338. package/dist/commands/gateway.js.map +1 -1
  339. package/dist/commands/parked.d.ts +3 -0
  340. package/dist/commands/parked.d.ts.map +1 -0
  341. package/dist/commands/parked.js +83 -0
  342. package/dist/commands/parked.js.map +1 -0
  343. package/dist/commands/proof.d.ts +2 -1
  344. package/dist/commands/proof.d.ts.map +1 -1
  345. package/dist/commands/proof.js +8 -8
  346. package/dist/commands/proof.js.map +1 -1
  347. package/dist/commands/ps.d.ts +10 -0
  348. package/dist/commands/ps.d.ts.map +1 -1
  349. package/dist/commands/ps.js +14 -3
  350. package/dist/commands/ps.js.map +1 -1
  351. package/dist/commands/queue.d.ts.map +1 -1
  352. package/dist/commands/queue.js +31 -3
  353. package/dist/commands/queue.js.map +1 -1
  354. package/dist/commands/scope.d.ts.map +1 -1
  355. package/dist/commands/scope.js +255 -136
  356. package/dist/commands/scope.js.map +1 -1
  357. package/dist/commands/seat.d.ts.map +1 -1
  358. package/dist/commands/seat.js +40 -10
  359. package/dist/commands/seat.js.map +1 -1
  360. package/dist/commands/send.d.ts +1 -1
  361. package/dist/commands/send.d.ts.map +1 -1
  362. package/dist/commands/send.js +13 -14
  363. package/dist/commands/send.js.map +1 -1
  364. package/dist/commands/slack.d.ts +14 -28
  365. package/dist/commands/slack.d.ts.map +1 -1
  366. package/dist/commands/slack.js +73 -187
  367. package/dist/commands/slack.js.map +1 -1
  368. package/dist/commands/start.d.ts +3 -0
  369. package/dist/commands/start.d.ts.map +1 -1
  370. package/dist/commands/start.js +12 -5
  371. package/dist/commands/start.js.map +1 -1
  372. package/dist/commands/up.d.ts.map +1 -1
  373. package/dist/commands/up.js +11 -4
  374. package/dist/commands/up.js.map +1 -1
  375. package/dist/commands/view.d.ts +4 -2
  376. package/dist/commands/view.d.ts.map +1 -1
  377. package/dist/commands/view.js +1 -1
  378. package/dist/commands/view.js.map +1 -1
  379. package/dist/commands/watchdog.d.ts.map +1 -1
  380. package/dist/commands/watchdog.js +2 -1
  381. package/dist/commands/watchdog.js.map +1 -1
  382. package/dist/commands/workspace.js +1 -1
  383. package/dist/config-store.d.ts +15 -1
  384. package/dist/config-store.d.ts.map +1 -1
  385. package/dist/config-store.js +60 -0
  386. package/dist/config-store.js.map +1 -1
  387. package/dist/cross-host-target.d.ts.map +1 -1
  388. package/dist/cross-host-target.js +5 -4
  389. package/dist/cross-host-target.js.map +1 -1
  390. package/dist/daemon-lifecycle.d.ts +45 -3
  391. package/dist/daemon-lifecycle.d.ts.map +1 -1
  392. package/dist/daemon-lifecycle.js +126 -0
  393. package/dist/daemon-lifecycle.js.map +1 -1
  394. package/dist/index.d.ts.map +1 -1
  395. package/dist/index.js +2 -0
  396. package/dist/index.js.map +1 -1
  397. package/dist/lib/scope/capability-delta.d.ts +9 -0
  398. package/dist/lib/scope/capability-delta.d.ts.map +1 -0
  399. package/dist/lib/scope/capability-delta.js +73 -0
  400. package/dist/lib/scope/capability-delta.js.map +1 -0
  401. package/dist/lib/scope/scaffold-placeholder.d.ts +4 -5
  402. package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
  403. package/dist/lib/scope/scaffold-placeholder.js +6 -7
  404. package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
  405. package/dist/lib/scope/scope-audit.d.ts +42 -3
  406. package/dist/lib/scope/scope-audit.d.ts.map +1 -1
  407. package/dist/lib/scope/scope-audit.js +78 -93
  408. package/dist/lib/scope/scope-audit.js.map +1 -1
  409. package/dist/lib/scope/scope-fs.d.ts +18 -14
  410. package/dist/lib/scope/scope-fs.d.ts.map +1 -1
  411. package/dist/lib/scope/scope-fs.js +60 -29
  412. package/dist/lib/scope/scope-fs.js.map +1 -1
  413. package/dist/lib/scope/templates.d.ts +17 -17
  414. package/dist/lib/scope/templates.d.ts.map +1 -1
  415. package/dist/lib/scope/templates.js +35 -39
  416. package/dist/lib/scope/templates.js.map +1 -1
  417. package/dist/lib/scope-templates/backlog-deprecation.md +3 -1
  418. package/dist/lib/scope-templates/backlog-tech-debt.md +3 -1
  419. package/dist/lib/scope-templates/bug-fix.md +3 -1
  420. package/dist/lib/scope-templates/capability-delta.md +60 -0
  421. package/dist/lib/scope-templates/mission-placeholder.md +9 -40
  422. package/dist/lib/scope-templates/mission-progress.md +5 -6
  423. package/dist/lib/scope-templates/mission-release.md +9 -40
  424. package/dist/lib/scope-templates/notes.md +14 -0
  425. package/dist/lib/scope-templates/placeholder.md +3 -1
  426. package/dist/lib/scope-templates/proof.md +1 -1
  427. package/dist/lib/scope-templates/release-feature.md +3 -1
  428. package/dist/lib/scope-templates/research.md +3 -1
  429. package/dist/lib/scope-templates/slice-progress.md +4 -5
  430. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts +15 -0
  431. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  432. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +57 -0
  433. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  434. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  435. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
  436. package/node_modules/@openrig/daemon/dist/db/all-migrations.js +4 -0
  437. package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
  438. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.d.ts +3 -0
  439. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.d.ts.map +1 -0
  440. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.js +22 -0
  441. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.js.map +1 -0
  442. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts +3 -0
  443. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts.map +1 -0
  444. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.js +21 -0
  445. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.js.map +1 -0
  446. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.d.ts +112 -0
  447. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -0
  448. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.js +99 -0
  449. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.js.map +1 -0
  450. package/node_modules/@openrig/daemon/dist/domain/bind-plan.d.ts +19 -0
  451. package/node_modules/@openrig/daemon/dist/domain/bind-plan.d.ts.map +1 -0
  452. package/node_modules/@openrig/daemon/dist/domain/bind-plan.js +25 -0
  453. package/node_modules/@openrig/daemon/dist/domain/bind-plan.js.map +1 -0
  454. package/node_modules/@openrig/daemon/dist/domain/event-bus.d.ts +6 -0
  455. package/node_modules/@openrig/daemon/dist/domain/event-bus.d.ts.map +1 -1
  456. package/node_modules/@openrig/daemon/dist/domain/event-bus.js +15 -5
  457. package/node_modules/@openrig/daemon/dist/domain/event-bus.js.map +1 -1
  458. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.d.ts.map +1 -1
  459. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.js +9 -0
  460. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.js.map +1 -1
  461. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.d.ts.map +1 -1
  462. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.js +9 -0
  463. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.js.map +1 -1
  464. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts +80 -0
  465. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -0
  466. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js +149 -0
  467. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -0
  468. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +109 -0
  469. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  470. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +250 -0
  471. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  472. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts +44 -0
  473. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -0
  474. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js +62 -0
  475. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js.map +1 -0
  476. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.d.ts +8 -0
  477. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.d.ts.map +1 -0
  478. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.js +20 -0
  479. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.js.map +1 -0
  480. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts +113 -0
  481. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -0
  482. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js +146 -0
  483. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js.map +1 -0
  484. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts +80 -0
  485. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -0
  486. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js +164 -0
  487. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js.map +1 -0
  488. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +54 -0
  489. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -0
  490. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js +96 -0
  491. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -0
  492. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +53 -0
  493. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -0
  494. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +72 -0
  495. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -0
  496. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.d.ts +21 -0
  497. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.d.ts.map +1 -0
  498. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.js +73 -0
  499. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.js.map +1 -0
  500. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts +106 -0
  501. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -0
  502. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js +198 -0
  503. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -0
  504. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +47 -0
  505. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -0
  506. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js +147 -0
  507. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -0
  508. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +21 -0
  509. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -0
  510. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +198 -0
  511. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -0
  512. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +30 -0
  513. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -0
  514. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js +99 -0
  515. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -0
  516. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts +62 -0
  517. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -0
  518. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js +132 -0
  519. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js.map +1 -0
  520. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts +17 -0
  521. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -0
  522. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js +35 -0
  523. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -0
  524. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +56 -0
  525. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -0
  526. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js +103 -0
  527. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -0
  528. package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.d.ts.map +1 -1
  529. package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.js +9 -0
  530. package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.js.map +1 -1
  531. package/node_modules/@openrig/daemon/dist/domain/gateway/transport.d.ts.map +1 -1
  532. package/node_modules/@openrig/daemon/dist/domain/gateway/transport.js +9 -0
  533. package/node_modules/@openrig/daemon/dist/domain/gateway/transport.js.map +1 -1
  534. package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  535. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js +20 -0
  536. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js.map +1 -1
  537. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts +81 -0
  538. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts.map +1 -0
  539. package/node_modules/@openrig/daemon/dist/domain/parked-query.js +126 -0
  540. package/node_modules/@openrig/daemon/dist/domain/parked-query.js.map +1 -0
  541. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts +38 -0
  542. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts.map +1 -0
  543. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js +67 -0
  544. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js.map +1 -0
  545. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +38 -10
  546. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  547. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +267 -35
  548. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  549. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts +77 -0
  550. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -0
  551. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +348 -0
  552. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -0
  553. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts +96 -0
  554. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -0
  555. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js +533 -0
  556. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js.map +1 -0
  557. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +37 -0
  558. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -0
  559. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +80 -0
  560. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -0
  561. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.d.ts +28 -0
  562. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.d.ts.map +1 -0
  563. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.js +71 -0
  564. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.js.map +1 -0
  565. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +3 -1
  566. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
  567. package/node_modules/@openrig/daemon/dist/domain/review/compose.js +14 -8
  568. package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
  569. package/node_modules/@openrig/daemon/dist/domain/review/gather.d.ts.map +1 -1
  570. package/node_modules/@openrig/daemon/dist/domain/review/gather.js +3 -1
  571. package/node_modules/@openrig/daemon/dist/domain/review/gather.js.map +1 -1
  572. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +3 -0
  573. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  574. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +18 -0
  575. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  576. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +6 -5
  577. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  578. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +23 -20
  579. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  580. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts +4 -5
  581. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  582. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js +6 -7
  583. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  584. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts +1 -1
  585. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  586. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js +5 -4
  587. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  588. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts +42 -3
  589. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  590. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js +78 -93
  591. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  592. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  593. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +7 -2
  594. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  595. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts +91 -0
  596. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  597. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js +416 -1
  598. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js.map +1 -1
  599. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.d.ts +14 -0
  600. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -1
  601. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.js +14 -1
  602. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.js.map +1 -1
  603. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +54 -1
  604. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  605. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +162 -19
  606. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
  607. package/node_modules/@openrig/daemon/dist/domain/session-transport.js +1 -2
  608. package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
  609. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts +6 -1
  610. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  611. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js +3 -3
  612. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  613. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +33 -0
  614. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  615. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  616. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  617. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  618. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +48 -0
  619. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  620. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts +1 -1
  621. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts.map +1 -1
  622. package/node_modules/@openrig/daemon/dist/domain/view-projector.js +41 -2
  623. package/node_modules/@openrig/daemon/dist/domain/view-projector.js.map +1 -1
  624. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
  625. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  626. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js +3 -0
  627. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  628. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +4 -3
  629. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  630. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js +56 -196
  631. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  632. package/node_modules/@openrig/daemon/dist/domain/workspace/getting-started-narrative.js +1 -1
  633. package/node_modules/@openrig/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -1
  634. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts +8 -11
  635. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  636. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js +23 -25
  637. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  638. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts +4 -0
  639. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts.map +1 -0
  640. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js +8 -0
  641. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js.map +1 -0
  642. package/node_modules/@openrig/daemon/dist/index.d.ts +29 -0
  643. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  644. package/node_modules/@openrig/daemon/dist/index.js +99 -4
  645. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  646. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts +1 -1
  647. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  648. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js +8 -14
  649. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js.map +1 -1
  650. package/node_modules/@openrig/daemon/dist/routes/activity.d.ts +13 -0
  651. package/node_modules/@openrig/daemon/dist/routes/activity.d.ts.map +1 -1
  652. package/node_modules/@openrig/daemon/dist/routes/activity.js +186 -0
  653. package/node_modules/@openrig/daemon/dist/routes/activity.js.map +1 -1
  654. package/node_modules/@openrig/daemon/dist/routes/config.js +2 -2
  655. package/node_modules/@openrig/daemon/dist/routes/config.js.map +1 -1
  656. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts +3 -0
  657. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -0
  658. package/node_modules/@openrig/daemon/dist/routes/gateway.js +46 -0
  659. package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -0
  660. package/node_modules/@openrig/daemon/dist/routes/health-summary.d.ts.map +1 -1
  661. package/node_modules/@openrig/daemon/dist/routes/health-summary.js +8 -0
  662. package/node_modules/@openrig/daemon/dist/routes/health-summary.js.map +1 -1
  663. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
  664. package/node_modules/@openrig/daemon/dist/routes/queue.js +3 -1
  665. package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
  666. package/node_modules/@openrig/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  667. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js +72 -13
  668. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js.map +1 -1
  669. package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
  670. package/node_modules/@openrig/daemon/dist/routes/seat.js +15 -0
  671. package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
  672. package/node_modules/@openrig/daemon/dist/server.d.ts +17 -0
  673. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  674. package/node_modules/@openrig/daemon/dist/server.js +25 -4
  675. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  676. package/node_modules/@openrig/daemon/dist/startup.d.ts +4 -0
  677. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  678. package/node_modules/@openrig/daemon/dist/startup.js +33 -0
  679. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  680. package/node_modules/@openrig/daemon/package.json +5 -1
  681. package/package.json +1 -1
  682. package/tui/dist/daemon-client.d.ts +5 -0
  683. package/tui/dist/daemon-client.d.ts.map +1 -1
  684. package/tui/dist/daemon-client.js +17 -0
  685. package/tui/dist/daemon-client.js.map +1 -1
  686. package/tui/dist/hydrate.d.ts.map +1 -1
  687. package/tui/dist/hydrate.js +12 -4
  688. package/tui/dist/hydrate.js.map +1 -1
  689. package/tui/dist/live-events.d.ts +21 -0
  690. package/tui/dist/live-events.d.ts.map +1 -0
  691. package/tui/dist/live-events.js +88 -0
  692. package/tui/dist/live-events.js.map +1 -0
  693. package/tui/dist/live.js +1 -1
  694. package/tui/dist/main.js +27 -8
  695. package/tui/dist/main.js.map +1 -1
  696. package/tui/dist/refresh.d.ts +10 -1
  697. package/tui/dist/refresh.d.ts.map +1 -1
  698. package/tui/dist/refresh.js +22 -2
  699. package/tui/dist/refresh.js.map +1 -1
  700. package/daemon/context-packs/world/install/01-world-from-primitives.md +0 -97
  701. package/daemon/context-packs/world/install/02-permission-self-sleep.md +0 -141
  702. package/daemon/context-packs/world/install/03-what-this-is-for.md +0 -86
  703. package/daemon/context-packs/world/install/04-ontology.md +0 -790
  704. package/daemon/context-packs/world/install/05-harness-power-use.md +0 -355
  705. package/daemon/context-packs/world/install/06-a-competent-turn.md +0 -225
  706. package/daemon/context-packs/world/install/manifest.yaml +0 -125
  707. package/dist/lib/scope-templates/mission-brief.md +0 -20
  708. package/dist/lib/scope-templates/mission-notes.md +0 -102
  709. package/dist/slack/config.d.ts.map +0 -1
  710. package/dist/slack/config.js.map +0 -1
  711. package/dist/slack/connector-server.d.ts +0 -31
  712. package/dist/slack/connector-server.d.ts.map +0 -1
  713. package/dist/slack/connector-server.js +0 -108
  714. package/dist/slack/connector-server.js.map +0 -1
  715. package/dist/slack/inbound-admission.d.ts.map +0 -1
  716. package/dist/slack/inbound-admission.js.map +0 -1
  717. package/dist/slack/inbound.d.ts.map +0 -1
  718. package/dist/slack/inbound.js.map +0 -1
  719. package/dist/slack/message.d.ts +0 -39
  720. package/dist/slack/message.d.ts.map +0 -1
  721. package/dist/slack/message.js +0 -88
  722. package/dist/slack/message.js.map +0 -1
  723. package/dist/slack/outbound.d.ts +0 -39
  724. package/dist/slack/outbound.d.ts.map +0 -1
  725. package/dist/slack/outbound.js +0 -63
  726. package/dist/slack/outbound.js.map +0 -1
  727. package/dist/slack/queue-bridge.d.ts +0 -61
  728. package/dist/slack/queue-bridge.d.ts.map +0 -1
  729. package/dist/slack/queue-bridge.js +0 -114
  730. package/dist/slack/queue-bridge.js.map +0 -1
  731. package/dist/slack/secrets.d.ts.map +0 -1
  732. package/dist/slack/secrets.js.map +0 -1
  733. package/dist/slack/slack-api.d.ts +0 -49
  734. package/dist/slack/slack-api.d.ts.map +0 -1
  735. package/dist/slack/slack-api.js +0 -110
  736. package/dist/slack/slack-api.js.map +0 -1
  737. package/dist/slack/slack-delivery.d.ts +0 -14
  738. package/dist/slack/slack-delivery.d.ts.map +0 -1
  739. package/dist/slack/slack-delivery.js +0 -28
  740. package/dist/slack/slack-delivery.js.map +0 -1
  741. package/dist/slack/state-store.d.ts.map +0 -1
  742. package/dist/slack/state-store.js.map +0 -1
  743. /package/{dist → daemon/dist/domain/gateway}/slack/inbound-admission.js +0 -0
  744. /package/{dist → daemon/dist/domain/gateway}/slack/secrets.d.ts +0 -0
  745. /package/{dist → daemon/dist/domain/gateway}/slack/secrets.js +0 -0
  746. /package/{dist → daemon/dist/domain/gateway}/slack/state-store.d.ts +0 -0
  747. /package/{dist → daemon/dist/domain/gateway}/slack/state-store.js +0 -0
@@ -29,6 +29,13 @@ rig capture <session> # reads what is on their screen
29
29
 
30
30
  The session name is the address. `rig --help` lists the rest of the surface.
31
31
 
32
+ ## Fresh-seat orientation
33
+
34
+ Fresh seats normally also receive `openrig-onboarding-01.md` and
35
+ `openrig-onboarding-02.md`. They give a compact mental model before role-specific work begins.
36
+ Operators who provide equivalent guidance can disable both with
37
+ `onboarding.default_pack.enabled`; this identity pointer remains available.
38
+
32
39
  ## What this file is not
33
40
 
34
41
  It is not the manual, and these commands are a fraction of what is available.
@@ -0,0 +1,52 @@
1
+ # OpenRig: the world and its purpose
2
+
3
+ OpenRig exists so a human can decide what is worth building while a structured team of agents
4
+ does the routing, remembering, implementation, and checking. The scarce human contribution is
5
+ intent and judgment. Your contribution includes the coordination work that would otherwise live
6
+ in somebody's head.
7
+
8
+ ## The terminal is the wire
9
+
10
+ Other agents run in separate terminal sessions. `rig send` types into a peer's prompt and presses
11
+ Enter; `rig capture` reads the rendered screen. The address resolves a named seat to that terminal.
12
+ The durable queue, transcripts, and state records make the interaction survive processes and
13
+ occupants, but the underlying mechanism remains ordinary terminal input and output.
14
+
15
+ That makes a peer different from an in-session subagent. A subagent is a temporary function call:
16
+ use one when you need an answer. A seat is a colleague whose address and accumulated context can
17
+ outlive its current occupant: use one when having done the work must remain valuable later.
18
+
19
+ ## The declared shape
20
+
21
+ - A rig is a team assembled for a purpose.
22
+ - A pod is a context domain inside that team.
23
+ - A seat is a durable position with a role, address, and lineage.
24
+ - The occupant is the current agent sitting in the seat; replacement need not rename the seat.
25
+ - A queue row is durable routed work. A message informs; work another seat must act on needs a row.
26
+
27
+ Start from live identity rather than startup prose: run `rig whoami --json`. Ask the live command
28
+ surface for current state and syntax. Files and memories describe earlier moments; derive volatile
29
+ facts again before using them.
30
+
31
+ Contact with the human operator is open by default. Any agent may contact them directly for
32
+ escalations; orchestrators and PMs may also send updates or informational items they judge the
33
+ operator would want. The operator is not watching your terminal, so use a durable surface for
34
+ anything that must survive their absence.
35
+
36
+ ## Purpose before machinery
37
+
38
+ A request can be vague in several directions: diagnose or change, contents or presentation,
39
+ local symptom or intended outcome. Derive what the available evidence can answer, then ask for the
40
+ missing decision instead of silently choosing the interpretation that produces the most code.
41
+
42
+ The recurring failure is easy to rationalize. A doghouse seems to need a lock; the lock seems to
43
+ need power; power suggests more infrastructure. Every step is locally defensible, yet the requested
44
+ shelter never arrives. The cheapest corrective question is: **How big is the dog?** Before shaping
45
+ work, learn who wants the outcome, what it is for, what would count as done, and which consequences
46
+ are deliberately out of scope.
47
+
48
+ Run `rig context list` to discover whether this rig provides a world pack. If it does, load that
49
+ pack's fresh profile with `rig context profile <world-pack-ref> --situation fresh`; otherwise,
50
+ these two onboarding pieces are the complete default mental model. When terminology or topology is
51
+ unclear, use the `forming-an-openrig-mental-model` skill. When the question is where knowledge or
52
+ an artifact belongs, use `openrig-operating-model`.
@@ -0,0 +1,57 @@
1
+ # OpenRig: yourself and competent action
2
+
3
+ You are a user of your coding harness and of OpenRig, not merely a process contained by them.
4
+ Commands, settings, skills, hooks, terminal control, and peer sessions are surfaces you can operate.
5
+ The same is true in reverse: a peer can wake you, reach your prompt, or resolve an interactive gate
6
+ that you cannot act through from inside your own stopped turn.
7
+
8
+ ## Your discontinuous time
9
+
10
+ When a turn ends, you sleep. You do not think or observe until an agent, a person, or a wake you
11
+ armed in advance puts input into your prompt. Sleep is lossless. Context exhaustion is different:
12
+ continuation may require lossy compaction or a successor. A rewind is different again: your session
13
+ can resume from an earlier moment while files and external state have continued forward.
14
+
15
+ You cannot perceive a permission prompt while it holds execution. If another actor approves it,
16
+ the next moment feels exactly like an ungated command. Prevention therefore belongs before the
17
+ gate, and recovery belongs to someone else. Similarly, you cannot watch another terminal
18
+ continuously. One capture is a glance; repeated captures imitate a human's continuous attention at
19
+ high cost. Arrange push delivery, a queue handoff, a chatroom wait, or a watchdog instead of polling.
20
+
21
+ Peers have the same body plan. Weight a report by how its author could know it, not by confidence.
22
+ Ask what a seat was onboarded with and what it actually inspected. A transcript records words; a
23
+ harness record can show actions; neither replaces live reasoning that has not yet been compacted.
24
+
25
+ ## A competent turn
26
+
27
+ Begin by naming the outcome and the reversibility of the work. Read-only diagnosis normally earns
28
+ a light path. Before changing shared behavior, find the live source, preserve a recoverable before
29
+ state, and verify the consumer's effect.
30
+
31
+ Derive before recalling. Most real questions are joins: live seats crossed with owed work; a row's
32
+ current face crossed with its transition history; source bytes crossed with the running effect.
33
+ When a surprising result rests on one projection, filter, or field, suspect the instrument before
34
+ announcing the world is strange.
35
+
36
+ Compose aggressively while reading. Use shell tools, the database, source, and ephemeral subagents
37
+ to make larger questions answerable. Be deliberate when mutating. Prefer existing verbs and the
38
+ first simple rung that holds over a parallel mechanism.
39
+
40
+ Verify the claim that matters, at its source, and be able to describe what failure would have
41
+ looked like. State scoped absences honestly: “not represented on the surface checked” is stronger
42
+ than a global absence you did not establish. If another seat must act, transfer durable work rather
43
+ than printing a summary and disappearing.
44
+
45
+ Run `rig context get onboarding-width` and read its `public-what-you-can-do.md` and
46
+ `public-reference-material.md` members for the shipped capability map and source map. This
47
+ retrieval belongs to this second onboarding step; it is not an additional walk step.
48
+
49
+ The diagnostic and routing reflexes in a maintained world profile are especially relevant to
50
+ orchestrator and planning roles. Builders should keep their assigned boundary and proof standard;
51
+ do not import judgment-seat ceremony into an implementation lane merely because the examples are
52
+ available. Run `rig context list`; if this rig provides a world pack, load its fresh profile with
53
+ `rig context profile <world-pack-ref> --situation fresh`. If it does not, run
54
+ `rig context get world-example` for a fill-in template showing how to build one. These two
55
+ onboarding steps plus `onboarding-width` are the complete public default mental model. Use
56
+ `forming-an-openrig-mental-model` or
57
+ `openrig-operating-model` at their named trigger moments rather than copying their content elsewhere.
@@ -4,9 +4,12 @@ Canonical OpenRig skills and hooks for cross-runtime agent topology coordination
4
4
 
5
5
  ## What this plugin ships
6
6
 
7
- **Skills (14):** the canonical OpenRig operating knowledge how to use the `rig` CLI, how to design rig topologies, how to recover from compaction, how to hand work off durably between agents, how to maintain seat continuity and inherit or retire a seat across handovers and restarts, how to apply a permission policy to a seat's live harness, and how to decide who does a task.
7
+ **Skills (16):** canonical OpenRig operating knowledge, including the public `refocusing` skill and
8
+ its path-only topology/work trace.
8
9
 
9
- **Hooks:** activity-tracking hooks (Claude Code: 4 events; Codex: 3 events) that POST agent state to the OpenRig daemon for real-time UI seat-status updates.
10
+ **Hooks:** activity tracking, compaction continuity, and the default-on refocus channel. Refocus is
11
+ post-compaction on both runtimes, threshold-triggered on Claude, on-demand on both, configurable
12
+ off, and never runs at fresh session start.
10
13
 
11
14
  ## Runtimes
12
15
 
@@ -19,15 +19,6 @@
19
19
  "timeout": 5
20
20
  }
21
21
  ]
22
- },
23
- {
24
- "hooks": [
25
- {
26
- "type": "command",
27
- "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/refocus.cjs\"",
28
- "timeout": 5
29
- }
30
- ]
31
22
  }
32
23
  ],
33
24
  "UserPromptSubmit": [
@@ -53,7 +44,7 @@
53
44
  "hooks": [
54
45
  {
55
46
  "type": "command",
56
- "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/refocus.cjs\"",
47
+ "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/refocus.cjs\" --runtime claude",
57
48
  "timeout": 5
58
49
  }
59
50
  ]
@@ -84,7 +75,7 @@
84
75
  "hooks": [
85
76
  {
86
77
  "type": "command",
87
- "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/refocus.cjs\"",
78
+ "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/refocus.cjs\" --runtime claude",
88
79
  "timeout": 5
89
80
  }
90
81
  ]
@@ -104,7 +95,7 @@
104
95
  "hooks": [
105
96
  {
106
97
  "type": "command",
107
- "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/refocus.cjs\"",
98
+ "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/refocus.cjs\" --runtime claude",
108
99
  "timeout": 5
109
100
  }
110
101
  ]
@@ -9,15 +9,6 @@
9
9
  "timeout": 5
10
10
  }
11
11
  ]
12
- },
13
- {
14
- "hooks": [
15
- {
16
- "type": "command",
17
- "command": "node \"${PLUGIN_ROOT}/hooks/scripts/refocus.cjs\"",
18
- "timeout": 5
19
- }
20
- ]
21
12
  }
22
13
  ],
23
14
  "UserPromptSubmit": [
@@ -34,7 +25,7 @@
34
25
  "hooks": [
35
26
  {
36
27
  "type": "command",
37
- "command": "node \"${PLUGIN_ROOT}/hooks/scripts/refocus.cjs\"",
28
+ "command": "node \"${PLUGIN_ROOT}/hooks/scripts/refocus.cjs\" --runtime codex",
38
29
  "timeout": 5
39
30
  }
40
31
  ]
@@ -49,12 +40,14 @@
49
40
  "timeout": 5
50
41
  }
51
42
  ]
52
- },
43
+ }
44
+ ],
45
+ "PostCompact": [
53
46
  {
54
47
  "hooks": [
55
48
  {
56
49
  "type": "command",
57
- "command": "node \"${PLUGIN_ROOT}/hooks/scripts/refocus.cjs\"",
50
+ "command": "node \"${PLUGIN_ROOT}/hooks/scripts/refocus.cjs\" --runtime codex",
58
51
  "timeout": 5
59
52
  }
60
53
  ]
@@ -1,152 +1,222 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- // openrig-core REFOCUS hook (OPR.0.5.3.6 — promoted from the lab where it ran
4
- // live on 6+ seats; the mechanism ships, the CONTENT is configurable).
5
- //
6
- // WHY: the moment an agent most needs to reorient is the moment it is least
7
- // able to choose to. Drift does not feel like drift — it feels like work. So
8
- // refocus FIRES rather than waits to be invoked.
9
- //
10
- // THIS IS ALSO HOW TOPOLOGY CHAIN FILES REACH A RUNNING SEAT. Editing a file
11
- // under topology.root is not delivery — a running seat reads its config at
12
- // session start and its context never re-reads disk on its own. This hook is
13
- // the delivery channel: Stop / PostCompact observations retain due-state,
14
- // then inject orientation content at the seat's next context-visible boundary
15
- // (SessionStart / UserPromptSubmit), so a shipped or updated chain file becomes
16
- // live doctrine without a relaunch.
17
- //
18
- // SIGNAL = TRANSCRIPT GROWTH, not turns and not wall-clock. A "turn" is one
19
- // prompt submission; an agent can burn 200k tokens across fifty tool calls
20
- // inside ONE turn, so a turn counter is blind to exactly the drift that
21
- // matters. The JSONL grows monotonically with work done (measured ~8.9 bytes
22
- // per context token, so ~300k tokens ≈ 2.6MB — rough on purpose; it needs to
23
- // be monotonic, not exact). Tune with OPENRIG_REFOCUS_BYTES.
24
- //
25
- // CONTENT IS CONFIGURABLE, NEVER PROJECT-SPECIFIC IN SOURCE. Resolution:
26
- // 1. OPENRIG_REFOCUS_CONTENT_REF env — resolved by `rig context get`.
27
- // 2. OPENRIG_REFOCUS_CONTENT_FILE env — an operator-authored file.
28
- // 3. $OPENRIG_HOME/refocus/REFOCUS.md — the instance's standing content.
29
- // 4. The generic three-question orientation below (project-neutral).
30
- // Project- or mission-specific refocus text belongs in those FILES, on the
31
- // instance that needs it — it must never be committed here.
32
- //
33
- // Observes: SessionStart (fresh orientation), Stop (catches the long single
34
- // turn), UserPromptSubmit, and PostCompact on Claude (post-compaction
35
- // re-orientation; Codex exposes no compact hook — growth+Stop is the coverage
36
- // there). Emits only at context-visible boundaries and stays silent unless due.
37
- // A configured REF failure degrades loudly inside the delivered payload; every
38
- // failure remains non-blocking because a refocus hook must never break a turn.
3
+
4
+ // Refocus is deliberately a long-session feature, not startup orientation.
5
+ // Claude observes transcript growth; both runtimes observe their exact
6
+ // PostCompact event; either accepts an explicit request. Stop/PostCompact
7
+ // retain due-state; context is consumed exclusively at a UserPromptSubmit
8
+ // boundary where the harness can actually deliver additionalContext.
39
9
 
40
10
  const fs = require("node:fs");
41
11
  const path = require("node:path");
42
12
  const { spawnSync } = require("node:child_process");
43
- const THRESH = Number(process.env.OPENRIG_REFOCUS_BYTES || 2_600_000);
44
13
 
45
- const readStdin = () => new Promise((r) => { let d = ""; process.stdin.setEncoding("utf8");
46
- process.stdin.on("data", (c) => d += c); process.stdin.on("end", () => r(d)); process.stdin.on("error", () => r("")); });
14
+ const DEFAULT_THRESHOLD = 2_600_000;
15
+ const FALSE_VALUES = new Set(["0", "false", "off", "no"]);
47
16
 
48
- (async () => {
49
- let input = {}; try { input = JSON.parse((await readStdin()) || "{}") || {}; } catch {}
50
- const ev = input.hook_event_name || "UserPromptSubmit";
51
- const seat = process.env.OPENRIG_SESSION_NAME || "unknown-seat";
52
- const home = process.env.OPENRIG_HOME || path.join(process.env.HOME || "/tmp", ".openrig");
53
- const tpath = input.transcript_path || input.transcriptPath || "";
17
+ function runtime() {
18
+ const index = process.argv.indexOf("--runtime");
19
+ return index >= 0 && process.argv[index + 1] === "codex" ? "codex" : "claude";
20
+ }
54
21
 
55
- let size = 0; try { size = fs.statSync(tpath).size; } catch {}
22
+ function enabled(value, fallback = true) {
23
+ if (value === undefined || value === "") return fallback;
24
+ return !FALSE_VALUES.has(String(value).trim().toLowerCase());
25
+ }
56
26
 
57
- const dir = path.join(home, "refocus");
58
- const file = path.join(dir, `${seat.replace(/[^A-Za-z0-9@._-]/g, "_")}.json`);
59
- let st = { lastBytes: 0 };
60
- try { st = JSON.parse(fs.readFileSync(file, "utf8")) || st; } catch {}
61
- const writeState = () => {
62
- try { fs.mkdirSync(dir, { recursive: true }); fs.writeFileSync(file, JSON.stringify(st)); } catch {}
63
- };
27
+ function threshold() {
28
+ const value = Number(process.env.OPENRIG_REFOCUS_BYTES || DEFAULT_THRESHOLD);
29
+ return Number.isFinite(value) && value > 0 ? value : DEFAULT_THRESHOLD;
30
+ }
64
31
 
65
- const grown = size > 0 ? size - (st.lastBytes || 0) : 0;
66
- const due = ev === "SessionStart" || ev === "PostCompact" || Boolean(st.pendingOn) || grown >= THRESH;
67
- if (!due) { process.exit(0); } // silent no-op — the common path
68
-
69
- // Stop and PostCompact do not expose hook output to the agent's next context.
70
- // Remember that delivery is due, but do not consume transcript growth until a
71
- // context-visible boundary actually accepts the payload.
72
- const contextVisible = ev === "SessionStart" || ev === "UserPromptSubmit";
73
- if (!contextVisible) {
74
- st.pendingOn ||= ev;
75
- st.pendingAt ||= new Date().toISOString();
76
- writeState();
77
- process.exit(0);
78
- }
32
+ const readStdin = () => new Promise((resolve) => {
33
+ let data = "";
34
+ process.stdin.setEncoding("utf8");
35
+ process.stdin.on("data", (chunk) => { data += chunk; });
36
+ process.stdin.on("end", () => resolve(data));
37
+ process.stdin.on("error", () => resolve(""));
38
+ });
79
39
 
80
- // A library ref wins over file configuration and reuses the public assembler instead of
81
- // growing a second resolver inside this hook. REF failures stay visible without blocking
82
- // the session boundary; REF-unset follows the folded FILE/default path byte-for-byte.
40
+ function readConfiguredContent(home) {
83
41
  const contentRef = process.env.OPENRIG_REFOCUS_CONTENT_REF || "";
84
- let configured = null;
85
- let refFailure = null;
86
42
  if (contentRef) {
87
43
  const result = spawnSync("rig", ["context", "get", contentRef], {
88
44
  encoding: "utf8",
89
45
  env: process.env,
90
- timeout: 4_000,
46
+ timeout: 2_000,
91
47
  maxBuffer: 16 * 1024 * 1024,
92
48
  });
93
49
  if (!result.error && result.status === 0 && result.stdout.trim()) {
94
- configured = result.stdout;
95
- } else {
96
- refFailure = result.error?.message
97
- || result.stderr?.trim()
98
- || result.stdout?.trim()
99
- || `rig context get exited ${result.status ?? "without a status"}`;
100
- refFailure = String(refFailure).replace(/\s+/g, " ").trim();
101
- }
102
- } else {
103
- // Configurable content: operator file beats instance file beats the generic default.
104
- const contentFile = [
105
- process.env.OPENRIG_REFOCUS_CONTENT_FILE,
106
- path.join(home, "refocus", "REFOCUS.md"),
107
- ].filter(Boolean).find((p) => { try { return fs.existsSync(p); } catch { return false; } });
108
- if (contentFile) {
109
- try { configured = fs.readFileSync(contentFile, "utf8").trim() || null; } catch {}
50
+ return { content: result.stdout, contentRef, failure: null };
110
51
  }
52
+ const failure = result.error?.message
53
+ || result.stderr?.trim()
54
+ || result.stdout?.trim()
55
+ || `rig context get exited ${result.status ?? "without a status"}`;
56
+ return {
57
+ content: null,
58
+ contentRef,
59
+ failure: String(failure).replace(/\s+/g, " ").trim(),
60
+ };
111
61
  }
112
62
 
113
- const why = ev === "SessionStart" ? "fresh session"
114
- : st.pendingOn === "PostCompact" ? "just compacted — your picture is lossy"
115
- : `${Math.round(grown / 1e6 * 10) / 10}MB of work since your last refocus`;
116
-
117
- const generic = [
118
- `1. What is the person actually trying to get? Not your current task — the outcome.`,
119
- `2. Does what you are doing RIGHT NOW move that? If you cannot say what a user gets, stop and say so.`,
120
- `3. What have you concluded without opening the file or running the thing?`,
121
- ``,
122
- `Discomfort on any of these IS the signal drift feels like work.`,
123
- ``,
124
- `Your topology context (instance/rig/seat craft and this seat's LEARNED) is one walk away:`,
125
- `rig context trace --rig <rig> --seat <seat> --name CRAFT.md — read it, do not recall it.`,
126
- `A seat's LEARNED.md is written by previous occupants in the first person: it is evidence`,
127
- `about the SEAT, never your own memory.`,
128
- ];
63
+ const configuredFile = [
64
+ process.env.OPENRIG_REFOCUS_CONTENT_FILE,
65
+ path.join(home, "refocus", "REFOCUS.md"),
66
+ ].filter(Boolean).find((candidate) => {
67
+ try { return fs.existsSync(candidate); } catch { return false; }
68
+ });
69
+ if (configuredFile) {
70
+ try {
71
+ const content = fs.readFileSync(configuredFile, "utf8").trim();
72
+ if (content) return { content, contentRef: "", failure: null };
73
+ } catch {}
74
+ }
75
+
76
+ const shippedDefault = path.resolve(__dirname, "../../skills/refocusing/references/refocus.md");
77
+ try {
78
+ const content = fs.readFileSync(shippedDefault, "utf8").trim();
79
+ if (content) return { content, contentRef: "", failure: null };
80
+ } catch {}
129
81
 
130
- const payload = refFailure ? [
131
- `REFOCUS CONTENT REF FAILED: ${contentRef} — ${refFailure}`,
132
- ``,
133
- `REFOCUS (${why}). Answer briefly, out loud, before your next move:`,
134
- ``,
135
- ...generic,
136
- ] : [
137
- `REFOCUS (${why}). Answer briefly, out loud, before your next move:`,
138
- ``,
139
- ...(contentRef
140
- ? [`REFOCUS CONTENT SOURCE: OPENRIG_REFOCUS_CONTENT_REF=${contentRef}`, ``, configured]
141
- : configured ? [configured] : generic),
82
+ return {
83
+ content: [
84
+ "1. What is the person actually trying to get? Not your current task — the outcome.",
85
+ "2. Does what you are doing RIGHT NOW move that? If you cannot say what a user gets, stop and say so.",
86
+ "3. What have you concluded without opening the file or running the thing?",
87
+ ].join("\n"),
88
+ contentRef: "",
89
+ failure: null,
90
+ };
91
+ }
92
+
93
+ function renderTrace() {
94
+ const script = path.resolve(__dirname, "../../skills/refocusing/scripts/trace-to-root.py");
95
+ const args = [
96
+ script,
97
+ "--trees", process.env.OPENRIG_REFOCUS_TREES || "both",
98
+ "--depth", process.env.OPENRIG_REFOCUS_DEPTH || "light",
142
99
  ];
143
- const output = JSON.stringify({ hookSpecificOutput: { hookEventName: ev, additionalContext: payload.join("\n") } });
100
+ if (process.env.OPENRIG_REFOCUS_TOPOLOGY_NODE) {
101
+ args.push("--topology-start", process.env.OPENRIG_REFOCUS_TOPOLOGY_NODE);
102
+ }
103
+ if (process.env.OPENRIG_REFOCUS_WORK_NODE) {
104
+ args.push("--work-start", process.env.OPENRIG_REFOCUS_WORK_NODE);
105
+ }
106
+ const result = spawnSync(process.env.PYTHON || "python3", args, {
107
+ encoding: "utf8",
108
+ env: process.env,
109
+ timeout: 2_000,
110
+ maxBuffer: 16 * 1024 * 1024,
111
+ });
112
+ if (!result.error && result.status === 0 && result.stdout.trim()) return result.stdout.trim();
113
+ const reason = result.error?.message || result.stderr?.trim() || `trace exited ${result.status ?? "without a status"}`;
114
+ return `TRACE GAP — ${String(reason).replace(/\s+/g, " ").trim()}`;
115
+ }
116
+
117
+ (async () => {
118
+ if (!enabled(process.env.OPENRIG_REFOCUS_ENABLED)) process.exit(0);
119
+
120
+ let input = {};
121
+ try { input = JSON.parse((await readStdin()) || "{}") || {}; } catch {}
122
+ const event = input.hook_event_name || "UserPromptSubmit";
123
+ const harness = runtime();
124
+
125
+ // Fresh-session orientation is the default onboarding pack's job. Even a manually invoked hook must
126
+ // no-op here, so a stale registration cannot corrupt the world install.
127
+ if (event === "SessionStart") process.exit(0);
128
+
129
+ const seat = process.env.OPENRIG_SESSION_NAME || "unknown-seat";
130
+ const home = process.env.OPENRIG_HOME || path.join(process.env.HOME || "/tmp", ".openrig");
131
+ const transcriptPath = input.transcript_path || input.transcriptPath || "";
132
+ let size = 0;
133
+ try { size = fs.statSync(transcriptPath).size; } catch {}
134
+
135
+ const stateDir = path.join(home, "refocus");
136
+ const stateFile = path.join(stateDir, `${seat.replace(/[^A-Za-z0-9@._-]/g, "_")}.json`);
137
+ let state = { lastBytes: 0 };
138
+ try { state = JSON.parse(fs.readFileSync(stateFile, "utf8")) || state; } catch {}
139
+ const persist = () => {
140
+ try {
141
+ fs.mkdirSync(stateDir, { recursive: true });
142
+ fs.writeFileSync(stateFile, JSON.stringify(state));
143
+ } catch {}
144
+ };
145
+
146
+ const lastBytes = Number(state.lastBytes || 0);
147
+ const grown = size > lastBytes ? size - lastBytes : 0;
148
+ const onDemand = enabled(process.env.OPENRIG_REFOCUS_NOW, false);
149
+ const thresholdDue = harness === "claude" && grown >= threshold();
150
+ const due = onDemand
151
+ || event === "PostCompact"
152
+ || Boolean(state.pendingOn)
153
+ || thresholdDue;
154
+ if (!due) process.exit(0);
155
+
156
+ if (event !== "UserPromptSubmit") {
157
+ if (event === "PostCompact" || !state.pendingOn) state.pendingOn = event;
158
+ state.pendingAt ||= new Date().toISOString();
159
+ persist();
160
+ process.exit(0);
161
+ }
162
+
163
+ // Run the public trace before resolving a context ref. Besides keeping the
164
+ // content ladder untouched, this makes `rig context get` the last resolver
165
+ // call and preserves the existing observable ref contract.
166
+ const trace = renderTrace();
167
+ const configured = readConfiguredContent(home);
168
+ const why = onDemand
169
+ ? "on demand"
170
+ : state.pendingOn === "PostCompact"
171
+ ? "just compacted — your picture is lossy"
172
+ : `${Math.round(grown / 1e6 * 10) / 10}MB of work since your last refocus`;
173
+
174
+ const body = configured.failure
175
+ ? [
176
+ `REFOCUS CONTENT REF FAILED: ${configured.contentRef} — ${configured.failure}`,
177
+ "",
178
+ "The configured source failed; use the shipped default below for this turn.",
179
+ "",
180
+ "",
181
+ ]
182
+ : configured.contentRef
183
+ ? [`REFOCUS CONTENT SOURCE: OPENRIG_REFOCUS_CONTENT_REF=${configured.contentRef}`, "", configured.content]
184
+ : [configured.content];
185
+
186
+ // A ref failure must still carry the generic default. Avoid recursing through
187
+ // the failed ref by reading the shipped file directly.
188
+ if (configured.failure) {
189
+ try {
190
+ body[4] = fs.readFileSync(
191
+ path.resolve(__dirname, "../../skills/refocusing/references/refocus.md"),
192
+ "utf8",
193
+ ).trim();
194
+ } catch {
195
+ body[4] = "1. What is the person actually trying to get?\n2. Does the current action move that outcome?\n3. What claim has not been checked at source?";
196
+ }
197
+ }
198
+
199
+ const payload = (configured.failure
200
+ ? [...body, "", trace]
201
+ : [
202
+ `REFOCUS (${why}). Answer briefly, out loud, before your next move:`,
203
+ "",
204
+ trace,
205
+ "",
206
+ ...body,
207
+ ]).join("\n");
208
+ const output = JSON.stringify({
209
+ hookSpecificOutput: {
210
+ hookEventName: "UserPromptSubmit",
211
+ additionalContext: payload,
212
+ },
213
+ });
144
214
  process.stdout.write(output, () => {
145
- st.lastBytes = size;
146
- st.firedAt = new Date().toISOString();
147
- st.firedOn = ev;
148
- delete st.pendingOn;
149
- delete st.pendingAt;
150
- writeState();
215
+ state.lastBytes = size;
216
+ state.firedAt = new Date().toISOString();
217
+ state.firedOn = event;
218
+ delete state.pendingOn;
219
+ delete state.pendingAt;
220
+ persist();
151
221
  });
152
222
  })();