@openrig/cli 0.6.12 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/README.md +19 -12
  2. package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
  3. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
  4. package/daemon/assets/plugins/openrig-core/README.md +9 -2
  5. package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +25 -9
  6. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +7 -4
  7. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +5 -0
  8. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +61 -16
  9. package/daemon/assets/skills/rigs/SKILL.md +8 -4
  10. package/daemon/context-packs/help/manifest.yaml +1 -1
  11. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  12. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +60 -12
  13. package/daemon/context-packs/reference/getting-started.md +44 -14
  14. package/daemon/context-packs/reference/manifest.yaml +1 -1
  15. package/daemon/context-packs/reference/rig-spec.md +5 -5
  16. package/daemon/context-packs/reference/whats-new.md +90 -163
  17. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +5 -0
  42. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +61 -16
  67. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  71. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  72. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  73. package/daemon/dist/adapters/claude-code-adapter.d.ts +9 -1
  74. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  75. package/daemon/dist/adapters/claude-code-adapter.js +110 -52
  76. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  77. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  78. package/daemon/dist/adapters/codex-runtime-adapter.js +47 -6
  79. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  80. package/daemon/dist/adapters/pi-resume.d.ts +1 -1
  81. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
  82. package/daemon/dist/adapters/pi-resume.js +4 -1
  83. package/daemon/dist/adapters/pi-resume.js.map +1 -1
  84. package/daemon/dist/adapters/pi-runner-protocol.d.ts +9 -0
  85. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  86. package/daemon/dist/adapters/pi-runner-protocol.js +16 -0
  87. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  88. package/daemon/dist/adapters/pi-runner.d.ts +5 -2
  89. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  90. package/daemon/dist/adapters/pi-runner.js +72 -15
  91. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  92. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
  93. package/daemon/dist/adapters/pi-runtime-adapter.js +2 -0
  94. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  95. package/daemon/dist/adapters/stub-compaction.d.ts +1 -0
  96. package/daemon/dist/adapters/stub-compaction.d.ts.map +1 -1
  97. package/daemon/dist/adapters/stub-compaction.js +2 -0
  98. package/daemon/dist/adapters/stub-compaction.js.map +1 -1
  99. package/daemon/dist/adapters/stub-refocus.d.ts +6 -0
  100. package/daemon/dist/adapters/stub-refocus.d.ts.map +1 -0
  101. package/daemon/dist/adapters/stub-refocus.js +22 -0
  102. package/daemon/dist/adapters/stub-refocus.js.map +1 -0
  103. package/daemon/dist/adapters/stub-runner.d.ts +6 -0
  104. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  105. package/daemon/dist/adapters/stub-runner.js +18 -1
  106. package/daemon/dist/adapters/stub-runner.js.map +1 -1
  107. package/daemon/dist/adapters/stub-script.d.ts +2 -2
  108. package/daemon/dist/adapters/stub-script.d.ts.map +1 -1
  109. package/daemon/dist/adapters/stub-script.js +2 -2
  110. package/daemon/dist/adapters/stub-script.js.map +1 -1
  111. package/daemon/dist/build-info.js +3 -3
  112. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  113. package/daemon/dist/db/all-migrations.js +2 -0
  114. package/daemon/dist/db/all-migrations.js.map +1 -1
  115. package/daemon/dist/db/migrations/117_provider_account_readings.d.ts +3 -0
  116. package/daemon/dist/db/migrations/117_provider_account_readings.d.ts.map +1 -0
  117. package/daemon/dist/db/migrations/117_provider_account_readings.js +32 -0
  118. package/daemon/dist/db/migrations/117_provider_account_readings.js.map +1 -0
  119. package/daemon/dist/domain/claude-activity-hooks.d.ts +6 -0
  120. package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
  121. package/daemon/dist/domain/claude-activity-hooks.js +19 -1
  122. package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
  123. package/daemon/dist/domain/claude-core-plugin-env.d.ts +2 -0
  124. package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
  125. package/daemon/dist/domain/claude-core-plugin-env.js +6 -2
  126. package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
  127. package/daemon/dist/domain/claude-managed-launch.d.ts +5 -0
  128. package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
  129. package/daemon/dist/domain/claude-managed-launch.js +48 -7
  130. package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
  131. package/daemon/dist/domain/claude-mcp-menu.d.ts +5 -0
  132. package/daemon/dist/domain/claude-mcp-menu.d.ts.map +1 -0
  133. package/daemon/dist/domain/claude-mcp-menu.js +25 -0
  134. package/daemon/dist/domain/claude-mcp-menu.js.map +1 -0
  135. package/daemon/dist/domain/fresh-occupant-relation.d.ts +7 -0
  136. package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -1
  137. package/daemon/dist/domain/fresh-occupant-relation.js +44 -0
  138. package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -1
  139. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +14 -2
  140. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -1
  141. package/daemon/dist/domain/gateway/slack/channel-recovery.js +128 -89
  142. package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -1
  143. package/daemon/dist/domain/gateway/slack/inbound.d.ts +4 -0
  144. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  145. package/daemon/dist/domain/gateway/slack/inbound.js +5 -3
  146. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  147. package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts +24 -0
  148. package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts.map +1 -0
  149. package/daemon/dist/domain/gateway/slack/recovery-budget.js +18 -0
  150. package/daemon/dist/domain/gateway/slack/recovery-budget.js.map +1 -0
  151. package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts +104 -0
  152. package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts.map +1 -0
  153. package/daemon/dist/domain/gateway/slack/slack-recovery.js +236 -0
  154. package/daemon/dist/domain/gateway/slack/slack-recovery.js.map +1 -0
  155. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  156. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +29 -6
  157. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  158. package/daemon/dist/domain/gateway/slack/state-store.d.ts +34 -0
  159. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  160. package/daemon/dist/domain/gateway/slack/state-store.js +67 -0
  161. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  162. package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts +37 -0
  163. package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts.map +1 -0
  164. package/daemon/dist/domain/gateway/slack/thread-recovery.js +173 -0
  165. package/daemon/dist/domain/gateway/slack/thread-recovery.js.map +1 -0
  166. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +8 -0
  167. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  168. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  169. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  170. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +6 -1
  171. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  172. package/daemon/dist/domain/model-divergence/current-generation-record.js +4 -1
  173. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  174. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts +74 -0
  175. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts.map +1 -0
  176. package/daemon/dist/domain/model-divergence/current-model-reader.js +246 -0
  177. package/daemon/dist/domain/model-divergence/current-model-reader.js.map +1 -0
  178. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +18 -0
  179. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -1
  180. package/daemon/dist/domain/model-divergence/effective-model-readers.js +24 -8
  181. package/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -1
  182. package/daemon/dist/domain/native-process-lineage.d.ts +8 -1
  183. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  184. package/daemon/dist/domain/native-process-lineage.js +40 -26
  185. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  186. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  187. package/daemon/dist/domain/native-resume-probe.js +34 -8
  188. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  189. package/daemon/dist/domain/node-inventory.d.ts +1 -1
  190. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  191. package/daemon/dist/domain/node-inventory.js +84 -18
  192. package/daemon/dist/domain/node-inventory.js.map +1 -1
  193. package/daemon/dist/domain/process-census.d.ts +1 -1
  194. package/daemon/dist/domain/process-census.d.ts.map +1 -1
  195. package/daemon/dist/domain/process-table.d.ts +26 -0
  196. package/daemon/dist/domain/process-table.d.ts.map +1 -0
  197. package/daemon/dist/domain/process-table.js +185 -0
  198. package/daemon/dist/domain/process-table.js.map +1 -0
  199. package/daemon/dist/domain/profile-resolver.d.ts +8 -0
  200. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  201. package/daemon/dist/domain/profile-resolver.js +11 -0
  202. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  203. package/daemon/dist/domain/projection-planner.js +1 -1
  204. package/daemon/dist/domain/projection-planner.js.map +1 -1
  205. package/daemon/dist/domain/provider/claude-usage-windows.d.ts +3 -1
  206. package/daemon/dist/domain/provider/claude-usage-windows.d.ts.map +1 -1
  207. package/daemon/dist/domain/provider/claude-usage-windows.js +48 -3
  208. package/daemon/dist/domain/provider/claude-usage-windows.js.map +1 -1
  209. package/daemon/dist/domain/provider/codex-usage-reader.d.ts +4 -1
  210. package/daemon/dist/domain/provider/codex-usage-reader.d.ts.map +1 -1
  211. package/daemon/dist/domain/provider/codex-usage-reader.js +3 -0
  212. package/daemon/dist/domain/provider/codex-usage-reader.js.map +1 -1
  213. package/daemon/dist/domain/provider/codex-usage-windows.d.ts +3 -1
  214. package/daemon/dist/domain/provider/codex-usage-windows.d.ts.map +1 -1
  215. package/daemon/dist/domain/provider/codex-usage-windows.js +1 -0
  216. package/daemon/dist/domain/provider/codex-usage-windows.js.map +1 -1
  217. package/daemon/dist/domain/provider/provider-account-readings.d.ts +42 -0
  218. package/daemon/dist/domain/provider/provider-account-readings.d.ts.map +1 -0
  219. package/daemon/dist/domain/provider/provider-account-readings.js +132 -0
  220. package/daemon/dist/domain/provider/provider-account-readings.js.map +1 -0
  221. package/daemon/dist/domain/provider/provider-types.d.ts +29 -0
  222. package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -1
  223. package/daemon/dist/domain/provider/usage-across-hosts.d.ts.map +1 -1
  224. package/daemon/dist/domain/provider/usage-across-hosts.js +6 -0
  225. package/daemon/dist/domain/provider/usage-across-hosts.js.map +1 -1
  226. package/daemon/dist/domain/provider/usage-windows.d.ts +25 -0
  227. package/daemon/dist/domain/provider/usage-windows.d.ts.map +1 -1
  228. package/daemon/dist/domain/provider/usage-windows.js +100 -4
  229. package/daemon/dist/domain/provider/usage-windows.js.map +1 -1
  230. package/daemon/dist/domain/queue-repository.d.ts +23 -0
  231. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  232. package/daemon/dist/domain/queue-repository.js +59 -1
  233. package/daemon/dist/domain/queue-repository.js.map +1 -1
  234. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  235. package/daemon/dist/domain/queue-stuck-sweep.js +47 -4
  236. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  237. package/daemon/dist/domain/restore-check-service.d.ts +10 -0
  238. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  239. package/daemon/dist/domain/restore-check-service.js +73 -10
  240. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  241. package/daemon/dist/domain/restore-guidance.d.ts +6 -0
  242. package/daemon/dist/domain/restore-guidance.d.ts.map +1 -1
  243. package/daemon/dist/domain/restore-guidance.js +21 -5
  244. package/daemon/dist/domain/restore-guidance.js.map +1 -1
  245. package/daemon/dist/domain/restore-orchestrator.js +1 -1
  246. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  247. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  248. package/daemon/dist/domain/resume-metadata-refresher.js +6 -29
  249. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  250. package/daemon/dist/domain/rig-repository.d.ts +3 -0
  251. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  252. package/daemon/dist/domain/rig-repository.js +6 -0
  253. package/daemon/dist/domain/rig-repository.js.map +1 -1
  254. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  255. package/daemon/dist/domain/rigspec-instantiator.js +4 -2
  256. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  257. package/daemon/dist/domain/rigspec-preflight.d.ts +4 -0
  258. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  259. package/daemon/dist/domain/rigspec-preflight.js +12 -2
  260. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  261. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  262. package/daemon/dist/domain/rigspec-schema.js +11 -0
  263. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  264. package/daemon/dist/domain/runtime-adapter.d.ts +13 -0
  265. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  266. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  267. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  268. package/daemon/dist/domain/seat-attention-reconciler.js +15 -1
  269. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  270. package/daemon/dist/domain/seat-cwd-preparation.d.ts +22 -0
  271. package/daemon/dist/domain/seat-cwd-preparation.d.ts.map +1 -0
  272. package/daemon/dist/domain/seat-cwd-preparation.js +107 -0
  273. package/daemon/dist/domain/seat-cwd-preparation.js.map +1 -0
  274. package/daemon/dist/domain/seat-effort.d.ts +4 -3
  275. package/daemon/dist/domain/seat-effort.d.ts.map +1 -1
  276. package/daemon/dist/domain/seat-effort.js +21 -3
  277. package/daemon/dist/domain/seat-effort.js.map +1 -1
  278. package/daemon/dist/domain/seat-lifecycle-service.d.ts +36 -2
  279. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  280. package/daemon/dist/domain/seat-lifecycle-service.js +206 -15
  281. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  282. package/daemon/dist/domain/seat-restart-in-place.d.ts +14 -0
  283. package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -1
  284. package/daemon/dist/domain/seat-restart-in-place.js +59 -3
  285. package/daemon/dist/domain/seat-restart-in-place.js.map +1 -1
  286. package/daemon/dist/domain/seat-status-service.d.ts +2 -0
  287. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  288. package/daemon/dist/domain/seat-status-service.js +1 -0
  289. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  290. package/daemon/dist/domain/seat-structural-activity-service.d.ts +7 -1
  291. package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
  292. package/daemon/dist/domain/seat-structural-activity-service.js +9 -3
  293. package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
  294. package/daemon/dist/domain/session-name.d.ts +8 -0
  295. package/daemon/dist/domain/session-name.d.ts.map +1 -1
  296. package/daemon/dist/domain/session-name.js +12 -0
  297. package/daemon/dist/domain/session-name.js.map +1 -1
  298. package/daemon/dist/domain/session-transport.d.ts +78 -3
  299. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  300. package/daemon/dist/domain/session-transport.js +306 -15
  301. package/daemon/dist/domain/session-transport.js.map +1 -1
  302. package/daemon/dist/domain/successor-session-launcher.js +1 -1
  303. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  304. package/daemon/dist/domain/types.d.ts +14 -0
  305. package/daemon/dist/domain/types.d.ts.map +1 -1
  306. package/daemon/dist/domain/types.js.map +1 -1
  307. package/daemon/dist/domain/watchdog-delivery.d.ts +29 -0
  308. package/daemon/dist/domain/watchdog-delivery.d.ts.map +1 -0
  309. package/daemon/dist/domain/watchdog-delivery.js +113 -0
  310. package/daemon/dist/domain/watchdog-delivery.js.map +1 -0
  311. package/daemon/dist/domain/watchdog-policy-engine.d.ts +60 -1
  312. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  313. package/daemon/dist/domain/watchdog-policy-engine.js +154 -28
  314. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  315. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  316. package/daemon/dist/domain/watchdog-scheduler.js +6 -1
  317. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  318. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  319. package/daemon/dist/domain/workflow-instance-store.js +6 -2
  320. package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  321. package/daemon/dist/routes/attention.d.ts.map +1 -1
  322. package/daemon/dist/routes/attention.js +41 -1
  323. package/daemon/dist/routes/attention.js.map +1 -1
  324. package/daemon/dist/routes/compaction.js +1 -1
  325. package/daemon/dist/routes/compaction.js.map +1 -1
  326. package/daemon/dist/routes/queue.d.ts.map +1 -1
  327. package/daemon/dist/routes/queue.js +3 -1
  328. package/daemon/dist/routes/queue.js.map +1 -1
  329. package/daemon/dist/routes/restore-check.d.ts.map +1 -1
  330. package/daemon/dist/routes/restore-check.js +19 -1
  331. package/daemon/dist/routes/restore-check.js.map +1 -1
  332. package/daemon/dist/routes/seat.d.ts.map +1 -1
  333. package/daemon/dist/routes/seat.js +15 -2
  334. package/daemon/dist/routes/seat.js.map +1 -1
  335. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  336. package/daemon/dist/routes/sessions.js +7 -1
  337. package/daemon/dist/routes/sessions.js.map +1 -1
  338. package/daemon/dist/routes/transport.d.ts.map +1 -1
  339. package/daemon/dist/routes/transport.js +13 -2
  340. package/daemon/dist/routes/transport.js.map +1 -1
  341. package/daemon/dist/server.d.ts +1 -0
  342. package/daemon/dist/server.d.ts.map +1 -1
  343. package/daemon/dist/server.js +1 -0
  344. package/daemon/dist/server.js.map +1 -1
  345. package/daemon/dist/startup.d.ts.map +1 -1
  346. package/daemon/dist/startup.js +39 -113
  347. package/daemon/dist/startup.js.map +1 -1
  348. package/daemon/docs/reference/agent-spec.md +1 -1
  349. package/daemon/docs/reference/agent-startup-guide.md +84 -0
  350. package/daemon/docs/reference/getting-started.md +44 -14
  351. package/daemon/docs/reference/publishing-a-rig-bundle.md +5 -2
  352. package/daemon/docs/reference/refocus-channel.md +11 -1
  353. package/daemon/docs/reference/rig-spec.md +5 -5
  354. package/daemon/docs/reference/rosters.md +29 -2
  355. package/daemon/docs/reference/slack-app-setup.md +47 -17
  356. package/daemon/docs/reference/whats-new.md +90 -163
  357. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -0
  358. package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -0
  359. package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -0
  360. package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -0
  361. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -0
  362. package/daemon/specs/agents/design/product-designer/agent.yaml +1 -0
  363. package/daemon/specs/agents/development/implementer/agent.yaml +1 -0
  364. package/daemon/specs/agents/development/qa/agent.yaml +1 -0
  365. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -0
  366. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -0
  367. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -0
  368. package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
  369. package/daemon/specs/agents/research/analyst/agent.yaml +1 -0
  370. package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -0
  371. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -0
  372. package/dist/build-info.js +3 -3
  373. package/dist/commands/capture.d.ts.map +1 -1
  374. package/dist/commands/capture.js +14 -0
  375. package/dist/commands/capture.js.map +1 -1
  376. package/dist/commands/config.d.ts.map +1 -1
  377. package/dist/commands/config.js +3 -2
  378. package/dist/commands/config.js.map +1 -1
  379. package/dist/commands/doctor.d.ts.map +1 -1
  380. package/dist/commands/doctor.js +8 -7
  381. package/dist/commands/doctor.js.map +1 -1
  382. package/dist/commands/grow.d.ts.map +1 -1
  383. package/dist/commands/grow.js +24 -7
  384. package/dist/commands/grow.js.map +1 -1
  385. package/dist/commands/provider.d.ts.map +1 -1
  386. package/dist/commands/provider.js +43 -7
  387. package/dist/commands/provider.js.map +1 -1
  388. package/dist/commands/ps.d.ts +2 -0
  389. package/dist/commands/ps.d.ts.map +1 -1
  390. package/dist/commands/ps.js +12 -1
  391. package/dist/commands/ps.js.map +1 -1
  392. package/dist/commands/remove.d.ts.map +1 -1
  393. package/dist/commands/remove.js +20 -1
  394. package/dist/commands/remove.js.map +1 -1
  395. package/dist/commands/roster.d.ts +2 -1
  396. package/dist/commands/roster.d.ts.map +1 -1
  397. package/dist/commands/roster.js +10 -5
  398. package/dist/commands/roster.js.map +1 -1
  399. package/dist/commands/scope.js +1 -1
  400. package/dist/commands/scope.js.map +1 -1
  401. package/dist/commands/seat.d.ts.map +1 -1
  402. package/dist/commands/seat.js +75 -8
  403. package/dist/commands/seat.js.map +1 -1
  404. package/dist/commands/slack.d.ts.map +1 -1
  405. package/dist/commands/slack.js +14 -1
  406. package/dist/commands/slack.js.map +1 -1
  407. package/dist/commands/usage.d.ts.map +1 -1
  408. package/dist/commands/usage.js +4 -3
  409. package/dist/commands/usage.js.map +1 -1
  410. package/dist/lib/model-observation.d.ts +13 -0
  411. package/dist/lib/model-observation.d.ts.map +1 -0
  412. package/dist/lib/model-observation.js +25 -0
  413. package/dist/lib/model-observation.js.map +1 -0
  414. package/dist/mcp-server.d.ts.map +1 -1
  415. package/dist/mcp-server.js +1 -0
  416. package/dist/mcp-server.js.map +1 -1
  417. package/package.json +1 -1
  418. package/tui/dist/attention/attention-model.js +6 -5
  419. package/tui/dist/attention/attention-model.js.map +1 -1
  420. package/tui/dist/attention/source-continuity.d.ts.map +1 -1
  421. package/tui/dist/attention/source-continuity.js +2 -0
  422. package/tui/dist/attention/source-continuity.js.map +1 -1
  423. package/tui/dist/terminals/open-window.d.ts +11 -1
  424. package/tui/dist/terminals/open-window.d.ts.map +1 -1
  425. package/tui/dist/terminals/open-window.js +47 -2
  426. package/tui/dist/terminals/open-window.js.map +1 -1
  427. package/tui/dist/usage/usage-model.d.ts +2 -0
  428. package/tui/dist/usage/usage-model.d.ts.map +1 -1
  429. package/tui/dist/usage/usage-model.js +38 -3
  430. package/tui/dist/usage/usage-model.js.map +1 -1
  431. package/ui/dist/assets/{index-Cfbtfd9G.js → index-CVgod3Pm.js} +1 -1
  432. package/ui/dist/index.html +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"startup.d.ts","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AA4F/D,OAAO,EAAkB,KAAK,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AA8CjG,OAAO,EAA0B,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAoCnE,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;yFAEqF;IACrF,QAAQ,CAAC,EAAE,OAAO,uBAAuB,EAAE,QAAQ,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACrC,cAAc,CAAC,EAAE,4BAA4B,CAAC;IAC9C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,IAAI,CAAC;IACV,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IAErE,gBAAgB,EAAE,OAAO,gCAAgC,EAAE,gBAAgB,CAAC;IAE5E,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CACxC;AA+CD,oFAAoF;AACpF,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,OAAO,CAAC,EAAE,KAAK,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcxB;AAED,gGAAgG;AAChG,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAsvE9E"}
