@openrig/cli 0.3.1 → 0.3.3-rc.0

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 (358) hide show
  1. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +1 -1
  2. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +8 -8
  3. package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -1
  4. package/daemon/dist/adapters/cmux-transport.js +51 -9
  5. package/daemon/dist/adapters/cmux-transport.js.map +1 -1
  6. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  7. package/daemon/dist/adapters/codex-runtime-adapter.js +34 -5
  8. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  9. package/daemon/dist/adapters/tmux.d.ts +68 -1
  10. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  11. package/daemon/dist/adapters/tmux.js +141 -2
  12. package/daemon/dist/adapters/tmux.js.map +1 -1
  13. package/daemon/dist/db/migrations/037_mission_control_actions.d.ts +5 -1
  14. package/daemon/dist/db/migrations/037_mission_control_actions.d.ts.map +1 -1
  15. package/daemon/dist/db/migrations/037_mission_control_actions.js +5 -1
  16. package/daemon/dist/db/migrations/037_mission_control_actions.js.map +1 -1
  17. package/daemon/dist/db/migrations/041_rig_policy.d.ts +32 -0
  18. package/daemon/dist/db/migrations/041_rig_policy.d.ts.map +1 -0
  19. package/daemon/dist/db/migrations/041_rig_policy.js +47 -0
  20. package/daemon/dist/db/migrations/041_rig_policy.js.map +1 -0
  21. package/daemon/dist/db/migrations/042_rig_archive.d.ts +16 -0
  22. package/daemon/dist/db/migrations/042_rig_archive.d.ts.map +1 -0
  23. package/daemon/dist/db/migrations/042_rig_archive.js +21 -0
  24. package/daemon/dist/db/migrations/042_rig_archive.js.map +1 -0
  25. package/daemon/dist/domain/agent-images/resume-token-discovery.js +1 -1
  26. package/daemon/dist/domain/agent-images/resume-token-discovery.js.map +1 -1
  27. package/daemon/dist/domain/agent-images/snapshot-capturer.d.ts.map +1 -1
  28. package/daemon/dist/domain/agent-images/snapshot-capturer.js +2 -1
  29. package/daemon/dist/domain/agent-images/snapshot-capturer.js.map +1 -1
  30. package/daemon/dist/domain/agent-manifest.js +27 -0
  31. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  32. package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
  33. package/daemon/dist/domain/bootstrap-orchestrator.js +86 -6
  34. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  35. package/daemon/dist/domain/bundle-agent-images-router.d.ts +95 -0
  36. package/daemon/dist/domain/bundle-agent-images-router.d.ts.map +1 -0
  37. package/daemon/dist/domain/bundle-agent-images-router.js +140 -0
  38. package/daemon/dist/domain/bundle-agent-images-router.js.map +1 -0
  39. package/daemon/dist/domain/bundle-assembler.d.ts +18 -1
  40. package/daemon/dist/domain/bundle-assembler.d.ts.map +1 -1
  41. package/daemon/dist/domain/bundle-assembler.js +11 -1
  42. package/daemon/dist/domain/bundle-assembler.js.map +1 -1
  43. package/daemon/dist/domain/bundle-audit.d.ts +89 -0
  44. package/daemon/dist/domain/bundle-audit.d.ts.map +1 -0
  45. package/daemon/dist/domain/bundle-audit.js +87 -0
  46. package/daemon/dist/domain/bundle-audit.js.map +1 -0
  47. package/daemon/dist/domain/bundle-conflict-detector.d.ts +57 -0
  48. package/daemon/dist/domain/bundle-conflict-detector.d.ts.map +1 -0
  49. package/daemon/dist/domain/bundle-conflict-detector.js +49 -0
  50. package/daemon/dist/domain/bundle-conflict-detector.js.map +1 -0
  51. package/daemon/dist/domain/bundle-context-packs-router.d.ts +100 -0
  52. package/daemon/dist/domain/bundle-context-packs-router.d.ts.map +1 -0
  53. package/daemon/dist/domain/bundle-context-packs-router.js +158 -0
  54. package/daemon/dist/domain/bundle-context-packs-router.js.map +1 -0
  55. package/daemon/dist/domain/bundle-plugins-router.d.ts +69 -0
  56. package/daemon/dist/domain/bundle-plugins-router.d.ts.map +1 -0
  57. package/daemon/dist/domain/bundle-plugins-router.js +87 -0
  58. package/daemon/dist/domain/bundle-plugins-router.js.map +1 -0
  59. package/daemon/dist/domain/bundle-skills-router.d.ts +62 -0
  60. package/daemon/dist/domain/bundle-skills-router.d.ts.map +1 -0
  61. package/daemon/dist/domain/bundle-skills-router.js +90 -0
  62. package/daemon/dist/domain/bundle-skills-router.js.map +1 -0
  63. package/daemon/dist/domain/bundle-types.d.ts +106 -0
  64. package/daemon/dist/domain/bundle-types.d.ts.map +1 -1
  65. package/daemon/dist/domain/bundle-types.js +375 -0
  66. package/daemon/dist/domain/bundle-types.js.map +1 -1
  67. package/daemon/dist/domain/bundle-workflow-specs-router.d.ts +94 -0
  68. package/daemon/dist/domain/bundle-workflow-specs-router.d.ts.map +1 -0
  69. package/daemon/dist/domain/bundle-workflow-specs-router.js +144 -0
  70. package/daemon/dist/domain/bundle-workflow-specs-router.js.map +1 -0
  71. package/daemon/dist/domain/context-monitor.d.ts +5 -1
  72. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  73. package/daemon/dist/domain/context-monitor.js +28 -15
  74. package/daemon/dist/domain/context-monitor.js.map +1 -1
  75. package/daemon/dist/domain/graph-projection.d.ts +6 -0
  76. package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
  77. package/daemon/dist/domain/graph-projection.js +6 -0
  78. package/daemon/dist/domain/graph-projection.js.map +1 -1
  79. package/daemon/dist/domain/native-resume-probe.js +7 -7
  80. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  81. package/daemon/dist/domain/node-inventory.d.ts +18 -0
  82. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  83. package/daemon/dist/domain/node-inventory.js +98 -0
  84. package/daemon/dist/domain/node-inventory.js.map +1 -1
  85. package/daemon/dist/domain/node-launcher.d.ts +12 -0
  86. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  87. package/daemon/dist/domain/node-launcher.js +25 -1
  88. package/daemon/dist/domain/node-launcher.js.map +1 -1
  89. package/daemon/dist/domain/pod-bundle-assembler.d.ts +16 -1
  90. package/daemon/dist/domain/pod-bundle-assembler.d.ts.map +1 -1
  91. package/daemon/dist/domain/pod-bundle-assembler.js +11 -1
  92. package/daemon/dist/domain/pod-bundle-assembler.js.map +1 -1
  93. package/daemon/dist/domain/profile-resolver.d.ts +10 -0
  94. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  95. package/daemon/dist/domain/profile-resolver.js +4 -0
  96. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  97. package/daemon/dist/domain/ps-projection.d.ts +28 -1
  98. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  99. package/daemon/dist/domain/ps-projection.js +67 -1
  100. package/daemon/dist/domain/ps-projection.js.map +1 -1
  101. package/daemon/dist/domain/queue-repository.d.ts +37 -1
  102. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  103. package/daemon/dist/domain/queue-repository.js +99 -2
  104. package/daemon/dist/domain/queue-repository.js.map +1 -1
  105. package/daemon/dist/domain/restore-check-service.d.ts +4 -0
  106. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  107. package/daemon/dist/domain/restore-check-service.js +16 -7
  108. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  109. package/daemon/dist/domain/rig-expansion-service.d.ts +1 -1
  110. package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  111. package/daemon/dist/domain/rig-expansion-service.js +12 -10
  112. package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  113. package/daemon/dist/domain/rig-policy/rig-policy-defaults.d.ts +48 -0
  114. package/daemon/dist/domain/rig-policy/rig-policy-defaults.d.ts.map +1 -0
  115. package/daemon/dist/domain/rig-policy/rig-policy-defaults.js +96 -0
  116. package/daemon/dist/domain/rig-policy/rig-policy-defaults.js.map +1 -0
  117. package/daemon/dist/domain/rig-policy/rig-policy-store.d.ts +46 -0
  118. package/daemon/dist/domain/rig-policy/rig-policy-store.d.ts.map +1 -0
  119. package/daemon/dist/domain/rig-policy/rig-policy-store.js +171 -0
  120. package/daemon/dist/domain/rig-policy/rig-policy-store.js.map +1 -0
  121. package/daemon/dist/domain/rig-policy/rig-policy-types.d.ts +145 -0
  122. package/daemon/dist/domain/rig-policy/rig-policy-types.d.ts.map +1 -0
  123. package/daemon/dist/domain/rig-policy/rig-policy-types.js +52 -0
  124. package/daemon/dist/domain/rig-policy/rig-policy-types.js.map +1 -0
  125. package/daemon/dist/domain/rig-policy/rig-policy-validator.d.ts +58 -0
  126. package/daemon/dist/domain/rig-policy/rig-policy-validator.d.ts.map +1 -0
  127. package/daemon/dist/domain/rig-policy/rig-policy-validator.js +211 -0
  128. package/daemon/dist/domain/rig-policy/rig-policy-validator.js.map +1 -0
  129. package/daemon/dist/domain/rig-repository.d.ts +28 -2
  130. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  131. package/daemon/dist/domain/rig-repository.js +40 -3
  132. package/daemon/dist/domain/rig-repository.js.map +1 -1
  133. package/daemon/dist/domain/rigspec-instantiator.d.ts +177 -1
  134. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  135. package/daemon/dist/domain/rigspec-instantiator.js +414 -55
  136. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  137. package/daemon/dist/domain/rigspec-preflight.d.ts +19 -1
  138. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  139. package/daemon/dist/domain/rigspec-preflight.js +30 -12
  140. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  141. package/daemon/dist/domain/rigspec-schema.d.ts +1 -0
  142. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  143. package/daemon/dist/domain/rigspec-schema.js +4 -1
  144. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  145. package/daemon/dist/domain/seat-activity-service.d.ts +79 -0
  146. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -0
  147. package/daemon/dist/domain/seat-activity-service.js +123 -0
  148. package/daemon/dist/domain/seat-activity-service.js.map +1 -0
  149. package/daemon/dist/domain/session-transport.d.ts +15 -0
  150. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  151. package/daemon/dist/domain/session-transport.js +8 -3
  152. package/daemon/dist/domain/session-transport.js.map +1 -1
  153. package/daemon/dist/domain/slices/slice-indexer.d.ts +12 -0
  154. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  155. package/daemon/dist/domain/slices/slice-indexer.js +23 -0
  156. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  157. package/daemon/dist/domain/spec-library-service.d.ts.map +1 -1
  158. package/daemon/dist/domain/spec-library-service.js +19 -0
  159. package/daemon/dist/domain/spec-library-service.js.map +1 -1
  160. package/daemon/dist/domain/topology-converge.d.ts +97 -0
  161. package/daemon/dist/domain/topology-converge.d.ts.map +1 -0
  162. package/daemon/dist/domain/topology-converge.js +70 -0
  163. package/daemon/dist/domain/topology-converge.js.map +1 -0
  164. package/daemon/dist/domain/types.d.ts +85 -3
  165. package/daemon/dist/domain/types.d.ts.map +1 -1
  166. package/daemon/dist/domain/types.js.map +1 -1
  167. package/daemon/dist/domain/whoami-service.d.ts +8 -0
  168. package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
  169. package/daemon/dist/domain/whoami-service.js +1 -0
  170. package/daemon/dist/domain/whoami-service.js.map +1 -1
  171. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  172. package/daemon/dist/domain/workflow-runtime.js +9 -1
  173. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  174. package/daemon/dist/domain/workflow-spec-cache.d.ts +41 -0
  175. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  176. package/daemon/dist/domain/workflow-spec-cache.js +63 -0
  177. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  178. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +7 -0
  179. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  180. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +156 -3
  181. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  182. package/daemon/dist/domain/workspace/workspace-doctor.d.ts +197 -0
  183. package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -0
  184. package/daemon/dist/domain/workspace/workspace-doctor.js +448 -0
  185. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -0
  186. package/daemon/dist/index.d.ts.map +1 -1
  187. package/daemon/dist/index.js +11 -0
  188. package/daemon/dist/index.js.map +1 -1
  189. package/daemon/dist/routes/bundles.d.ts.map +1 -1
  190. package/daemon/dist/routes/bundles.js +966 -7
  191. package/daemon/dist/routes/bundles.js.map +1 -1
  192. package/daemon/dist/routes/config.d.ts.map +1 -1
  193. package/daemon/dist/routes/config.js +19 -2
  194. package/daemon/dist/routes/config.js.map +1 -1
  195. package/daemon/dist/routes/info.d.ts +3 -0
  196. package/daemon/dist/routes/info.d.ts.map +1 -0
  197. package/daemon/dist/routes/info.js +20 -0
  198. package/daemon/dist/routes/info.js.map +1 -0
  199. package/daemon/dist/routes/ps.js +4 -1
  200. package/daemon/dist/routes/ps.js.map +1 -1
  201. package/daemon/dist/routes/queue.d.ts +18 -0
  202. package/daemon/dist/routes/queue.d.ts.map +1 -1
  203. package/daemon/dist/routes/queue.js +97 -5
  204. package/daemon/dist/routes/queue.js.map +1 -1
  205. package/daemon/dist/routes/rig-policy.d.ts +9 -0
  206. package/daemon/dist/routes/rig-policy.d.ts.map +1 -0
  207. package/daemon/dist/routes/rig-policy.js +174 -0
  208. package/daemon/dist/routes/rig-policy.js.map +1 -0
  209. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  210. package/daemon/dist/routes/rigs.js +134 -4
  211. package/daemon/dist/routes/rigs.js.map +1 -1
  212. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  213. package/daemon/dist/routes/sessions.js +26 -3
  214. package/daemon/dist/routes/sessions.js.map +1 -1
  215. package/daemon/dist/routes/up.d.ts +25 -0
  216. package/daemon/dist/routes/up.d.ts.map +1 -1
  217. package/daemon/dist/routes/up.js +70 -3
  218. package/daemon/dist/routes/up.js.map +1 -1
  219. package/daemon/dist/routes/workspace.d.ts.map +1 -1
  220. package/daemon/dist/routes/workspace.js +80 -1
  221. package/daemon/dist/routes/workspace.js.map +1 -1
  222. package/daemon/dist/server.d.ts +10 -0
  223. package/daemon/dist/server.d.ts.map +1 -1
  224. package/daemon/dist/server.js +11 -0
  225. package/daemon/dist/server.js.map +1 -1
  226. package/daemon/dist/startup.d.ts.map +1 -1
  227. package/daemon/dist/startup.js +46 -4
  228. package/daemon/dist/startup.js.map +1 -1
  229. package/daemon/docs/reference/getting-started.md +69 -0
  230. package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +28 -4
  231. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +361 -15
  232. package/daemon/specs/agents/shared/skills/core/rig-lifecycle/SKILL.md +2 -2
  233. package/daemon/specs/rigs/launch/conveyor/rig.yaml +1 -1
  234. package/dist/client.d.ts +3 -0
  235. package/dist/client.d.ts.map +1 -1
  236. package/dist/client.js +13 -1
  237. package/dist/client.js.map +1 -1
  238. package/dist/commands/add.d.ts +4 -0
  239. package/dist/commands/add.d.ts.map +1 -0
  240. package/dist/commands/add.js +115 -0
  241. package/dist/commands/add.js.map +1 -0
  242. package/dist/commands/archive.d.ts +10 -0
  243. package/dist/commands/archive.d.ts.map +1 -0
  244. package/dist/commands/archive.js +68 -0
  245. package/dist/commands/archive.js.map +1 -0
  246. package/dist/commands/bootstrap.js +2 -2
  247. package/dist/commands/bootstrap.js.map +1 -1
  248. package/dist/commands/bundle.d.ts.map +1 -1
  249. package/dist/commands/bundle.js +123 -2
  250. package/dist/commands/bundle.js.map +1 -1
  251. package/dist/commands/config-init-workspace.d.ts.map +1 -1
  252. package/dist/commands/config-init-workspace.js +40 -5
  253. package/dist/commands/config-init-workspace.js.map +1 -1
  254. package/dist/commands/discover.js +2 -2
  255. package/dist/commands/discover.js.map +1 -1
  256. package/dist/commands/down.d.ts +1 -1
  257. package/dist/commands/down.d.ts.map +1 -1
  258. package/dist/commands/down.js +91 -3
  259. package/dist/commands/down.js.map +1 -1
  260. package/dist/commands/ps.d.ts.map +1 -1
  261. package/dist/commands/ps.js +72 -10
  262. package/dist/commands/ps.js.map +1 -1
  263. package/dist/commands/queue.d.ts +6 -0
  264. package/dist/commands/queue.d.ts.map +1 -1
  265. package/dist/commands/queue.js +103 -5
  266. package/dist/commands/queue.js.map +1 -1
  267. package/dist/commands/rig-policy.d.ts +48 -0
  268. package/dist/commands/rig-policy.d.ts.map +1 -0
  269. package/dist/commands/rig-policy.js +429 -0
  270. package/dist/commands/rig-policy.js.map +1 -0
  271. package/dist/commands/scope.d.ts +6 -0
  272. package/dist/commands/scope.d.ts.map +1 -0
  273. package/dist/commands/scope.js +659 -0
  274. package/dist/commands/scope.js.map +1 -0
  275. package/dist/commands/send.d.ts.map +1 -1
  276. package/dist/commands/send.js +11 -0
  277. package/dist/commands/send.js.map +1 -1
  278. package/dist/commands/setup.d.ts +7 -0
  279. package/dist/commands/setup.d.ts.map +1 -1
  280. package/dist/commands/setup.js +28 -1
  281. package/dist/commands/setup.js.map +1 -1
  282. package/dist/commands/status.d.ts.map +1 -1
  283. package/dist/commands/status.js +35 -2
  284. package/dist/commands/status.js.map +1 -1
  285. package/dist/commands/unarchive.d.ts +10 -0
  286. package/dist/commands/unarchive.d.ts.map +1 -0
  287. package/dist/commands/unarchive.js +53 -0
  288. package/dist/commands/unarchive.js.map +1 -0
  289. package/dist/commands/up.d.ts.map +1 -1
  290. package/dist/commands/up.js +97 -0
  291. package/dist/commands/up.js.map +1 -1
  292. package/dist/commands/whoami.d.ts.map +1 -1
  293. package/dist/commands/whoami.js +4 -1
  294. package/dist/commands/whoami.js.map +1 -1
  295. package/dist/commands/workflow.d.ts +9 -0
  296. package/dist/commands/workflow.d.ts.map +1 -1
  297. package/dist/commands/workflow.js +141 -4
  298. package/dist/commands/workflow.js.map +1 -1
  299. package/dist/commands/workspace.d.ts +20 -0
  300. package/dist/commands/workspace.d.ts.map +1 -1
  301. package/dist/commands/workspace.js +140 -10
  302. package/dist/commands/workspace.js.map +1 -1
  303. package/dist/daemon-lifecycle.d.ts +48 -1
  304. package/dist/daemon-lifecycle.d.ts.map +1 -1
  305. package/dist/daemon-lifecycle.js +57 -2
  306. package/dist/daemon-lifecycle.js.map +1 -1
  307. package/dist/index.d.ts +5 -0
  308. package/dist/index.d.ts.map +1 -1
  309. package/dist/index.js +12 -0
  310. package/dist/index.js.map +1 -1
  311. package/dist/lib/scope/dot-id.d.ts +43 -0
  312. package/dist/lib/scope/dot-id.d.ts.map +1 -0
  313. package/dist/lib/scope/dot-id.js +165 -0
  314. package/dist/lib/scope/dot-id.js.map +1 -0
  315. package/dist/lib/scope/scope-fs.d.ts +79 -0
  316. package/dist/lib/scope/scope-fs.d.ts.map +1 -0
  317. package/dist/lib/scope/scope-fs.js +468 -0
  318. package/dist/lib/scope/scope-fs.js.map +1 -0
  319. package/dist/lib/scope/templates.d.ts +38 -0
  320. package/dist/lib/scope/templates.d.ts.map +1 -0
  321. package/dist/lib/scope/templates.js +109 -0
  322. package/dist/lib/scope/templates.js.map +1 -0
  323. package/dist/lib/scope/types.d.ts +61 -0
  324. package/dist/lib/scope/types.d.ts.map +1 -0
  325. package/dist/lib/scope/types.js +38 -0
  326. package/dist/lib/scope/types.js.map +1 -0
  327. package/dist/lib/scope-templates/backlog-deprecation.md +26 -0
  328. package/dist/lib/scope-templates/backlog-tech-debt.md +22 -0
  329. package/dist/lib/scope-templates/bug-fix.md +30 -0
  330. package/dist/lib/scope-templates/mission-notes.md +97 -0
  331. package/dist/lib/scope-templates/mission-placeholder.md +20 -0
  332. package/dist/lib/scope-templates/mission-release.md +25 -0
  333. package/dist/lib/scope-templates/placeholder.md +30 -0
  334. package/dist/lib/scope-templates/release-feature.md +26 -0
  335. package/dist/lib/scope-templates/research.md +22 -0
  336. package/dist/mcp-server.d.ts.map +1 -1
  337. package/dist/mcp-server.js +29 -0
  338. package/dist/mcp-server.js.map +1 -1
  339. package/dist/release-surface/affected-skills.d.ts +49 -0
  340. package/dist/release-surface/affected-skills.d.ts.map +1 -0
  341. package/dist/release-surface/affected-skills.js +153 -0
  342. package/dist/release-surface/affected-skills.js.map +1 -0
  343. package/dist/release-surface/extract-surface.d.ts +23 -0
  344. package/dist/release-surface/extract-surface.d.ts.map +1 -0
  345. package/dist/release-surface/extract-surface.js +193 -0
  346. package/dist/release-surface/extract-surface.js.map +1 -0
  347. package/dist/release-surface/generate.d.ts +2 -0
  348. package/dist/release-surface/generate.d.ts.map +1 -0
  349. package/dist/release-surface/generate.js +51 -0
  350. package/dist/release-surface/generate.js.map +1 -0
  351. package/dist/release-surface/surface-diff.d.ts +40 -0
  352. package/dist/release-surface/surface-diff.d.ts.map +1 -0
  353. package/dist/release-surface/surface-diff.js +212 -0
  354. package/dist/release-surface/surface-diff.js.map +1 -0
  355. package/package.json +2 -2
  356. package/ui/dist/assets/index-CrJgCmkX.js +552 -0
  357. package/ui/dist/index.html +1 -1
  358. package/ui/dist/assets/index-Rl3ZBrUg.js +0 -547
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Bundle workflow_specs router (Item 6 / slice-05 Checkpoint 7.3e step 2).
3
+ *
4
+ * Pure function. Copies workflow spec YAML files declared in a bundle
5
+ * manifest's workflow_specs[] block from the bundle's extracted tree to the
6
+ * operator workflow-specs library. No daemon dependencies — fully
7
+ * unit-testable via FsOps injection.
8
+ *
9
+ * Mirrors the bundle-skills-router pattern (file-paths, single-file copy
10
+ * preserving directory layout, leading-prefix strip). Per orch-ratified
11
+ * Candidate A on Item-6 completeness: workflow_specs is the 3rd v0
12
+ * cross-primitive kind (after skills + plugins). Source primitive
13
+ * reachable on main (WorkflowSpecCache + workflow-runtime + scanner).
14
+ *
15
+ * Safety (banked feedback_pre_existing_trust_boundary_reuse_canonical_helper
16
+ * addendum): both-sides containment — declared source path must stay
17
+ * inside bundleRoot; resolved target path (after leading "workflows/"
18
+ * strip) must stay inside targetWorkflowSpecsDir. The leading-prefix
19
+ * strip can promote intermediate ../ segments that bypass source check
20
+ * but escape target.
21
+ *
22
+ * Honest-scoping: missing source files surface as warnings in the
23
+ * result (NOT thrown errors) so the install lifecycle can continue
24
+ * with what's available. Same as bundle-skills-router.
25
+ *
26
+ * /install handler integration lands at Checkpoint 7.3e step 3.
27
+ */
28
+ import nodePath from "node:path";
29
+ /**
30
+ * Route each declared workflow_spec from the bundle tree to the operator
31
+ * workflow-specs library. Per-entry safety: BOTH source path (under
32
+ * bundleRoot) AND target path (under targetWorkflowSpecsDir, post leading-
33
+ * prefix strip) are containment-checked. Banked both-sides-trust-boundary
34
+ * lesson applied. Caller writes the install audit record using the records
35
+ * returned here.
36
+ */
37
+ export function routeWorkflowSpecs(input, fs) {
38
+ const records = [];
39
+ const bundleRootResolved = nodePath.resolve(input.bundleRoot);
40
+ const targetRootResolved = nodePath.resolve(input.targetWorkflowSpecsDir);
41
+ fs.mkdirp(input.targetWorkflowSpecsDir);
42
+ // Track basenames already routed so duplicate-basename collisions (after
43
+ // the basename-flatten) surface as conflict records rather than silent
44
+ // overwrites with a false routedCount (banked B1 guard catch on d81456dc).
45
+ const routedBasenames = new Set();
46
+ for (const declared of input.declaredWorkflowSpecs) {
47
+ // Scanner-visibility prefilter: spec-library-workflow-scanner reads only
48
+ // .yaml/.yml top-level files (spec-library-workflow-scanner.ts:366 +
49
+ // 390-397). Non-YAML declarations would route to disk but be invisible
50
+ // to the operator via the Library UI — false-positive class. Reject
51
+ // here so the routedCount stays truthful at the scanner-visible
52
+ // boundary.
53
+ if (!/\.ya?ml$/i.test(declared)) {
54
+ records.push({
55
+ declaredPath: declared,
56
+ status: "unsafe",
57
+ detail: `workflow_spec '${declared}' is not a .yaml/.yml file; scanner ignores non-YAML suffixes`,
58
+ });
59
+ continue;
60
+ }
61
+ const sourceAbs = nodePath.resolve(input.bundleRoot, declared);
62
+ // Defense-in-depth path-containment on SOURCE (mirrors skills router
63
+ // pattern; the manifest validator already rejects unsafe paths via
64
+ // isRelativeSafePath but we re-check here in case the input bypassed
65
+ // validation upstream).
66
+ if (sourceAbs !== bundleRootResolved && !sourceAbs.startsWith(bundleRootResolved + nodePath.sep)) {
67
+ records.push({
68
+ declaredPath: declared,
69
+ status: "unsafe",
70
+ detail: `workflow_spec path '${declared}' escapes bundle workspace; rejected`,
71
+ });
72
+ continue;
73
+ }
74
+ if (!fs.exists(sourceAbs)) {
75
+ records.push({
76
+ declaredPath: declared,
77
+ status: "missing",
78
+ detail: `workflow_spec source '${declared}' not present in bundle; skipped`,
79
+ });
80
+ continue;
81
+ }
82
+ // Target = top-level basename under targetWorkflowSpecsDir.
83
+ //
84
+ // SCANNER-REACHABILITY CONTRACT: spec-library-workflow-scanner reads
85
+ // ONLY top-level YAML files via readdirSync(folder) + isFile() (see
86
+ // spec-library-workflow-scanner.ts:382-397) — no recursion. Nested
87
+ // YAML inside subdirs is INVISIBLE to the scanner and Library UI.
88
+ // Workflow specs MUST land at the top of <workspace.specs_root>/workflows
89
+ // to become operator-visible. Basename-only target computation enforces
90
+ // this; preserving the bundle's directory layout would silently route
91
+ // specs to an unscanned location.
92
+ //
93
+ // Side benefit: basename can never escape targetWorkflowSpecsDir
94
+ // (nodePath.basename(any-path) is a leaf name with no separators), so
95
+ // the "target-side escape after prefix strip" hazard banked on the
96
+ // skills router (595e9550 B1 repair) is structurally impossible here.
97
+ //
98
+ // Basename collisions caught BEFORE write: see the routedBasenames
99
+ // dedup-set + the basename-collision branch below. Two declared paths
100
+ // sharing the same filename → first wins (status=routed), later flagged
101
+ // status=conflict so routedCount stays truthful at the scanner-visible
102
+ // boundary (mirror of the slice's 3-part collision-error posture).
103
+ // Non-YAML suffixes are pre-filtered (status=unsafe) since the scanner
104
+ // ignores non-.yaml/.yml entries entirely.
105
+ const basename = nodePath.basename(declared);
106
+ const targetAbs = nodePath.resolve(input.targetWorkflowSpecsDir, basename);
107
+ // Sanity check (defensive; basename is structurally safe but the resolve
108
+ // could in theory be a no-op for "" → keep the check, expected always-true).
109
+ if (targetAbs !== targetRootResolved && !targetAbs.startsWith(targetRootResolved + nodePath.sep)) {
110
+ records.push({
111
+ declaredPath: declared,
112
+ status: "unsafe",
113
+ detail: `workflow_spec target path for '${declared}' escapes target workflow-specs library; rejected`,
114
+ });
115
+ continue;
116
+ }
117
+ // Basename-collision detection: two declared paths that share a
118
+ // basename would both target the same file after basename-flatten. Only
119
+ // the FIRST is written; later ones surface as conflict records so the
120
+ // routedCount equals scanner-visible specs (banked B1 guard catch on
121
+ // d81456dc). Operator-actionable: rename the declared path or curate
122
+ // the bundle manifest.
123
+ if (routedBasenames.has(basename)) {
124
+ records.push({
125
+ declaredPath: declared,
126
+ status: "conflict",
127
+ detail: `workflow_spec basename '${basename}' collides with an earlier declared path; only the first is routed (basename-flatten conflict)`,
128
+ });
129
+ continue;
130
+ }
131
+ const content = fs.readFile(sourceAbs);
132
+ fs.writeFile(targetAbs, content);
133
+ routedBasenames.add(basename);
134
+ records.push({
135
+ declaredPath: declared,
136
+ status: "routed",
137
+ installedAt: targetAbs,
138
+ });
139
+ }
140
+ const routedCount = records.filter((r) => r.status === "routed").length;
141
+ const rejectedCount = records.length - routedCount;
142
+ return { records, routedCount, rejectedCount };
143
+ }
144
+ //# sourceMappingURL=bundle-workflow-specs-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-workflow-specs-router.js","sourceRoot":"","sources":["../../src/domain/bundle-workflow-specs-router.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,9 @@ interface ClaudeContextProvisioner {
11
11
  }): void;
