@openrig/cli 0.6.14 → 0.7.1

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 (1366) hide show
  1. package/README.md +14 -12
  2. package/daemon/assets/claude-statusline-context.cjs +13 -3
  3. package/daemon/assets/guidance/openrig-seat-skills.md +1 -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 +11 -4
  7. package/daemon/assets/plugins/openrig-core/hooks/claude.json +11 -11
  8. package/daemon/assets/plugins/openrig-core/hooks/codex.json +6 -6
  9. package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +22 -9
  10. package/daemon/assets/plugins/openrig-core/hooks/scripts/codex-hook-trust.cjs +49 -0
  11. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus-health.cjs +2 -2
  12. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +35 -11
  13. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +9 -2
  14. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +1 -1
  15. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +16 -10
  16. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +43 -4
  17. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +2 -2
  18. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +192 -61
  19. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +10 -4
  20. package/daemon/assets/skills/rigs/SKILL.md +26 -6
  21. package/daemon/context-packs/help/manifest.yaml +1 -1
  22. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  23. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +209 -33
  24. package/daemon/context-packs/reference/getting-started.md +148 -23
  25. package/daemon/context-packs/reference/manifest.yaml +1 -1
  26. package/daemon/context-packs/reference/rig-spec.md +83 -3
  27. package/daemon/context-packs/reference/whats-new.md +173 -69
  28. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +9 -2
  32. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/claude-compaction-restore/scripts/precompact-hook.mjs +1 -1
  34. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +43 -4
  39. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/openrig-herdr/SKILL.md +3 -0
  43. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +2 -2
  45. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +2 -2
  48. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +11 -5
  49. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +16 -10
  58. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/openrig-user/SKILL.md +192 -61
  63. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/pods/development-team/SKILL.md +2 -0
  73. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +3 -1
  74. package/daemon/context-packs/skills/pods/development-team/references/refactoring.md +11 -0
  75. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  76. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/pods/review-team/SKILL.md +46 -96
  78. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  79. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  80. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  81. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  82. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  83. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  84. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  85. package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +17 -80
  86. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +5 -3
  87. package/daemon/context-packs/skills/process/verification-before-completion/references/performance-claims.md +12 -0
  88. package/daemon/context-packs/skills/queue-handoff/SKILL.md +10 -4
  89. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  90. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  91. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  92. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  93. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  94. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  95. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  96. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  97. package/daemon/dist/adapters/claude-code-adapter.d.ts +6 -2
  98. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  99. package/daemon/dist/adapters/claude-code-adapter.js +127 -32
  100. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  101. package/daemon/dist/adapters/claude-resume.d.ts +2 -1
  102. package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
  103. package/daemon/dist/adapters/claude-resume.js +10 -3
  104. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  105. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  106. package/daemon/dist/adapters/codex-resume.js +2 -7
  107. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  108. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +75 -3
  109. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  110. package/daemon/dist/adapters/codex-runtime-adapter.js +592 -91
  111. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  112. package/daemon/dist/adapters/community-harness-runtime-adapter.d.ts +21 -2
  113. package/daemon/dist/adapters/community-harness-runtime-adapter.d.ts.map +1 -1
  114. package/daemon/dist/adapters/community-harness-runtime-adapter.js +90 -8
  115. package/daemon/dist/adapters/community-harness-runtime-adapter.js.map +1 -1
  116. package/daemon/dist/adapters/compose-services-adapter.d.ts +16 -0
  117. package/daemon/dist/adapters/compose-services-adapter.d.ts.map +1 -1
  118. package/daemon/dist/adapters/compose-services-adapter.js +52 -9
  119. package/daemon/dist/adapters/compose-services-adapter.js.map +1 -1
  120. package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -1
  121. package/daemon/dist/adapters/kernel-authority.js +9 -5
  122. package/daemon/dist/adapters/kernel-authority.js.map +1 -1
  123. package/daemon/dist/adapters/pi-runner.d.ts +13 -0
  124. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  125. package/daemon/dist/adapters/pi-runner.js +64 -16
  126. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  127. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
  128. package/daemon/dist/adapters/pi-runtime-adapter.js +9 -6
  129. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  130. package/daemon/dist/adapters/runtime-probe-exec.d.ts +11 -0
  131. package/daemon/dist/adapters/runtime-probe-exec.d.ts.map +1 -0
  132. package/daemon/dist/adapters/runtime-probe-exec.js +25 -0
  133. package/daemon/dist/adapters/runtime-probe-exec.js.map +1 -0
  134. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  135. package/daemon/dist/adapters/stub-runner.js +2 -0
  136. package/daemon/dist/adapters/stub-runner.js.map +1 -1
  137. package/daemon/dist/adapters/stub-runtime-adapter.d.ts.map +1 -1
  138. package/daemon/dist/adapters/stub-runtime-adapter.js +9 -5
  139. package/daemon/dist/adapters/stub-runtime-adapter.js.map +1 -1
  140. package/daemon/dist/adapters/tmux.d.ts +36 -5
  141. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  142. package/daemon/dist/adapters/tmux.js +162 -33
  143. package/daemon/dist/adapters/tmux.js.map +1 -1
  144. package/daemon/dist/attention-surface.d.ts +14 -0
  145. package/daemon/dist/attention-surface.d.ts.map +1 -1
  146. package/daemon/dist/attention-surface.js.map +1 -1
  147. package/daemon/dist/build-info.js +3 -3
  148. package/daemon/dist/daemon-db-path.d.ts +6 -0
  149. package/daemon/dist/daemon-db-path.d.ts.map +1 -1
  150. package/daemon/dist/daemon-db-path.js +65 -1
  151. package/daemon/dist/daemon-db-path.js.map +1 -1
  152. package/daemon/dist/daemon-shutdown.d.ts.map +1 -1
  153. package/daemon/dist/daemon-shutdown.js +4 -2
  154. package/daemon/dist/daemon-shutdown.js.map +1 -1
  155. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  156. package/daemon/dist/db/all-migrations.js +28 -0
  157. package/daemon/dist/db/all-migrations.js.map +1 -1
  158. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.d.ts +3 -0
  159. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.d.ts.map +1 -0
  160. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.js +8 -0
  161. package/daemon/dist/db/migrations/116_queue_item_wake_input_box.js.map +1 -0
  162. package/daemon/dist/db/migrations/118_human_quiet_windows.d.ts +3 -0
  163. package/daemon/dist/db/migrations/118_human_quiet_windows.d.ts.map +1 -0
  164. package/daemon/dist/db/migrations/118_human_quiet_windows.js +30 -0
  165. package/daemon/dist/db/migrations/118_human_quiet_windows.js.map +1 -0
  166. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.d.ts +3 -0
  167. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.d.ts.map +1 -0
  168. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.js +7 -0
  169. package/daemon/dist/db/migrations/119_seat_identity_pane_pid.js.map +1 -0
  170. package/daemon/dist/db/migrations/121_rig_startup_layers.d.ts +13 -0
  171. package/daemon/dist/db/migrations/121_rig_startup_layers.d.ts.map +1 -0
  172. package/daemon/dist/db/migrations/121_rig_startup_layers.js +17 -0
  173. package/daemon/dist/db/migrations/121_rig_startup_layers.js.map +1 -0
  174. package/daemon/dist/db/migrations/122_human_operating_modes.d.ts +3 -0
  175. package/daemon/dist/db/migrations/122_human_operating_modes.d.ts.map +1 -0
  176. package/daemon/dist/db/migrations/122_human_operating_modes.js +55 -0
  177. package/daemon/dist/db/migrations/122_human_operating_modes.js.map +1 -0
  178. package/daemon/dist/db/migrations/123_queue_delegated_decision.d.ts +3 -0
  179. package/daemon/dist/db/migrations/123_queue_delegated_decision.d.ts.map +1 -0
  180. package/daemon/dist/db/migrations/123_queue_delegated_decision.js +10 -0
  181. package/daemon/dist/db/migrations/123_queue_delegated_decision.js.map +1 -0
  182. package/daemon/dist/db/migrations/124_context_usage_watchdog_units.d.ts +4 -0
  183. package/daemon/dist/db/migrations/124_context_usage_watchdog_units.d.ts.map +1 -0
  184. package/daemon/dist/db/migrations/124_context_usage_watchdog_units.js +9 -0
  185. package/daemon/dist/db/migrations/124_context_usage_watchdog_units.js.map +1 -0
  186. package/daemon/dist/db/migrations/125_node_advisor.d.ts +3 -0
  187. package/daemon/dist/db/migrations/125_node_advisor.d.ts.map +1 -0
  188. package/daemon/dist/db/migrations/125_node_advisor.js +8 -0
  189. package/daemon/dist/db/migrations/125_node_advisor.js.map +1 -0
  190. package/daemon/dist/db/migrations/127_operation_correlation.d.ts +3 -0
  191. package/daemon/dist/db/migrations/127_operation_correlation.d.ts.map +1 -0
  192. package/daemon/dist/db/migrations/127_operation_correlation.js +10 -0
  193. package/daemon/dist/db/migrations/127_operation_correlation.js.map +1 -0
  194. package/daemon/dist/db/migrations/128_terminal_policy.d.ts +3 -0
  195. package/daemon/dist/db/migrations/128_terminal_policy.d.ts.map +1 -0
  196. package/daemon/dist/db/migrations/128_terminal_policy.js +37 -0
  197. package/daemon/dist/db/migrations/128_terminal_policy.js.map +1 -0
  198. package/daemon/dist/db/migrations/129_stream_dispositions.d.ts +10 -0
  199. package/daemon/dist/db/migrations/129_stream_dispositions.d.ts.map +1 -0
  200. package/daemon/dist/db/migrations/129_stream_dispositions.js +35 -0
  201. package/daemon/dist/db/migrations/129_stream_dispositions.js.map +1 -0
  202. package/daemon/dist/db/migrations/130_stream_subscriptions.d.ts +11 -0
  203. package/daemon/dist/db/migrations/130_stream_subscriptions.d.ts.map +1 -0
  204. package/daemon/dist/db/migrations/130_stream_subscriptions.js +33 -0
  205. package/daemon/dist/db/migrations/130_stream_subscriptions.js.map +1 -0
  206. package/daemon/dist/db/migrations/131_stream_retention_floor.d.ts +8 -0
  207. package/daemon/dist/db/migrations/131_stream_retention_floor.d.ts.map +1 -0
  208. package/daemon/dist/db/migrations/131_stream_retention_floor.js +20 -0
  209. package/daemon/dist/db/migrations/131_stream_retention_floor.js.map +1 -0
  210. package/daemon/dist/db/migrations/135_seat_identity_process_evidence.d.ts +3 -0
  211. package/daemon/dist/db/migrations/135_seat_identity_process_evidence.d.ts.map +1 -0
  212. package/daemon/dist/db/migrations/135_seat_identity_process_evidence.js +16 -0
  213. package/daemon/dist/db/migrations/135_seat_identity_process_evidence.js.map +1 -0
  214. package/daemon/dist/domain/active-occupant.d.ts +8 -3
  215. package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  216. package/daemon/dist/domain/active-occupant.js +8 -4
  217. package/daemon/dist/domain/active-occupant.js.map +1 -1
  218. package/daemon/dist/domain/activity-taxonomy.d.ts +19 -1
  219. package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -1
  220. package/daemon/dist/domain/activity-taxonomy.js +21 -0
  221. package/daemon/dist/domain/activity-taxonomy.js.map +1 -1
  222. package/daemon/dist/domain/agent-activity-store.d.ts +24 -0
  223. package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
  224. package/daemon/dist/domain/agent-activity-store.js +50 -5
  225. package/daemon/dist/domain/agent-activity-store.js.map +1 -1
  226. package/daemon/dist/domain/agent-images/evidence-guard.js +3 -3
  227. package/daemon/dist/domain/agent-images/evidence-guard.js.map +1 -1
  228. package/daemon/dist/domain/agent-images/resume-token-discovery.d.ts.map +1 -1
  229. package/daemon/dist/domain/agent-images/resume-token-discovery.js +2 -10
  230. package/daemon/dist/domain/agent-images/resume-token-discovery.js.map +1 -1
  231. package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  232. package/daemon/dist/domain/agent-manifest.js +14 -2
  233. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  234. package/daemon/dist/domain/ask-service.d.ts +1 -0
  235. package/daemon/dist/domain/ask-service.d.ts.map +1 -1
  236. package/daemon/dist/domain/ask-service.js +7 -1
  237. package/daemon/dist/domain/ask-service.js.map +1 -1
  238. package/daemon/dist/domain/bootstrap-orchestrator.d.ts +5 -0
  239. package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
  240. package/daemon/dist/domain/bootstrap-orchestrator.js +25 -12
  241. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  242. package/daemon/dist/domain/builtin-startup-files.d.ts.map +1 -1
  243. package/daemon/dist/domain/builtin-startup-files.js +2 -0
  244. package/daemon/dist/domain/builtin-startup-files.js.map +1 -1
  245. package/daemon/dist/domain/bundle-behaviour.d.ts.map +1 -1
  246. package/daemon/dist/domain/bundle-behaviour.js +28 -1
  247. package/daemon/dist/domain/bundle-behaviour.js.map +1 -1
  248. package/daemon/dist/domain/claim-service.d.ts +20 -2
  249. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  250. package/daemon/dist/domain/claim-service.js +74 -19
  251. package/daemon/dist/domain/claim-service.js.map +1 -1
  252. package/daemon/dist/domain/classification-attempts.d.ts +4 -1
  253. package/daemon/dist/domain/classification-attempts.d.ts.map +1 -1
  254. package/daemon/dist/domain/classification-attempts.js +10 -1
  255. package/daemon/dist/domain/classification-attempts.js.map +1 -1
  256. package/daemon/dist/domain/classification-sources.d.ts +38 -0
  257. package/daemon/dist/domain/classification-sources.d.ts.map +1 -1
  258. package/daemon/dist/domain/classification-sources.js +26 -1
  259. package/daemon/dist/domain/classification-sources.js.map +1 -1
  260. package/daemon/dist/domain/claude-activity-hooks.d.ts +2 -2
  261. package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
  262. package/daemon/dist/domain/claude-activity-hooks.js +8 -7
  263. package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
  264. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +126 -11
  265. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  266. package/daemon/dist/domain/claude-compaction-enforcer.js +527 -68
  267. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  268. package/daemon/dist/domain/claude-core-plugin-env.d.ts +14 -0
  269. package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
  270. package/daemon/dist/domain/claude-core-plugin-env.js +37 -11
  271. package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
  272. package/daemon/dist/domain/claude-managed-launch.d.ts +1 -1
  273. package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
  274. package/daemon/dist/domain/claude-managed-launch.js +33 -15
  275. package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
  276. package/daemon/dist/domain/codex-core-plugin-install.d.ts +41 -0
  277. package/daemon/dist/domain/codex-core-plugin-install.d.ts.map +1 -0
  278. package/daemon/dist/domain/codex-core-plugin-install.js +126 -0
  279. package/daemon/dist/domain/codex-core-plugin-install.js.map +1 -0
  280. package/daemon/dist/domain/codex-owned-plugin-trust.d.ts +26 -0
  281. package/daemon/dist/domain/codex-owned-plugin-trust.d.ts.map +1 -0
  282. package/daemon/dist/domain/codex-owned-plugin-trust.js +187 -0
  283. package/daemon/dist/domain/codex-owned-plugin-trust.js.map +1 -0
  284. package/daemon/dist/domain/codex-rebuild-permissions.d.ts +54 -0
  285. package/daemon/dist/domain/codex-rebuild-permissions.d.ts.map +1 -0
  286. package/daemon/dist/domain/codex-rebuild-permissions.js +134 -0
  287. package/daemon/dist/domain/codex-rebuild-permissions.js.map +1 -0
  288. package/daemon/dist/domain/codex-thread-id.d.ts +23 -1
  289. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  290. package/daemon/dist/domain/codex-thread-id.js +58 -17
  291. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  292. package/daemon/dist/domain/community-harness-launch-result.d.ts +33 -0
  293. package/daemon/dist/domain/community-harness-launch-result.d.ts.map +1 -0
  294. package/daemon/dist/domain/community-harness-launch-result.js +93 -0
  295. package/daemon/dist/domain/community-harness-launch-result.js.map +1 -0
  296. package/daemon/dist/domain/community-harness-presets.d.ts +27 -2
  297. package/daemon/dist/domain/community-harness-presets.d.ts.map +1 -1
  298. package/daemon/dist/domain/community-harness-presets.js +49 -5
  299. package/daemon/dist/domain/community-harness-presets.js.map +1 -1
  300. package/daemon/dist/domain/composer-prompts.d.ts +5 -2
  301. package/daemon/dist/domain/composer-prompts.d.ts.map +1 -1
  302. package/daemon/dist/domain/composer-prompts.js +2 -2
  303. package/daemon/dist/domain/composer-prompts.js.map +1 -1
  304. package/daemon/dist/domain/context-monitor.d.ts +13 -5
  305. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  306. package/daemon/dist/domain/context-monitor.js +49 -14
  307. package/daemon/dist/domain/context-monitor.js.map +1 -1
  308. package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  309. package/daemon/dist/domain/context-usage-store.js +3 -0
  310. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  311. package/daemon/dist/domain/continuity-policy-materializer.d.ts +1 -0
  312. package/daemon/dist/domain/continuity-policy-materializer.d.ts.map +1 -1
  313. package/daemon/dist/domain/continuity-policy-materializer.js +2 -0
  314. package/daemon/dist/domain/continuity-policy-materializer.js.map +1 -1
  315. package/daemon/dist/domain/current-work.d.ts +18 -0
  316. package/daemon/dist/domain/current-work.d.ts.map +1 -1
  317. package/daemon/dist/domain/current-work.js +17 -3
  318. package/daemon/dist/domain/current-work.js.map +1 -1
  319. package/daemon/dist/domain/draft-aware-delivery.d.ts +7 -7
  320. package/daemon/dist/domain/draft-aware-delivery.d.ts.map +1 -1
  321. package/daemon/dist/domain/draft-aware-delivery.js +61 -82
  322. package/daemon/dist/domain/draft-aware-delivery.js.map +1 -1
  323. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  324. package/daemon/dist/domain/execution-view.js +9 -7
  325. package/daemon/dist/domain/execution-view.js.map +1 -1
  326. package/daemon/dist/domain/existing-rig-restore.d.ts +110 -0
  327. package/daemon/dist/domain/existing-rig-restore.d.ts.map +1 -0
  328. package/daemon/dist/domain/existing-rig-restore.js +254 -0
  329. package/daemon/dist/domain/existing-rig-restore.js.map +1 -0
  330. package/daemon/dist/domain/footprint-choice.d.ts +41 -0
  331. package/daemon/dist/domain/footprint-choice.d.ts.map +1 -0
  332. package/daemon/dist/domain/footprint-choice.js +42 -0
  333. package/daemon/dist/domain/footprint-choice.js.map +1 -0
  334. package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -1
  335. package/daemon/dist/domain/fresh-occupant-relation.js +9 -2
  336. package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -1
  337. package/daemon/dist/domain/gateway/channel-operations.d.ts +3 -4
  338. package/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -1
  339. package/daemon/dist/domain/gateway/channel-operations.js.map +1 -1
  340. package/daemon/dist/domain/gateway/connections-projection.d.ts +0 -5
  341. package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
  342. package/daemon/dist/domain/gateway/connections-projection.js +3 -46
  343. package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
  344. package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts +14 -1
  345. package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts.map +1 -1
  346. package/daemon/dist/domain/gateway/delivery-rules-engine.js +13 -3
  347. package/daemon/dist/domain/gateway/delivery-rules-engine.js.map +1 -1
  348. package/daemon/dist/domain/gateway/dispatch-buffer.d.ts +4 -0
  349. package/daemon/dist/domain/gateway/dispatch-buffer.d.ts.map +1 -1
  350. package/daemon/dist/domain/gateway/dispatch-buffer.js +18 -0
  351. package/daemon/dist/domain/gateway/dispatch-buffer.js.map +1 -1
  352. package/daemon/dist/domain/gateway/human-mode-account.d.ts +61 -0
  353. package/daemon/dist/domain/gateway/human-mode-account.d.ts.map +1 -0
  354. package/daemon/dist/domain/gateway/human-mode-account.js +112 -0
  355. package/daemon/dist/domain/gateway/human-mode-account.js.map +1 -0
  356. package/daemon/dist/domain/gateway/human-operating-modes.d.ts +171 -0
  357. package/daemon/dist/domain/gateway/human-operating-modes.d.ts.map +1 -0
  358. package/daemon/dist/domain/gateway/human-operating-modes.js +422 -0
  359. package/daemon/dist/domain/gateway/human-operating-modes.js.map +1 -0
  360. package/daemon/dist/domain/gateway/human-quiet-windows.d.ts +121 -0
  361. package/daemon/dist/domain/gateway/human-quiet-windows.d.ts.map +1 -0
  362. package/daemon/dist/domain/gateway/human-quiet-windows.js +217 -0
  363. package/daemon/dist/domain/gateway/human-quiet-windows.js.map +1 -0
  364. package/daemon/dist/domain/gateway/human-registry.d.ts +55 -2
  365. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  366. package/daemon/dist/domain/gateway/human-registry.js +137 -8
  367. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  368. package/daemon/dist/domain/gateway/operator-delivery-engine.d.ts.map +1 -1
  369. package/daemon/dist/domain/gateway/operator-delivery-engine.js +9 -0
  370. package/daemon/dist/domain/gateway/operator-delivery-engine.js.map +1 -1
  371. package/daemon/dist/domain/gateway/slack/inbound.d.ts +10 -2
  372. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  373. package/daemon/dist/domain/gateway/slack/inbound.js +76 -6
  374. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  375. package/daemon/dist/domain/gateway/slack/message.d.ts +4 -0
  376. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
  377. package/daemon/dist/domain/gateway/slack/message.js +13 -2
  378. package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
  379. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +9 -3
  380. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  381. package/daemon/dist/domain/gateway/slack/outbound-driver.js +40 -6
  382. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  383. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +7 -0
  384. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  385. package/daemon/dist/domain/gateway/slack/queue-access.js +14 -2
  386. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  387. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +17 -1
  388. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  389. package/daemon/dist/domain/gateway/slack/slack-delivery.js +143 -56
  390. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  391. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +3 -2
  392. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  393. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +266 -51
  394. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  395. package/daemon/dist/domain/generated-file-hygiene.js +1 -1
  396. package/daemon/dist/domain/generated-file-hygiene.js.map +1 -1
  397. package/daemon/dist/domain/graph-projection.d.ts +3 -0
  398. package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
  399. package/daemon/dist/domain/graph-projection.js +2 -0
  400. package/daemon/dist/domain/graph-projection.js.map +1 -1
  401. package/daemon/dist/domain/health-diagnosis.d.ts.map +1 -1
  402. package/daemon/dist/domain/health-diagnosis.js +14 -6
  403. package/daemon/dist/domain/health-diagnosis.js.map +1 -1
  404. package/daemon/dist/domain/health-passive-ceremony.d.ts +4 -0
  405. package/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -1
  406. package/daemon/dist/domain/health-passive-ceremony.js +34 -4
  407. package/daemon/dist/domain/health-passive-ceremony.js.map +1 -1
  408. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +3 -1
  409. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
  410. package/daemon/dist/domain/hosts/hosts-registry-reader.js +9 -9
  411. package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
  412. package/daemon/dist/domain/hosts/learned-host-bindings.d.ts +28 -0
  413. package/daemon/dist/domain/hosts/learned-host-bindings.d.ts.map +1 -0
  414. package/daemon/dist/domain/hosts/learned-host-bindings.js +77 -0
  415. package/daemon/dist/domain/hosts/learned-host-bindings.js.map +1 -0
  416. package/daemon/dist/domain/hot-potato-enforcer.d.ts +7 -5
  417. package/daemon/dist/domain/hot-potato-enforcer.d.ts.map +1 -1
  418. package/daemon/dist/domain/hot-potato-enforcer.js +19 -10
  419. package/daemon/dist/domain/hot-potato-enforcer.js.map +1 -1
  420. package/daemon/dist/domain/human-questions.d.ts +10 -1
  421. package/daemon/dist/domain/human-questions.d.ts.map +1 -1
  422. package/daemon/dist/domain/human-questions.js +5 -0
  423. package/daemon/dist/domain/human-questions.js.map +1 -1
  424. package/daemon/dist/domain/kernel-boot-tracker.d.ts +17 -1
  425. package/daemon/dist/domain/kernel-boot-tracker.d.ts.map +1 -1
  426. package/daemon/dist/domain/kernel-boot-tracker.js +44 -3
  427. package/daemon/dist/domain/kernel-boot-tracker.js.map +1 -1
  428. package/daemon/dist/domain/kernel-boot.d.ts +26 -1
  429. package/daemon/dist/domain/kernel-boot.d.ts.map +1 -1
  430. package/daemon/dist/domain/kernel-boot.js +91 -6
  431. package/daemon/dist/domain/kernel-boot.js.map +1 -1
  432. package/daemon/dist/domain/managed-blocks.d.ts +32 -1
  433. package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
  434. package/daemon/dist/domain/managed-blocks.js +109 -11
  435. package/daemon/dist/domain/managed-blocks.js.map +1 -1
  436. package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts +1 -1
  437. package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts.map +1 -1
  438. package/daemon/dist/domain/mission-control/mission-control-action-log.js +3 -0
  439. package/daemon/dist/domain/mission-control/mission-control-action-log.js.map +1 -1
  440. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts +21 -0
  441. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -1
  442. package/daemon/dist/domain/mission-control/mission-control-write-contract.js +110 -0
  443. package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -1
  444. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +2 -1
  445. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  446. package/daemon/dist/domain/model-divergence/current-generation-record.js +8 -3
  447. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  448. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts +2 -0
  449. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts.map +1 -1
  450. package/daemon/dist/domain/model-divergence/current-model-reader.js +7 -0
  451. package/daemon/dist/domain/model-divergence/current-model-reader.js.map +1 -1
  452. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +10 -1
  453. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
  454. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js +24 -5
  455. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
  456. package/daemon/dist/domain/native-process-lineage.d.ts +3 -0
  457. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  458. package/daemon/dist/domain/native-process-lineage.js +103 -17
  459. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  460. package/daemon/dist/domain/native-resume-probe-evidence.d.ts +19 -0
  461. package/daemon/dist/domain/native-resume-probe-evidence.d.ts.map +1 -0
  462. package/daemon/dist/domain/native-resume-probe-evidence.js +37 -0
  463. package/daemon/dist/domain/native-resume-probe-evidence.js.map +1 -0
  464. package/daemon/dist/domain/native-resume-probe.d.ts +7 -0
  465. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  466. package/daemon/dist/domain/native-resume-probe.js +12 -9
  467. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  468. package/daemon/dist/domain/node-inventory.d.ts +49 -1
  469. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  470. package/daemon/dist/domain/node-inventory.js +145 -57
  471. package/daemon/dist/domain/node-inventory.js.map +1 -1
  472. package/daemon/dist/domain/node-launcher.d.ts +5 -3
  473. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  474. package/daemon/dist/domain/node-launcher.js +36 -26
  475. package/daemon/dist/domain/node-launcher.js.map +1 -1
  476. package/daemon/dist/domain/occupant-invalidator.d.ts +16 -4
  477. package/daemon/dist/domain/occupant-invalidator.d.ts.map +1 -1
  478. package/daemon/dist/domain/occupant-invalidator.js +25 -5
  479. package/daemon/dist/domain/occupant-invalidator.js.map +1 -1
  480. package/daemon/dist/domain/operation-correlation.d.ts +78 -0
  481. package/daemon/dist/domain/operation-correlation.d.ts.map +1 -0
  482. package/daemon/dist/domain/operation-correlation.js +54 -0
  483. package/daemon/dist/domain/operation-correlation.js.map +1 -0
  484. package/daemon/dist/domain/outbox-handler.d.ts +3 -5
  485. package/daemon/dist/domain/outbox-handler.d.ts.map +1 -1
  486. package/daemon/dist/domain/outbox-handler.js +9 -19
  487. package/daemon/dist/domain/outbox-handler.js.map +1 -1
  488. package/daemon/dist/domain/park-wake-text.d.ts +11 -0
  489. package/daemon/dist/domain/park-wake-text.d.ts.map +1 -0
  490. package/daemon/dist/domain/park-wake-text.js +26 -0
  491. package/daemon/dist/domain/park-wake-text.js.map +1 -0
  492. package/daemon/dist/domain/permission-account.d.ts +28 -0
  493. package/daemon/dist/domain/permission-account.d.ts.map +1 -0
  494. package/daemon/dist/domain/permission-account.js +102 -0
  495. package/daemon/dist/domain/permission-account.js.map +1 -0
  496. package/daemon/dist/domain/permission-drift.d.ts.map +1 -1
  497. package/daemon/dist/domain/permission-drift.js +11 -7
  498. package/daemon/dist/domain/permission-drift.js.map +1 -1
  499. package/daemon/dist/domain/plugin-vendor-service.d.ts +4 -0
  500. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  501. package/daemon/dist/domain/plugin-vendor-service.js +29 -6
  502. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  503. package/daemon/dist/domain/pod-bundle-assembler.d.ts +1 -0
  504. package/daemon/dist/domain/pod-bundle-assembler.d.ts.map +1 -1
  505. package/daemon/dist/domain/pod-bundle-assembler.js +25 -0
  506. package/daemon/dist/domain/pod-bundle-assembler.js.map +1 -1
  507. package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts +7 -0
  508. package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts.map +1 -1
  509. package/daemon/dist/domain/policies/artifact-pool-helpers.js +8 -4
  510. package/daemon/dist/domain/policies/artifact-pool-helpers.js.map +1 -1
  511. package/daemon/dist/domain/policies/context-usage-threshold.d.ts.map +1 -1
  512. package/daemon/dist/domain/policies/context-usage-threshold.js +109 -21
  513. package/daemon/dist/domain/policies/context-usage-threshold.js.map +1 -1
  514. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts +1 -0
  515. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -1
  516. package/daemon/dist/domain/policies/delivery-digest-flush.js +25 -4
  517. package/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -1
  518. package/daemon/dist/domain/policies/edge-artifact-required.d.ts +6 -1
  519. package/daemon/dist/domain/policies/edge-artifact-required.d.ts.map +1 -1
  520. package/daemon/dist/domain/policies/edge-artifact-required.js +18 -13
  521. package/daemon/dist/domain/policies/edge-artifact-required.js.map +1 -1
  522. package/daemon/dist/domain/policies/mode-scheduled-end.d.ts +39 -0
  523. package/daemon/dist/domain/policies/mode-scheduled-end.d.ts.map +1 -0
  524. package/daemon/dist/domain/policies/mode-scheduled-end.js +165 -0
  525. package/daemon/dist/domain/policies/mode-scheduled-end.js.map +1 -0
  526. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +11 -7
  527. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  528. package/daemon/dist/domain/policies/parked-owner-consumer.js +82 -113
  529. package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  530. package/daemon/dist/domain/policies/periodic-reminder.d.ts +10 -0
  531. package/daemon/dist/domain/policies/periodic-reminder.d.ts.map +1 -1
  532. package/daemon/dist/domain/policies/periodic-reminder.js +11 -6
  533. package/daemon/dist/domain/policies/periodic-reminder.js.map +1 -1
  534. package/daemon/dist/domain/policies/quiet-release.d.ts +109 -0
  535. package/daemon/dist/domain/policies/quiet-release.d.ts.map +1 -0
  536. package/daemon/dist/domain/policies/quiet-release.js +213 -0
  537. package/daemon/dist/domain/policies/quiet-release.js.map +1 -0
  538. package/daemon/dist/domain/policies/types.d.ts +25 -0
  539. package/daemon/dist/domain/policies/types.d.ts.map +1 -1
  540. package/daemon/dist/domain/policies/workflow-keepalive.d.ts +6 -1
  541. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  542. package/daemon/dist/domain/policies/workflow-keepalive.js +11 -5
  543. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  544. package/daemon/dist/domain/profile-resolution-worker.d.ts +7 -0
  545. package/daemon/dist/domain/profile-resolution-worker.d.ts.map +1 -0
  546. package/daemon/dist/domain/profile-resolution-worker.js +83 -0
  547. package/daemon/dist/domain/profile-resolution-worker.js.map +1 -0
  548. package/daemon/dist/domain/profile-resolver.d.ts +6 -0
  549. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  550. package/daemon/dist/domain/profile-resolver.js +20 -3
  551. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  552. package/daemon/dist/domain/project-classifier.d.ts +7 -0
  553. package/daemon/dist/domain/project-classifier.d.ts.map +1 -1
  554. package/daemon/dist/domain/project-classifier.js +26 -0
  555. package/daemon/dist/domain/project-classifier.js.map +1 -1
  556. package/daemon/dist/domain/proof/source-watch.js +2 -2
  557. package/daemon/dist/domain/proof/source-watch.js.map +1 -1
  558. package/daemon/dist/domain/provider/subscription-move-report.d.ts +86 -0
  559. package/daemon/dist/domain/provider/subscription-move-report.d.ts.map +1 -0
  560. package/daemon/dist/domain/provider/subscription-move-report.js +227 -0
  561. package/daemon/dist/domain/provider/subscription-move-report.js.map +1 -0
  562. package/daemon/dist/domain/ps-projection.d.ts +6 -35
  563. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  564. package/daemon/dist/domain/ps-projection.js +14 -55
  565. package/daemon/dist/domain/ps-projection.js.map +1 -1
  566. package/daemon/dist/domain/queue-destination-check.d.ts +6 -0
  567. package/daemon/dist/domain/queue-destination-check.d.ts.map +1 -0
  568. package/daemon/dist/domain/queue-destination-check.js +35 -0
  569. package/daemon/dist/domain/queue-destination-check.js.map +1 -0
  570. package/daemon/dist/domain/queue-owner.d.ts +6 -3
  571. package/daemon/dist/domain/queue-owner.d.ts.map +1 -1
  572. package/daemon/dist/domain/queue-owner.js +12 -6
  573. package/daemon/dist/domain/queue-owner.js.map +1 -1
  574. package/daemon/dist/domain/queue-pickup.d.ts +5 -2
  575. package/daemon/dist/domain/queue-pickup.d.ts.map +1 -1
  576. package/daemon/dist/domain/queue-pickup.js +19 -2
  577. package/daemon/dist/domain/queue-pickup.js.map +1 -1
  578. package/daemon/dist/domain/queue-recovery.d.ts +1 -1
  579. package/daemon/dist/domain/queue-recovery.d.ts.map +1 -1
  580. package/daemon/dist/domain/queue-recovery.js +3 -2
  581. package/daemon/dist/domain/queue-recovery.js.map +1 -1
  582. package/daemon/dist/domain/queue-repository.d.ts +146 -72
  583. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  584. package/daemon/dist/domain/queue-repository.js +505 -169
  585. package/daemon/dist/domain/queue-repository.js.map +1 -1
  586. package/daemon/dist/domain/queue-retention.d.ts +18 -0
  587. package/daemon/dist/domain/queue-retention.d.ts.map +1 -1
  588. package/daemon/dist/domain/queue-retention.js +74 -0
  589. package/daemon/dist/domain/queue-retention.js.map +1 -1
  590. package/daemon/dist/domain/queue-stuck-sweep.d.ts +15 -1
  591. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  592. package/daemon/dist/domain/queue-stuck-sweep.js +132 -16
  593. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  594. package/daemon/dist/domain/queue-transition-log.d.ts +5 -0
  595. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  596. package/daemon/dist/domain/queue-transition-log.js +25 -8
  597. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  598. package/daemon/dist/domain/queue-wait-backoff.d.ts +3 -0
  599. package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
  600. package/daemon/dist/domain/queue-wait-backoff.js +9 -0
  601. package/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
  602. package/daemon/dist/domain/queue-waiting.d.ts +2 -0
  603. package/daemon/dist/domain/queue-waiting.d.ts.map +1 -1
  604. package/daemon/dist/domain/queue-waiting.js.map +1 -1
  605. package/daemon/dist/domain/queue-wake-ladder.d.ts +2 -0
  606. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  607. package/daemon/dist/domain/queue-wake-ladder.js +112 -17
  608. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  609. package/daemon/dist/domain/quiet-hold-custody.d.ts +24 -0
  610. package/daemon/dist/domain/quiet-hold-custody.d.ts.map +1 -0
  611. package/daemon/dist/domain/quiet-hold-custody.js +85 -0
  612. package/daemon/dist/domain/quiet-hold-custody.js.map +1 -0
  613. package/daemon/dist/domain/reconciler.d.ts +23 -0
  614. package/daemon/dist/domain/reconciler.d.ts.map +1 -1
  615. package/daemon/dist/domain/reconciler.js +44 -1
  616. package/daemon/dist/domain/reconciler.js.map +1 -1
  617. package/daemon/dist/domain/rehydrate-eligibility.d.ts +12 -1
  618. package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  619. package/daemon/dist/domain/rehydrate-eligibility.js +47 -10
  620. package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  621. package/daemon/dist/domain/restore-guidance.d.ts +7 -0
  622. package/daemon/dist/domain/restore-guidance.d.ts.map +1 -1
  623. package/daemon/dist/domain/restore-guidance.js +20 -8
  624. package/daemon/dist/domain/restore-guidance.js.map +1 -1
  625. package/daemon/dist/domain/restore-orchestrator.d.ts +24 -1
  626. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  627. package/daemon/dist/domain/restore-orchestrator.js +295 -41
  628. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  629. package/daemon/dist/domain/restore-plan-preview.d.ts +10 -3
  630. package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  631. package/daemon/dist/domain/restore-plan-preview.js +56 -18
  632. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  633. package/daemon/dist/domain/restore-policy.d.ts +4 -0
  634. package/daemon/dist/domain/restore-policy.d.ts.map +1 -1
  635. package/daemon/dist/domain/restore-policy.js +11 -0
  636. package/daemon/dist/domain/restore-policy.js.map +1 -1
  637. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  638. package/daemon/dist/domain/review/gather.js +8 -5
  639. package/daemon/dist/domain/review/gather.js.map +1 -1
  640. package/daemon/dist/domain/rig-edge-ops.d.ts +58 -0
  641. package/daemon/dist/domain/rig-edge-ops.d.ts.map +1 -0
  642. package/daemon/dist/domain/rig-edge-ops.js +113 -0
  643. package/daemon/dist/domain/rig-edge-ops.js.map +1 -0
  644. package/daemon/dist/domain/rig-mode/operating-posture.d.ts.map +1 -1
  645. package/daemon/dist/domain/rig-mode/operating-posture.js +3 -1
  646. package/daemon/dist/domain/rig-mode/operating-posture.js.map +1 -1
  647. package/daemon/dist/domain/rig-name-override.d.ts +14 -0
  648. package/daemon/dist/domain/rig-name-override.d.ts.map +1 -0
  649. package/daemon/dist/domain/rig-name-override.js +38 -0
  650. package/daemon/dist/domain/rig-name-override.js.map +1 -0
  651. package/daemon/dist/domain/rig-repository.d.ts +19 -1
  652. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  653. package/daemon/dist/domain/rig-repository.js +41 -3
  654. package/daemon/dist/domain/rig-repository.js.map +1 -1
  655. package/daemon/dist/domain/rig-status-compose.d.ts +1 -1
  656. package/daemon/dist/domain/rig-status-compose.d.ts.map +1 -1
  657. package/daemon/dist/domain/rig-status-compose.js +3 -1
  658. package/daemon/dist/domain/rig-status-compose.js.map +1 -1
  659. package/daemon/dist/domain/rig-teardown.d.ts +19 -0
  660. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  661. package/daemon/dist/domain/rig-teardown.js +109 -12
  662. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  663. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  664. package/daemon/dist/domain/rigspec-codec.js +10 -0
  665. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  666. package/daemon/dist/domain/rigspec-exporter.d.ts +3 -0
  667. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  668. package/daemon/dist/domain/rigspec-exporter.js +22 -0
  669. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  670. package/daemon/dist/domain/rigspec-instantiator.d.ts +39 -2
  671. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  672. package/daemon/dist/domain/rigspec-instantiator.js +319 -73
  673. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  674. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  675. package/daemon/dist/domain/rigspec-preflight.js +15 -2
  676. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  677. package/daemon/dist/domain/rigspec-schema.d.ts +8 -0
  678. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  679. package/daemon/dist/domain/rigspec-schema.js +97 -3
  680. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  681. package/daemon/dist/domain/runtime-adapter.d.ts +47 -3
  682. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  683. package/daemon/dist/domain/runtime-adapter.js +5 -1
  684. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  685. package/daemon/dist/domain/scope/scope-view-projection.d.ts +6 -0
  686. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  687. package/daemon/dist/domain/scope/scope-view-projection.js +26 -10
  688. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  689. package/daemon/dist/domain/seat-activity-service.d.ts +22 -5
  690. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  691. package/daemon/dist/domain/seat-activity-service.js +137 -62
  692. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  693. package/daemon/dist/domain/seat-attention-reconciler.d.ts +27 -1
  694. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  695. package/daemon/dist/domain/seat-attention-reconciler.js +63 -7
  696. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  697. package/daemon/dist/domain/seat-delivery-guard.d.ts +20 -1
  698. package/daemon/dist/domain/seat-delivery-guard.d.ts.map +1 -1
  699. package/daemon/dist/domain/seat-delivery-guard.js +87 -16
  700. package/daemon/dist/domain/seat-delivery-guard.js.map +1 -1
  701. package/daemon/dist/domain/seat-handover-service.d.ts +10 -2
  702. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  703. package/daemon/dist/domain/seat-handover-service.js +100 -4
  704. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  705. package/daemon/dist/domain/seat-identity-reconciler.js +1 -1
  706. package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  707. package/daemon/dist/domain/seat-identity-store.d.ts +11 -1
  708. package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
  709. package/daemon/dist/domain/seat-identity-store.js +32 -4
  710. package/daemon/dist/domain/seat-identity-store.js.map +1 -1
  711. package/daemon/dist/domain/seat-launch-additions.d.ts +115 -0
  712. package/daemon/dist/domain/seat-launch-additions.d.ts.map +1 -0
  713. package/daemon/dist/domain/seat-launch-additions.js +439 -0
  714. package/daemon/dist/domain/seat-launch-additions.js.map +1 -0
  715. package/daemon/dist/domain/seat-launch-environment.d.ts +1 -1
  716. package/daemon/dist/domain/seat-launch-environment.d.ts.map +1 -1
  717. package/daemon/dist/domain/seat-launch-environment.js +18 -2
  718. package/daemon/dist/domain/seat-launch-environment.js.map +1 -1
  719. package/daemon/dist/domain/seat-lifecycle-service.d.ts +83 -4
  720. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  721. package/daemon/dist/domain/seat-lifecycle-service.js +202 -12
  722. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  723. package/daemon/dist/domain/seat-restart-in-place.d.ts +33 -14
  724. package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -1
  725. package/daemon/dist/domain/seat-restart-in-place.js +102 -30
  726. package/daemon/dist/domain/seat-restart-in-place.js.map +1 -1
  727. package/daemon/dist/domain/seat-skill-apply.d.ts +139 -0
  728. package/daemon/dist/domain/seat-skill-apply.d.ts.map +1 -0
  729. package/daemon/dist/domain/seat-skill-apply.js +221 -0
  730. package/daemon/dist/domain/seat-skill-apply.js.map +1 -0
  731. package/daemon/dist/domain/seat-skill-storage.d.ts +295 -0
  732. package/daemon/dist/domain/seat-skill-storage.d.ts.map +1 -0
  733. package/daemon/dist/domain/seat-skill-storage.js +850 -0
  734. package/daemon/dist/domain/seat-skill-storage.js.map +1 -0
  735. package/daemon/dist/domain/seat-status-service.d.ts +9 -0
  736. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  737. package/daemon/dist/domain/seat-status-service.js +15 -3
  738. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  739. package/daemon/dist/domain/self-attach-service.d.ts +3 -2
  740. package/daemon/dist/domain/self-attach-service.d.ts.map +1 -1
  741. package/daemon/dist/domain/self-attach-service.js +18 -1
  742. package/daemon/dist/domain/self-attach-service.js.map +1 -1
  743. package/daemon/dist/domain/services-readiness.d.ts.map +1 -1
  744. package/daemon/dist/domain/services-readiness.js +14 -3
  745. package/daemon/dist/domain/services-readiness.js.map +1 -1
  746. package/daemon/dist/domain/session-registry.d.ts +49 -0
  747. package/daemon/dist/domain/session-registry.d.ts.map +1 -1
  748. package/daemon/dist/domain/session-registry.js +137 -0
  749. package/daemon/dist/domain/session-registry.js.map +1 -1
  750. package/daemon/dist/domain/session-transport.d.ts +76 -27
  751. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  752. package/daemon/dist/domain/session-transport.js +202 -82
  753. package/daemon/dist/domain/session-transport.js.map +1 -1
  754. package/daemon/dist/domain/skill-catalog.d.ts +16 -0
  755. package/daemon/dist/domain/skill-catalog.d.ts.map +1 -1
  756. package/daemon/dist/domain/skill-catalog.js +15 -6
  757. package/daemon/dist/domain/skill-catalog.js.map +1 -1
  758. package/daemon/dist/domain/skill-discovery.d.ts +24 -3
  759. package/daemon/dist/domain/skill-discovery.d.ts.map +1 -1
  760. package/daemon/dist/domain/skill-discovery.js +85 -12
  761. package/daemon/dist/domain/skill-discovery.js.map +1 -1
  762. package/daemon/dist/domain/snapshot-repository.d.ts +1 -0
  763. package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
  764. package/daemon/dist/domain/snapshot-repository.js +23 -10
  765. package/daemon/dist/domain/snapshot-repository.js.map +1 -1
  766. package/daemon/dist/domain/startup-orchestrator.d.ts +47 -5
  767. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  768. package/daemon/dist/domain/startup-orchestrator.js +291 -29
  769. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  770. package/daemon/dist/domain/startup-submission-evidence.d.ts +4 -11
  771. package/daemon/dist/domain/startup-submission-evidence.d.ts.map +1 -1
  772. package/daemon/dist/domain/startup-submission-evidence.js +11 -17
  773. package/daemon/dist/domain/startup-submission-evidence.js.map +1 -1
  774. package/daemon/dist/domain/stream-dispositions.d.ts +51 -0
  775. package/daemon/dist/domain/stream-dispositions.d.ts.map +1 -0
  776. package/daemon/dist/domain/stream-dispositions.js +112 -0
  777. package/daemon/dist/domain/stream-dispositions.js.map +1 -0
  778. package/daemon/dist/domain/stream-store.d.ts +22 -0
  779. package/daemon/dist/domain/stream-store.d.ts.map +1 -1
  780. package/daemon/dist/domain/stream-store.js +49 -6
  781. package/daemon/dist/domain/stream-store.js.map +1 -1
  782. package/daemon/dist/domain/stream-subscriptions.d.ts +94 -0
  783. package/daemon/dist/domain/stream-subscriptions.d.ts.map +1 -0
  784. package/daemon/dist/domain/stream-subscriptions.js +160 -0
  785. package/daemon/dist/domain/stream-subscriptions.js.map +1 -0
  786. package/daemon/dist/domain/successor-session-launcher.d.ts +8 -1
  787. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  788. package/daemon/dist/domain/successor-session-launcher.js +6 -1
  789. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  790. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +3 -1
  791. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  792. package/daemon/dist/domain/terminal/herdr-adapter.js +125 -4
  793. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  794. package/daemon/dist/domain/terminal/herdr-sessions.d.ts +9 -0
  795. package/daemon/dist/domain/terminal/herdr-sessions.d.ts.map +1 -0
  796. package/daemon/dist/domain/terminal/herdr-sessions.js +23 -0
  797. package/daemon/dist/domain/terminal/herdr-sessions.js.map +1 -0
  798. package/daemon/dist/domain/terminal/terminal-provider.d.ts +4 -0
  799. package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
  800. package/daemon/dist/domain/terminal/terminal-service.d.ts +12 -3
  801. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  802. package/daemon/dist/domain/terminal/terminal-service.js +42 -17
  803. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  804. package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -1
  805. package/daemon/dist/domain/terminal/view-composer.js +1 -0
  806. package/daemon/dist/domain/terminal/view-composer.js.map +1 -1
  807. package/daemon/dist/domain/terminal-policy.d.ts +80 -0
  808. package/daemon/dist/domain/terminal-policy.d.ts.map +1 -0
  809. package/daemon/dist/domain/terminal-policy.js +117 -0
  810. package/daemon/dist/domain/terminal-policy.js.map +1 -0
  811. package/daemon/dist/domain/terminal-seat.d.ts +9 -0
  812. package/daemon/dist/domain/terminal-seat.d.ts.map +1 -0
  813. package/daemon/dist/domain/terminal-seat.js +37 -0
  814. package/daemon/dist/domain/terminal-seat.js.map +1 -0
  815. package/daemon/dist/domain/topology-converge.d.ts +25 -2
  816. package/daemon/dist/domain/topology-converge.d.ts.map +1 -1
  817. package/daemon/dist/domain/topology-converge.js +14 -1
  818. package/daemon/dist/domain/topology-converge.js.map +1 -1
  819. package/daemon/dist/domain/types.d.ts +73 -6
  820. package/daemon/dist/domain/types.d.ts.map +1 -1
  821. package/daemon/dist/domain/types.js.map +1 -1
  822. package/daemon/dist/domain/urgent-line.d.ts +4 -0
  823. package/daemon/dist/domain/urgent-line.d.ts.map +1 -0
  824. package/daemon/dist/domain/urgent-line.js +7 -0
  825. package/daemon/dist/domain/urgent-line.js.map +1 -0
  826. package/daemon/dist/domain/usage-series.d.ts.map +1 -1
  827. package/daemon/dist/domain/usage-series.js +6 -2
  828. package/daemon/dist/domain/usage-series.js.map +1 -1
  829. package/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -1
  830. package/daemon/dist/domain/user-settings/settings-browser.js +4 -2
  831. package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -1
  832. package/daemon/dist/domain/user-settings/settings-store.d.ts +3 -1
  833. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  834. package/daemon/dist/domain/user-settings/settings-store.js +106 -8
  835. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  836. package/daemon/dist/domain/view-projector.d.ts.map +1 -1
  837. package/daemon/dist/domain/view-projector.js +2 -1
  838. package/daemon/dist/domain/view-projector.js.map +1 -1
  839. package/daemon/dist/domain/watchdog-delivery.d.ts +3 -23
  840. package/daemon/dist/domain/watchdog-delivery.d.ts.map +1 -1
  841. package/daemon/dist/domain/watchdog-delivery.js +12 -89
  842. package/daemon/dist/domain/watchdog-delivery.js.map +1 -1
  843. package/daemon/dist/domain/watchdog-history-log.d.ts +5 -2
  844. package/daemon/dist/domain/watchdog-history-log.d.ts.map +1 -1
  845. package/daemon/dist/domain/watchdog-history-log.js.map +1 -1
  846. package/daemon/dist/domain/watchdog-job-update.d.ts +21 -0
  847. package/daemon/dist/domain/watchdog-job-update.d.ts.map +1 -0
  848. package/daemon/dist/domain/watchdog-job-update.js +143 -0
  849. package/daemon/dist/domain/watchdog-job-update.js.map +1 -0
  850. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +65 -9
  851. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  852. package/daemon/dist/domain/watchdog-jobs-repository.js +194 -21
  853. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  854. package/daemon/dist/domain/watchdog-policy-engine.d.ts +39 -24
  855. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  856. package/daemon/dist/domain/watchdog-policy-engine.js +89 -55
  857. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  858. package/daemon/dist/domain/whoami-service.d.ts +2 -0
  859. package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
  860. package/daemon/dist/domain/whoami-service.js +23 -6
  861. package/daemon/dist/domain/whoami-service.js.map +1 -1
  862. package/daemon/dist/domain/workflow-boot-sweep.d.ts +2 -1
  863. package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -1
  864. package/daemon/dist/domain/workflow-boot-sweep.js +11 -5
  865. package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -1
  866. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  867. package/daemon/dist/domain/workflow-exception-escalation.js +9 -4
  868. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  869. package/daemon/dist/domain/workflow-projector.d.ts +5 -2
  870. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  871. package/daemon/dist/domain/workflow-projector.js +21 -9
  872. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  873. package/daemon/dist/domain/workflow-role-context.js +2 -2
  874. package/daemon/dist/domain/workflow-role-context.js.map +1 -1
  875. package/daemon/dist/domain/workflow-runtime.d.ts +8 -2
  876. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  877. package/daemon/dist/domain/workflow-runtime.js +32 -7
  878. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  879. package/daemon/dist/domain/workspace/project-read.d.ts +2 -0
  880. package/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
  881. package/daemon/dist/domain/workspace/project-read.js +10 -1
  882. package/daemon/dist/domain/workspace/project-read.js.map +1 -1
  883. package/daemon/dist/index.d.ts.map +1 -1
  884. package/daemon/dist/index.js +2 -0
  885. package/daemon/dist/index.js.map +1 -1
  886. package/daemon/dist/router-line-surface.d.ts +2 -0
  887. package/daemon/dist/router-line-surface.d.ts.map +1 -0
  888. package/daemon/dist/router-line-surface.js +3 -0
  889. package/daemon/dist/router-line-surface.js.map +1 -0
  890. package/daemon/dist/routes/activity.d.ts +13 -1
  891. package/daemon/dist/routes/activity.d.ts.map +1 -1
  892. package/daemon/dist/routes/activity.js +70 -2
  893. package/daemon/dist/routes/activity.js.map +1 -1
  894. package/daemon/dist/routes/agent-images.d.ts.map +1 -1
  895. package/daemon/dist/routes/agent-images.js +12 -2
  896. package/daemon/dist/routes/agent-images.js.map +1 -1
  897. package/daemon/dist/routes/attention.d.ts.map +1 -1
  898. package/daemon/dist/routes/attention.js +30 -3
  899. package/daemon/dist/routes/attention.js.map +1 -1
  900. package/daemon/dist/routes/bootstrap-failure-response.js +2 -2
  901. package/daemon/dist/routes/bootstrap-failure-response.js.map +1 -1
  902. package/daemon/dist/routes/bundles.js +1 -1
  903. package/daemon/dist/routes/bundles.js.map +1 -1
  904. package/daemon/dist/routes/compaction.d.ts.map +1 -1
  905. package/daemon/dist/routes/compaction.js +38 -12
  906. package/daemon/dist/routes/compaction.js.map +1 -1
  907. package/daemon/dist/routes/discovery.js +3 -0
  908. package/daemon/dist/routes/discovery.js.map +1 -1
  909. package/daemon/dist/routes/down.js +9 -1
  910. package/daemon/dist/routes/down.js.map +1 -1
  911. package/daemon/dist/routes/gateway.d.ts +2 -0
  912. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  913. package/daemon/dist/routes/gateway.js +181 -1
  914. package/daemon/dist/routes/gateway.js.map +1 -1
  915. package/daemon/dist/routes/hosts.d.ts.map +1 -1
  916. package/daemon/dist/routes/hosts.js +2 -0
  917. package/daemon/dist/routes/hosts.js.map +1 -1
  918. package/daemon/dist/routes/kernel-status.js +6 -1
  919. package/daemon/dist/routes/kernel-status.js.map +1 -1
  920. package/daemon/dist/routes/mission-control.d.ts.map +1 -1
  921. package/daemon/dist/routes/mission-control.js +5 -1
  922. package/daemon/dist/routes/mission-control.js.map +1 -1
  923. package/daemon/dist/routes/projects.d.ts.map +1 -1
  924. package/daemon/dist/routes/projects.js +59 -12
  925. package/daemon/dist/routes/projects.js.map +1 -1
  926. package/daemon/dist/routes/proof.js +2 -2
  927. package/daemon/dist/routes/proof.js.map +1 -1
  928. package/daemon/dist/routes/provider.d.ts.map +1 -1
  929. package/daemon/dist/routes/provider.js +87 -73
  930. package/daemon/dist/routes/provider.js.map +1 -1
  931. package/daemon/dist/routes/queue.d.ts.map +1 -1
  932. package/daemon/dist/routes/queue.js +125 -16
  933. package/daemon/dist/routes/queue.js.map +1 -1
  934. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  935. package/daemon/dist/routes/rigs.js +104 -20
  936. package/daemon/dist/routes/rigs.js.map +1 -1
  937. package/daemon/dist/routes/rigspec.d.ts.map +1 -1
  938. package/daemon/dist/routes/rigspec.js +40 -15
  939. package/daemon/dist/routes/rigspec.js.map +1 -1
  940. package/daemon/dist/routes/scopes.d.ts.map +1 -1
  941. package/daemon/dist/routes/scopes.js +30 -7
  942. package/daemon/dist/routes/scopes.js.map +1 -1
  943. package/daemon/dist/routes/seat.d.ts.map +1 -1
  944. package/daemon/dist/routes/seat.js +21 -5
  945. package/daemon/dist/routes/seat.js.map +1 -1
  946. package/daemon/dist/routes/sessions.js +5 -0
  947. package/daemon/dist/routes/sessions.js.map +1 -1
  948. package/daemon/dist/routes/skills.d.ts.map +1 -1
  949. package/daemon/dist/routes/skills.js +55 -2
  950. package/daemon/dist/routes/skills.js.map +1 -1
  951. package/daemon/dist/routes/stream.d.ts.map +1 -1
  952. package/daemon/dist/routes/stream.js +62 -13
  953. package/daemon/dist/routes/stream.js.map +1 -1
  954. package/daemon/dist/routes/terminal.d.ts.map +1 -1
  955. package/daemon/dist/routes/terminal.js +20 -11
  956. package/daemon/dist/routes/terminal.js.map +1 -1
  957. package/daemon/dist/routes/transcripts.d.ts.map +1 -1
  958. package/daemon/dist/routes/transcripts.js +7 -3
  959. package/daemon/dist/routes/transcripts.js.map +1 -1
  960. package/daemon/dist/routes/transport.d.ts.map +1 -1
  961. package/daemon/dist/routes/transport.js +25 -3
  962. package/daemon/dist/routes/transport.js.map +1 -1
  963. package/daemon/dist/routes/up.js +41 -52
  964. package/daemon/dist/routes/up.js.map +1 -1
  965. package/daemon/dist/routes/watchdog.d.ts +1 -0
  966. package/daemon/dist/routes/watchdog.d.ts.map +1 -1
  967. package/daemon/dist/routes/watchdog.js +52 -3
  968. package/daemon/dist/routes/watchdog.js.map +1 -1
  969. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  970. package/daemon/dist/routes/workflow.js +24 -13
  971. package/daemon/dist/routes/workflow.js.map +1 -1
  972. package/daemon/dist/server.d.ts +2 -0
  973. package/daemon/dist/server.d.ts.map +1 -1
  974. package/daemon/dist/server.js +4 -1
  975. package/daemon/dist/server.js.map +1 -1
  976. package/daemon/dist/skill-loadout-surface.d.ts +2 -0
  977. package/daemon/dist/skill-loadout-surface.d.ts.map +1 -1
  978. package/daemon/dist/skill-loadout-surface.js +2 -0
  979. package/daemon/dist/skill-loadout-surface.js.map +1 -1
  980. package/daemon/dist/startup.d.ts.map +1 -1
  981. package/daemon/dist/startup.js +156 -81
  982. package/daemon/dist/startup.js.map +1 -1
  983. package/daemon/dist/terminal/TerminalSessionBroker.d.ts.map +1 -1
  984. package/daemon/dist/terminal/TerminalSessionBroker.js +9 -2
  985. package/daemon/dist/terminal/TerminalSessionBroker.js.map +1 -1
  986. package/daemon/docs/reference/a2a-agents.md +343 -0
  987. package/daemon/docs/reference/acp-agents.md +77 -0
  988. package/daemon/docs/reference/agent-spec.md +7 -5
  989. package/daemon/docs/reference/agent-startup-guide.md +46 -0
  990. package/daemon/docs/reference/agent-state-taxonomy.md +43 -3
  991. package/daemon/docs/reference/checked-seat-stop.md +11 -0
  992. package/daemon/docs/reference/community-harness-examples/cursor/cursor.yaml +13 -0
  993. package/daemon/docs/reference/community-harness-examples/cursor/openrig-cursor-launch +61 -0
  994. package/daemon/docs/reference/community-harness-examples/hermes/config.yaml.example +18 -0
  995. package/daemon/docs/reference/community-harness-examples/hermes/hermes.yaml +12 -0
  996. package/daemon/docs/reference/community-harness-examples/hermes/openrig-hermes-launch +34 -0
  997. package/daemon/docs/reference/community-harness-examples/openclaw/openclaw.yaml +13 -0
  998. package/daemon/docs/reference/community-harness-examples/openclaw/openrig-openclaw-launch +38 -0
  999. package/daemon/docs/reference/community-harness-presets.md +179 -0
  1000. package/daemon/docs/reference/getting-started.md +148 -23
  1001. package/daemon/docs/reference/operation-correlation.md +9 -0
  1002. package/daemon/docs/reference/project-workspace.md +6 -0
  1003. package/daemon/docs/reference/quickstart.md +33 -20
  1004. package/daemon/docs/reference/refocus-channel.md +11 -3
  1005. package/daemon/docs/reference/rig-spec.md +83 -3
  1006. package/daemon/docs/reference/seat-delivery.md +130 -20
  1007. package/daemon/docs/reference/slack-app-setup.md +52 -3
  1008. package/daemon/docs/reference/stream-classifier-worker.md +28 -0
  1009. package/daemon/docs/reference/telemetry.md +3 -0
  1010. package/daemon/docs/reference/terminal-sessions.md +90 -0
  1011. package/daemon/docs/reference/topology-naming.md +1 -1
  1012. package/daemon/docs/reference/whats-new.md +173 -69
  1013. package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +0 -3
  1014. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +43 -4
  1015. package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +3 -0
  1016. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +2 -2
  1017. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +2 -2
  1018. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +11 -5
  1019. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +2 -0
  1020. package/daemon/specs/agents/shared/skills/pods/development-team/references/refactoring.md +11 -0
  1021. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +46 -96
  1022. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +17 -80
  1023. package/daemon/specs/agents/shared/skills/process/verification-before-completion/references/performance-claims.md +12 -0
  1024. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +129 -24
  1025. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +11 -0
  1026. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/startup/context.md +3 -1
  1027. package/daemon/specs/rigs/launch/secrets-manager/secrets-manager.compose.yaml +1 -1
  1028. package/dist/acp/connector.d.ts +72 -0
  1029. package/dist/acp/connector.d.ts.map +1 -0
  1030. package/dist/acp/connector.js +218 -0
  1031. package/dist/acp/connector.js.map +1 -0
  1032. package/dist/acp/json-rpc-stdio.d.ts +53 -0
  1033. package/dist/acp/json-rpc-stdio.d.ts.map +1 -0
  1034. package/dist/acp/json-rpc-stdio.js +141 -0
  1035. package/dist/acp/json-rpc-stdio.js.map +1 -0
  1036. package/dist/acp/run-processes.d.ts +10 -0
  1037. package/dist/acp/run-processes.d.ts.map +1 -0
  1038. package/dist/acp/run-processes.js +33 -0
  1039. package/dist/acp/run-processes.js.map +1 -0
  1040. package/dist/build-info.js +3 -3
  1041. package/dist/cli-error.d.ts +4 -0
  1042. package/dist/cli-error.d.ts.map +1 -1
  1043. package/dist/cli-error.js +6 -0
  1044. package/dist/cli-error.js.map +1 -1
  1045. package/dist/client.d.ts +7 -2
  1046. package/dist/client.d.ts.map +1 -1
  1047. package/dist/client.js +14 -7
  1048. package/dist/client.js.map +1 -1
  1049. package/dist/commands/acp.d.ts +11 -0
  1050. package/dist/commands/acp.d.ts.map +1 -0
  1051. package/dist/commands/acp.js +198 -0
  1052. package/dist/commands/acp.js.map +1 -0
  1053. package/dist/commands/agent-image.d.ts.map +1 -1
  1054. package/dist/commands/agent-image.js +15 -7
  1055. package/dist/commands/agent-image.js.map +1 -1
  1056. package/dist/commands/archive.d.ts.map +1 -1
  1057. package/dist/commands/archive.js +17 -3
  1058. package/dist/commands/archive.js.map +1 -1
  1059. package/dist/commands/attach.d.ts.map +1 -1
  1060. package/dist/commands/attach.js +7 -5
  1061. package/dist/commands/attach.js.map +1 -1
  1062. package/dist/commands/auth.d.ts +3 -0
  1063. package/dist/commands/auth.d.ts.map +1 -1
  1064. package/dist/commands/auth.js +39 -10
  1065. package/dist/commands/auth.js.map +1 -1
  1066. package/dist/commands/broadcast.js +2 -0
  1067. package/dist/commands/broadcast.js.map +1 -1
  1068. package/dist/commands/community-harness.d.ts.map +1 -1
  1069. package/dist/commands/community-harness.js +2 -1
  1070. package/dist/commands/community-harness.js.map +1 -1
  1071. package/dist/commands/compact-plan.d.ts +2 -0
  1072. package/dist/commands/compact-plan.d.ts.map +1 -1
  1073. package/dist/commands/compact-plan.js +40 -4
  1074. package/dist/commands/compact-plan.js.map +1 -1
  1075. package/dist/commands/compact.d.ts.map +1 -1
  1076. package/dist/commands/compact.js +11 -4
  1077. package/dist/commands/compact.js.map +1 -1
  1078. package/dist/commands/config.d.ts.map +1 -1
  1079. package/dist/commands/config.js +17 -3
  1080. package/dist/commands/config.js.map +1 -1
  1081. package/dist/commands/context.d.ts.map +1 -1
  1082. package/dist/commands/context.js +16 -9
  1083. package/dist/commands/context.js.map +1 -1
  1084. package/dist/commands/create.js +2 -2
  1085. package/dist/commands/create.js.map +1 -1
  1086. package/dist/commands/daemon.d.ts.map +1 -1
  1087. package/dist/commands/daemon.js +2 -0
  1088. package/dist/commands/daemon.js.map +1 -1
  1089. package/dist/commands/down.d.ts +5 -1
  1090. package/dist/commands/down.d.ts.map +1 -1
  1091. package/dist/commands/down.js +87 -3
  1092. package/dist/commands/down.js.map +1 -1
  1093. package/dist/commands/edge.d.ts +4 -0
  1094. package/dist/commands/edge.d.ts.map +1 -0
  1095. package/dist/commands/edge.js +135 -0
  1096. package/dist/commands/edge.js.map +1 -0
  1097. package/dist/commands/expand.d.ts.map +1 -1
  1098. package/dist/commands/expand.js +16 -2
  1099. package/dist/commands/expand.js.map +1 -1
  1100. package/dist/commands/export.d.ts +1 -0
  1101. package/dist/commands/export.d.ts.map +1 -1
  1102. package/dist/commands/export.js +60 -2
  1103. package/dist/commands/export.js.map +1 -1
  1104. package/dist/commands/fork.d.ts.map +1 -1
  1105. package/dist/commands/fork.js +22 -3
  1106. package/dist/commands/fork.js.map +1 -1
  1107. package/dist/commands/gateway.d.ts +39 -0
  1108. package/dist/commands/gateway.d.ts.map +1 -1
  1109. package/dist/commands/gateway.js +311 -3
  1110. package/dist/commands/gateway.js.map +1 -1
  1111. package/dist/commands/grow.js +2 -2
  1112. package/dist/commands/grow.js.map +1 -1
  1113. package/dist/commands/health.js +3 -2
  1114. package/dist/commands/health.js.map +1 -1
  1115. package/dist/commands/host.d.ts +1 -1
  1116. package/dist/commands/host.d.ts.map +1 -1
  1117. package/dist/commands/host.js +2 -2
  1118. package/dist/commands/host.js.map +1 -1
  1119. package/dist/commands/launch.d.ts.map +1 -1
  1120. package/dist/commands/launch.js +10 -3
  1121. package/dist/commands/launch.js.map +1 -1
  1122. package/dist/commands/mcp.d.ts.map +1 -1
  1123. package/dist/commands/mcp.js +113 -1
  1124. package/dist/commands/mcp.js.map +1 -1
  1125. package/dist/commands/plugin.d.ts.map +1 -1
  1126. package/dist/commands/plugin.js +2 -1
  1127. package/dist/commands/plugin.js.map +1 -1
  1128. package/dist/commands/project-worker.d.ts +25 -1
  1129. package/dist/commands/project-worker.d.ts.map +1 -1
  1130. package/dist/commands/project-worker.js +9 -7
  1131. package/dist/commands/project-worker.js.map +1 -1
  1132. package/dist/commands/project.d.ts +2 -0
  1133. package/dist/commands/project.d.ts.map +1 -1
  1134. package/dist/commands/project.js +64 -1
  1135. package/dist/commands/project.js.map +1 -1
  1136. package/dist/commands/provider.d.ts.map +1 -1
  1137. package/dist/commands/provider.js +72 -44
  1138. package/dist/commands/provider.js.map +1 -1
  1139. package/dist/commands/ps.d.ts +16 -1
  1140. package/dist/commands/ps.d.ts.map +1 -1
  1141. package/dist/commands/ps.js +145 -52
  1142. package/dist/commands/ps.js.map +1 -1
  1143. package/dist/commands/queue.d.ts +7 -1
  1144. package/dist/commands/queue.d.ts.map +1 -1
  1145. package/dist/commands/queue.js +97 -13
  1146. package/dist/commands/queue.js.map +1 -1
  1147. package/dist/commands/reconcile-session.d.ts.map +1 -1
  1148. package/dist/commands/reconcile-session.js +6 -0
  1149. package/dist/commands/reconcile-session.js.map +1 -1
  1150. package/dist/commands/release.d.ts.map +1 -1
  1151. package/dist/commands/release.js +16 -2
  1152. package/dist/commands/release.js.map +1 -1
  1153. package/dist/commands/restore-check.d.ts.map +1 -1
  1154. package/dist/commands/restore-check.js +2 -1
  1155. package/dist/commands/restore-check.js.map +1 -1
  1156. package/dist/commands/restore-packet.d.ts.map +1 -1
  1157. package/dist/commands/restore-packet.js +2 -1
  1158. package/dist/commands/restore-packet.js.map +1 -1
  1159. package/dist/commands/restore.d.ts.map +1 -1
  1160. package/dist/commands/restore.js +23 -6
  1161. package/dist/commands/restore.js.map +1 -1
  1162. package/dist/commands/scope.d.ts.map +1 -1
  1163. package/dist/commands/scope.js +5 -2
  1164. package/dist/commands/scope.js.map +1 -1
  1165. package/dist/commands/seat.d.ts +2 -0
  1166. package/dist/commands/seat.d.ts.map +1 -1
  1167. package/dist/commands/seat.js +124 -10
  1168. package/dist/commands/seat.js.map +1 -1
  1169. package/dist/commands/send.d.ts.map +1 -1
  1170. package/dist/commands/send.js +87 -56
  1171. package/dist/commands/send.js.map +1 -1
  1172. package/dist/commands/setup.d.ts +27 -0
  1173. package/dist/commands/setup.d.ts.map +1 -1
  1174. package/dist/commands/setup.js +189 -16
  1175. package/dist/commands/setup.js.map +1 -1
  1176. package/dist/commands/shrink.d.ts.map +1 -1
  1177. package/dist/commands/shrink.js +16 -2
  1178. package/dist/commands/shrink.js.map +1 -1
  1179. package/dist/commands/skill.d.ts.map +1 -1
  1180. package/dist/commands/skill.js +116 -3
  1181. package/dist/commands/skill.js.map +1 -1
  1182. package/dist/commands/slack.d.ts.map +1 -1
  1183. package/dist/commands/slack.js +11 -24
  1184. package/dist/commands/slack.js.map +1 -1
  1185. package/dist/commands/snapshot.d.ts.map +1 -1
  1186. package/dist/commands/snapshot.js +36 -10
  1187. package/dist/commands/snapshot.js.map +1 -1
  1188. package/dist/commands/specs.d.ts.map +1 -1
  1189. package/dist/commands/specs.js +11 -5
  1190. package/dist/commands/specs.js.map +1 -1
  1191. package/dist/commands/start.d.ts.map +1 -1
  1192. package/dist/commands/start.js +54 -35
  1193. package/dist/commands/start.js.map +1 -1
  1194. package/dist/commands/status.d.ts.map +1 -1
  1195. package/dist/commands/status.js +8 -2
  1196. package/dist/commands/status.js.map +1 -1
  1197. package/dist/commands/stream-outcome.d.ts +157 -0
  1198. package/dist/commands/stream-outcome.d.ts.map +1 -0
  1199. package/dist/commands/stream-outcome.js +81 -0
  1200. package/dist/commands/stream-outcome.js.map +1 -0
  1201. package/dist/commands/stream.d.ts.map +1 -1
  1202. package/dist/commands/stream.js +64 -2
  1203. package/dist/commands/stream.js.map +1 -1
  1204. package/dist/commands/terminal.d.ts +1 -0
  1205. package/dist/commands/terminal.d.ts.map +1 -1
  1206. package/dist/commands/terminal.js +35 -6
  1207. package/dist/commands/terminal.js.map +1 -1
  1208. package/dist/commands/topology-default-agent.d.ts +2 -2
  1209. package/dist/commands/topology-default-agent.d.ts.map +1 -1
  1210. package/dist/commands/topology-default-agent.js +5 -3
  1211. package/dist/commands/topology-default-agent.js.map +1 -1
  1212. package/dist/commands/transcript.d.ts.map +1 -1
  1213. package/dist/commands/transcript.js +12 -7
  1214. package/dist/commands/transcript.js.map +1 -1
  1215. package/dist/commands/unarchive.d.ts.map +1 -1
  1216. package/dist/commands/unarchive.js +16 -2
  1217. package/dist/commands/unarchive.js.map +1 -1
  1218. package/dist/commands/up.d.ts.map +1 -1
  1219. package/dist/commands/up.js +106 -35
  1220. package/dist/commands/up.js.map +1 -1
  1221. package/dist/commands/walk.d.ts.map +1 -1
  1222. package/dist/commands/walk.js +2 -1
  1223. package/dist/commands/walk.js.map +1 -1
  1224. package/dist/commands/watchdog.d.ts.map +1 -1
  1225. package/dist/commands/watchdog.js +80 -5
  1226. package/dist/commands/watchdog.js.map +1 -1
  1227. package/dist/commands/whoami.d.ts.map +1 -1
  1228. package/dist/commands/whoami.js +3 -0
  1229. package/dist/commands/whoami.js.map +1 -1
  1230. package/dist/commands/workflow-errors.js +1 -1
  1231. package/dist/commands/workflow-errors.js.map +1 -1
  1232. package/dist/commands/workflow-render.js +4 -4
  1233. package/dist/commands/workflow-render.js.map +1 -1
  1234. package/dist/commands/workflow.d.ts.map +1 -1
  1235. package/dist/commands/workflow.js +34 -15
  1236. package/dist/commands/workflow.js.map +1 -1
  1237. package/dist/config-store.d.ts +18 -2
  1238. package/dist/config-store.d.ts.map +1 -1
  1239. package/dist/config-store.js +120 -11
  1240. package/dist/config-store.js.map +1 -1
  1241. package/dist/daemon-lifecycle.d.ts +13 -4
  1242. package/dist/daemon-lifecycle.d.ts.map +1 -1
  1243. package/dist/daemon-lifecycle.js +100 -30
  1244. package/dist/daemon-lifecycle.js.map +1 -1
  1245. package/dist/daemon-reachability.d.ts +13 -0
  1246. package/dist/daemon-reachability.d.ts.map +1 -1
  1247. package/dist/daemon-reachability.js +28 -0
  1248. package/dist/daemon-reachability.js.map +1 -1
  1249. package/dist/decisions/decisions.d.ts +203 -0
  1250. package/dist/decisions/decisions.d.ts.map +1 -0
  1251. package/dist/decisions/decisions.js +374 -0
  1252. package/dist/decisions/decisions.js.map +1 -0
  1253. package/dist/decisions/stream-consumer.d.ts +255 -0
  1254. package/dist/decisions/stream-consumer.d.ts.map +1 -0
  1255. package/dist/decisions/stream-consumer.js +282 -0
  1256. package/dist/decisions/stream-consumer.js.map +1 -0
  1257. package/dist/decisions/templates.d.ts +8 -0
  1258. package/dist/decisions/templates.d.ts.map +1 -0
  1259. package/dist/decisions/templates.js +34 -0
  1260. package/dist/decisions/templates.js.map +1 -0
  1261. package/dist/fetch-with-timeout.d.ts.map +1 -1
  1262. package/dist/fetch-with-timeout.js +19 -16
  1263. package/dist/fetch-with-timeout.js.map +1 -1
  1264. package/dist/fresh-seat-command.d.ts +18 -0
  1265. package/dist/fresh-seat-command.d.ts.map +1 -0
  1266. package/dist/fresh-seat-command.js +36 -0
  1267. package/dist/fresh-seat-command.js.map +1 -0
  1268. package/dist/front-door.d.ts +4 -0
  1269. package/dist/front-door.d.ts.map +1 -1
  1270. package/dist/front-door.js +8 -4
  1271. package/dist/front-door.js.map +1 -1
  1272. package/dist/host-bindings.d.ts +6 -0
  1273. package/dist/host-bindings.d.ts.map +1 -1
  1274. package/dist/host-bindings.js +23 -13
  1275. package/dist/host-bindings.js.map +1 -1
  1276. package/dist/index.d.ts +2 -0
  1277. package/dist/index.d.ts.map +1 -1
  1278. package/dist/index.js +4 -0
  1279. package/dist/index.js.map +1 -1
  1280. package/dist/lazy-program.d.ts.map +1 -1
  1281. package/dist/lazy-program.js +2 -0
  1282. package/dist/lazy-program.js.map +1 -1
  1283. package/dist/lib/bundle-check.d.ts.map +1 -1
  1284. package/dist/lib/bundle-check.js +13 -5
  1285. package/dist/lib/bundle-check.js.map +1 -1
  1286. package/dist/lib/run-on-host.d.ts +29 -0
  1287. package/dist/lib/run-on-host.d.ts.map +1 -0
  1288. package/dist/lib/run-on-host.js +69 -0
  1289. package/dist/lib/run-on-host.js.map +1 -0
  1290. package/dist/lib/seat-activity.d.ts +17 -0
  1291. package/dist/lib/seat-activity.d.ts.map +1 -0
  1292. package/dist/lib/seat-activity.js +29 -0
  1293. package/dist/lib/seat-activity.js.map +1 -0
  1294. package/dist/local-daemon-owner.d.ts +4 -0
  1295. package/dist/local-daemon-owner.d.ts.map +1 -1
  1296. package/dist/local-daemon-owner.js +1 -1
  1297. package/dist/local-daemon-owner.js.map +1 -1
  1298. package/dist/mcp-http.d.ts +42 -0
  1299. package/dist/mcp-http.d.ts.map +1 -0
  1300. package/dist/mcp-http.js +232 -0
  1301. package/dist/mcp-http.js.map +1 -0
  1302. package/dist/mcp-server.d.ts +30 -2
  1303. package/dist/mcp-server.d.ts.map +1 -1
  1304. package/dist/mcp-server.js +1126 -407
  1305. package/dist/mcp-server.js.map +1 -1
  1306. package/dist/rig-handle.d.ts +18 -1
  1307. package/dist/rig-handle.d.ts.map +1 -1
  1308. package/dist/rig-handle.js +19 -2
  1309. package/dist/rig-handle.js.map +1 -1
  1310. package/dist/seat-launch-additions-lines.d.ts +11 -0
  1311. package/dist/seat-launch-additions-lines.d.ts.map +1 -0
  1312. package/dist/seat-launch-additions-lines.js +14 -0
  1313. package/dist/seat-launch-additions-lines.js.map +1 -0
  1314. package/dist/terminal-window.d.ts +1 -1
  1315. package/dist/terminal-window.d.ts.map +1 -1
  1316. package/dist/terminal-window.js +50 -22
  1317. package/dist/terminal-window.js.map +1 -1
  1318. package/package.json +1 -1
  1319. package/tui/dist/attention/attention-model.d.ts +3 -1
  1320. package/tui/dist/attention/attention-model.d.ts.map +1 -1
  1321. package/tui/dist/attention/attention-model.js +68 -1
  1322. package/tui/dist/attention/attention-model.js.map +1 -1
  1323. package/tui/dist/commands/registry.d.ts.map +1 -1
  1324. package/tui/dist/commands/registry.js +2 -0
  1325. package/tui/dist/commands/registry.js.map +1 -1
  1326. package/tui/dist/config/config-model.d.ts.map +1 -1
  1327. package/tui/dist/config/config-model.js +3 -1
  1328. package/tui/dist/config/config-model.js.map +1 -1
  1329. package/tui/dist/connections/connections-model.d.ts +0 -5
  1330. package/tui/dist/connections/connections-model.d.ts.map +1 -1
  1331. package/tui/dist/connections/connections-model.js +1 -1
  1332. package/tui/dist/connections/connections-model.js.map +1 -1
  1333. package/tui/dist/daemon-client.d.ts +20 -0
  1334. package/tui/dist/daemon-client.d.ts.map +1 -1
  1335. package/tui/dist/daemon-client.js +27 -0
  1336. package/tui/dist/daemon-client.js.map +1 -1
  1337. package/tui/dist/hydrate.d.ts.map +1 -1
  1338. package/tui/dist/hydrate.js +22 -7
  1339. package/tui/dist/hydrate.js.map +1 -1
  1340. package/tui/dist/live.d.ts +10 -1
  1341. package/tui/dist/live.d.ts.map +1 -1
  1342. package/tui/dist/live.js +56 -7
  1343. package/tui/dist/live.js.map +1 -1
  1344. package/tui/dist/main.js +50 -3
  1345. package/tui/dist/main.js.map +1 -1
  1346. package/tui/dist/render.d.ts.map +1 -1
  1347. package/tui/dist/render.js +121 -10
  1348. package/tui/dist/render.js.map +1 -1
  1349. package/tui/dist/topology/fixture.js +1 -1
  1350. package/tui/dist/topology/fixture.js.map +1 -1
  1351. package/tui/dist/topology/glyphs.js +1 -1
  1352. package/tui/dist/topology/glyphs.js.map +1 -1
  1353. package/tui/dist/topology/graph-types.d.ts +1 -0
  1354. package/tui/dist/topology/graph-types.d.ts.map +1 -1
  1355. package/tui/dist/types.d.ts +78 -0
  1356. package/tui/dist/types.d.ts.map +1 -1
  1357. package/tui/dist/version-skew.d.ts +24 -0
  1358. package/tui/dist/version-skew.d.ts.map +1 -0
  1359. package/tui/dist/version-skew.js +37 -0
  1360. package/tui/dist/version-skew.js.map +1 -0
  1361. package/ui/dist/assets/{index-CVgod3Pm.js → index-Blg-p32B.js} +92 -92
  1362. package/ui/dist/index.html +1 -1
  1363. package/daemon/dist/domain/provider/subscription-moves.d.ts +0 -77
  1364. package/daemon/dist/domain/provider/subscription-moves.d.ts.map +0 -1
  1365. package/daemon/dist/domain/provider/subscription-moves.js +0 -140
  1366. package/daemon/dist/domain/provider/subscription-moves.js.map +0 -1