1
+ {"version":3,"file":"startup.d.ts","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AA6F/D,OAAO,EAAkB,KAAK,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AA8CjG,OAAO,EAA0B,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAoCnE,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;yFAEqF;IACrF,QAAQ,CAAC,EAAE,OAAO,uBAAuB,EAAE,QAAQ,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACrC,cAAc,CAAC,EAAE,4BAA4B,CAAC;IAC9C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,IAAI,CAAC;IACV,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IAErE,gBAAgB,EAAE,OAAO,gCAAgC,EAAE,gBAAgB,CAAC;IAE5E,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CACxC;AA+CD,oFAAoF;AACpF,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,OAAO,CAAC,EAAE,KAAK,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcxB;AAED,gGAAgG;AAChG,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAurE9E"}
@@ -1,3 +1,4 @@
1
+ import { makeWatchdogDeliver, occurrenceAttempted, priorDigestAttempt } from "./domain/watchdog-delivery.js";
1
2
  import { fileURLToPath } from "node:url";
2
3
  import { discoverTailscaleSelfNames } from "./middleware/browser-boundary.js";
3
4
  import { configureShadowCapture } from "./domain/shadow-capture.js";
@@ -40,6 +41,7 @@ import { codexDaemonSupportProbe } from "./domain/codex-daemon-support.js";
40
41
  import { codexNetworkDefaultReader } from "./domain/codex-network-default.js";