12
12
  checkReady?(binding: NodeBinding): Promise<ReadinessResult>;
13
13
  }
14
+ interface RuntimeReadinessChecker {
15
+ checkReady?(binding: NodeBinding): Promise<ReadinessResult>;
16
+ }
14
17
  /**
15
18
  * Polls known managed runtime context sources and persists the latest
16
19
  * normalized telemetry. Scheduler-only: no queries, no response shaping,
@@ -26,8 +29,9 @@ export declare class ContextMonitor {
26
29
  private store;
27
30
  private claudeContextProvisioner;
28
31
  private compactionEnforcer;
32
+ private readinessCheckers;
29
33
  private timer;
30
- constructor(db: Database.Database, store: ContextUsageStore, claudeContextProvisioner?: ClaudeContextProvisioner, compactionEnforcer?: ClaudeCompactionEnforcer);
34
+ constructor(db: Database.Database, store: ContextUsageStore, claudeContextProvisioner?: ClaudeContextProvisioner, compactionEnforcer?: ClaudeCompactionEnforcer, readinessCheckers?: Record<string, RuntimeReadinessChecker | undefined>);
31
35
  /** Discover active managed Claude sessions and poll their sidecar files. */
32
36
  pollOnce(): Promise<void>;
33
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"context-monitor.d.ts","sourceRoot":"","sources":["../../src/domain/context-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAG9B,4CAA4C;AAC5C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAY/C,UAAU,wBAAwB;IAChC,sBAAsB,CAAC,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5F,UAAU,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7D;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,wBAAwB,CAAkC;IAClE,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,KAAK,CAA+C;gBAG1D,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,iBAAiB,EACxB,wBAAwB,CAAC,EAAE,wBAAwB,EACnD,kBAAkB,CAAC,EAAE,wBAAwB;IAQ/C,4EAA4E;IACtE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB/B;;;;;OAKG;YACW,gBAAgB;IAoB9B,uDAAuD;IACvD,KAAK,CAAC,UAAU,GAAE,MAAiC,GAAG,IAAI;IAW1D,iEAAiE;IACjE,IAAI,IAAI,IAAI;IAOZ,wEAAwE;IACxE,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,gBAAgB;YAeV,sBAAsB;CAuCrC"}
1
+ {"version":3,"file":"context-monitor.d.ts","sourceRoot":"","sources":["../../src/domain/context-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAG9B,4CAA4C;AAC5C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAY/C,UAAU,wBAAwB;IAChC,sBAAsB,CAAC,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5F,UAAU,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7D;AAED,UAAU,uBAAuB;IAC/B,UAAU,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7D;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,wBAAwB,CAAkC;IAClE,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,iBAAiB,CAAsD;IAC/E,OAAO,CAAC,KAAK,CAA+C;gBAG1D,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,iBAAiB,EACxB,wBAAwB,CAAC,EAAE,wBAAwB,EACnD,kBAAkB,CAAC,EAAE,wBAAwB,EAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAYzE,4EAA4E;IACtE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB/B;;;;;OAKG;YACW,gBAAgB;IAoB9B,uDAAuD;IACvD,KAAK,CAAC,UAAU,GAAE,MAAiC,GAAG,IAAI;IAW1D,iEAAiE;IACjE,IAAI,IAAI,IAAI;IAOZ,wEAAwE;IACxE,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,gBAAgB;YAeV,sBAAsB;CAuCrC"}
@@ -16,29 +16,37 @@ export class ContextMonitor {
16
16
  store;
17
17
  claudeContextProvisioner;
18
18
  compactionEnforcer;
19
+ readinessCheckers;
19
20
  timer = null;
20
- constructor(db, store, claudeContextProvisioner, compactionEnforcer) {
21
+ constructor(db, store, claudeContextProvisioner, compactionEnforcer, readinessCheckers) {
21
22
  this.db = db;
22
23
  this.store = store;
23
24
  this.claudeContextProvisioner = claudeContextProvisioner ?? null;
24
25
  this.compactionEnforcer = compactionEnforcer ?? null;
26
+ this.readinessCheckers = readinessCheckers ?? {};
27
+ if (claudeContextProvisioner && !this.readinessCheckers["claude-code"]) {
28
+ this.readinessCheckers["claude-code"] = claudeContextProvisioner;
29
+ }
25
30
  }
26
31
  /** Discover active managed Claude sessions and poll their sidecar files. */
27
32
  async pollOnce() {
28
33
  const sessions = this.getEligibleSessions();
29
34
  for (const session of sessions) {
30
35
  let observed = null;
31
- try {
32
- observed = this.readContextUsage(session);
33
- this.store.persist(session.node_id, observed);
34
- }
35
- catch {
36
- observed = null;
37
- // One bad session must not crash polling for others
36
+ const canReadContextUsage = session.runtime !== "codex" || !!session.resume_token;
37
+ if (canReadContextUsage) {
38
38
  try {
39
- this.store.persist(session.node_id, this.store.unknownUsage("parse_error"));
39
+ observed = this.readContextUsage(session);
40
+ this.store.persist(session.node_id, observed);
41
+ }
42
+ catch {
43
+ observed = null;
44
+ // One bad session must not crash polling for others
45
+ try {
46
+ this.store.persist(session.node_id, this.store.unknownUsage("parse_error"));
47
+ }
48
+ catch { /* give up on this session */ }
40
49
  }
41
- catch { /* give up on this session */ }
42
50
  }
43
51
  await this.normalizeStartupStatus(session);
44
52
  await this.maybeAutoCompact(session, observed);
@@ -105,7 +113,13 @@ export class ContextMonitor {
105
113
  LEFT JOIN bindings b ON b.node_id = n.id
106
114
  WHERE (
107
115
  (n.runtime = 'claude-code' AND s.status = 'running')
108
- OR (n.runtime = 'codex' AND s.resume_token IS NOT NULL)
116
+ OR (
117
+ n.runtime = 'codex'
118
+ AND (
119
+ s.resume_token IS NOT NULL
120
+ OR s.startup_status IN ('failed', 'attention_required')
121
+ )
122
+ )
109
123
  )
110
124
  AND COALESCE(b.attachment_type, 'tmux') = 'tmux'
111
125
  AND COALESCE(b.tmux_session, s.session_name) IS NOT NULL
@@ -125,14 +139,13 @@ export class ContextMonitor {
125
139
  return this.store.readAndNormalize(session.session_name);
126
140
  }
127
141
  async normalizeStartupStatus(session) {
128
- if (session.runtime !== "claude-code")
129
- return;
130
- if (!this.claudeContextProvisioner?.checkReady)
142
+ const checker = session.runtime ? this.readinessCheckers[session.runtime] : undefined;
143
+ if (!checker?.checkReady)
131
144
  return;
132
145
  if (session.startup_status !== "failed" && session.startup_status !== "attention_required")
133
146
  return;
134
147
  try {
135
- const readiness = await this.claudeContextProvisioner.checkReady({
148
+ const readiness = await checker.checkReady({
136
149
  id: `context-monitor:${session.session_id}`,
137
150
  nodeId: session.node_id,
138
151
  attachmentType: "tmux",
@@ -1 +1 @@
1
- {"version":3,"file":"context-monitor.js","sourceRoot":"","sources":["../../src/domain/context-monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-monitor.js","sourceRoot":"","sources":["../../src/domain/context-monitor.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,9 @@ interface RFNodeData {
34
34
  contextTotalOutputTokens: number | null;
35
35
  agentActivity?: AgentActivity | null;
36
36
  currentQitems?: CurrentQitemSummary[];
37
+ terminalActive?: boolean | null;
38
+ hasAssignedWork?: boolean;
39
+ pendingWorkCount?: number;
37
40
  }
38
41
  interface RFNode {
39
42
  id: string;
@@ -67,6 +70,9 @@ export interface InventoryOverlay {
67
70
  contextTotalOutputTokens?: number | null;
68
71
  agentActivity?: AgentActivity | null;
69
72
  currentQitems?: CurrentQitemSummary[];
73
+ terminalActive?: boolean | null;
74
+ hasAssignedWork?: boolean;
75
+ pendingWorkCount?: number;
70
76
  }
71
77
  export declare function projectRigToGraph(input: RigGraphInput, inventoryOverlay?: InventoryOverlay[]): ReactFlowGraph;
72
78
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"graph-projection.d.ts","sourceRoot":"","sources":["../../src/domain/graph-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-projection.d.ts","sourceRoot":"","sources":["../../src/domain/graph-projection.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,9 @@ export function projectRigToGraph(input, inventoryOverlay) {
53
53
  contextTotalOutputTokens: overlay?.contextTotalOutputTokens ?? null,
54
54
  agentActivity: overlay?.agentActivity ?? null,
55
55
  currentQitems: overlay?.currentQitems ?? [],
56
+ terminalActive: overlay?.terminalActive,
57
+ hasAssignedWork: overlay?.hasAssignedWork ?? false,
58
+ pendingWorkCount: overlay?.pendingWorkCount ?? 0,
56
59
  },
57
60
  };
58
61
  });
@@ -89,6 +92,9 @@ export function projectRigToGraph(input, inventoryOverlay) {
89
92
  contextTotalOutputTokens: null,
90
93
  agentActivity: null,
91
94
  currentQitems: [],
95
+ terminalActive: null,
96
+ hasAssignedWork: false,
97
+ pendingWorkCount: 0,
92
98
  },
93
99
  });
94
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graph-projection.js","sourceRoot":"","sources":["../../src/domain/graph-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-projection.js","sourceRoot":"","sources":["../../src/domain/graph-projection.ts"],"names":[],"mappings":"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"}
@@ -94,13 +94,6 @@ export function assessNativeResumeProbe(input) {
94
94
  detail: "Codex could not refresh the stored access token; an operator must sign in again before the session can resume.",
95
95
  };
96
96
  }
97
- if (looksLikeCodexTrustPrompt(paneContent)) {
98
- return {
99
- status: "inconclusive",
100
- code: "trust_gate",
101
- detail: "Codex is waiting for workspace trust approval before the session can become interactive.",
102
- };
103
- }
104
97
  if (looksLikeCodexModelSelectionPrompt(paneContent)) {
105
98
  return {
106
99
  status: "inconclusive",
@@ -115,6 +108,13 @@ export function assessNativeResumeProbe(input) {
115
108
  detail: "Codex is running with an active interactive TUI in the probe pane.",
116
109
  };
117
110
  }
111
+ if (looksLikeCodexTrustPrompt(paneContent)) {
112
+ return {
113
+ status: "inconclusive",
114
+ code: "trust_gate",
115
+ detail: "Codex is waiting for workspace trust approval before the session can become interactive.",
116
+ };
117
+ }
118
118
  if (paneContent.includes("Update available!") || paneContent.includes("Updating Codex")) {
119
119
  return {
120
120
  status: "inconclusive",
@@ -1 +1 @@
1
- {"version":3,"file":"native-resume-probe.js","sourceRoot":"","sources":["../../src/domain/native-resume-probe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-resume-probe.js","sourceRoot":"","sources":["../../src/domain/native-resume-probe.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { NodeInventoryEntry, NodeDetailEntry, NodeRestoreOutcome, NodeLifec
3
3
  import type { RuntimeAdapter } from "./runtime-adapter.js";
4
4
  import type { ContextUsageStore } from "./context-usage-store.js";
5
5
  import type { AgentActivityStore } from "./agent-activity-store.js";
6
+ import type { SeatActivityService } from "./seat-activity-service.js";
6
7
  import type { TmuxAdapter } from "../adapters/tmux.js";
7
8
  /**
8
9
  * Derives per-node lifecycle state from session/restore truth plus the rig's latest
@@ -53,6 +54,23 @@ export declare function getNodeInventoryWithContext(db: Database.Database, rigId
53
54
  * Context-aware wrapper: returns node detail with context usage attached.
54
55
  */
55
56
  export declare function getNodeDetailWithContext(db: Database.Database, rigId: string, logicalId: string, contextUsageStore: ContextUsageStore, opts?: Parameters<typeof getNodeDetail>[3]): NodeDetailEntry | null;
57
+ /**
58
+ * Slice 15 — populate `terminalActive` + `hasAssignedWork` per node.
59
+ *
60
+ * Two orthogonal enrichments computed independently (non-inference
61
+ * contract per IMPL-PRD §2.3):
62
+ * - `terminalActive`: read from SeatActivityService (tmux signal)
63
+ * - `hasAssignedWork` + `pendingWorkCount`: derived from queue_items
64
+ * where destination_session matches the seat's canonical session name
65
+ *
66
+ * Pure / synchronous — keeps the projection cheap for both `rig ps` and
67
+ * the UI which both fetch this per-request. The two enrichments do not
68
+ * read each other's source.
69
+ */
70
+ export declare function attachTerminalActivityAndWork(entries: NodeInventoryEntry[], deps: {
71
+ db: Database.Database;
72
+ seatActivity?: SeatActivityService;
73
+ }): NodeInventoryEntry[];
56
74
  export declare function attachAgentActivity(entries: NodeInventoryEntry[], deps: {
57
75
  tmuxAdapter: TmuxAdapter;
58
76
  activityStore?: AgentActivityStore;
@@ -1 +1 @@
1
- {"version":3,"file":"node-inventory.d.ts","sourceRoot":"","sources":["../../src/domain/node-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAyD,kBAAkB,EAAE,kBAAkB,EAAgD,QAAQ,EAAiB,MAAM,YAAY,CAAC;AAC5O,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAuJvD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,kBAAkB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAC;CACjC,GAAG,kBAAkB,CAoBrB;AAwFD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA+G3F;AAiBD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,iGAAiG;IACjG,0BAA0B,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1F,GACA,eAAe,GAAG,IAAI,CAgJxB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,iBAAiB,GACnC,kBAAkB,EAAE,CAoBtB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,GACzC,eAAe,GAAG,IAAI,CAexB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,IAAI,EAAE;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,GACjF,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAyB/B"}
1
+ {"version":3,"file":"node-inventory.d.ts","sourceRoot":"","sources":["../../src/domain/node-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAyD,kBAAkB,EAAE,kBAAkB,EAAgD,QAAQ,EAAiB,MAAM,YAAY,CAAC;AAC5O,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAwJvD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,kBAAkB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAC;CACjC,GAAG,kBAAkB,CAoBrB;AAwFD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA+G3F;AAiBD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,iGAAiG;IACjG,0BAA0B,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1F,GACA,eAAe,GAAG,IAAI,CAgJxB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,iBAAiB,GACnC,kBAAkB,EAAE,CAoBtB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,GACzC,eAAe,GAAG,IAAI,CAexB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,kBAAkB,EAAE,EAC7B,IAAI,EAAE;IAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAAC,YAAY,CAAC,EAAE,mBAAmB,CAAA;CAAE,GAClE,kBAAkB,EAAE,CAiBtB;AAqED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,IAAI,EAAE;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,GACjF,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAyB/B"}
@@ -1,6 +1,7 @@
1
1
  import { probeSessionActivity } from "./session-transport.js";
2
2
  import { findLatestUsableSnapshot } from "./rig-repository.js";
3
3
  import { resolveNodeWorkspace } from "./workspace/workspace-resolver.js";
4
+ import { deriveCanonicalSessionName } from "./session-name.js";
4
5
  // -- Helpers --
5
6
  function computeResumeCommand(runtime, resumeToken, codexConfigProfile) {
6
7
  if (!resumeToken)
@@ -487,6 +488,103 @@ export function getNodeDetailWithContext(db, rigId, logicalId, contextUsageStore
487
488
  }
488
489
  return detail;
489
490
  }
491
+ /**
492
+ * Slice 15 — populate `terminalActive` + `hasAssignedWork` per node.
493
+ *
494
+ * Two orthogonal enrichments computed independently (non-inference
495
+ * contract per IMPL-PRD §2.3):
496
+ * - `terminalActive`: read from SeatActivityService (tmux signal)
497
+ * - `hasAssignedWork` + `pendingWorkCount`: derived from queue_items
498
+ * where destination_session matches the seat's canonical session name
499
+ *
500
+ * Pure / synchronous — keeps the projection cheap for both `rig ps` and
501
+ * the UI which both fetch this per-request. The two enrichments do not
502
+ * read each other's source.
503
+ */
504
+ export function attachTerminalActivityAndWork(entries, deps) {
505
+ const seatActivity = deps.seatActivity ?? null;
506
+ const pendingByDest = readPendingWorkBySession(deps.db);
507
+ return entries.map((entry) => {
508
+ let terminalActive = undefined;
509
+ if (seatActivity && entry.canonicalSessionName) {
510
+ const obs = seatActivity.getSeatActivity(entry.canonicalSessionName);
511
+ terminalActive = obs ? obs.isActiveWithinWindow : null;
512
+ }
513
+ const pendingCount = countPendingForEntry(entry, pendingByDest);
514
+ return {
515
+ ...entry,
516
+ terminalActive,
517
+ hasAssignedWork: pendingCount > 0,
518
+ pendingWorkCount: pendingCount,
519
+ };
520
+ });
521
+ }
522
+ /**
523
+ * QA baseline-deep-dogfood BLOCKING-A2 (qitem-20260518063900-85745917):
524
+ * adopted/live-session rigs do NOT surface assigned queue work because
525
+ * the prior lookup matched destination_session ONLY against
526
+ * canonicalSessionName.
527
+ *
528
+ * For MANAGED seats, canonicalSessionName equals the canonical form
529
+ * `{pod}-{member}@{rig}` (set by deriveCanonicalSessionName at
530
+ * materialize time) and queue operators address them by that form, so
531
+ * the single-key lookup works.
532
+ *
533
+ * For ADOPTED seats, canonicalSessionName is the RAW tmux session
534
+ * name (whatever the adopter chose, e.g., `my-existing-claude`).
535
+ * Operators address adopted seats by the canonical form (logical
536
+ * `{pod}-{member}@{rig}`) through `rig queue create --destination`,
537
+ * so the single-key lookup misses.
538
+ *
539
+ * Resolve via BOTH forms:
540
+ * 1. entry.canonicalSessionName (covers managed + adopted-by-raw)
541
+ * 2. derived `{pod}-{member}@{rig}` from logicalId + rigName
542
+ * (covers adopted-by-canonical)
543
+ *
544
+ * The logicalId is the pod-aware `pod.member` form (dot-separated).
545
+ * The canonical session form replaces the dot with a dash to match the
546
+ * convention from deriveCanonicalSessionName (so `redo.driver-2` in
547
+ * rig `openrig-velocity` becomes `redo-driver-2@openrig-velocity`).
548
+ *
549
+ * Sums distinct destination_session keys to avoid double-counting
550
+ * when both forms are identical (managed seats whose
551
+ * canonicalSessionName already equals the derived canonical form).
552
+ */
553
+ function countPendingForEntry(entry, pendingByDest) {
554
+ const keys = new Set();
555
+ if (entry.canonicalSessionName)
556
+ keys.add(entry.canonicalSessionName);
557
+ const derived = deriveCanonicalFromEntry(entry);
558
+ if (derived)
559
+ keys.add(derived);
560
+ let count = 0;
561
+ for (const key of keys) {
562
+ count += pendingByDest.get(key) ?? 0;
563
+ }
564
+ return count;
565
+ }
566
+ function deriveCanonicalFromEntry(entry) {
567
+ if (!entry.rigName || !entry.logicalId)
568
+ return null;
569
+ const dotIdx = entry.logicalId.indexOf(".");
570
+ if (dotIdx <= 0 || dotIdx === entry.logicalId.length - 1)
571
+ return null;
572
+ const pod = entry.logicalId.slice(0, dotIdx);
573
+ const member = entry.logicalId.slice(dotIdx + 1);
574
+ return deriveCanonicalSessionName(pod, member, entry.rigName);
575
+ }
576
+ function readPendingWorkBySession(db) {
577
+ const rows = db.prepare(`
578
+ SELECT destination_session, COUNT(*) as c
579
+ FROM queue_items
580
+ WHERE state = 'pending'
581
+ GROUP BY destination_session
582
+ `).all();
583
+ const out = new Map();
584
+ for (const r of rows)
585
+ out.set(r.destination_session, r.c);
586
+ return out;
587
+ }
490
588
  export async function attachAgentActivity(entries, deps) {
491
589
  const sampledAt = deps.now ?? new Date();
492
590
  return Promise.all(entries.map(async (entry) => {