@@ -1,8 +1,12 @@
1
+ import { codexEnvelopeArgs } from "../domain/codex-rebuild-permissions.js";
1
2
  import { operationalLaunchArg } from "./kernel-authority.js";
2
3
  import nodePath from "node:path";
3
4
  import fs from "node:fs";
4
5
  import { createHash } from "node:crypto";
6
+ import { execFile } from "node:child_process";
7
+ import { createRequire } from "node:module";
5
8
  import os from "node:os";
9
+ import { isDeepStrictEqual } from "node:util";
6
10
  import { parse as parseToml } from "smol-toml";
7
11
  import { codexPostureArg } from "./yolo-mode.js";
8
12
  import { resolveConcreteHint } from "../domain/runtime-adapter.js";
@@ -12,13 +16,31 @@ import { assessNativeResumeProbe, buildCodexResumeCore, hasCodexUpdateHeader } f
12
16
  import { unknownDaemonSupportMessage } from "../domain/codex-daemon-support.js";
13
17
  import { CODEX_NETWORK_DEFAULT_OVERRIDE, codexNetworkDefaultArg } from "../domain/codex-network-default.js";
14
18
  import { resolveCodexGitAddDirs } from "../domain/codex-git-add-dirs.js";
15
- import { mergeManagedBlock } from "../domain/managed-blocks.js";
19
+ import { isPerSeatRoleGuidance, mergeManagedBlock, perSeatRoleSkipWarning } from "../domain/managed-blocks.js";
16
20
  import { excludeNewGeneratedFiles } from "../domain/generated-file-hygiene.js";