41
42
  import { codexUsageReader } from "./domain/provider/codex-usage-reader.js";
42
43
  import { CodexUsageWindows } from "./domain/provider/codex-usage-windows.js";
44
+ import { ProviderAccountReadingsStore } from "./domain/provider/provider-account-readings.js";
43
45
  import { claudeAuthStatusReader } from "./domain/provider/claude-auth-status-reader.js";
44
46
  import { ClaudeUsageWindows, latestClaudeWindowSamples } from "./domain/provider/claude-usage-windows.js";
45
47
  import { prepareCodexTeamWorkspace } from "./domain/codex-team-workspace.js";
@@ -113,7 +115,7 @@ import { wireViewEventBridge } from "./domain/view-event-bridge.js";
113
115
  import { WatchdogJobsRepository } from "./domain/watchdog-jobs-repository.js";
114
116
  import { WatchdogAutoRegistration } from "./domain/watchdog-auto-registration.js";
115
117
  import { WatchdogHistoryLog } from "./domain/watchdog-history-log.js";
116
- import { formatWatchdogDeliveryMessage, WatchdogPolicyEngine, } from "./domain/watchdog-policy-engine.js";
118
+ import { WatchdogPolicyEngine, } from "./domain/watchdog-policy-engine.js";
117
119
  import { WatchdogScheduler } from "./domain/watchdog-scheduler.js";
