@openrig/cli 0.5.3 → 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 (842) 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/.claude-plugin/plugin.json +1 -1
  5. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
  6. package/daemon/assets/plugins/openrig-core/README.md +5 -2
  7. package/daemon/assets/plugins/openrig-core/hooks/claude.json +3 -12
  8. package/daemon/assets/plugins/openrig-core/hooks/codex.json +5 -12
  9. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +196 -106
  10. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +18 -23
  11. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/CHANGELOG.md +92 -0
  12. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/REVISION-GUIDE.md +34 -0
  13. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROADMAP.md +23 -0
  14. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROLLOUT.md +234 -0
  15. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +404 -0
  16. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/compose.py +653 -0
  17. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/scaffold.sh +34 -0
  18. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trace-due.sh +32 -0
  19. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trace-stamp.sh +5 -0
  20. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trunk-diff.sh +18 -0
  21. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/LEARNED.md +40 -0
  22. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/NOTES.md +9 -0
  23. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/PLAYBOOK.md +5 -0
  24. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SOP.md +24 -0
  25. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SPEC.md +54 -0
  26. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +5 -0
  27. package/daemon/assets/plugins/openrig-core/skills/refocusing/SKILL.md +31 -0
  28. package/daemon/assets/plugins/openrig-core/skills/refocusing/references/refocus.md +22 -0
  29. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +221 -0
  30. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -3
  31. package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +4 -9
  32. package/daemon/context-packs/onboarding-width/manifest.yaml +11 -0
  33. package/daemon/context-packs/{world/install/reference-material.md → onboarding-width/public-reference-material.md} +4 -26
  34. package/daemon/context-packs/{world/install/what-you-can-do.md → onboarding-width/public-what-you-can-do.md} +13 -9
  35. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  37. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/attention-queue/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +21 -15
  57. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +3 -3
  58. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  73. package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +1 -1
  74. package/daemon/context-packs/world-example/manifest.yaml +8 -0
  75. package/daemon/context-packs/world-example/your-world.md +37 -0
  76. package/daemon/dist/adapters/claude-code-adapter.d.ts +15 -0
  77. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  78. package/daemon/dist/adapters/claude-code-adapter.js +57 -0
  79. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  80. package/daemon/dist/adapters/tmux.d.ts +31 -0
  81. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  82. package/daemon/dist/adapters/tmux.js +31 -11
  83. package/daemon/dist/adapters/tmux.js.map +1 -1
  84. package/daemon/dist/build-info.js +3 -3
  85. package/daemon/dist/daemon-db-path.d.ts.map +1 -1
  86. package/daemon/dist/daemon-db-path.js +50 -2
  87. package/daemon/dist/daemon-db-path.js.map +1 -1
  88. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  89. package/daemon/dist/db/all-migrations.js +4 -0
  90. package/daemon/dist/db/all-migrations.js.map +1 -1
  91. package/daemon/dist/db/migrations/072_thread_seat_map.d.ts +3 -0
  92. package/daemon/dist/db/migrations/072_thread_seat_map.d.ts.map +1 -0
  93. package/daemon/dist/db/migrations/072_thread_seat_map.js +22 -0
  94. package/daemon/dist/db/migrations/072_thread_seat_map.js.map +1 -0
  95. package/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts +3 -0
  96. package/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts.map +1 -0
  97. package/daemon/dist/db/migrations/073_queue_transition_wakes.js +21 -0
  98. package/daemon/dist/db/migrations/073_queue_transition_wakes.js.map +1 -0
  99. package/daemon/dist/domain/activity-taxonomy.d.ts +112 -0
  100. package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -0
  101. package/daemon/dist/domain/activity-taxonomy.js +99 -0
  102. package/daemon/dist/domain/activity-taxonomy.js.map +1 -0
  103. package/daemon/dist/domain/bind-plan.d.ts +19 -0
  104. package/daemon/dist/domain/bind-plan.d.ts.map +1 -0
  105. package/daemon/dist/domain/bind-plan.js +25 -0
  106. package/daemon/dist/domain/bind-plan.js.map +1 -0
  107. package/daemon/dist/domain/event-bus.d.ts +6 -0
  108. package/daemon/dist/domain/event-bus.d.ts.map +1 -1
  109. package/daemon/dist/domain/event-bus.js +15 -5
  110. package/daemon/dist/domain/event-bus.js.map +1 -1
  111. package/daemon/dist/domain/gateway/gateway-process-main.d.ts.map +1 -1
  112. package/daemon/dist/domain/gateway/gateway-process-main.js +9 -0
  113. package/daemon/dist/domain/gateway/gateway-process-main.js.map +1 -1
  114. package/daemon/dist/domain/gateway/gateway-process.d.ts.map +1 -1
  115. package/daemon/dist/domain/gateway/gateway-process.js +9 -0
  116. package/daemon/dist/domain/gateway/gateway-process.js.map +1 -1
  117. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +80 -0
  118. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -0
  119. package/daemon/dist/domain/gateway/gateway-subsystem.js +149 -0
  120. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -0
  121. package/daemon/dist/domain/gateway/human-registry.d.ts +109 -0
  122. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  123. package/daemon/dist/domain/gateway/human-registry.js +250 -0
  124. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  125. package/{dist → daemon/dist/domain/gateway}/slack/config.d.ts +8 -5
  126. package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -0
  127. package/{dist → daemon/dist/domain/gateway}/slack/config.js +8 -6
  128. package/daemon/dist/domain/gateway/slack/config.js.map +1 -0
  129. package/{dist → daemon/dist/domain/gateway}/slack/inbound-admission.d.ts +1 -1
  130. package/daemon/dist/domain/gateway/slack/inbound-admission.d.ts.map +1 -0
  131. package/daemon/dist/domain/gateway/slack/inbound-admission.js.map +1 -0
  132. package/{dist → daemon/dist/domain/gateway}/slack/inbound.d.ts +14 -3
  133. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -0
  134. package/{dist → daemon/dist/domain/gateway}/slack/inbound.js +6 -5
  135. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -0
  136. package/daemon/dist/domain/gateway/slack/message.d.ts +80 -0
  137. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -0
  138. package/daemon/dist/domain/gateway/slack/message.js +164 -0
  139. package/daemon/dist/domain/gateway/slack/message.js.map +1 -0
  140. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +54 -0
  141. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -0
  142. package/daemon/dist/domain/gateway/slack/outbound-driver.js +96 -0
  143. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -0
  144. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +53 -0
  145. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -0
  146. package/daemon/dist/domain/gateway/slack/queue-access.js +72 -0
  147. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -0
  148. package/daemon/dist/domain/gateway/slack/secrets.d.ts.map +1 -0
  149. package/daemon/dist/domain/gateway/slack/secrets.js.map +1 -0
  150. package/daemon/dist/domain/gateway/slack/slack-api.d.ts +106 -0
  151. package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -0
  152. package/daemon/dist/domain/gateway/slack/slack-api.js +198 -0
  153. package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -0
  154. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +47 -0
  155. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -0
  156. package/daemon/dist/domain/gateway/slack/slack-delivery.js +147 -0
  157. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -0
  158. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +21 -0
  159. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -0
  160. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +198 -0
  161. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -0
  162. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +30 -0
  163. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -0
  164. package/daemon/dist/domain/gateway/slack/socket-inbound.js +99 -0
  165. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -0
  166. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -0
  167. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -0
  168. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts +17 -0
  169. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -0
  170. package/daemon/dist/domain/gateway/slack/thread-routing.js +35 -0
  171. package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -0
  172. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +56 -0
  173. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -0
  174. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +103 -0
  175. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -0
  176. package/daemon/dist/domain/gateway/spawn-gateway.d.ts.map +1 -1
  177. package/daemon/dist/domain/gateway/spawn-gateway.js +9 -0
  178. package/daemon/dist/domain/gateway/spawn-gateway.js.map +1 -1
  179. package/daemon/dist/domain/gateway/transport.d.ts.map +1 -1
  180. package/daemon/dist/domain/gateway/transport.js +9 -0
  181. package/daemon/dist/domain/gateway/transport.js.map +1 -1
  182. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  183. package/daemon/dist/domain/node-inventory.js +20 -0
  184. package/daemon/dist/domain/node-inventory.js.map +1 -1
  185. package/daemon/dist/domain/parked-query.d.ts +81 -0
  186. package/daemon/dist/domain/parked-query.d.ts.map +1 -0
  187. package/daemon/dist/domain/parked-query.js +126 -0
  188. package/daemon/dist/domain/parked-query.js.map +1 -0
  189. package/daemon/dist/domain/plugin-discovery-service.d.ts +16 -0
  190. package/daemon/dist/domain/plugin-discovery-service.d.ts.map +1 -1
  191. package/daemon/dist/domain/plugin-discovery-service.js +175 -1
  192. package/daemon/dist/domain/plugin-discovery-service.js.map +1 -1
  193. package/daemon/dist/domain/plugin-vendor-service.d.ts +9 -5
  194. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  195. package/daemon/dist/domain/plugin-vendor-service.js +101 -12
  196. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  197. package/daemon/dist/domain/queue-pickup.d.ts +38 -0
  198. package/daemon/dist/domain/queue-pickup.d.ts.map +1 -0
  199. package/daemon/dist/domain/queue-pickup.js +67 -0
  200. package/daemon/dist/domain/queue-pickup.js.map +1 -0
  201. package/daemon/dist/domain/queue-repository.d.ts +41 -11
  202. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  203. package/daemon/dist/domain/queue-repository.js +316 -36
  204. package/daemon/dist/domain/queue-repository.js.map +1 -1
  205. package/daemon/dist/domain/queue-stuck-sweep.d.ts +77 -0
  206. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -0
  207. package/daemon/dist/domain/queue-stuck-sweep.js +348 -0
  208. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -0
  209. package/daemon/dist/domain/queue-wake-ladder.d.ts +96 -0
  210. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -0
  211. package/daemon/dist/domain/queue-wake-ladder.js +533 -0
  212. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -0
  213. package/daemon/dist/domain/queue-wake-repository.d.ts +37 -0
  214. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -0
  215. package/daemon/dist/domain/queue-wake-repository.js +80 -0
  216. package/daemon/dist/domain/queue-wake-repository.js.map +1 -0
  217. package/daemon/dist/domain/rebuild-priming-chain.d.ts +28 -0
  218. package/daemon/dist/domain/rebuild-priming-chain.d.ts.map +1 -0
  219. package/daemon/dist/domain/rebuild-priming-chain.js +71 -0
  220. package/daemon/dist/domain/rebuild-priming-chain.js.map +1 -0
  221. package/daemon/dist/domain/reconciler.d.ts.map +1 -1
  222. package/daemon/dist/domain/reconciler.js +6 -1
  223. package/daemon/dist/domain/reconciler.js.map +1 -1
  224. package/daemon/dist/domain/review/compose.d.ts +3 -1
  225. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  226. package/daemon/dist/domain/review/compose.js +14 -8
  227. package/daemon/dist/domain/review/compose.js.map +1 -1
  228. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  229. package/daemon/dist/domain/review/gather.js +3 -1
  230. package/daemon/dist/domain/review/gather.js.map +1 -1
  231. package/daemon/dist/domain/rig-repository.d.ts +4 -0
  232. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  233. package/daemon/dist/domain/rig-repository.js +9 -0
  234. package/daemon/dist/domain/rig-repository.js.map +1 -1
  235. package/daemon/dist/domain/rigspec-instantiator.d.ts +12 -0
  236. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  237. package/daemon/dist/domain/rigspec-instantiator.js +50 -0
  238. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  239. package/daemon/dist/domain/running-name-guard.d.ts +52 -0
  240. package/daemon/dist/domain/running-name-guard.d.ts.map +1 -0
  241. package/daemon/dist/domain/running-name-guard.js +34 -0
  242. package/daemon/dist/domain/running-name-guard.js.map +1 -0
  243. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +6 -5
  244. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  245. package/daemon/dist/domain/scope/plan-lock-artifacts.js +23 -20
  246. package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  247. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +4 -5
  248. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  249. package/daemon/dist/domain/scope/scaffold-placeholder.js +6 -7
  250. package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  251. package/daemon/dist/domain/scope/scope-approve.d.ts +1 -1
  252. package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  253. package/daemon/dist/domain/scope/scope-approve.js +5 -4
  254. package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  255. package/daemon/dist/domain/scope/scope-audit.d.ts +42 -3
  256. package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  257. package/daemon/dist/domain/scope/scope-audit.js +78 -93
  258. package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  259. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  260. package/daemon/dist/domain/scope/scope-view-projection.js +7 -2
  261. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  262. package/daemon/dist/domain/seat-activity-service.d.ts +91 -0
  263. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  264. package/daemon/dist/domain/seat-activity-service.js +416 -1
  265. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  266. package/daemon/dist/domain/seat-handover-planner.d.ts +14 -0
  267. package/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -1
  268. package/daemon/dist/domain/seat-handover-planner.js +14 -1
  269. package/daemon/dist/domain/seat-handover-planner.js.map +1 -1
  270. package/daemon/dist/domain/seat-handover-service.d.ts +54 -1
  271. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  272. package/daemon/dist/domain/seat-handover-service.js +162 -19
  273. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  274. package/daemon/dist/domain/seat-lifecycle-service.d.ts +97 -0
  275. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -0
  276. package/daemon/dist/domain/seat-lifecycle-service.js +312 -0
  277. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -0
  278. package/daemon/dist/domain/session-transport.d.ts +8 -5
  279. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  280. package/daemon/dist/domain/session-transport.js +40 -18
  281. package/daemon/dist/domain/session-transport.js.map +1 -1
  282. package/daemon/dist/domain/successor-session-launcher.d.ts +6 -1
  283. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  284. package/daemon/dist/domain/successor-session-launcher.js +3 -3
  285. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  286. package/daemon/dist/domain/types.d.ts +69 -0
  287. package/daemon/dist/domain/types.d.ts.map +1 -1
  288. package/daemon/dist/domain/types.js.map +1 -1
  289. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  290. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  291. package/daemon/dist/domain/user-settings/settings-store.js +48 -0
  292. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  293. package/daemon/dist/domain/view-projector.d.ts +1 -1
  294. package/daemon/dist/domain/view-projector.d.ts.map +1 -1
  295. package/daemon/dist/domain/view-projector.js +41 -2
  296. package/daemon/dist/domain/view-projector.js.map +1 -1
  297. package/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
  298. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  299. package/daemon/dist/domain/watchdog-policy-engine.js +3 -0
  300. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  301. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +4 -3
  302. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  303. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +56 -196
  304. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  305. package/daemon/dist/domain/workspace/getting-started-narrative.js +1 -1
  306. package/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -1
  307. package/daemon/dist/domain/workspace/workspace-doctor.d.ts +8 -11
  308. package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  309. package/daemon/dist/domain/workspace/workspace-doctor.js +23 -25
  310. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  311. package/daemon/dist/gateway-slack-surface.d.ts +4 -0
  312. package/daemon/dist/gateway-slack-surface.d.ts.map +1 -0
  313. package/daemon/dist/gateway-slack-surface.js +8 -0
  314. package/daemon/dist/gateway-slack-surface.js.map +1 -0
  315. package/daemon/dist/index.d.ts +29 -0
  316. package/daemon/dist/index.d.ts.map +1 -1
  317. package/daemon/dist/index.js +99 -4
  318. package/daemon/dist/index.js.map +1 -1
  319. package/daemon/dist/lib/pane-envelope.d.ts +1 -1
  320. package/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  321. package/daemon/dist/lib/pane-envelope.js +8 -14
  322. package/daemon/dist/lib/pane-envelope.js.map +1 -1
  323. package/daemon/dist/routes/activity.d.ts +13 -0
  324. package/daemon/dist/routes/activity.d.ts.map +1 -1
  325. package/daemon/dist/routes/activity.js +186 -0
  326. package/daemon/dist/routes/activity.js.map +1 -1
  327. package/daemon/dist/routes/config.js +2 -2
  328. package/daemon/dist/routes/config.js.map +1 -1
  329. package/daemon/dist/routes/gateway.d.ts +3 -0
  330. package/daemon/dist/routes/gateway.d.ts.map +1 -0
  331. package/daemon/dist/routes/gateway.js +46 -0
  332. package/daemon/dist/routes/gateway.js.map +1 -0
  333. package/daemon/dist/routes/health-summary.d.ts.map +1 -1
  334. package/daemon/dist/routes/health-summary.js +8 -0
  335. package/daemon/dist/routes/health-summary.js.map +1 -1
  336. package/daemon/dist/routes/queue.d.ts.map +1 -1
  337. package/daemon/dist/routes/queue.js +32 -25
  338. package/daemon/dist/routes/queue.js.map +1 -1
  339. package/daemon/dist/routes/rigspec.js +20 -6
  340. package/daemon/dist/routes/rigspec.js.map +1 -1
  341. package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  342. package/daemon/dist/routes/scope-audit.js +72 -13
  343. package/daemon/dist/routes/scope-audit.js.map +1 -1
  344. package/daemon/dist/routes/seat.d.ts.map +1 -1
  345. package/daemon/dist/routes/seat.js +73 -0
  346. package/daemon/dist/routes/seat.js.map +1 -1
  347. package/daemon/dist/routes/transport.d.ts.map +1 -1
  348. package/daemon/dist/routes/transport.js +40 -36
  349. package/daemon/dist/routes/transport.js.map +1 -1
  350. package/daemon/dist/routes/up.js +21 -2
  351. package/daemon/dist/routes/up.js.map +1 -1
  352. package/daemon/dist/server.d.ts +17 -0
  353. package/daemon/dist/server.d.ts.map +1 -1
  354. package/daemon/dist/server.js +25 -4
  355. package/daemon/dist/server.js.map +1 -1
  356. package/daemon/dist/startup.d.ts +4 -0
  357. package/daemon/dist/startup.d.ts.map +1 -1
  358. package/daemon/dist/startup.js +33 -0
  359. package/daemon/dist/startup.js.map +1 -1
  360. package/daemon/docs/reference/agent-state-taxonomy.md +106 -0
  361. package/daemon/docs/reference/project-workspace.md +22 -14
  362. package/daemon/docs/reference/refocus-channel.md +27 -14
  363. package/daemon/docs/reference/sdlc-conventions.md +24 -13
  364. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  365. package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +21 -15
  366. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +1 -1
  367. package/dist/build-info.js +3 -3
  368. package/dist/cli-error.js +1 -1
  369. package/dist/cli-error.js.map +1 -1
  370. package/dist/commands/broadcast.js +6 -0
  371. package/dist/commands/broadcast.js.map +1 -1
  372. package/dist/commands/config-init-workspace.d.ts.map +1 -1
  373. package/dist/commands/config-init-workspace.js +32 -57
  374. package/dist/commands/config-init-workspace.js.map +1 -1
  375. package/dist/commands/config.d.ts.map +1 -1
  376. package/dist/commands/config.js +5 -0
  377. package/dist/commands/config.js.map +1 -1
  378. package/dist/commands/context.d.ts.map +1 -1
  379. package/dist/commands/context.js +13 -3
  380. package/dist/commands/context.js.map +1 -1
  381. package/dist/commands/daemon.d.ts.map +1 -1
  382. package/dist/commands/daemon.js +36 -5
  383. package/dist/commands/daemon.js.map +1 -1
  384. package/dist/commands/gateway.d.ts +19 -1
  385. package/dist/commands/gateway.d.ts.map +1 -1
  386. package/dist/commands/gateway.js +157 -33
  387. package/dist/commands/gateway.js.map +1 -1
  388. package/dist/commands/import.d.ts.map +1 -1
  389. package/dist/commands/import.js +10 -0
  390. package/dist/commands/import.js.map +1 -1
  391. package/dist/commands/parked.d.ts +3 -0
  392. package/dist/commands/parked.d.ts.map +1 -0
  393. package/dist/commands/parked.js +83 -0
  394. package/dist/commands/parked.js.map +1 -0
  395. package/dist/commands/proof.d.ts +2 -1
  396. package/dist/commands/proof.d.ts.map +1 -1
  397. package/dist/commands/proof.js +8 -8
  398. package/dist/commands/proof.js.map +1 -1
  399. package/dist/commands/ps.d.ts +10 -0
  400. package/dist/commands/ps.d.ts.map +1 -1
  401. package/dist/commands/ps.js +14 -3
  402. package/dist/commands/ps.js.map +1 -1
  403. package/dist/commands/queue.d.ts.map +1 -1
  404. package/dist/commands/queue.js +67 -16
  405. package/dist/commands/queue.js.map +1 -1
  406. package/dist/commands/scope.d.ts.map +1 -1
  407. package/dist/commands/scope.js +255 -136
  408. package/dist/commands/scope.js.map +1 -1
  409. package/dist/commands/seat.d.ts.map +1 -1
  410. package/dist/commands/seat.js +128 -10
  411. package/dist/commands/seat.js.map +1 -1
  412. package/dist/commands/send.d.ts +1 -1
  413. package/dist/commands/send.d.ts.map +1 -1
  414. package/dist/commands/send.js +237 -34
  415. package/dist/commands/send.js.map +1 -1
  416. package/dist/commands/slack.d.ts +14 -28
  417. package/dist/commands/slack.d.ts.map +1 -1
  418. package/dist/commands/slack.js +73 -187
  419. package/dist/commands/slack.js.map +1 -1
  420. package/dist/commands/start.d.ts +3 -0
  421. package/dist/commands/start.d.ts.map +1 -1
  422. package/dist/commands/start.js +12 -5
  423. package/dist/commands/start.js.map +1 -1
  424. package/dist/commands/up.d.ts.map +1 -1
  425. package/dist/commands/up.js +19 -4
  426. package/dist/commands/up.js.map +1 -1
  427. package/dist/commands/view.d.ts +4 -2
  428. package/dist/commands/view.d.ts.map +1 -1
  429. package/dist/commands/view.js +1 -1
  430. package/dist/commands/view.js.map +1 -1
  431. package/dist/commands/walk.d.ts +1 -1
  432. package/dist/commands/walk.d.ts.map +1 -1
  433. package/dist/commands/walk.js +20 -10
  434. package/dist/commands/walk.js.map +1 -1
  435. package/dist/commands/watchdog.d.ts.map +1 -1
  436. package/dist/commands/watchdog.js +2 -1
  437. package/dist/commands/watchdog.js.map +1 -1
  438. package/dist/commands/workspace.js +1 -1
  439. package/dist/config-store.d.ts +15 -1
  440. package/dist/config-store.d.ts.map +1 -1
  441. package/dist/config-store.js +60 -0
  442. package/dist/config-store.js.map +1 -1
  443. package/dist/cross-host-target.d.ts.map +1 -1
  444. package/dist/cross-host-target.js +5 -4
  445. package/dist/cross-host-target.js.map +1 -1
  446. package/dist/daemon-lifecycle.d.ts +45 -3
  447. package/dist/daemon-lifecycle.d.ts.map +1 -1
  448. package/dist/daemon-lifecycle.js +126 -0
  449. package/dist/daemon-lifecycle.js.map +1 -1
  450. package/dist/index.d.ts.map +1 -1
  451. package/dist/index.js +2 -0
  452. package/dist/index.js.map +1 -1
  453. package/dist/lib/scope/capability-delta.d.ts +9 -0
  454. package/dist/lib/scope/capability-delta.d.ts.map +1 -0
  455. package/dist/lib/scope/capability-delta.js +73 -0
  456. package/dist/lib/scope/capability-delta.js.map +1 -0
  457. package/dist/lib/scope/scaffold-placeholder.d.ts +4 -5
  458. package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
  459. package/dist/lib/scope/scaffold-placeholder.js +6 -7
  460. package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
  461. package/dist/lib/scope/scope-audit.d.ts +42 -3
  462. package/dist/lib/scope/scope-audit.d.ts.map +1 -1
  463. package/dist/lib/scope/scope-audit.js +78 -93
  464. package/dist/lib/scope/scope-audit.js.map +1 -1
  465. package/dist/lib/scope/scope-fs.d.ts +18 -14
  466. package/dist/lib/scope/scope-fs.d.ts.map +1 -1
  467. package/dist/lib/scope/scope-fs.js +60 -29
  468. package/dist/lib/scope/scope-fs.js.map +1 -1
  469. package/dist/lib/scope/templates.d.ts +17 -17
  470. package/dist/lib/scope/templates.d.ts.map +1 -1
  471. package/dist/lib/scope/templates.js +35 -39
  472. package/dist/lib/scope/templates.js.map +1 -1
  473. package/dist/lib/scope-templates/backlog-deprecation.md +3 -1
  474. package/dist/lib/scope-templates/backlog-tech-debt.md +3 -1
  475. package/dist/lib/scope-templates/bug-fix.md +3 -1
  476. package/dist/lib/scope-templates/capability-delta.md +60 -0
  477. package/dist/lib/scope-templates/mission-placeholder.md +9 -40
  478. package/dist/lib/scope-templates/mission-progress.md +5 -6
  479. package/dist/lib/scope-templates/mission-release.md +9 -40
  480. package/dist/lib/scope-templates/notes.md +14 -0
  481. package/dist/lib/scope-templates/placeholder.md +3 -1
  482. package/dist/lib/scope-templates/proof.md +1 -1
  483. package/dist/lib/scope-templates/release-feature.md +3 -1
  484. package/dist/lib/scope-templates/research.md +3 -1
  485. package/dist/lib/scope-templates/slice-progress.md +4 -5
  486. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts +15 -0
  487. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  488. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +57 -0
  489. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  490. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +31 -0
  491. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
  492. package/node_modules/@openrig/daemon/dist/adapters/tmux.js +31 -11
  493. package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
  494. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  495. package/node_modules/@openrig/daemon/dist/daemon-db-path.d.ts.map +1 -1
  496. package/node_modules/@openrig/daemon/dist/daemon-db-path.js +50 -2
  497. package/node_modules/@openrig/daemon/dist/daemon-db-path.js.map +1 -1
  498. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
  499. package/node_modules/@openrig/daemon/dist/db/all-migrations.js +4 -0
  500. package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
  501. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.d.ts +3 -0
  502. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.d.ts.map +1 -0
  503. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.js +22 -0
  504. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.js.map +1 -0
  505. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts +3 -0
  506. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts.map +1 -0
  507. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.js +21 -0
  508. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.js.map +1 -0
  509. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.d.ts +112 -0
  510. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -0
  511. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.js +99 -0
  512. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.js.map +1 -0
  513. package/node_modules/@openrig/daemon/dist/domain/bind-plan.d.ts +19 -0
  514. package/node_modules/@openrig/daemon/dist/domain/bind-plan.d.ts.map +1 -0
  515. package/node_modules/@openrig/daemon/dist/domain/bind-plan.js +25 -0
  516. package/node_modules/@openrig/daemon/dist/domain/bind-plan.js.map +1 -0
  517. package/node_modules/@openrig/daemon/dist/domain/event-bus.d.ts +6 -0
  518. package/node_modules/@openrig/daemon/dist/domain/event-bus.d.ts.map +1 -1
  519. package/node_modules/@openrig/daemon/dist/domain/event-bus.js +15 -5
  520. package/node_modules/@openrig/daemon/dist/domain/event-bus.js.map +1 -1
  521. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.d.ts.map +1 -1
  522. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.js +9 -0
  523. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.js.map +1 -1
  524. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.d.ts.map +1 -1
  525. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.js +9 -0
  526. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.js.map +1 -1
  527. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts +80 -0
  528. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -0
  529. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js +149 -0
  530. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -0
  531. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +109 -0
  532. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  533. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +250 -0
  534. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  535. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts +44 -0
  536. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -0
  537. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js +62 -0
  538. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js.map +1 -0
  539. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.d.ts +8 -0
  540. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.d.ts.map +1 -0
  541. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.js +20 -0
  542. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.js.map +1 -0
  543. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts +113 -0
  544. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -0
  545. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js +146 -0
  546. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js.map +1 -0
  547. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts +80 -0
  548. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -0
  549. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js +164 -0
  550. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js.map +1 -0
  551. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +54 -0
  552. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -0
  553. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js +96 -0
  554. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -0
  555. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +53 -0
  556. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -0
  557. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +72 -0
  558. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -0
  559. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.d.ts +21 -0
  560. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.d.ts.map +1 -0
  561. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.js +73 -0
  562. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.js.map +1 -0
  563. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts +106 -0
  564. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -0
  565. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js +198 -0
  566. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -0
  567. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +47 -0
  568. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -0
  569. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js +147 -0
  570. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -0
  571. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +21 -0
  572. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -0
  573. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +198 -0
  574. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -0
  575. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +30 -0
  576. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -0
  577. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js +99 -0
  578. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -0
  579. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts +62 -0
  580. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -0
  581. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js +132 -0
  582. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js.map +1 -0
  583. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts +17 -0
  584. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -0
  585. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js +35 -0
  586. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -0
  587. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +56 -0
  588. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -0
  589. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js +103 -0
  590. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -0
  591. package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.d.ts.map +1 -1
  592. package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.js +9 -0
  593. package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.js.map +1 -1
  594. package/node_modules/@openrig/daemon/dist/domain/gateway/transport.d.ts.map +1 -1
  595. package/node_modules/@openrig/daemon/dist/domain/gateway/transport.js +9 -0
  596. package/node_modules/@openrig/daemon/dist/domain/gateway/transport.js.map +1 -1
  597. package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  598. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js +20 -0
  599. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js.map +1 -1
  600. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts +81 -0
  601. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts.map +1 -0
  602. package/node_modules/@openrig/daemon/dist/domain/parked-query.js +126 -0
  603. package/node_modules/@openrig/daemon/dist/domain/parked-query.js.map +1 -0
  604. package/node_modules/@openrig/daemon/dist/domain/plugin-discovery-service.d.ts +16 -0
  605. package/node_modules/@openrig/daemon/dist/domain/plugin-discovery-service.d.ts.map +1 -1
  606. package/node_modules/@openrig/daemon/dist/domain/plugin-discovery-service.js +175 -1
  607. package/node_modules/@openrig/daemon/dist/domain/plugin-discovery-service.js.map +1 -1
  608. package/node_modules/@openrig/daemon/dist/domain/plugin-vendor-service.d.ts +9 -5
  609. package/node_modules/@openrig/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  610. package/node_modules/@openrig/daemon/dist/domain/plugin-vendor-service.js +101 -12
  611. package/node_modules/@openrig/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  612. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts +38 -0
  613. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts.map +1 -0
  614. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js +67 -0
  615. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js.map +1 -0
  616. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +41 -11
  617. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  618. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +316 -36
  619. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  620. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts +77 -0
  621. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -0
  622. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +348 -0
  623. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -0
  624. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts +96 -0
  625. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -0
  626. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js +533 -0
  627. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js.map +1 -0
  628. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +37 -0
  629. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -0
  630. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +80 -0
  631. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -0
  632. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.d.ts +28 -0
  633. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.d.ts.map +1 -0
  634. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.js +71 -0
  635. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.js.map +1 -0
  636. package/node_modules/@openrig/daemon/dist/domain/reconciler.d.ts.map +1 -1
  637. package/node_modules/@openrig/daemon/dist/domain/reconciler.js +6 -1
  638. package/node_modules/@openrig/daemon/dist/domain/reconciler.js.map +1 -1
  639. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +3 -1
  640. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
  641. package/node_modules/@openrig/daemon/dist/domain/review/compose.js +14 -8
  642. package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
  643. package/node_modules/@openrig/daemon/dist/domain/review/gather.d.ts.map +1 -1
  644. package/node_modules/@openrig/daemon/dist/domain/review/gather.js +3 -1
  645. package/node_modules/@openrig/daemon/dist/domain/review/gather.js.map +1 -1
  646. package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts +4 -0
  647. package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  648. package/node_modules/@openrig/daemon/dist/domain/rig-repository.js +9 -0
  649. package/node_modules/@openrig/daemon/dist/domain/rig-repository.js.map +1 -1
  650. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +12 -0
  651. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  652. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +50 -0
  653. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  654. package/node_modules/@openrig/daemon/dist/domain/running-name-guard.d.ts +52 -0
  655. package/node_modules/@openrig/daemon/dist/domain/running-name-guard.d.ts.map +1 -0
  656. package/node_modules/@openrig/daemon/dist/domain/running-name-guard.js +34 -0
  657. package/node_modules/@openrig/daemon/dist/domain/running-name-guard.js.map +1 -0
  658. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +6 -5
  659. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  660. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +23 -20
  661. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  662. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts +4 -5
  663. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  664. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js +6 -7
  665. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  666. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts +1 -1
  667. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  668. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js +5 -4
  669. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  670. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts +42 -3
  671. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  672. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js +78 -93
  673. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  674. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  675. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +7 -2
  676. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  677. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts +91 -0
  678. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  679. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js +416 -1
  680. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js.map +1 -1
  681. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.d.ts +14 -0
  682. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -1
  683. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.js +14 -1
  684. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.js.map +1 -1
  685. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +54 -1
  686. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  687. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +162 -19
  688. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
  689. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts +97 -0
  690. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -0
  691. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js +312 -0
  692. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js.map +1 -0
  693. package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts +8 -5
  694. package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts.map +1 -1
  695. package/node_modules/@openrig/daemon/dist/domain/session-transport.js +40 -18
  696. package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
  697. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts +6 -1
  698. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  699. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js +3 -3
  700. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  701. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +69 -0
  702. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  703. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  704. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  705. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  706. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +48 -0
  707. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  708. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts +1 -1
  709. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts.map +1 -1
  710. package/node_modules/@openrig/daemon/dist/domain/view-projector.js +41 -2
  711. package/node_modules/@openrig/daemon/dist/domain/view-projector.js.map +1 -1
  712. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
  713. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  714. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js +3 -0
  715. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  716. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +4 -3
  717. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  718. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js +56 -196
  719. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  720. package/node_modules/@openrig/daemon/dist/domain/workspace/getting-started-narrative.js +1 -1
  721. package/node_modules/@openrig/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -1
  722. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts +8 -11
  723. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  724. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js +23 -25
  725. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  726. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts +4 -0
  727. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts.map +1 -0
  728. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js +8 -0
  729. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js.map +1 -0
  730. package/node_modules/@openrig/daemon/dist/index.d.ts +29 -0
  731. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  732. package/node_modules/@openrig/daemon/dist/index.js +99 -4
  733. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  734. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts +1 -1
  735. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  736. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js +8 -14
  737. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js.map +1 -1
  738. package/node_modules/@openrig/daemon/dist/routes/activity.d.ts +13 -0
  739. package/node_modules/@openrig/daemon/dist/routes/activity.d.ts.map +1 -1
  740. package/node_modules/@openrig/daemon/dist/routes/activity.js +186 -0
  741. package/node_modules/@openrig/daemon/dist/routes/activity.js.map +1 -1
  742. package/node_modules/@openrig/daemon/dist/routes/config.js +2 -2
  743. package/node_modules/@openrig/daemon/dist/routes/config.js.map +1 -1
  744. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts +3 -0
  745. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -0
  746. package/node_modules/@openrig/daemon/dist/routes/gateway.js +46 -0
  747. package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -0
  748. package/node_modules/@openrig/daemon/dist/routes/health-summary.d.ts.map +1 -1
  749. package/node_modules/@openrig/daemon/dist/routes/health-summary.js +8 -0
  750. package/node_modules/@openrig/daemon/dist/routes/health-summary.js.map +1 -1
  751. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
  752. package/node_modules/@openrig/daemon/dist/routes/queue.js +32 -25
  753. package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
  754. package/node_modules/@openrig/daemon/dist/routes/rigspec.js +20 -6
  755. package/node_modules/@openrig/daemon/dist/routes/rigspec.js.map +1 -1
  756. package/node_modules/@openrig/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  757. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js +72 -13
  758. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js.map +1 -1
  759. package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
  760. package/node_modules/@openrig/daemon/dist/routes/seat.js +73 -0
  761. package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
  762. package/node_modules/@openrig/daemon/dist/routes/transport.d.ts.map +1 -1
  763. package/node_modules/@openrig/daemon/dist/routes/transport.js +40 -36
  764. package/node_modules/@openrig/daemon/dist/routes/transport.js.map +1 -1
  765. package/node_modules/@openrig/daemon/dist/routes/up.js +21 -2
  766. package/node_modules/@openrig/daemon/dist/routes/up.js.map +1 -1
  767. package/node_modules/@openrig/daemon/dist/server.d.ts +17 -0
  768. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  769. package/node_modules/@openrig/daemon/dist/server.js +25 -4
  770. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  771. package/node_modules/@openrig/daemon/dist/startup.d.ts +4 -0
  772. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  773. package/node_modules/@openrig/daemon/dist/startup.js +33 -0
  774. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  775. package/node_modules/@openrig/daemon/package.json +5 -1
  776. package/package.json +1 -1
  777. package/tui/dist/daemon-client.d.ts +5 -0
  778. package/tui/dist/daemon-client.d.ts.map +1 -1
  779. package/tui/dist/daemon-client.js +17 -0
  780. package/tui/dist/daemon-client.js.map +1 -1
  781. package/tui/dist/hydrate.d.ts.map +1 -1
  782. package/tui/dist/hydrate.js +12 -4
  783. package/tui/dist/hydrate.js.map +1 -1
  784. package/tui/dist/live-events.d.ts +21 -0
  785. package/tui/dist/live-events.d.ts.map +1 -0
  786. package/tui/dist/live-events.js +88 -0
  787. package/tui/dist/live-events.js.map +1 -0
  788. package/tui/dist/live.js +1 -1
  789. package/tui/dist/main.js +27 -8
  790. package/tui/dist/main.js.map +1 -1
  791. package/tui/dist/refresh.d.ts +10 -1
  792. package/tui/dist/refresh.d.ts.map +1 -1
  793. package/tui/dist/refresh.js +22 -2
  794. package/tui/dist/refresh.js.map +1 -1
  795. package/daemon/context-packs/world/install/01-world-from-primitives.md +0 -97
  796. package/daemon/context-packs/world/install/02-permission-self-sleep.md +0 -141
  797. package/daemon/context-packs/world/install/03-what-this-is-for.md +0 -86
  798. package/daemon/context-packs/world/install/04-ontology.md +0 -790
  799. package/daemon/context-packs/world/install/05-harness-power-use.md +0 -355
  800. package/daemon/context-packs/world/install/06-a-competent-turn.md +0 -225
  801. package/daemon/context-packs/world/install/manifest.yaml +0 -125
  802. package/dist/lib/scope-templates/mission-brief.md +0 -20
  803. package/dist/lib/scope-templates/mission-notes.md +0 -102
  804. package/dist/slack/config.d.ts.map +0 -1
  805. package/dist/slack/config.js.map +0 -1
  806. package/dist/slack/connector-server.d.ts +0 -31
  807. package/dist/slack/connector-server.d.ts.map +0 -1
  808. package/dist/slack/connector-server.js +0 -108
  809. package/dist/slack/connector-server.js.map +0 -1
  810. package/dist/slack/inbound-admission.d.ts.map +0 -1
  811. package/dist/slack/inbound-admission.js.map +0 -1
  812. package/dist/slack/inbound.d.ts.map +0 -1
  813. package/dist/slack/inbound.js.map +0 -1
  814. package/dist/slack/message.d.ts +0 -39
  815. package/dist/slack/message.d.ts.map +0 -1
  816. package/dist/slack/message.js +0 -88
  817. package/dist/slack/message.js.map +0 -1
  818. package/dist/slack/outbound.d.ts +0 -39
  819. package/dist/slack/outbound.d.ts.map +0 -1
  820. package/dist/slack/outbound.js +0 -63
  821. package/dist/slack/outbound.js.map +0 -1
  822. package/dist/slack/queue-bridge.d.ts +0 -61
  823. package/dist/slack/queue-bridge.d.ts.map +0 -1
  824. package/dist/slack/queue-bridge.js +0 -114
  825. package/dist/slack/queue-bridge.js.map +0 -1
  826. package/dist/slack/secrets.d.ts.map +0 -1
  827. package/dist/slack/secrets.js.map +0 -1
  828. package/dist/slack/slack-api.d.ts +0 -49
  829. package/dist/slack/slack-api.d.ts.map +0 -1
  830. package/dist/slack/slack-api.js +0 -110
  831. package/dist/slack/slack-api.js.map +0 -1
  832. package/dist/slack/slack-delivery.d.ts +0 -14
  833. package/dist/slack/slack-delivery.d.ts.map +0 -1
  834. package/dist/slack/slack-delivery.js +0 -28
  835. package/dist/slack/slack-delivery.js.map +0 -1
  836. package/dist/slack/state-store.d.ts.map +0 -1
  837. package/dist/slack/state-store.js.map +0 -1
  838. /package/{dist → daemon/dist/domain/gateway}/slack/inbound-admission.js +0 -0
  839. /package/{dist → daemon/dist/domain/gateway}/slack/secrets.d.ts +0 -0
  840. /package/{dist → daemon/dist/domain/gateway}/slack/secrets.js +0 -0
  841. /package/{dist → daemon/dist/domain/gateway}/slack/state-store.d.ts +0 -0
  842. /package/{dist → daemon/dist/domain/gateway}/slack/state-store.js +0 -0