17
21
  import { codexQueueStateRoot, codexTeamWorkspaceArg } from "../domain/codex-team-workspace.js";
18
22
  import { shellQuote } from "./shell-quote.js";
19
- import { runSyncSite } from "../domain/sync-site-wrap.js";
23
+ import { execRuntimeProbe } from "./runtime-probe-exec.js";
20
24
  import { resolveReadinessTimeoutMs } from "../domain/readiness-timeout.js";
25
+ import { CODEX_CORE_MARKETPLACE, CODEX_CORE_PLUGIN, CODEX_CORE_PLUGIN_KEY, CODEX_MARKETPLACE_MANIFEST_PATH, codexCoreMarketplaceManifest, codexCorePluginEnablement, codexReadableConfigLayers, recordedMarketplaceSource, userLayerEnablesCorePlugin, } from "../domain/codex-core-plugin-install.js";
26
+ const defaultCodexCli = (args, env) => new Promise((resolve) => {
27
+ execFile("codex", args, { env, timeout: 120_000, maxBuffer: 4 * 1024 * 1024 }, (error, stdout, stderr) => {
28
+ const status = error ? (typeof error.code === "number" ? error.code : null) : 0;
29
+ // A spawn failure (ENOENT, EACCES) has no exit code and empty output: keep its message as the reason.
30
+ const err = String(stderr ?? "");
31
+ resolve({ status, stdout: String(stdout ?? ""), stderr: err.trim() || !error ? err : error.message });
32
+ });
33
+ });
34
+ // Codex's hook trust recipe (the key and hash Codex records for a trusted hook), kept in one script.
35
+ const codexHookTrust = createRequire(import.meta.url)("../../assets/plugins/openrig-core/hooks/scripts/codex-hook-trust.cjs");
21
36
  import { listNativeProcesses, observeCodexPaneProcess, observeCodexForkProcess, verifyPaneIdleShell } from "../domain/native-process-lineage.js";