118
120
  import { ContinuityPolicyMaterializer, createContinuityCutoverBaton, findClaudeTranscriptByToken, recordManagedWidthReceipt, } from "./domain/continuity-policy-materializer.js";
119
121
  import { WorkflowRuntime } from "./domain/workflow-runtime.js";
@@ -1088,6 +1090,27 @@ export async function createDaemon(opts) {
1088
1090
  // generation) so a frozen pre-handover sample can't drive the threshold. null = UNKNOWN (inert).
1089
1091
  resolveOccupantBootAt: (nodeId) => sessionRegistry.currentOccupantTenure(nodeId)?.bootAt ?? null,
1090
1092
  });
1093
+ // Shared, read-only current-occupant record path: reporting does not depend on a pin or transport.
1094
+ const { CurrentModelReader } = await import("./domain/model-divergence/current-model-reader.js");
1095
+ const { ProcessCensus: ModelProcessCensus } = await import("./domain/process-census.js");
1096
+ const { CodexThreadIdResolver: ModelThreadResolver } = await import("./domain/codex-thread-id.js");
1097
+ const modelCensus = new ModelProcessCensus();
1098
+ const modelThreads = new ModelThreadResolver({ defaultHome: daemonHome, codexHome: configuredCodexHome });
1099
+ const currentModelReader = new CurrentModelReader({
1100
+ sessions: sessionRegistry, identities: new SeatIdentityStore(db), context: contextUsageStore,
1101
+ census: modelCensus,
1102
+ readAllPaneProcesses: () => tmuxAdapter.readAllPaneProcesses(),
1103
+ native: {
1104
+ getPanePid: async (target) => tmuxAdapter.getPanePid ? tmuxAdapter.getPanePid(target) : null,
1105
+ listProcesses: () => modelCensus.list(),
1106
+ readThreadIdByPid: (pid, identity) => identity === undefined
1107
+ ? modelThreads.resolveUngatedLegacy(pid) : modelThreads.resolve(pid, identity),
1108
+ },
1109
+ codexRollout: (threadId, sessionName, reporting) => reporting
1110
+ ? contextUsageStore.readCodexTranscriptPath(threadId)
1111
+ : contextUsageStore.readCodexAndNormalize({ threadId, sessionName }).transcriptPath,
1112
+ piRunner: (sessionName) => piAdapter.readRunnerSidecar(sessionName),
1113
+ });
1091
1114
  const { HealthProjectionService, LiveContextHealthSource } = await import("./domain/health-detectors.js");