@@ -2,6 +2,7 @@ import type Database from "better-sqlite3";
2
2
  import type { TmuxAdapter } from "../adapters/tmux.js";
3
3
  import type { EventBus } from "./event-bus.js";
4
4
  import type { SeatActivity } from "./types.js";
5
+ import type { ActivityEvidence, AdapterRungInventory, ArbitratedSeatState, RungHealthEvent } from "./activity-taxonomy.js";
5
6
  /** Default polling cadence: 1Hz. The default silence window is 3s, so
6
7
  * 1Hz polling gives at-most ~1s freshness lag on the cached observation. */
7
8
  export declare const DEFAULT_POLL_INTERVAL_MS = 1000;
@@ -27,6 +28,9 @@ export interface SeatActivityServiceDeps {
27
28
  defaultWindowSeconds: number;
28
29
  eventBus?: EventBus;
29
30
  now?: () => Date;
31
+ /** S19: the self-report rung producer (Claude pid.json). Consulted per sweep for seats
32
+ * whose declared inventory staffs self-report; absent = the rung is absent. */
33
+ selfReportReader?: (sessionName: string, seatNodeId: string) => ActivityEvidence | null;
30
34
  }
31
35
  export interface PollSeatOptions {
32
36
  silenceWindowSeconds?: number;
@@ -38,6 +42,7 @@ export declare class SeatActivityService {
38
42
  private readonly now;
39
43
  private readonly latestByPaneId;
40
44
  private sweeping;
45
+ private readonly selfReportReader;
41
46
  constructor(deps: SeatActivityServiceDeps);
42
47
  /**
43
48
  * Read the window's last-activity timestamp for `paneId` once and
@@ -76,5 +81,91 @@ export declare class SeatActivityService {
76
81
  start(db: Database.Database, intervalMs?: number): void;
77
82
  /** Stop the scheduler. Safe to call before start or multiple times. */
78
83
  stop(): void;
84
+ private readonly ladder;
85
+ private readonly sessionToSeat;
86
+ private readonly healthListeners;
87
+ private readonly samplerSeqBySession;
88
+ /** An adapter (or an occupant swap) declares which rungs this seat's sources staff.
89
+ * The binding ties the durable seat nodeId to its current pane/session name so the
90
+ * internal sampler can feed the window-sampling rung for this seat. */
91
+ declareRungInventory(binding: {
92
+ seatNodeId: string;
93
+ sessionName: string;
94
+ }, inventory: AdapterRungInventory): void;
95
+ /** Adapters push rung evidence (hooks, self-report, chrome, sampling). Per-source
96
+ * monotonic seq: stale or reordered reports are dropped — a late lower-seq event
97
+ * never revives an idle seat (the SubagentStop class at the service layer). */
98
+ reportEvidence(evidence: ActivityEvidence): void;
99
+ /** A handover/generation swap: its OWN visible event, never an activity transition.
100
+ * Evidence, debounce, contradiction and promotion state are cleared; every known
101
+ * rung's trust drops to `absent` until the successor's adapter RE-DECLARES its
102
+ * inventory (AM-1 corollary: a successor never inherits rung authority). */
103
+ declareOccupantSwap(seatNodeId: string, generation: string): void;
104
+ /** Whether this seat currently has a DECLARED rung inventory (a swap clears it —
105
+ * the successor must re-declare before its rungs regain any trust). */
106
+ hasRungInventory(seatNodeId: string): boolean;
107
+ /** Resolve by CURRENT session name (projection convenience) — state itself stays
108
+ * keyed by the durable seat nodeId. */
109
+ getSeatStateBySession(sessionName: string): ArbitratedSeatState | null;
110
+ /** The arbitrated, seat-keyed state every surface renders from. */
111
+ getSeatState(seatNodeId: string): ArbitratedSeatState | null;
112
+ /** Wait-after-seq read primitive (T1 seam, exposed not consumed here): resolves when
113
+ * the arbitrated seq passes `afterSeq` (a fast pass-through transition still
114
+ * satisfies the wait — the lost-wakeup guard). Timeout resolves null, never throws. */
115
+ waitForSeatState(seatNodeId: string, opts: {
116
+ afterSeq: number;
117
+ timeoutMs: number;
118
+ }): Promise<ArbitratedSeatState | null>;
119
+ /** Rung-health transitions (AM-1): degradations and promotions are VISIBLE, never silent. */
120
+ onRungHealth(listener: (event: RungHealthEvent) => void): void;
121
+ private seatLadder;
122
+ /** Trust for a rung: declared trust when an inventory exists; without a declaration
123
+ * the generic tmux floor (window-sampling) is authoritative and everything else is
124
+ * identity-only — partial-coverage honesty by default. */
125
+ private rungTrust;
126
+ /** Latest evidence for a rung. kind "activity" returns the newest ACTIVITY-BEARING
127
+ * evidence — a needs-input-only event from the same source (e.g. PermissionRequest
128
+ * mid-turn) must not erase what the source last said about working/idle. */
129
+ private latestByRung;
130
+ /** AM-2: a TRIAL rung's evidence is measured against the current authoritative
131
+ * CANDIDATE value (raw ladder decision, pre-debounce) — evidence against evidence,
132
+ * never against the debounced display. Enough agreements over at least the minimum
133
+ * window promote the rung to authoritative, visibly. */
134
+ private measureTrialAgreement;
135
+ /** The raw ladder decision for working/idle: highest authoritative rung with usable,
136
+ * in-window evidence. Hook evidence is TIME-BOUNDED (the one rung that does not
137
+ * self-date its lifecycle) — expired hook evidence falls through, never errors. */
138
+ private rawCandidate;
139
+ private emitRungHealth;
140
+ /** AM-1: persistent cross-rung contradiction (hook claims working while a lower
141
+ * authoritative rung sees idle-at-prompt beyond the stated window) degrades the hook
142
+ * rung to identity-only, VISIBLY — arbitration can never make a silently-dead source
143
+ * authoritative. */
144
+ private checkContradiction;
145
+ private rungsView;
146
+ /** Recompute the arbitrated state. Debounce: a sampling-decided working→idle
147
+ * transition holds until the stated consecutive idle observations or the hard cap;
148
+ * an authoritative turn boundary (hooks/self-report idle) or idle chrome publishes
149
+ * instantly. Chosen against our 1Hz/3s cadence: the 3s silence window already
150
+ * absorbs sub-3s lulls; the 2-tick arbitration debounce absorbs the
151
+ * window-boundary flap. */
152
+ private arbitrate;
153
+ /** AM-R18 push substrate: a change notification (identity + seq) onto the bus — the
154
+ * SSE stream relays it; consumers REHYDRATE from the projection, so the push itself
155
+ * never carries derived vocabulary (no second activity mechanism by construction). */
156
+ private emitActivityChanged;
157
+ private resolveWaiters;
79
158
  }
159
+ /** Hook evidence older than this no longer decides working/idle (time-bounded authority). */
160
+ export declare const HOOK_AUTHORITY_WINDOW_MS = 15000;
161
+ /** Persistent hook-vs-sampler contradiction beyond this window degrades the hook rung. */
162
+ export declare const CROSS_RUNG_CONTRADICTION_WINDOW_MS = 10000;
163
+ /** Sampling-decided working→idle needs this many consecutive idle evaluations… */
164
+ export declare const SAMPLING_IDLE_DEBOUNCE_TICKS = 2;
165
+ /** …bounded by this hard cap; authoritative turn boundaries and idle chrome bypass instantly. */
166
+ export declare const SAMPLING_IDLE_DEBOUNCE_CAP_MS = 2500;
167
+ /** AM-2 promotion: a trial rung earns authority after this many agreeing observations… */
168
+ export declare const RUNG_PROMOTION_AGREEMENT_COUNT = 50;
169
+ /** …spread over at least this window of production time. */
170
+ export declare const RUNG_PROMOTION_MIN_WINDOW_MS: number;
80
171
  //# sourceMappingURL=seat-activity-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seat-activity-service.d.ts","sourceRoot":"","sources":["../../src/domain/seat-activity-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;6EAC6E;AAC7E,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAChD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4C;IACjE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAIlE,OAAO,CAAC,QAAQ,CAAS;gBAEb,IAAI,EAAE,uBAAuB;IAOzC;;;;;;;;;;;;;OAaG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiCpF;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIpD,6EAA6E;IAC7E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;OAIG;IACG,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCnE,OAAO,CAAC,KAAK,CAA+C;IAE5D;;;OAGG;IACH,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAE,MAAiC,GAAG,IAAI;IAUjF,uEAAuE;IACvE,IAAI,IAAI,IAAI;CAMb"}
1
+ {"version":3,"file":"seat-activity-service.d.ts","sourceRoot":"","sources":["../../src/domain/seat-activity-service.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { EVIDENCE_RUNG_RANK, runtimeRungInventory } from "./activity-taxonomy.js";
1
2
  /** Default polling cadence: 1Hz. The default silence window is 3s, so
2
3
  * 1Hz polling gives at-most ~1s freshness lag on the cached observation. */
3
4
  export const DEFAULT_POLL_INTERVAL_MS = 1000;
@@ -11,11 +12,13 @@ export class SeatActivityService {
11
12
  // seat-structural-activity-service (MUST-FIX 2). A slowed tmux can never accumulate
12
13
  // overlapping whole-fleet sweeps — at most one sweep's worth is ever in flight.
13
14
  sweeping = false;
15
+ selfReportReader;
14
16
  constructor(deps) {
15
17
  this.tmux = deps.tmux;
16
18
  this.defaultWindowSeconds = deps.defaultWindowSeconds;
17
19
  this.eventBus = deps.eventBus ?? null;
18
20
  this.now = deps.now ?? (() => new Date());
21
+ this.selfReportReader = deps.selfReportReader ?? null;
19
22
  }
20
23
  /**
21
24
  * Read the window's last-activity timestamp for `paneId` once and
@@ -61,6 +64,28 @@ export class SeatActivityService {
61
64
  lastActivityAt: new Date(lastActivityEpochSeconds * 1000).toISOString(),
62
65
  };
63
66
  this.latestByPaneId.set(paneId, record);
67
+ // S19: the sampler IS the window-sampling rung — feed the ladder for bound seats,
68
+ // and consult the self-report rung (when declared) in the same pass.
69
+ const seatNodeId = this.sessionToSeat.get(paneId);
70
+ if (seatNodeId) {
71
+ const seq = (this.samplerSeqBySession.get(paneId) ?? 0) + 1;
72
+ this.samplerSeqBySession.set(paneId, seq);
73
+ this.reportEvidence({
74
+ seatNodeId,
75
+ sessionName: paneId,
76
+ rung: "window-sampling",
77
+ sourceId: "tmux:window-activity",
78
+ seq,
79
+ observedAt: record.lastObservedAt,
80
+ activity: isActiveWithinWindow ? "working" : "idle-at-prompt",
81
+ });
82
+ const seat = this.ladder.get(seatNodeId);
83
+ if (this.selfReportReader && seat?.inventory?.rungs.some((r) => r.rung === "self-report")) {
84
+ const evd = this.selfReportReader(paneId, seatNodeId);
85
+ if (evd)
86
+ this.reportEvidence(evd); // null = unreadable ⇒ the rung simply stales
87
+ }
88
+ }
64
89
  return record;
65
90
  }
66
91
  /**
@@ -90,7 +115,7 @@ export class SeatActivityService {
90
115
  this.sweeping = true;
91
116
  try {
92
117
  const rows = db.prepare(`
93
- SELECT s.session_name as session_name
118
+ SELECT s.session_name as session_name, n.id as node_id, n.runtime as runtime
94
119
  FROM nodes n
95
120
  JOIN sessions s ON s.node_id = n.id
96
121
  AND s.id = (SELECT s2.id FROM sessions s2 WHERE s2.node_id = n.id ORDER BY s2.id DESC LIMIT 1)
@@ -99,6 +124,16 @@ export class SeatActivityService {
99
124
  AND s.session_name IS NOT NULL
100
125
  AND COALESCE(b.attachment_type, 'tmux') = 'tmux'
101
126
  `).all();
127
+ // S19: every running tmux seat gets a ladder binding; undeclared seats are
128
+ // auto-declared from their runtime's inventory (claude authoritative standing,
129
+ // codex hooks-at-trial, generic sampling floor) — production-complete without
130
+ // touching the launch machinery.
131
+ for (const r of rows) {
132
+ const known = this.ladder.get(r.node_id);
133
+ if (!known || known.inventory === null) {
134
+ this.declareRungInventory({ seatNodeId: r.node_id, sessionName: r.session_name }, runtimeRungInventory(r.runtime));
135
+ }
136
+ }
102
137
  // Drop observations for seats that are no longer running (release
103
138
  // memory + avoid stale reads from `getSeatActivity`).
104
139
  const live = new Set(rows.map((r) => r.session_name));
@@ -140,5 +175,385 @@ export class SeatActivityService {
140
175
  this.timer = null;
141
176
  }
142
177
  }
178
+ // ── S19 (OPR.0.5.5.19): the ranked evidence ladder above the sampler ──
179
+ // The non-inference contract is UNCHANGED: nothing below reads queue/assignment
180
+ // state; the parked join lives in the parked-query surface, never here.
181
+ ladder = new Map();
182
+ sessionToSeat = new Map();
183
+ healthListeners = [];
184
+ samplerSeqBySession = new Map();
185
+ /** An adapter (or an occupant swap) declares which rungs this seat's sources staff.
186
+ * The binding ties the durable seat nodeId to its current pane/session name so the
187
+ * internal sampler can feed the window-sampling rung for this seat. */
188
+ declareRungInventory(binding, inventory) {
189
+ const seat = this.seatLadder(binding.seatNodeId, binding.sessionName);
190
+ seat.sessionName = binding.sessionName;
191
+ this.sessionToSeat.set(binding.sessionName, binding.seatNodeId);
192
+ seat.inventory = inventory;
193
+ seat.trust.clear();
194
+ for (const decl of inventory.rungs)
195
+ seat.trust.set(decl.rung, decl.initialTrust);
196
+ seat.promotion.clear();
197
+ this.arbitrate(seat);
198
+ }
199
+ /** Adapters push rung evidence (hooks, self-report, chrome, sampling). Per-source
200
+ * monotonic seq: stale or reordered reports are dropped — a late lower-seq event
201
+ * never revives an idle seat (the SubagentStop class at the service layer). */
202
+ reportEvidence(evidence) {
203
+ const seat = this.seatLadder(evidence.seatNodeId, evidence.sessionName);
204
+ this.sessionToSeat.set(evidence.sessionName, evidence.seatNodeId);
205
+ const prior = seat.sources.get(evidence.sourceId);
206
+ if (prior && evidence.seq <= prior.latest.seq)
207
+ return; // stale/reordered — dropped
208
+ seat.sources.set(evidence.sourceId, {
209
+ latest: evidence,
210
+ latestActivity: evidence.activity !== undefined ? evidence : prior?.latestActivity ?? null,
211
+ });
212
+ this.measureTrialAgreement(seat, evidence);
213
+ this.arbitrate(seat);
214
+ }
215
+ /** A handover/generation swap: its OWN visible event, never an activity transition.
216
+ * Evidence, debounce, contradiction and promotion state are cleared; every known
217
+ * rung's trust drops to `absent` until the successor's adapter RE-DECLARES its
218
+ * inventory (AM-1 corollary: a successor never inherits rung authority). */
219
+ declareOccupantSwap(seatNodeId, generation) {
220
+ const seat = this.ladder.get(seatNodeId);
221
+ if (!seat)
222
+ return;
223
+ seat.sources.clear();
224
+ seat.pendingIdle = null;
225
+ seat.contradictionSinceMs = null;
226
+ seat.promotion.clear();
227
+ for (const rung of seat.trust.keys())
228
+ seat.trust.set(rung, "absent");
229
+ seat.inventory = null;
230
+ const at = this.now().toISOString();
231
+ seat.arbitrated = {
232
+ ...seat.arbitrated,
233
+ activity: "unknown",
234
+ needsInput: { count: 0, reason: null },
235
+ decidedBy: null,
236
+ seq: seat.arbitrated.seq + 1, // the swap IS a visible event
237
+ changedAt: at,
238
+ rungs: this.rungsView(seat),
239
+ lastSwap: { generation, at },
240
+ };
241
+ this.resolveWaiters(seat);
242
+ this.emitActivityChanged(seat); // the swap is a visible push too
243
+ }
244
+ /** Whether this seat currently has a DECLARED rung inventory (a swap clears it —
245
+ * the successor must re-declare before its rungs regain any trust). */
246
+ hasRungInventory(seatNodeId) {
247
+ return this.ladder.get(seatNodeId)?.inventory != null;
248
+ }
249
+ /** Resolve by CURRENT session name (projection convenience) — state itself stays
250
+ * keyed by the durable seat nodeId. */
251
+ getSeatStateBySession(sessionName) {
252
+ const seatNodeId = this.sessionToSeat.get(sessionName);
253
+ return seatNodeId ? this.getSeatState(seatNodeId) : null;
254
+ }
255
+ /** The arbitrated, seat-keyed state every surface renders from. */
256
+ getSeatState(seatNodeId) {
257
+ const seat = this.ladder.get(seatNodeId);
258
+ if (!seat)
259
+ return null;
260
+ this.arbitrate(seat); // lazy re-evaluation picks up time-based expiry/caps
261
+ return seat.arbitrated;
262
+ }
263
+ /** Wait-after-seq read primitive (T1 seam, exposed not consumed here): resolves when
264
+ * the arbitrated seq passes `afterSeq` (a fast pass-through transition still
265
+ * satisfies the wait — the lost-wakeup guard). Timeout resolves null, never throws. */
266
+ waitForSeatState(seatNodeId, opts) {
267
+ const seat = this.ladder.get(seatNodeId);
268
+ if (!seat)
269
+ return Promise.resolve(null);
270
+ if (seat.arbitrated.seq > opts.afterSeq)
271
+ return Promise.resolve(seat.arbitrated);
272
+ return new Promise((resolve) => {
273
+ const waiter = {
274
+ afterSeq: opts.afterSeq,
275
+ resolve,
276
+ timer: setTimeout(() => {
277
+ seat.waiters = seat.waiters.filter((w) => w !== waiter);
278
+ resolve(null);
279
+ }, opts.timeoutMs),
280
+ };
281
+ if (typeof waiter.timer === "object" && "unref" in waiter.timer)
282
+ waiter.timer.unref();
283
+ seat.waiters.push(waiter);
284
+ });
285
+ }
286
+ /** Rung-health transitions (AM-1): degradations and promotions are VISIBLE, never silent. */
287
+ onRungHealth(listener) {
288
+ this.healthListeners.push(listener);
289
+ }
290
+ seatLadder(seatNodeId, sessionName) {
291
+ let seat = this.ladder.get(seatNodeId);
292
+ if (!seat) {
293
+ seat = {
294
+ sessionName,
295
+ inventory: null,
296
+ sources: new Map(),
297
+ trust: new Map(),
298
+ promotion: new Map(),
299
+ contradictionSinceMs: null,
300
+ pendingIdle: null,
301
+ waiters: [],
302
+ arbitrated: {
303
+ seatNodeId,
304
+ activity: "unknown",
305
+ needsInput: { count: 0, reason: null },
306
+ decidedBy: null,
307
+ seq: 0,
308
+ changedAt: this.now().toISOString(),
309
+ rungs: [],
310
+ lastSwap: null,
311
+ },
312
+ };
313
+ this.ladder.set(seatNodeId, seat);
314
+ }
315
+ return seat;
316
+ }
317
+ /** Trust for a rung: declared trust when an inventory exists; without a declaration
318
+ * the generic tmux floor (window-sampling) is authoritative and everything else is
319
+ * identity-only — partial-coverage honesty by default. */
320
+ rungTrust(seat, rung) {
321
+ const declared = seat.trust.get(rung);
322
+ if (declared)
323
+ return declared;
324
+ if (seat.inventory)
325
+ return "absent"; // declared inventory, undeclared rung
326
+ return rung === "window-sampling" ? "authoritative" : "identity-only";
327
+ }
328
+ /** Latest evidence for a rung. kind "activity" returns the newest ACTIVITY-BEARING
329
+ * evidence — a needs-input-only event from the same source (e.g. PermissionRequest
330
+ * mid-turn) must not erase what the source last said about working/idle. */
331
+ latestByRung(seat, rung, kind = "any") {
332
+ let best = null;
333
+ for (const entry of seat.sources.values()) {
334
+ const evd = kind === "activity" ? entry.latestActivity : entry.latest;
335
+ if (!evd || evd.rung !== rung)
336
+ continue;
337
+ if (!best || evd.seq > best.seq)
338
+ best = evd;
339
+ }
340
+ return best;
341
+ }
342
+ /** AM-2: a TRIAL rung's evidence is measured against the current authoritative
343
+ * CANDIDATE value (raw ladder decision, pre-debounce) — evidence against evidence,
344
+ * never against the debounced display. Enough agreements over at least the minimum
345
+ * window promote the rung to authoritative, visibly. */
346
+ measureTrialAgreement(seat, evidence) {
347
+ if (evidence.activity === undefined)
348
+ return;
349
+ if (this.rungTrust(seat, evidence.rung) !== "trial")
350
+ return;
351
+ const authority = this.rawCandidate(seat, { excludeRung: evidence.rung });
352
+ if (!authority || authority.activity === undefined)
353
+ return;
354
+ const entry = seat.promotion.get(evidence.rung) ?? { agreements: 0, firstAgreementAtMs: null };
355
+ if (authority.activity === evidence.activity) {
356
+ entry.agreements += 1;
357
+ if (entry.firstAgreementAtMs === null)
358
+ entry.firstAgreementAtMs = this.now().getTime();
359
+ const spanMs = this.now().getTime() - (entry.firstAgreementAtMs ?? 0);
360
+ if (entry.agreements >= RUNG_PROMOTION_AGREEMENT_COUNT && spanMs >= RUNG_PROMOTION_MIN_WINDOW_MS) {
361
+ seat.trust.set(evidence.rung, "authoritative");
362
+ this.emitRungHealth(seat, evidence.rung, evidence.sourceId, "trial", "authoritative", `promoted: ${entry.agreements} agreeing observations over ${Math.round(spanMs / 60000)}min (threshold ${RUNG_PROMOTION_AGREEMENT_COUNT} over ${Math.round(RUNG_PROMOTION_MIN_WINDOW_MS / 60000)}min)`);
363
+ seat.promotion.delete(evidence.rung);
364
+ return;
365
+ }
366
+ }
367
+ else {
368
+ entry.agreements = 0; // agreement must be consecutive within the measured window
369
+ entry.firstAgreementAtMs = null;
370
+ }
371
+ seat.promotion.set(evidence.rung, entry);
372
+ }
373
+ /** The raw ladder decision for working/idle: highest authoritative rung with usable,
374
+ * in-window evidence. Hook evidence is TIME-BOUNDED (the one rung that does not
375
+ * self-date its lifecycle) — expired hook evidence falls through, never errors. */
376
+ rawCandidate(seat, opts = {}) {
377
+ const nowMs = this.now().getTime();
378
+ for (const rung of EVIDENCE_RUNG_RANK) {
379
+ if (rung === opts.excludeRung)
380
+ continue;
381
+ if (this.rungTrust(seat, rung) !== "authoritative")
382
+ continue;
383
+ const evd = this.latestByRung(seat, rung, "activity");
384
+ if (!evd || evd.activity === undefined)
385
+ continue;
386
+ if (rung === "lifecycle-hooks" && nowMs - Date.parse(evd.observedAt) > HOOK_AUTHORITY_WINDOW_MS)
387
+ continue;
388
+ return evd;
389
+ }
390
+ return null;
391
+ }
392
+ emitRungHealth(seat, rung, sourceId, from, to, reason) {
393
+ const event = {
394
+ seatNodeId: seat.arbitrated.seatNodeId,
395
+ rung,
396
+ sourceId,
397
+ from,
398
+ to,
399
+ reason,
400
+ at: this.now().toISOString(),
401
+ };
402
+ for (const listener of this.healthListeners)
403
+ listener(event);
404
+ this.eventBus?.emit({ type: "seat.rung_health", ...event });
405
+ }
406
+ /** AM-1: persistent cross-rung contradiction (hook claims working while a lower
407
+ * authoritative rung sees idle-at-prompt beyond the stated window) degrades the hook
408
+ * rung to identity-only, VISIBLY — arbitration can never make a silently-dead source
409
+ * authoritative. */
410
+ checkContradiction(seat) {
411
+ if (this.rungTrust(seat, "lifecycle-hooks") !== "authoritative")
412
+ return;
413
+ const hook = this.latestByRung(seat, "lifecycle-hooks", "activity");
414
+ const sampler = this.latestByRung(seat, "window-sampling", "activity");
415
+ const nowMs = this.now().getTime();
416
+ const hookFresh = hook && hook.activity !== undefined
417
+ && nowMs - Date.parse(hook.observedAt) <= HOOK_AUTHORITY_WINDOW_MS;
418
+ const contradicts = hookFresh && hook.activity === "working"
419
+ && sampler?.activity === "idle-at-prompt"
420
+ && this.rungTrust(seat, "window-sampling") === "authoritative";
421
+ if (!contradicts) {
422
+ seat.contradictionSinceMs = null;
423
+ return;
424
+ }
425
+ if (seat.contradictionSinceMs === null) {
426
+ seat.contradictionSinceMs = nowMs;
427
+ return;
428
+ }
429
+ if (nowMs - seat.contradictionSinceMs > CROSS_RUNG_CONTRADICTION_WINDOW_MS) {
430
+ seat.trust.set("lifecycle-hooks", "identity-only");
431
+ seat.contradictionSinceMs = null;
432
+ this.emitRungHealth(seat, "lifecycle-hooks", hook.sourceId, "authoritative", "identity-only", `cross-rung contradiction: hook claims working while window-sampling sees idle-at-prompt beyond ${CROSS_RUNG_CONTRADICTION_WINDOW_MS / 1000}s — degraded to identity-only (a silently-dropping source can never stay authoritative)`);
433
+ }
434
+ }
435
+ rungsView(seat) {
436
+ const rungIds = new Set();
437
+ if (seat.inventory)
438
+ for (const d of seat.inventory.rungs)
439
+ rungIds.add(d.rung);
440
+ for (const r of seat.trust.keys())
441
+ rungIds.add(r);
442
+ return [...rungIds].map((rung) => {
443
+ const evd = this.latestByRung(seat, rung);
444
+ return {
445
+ rung,
446
+ sourceId: evd?.sourceId ?? `${seat.inventory?.adapterId ?? "undeclared"}:${rung}`,
447
+ trust: this.rungTrust(seat, rung),
448
+ lastEvidenceAt: evd?.observedAt ?? null,
449
+ };
450
+ });
451
+ }
452
+ /** Recompute the arbitrated state. Debounce: a sampling-decided working→idle
453
+ * transition holds until the stated consecutive idle observations or the hard cap;
454
+ * an authoritative turn boundary (hooks/self-report idle) or idle chrome publishes
455
+ * instantly. Chosen against our 1Hz/3s cadence: the 3s silence window already
456
+ * absorbs sub-3s lulls; the 2-tick arbitration debounce absorbs the
457
+ * window-boundary flap. */
458
+ arbitrate(seat) {
459
+ this.checkContradiction(seat);
460
+ const candidate = this.rawCandidate(seat);
461
+ let nextActivity = candidate?.activity ?? "unknown";
462
+ let decidedBy = candidate?.rung ?? null;
463
+ // Debounce bookkeeping runs on the SAMPLING OBSERVATIONS themselves (regardless of
464
+ // which rung currently decides): consecutive idle observations while the arbitrated
465
+ // state is working accumulate; any sampling `working` resets. The hold applies only
466
+ // when sampling would DECIDE the flip — an authoritative turn boundary (hooks or
467
+ // self-report idle) or idle chrome bypasses instantly.
468
+ const nowMs = this.now().getTime();
469
+ const sampling = this.latestByRung(seat, "window-sampling");
470
+ if (seat.arbitrated.activity === "working" && sampling?.activity === "idle-at-prompt") {
471
+ if (!seat.pendingIdle) {
472
+ seat.pendingIdle = { sinceMs: nowMs, ticks: 1, lastSeq: sampling.seq };
473
+ }
474
+ else if (sampling.seq > seat.pendingIdle.lastSeq) {
475
+ seat.pendingIdle.ticks += 1;
476
+ seat.pendingIdle.lastSeq = sampling.seq;
477
+ }
478
+ }
479
+ else if (sampling?.activity === "working" || seat.arbitrated.activity !== "working") {
480
+ seat.pendingIdle = null;
481
+ }
482
+ if (candidate?.rung === "window-sampling" && candidate.activity === "idle-at-prompt"
483
+ && seat.arbitrated.activity === "working" && seat.pendingIdle) {
484
+ const capped = nowMs - seat.pendingIdle.sinceMs >= SAMPLING_IDLE_DEBOUNCE_CAP_MS;
485
+ if (seat.pendingIdle.ticks < SAMPLING_IDLE_DEBOUNCE_TICKS && !capped) {
486
+ nextActivity = "working"; // held — the mid-turn lull must not flip the state
487
+ decidedBy = seat.arbitrated.decidedBy;
488
+ }
489
+ else {
490
+ seat.pendingIdle = null;
491
+ }
492
+ }
493
+ // needs-input: visible chrome outranks hook-carried evidence; hooks carry it when a
494
+ // PermissionRequest-class event fired and the next turn boundary clears it. NOT
495
+ // time-bounded like working/idle hook authority — an unanswered block persisting is
496
+ // exactly the founder-observed park cause and must stay visible.
497
+ const chrome = this.latestByRung(seat, "needs-input-chrome");
498
+ const hooksEv = this.latestByRung(seat, "lifecycle-hooks");
499
+ const selfEv = this.latestByRung(seat, "self-report");
500
+ const needsInput = chrome?.needsInput && this.rungTrust(seat, "needs-input-chrome") === "authoritative"
501
+ ? chrome.needsInput
502
+ : hooksEv?.needsInput && this.rungTrust(seat, "lifecycle-hooks") === "authoritative"
503
+ ? hooksEv.needsInput
504
+ : selfEv?.needsInput && this.rungTrust(seat, "self-report") === "authoritative"
505
+ ? selfEv.needsInput
506
+ : { count: 0, reason: null };
507
+ const changed = nextActivity !== seat.arbitrated.activity
508
+ || needsInput.count !== seat.arbitrated.needsInput.count
509
+ || needsInput.reason !== seat.arbitrated.needsInput.reason;
510
+ seat.arbitrated = {
511
+ ...seat.arbitrated,
512
+ activity: nextActivity,
513
+ needsInput,
514
+ decidedBy,
515
+ seq: changed ? seat.arbitrated.seq + 1 : seat.arbitrated.seq,
516
+ changedAt: changed ? this.now().toISOString() : seat.arbitrated.changedAt,
517
+ rungs: this.rungsView(seat),
518
+ };
519
+ if (changed) {
520
+ this.resolveWaiters(seat);
521
+ this.emitActivityChanged(seat);
522
+ }
523
+ }
524
+ /** AM-R18 push substrate: a change notification (identity + seq) onto the bus — the
525
+ * SSE stream relays it; consumers REHYDRATE from the projection, so the push itself
526
+ * never carries derived vocabulary (no second activity mechanism by construction). */
527
+ emitActivityChanged(seat) {
528
+ this.eventBus?.emit({
529
+ type: "seat.activity_changed",
530
+ seatNodeId: seat.arbitrated.seatNodeId,
531
+ sessionName: seat.sessionName,
532
+ seq: seat.arbitrated.seq,
533
+ at: seat.arbitrated.changedAt,
534
+ });
535
+ }
536
+ resolveWaiters(seat) {
537
+ const ready = seat.waiters.filter((w) => seat.arbitrated.seq > w.afterSeq);
538
+ seat.waiters = seat.waiters.filter((w) => seat.arbitrated.seq <= w.afterSeq);
539
+ for (const w of ready) {
540
+ clearTimeout(w.timer);
541
+ w.resolve(seat.arbitrated);
542
+ }
543
+ }
143
544
  }
545
+ // S19 arbitration constants — chosen against OUR 1Hz poll / 3s silence window (the SPEC
546
+ // requires the numbers recorded; rationale in the GREEN commit + reference doc):
547
+ /** Hook evidence older than this no longer decides working/idle (time-bounded authority). */
548
+ export const HOOK_AUTHORITY_WINDOW_MS = 15_000;
549
+ /** Persistent hook-vs-sampler contradiction beyond this window degrades the hook rung. */
550
+ export const CROSS_RUNG_CONTRADICTION_WINDOW_MS = 10_000;
551
+ /** Sampling-decided working→idle needs this many consecutive idle evaluations… */
552
+ export const SAMPLING_IDLE_DEBOUNCE_TICKS = 2;
553
+ /** …bounded by this hard cap; authoritative turn boundaries and idle chrome bypass instantly. */
554
+ export const SAMPLING_IDLE_DEBOUNCE_CAP_MS = 2_500;
555
+ /** AM-2 promotion: a trial rung earns authority after this many agreeing observations… */
556
+ export const RUNG_PROMOTION_AGREEMENT_COUNT = 50;
557
+ /** …spread over at least this window of production time. */
558
+ export const RUNG_PROMOTION_MIN_WINDOW_MS = 60 * 60 * 1000;
144
559
  //# sourceMappingURL=seat-activity-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"seat-activity-service.js","sourceRoot":"","sources":["../../src/domain/seat-activity-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seat-activity-service.js","sourceRoot":"","sources":["../../src/domain/seat-activity-service.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,20 @@ export declare class SeatHandoverPlanner {
72
72
  dryRun?: boolean;
73
73
  }): SeatHandoverPlanResult;
74
74
  }
75
+ /**
76
+ * OPR.0.5.5.5 — the ONE source-capability table shared by the dry-run plan and
77
+ * the mutation executor. The plan renders what a source DOES from this table
78
+ * and the executor dispatches on the same rows, so the plan can never promise
79
+ * a source the executor refuses (and vice versa). Adding a mode to
80
+ * `SeatHandoverSourceMode` forces a row here (exhaustive Record).
81
+ */
82
+ export declare const SEAT_HANDOVER_SOURCE_CAPABILITIES: Record<SeatHandoverSourceMode, {
83
+ /** True when the mutation path executes this source end-to-end. A false row
84
+ * is the ONLY thing that may produce `source_not_supported`. */
85
+ executes: boolean;
86
+ /** How the successor receives its context under this source. */
87
+ contextCarrier: string;
88
+ }>;
75
89
  export declare function parseHandoverSource(source?: string | null): {
76
90
  ok: true;
77
91
  source: SeatHandoverSource;