37
+ import { recordSeatSkillWrite, seatPluginSkillsLossNote, seatProjectionComplete, seatSkillWriteRefusal } from "../domain/seat-skill-storage.js";
38
+ import { codexPluginContentHash, planOwnedCodexContentApproval, recordOwnedCodexApproval } from "../domain/codex-owned-plugin-trust.js";
39
+ // The managed resume check's poll window: a quick phase, then an extended one for a slow boot.
40
+ const RESUME_QUICK_ATTEMPTS = 6;
41
+ const RESUME_EXTENDED_ATTEMPTS = 24;
42
+ const RESUME_QUICK_SLEEP_MS = 200;
43
+ const RESUME_EXTENDED_SLEEP_MS = 500;
22
44
  /**
23
45
  * Codex runtime adapter. Projects resources to .agents/ targets (preserving
24
46
  * existing Codex filesystem contract) and delivers startup files.
@@ -30,6 +52,8 @@ export class CodexRuntimeAdapter {
30
52
  fs;
31
53
  listProcesses;
32
54
  readThreadIdByPid;
55
+ readResumeEvidence;
56
+ resumeProofWindowMs;
33
57
  readinessSettings;
34
58
  sleep;
35
59
  resolveHomeDirByPid;
@@ -59,7 +83,21 @@ export class CodexRuntimeAdapter {
59
83
  // (FR-A) to write config-layer [hooks] command entries that are cwd-independent and
60
84
  // version-matched to the running daemon (NOT ${PLUGIN_ROOT}, NOT a per-cwd copy).
61
85
  activityRelayPath;
86
+ // The vendored openrig-core plugin directory, resolved when the install step runs (vendoring happens at startup).
87
+ resolveCorePluginDir;
88
+ // Whether a node's resolved plugin selection includes openrig-core (the test that also gives it OPENRIG_SEAT_PROJECT_DIR).
89
+ resolveCorePluginSelected;
90
+ runCodexCli;
91
+ // One Codex config.toml per adapter: launches, the boot step and resume all write it (and Codex's install writes it too),
92
+ // so each of those runs its whole setup under this one lock, one after another.
93
+ configLock = Promise.resolve();
94
+ codexSystemConfigDir;
95
+ /** Build the Codex launch adapter with injectable filesystem, process, and CLI seams for isolated checks. */
62
96
  constructor(deps) {
97
+ this.resolveCorePluginDir = deps.resolveCorePluginDir;
98
+ this.resolveCorePluginSelected = deps.resolveCorePluginSelected;
99
+ this.runCodexCli = deps.runCodexCli ?? defaultCodexCli;
100
+ this.codexSystemConfigDir = deps.codexSystemConfigDir ?? "/etc/codex";
63
101
  this.tmux = deps.tmux;
64
102
  this.resolveManagedConfigSettings = deps.resolveManagedConfigSettings;
65
103
  this.resolveHooksEnabled = deps.resolveHooksEnabled;
@@ -80,6 +118,18 @@ export class CodexRuntimeAdapter {
80
118
  });