1092
1115
  const healthSettingsStore = new ContextPackSettingsStore();
1093
1116
  const contextHealthSource = new LiveContextHealthSource({
@@ -1225,7 +1248,8 @@ export async function createDaemon(opts) {
1225
1248
  // samples (usage_samples), read on every view.
1226
1249
  usageWindows: {
1227
1250
  enabled: () => new ContextPackSettingsStore().resolveOne("provider.usage_windows").value === true,
1228
- windows: new CodexUsageWindows({ read: codexUsageReader({ launchPath: process.env.PATH, home: daemonHome, codexHome }) }),
1251
+ windows: new CodexUsageWindows({ read: codexUsageReader({ launchPath: process.env.PATH, home: daemonHome, codexHome }),
1252
+ store: new ProviderAccountReadingsStore(db) }),
1229
1253
  claude: new ClaudeUsageWindows({
1230
1254
  readIdentity: claudeAuthStatusReader({ launchPath: process.env.PATH, home: daemonHome, claudeConfigDir: process.env.CLAUDE_CONFIG_DIR }),
1231
1255
  listSamples: () => latestClaudeWindowSamples(db),
@@ -1379,6 +1403,7 @@ export async function createDaemon(opts) {
1379
1403
  seatAttentionReconciler,
1380
1404
  activityHookToken: resolvedActivityHookToken,
1381
1405
  contextUsageStore,
1406
+ currentModelReader,
1382
1407
  healthProjection,
1383
1408
  healthDiagnosis,
1384
1409
  healthPolicy,
@@ -1963,31 +1988,12 @@ export async function createDaemon(opts) {
1963
1988
  jobsRepo: watchdogJobsRepoInstance,
1964
1989
  historyLog: watchdogHistoryLogInstance,
1965
1990
  eventBus,
1966
- deliver: async ({ targetSession, message, continuityAction }, source) => {
1967
- let continuityActionCompleted = false;
1968
- try {
1969
- if (continuityAction) {
1970
- await createContinuityCutoverBaton(continuityAction, queueRepoInstance);
1971
- continuityActionCompleted = true;
1972
- }
1973
- const deliveryId = `guard-watchdog-${source.occurrenceId ?? source.jobId}`;
1974
- const previous = outboxHandlerInstance.getById(deliveryId);
1975
- const payload = previous?.guardBinding ? previous.body : formatWatchdogDeliveryMessage(source, message);
1976
- const result = await sessionTransport.send(targetSession, payload, { deliveryId, actorSession: "watchdog@system", auditPointer: source.jobId });
1977
- if (result.outcome === "retained")
1978
- return { status: "retained", outboxIds: result.outboxIds, continuityActionCompleted };
1979
- return result.ok
1980
- ? { status: "ok", continuityActionCompleted }
1981
- : { status: "failed", error: result.error, continuityActionCompleted };
1982
- }
1983
- catch (err) {
1984
- return {
1985
- status: "failed",
1986
- error: err instanceof Error ? err.message : String(err),
1987
- continuityActionCompleted,
1988
- };
1989
- }
1990
- },
1991
+ deliver: makeWatchdogDeliver({
1992
+ sessionTransport,
1993
+ outbox: outboxHandlerInstance,
1994
+ db,
1995
+ createContinuityAction: (action) => createContinuityCutoverBaton(action, queueRepoInstance).then(() => { }),
1996
+ }),
1991
1997
  // (i-c) fire-time target-generation gate: resolve the target's LIVE occupant-generation (P12
1992
1998
  // occupant_tenures) so a generation-bound wake is refused once the target has handed over.
1993
1999
  // UNKNOWN (null) fails open → deliver. A drop of this line disables the gate silently (gen-bound
@@ -1998,6 +2004,10 @@ export async function createDaemon(opts) {
1998
2004
  onWakeAttempt: ({ jobId, deliveryStatus }) => {
1999
2005
  queueRepoInstance.recordWatchdogWakeAttempt(jobId, deliveryStatus);
2000
2006
  },
2007
+ // Due parked-row reminders for one seat in one scheduler pass go as one message.
2008
+ resolveDigestEntry: ({ jobId, message }) => queueRepoInstance.parkReminderDigestEntry(jobId, message),
2009
+ priorDigestAttempt: (occurrenceId) => priorDigestAttempt(outboxHandlerInstance, occurrenceId),
2010
+ occurrenceAttempted: (occurrenceId) => occurrenceAttempted(outboxHandlerInstance, occurrenceId),
2001
2011
  // PL-004 Phase D: register workflow-keepalive policy alongside
2002
2012
  // Phase C's three built-in policies. workflow-keepalive reads
2003
2013
  // SQLite workflow_instances directly via the new Phase D tables
@@ -2172,30 +2182,9 @@ export async function createDaemon(opts) {
2172
2182
  // (no daemon-side cross-host send seam exists yet — the deferral names that, never silence).
2173
2183
  {
2174
2184
  const { ModelDivergenceMonitor } = await import("./domain/model-divergence/model-divergence-monitor.js");
2175
- const { readClaudeEffectiveModel, readCodexEffectiveModel } = await import("./domain/model-divergence/effective-model-readers.js");
2176
- const { readCurrentPiOccupantModel, resolveIdentityVerifiedClaudeRecord, resolveLiveCodexThreadId } = await import("./domain/model-divergence/current-generation-record.js");
2177
- const { defaultListProcesses } = await import("./domain/resume-metadata-refresher.js");
2178
- const { readCodexThreadIdFromCandidateHomes, defaultResolveHomeDirByPid } = await import("./domain/codex-thread-id.js");
2179
- const nodeOs = await import("node:os");
2180
- const nodeFs = await import("node:fs");
2181
- const seatIdentityStore = new SeatIdentityStore(db);
2182
- // OPR.0.5.3.10 — ONE shared census + ONE PID-home resolver for the whole
2183
- // divergence surface: no more `ps -Ao` per seat per poll, no more `ps eww`
2184
- // per pid (default-home-first + bounded PID cache).
2185
- const { ProcessCensus } = await import("./domain/process-census.js");
2186
- const { CodexThreadIdResolver } = await import("./domain/codex-thread-id.js");
2187
- const divergenceCensus = new ProcessCensus();
2188
- const codexThreadIdResolver = new CodexThreadIdResolver({ defaultHome: nodeOs.homedir(), codexHome: configuredCodexHome });
2189
- const currentGenDeps = {
2190
- getPanePid: async (sessionTarget) => tmuxAdapter.getPanePid ? tmuxAdapter.getPanePid(sessionTarget) : null,
2191
- listProcesses: () => divergenceCensus.list(),
2192
- // S10 follow-on: identity REQUIRED on resolve(); the identity-less case routes EXPLICITLY
2193
- // through the named ungated escape hatch — never a silent fallback (r1 owed item 3).
2194
- readThreadIdByPid: (pid, identity) => identity === undefined ? codexThreadIdResolver.resolveUngatedLegacy(pid) : codexThreadIdResolver.resolve(pid, identity),
2195
- };
2196
2185
  const OVERSIGHT_SEAT = "watch-lead@oversight";
2197
2186
  const modelDivergenceMonitor = new ModelDivergenceMonitor({
2198
- processCensus: divergenceCensus,
2187
+ processCensus: modelCensus,
2199
2188
  listPinnedSeats: () => {
2200
2189
  const rows = db.prepare(`
2201
2190
  SELECT n.id AS nodeId, r.id AS rigId, r.name AS rigName, n.runtime AS runtime, n.model AS pinnedModel,
@@ -2209,70 +2198,7 @@ export async function createDaemon(opts) {
2209
2198
  .filter((row) => row.sessionName !== null)
2210
2199
  .map((row) => ({ ...row, generation: sessionRegistry.currentOccupantGenerationForSession(row.sessionName) }));
2211
2200
  },
2212
- // D-a / OPR.0.5.9.13 — the CURRENT GENERATION's record through the canonical binding and
2213
- // verified pane identity, never a name, registry token, or transcript recency lookup. A
2214
- // retained predecessor may keep writing under the canonical launch-time name forever.
2215
- // Every missing or ambiguous identity join is an explicit no-answer.
2216
- readEffectiveModel: async (seat, cycle) => {
2217
- // OPR.0.5.3.10 mini-req 1 — the poll-scoped census (one ps per pass) when the
2218
- // monitor threads it; the shared coalescing census otherwise.
2219
- const genDeps = cycle ? { ...currentGenDeps, listProcesses: cycle.listProcesses } : currentGenDeps;
2220
- if (seat.runtime === "codex") {
2221
- const live = await resolveLiveCodexThreadId(seat.sessionName, genDeps);
2222
- if (!live.ok)
2223
- return { ok: false, reason: live.reason };
2224
- const rollout = contextUsageStore.readCodexAndNormalize({ threadId: live.id, sessionName: seat.sessionName }).transcriptPath;
2225
- if (!rollout)
2226
- return { ok: false, reason: `live thread ${live.id.slice(0, 8)}… has no readable rollout` };
2227
- const model = readCodexEffectiveModel(rollout);
2228
- return model ? { ok: true, model } : { ok: false, reason: `no model signal in the bounded read of ${rollout}` };
2229
- }
2230
- if (seat.runtime === "claude-code") {
2231
- const tenure = sessionRegistry.currentOccupantTenure(seat.nodeId);
2232
- const sidecar = contextUsageStore.readSidecar(seat.sessionName);
2233
- const binding = sessionRegistry.getBindingForNode(seat.nodeId);
2234
- const selection = await resolveIdentityVerifiedClaudeRecord({
2235
- sessionName: seat.sessionName,
2236
- generation: seat.generation,
2237
- occupantBootAt: tenure?.bootAt ?? null,
2238
- binding: binding ? { tmuxSession: binding.tmuxSession, tmuxPane: binding.tmuxPane } : null,
2239
- identity: seatIdentityStore.getForNode(seat.nodeId),
2240
- sidecar: sidecar.ok ? sidecar.data : null,
2241
- }, genDeps, (path) => {
2242
- try {
2243
- return nodeFs.statSync(path).isFile();
2244
- }
2245
- catch {
2246
- return false;
2247
- }
2248
- });
2249
- if (!selection.ok)
2250
- return { ok: false, reason: selection.reason };
2251
- const model = readClaudeEffectiveModel(selection.path);
2252
- return model
2253
- ? { ok: true, model }
2254
- : { ok: false, reason: `no assistant turn yet in the current occupant record ${selection.path} (selected from ${selection.source})` };
2255
- }
2256
- if (seat.runtime === "pi") {
2257
- const binding = sessionRegistry.getBindingForNode(seat.nodeId);
2258
- return readCurrentPiOccupantModel({
2259
- sessionName: seat.sessionName,
2260
- pinnedModel: seat.pinnedModel,
2261
- generation: seat.generation,
2262
- occupantBootAt: sessionRegistry.currentOccupantTenure(seat.nodeId)?.bootAt ?? null,
2263
- binding: binding ? { tmuxSession: binding.tmuxSession, tmuxPane: binding.tmuxPane } : null,
2264
- runner: piAdapter.readRunnerSidecar(seat.sessionName),
2265
- }, genDeps, (path) => {
2266
- try {
2267
- return nodeFs.realpathSync(path);
2268
- }
2269
- catch {
2270
- return null;
2271
- }
2272
- });
2273
- }
2274
- return { ok: false, reason: `runtime ${seat.runtime ?? "unknown"} has no effective-model reader yet` };
2275
- },
2201
+ readEffectiveModel: (seat, cycle) => currentModelReader.readEffectiveModel(seat, cycle),
2276
2202
  sendToSession: async (target, message, deliveryId) => {
2277
2203
  try {
2278
2204
  const previous = deliveryId ? outboxHandlerInstance.getById(deliveryId) : null;