81
119
  this.readThreadIdByPid = deps.readThreadIdByPid ?? ((pid, identity) => identity === undefined
82
120
  ? this.readThreadIdFromLogs(pid) : threadIdResolver.resolveForkChild(pid, identity));
121
+ // A just-launched resume may log only inside its start second, so this reads like a fork child's ("by-process").
122
+ this.readResumeEvidence = deps.readResumeEvidence ?? (deps.readThreadIdByPid
123
+ ? async (pid, identity) => {
124
+ const threadId = (await deps.readThreadIdByPid(pid, identity))?.trim();
125
+ return threadId ? { threadId } : { reason: "no_log_row" };
126
+ }
127
+ : async (pid, identity) => {
128
+ let reason;
129
+ const threadId = (await threadIdResolver.resolveForkChild(pid, identity, (d) => { reason = d.reason; }))?.trim();
130
+ return threadId ? { threadId } : { reason: reason ?? "no_log_row" };
131
+ });
132
+ this.resumeProofWindowMs = deps.resumeProofWindowMs ?? RESUME_QUICK_ATTEMPTS * RESUME_QUICK_SLEEP_MS + RESUME_EXTENDED_ATTEMPTS * RESUME_EXTENDED_SLEEP_MS;
83
133
  this.readinessSettings = deps.readinessSettings;
84
134
  this.sleep = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
85
135
  this.verifyProfilePreflight = deps.verifyProfilePreflight
@@ -93,8 +143,17 @@ export class CodexRuntimeAdapter {
93
143
  * not block the launch.
94
144
  */
95
145
  async ensureManagedConfig() {
146
+ return this.withConfigLock(() => this.applyManagedConfig());
147
+ }
148
+ /** Run `task` after every earlier config setup on this adapter has finished, whatever its outcome. */
149
+ withConfigLock(task) {
150
+ const run = this.configLock.then(task, task);
151
+ this.configLock = run.catch(() => undefined);
152
+ return run;
153
+ }
154
+ async applyManagedConfig() {
96
155
  if (!this.resolveManagedConfigSettings)
97
- return;
156
+ return undefined;
98
157
  try {
99
158
  const { enabled, codexVersion } = await this.resolveManagedConfigSettings();
100
159
  this.ensureCodexFeatureFlag(enabled, { codexVersion });
@@ -102,11 +161,209 @@ export class CodexRuntimeAdapter {
102
161
  this.ensureCodexActivityHooks();
103
162
  else
104
163
  this.removeCodexActivityHooks();
164
+ return { hooksEnabled: enabled };
105
165
  }
106
166
  catch (err) {
107
167
  console.error(`[openrig] runtime setup warning: ${err.message}`);
168
+ return undefined;
108
169
  }
109
170
  }
171
+ /**
172
+ * Boot step, run after the plugin is vendored: install openrig-core into Codex only when hooks are enabled and some
173
+ * Codex seat's resolved selection includes it. A daemon whose Codex seats didn't select it never installs it.
174
+ */
175
+ async ensureCodexCorePluginAtBoot(anySeatSelected) {
176
+ if (!anySeatSelected || !this.resolveHooksEnabled)
177
+ return;
178
+ const resolveHooksEnabled = this.resolveHooksEnabled;
179
+ await this.withConfigLock(async () => {
180
+ try {
181
+ if (await resolveHooksEnabled())
182
+ await this.ensureCodexCorePlugin();
183
+ }
184
+ catch (err) {
185
+ console.error(`[openrig] runtime setup warning: ${err.message}`);
186
+ }
187
+ });
188
+ }
189
+ /**
190
+ * Install the vendored openrig-core plugin into Codex through Codex's own commands, so a seat that selected it gets its
191
+ * refocus and skills, trusting exact shipped hooks on first install and renewing proven owned content approvals. It runs only when the person's config
192
+ * doesn't disable the plugin (codexCorePluginEnablement), and only when the installed version differs from the vendored
193
+ * one. Codex owns its plugin cache; its immutable legacy trust baseline is never rewritten.
194
+ */
195
+ async ensureCodexCorePlugin() {
196
+ const report = (outcome, reason) => {
197
+ if (outcome !== "current")
198
+ console.error(`[openrig] codex core plugin ${outcome}: ${reason}`);
199
+ return { outcome, reason };
200
+ };
201
+ const pluginDir = this.resolveCorePluginDir?.();
202
+ if (!pluginDir)
203
+ return { outcome: "skipped", reason: "the openrig-core plugin isn't vendored" };
204
+ let version;
205
+ try {
206
+ version = JSON.parse(this.fs.readFile(nodePath.join(pluginDir, ".codex-plugin", "plugin.json"))).version;
207
+ }
208
+ catch {
209
+ return report("skipped", "the vendored plugin has no readable Codex manifest");
210
+ }
211
+ if (typeof version !== "string" || !/^[0-9A-Za-z._-]+$/.test(version))
212
+ return report("skipped", "the vendored plugin's Codex manifest has no usable version");
213
+ const shipped = nodePath.resolve(import.meta.dirname, "../../assets/plugins/openrig-core");
214
+ const ownFiles = [];
215
+ const collect = (dir, relative = "hooks") => {
216
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
217
+ const child = nodePath.join(relative, entry.name);
218
+ if (entry.isDirectory())
219
+ collect(nodePath.join(dir, entry.name), child);
220
+ else
221
+ ownFiles.push(child);
222
+ }
223
+ };
224
+ collect(nodePath.join(shipped, "hooks"));
225
+ ownFiles.push(".codex-plugin/plugin.json");
226
+ const matchesShipped = (dir) => ownFiles.every(relative => {
227
+ try {
228
+ return fs.readFileSync(nodePath.join(dir, relative)).equals(fs.readFileSync(nodePath.join(shipped, relative)));
229
+ }
230
+ catch {
231
+ return false;
232
+ }
233
+ });
234
+ if (!matchesShipped(pluginDir))
235
+ return report("skipped", "vendored hook files differ from this daemon's shipped plugin; existing choices are left alone");
236
+ // Installation retains the hook-file predicate; any approval requires the complete shipped tree.
237
+ const matchesShippedTree = (dir) => {
238
+ try {
239
+ return codexPluginContentHash(dir, true) === codexPluginContentHash(shipped, true);
240
+ }
241
+ catch {
242
+ return false;
243
+ }
244
+ };
245
+ const codexHome = nodePath.dirname(this.resolveCodexConfigPath());
246
+ const readLayers = () => codexReadableConfigLayers(codexHome, this.codexSystemConfigDir).map((layer) => {
247
+ if (!this.fs.exists(layer.path))
248
+ return { ...layer, state: "absent" };
249
+ try {
250
+ return { ...layer, state: "read", content: this.fs.readFile(layer.path) };
251
+ }
252
+ catch (error) {
253
+ return { ...layer, state: "unreadable", reason: error.message };
254
+ }
255
+ });
256
+ const layers = readLayers();
257
+ const enablement = codexCorePluginEnablement(layers);
258
+ if (enablement.decision !== "allow")
259
+ return report("skipped", enablement.reason);
260
+ const pluginsDir = nodePath.dirname(pluginDir);
261
+ const userLayer = layers.find((layer) => layer.name === "user config");
262
+ const userConfig = userLayer?.state === "read" ? userLayer.content : null;
263
+ const recorded = recordedMarketplaceSource(userConfig);
264
+ // Compared as real paths, so a marketplace recorded through a symlink to the plugins folder is the same source.
265
+ const canonical = (p) => { try {
266
+ return fs.realpathSync.native(nodePath.resolve(p));
267
+ }
268
+ catch {
269
+ return nodePath.resolve(p);
270
+ } };
271
+ if (recorded !== undefined && (recorded === null || canonical(recorded) !== canonical(pluginsDir))) {
272
+ return report("skipped", `a marketplace named ${CODEX_CORE_MARKETPLACE} is already configured with another source; it's left alone`);
273
+ }
274
+ // Current only when Codex would load it: the vendored version is in its store AND the user config still registers it
275
+ // (our marketplace, and an explicit enabled = true, which Codex's install writes). Codex loads only configured
276
+ // plugins, so a cache left behind after the entry or the marketplace was removed is installed again.
277
+ const cacheRoot = nodePath.join(codexHome, "plugins", "cache", CODEX_CORE_MARKETPLACE, CODEX_CORE_PLUGIN);
278
+ const cachedDir = nodePath.join(cacheRoot, version);
279
+ const cached = this.fs.exists(cachedDir);
280
+ // Codex's "continue without trusting" choice writes no state. An existing install/configuration may therefore be a
281
+ // decline even with no hooks.state entry. Absent grants still stay under native review. A proven owned grant may
282
+ // renew its content approval; an unrecorded skip of that exact owned upgrade cannot be distinguished from pending approval.
283
+ const firstInstall = !this.fs.exists(cacheRoot) && !layers.some(layer => layer.state === "read"
284
+ && Object.hasOwn((parseToml(layer.content).plugins ?? {}), CODEX_CORE_PLUGIN_KEY));
285
+ const renewContentApproval = (freshGrant = false) => {
286
+ const configPath = this.resolveCodexConfigPath();
287
+ const currentLayers = readLayers();
288
+ if (codexCorePluginEnablement(currentLayers).decision !== "allow")
289
+ return;
290
+ const before = this.fs.readFile(configPath);
291
+ const currentSource = recordedMarketplaceSource(before);
292
+ if (currentSource == null || canonical(currentSource) !== canonical(pluginsDir) || !userLayerEnablesCorePlugin(before))
293
+ return;
294
+ let content = before;
295
+ const planned = planOwnedCodexContentApproval({ configPath, content, layers: currentLayers, shipped, installed: cachedDir, freshGrant });
296
+ if (!planned)
297
+ return;
298
+ for (const [key, hash] of Object.entries(planned.hashes))
299
+ content = upsertCodexHookTrust(content, key, hash, "trusted_content_hash");
300
+ // The line writer must not alter examples in strings or duplicate quoted keys.
301
+ try {
302
+ const expected = parseToml(before);
303
+ for (const [key, hash] of Object.entries(planned.hashes))
304
+ expected.hooks.state[key].trusted_content_hash = hash;
305
+ if (!isDeepStrictEqual(parseToml(content), expected))
306
+ return;
307
+ }
308
+ catch {
309
+ return;
310
+ } // Leave native review and owner bytes intact for unsupported TOML spellings.
311
+ if (this.fs.readFile(configPath) !== before)
312
+ return; // A concurrent native choice wins.
313
+ if (content !== before)
314
+ this.fs.writeFile(configPath, content);
315
+ recordOwnedCodexApproval(configPath, planned.approval);
316
+ };
317
+ if (cached && recorded !== undefined && userLayerEnablesCorePlugin(userConfig)) {
318
+ renewContentApproval();
319
+ return report("current", `${CODEX_CORE_PLUGIN_KEY} ${version} is installed and registered`);
320
+ }
321
+ const manifestPath = nodePath.join(pluginsDir, CODEX_MARKETPLACE_MANIFEST_PATH);
322
+ const manifest = codexCoreMarketplaceManifest();
323
+ if (!this.fs.exists(manifestPath) || this.fs.readFile(manifestPath) !== manifest) {
324
+ this.fs.mkdirp(nodePath.dirname(manifestPath));
325
+ this.fs.writeFile(manifestPath, manifest);
326
+ }
327
+ const env = { ...process.env, CODEX_HOME: codexHome, ...(this.launchPath ? { PATH: this.launchPath } : {}) };
328
+ if (recorded === undefined) {
329
+ const added = await this.runCodexCli(["plugin", "marketplace", "add", pluginsDir], env);
330
+ if (added.status !== 0)
331
+ return report("skipped", `codex plugin marketplace add failed: ${(added.stderr || added.stdout).trim() || `exit ${added.status}`}`);
332
+ }
333
+ const installed = await this.runCodexCli(["plugin", "add", CODEX_CORE_PLUGIN_KEY], env);
334
+ if (installed.status !== 0)
335
+ return report("skipped", `codex plugin add failed: ${(installed.stderr || installed.stdout).trim() || `exit ${installed.status}`}`);
336
+ // First install grants declarations; Codex0.164 also requires full-bundle content approval. Existing declaration
337
+ // choices are never rewritten. No cache files or native baseline files are rewritten here.
338
+ let freshGrants = 0;
339
+ const grantLayers = readLayers();
340
+ if (firstInstall && codexCorePluginEnablement(grantLayers).decision === "allow" && matchesShippedTree(cachedDir)) {
341
+ let content = this.fs.readFile(this.resolveCodexConfigPath());
342
+ const hookManifest = JSON.parse(fs.readFileSync(nodePath.join(shipped, "hooks/codex.json"), "utf8"));
343
+ for (const [event, groups] of Object.entries(hookManifest.hooks)) {
344
+ groups.forEach((group, groupIndex) => group.hooks.forEach((handler, handlerIndex) => {
345
+ const { key, hash } = codexHookTrust.computeCodexHookTrust(event, {
346
+ ...handler, timeoutSec: handler.timeout, matcher: group.matcher,
347
+ keySource: `${CODEX_CORE_PLUGIN_KEY}:hooks/codex.json`, groupIndex, handlerIndex,
348
+ });
349
+ // Any existing choice in any readable layer/profile wins; never overwrite enabled=false or an old hash.
350
+ const hasChoice = (doc) => {
351
+ if (!doc || typeof doc !== "object")
352
+ return false;
353
+ const value = doc;
354
+ return Object.hasOwn(value.hooks?.state ?? {}, key) || Object.values(doc).some(hasChoice);
355
+ };
356
+ if (!hasChoice(parseToml(content)) && !grantLayers.some(layer => layer.state === "read" && hasChoice(parseToml(layer.content)))) {
357
+ content = upsertCodexHookTrust(content, key, hash);
358
+ freshGrants++;
359
+ }
360
+ }));
361
+ }
362
+ this.fs.writeFile(this.resolveCodexConfigPath(), content);
363
+ }
364
+ renewContentApproval(freshGrants === 6);
365
+ return report("installed", `${CODEX_CORE_PLUGIN_KEY} ${version} through Codex's own install (${enablement.reason})`);
366
+ }
110
367
  /**
111
368
  * Boot step for a daemon without Codex seats: when runtime.codex.hooks_enabled is false,
112
369
  * strip OpenRig's managed hooks block, as every boot did before. Removal writes only when
@@ -247,7 +504,7 @@ export class CodexRuntimeAdapter {
247
504
  }
248
505
  async listInstalled(binding) {
249
506
  const results = [];
250
- const skillsDir = nodePath.join(binding.cwd, ".agents", "skills");
507
+ const skillsDir = binding.seatSkillsRoot ?? nodePath.join(binding.cwd, ".agents", "skills");
251
508
  if (this.fs.exists(skillsDir) && this.fs.listFiles) {
252
509
  for (const file of this.fs.listFiles(skillsDir)) {
253
510
  results.push({ effectiveId: file, category: "skill", installedPath: nodePath.join(skillsDir, file) });
@@ -266,7 +523,7 @@ export class CodexRuntimeAdapter {
266
523
  continue;
267
524
  }
268
525
  try {
269
- const didProject = this.projectEntry(entry, binding.cwd, warnings);
526
+ const didProject = this.projectEntry(entry, binding.cwd, warnings, binding.seatSkillsRoot, binding.seatSkillsRefused);
270
527
  if (didProject) {
271
528
  projected.push(entry.effectiveId);
272
529
  }
@@ -293,7 +550,7 @@ export class CodexRuntimeAdapter {
293
550
  for (const file of files) {
294
551
  try {
295
552
  const content = this.fs.readFile(file.absolutePath);
296
- const hint = file.deliveryHint === "auto" ? this.detectDeliveryHint(file.path, content) : file.deliveryHint;
553
+ const hint = file.deliveryHint === "auto" ? this.detectDeliveryHint(file.path, content, file.orientation) : file.deliveryHint;
297
554
  switch (hint) {
298
555
  case "guidance_merge": {
299
556
  const targetPath = nodePath.join(binding.cwd, "AGENTS.md");
@@ -303,9 +560,18 @@ export class CodexRuntimeAdapter {
303
560
  break;
304
561
  }
305
562
  case "skill_install": {
306
- const targetDir = nodePath.join(binding.cwd, ".agents", "skills", nodePath.basename(nodePath.dirname(file.absolutePath)));
563
+ const targetDir = nodePath.join(binding.seatSkillsRoot ?? nodePath.join(binding.cwd, ".agents", "skills"), nodePath.basename(nodePath.dirname(file.absolutePath)));
564
+ const skillTarget = nodePath.join(targetDir, nodePath.basename(file.path));
565
+ // OPR.0.7.0.13: never write through a link out of the seat's storage.
566
+ const refusal = binding.seatSkillsRoot ? binding.seatSkillsRefused ?? seatSkillWriteRefusal(binding.seatSkillsRoot, skillTarget) : undefined;
567
+ if (refusal) {
568
+ warnings.push(`skill_install: ${refusal}`);
569
+ continue;
570
+ }
307
571
  this.fs.mkdirp(targetDir);
308
- this.fs.writeFile(nodePath.join(targetDir, nodePath.basename(file.path)), content);
572
+ this.fs.writeFile(skillTarget, content);
573
+ if (binding.seatSkillsRoot)
574
+ recordSeatSkillWrite(binding.seatSkillsRoot, skillTarget, file.absolutePath, content);
309
575
  break;
310
576
  }
311
577
  case "send_text": {
@@ -339,10 +605,11 @@ export class CodexRuntimeAdapter {
339
605
  return { ok: false, error: "resumeToken and forkSource are mutually exclusive — pick one" };
340
606
  }
341
607
  const updatePrompt = { handled: false };
342
- const prepared = await this.prepareLaunch(binding, opts.name);
608
+ // Only a launch that starts a conversation may install the core plugin; a resume never does.
609
+ const prepared = await this.prepareLaunch(binding, opts.name, undefined, { installCorePlugin: !opts.resumeToken });
343
610
  if (!prepared.ok)
344
611
  return prepared;
345
- const { modelArg, effortArg, appliedLaunch, postureArg, queueStateDirArg, daemonArg, networkArg } = prepared;
612
+ const { modelArg, effortArg, appliedLaunch, postureArg, queueStateDirArg, daemonArg, networkArg, suppressAutoAddDirs } = prepared;
346
613
  // Fork branch: `codex fork <parent_thread_id>`. Captures the NEW thread id
347
614
  // post-fork. Parent thread id is NOT persisted onto the new seat record
348
615
  // (identity-honesty bedrock).
@@ -396,9 +663,9 @@ export class CodexRuntimeAdapter {
396
663
  // -s danger-full-access (overrides even a named profile); otherwise the named profile, or
397
664
  // OpenRig's explicit -s workspace-write floor flag.
398
665
  // Issue #121: only the fresh launch adds git metadata dirs; resume and fork never did.
399
- const gitDirArg = opts.resumeToken
666
+ const gitDirArg = opts.resumeToken || binding.codexRebuildPermissions
400
667
  ? ""
401
- : (await this.resolveGitAddDirs(binding.cwd)).map((dir) => ` --add-dir ${shellQuote(dir)}`).join("");
668
+ : suppressAutoAddDirs ? "" : (await this.resolveGitAddDirs(binding.cwd)).map((dir) => ` --add-dir ${shellQuote(dir)}`).join("");
402
669
  const cmd = opts.resumeToken
403
670
  // 0.5.2-07 A2-3: the pod-aware RESUME path threads the SPEC model too (reverted before — the
404
671
  // grounding map assumed codex parity with the claude adapter, but only fresh emitted -m).
@@ -415,7 +682,8 @@ export class CodexRuntimeAdapter {
415
682
  const verification = await this.verifyResumeLaunch(binding.tmuxSession, updatePrompt, { resumeToken: opts.resumeToken });
416
683
  if (!verification.ok)
417
684
  return verification;
418
- return { ok: true, resumeToken: opts.resumeToken, resumeType: "codex_id", appliedLaunch };
685
+ return { ok: true, resumeToken: opts.resumeToken, resumeType: "codex_id", appliedLaunch,
686
+ ...(verification.resumedProcess ? { resumedProcess: verification.resumedProcess } : {}) };
419
687
  }
420
688
  const threadId = await this.captureFreshThreadId(binding, updatePrompt);
421
689
  if (updatePrompt.failure)
@@ -430,7 +698,8 @@ export class CodexRuntimeAdapter {
430
698
  async buildResumeCommand(binding, opts) {
431
699
  if (!binding.tmuxSession)
432
700
  return { ok: false, error: "No tmux session bound — cannot build a Codex resume command" };
433
- const prepared = await this.prepareLaunch(binding, opts.name, opts.running);
701
+ // Building a resume command (the in-place restart's) never installs the core plugin.
702
+ const prepared = await this.prepareLaunch(binding, opts.name, opts.running, { installCorePlugin: false });
434
703
  if (!prepared.ok)
435
704
  return prepared;
436
705
  const core = this.resumeCore(prepared, opts.resumeToken, binding);
@@ -455,21 +724,39 @@ export class CodexRuntimeAdapter {
455
724
  }
456
725
  /** Launch flags shared by fresh, fork and resume, decided once per launch. With `running`, the probed and
457
726
  * prepared parts come from the running Codex instead, and no Codex process is started to decide them. */
458
- async prepareLaunch(binding, name, running) {
459
- await this.ensureManagedConfig();
727
+ async prepareLaunch(binding, name, running, opts) {
728
+ // The config write and, for a seat that selected openrig-core, its install run as one step under the config lock, so
729
+ // concurrent launches never interleave them. An unselected seat's launch never installs.
730
+ await this.withConfigLock(async () => {
731
+ const managed = await this.applyManagedConfig();
732
+ if (opts.installCorePlugin && managed?.hooksEnabled && this.resolveCorePluginSelected?.(binding.nodeId)) {
733
+ try {
734
+ await this.ensureCodexCorePlugin();
735
+ }
736
+ catch (err) {
737
+ console.error(`[openrig] runtime setup warning: ${err.message}`);
738
+ }
739
+ }
740
+ });
460
741
  const model = binding.model?.trim();
461
742
  const modelArg = model ? ` -m ${shellQuote(model)}` : "";
462
743
  const effort = binding.effort?.trim();
463
744
  const effortArg = effort ? ` -c ${shellQuote(`model_reasoning_effort="${effort}"`)}` : "";
464
745
  const profile = binding.codexConfigProfile?.trim();
465
746
  const profileArg = profile ? ` -p ${shellQuote(profile)}` : "";
466
- const posture = codexPostureArg(profileArg, process.env, binding.launchPosture);
467
- const appliedLaunch = observeCodexSandbox(posture);
747
+ const posture = binding.codexRebuildPermissions
748
+ ? profileArg + codexEnvelopeArgs(binding.codexRebuildPermissions)
749
+ : codexPostureArg(profileArg, process.env, binding.launchPosture);
750
+ const appliedLaunch = binding.codexRebuildPermissions
751
+ ? { runtime: "codex", axis: "sandbox", state: "observed", value: binding.codexRebuildPermissions.sandboxPolicy.type,
752
+ reason: "emitted_launch_arguments", ...(binding.codexRebuildPermissions.approvalPolicy === "never" ? { approvalPolicy: "never" } : {}) }
753
+ : observeCodexSandbox(posture);
468
754
  const postureArg = posture + operationalLaunchArg(this.runtime, binding);
469
755
  if (running) {
470
756
  // The running Codex already loaded its profile; drift in -p is the caller's to compare.
471
757
  return { ok: true, model, modelArg, effort, effortArg, profile, appliedLaunch, postureArg,
472
758
  queueStateDirArg: running.addDirs.map((dir) => ` --add-dir ${shellQuote(dir)}`).join(""),
759
+ suppressAutoAddDirs: false,
473
760
  daemonOptOut: running.daemonOptOut, daemonArg: running.daemonOptOut ? " --no-daemon" : "",
474
761
  networkArg: running.networkOverride ? ` -c ${shellQuote(CODEX_NETWORK_DEFAULT_OVERRIDE)}` : "" };
475
762
  }
@@ -486,10 +773,15 @@ export class CodexRuntimeAdapter {
486
773
  };
487
774
  }
488
775
  }
489
- const teamWorkspaceArg = binding.teamPermissionDefault && !profile
776
+ // Codex rejects writable --add-dir roots under a read-only sandbox. Only
777
+ // suppress OpenRig's generated roots when later project layers cannot make it writable.
778
+ const suppressAutoAddDirs = Boolean(!binding.codexRebuildPermissions && profile
779
+ && posture === profileArg && this.profileRemainsReadOnly(profile, binding.cwd));
780
+ const teamWorkspaceArg = !binding.codexRebuildPermissions && binding.teamPermissionDefault && !profile
490
781
  && appliedLaunch.state === "observed" && appliedLaunch.value === "workspace-write"
491
782
  ? codexTeamWorkspaceArg(this.prepareTeamWorkspace, name) : "";
492
- const queueStateDirArg = teamWorkspaceArg || this.buildQueueStateAddDirArg(name);
783
+ const queueStateDirArg = binding.codexRebuildPermissions || suppressAutoAddDirs
784
+ ? "" : teamWorkspaceArg || this.buildQueueStateAddDirArg(name);
493
785
  // #69: one daemon-support decision for this launch, for the Codex the seat pane runs
494
786
  // (its cwd, the launch PATH), applied to fresh, fork and resume.
495
787
  const daemonSupport = this.detectDaemonSupport ? await this.detectDaemonSupport(binding.cwd) : undefined;
@@ -499,10 +791,11 @@ export class CodexRuntimeAdapter {
499
791
  const daemonOptOut = daemonSupport?.kind === "supported";
500
792
  const daemonArg = daemonOptOut ? " --no-daemon" : "";
501
793
  // #275: on the plain floor, network access unless Codex reports an opt-out or policy.
502
- const networkArg = await codexNetworkDefaultArg(this.readNetworkDefault, appliedLaunch, binding.cwd, name);
794
+ const networkArg = binding.codexRebuildPermissions ? ""
795
+ : await codexNetworkDefaultArg(this.readNetworkDefault, appliedLaunch, binding.cwd, name);
503
796
  // The launch facts keep the probed daemon choice, so a printed recovery command can repeat it; no probe, no fact.
504
797
  const launchFacts = daemonSupport ? { ...appliedLaunch, daemonOptOut } : appliedLaunch;
505
- return { ok: true, model, modelArg, effort, effortArg, profile, appliedLaunch: launchFacts, postureArg, queueStateDirArg, daemonOptOut, daemonArg, networkArg };
798
+ return { ok: true, model, modelArg, effort, effortArg, profile, appliedLaunch: launchFacts, postureArg, queueStateDirArg, suppressAutoAddDirs, daemonOptOut, daemonArg, networkArg };
506
799
  }
507
800
  resumeCore(prepared, resumeToken, binding) {
508
801
  const { profile, queueStateDirArg, model, postureArg, networkArg, daemonOptOut, effort } = prepared;
@@ -519,6 +812,81 @@ export class CodexRuntimeAdapter {
519
812
  const root = codexQueueStateRoot(sessionName, sharedDocsRoot);
520
813
  return root ? ` --add-dir ${shellQuote(root)}` : "";
521
814
  }
815
+ /**
816
+ * Return true only when visible config proves a read-only profile within Codex's default project root.
817
+ * Unknown markers or unreadable layers retain the generated roots for native launch handling.
818
+ */
819
+ profileRemainsReadOnly(profile, cwd) {
820
+ const root = this.codexHome ?? nodePath.join(this.fs.homedir ?? os.homedir(), ".codex");
821
+ const path = nodePath.join(root, `${profile}.config.toml`);
822
+ const userPath = nodePath.join(root, "config.toml");
823
+ if (!this.fs.exists(path))
824
+ return false;
825
+ try {
826
+ const value = parseToml(this.fs.readFile(path));
827
+ if (value.sandbox_mode !== "read-only" || value.default_permissions !== undefined || !nodePath.isAbsolute(cwd))
828
+ return false;
829
+ // A custom marker set may change the project boundary; leave the prior
830
+ // generated roots in place unless this default-marker scan proves it.
831
+ if (value.project_root_markers !== undefined)
832
+ return false;
833
+ // Codex merges fixed system/user/legacy-managed layers before choosing
834
+ // project markers. Any visible override or unreadable layer keeps roots.
835
+ for (const fixedPath of [
836
+ nodePath.join(this.codexSystemConfigDir, "config.toml"),
837
+ userPath,
838
+ nodePath.join(this.codexSystemConfigDir, "managed_config.toml"),
839
+ ]) {
840
+ if (!this.fs.exists(fixedPath))
841
+ continue;
842
+ const fixed = parseToml(this.fs.readFile(fixedPath));
843
+ if (fixed.default_permissions !== undefined || fixed.project_root_markers !== undefined)
844
+ return false;
845
+ }
846
+ // Codex's default root is the nearest .git file or a .git directory
847
+ // containing HEAD. When none exists, Codex uses cwd itself.
848
+ let projectRoot = nodePath.normalize(cwd);
849
+ for (let dir = projectRoot;;) {
850
+ const marker = nodePath.join(dir, ".git");
851
+ if (this.fs.exists(marker)) {
852
+ if (!this.fs.statMode)
853
+ return false;
854
+ const kind = this.fs.statMode(marker) & fs.constants.S_IFMT;
855
+ // statMode may expose permission bits alone; that cannot prove a file.
856
+ if (kind !== fs.constants.S_IFREG && kind !== fs.constants.S_IFDIR)
857
+ return false;
858
+ if (kind === fs.constants.S_IFREG || this.fs.exists(nodePath.join(marker, "HEAD"))) {
859
+ projectRoot = dir;
860
+ break;
861
+ }
862
+ }
863
+ const parent = nodePath.dirname(dir);
864
+ if (parent === dir)
865
+ break;
866
+ dir = parent;
867
+ }
868
+ // Trust can exclude a closer project file, leaving a writable ancestor active.
869
+ // Keep roots if any visible applicable ancestor could make the launch writable.
870
+ for (let dir = nodePath.normalize(cwd);;) {
871
+ const projectPath = nodePath.join(dir, ".codex", "config.toml");
872
+ // At the home ancestor this is the user config, which loaded before the profile.
873
+ if (projectPath !== userPath && this.fs.exists(projectPath)) {
874
+ const project = parseToml(this.fs.readFile(projectPath));
875
+ if (project.default_permissions !== undefined)
876
+ return false;
877
+ if (project.sandbox_mode !== undefined && project.sandbox_mode !== "read-only")
878
+ return false;
879
+ }
880
+ if (dir === projectRoot)
881
+ return true;
882
+ dir = nodePath.dirname(dir);
883
+ }
884
+ }
885
+ catch {
886
+ // Preflight owns profile errors; unreadable user or project state keeps prior roots.
887
+ return false;
888
+ }
889
+ }
522
890
  async captureProbeScreen(target) {
523
891
  // Current readiness belongs to the rendered screen. Scrollback may retain
524
892
  // dismissed prompts, loading headers, or refusals from earlier attempts.
@@ -645,14 +1013,14 @@ export class CodexRuntimeAdapter {
645
1013
  ensureManagedBootstrap(binding) {
646
1014
  this.provisionWorkspaceTrust(binding.cwd ?? null);
647
1015
  }
648
- projectEntry(entry, cwd, warnings) {
1016
+ projectEntry(entry, cwd, warnings, seatSkillsRoot, seatSkillsRefused) {
649
1017
  if (entry.category === "runtime_resource" && this.applyRuntimeResource(entry)) {
650
1018
  return true;
651
1019
  }
652
1020
  if (entry.category === "guidance" && entry.mergeStrategy === "managed_block") {
653
1021
  const targetPath = nodePath.join(cwd, "AGENTS.md");
654
1022
  const content = this.fs.readFile(entry.absolutePath);
655
- return this.mergeGuidance(targetPath, entry.effectiveId, content, warnings);
1023
+ return this.mergeGuidance(targetPath, entry.effectiveId, content, warnings, entry.absolutePath);
656
1024
  }
657
1025
  // HG-1.3 plugin runtime applicability filter (per DESIGN.md §5.1):
658
1026
  // - explicit pluginType="claude" → skip Codex projection
@@ -661,9 +1029,23 @@ export class CodexRuntimeAdapter {
661
1029
  if (entry.category === "plugin" && !this.pluginAppliesToCodex(entry)) {
662
1030
  return false;
663
1031
  }
664
- const targetDir = this.resolveTargetDir(entry, cwd);
1032
+ const targetDir = this.resolveTargetDir(entry, cwd, seatSkillsRoot);
665
1033
  if (!targetDir)
666
1034
  return true;
1035
+ // OPR.0.7.0.13: never write through a link out of the seat's storage.
1036
+ // A refused seat storage refuses every skill meant for it, named; otherwise each destination is checked.
1037
+ const refusal = seatSkillsRoot && entry.category === "skill"
1038
+ ? seatSkillsRefused ?? seatSkillWriteRefusal(seatSkillsRoot, nodePath.join(targetDir, "SKILL.md")) : undefined;
1039
+ if (refusal) {
1040
+ warnings.push(`${entry.effectiveId}: ${refusal}`);
1041
+ return false;
1042
+ }
1043
+ // OPR.0.7.0.13: destinations refused below (a link on the way); an entry with any is reported incomplete, not projected.
1044
+ const notProjected = [];
1045
+ // OPR.0.7.0.13: a skill written to the seat's own storage is recorded, so cleanup and restore know it as OpenRig's.
1046
+ const record = seatSkillsRoot && entry.category === "skill"
1047
+ ? (dest, src, content) => recordSeatSkillWrite(seatSkillsRoot, dest, src, content)
1048
+ : () => { };
667
1049
  this.fs.mkdirp(targetDir);
668
1050
  let isDir = false;
669
1051
  if (this.fs.listFiles) {
@@ -679,10 +1061,26 @@ export class CodexRuntimeAdapter {
679
1061
  const createdFiles = [];
680
1062
  try {
681
1063
  if (isDir && this.fs.listFiles) {
1064
+ let skippedPluginSkills = 0;
682
1065
  for (const file of this.fs.listFiles(entry.absolutePath)) {
1066
+ // OPR.0.7.0.13: a seat with its own storage gets a selected plugin's bundled skills there, through its loadout, so
1067
+ // the project's copy of the plugin leaves its skills out; its manifest, hooks and settings are copied as before.
1068
+ if (seatSkillsRoot && entry.category === "plugin" && file.split(/[\\/]/)[0] === "skills") {
1069
+ skippedPluginSkills++;
1070
+ continue;
1071
+ }
683
1072
  const src = nodePath.join(entry.absolutePath, file);
684
1073
  const dest = nodePath.join(targetDir, file);
1074
+ // OPR.0.7.0.13: each destination in a seat's storage is checked before it's recorded, written or re-moded, so a
1075
+ // helper folder or file found to be a link is not written through (the identical-content, mode-only branch included).
1076
+ const refusedDest = seatSkillsRoot && entry.category === "skill" ? seatSkillWriteRefusal(seatSkillsRoot, dest) : undefined;
1077
+ if (refusedDest) {
1078
+ warnings.push(`${entry.effectiveId}: ${refusedDest}`);
1079
+ notProjected.push(dest);
1080
+ continue;
1081
+ }
685
1082
  const content = this.fs.readFile(src);
1083
+ record(dest, src, content);
686
1084
  // Reconcile mode even when the content write is skipped: a byte-identical dest
687
1085
  // projected earlier may still carry the wrong (default) mode.
688
1086
  if (this.fs.exists(dest) && hashContent(content) === hashContent(this.fs.readFile(dest))) {
@@ -696,10 +1094,19 @@ export class CodexRuntimeAdapter {
696
1094
  createdFiles.push(dest);
697
1095
  this.preserveMode(src, dest);
698
1096
  }
1097
+ const pluginLoss = seatSkillsRefused ? seatPluginSkillsLossNote(entry.effectiveId, skippedPluginSkills, seatSkillsRefused) : undefined;
1098
+ if (pluginLoss)
1099
+ warnings.push(pluginLoss);
699
1100
  }
700
1101
  else {
701
- const content = this.fs.readFile(entry.absolutePath);
702
1102
  const destFile = nodePath.join(targetDir, nodePath.basename(entry.absolutePath));
1103
+ const refusedFile = seatSkillsRoot && entry.category === "skill" ? seatSkillWriteRefusal(seatSkillsRoot, destFile) : undefined;
1104
+ if (refusedFile) {
1105
+ warnings.push(`${entry.effectiveId}: ${refusedFile}`);
1106
+ return false;
1107
+ }
1108
+ const content = this.fs.readFile(entry.absolutePath);
1109
+ record(destFile, entry.absolutePath, content);
703
1110
  if (this.fs.exists(destFile) && hashContent(content) === hashContent(this.fs.readFile(destFile))) {
704
1111
  this.preserveMode(entry.absolutePath, destFile);
705
1112
  return true;
@@ -715,7 +1122,7 @@ export class CodexRuntimeAdapter {
715
1122
  if (entry.category === "plugin")
716
1123
  warnings.push(...excludeNewGeneratedFiles(cwd, createdFiles));
717
1124
  }
718
- return true;
1125
+ return seatProjectionComplete(entry.effectiveId, notProjected, warnings);
719
1126
  }
720
1127
  /**
721
1128
  * Reapply the source file's permission bits to the projected dest. Plain
@@ -740,9 +1147,9 @@ export class CodexRuntimeAdapter {
740
1147
  // auto: detect via .codex-plugin/plugin.json presence in the source tree
741
1148
  return this.fs.exists(nodePath.join(entry.absolutePath, ".codex-plugin", "plugin.json"));
742
1149
  }
743
- resolveTargetDir(entry, cwd) {
1150
+ resolveTargetDir(entry, cwd, seatSkillsRoot) {
744
1151
  switch (entry.category) {
745
- case "skill": return nodePath.join(cwd, ".agents", "skills", entry.effectiveId);
1152
+ case "skill": return nodePath.join(seatSkillsRoot ?? nodePath.join(cwd, ".agents", "skills"), entry.effectiveId);
746
1153
  case "guidance": return null; // handled via merge
747
1154
  case "subagent": return nodePath.join(cwd, ".agents"); // .agents/{id}.yaml per preserved contract
748
1155
  case "plugin": return nodePath.join(cwd, ".codex", "plugins", entry.effectiveId);
@@ -775,14 +1182,17 @@ export class CodexRuntimeAdapter {
775
1182
  * propagate the skip signal so ProjectionResult and StartupDeliveryResult
776
1183
  * report honest counts.
777
1184
  */
778
- mergeGuidance(targetPath, blockId, content, warnings) {
1185
+ mergeGuidance(targetPath, blockId, content, warnings, sourcePath) {
779
1186
  // Mirrors Claude Code adapter: the `rig-role` managed block collides across
780
1187
  // pod-mates because the regenerator pairs (target-file × spec) without
781
1188
  // seat correlation. Per-seat role content is delivered through `send_text`
782
1189
  // startup instead. Refuse the merge loudly; silent skip would mask the
783
1190
  // collision. See ADR-0006.
784
- if (blockId === "rig-role") {
785
- console.log(`[openrig] skip: effectiveId is rig-role, per-seat delivery via send_text path required (target=${targetPath})`);
1191
+ if (isPerSeatRoleGuidance(blockId, sourcePath)) {
1192
+ console.log(`[openrig] skip: effectiveId is ${blockId}, a seat's own role; per-seat delivery via send_text path required (target=${targetPath})`);
1193
+ const warning = perSeatRoleSkipWarning(blockId, targetPath);
1194
+ if (warning)
1195
+ warnings.push(warning);
786
1196
  return false;
787
1197
  }
788
1198
  mergeManagedBlock(this.fs, targetPath, blockId, content, {
@@ -791,8 +1201,8 @@ export class CodexRuntimeAdapter {
791
1201
  });
792
1202
  return true;
793
1203
  }
794
- detectDeliveryHint(path, content) {
795
- return resolveConcreteHint(path, content);
1204
+ detectDeliveryHint(path, content, orientation) {
1205
+ return resolveConcreteHint(path, content, orientation);
796
1206
  }
797
1207
  provisionWorkspaceTrust(cwd) {
798
1208
  if (!cwd)
@@ -904,11 +1314,88 @@ export class CodexRuntimeAdapter {
904
1314
  }
905
1315
  return undefined;
906
1316
  }
1317
+ /**
1318
+ * #1524 (b): whether the pane's resumed Codex process is proven to hold `resumeToken`. Codex's own records for that
1319
+ * exact process (pid and start time) must name the token, read before `deadline`, with the same process observed
1320
+ * before and after the read, so a reused pid or a replaced pane proves nothing. A different conversation is a
1321
+ * mismatch; anything unread is unknown, never a mismatch or a match.
1322
+ */
1323
+ /** #1524 (b): `work` under the resume check's deadline. It isn't started at or after the deadline, it races the
1324
+ * deadline, and a value that arrives at or after it is not used (null). It cancels nothing: work already started
1325
+ * runs to its end (an async step may go on to its next read, and synchronous work such as the default record
1326
+ * reader's SQLite queries can't be interrupted at all), so the check can return after the deadline. */
1327
+ async beforeResumeDeadline(work, deadline) {
1328
+ if (Date.now() >= deadline)
1329
+ return null;
1330
+ const value = await this.withinDeadline(Promise.resolve().then(work), deadline);
1331
+ return Date.now() >= deadline ? null : value;
1332
+ }
1333
+ async proveResumedProcess(tmuxSession, resumeToken, deadline) {
1334
+ if (!this.tmux.getPanePid)
1335
+ return { kind: "unknown", reason: "the pane's process can't be read" };
1336
+ if (Date.now() >= deadline)
1337
+ return { kind: "unknown", reason: "the resume window ended", windowEnded: true };
1338
+ const input = { target: tmuxSession, tmux: this.tmux,
1339
+ listProcesses: this.listProcesses, expectedToken: resumeToken, requireResume: true };
1340
+ const before = await this.beforeResumeDeadline(() => observeCodexPaneProcess(input), deadline);
1341
+ if (!before && Date.now() >= deadline)
1342
+ return { kind: "unknown", reason: "the resume window ended", windowEnded: true };
1343
+ if (!before)
1344
+ return { kind: "unknown", reason: "no single Codex process resuming this conversation was observed in the pane" };
1345
+ if (lstartToMinTs(before.process.startedAt) === undefined) {
1346
+ return { kind: "unknown", reason: "the resumed Codex process has no readable start time" };
1347
+ }
1348
+ let evidence;
1349
+ try {
1350
+ evidence = await this.beforeResumeDeadline(() => this.readResumeEvidence(before.process.pid, before.process.startedAt), deadline);
1351
+ }
1352
+ catch (err) {
1353
+ return { kind: "unknown", reason: `Codex's records couldn't be read (${err.message})` };
1354
+ }
1355
+ if (!evidence)
1356
+ return { kind: "unknown", reason: "reading Codex's records didn't finish inside the resume window", windowEnded: true };
1357
+ const after = await this.beforeResumeDeadline(() => observeCodexPaneProcess(input), deadline);
1358
+ if (!after && Date.now() >= deadline)
1359
+ return { kind: "unknown", reason: "the resume window ended", windowEnded: true };
1360
+ if (after?.fingerprint !== before.fingerprint) {
1361
+ return { kind: "unknown", reason: "the resumed Codex process changed during the check" };
1362
+ }
1363
+ if (!evidence.threadId)
1364
+ return { kind: "unknown", reason: evidence.reason ?? "no_log_row" };
1365
+ // A decision is only as current as its last observation: at or past the deadline it decides nothing.
1366
+ if (Date.now() >= deadline)
1367
+ return { kind: "unknown", reason: "the resume window ended", windowEnded: true };
1368
+ return evidence.threadId === resumeToken
1369
+ ? { kind: "match", process: { pid: before.process.pid, startedAt: before.process.startedAt } }
1370
+ : { kind: "mismatch", threadId: evidence.threadId };
1371
+ }
907
1372
  async verifyResumeLaunch(tmuxSession, updatePrompt, opts) {
908
- const quickAttempts = 6;
909
- const extendedAttempts = 24;
910
- const quickSleepMs = 200;
911
- const extendedSleepMs = 500;
1373
+ const quickAttempts = RESUME_QUICK_ATTEMPTS;
1374
+ const extendedAttempts = RESUME_EXTENDED_ATTEMPTS;
1375
+ const quickSleepMs = RESUME_QUICK_SLEEP_MS;
1376
+ const extendedSleepMs = RESUME_EXTENDED_SLEEP_MS;
1377
+ // #1524 (b): a managed resume of a known conversation is proven from Codex's own records, inside one wall-clock
1378
+ // deadline for the whole existing window. Why it is still unproven, for the attention text at the bound.
1379
+ // With a conversation to prove, the deadline prevents acceptance of late wrapped poll or proof values, or of a late
1380
+ // match or mismatch. Ordinary poll sleeps request at most the remaining time. Work already started is not cancelled,
1381
+ // and scheduling or synchronous work can delay return. The existing update-prompt helper has its own reads,
1382
+ // reporting and guarded one-key behaviour outside this deadline.
1383
+ const resumeToken = opts?.resumeToken;
1384
+ const deadline = Date.now() + this.resumeProofWindowMs;
1385
+ let unproven = null;
1386
+ // Ordinary poll sleeps request at most the remaining time; scheduling can delay their completion. False once no time
1387
+ // is left.
1388
+ const pause = async (ms) => {
1389
+ if (!resumeToken) {
1390
+ await this.sleep(ms);
1391
+ return true;
1392
+ }
1393
+ const left = deadline - Date.now();
1394
+ if (left <= 0)
1395
+ return false;
1396
+ await this.sleep(Math.min(ms, left));
1397
+ return Date.now() < deadline;
1398
+ };
912
1399
  // OPR.0.3.3.21 (FR-2): process-alive is NOT proof of a restored
913
1400
  // conversation. verifyResumeLaunch must NOT return ok:true unless the probe
914
1401
  // proves `resumed`. Unresolved operator-action gates (update/trust/model)
@@ -939,8 +1426,21 @@ export class CodexRuntimeAdapter {
939
1426
  if (attempt >= quickAttempts && (sawRealGate || lastUnresolved?.code !== "awaiting_runtime")) {
940
1427
  break;
941
1428
  }
942
- const paneCommand = await this.tmux.getPaneCommand(tmuxSession);
943
- const paneContent = await this.captureProbeScreen(tmuxSession);
1429
+ // #1524 (b): with a conversation to prove, no capture starts at or after the deadline, and one that ends after it
1430
+ // isn't used (a capture already started isn't cancelled: its second read may still run, its value discarded).
1431
+ let paneCommand;
1432
+ let paneContent;
1433
+ if (resumeToken) {
1434
+ const captured = await this.beforeResumeDeadline(async () => ({ command: await this.tmux.getPaneCommand(tmuxSession), content: await this.captureProbeScreen(tmuxSession) }), deadline);
1435
+ if (!captured)
1436
+ break;
1437
+ paneCommand = captured.command;
1438
+ paneContent = captured.content;
1439
+ }
1440
+ else {
1441
+ paneCommand = await this.tmux.getPaneCommand(tmuxSession);
1442
+ paneContent = await this.captureProbeScreen(tmuxSession);
1443
+ }
944
1444
  lastPaneContent = paneContent;
945
1445
  let probe = assessNativeResumeProbe({
946
1446
  runtime: "codex",
@@ -976,12 +1476,35 @@ export class CodexRuntimeAdapter {
976
1476
  evidence: paneContent.split("\n").slice(-12).join("\n"),
977
1477
  };
978
1478
  }
979
- if (probe.status === "resumed") {
980
- return {
981
- ok: true,
982
- resumeToken: opts?.resumeToken,
983
- resumeType: opts?.resumeToken ? "codex_id" : undefined,
984
- };
1479
+ if (probe.status === "resumed" && !resumeToken) {
1480
+ return { ok: true, resumeToken: undefined, resumeType: undefined };
1481
+ }
1482
+ if (probe.status === "resumed" && resumeToken) {
1483
+ const proof = await this.proveResumedProcess(tmuxSession, resumeToken, deadline);
1484
+ if (proof.kind === "match")
1485
+ return { ok: true, resumeToken, resumeType: "codex_id", resumedProcess: proof.process };
1486
+ if (proof.kind === "mismatch") {
1487
+ return {
1488
+ ok: false,
1489
+ error: `Codex resume opened a different conversation: the resumed process's records name ${proof.threadId}, not the requested ${resumeToken}. The session was preserved; nothing was restarted.`,
1490
+ recovery: "attention_required",
1491
+ resumeMismatch: { opened: proof.threadId },
1492
+ verifierInput: verifierInput(),
1493
+ evidence: paneContent.split("\n").slice(-12).join("\n"),
1494
+ };
1495
+ }
1496
+ // Unknown is not a failure yet: keep polling inside the window, as a boot still in progress does. The
1497
+ // window ending says nothing new, so it doesn't replace the last reason a read gave.
1498
+ if (!("windowEnded" in proof) || !unproven)
1499
+ unproven = proof.reason;
1500
+ lastUnresolved = { status: "inconclusive", code: "awaiting_runtime", detail: `Codex resume not yet proven: ${proof.reason}.` };
1501
+ report = { probe, paneContent };
1502
+ if (Date.now() >= deadline)
1503
+ break;
1504
+ const sleepMs = attempt < quickAttempts ? quickSleepMs : extendedSleepMs;
1505
+ if (attempt < totalAttempts - 1 && !(await pause(sleepMs)))
1506
+ break;
1507
+ continue;
985
1508
  }
986
1509
  report = { probe, paneContent }; // resumed returned above, so this screen is unresolved
987
1510
  if (probe.code === "update_gate") {
@@ -997,8 +1520,8 @@ export class CodexRuntimeAdapter {
997
1520
  lastUnresolved = null;
998
1521
  sawRealGate = false;
999
1522
  const sleepMs = attempt < quickAttempts ? quickSleepMs : extendedSleepMs;
1000
- if (attempt < totalAttempts - 1)
1001
- await this.sleep(sleepMs);
1523
+ if (attempt < totalAttempts - 1 && !(await pause(sleepMs)))
1524
+ break;
1002
1525
  continue;
1003
1526
  }
1004
1527
  lastUnresolved = probe;
@@ -1011,13 +1534,16 @@ export class CodexRuntimeAdapter {
1011
1534
  }
1012
1535
  }
1013
1536
  const sleepMs = attempt < quickAttempts ? quickSleepMs : extendedSleepMs;
1014
- if (attempt < totalAttempts - 1)
1015
- await this.sleep(sleepMs);
1537
+ if (attempt < totalAttempts - 1 && !(await pause(sleepMs)))
1538
+ break;
1016
1539
  }
1017
1540
  // Report the newest screen observed; a resumed or booting one names no gate. The loop's own decisions above used
1018
1541
  // lastUnresolved. The text follows the newest screen too, so an older gate's text never stands for a newer screen.
1019
1542
  const shown = report && report.probe.status !== "resumed" && report.probe.code !== "awaiting_runtime" ? report : null;
1020
- const newestText = shown ? shown.probe.detail
1543
+ const unprovenText = unproven && report?.probe.status === "resumed"
1544
+ ? `Codex resume could not be proven within the resume window: ${unproven}. The session was preserved; nothing was restarted.`
1545
+ : null;
1546
+ const newestText = unprovenText ? unprovenText : shown ? shown.probe.detail
1021
1547
  : report?.probe.status === "resumed" ? "Codex resume could not be confirmed: the last screen observed looked ready, but the resume check ended before proving a restored conversation."
1022
1548
  : report ? report.probe.detail
1023
1549
  : lastUnresolved?.detail;
@@ -1029,6 +1555,9 @@ export class CodexRuntimeAdapter {
1029
1555
  // The gate on that screen, if any. A boot still in progress names no gate.
1030
1556
  ...(shown ? gateFields(shown.probe, shown.paneContent) : {}),
1031
1557
  ...(shown?.beforeInput ? { screenBeforeInput: true } : {}),
1558
+ // With a conversation to prove and no gate on the newest screen, the end is "not proven": whatever the last frame
1559
+ // was (a boot, a ready screen, or no capture at all before the deadline), the resumed Codex may be running.
1560
+ ...(resumeToken && !shown ? { resumeUnproven: true } : {}),
1032
1561
  verifierInput: verifierInput(),
1033
1562
  evidence: (report?.paneContent ?? lastPaneContent).split("\n").slice(-12).join("\n"),
1034
1563
  };
@@ -1120,19 +1649,6 @@ function upsertCodexProjectTrust(content, projectPath) {
1120
1649
  // CONFIDENCE: the HASH is fully deterministic from the open source (JSON+sha256) — HIGH.
1121
1650
  // The KEY's exact key_source canonical form + the positional indices are what the VM
1122
1651
  // read-back must confirm — PROVISIONAL until then.
1123
- /** Recursively sort object keys (mirrors codex-rs fingerprint.rs `canonical_json`). */
1124
- function canonicalizeJsonValue(value) {
1125
- if (Array.isArray(value))
1126
- return value.map(canonicalizeJsonValue);
1127
- if (value !== null && typeof value === "object") {
1128
- const src = value;
1129
- const out = {};
1130
- for (const key of Object.keys(src).sort())
1131
- out[key] = canonicalizeJsonValue(src[key]);
1132
- return out;
1133
- }
1134
- return value;
1135
- }
1136
1652
  const CODEX_HOOK_EVENT_KEY_LABEL = {
1137
1653
  SessionStart: "session_start",
1138
1654
  UserPromptSubmit: "user_prompt_submit",
@@ -1149,32 +1665,20 @@ export function computeCodexHookTrust(event, input) {
1149
1665
  const groupIndex = input.groupIndex ?? 0;
1150
1666
  const handlerIndex = input.handlerIndex ?? 0;
1151
1667
  const key = `${input.keySource}:${label}:${groupIndex}:${handlerIndex}`;
1152
- // Build NormalizedHookIdentity exactly as `TomlValue::try_from` would: None fields dropped.
1153
- const handler = {
1154
- type: "command",
1155
- command: input.command,
1156
- timeout: input.timeoutSec,
1157
- async: false,
1158
- };
1159
- if (input.statusMessage != null)
1160
- handler.statusMessage = input.statusMessage;
1161
- const identity = { event_name: label, hooks: [handler] };
1162
- if (input.matcher != null)
1163
- identity.matcher = input.matcher;
1164
- const serialized = JSON.stringify(canonicalizeJsonValue(identity));
1165
- const hex = createHash("sha256").update(serialized, "utf8").digest("hex");
1166
- return { key, hash: `sha256:${hex}` };
1668
+ // NormalizedHookIdentity exactly as `TomlValue::try_from` would build it (None fields dropped), hashed by the shared
1669
+ // recipe in codex-hook-trust.cjs.
1670
+ return { key, hash: codexHookTrust.codexHookHash(label, input) };
1167
1671
  }
1168
1672
  /**
1169
1673
  * OPR.0.4.3.33 — idempotent, non-clobbering, section-scoped writer for a single
1170
1674
  * `[hooks.state."<key>"] trusted_hash = "<hash>"` record. Mirrors upsertCodexProjectTrust:
1171
1675
  * find/create the exact table header, splice ONLY its `trusted_hash` line, leave every other
1172
1676
  * `[hooks.state]` / `[projects]` entry and the managed hook block byte-identical. Same key+hash
1173
- * ⇒ no-op. Only ever called for OUR 4 authored hook keys (never a blanket/wildcard trust).
1677
+ * ⇒ no-op. Only called for our authored inline or verified owned plugin keys (never blanket trust).
1174
1678
  */
1175
- export function upsertCodexHookTrust(content, key, hash) {
1679
+ export function upsertCodexHookTrust(content, key, hash, field = "trusted_hash") {
1176
1680
  const header = `[hooks.state.${JSON.stringify(key)}]`;
1177
- const trustLine = `trusted_hash = ${JSON.stringify(hash)}`;
1681
+ const trustLine = `${field} = ${JSON.stringify(hash)}`;
1178
1682
  const lines = content.length > 0 ? content.split("\n") : [];
1179
1683
  const headerIndex = lines.findIndex((line) => line.trim() === header);
1180
1684
  if (headerIndex === -1) {
@@ -1189,14 +1693,14 @@ export function upsertCodexHookTrust(content, key, hash) {
1189
1693
  break;
1190
1694
  }
1191
1695
  }
1192
- const hashIndex = lines.findIndex((line, index) => index > headerIndex && index < nextSectionIndex && line.trim().startsWith("trusted_hash"));
1696
+ const hashIndex = lines.findIndex((line, index) => index > headerIndex && index < nextSectionIndex && line.trim().startsWith(field));
1193
1697
  if (hashIndex >= 0) {
1194
1698
  lines[hashIndex] = trustLine;
1195
1699
  }
1196
1700
  else {
1197
1701
  lines.splice(headerIndex + 1, 0, trustLine);
1198
1702
  }
1199
- return `${lines.join("\n").replace(/\n*$/, "\n")}`;
1703
+ return field === "trusted_content_hash" ? lines.join("\n") : `${lines.join("\n").replace(/\n*$/, "\n")}`;
1200
1704
  }
1201
1705
  export function isCodex013xOrLater(version) {
1202
1706
  const match = /^(\d+)\.(\d+)/.exec(version);
@@ -1574,15 +2078,12 @@ function escapeRegExp(value) {
1574
2078
  }
1575
2079
  // Module-private (P1 pin — NEVER exported). The REAL Codex profile-LOAD probe,
1576
2080
  // extracted verbatim from launchHarness: dynamic imports keep it lazy for
1577
- // production, execFn runs the real `codex -p <profile> mcp list` via execSync
1578
- // (utf-8, piped stdio, 10s timeout). Injected as the adapter's default
1579
- // verifyProfilePreflight; tests substitute a controlled stub.
2081
+ // production, execFn runs the real `codex -p <profile> mcp list` through
2082
+ // execRuntimeProbe (utf-8, 10s bound, off the event loop). Injected as the
2083
+ // adapter's default verifyProfilePreflight; tests substitute a controlled stub.
1580
2084
  async function defaultProfilePreflight(profile, selected) {
1581
2085
  const { verifyCodexProfileLoads } = await import("../domain/codex-profile-preflight.js");
1582
- const { execSync } = await import("node:child_process");
1583
- const execFn = async (cmd) => runSyncSite("codex.runtime.profile_preflight", () => execSync(cmd, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 10_000,
1584
- ...(selected ? { cwd: selected.cwd, env: { ...process.env, CODEX_HOME: selected.codexHome, ...(selected.launchPath ? { PATH: selected.launchPath } : {}) } } : {}),
1585
- }));
2086
+ const execFn = (cmd) => execRuntimeProbe("codex.runtime.profile_preflight", cmd, selected ? { cwd: selected.cwd, env: { ...process.env, CODEX_HOME: selected.codexHome, ...(selected.launchPath ? { PATH: selected.launchPath } : {}) } } : {});
1586
2087
  return verifyCodexProfileLoads(profile, execFn, undefined, selected?.codexHome);
1587
2088
  }
1588
2089
  // Exported for unit test (B12-T): the REAL async sampling path — the anti-vacuity test drives