@pellux/goodvibes-sdk 0.37.2 → 1.0.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 (555) hide show
  1. package/dist/contracts/artifacts/operator-contract.json +3171 -929
  2. package/dist/daemon.d.ts +2 -0
  3. package/dist/daemon.d.ts.map +1 -1
  4. package/dist/daemon.js +4 -0
  5. package/dist/events/communication.d.ts +21 -1
  6. package/dist/events/communication.d.ts.map +1 -1
  7. package/dist/events/surfaces.d.ts +25 -3
  8. package/dist/events/surfaces.d.ts.map +1 -1
  9. package/dist/events/surfaces.js +22 -1
  10. package/dist/events/workflows.d.ts +7 -6
  11. package/dist/events/workflows.d.ts.map +1 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/platform/agents/archetypes.d.ts.map +1 -1
  15. package/dist/platform/agents/archetypes.js +7 -0
  16. package/dist/platform/agents/index.d.ts +1 -0
  17. package/dist/platform/agents/index.d.ts.map +1 -1
  18. package/dist/platform/agents/index.js +1 -0
  19. package/dist/platform/agents/message-bus-core.d.ts +7 -0
  20. package/dist/platform/agents/message-bus-core.d.ts.map +1 -1
  21. package/dist/platform/agents/message-bus-core.js +2 -1
  22. package/dist/platform/agents/orchestrator-runner.d.ts +50 -1
  23. package/dist/platform/agents/orchestrator-runner.d.ts.map +1 -1
  24. package/dist/platform/agents/orchestrator-runner.js +172 -7
  25. package/dist/platform/agents/orchestrator.d.ts +78 -6
  26. package/dist/platform/agents/orchestrator.d.ts.map +1 -1
  27. package/dist/platform/agents/orchestrator.js +95 -18
  28. package/dist/platform/agents/planner-decomposition-runner.d.ts +38 -0
  29. package/dist/platform/agents/planner-decomposition-runner.d.ts.map +1 -0
  30. package/dist/platform/agents/planner-decomposition-runner.js +113 -0
  31. package/dist/platform/agents/turn-knowledge-injection.d.ts +192 -0
  32. package/dist/platform/agents/turn-knowledge-injection.d.ts.map +1 -0
  33. package/dist/platform/agents/turn-knowledge-injection.js +269 -0
  34. package/dist/platform/agents/worktree.d.ts +126 -8
  35. package/dist/platform/agents/worktree.d.ts.map +1 -1
  36. package/dist/platform/agents/worktree.js +240 -19
  37. package/dist/platform/agents/wrfc-controller.d.ts +46 -0
  38. package/dist/platform/agents/wrfc-controller.d.ts.map +1 -1
  39. package/dist/platform/agents/wrfc-controller.js +213 -32
  40. package/dist/platform/agents/wrfc-gate-runtime.d.ts +9 -0
  41. package/dist/platform/agents/wrfc-gate-runtime.d.ts.map +1 -1
  42. package/dist/platform/agents/wrfc-gate-runtime.js +7 -3
  43. package/dist/platform/agents/wrfc-gates.d.ts +1 -1
  44. package/dist/platform/agents/wrfc-gates.d.ts.map +1 -1
  45. package/dist/platform/agents/wrfc-gates.js +7 -1
  46. package/dist/platform/agents/wrfc-types.d.ts +23 -3
  47. package/dist/platform/agents/wrfc-types.d.ts.map +1 -1
  48. package/dist/platform/automation/types.d.ts +9 -1
  49. package/dist/platform/automation/types.d.ts.map +1 -1
  50. package/dist/platform/calendar/calendar-api-shared.d.ts +25 -0
  51. package/dist/platform/calendar/calendar-api-shared.d.ts.map +1 -0
  52. package/dist/platform/calendar/calendar-api-shared.js +100 -0
  53. package/dist/platform/calendar/calendar-connector.d.ts +79 -0
  54. package/dist/platform/calendar/calendar-connector.d.ts.map +1 -0
  55. package/dist/platform/calendar/calendar-connector.js +155 -0
  56. package/dist/platform/calendar/google-calendar-api.d.ts +25 -0
  57. package/dist/platform/calendar/google-calendar-api.d.ts.map +1 -0
  58. package/dist/platform/calendar/google-calendar-api.js +89 -0
  59. package/dist/platform/calendar/http-fetch-adapter.d.ts +25 -0
  60. package/dist/platform/calendar/http-fetch-adapter.d.ts.map +1 -0
  61. package/dist/platform/calendar/http-fetch-adapter.js +25 -0
  62. package/dist/platform/calendar/ics-parser.d.ts +35 -0
  63. package/dist/platform/calendar/ics-parser.d.ts.map +1 -0
  64. package/dist/platform/calendar/ics-parser.js +236 -0
  65. package/dist/platform/calendar/index.d.ts +41 -0
  66. package/dist/platform/calendar/index.d.ts.map +1 -0
  67. package/dist/platform/calendar/index.js +49 -0
  68. package/dist/platform/calendar/merged-calendar-model.d.ts +67 -0
  69. package/dist/platform/calendar/merged-calendar-model.d.ts.map +1 -0
  70. package/dist/platform/calendar/merged-calendar-model.js +181 -0
  71. package/dist/platform/calendar/microsoft-graph-api.d.ts +25 -0
  72. package/dist/platform/calendar/microsoft-graph-api.d.ts.map +1 -0
  73. package/dist/platform/calendar/microsoft-graph-api.js +95 -0
  74. package/dist/platform/calendar/oauth-flow.d.ts +62 -0
  75. package/dist/platform/calendar/oauth-flow.d.ts.map +1 -0
  76. package/dist/platform/calendar/oauth-flow.js +305 -0
  77. package/dist/platform/calendar/oauth-providers.d.ts +43 -0
  78. package/dist/platform/calendar/oauth-providers.d.ts.map +1 -0
  79. package/dist/platform/calendar/oauth-providers.js +120 -0
  80. package/dist/platform/calendar/oauth-token-store.d.ts +72 -0
  81. package/dist/platform/calendar/oauth-token-store.d.ts.map +1 -0
  82. package/dist/platform/calendar/oauth-token-store.js +189 -0
  83. package/dist/platform/calendar/oauth-types.d.ts +274 -0
  84. package/dist/platform/calendar/oauth-types.d.ts.map +1 -0
  85. package/dist/platform/calendar/oauth-types.js +22 -0
  86. package/dist/platform/calendar/rrule.d.ts +39 -0
  87. package/dist/platform/calendar/rrule.d.ts.map +1 -0
  88. package/dist/platform/calendar/rrule.js +261 -0
  89. package/dist/platform/calendar/subscription-store.d.ts +118 -0
  90. package/dist/platform/calendar/subscription-store.d.ts.map +1 -0
  91. package/dist/platform/calendar/subscription-store.js +293 -0
  92. package/dist/platform/calendar/types.d.ts +170 -0
  93. package/dist/platform/calendar/types.d.ts.map +1 -0
  94. package/dist/platform/calendar/types.js +21 -0
  95. package/dist/platform/companion/companion-chat-attachments.d.ts +29 -0
  96. package/dist/platform/companion/companion-chat-attachments.d.ts.map +1 -0
  97. package/dist/platform/companion/companion-chat-attachments.js +121 -0
  98. package/dist/platform/companion/companion-chat-broker-bridge.d.ts +40 -0
  99. package/dist/platform/companion/companion-chat-broker-bridge.d.ts.map +1 -0
  100. package/dist/platform/companion/companion-chat-broker-bridge.js +14 -0
  101. package/dist/platform/companion/companion-chat-broker-sync.d.ts +38 -0
  102. package/dist/platform/companion/companion-chat-broker-sync.d.ts.map +1 -0
  103. package/dist/platform/companion/companion-chat-broker-sync.js +80 -0
  104. package/dist/platform/companion/companion-chat-gc.d.ts +63 -0
  105. package/dist/platform/companion/companion-chat-gc.d.ts.map +1 -0
  106. package/dist/platform/companion/companion-chat-gc.js +38 -0
  107. package/dist/platform/companion/companion-chat-manager.d.ts +67 -20
  108. package/dist/platform/companion/companion-chat-manager.d.ts.map +1 -1
  109. package/dist/platform/companion/companion-chat-manager.js +130 -144
  110. package/dist/platform/companion/companion-chat-persistence.d.ts +9 -1
  111. package/dist/platform/companion/companion-chat-persistence.d.ts.map +1 -1
  112. package/dist/platform/companion/companion-chat-persistence.js +10 -2
  113. package/dist/platform/companion/companion-chat-routes.d.ts +2 -1
  114. package/dist/platform/companion/companion-chat-routes.d.ts.map +1 -1
  115. package/dist/platform/companion/companion-chat-routes.js +37 -4
  116. package/dist/platform/config/credential-status.d.ts +28 -0
  117. package/dist/platform/config/credential-status.d.ts.map +1 -0
  118. package/dist/platform/config/credential-status.js +75 -0
  119. package/dist/platform/config/index.d.ts +25 -0
  120. package/dist/platform/config/index.d.ts.map +1 -1
  121. package/dist/platform/config/index.js +18 -0
  122. package/dist/platform/config/manager.d.ts +18 -0
  123. package/dist/platform/config/manager.d.ts.map +1 -1
  124. package/dist/platform/config/manager.js +36 -2
  125. package/dist/platform/config/migrations.d.ts +48 -0
  126. package/dist/platform/config/migrations.d.ts.map +1 -0
  127. package/dist/platform/config/migrations.js +54 -0
  128. package/dist/platform/config/schema-domain-core.d.ts +10 -1
  129. package/dist/platform/config/schema-domain-core.d.ts.map +1 -1
  130. package/dist/platform/config/schema-domain-core.js +46 -3
  131. package/dist/platform/config/schema-types.d.ts +13 -7
  132. package/dist/platform/config/schema-types.d.ts.map +1 -1
  133. package/dist/platform/config/schema.d.ts.map +1 -1
  134. package/dist/platform/config/schema.js +2 -0
  135. package/dist/platform/control-plane/approval-broker.d.ts +11 -0
  136. package/dist/platform/control-plane/approval-broker.d.ts.map +1 -1
  137. package/dist/platform/control-plane/approval-broker.js +17 -1
  138. package/dist/platform/control-plane/approval-hunk-apply.d.ts +77 -0
  139. package/dist/platform/control-plane/approval-hunk-apply.d.ts.map +1 -0
  140. package/dist/platform/control-plane/approval-hunk-apply.js +80 -0
  141. package/dist/platform/control-plane/gateway-disabled-response.d.ts +20 -0
  142. package/dist/platform/control-plane/gateway-disabled-response.d.ts.map +1 -0
  143. package/dist/platform/control-plane/gateway-disabled-response.js +24 -0
  144. package/dist/platform/control-plane/gateway-scope-enforcement.d.ts +68 -0
  145. package/dist/platform/control-plane/gateway-scope-enforcement.d.ts.map +1 -0
  146. package/dist/platform/control-plane/gateway-scope-enforcement.js +91 -0
  147. package/dist/platform/control-plane/gateway-utils.d.ts +17 -0
  148. package/dist/platform/control-plane/gateway-utils.d.ts.map +1 -1
  149. package/dist/platform/control-plane/gateway-utils.js +30 -0
  150. package/dist/platform/control-plane/gateway.d.ts +12 -2
  151. package/dist/platform/control-plane/gateway.d.ts.map +1 -1
  152. package/dist/platform/control-plane/gateway.js +27 -31
  153. package/dist/platform/control-plane/index.d.ts +6 -1
  154. package/dist/platform/control-plane/index.d.ts.map +1 -1
  155. package/dist/platform/control-plane/index.js +4 -0
  156. package/dist/platform/control-plane/invoke-input-validation.d.ts +56 -0
  157. package/dist/platform/control-plane/invoke-input-validation.d.ts.map +1 -0
  158. package/dist/platform/control-plane/invoke-input-validation.js +163 -0
  159. package/dist/platform/control-plane/method-catalog-admin.d.ts.map +1 -1
  160. package/dist/platform/control-plane/method-catalog-admin.js +12 -1
  161. package/dist/platform/control-plane/method-catalog-calendar.d.ts +16 -0
  162. package/dist/platform/control-plane/method-catalog-calendar.d.ts.map +1 -1
  163. package/dist/platform/control-plane/method-catalog-calendar.js +21 -0
  164. package/dist/platform/control-plane/method-catalog-channels.d.ts.map +1 -1
  165. package/dist/platform/control-plane/method-catalog-channels.js +32 -3
  166. package/dist/platform/control-plane/method-catalog-control-automation.d.ts.map +1 -1
  167. package/dist/platform/control-plane/method-catalog-control-automation.js +19 -34
  168. package/dist/platform/control-plane/method-catalog-control-companion.d.ts +15 -0
  169. package/dist/platform/control-plane/method-catalog-control-companion.d.ts.map +1 -0
  170. package/dist/platform/control-plane/method-catalog-control-companion.js +133 -0
  171. package/dist/platform/control-plane/method-catalog-control-core.d.ts.map +1 -1
  172. package/dist/platform/control-plane/method-catalog-control-core.js +104 -122
  173. package/dist/platform/control-plane/method-catalog-control.d.ts.map +1 -1
  174. package/dist/platform/control-plane/method-catalog-control.js +4 -0
  175. package/dist/platform/control-plane/method-catalog-email.d.ts +17 -0
  176. package/dist/platform/control-plane/method-catalog-email.d.ts.map +1 -1
  177. package/dist/platform/control-plane/method-catalog-email.js +21 -0
  178. package/dist/platform/control-plane/method-catalog-events.d.ts +28 -0
  179. package/dist/platform/control-plane/method-catalog-events.d.ts.map +1 -1
  180. package/dist/platform/control-plane/method-catalog-events.js +74 -1
  181. package/dist/platform/control-plane/method-catalog-fleet.d.ts +24 -0
  182. package/dist/platform/control-plane/method-catalog-fleet.d.ts.map +1 -0
  183. package/dist/platform/control-plane/method-catalog-fleet.js +65 -0
  184. package/dist/platform/control-plane/method-catalog-route-reconcile.d.ts +84 -0
  185. package/dist/platform/control-plane/method-catalog-route-reconcile.d.ts.map +1 -0
  186. package/dist/platform/control-plane/method-catalog-route-reconcile.js +103 -0
  187. package/dist/platform/control-plane/method-catalog-shared.d.ts +29 -0
  188. package/dist/platform/control-plane/method-catalog-shared.d.ts.map +1 -1
  189. package/dist/platform/control-plane/method-catalog.d.ts +9 -0
  190. package/dist/platform/control-plane/method-catalog.d.ts.map +1 -1
  191. package/dist/platform/control-plane/method-catalog.js +32 -3
  192. package/dist/platform/control-plane/operator-contract-schemas-admin.d.ts +8 -0
  193. package/dist/platform/control-plane/operator-contract-schemas-admin.d.ts.map +1 -1
  194. package/dist/platform/control-plane/operator-contract-schemas-admin.js +22 -1
  195. package/dist/platform/control-plane/operator-contract-schemas-fleet.d.ts +18 -0
  196. package/dist/platform/control-plane/operator-contract-schemas-fleet.d.ts.map +1 -0
  197. package/dist/platform/control-plane/operator-contract-schemas-fleet.js +182 -0
  198. package/dist/platform/control-plane/operator-contract-schemas-permissions.d.ts.map +1 -1
  199. package/dist/platform/control-plane/operator-contract-schemas-permissions.js +5 -0
  200. package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts +29 -0
  201. package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts.map +1 -1
  202. package/dist/platform/control-plane/operator-contract-schemas-runtime.js +57 -3
  203. package/dist/platform/control-plane/operator-contract-schemas.d.ts +1 -0
  204. package/dist/platform/control-plane/operator-contract-schemas.d.ts.map +1 -1
  205. package/dist/platform/control-plane/operator-contract-schemas.js +1 -0
  206. package/dist/platform/control-plane/operator-contract.d.ts.map +1 -1
  207. package/dist/platform/control-plane/operator-contract.js +8 -0
  208. package/dist/platform/control-plane/routes/checkpoints.d.ts +39 -0
  209. package/dist/platform/control-plane/routes/checkpoints.d.ts.map +1 -0
  210. package/dist/platform/control-plane/routes/checkpoints.js +166 -0
  211. package/dist/platform/control-plane/routes/fleet.d.ts +53 -0
  212. package/dist/platform/control-plane/routes/fleet.d.ts.map +1 -0
  213. package/dist/platform/control-plane/routes/fleet.js +153 -0
  214. package/dist/platform/control-plane/routes/gateway-verb-error.d.ts +30 -0
  215. package/dist/platform/control-plane/routes/gateway-verb-error.d.ts.map +1 -0
  216. package/dist/platform/control-plane/routes/gateway-verb-error.js +36 -0
  217. package/dist/platform/control-plane/routes/index.d.ts +0 -6
  218. package/dist/platform/control-plane/routes/index.d.ts.map +1 -1
  219. package/dist/platform/control-plane/routes/index.js +5 -5
  220. package/dist/platform/control-plane/routes/invocation-params.d.ts +23 -0
  221. package/dist/platform/control-plane/routes/invocation-params.d.ts.map +1 -0
  222. package/dist/platform/control-plane/routes/invocation-params.js +9 -0
  223. package/dist/platform/control-plane/routes/register-w3-s2.d.ts +26 -0
  224. package/dist/platform/control-plane/routes/register-w3-s2.d.ts.map +1 -0
  225. package/dist/platform/control-plane/routes/register-w3-s2.js +8 -0
  226. package/dist/platform/control-plane/routes/session-search.d.ts +37 -0
  227. package/dist/platform/control-plane/routes/session-search.d.ts.map +1 -0
  228. package/dist/platform/control-plane/routes/session-search.js +113 -0
  229. package/dist/platform/control-plane/session-broker-gc.d.ts +16 -0
  230. package/dist/platform/control-plane/session-broker-gc.d.ts.map +1 -1
  231. package/dist/platform/control-plane/session-broker-gc.js +23 -6
  232. package/dist/platform/control-plane/session-broker-helpers.d.ts +3 -3
  233. package/dist/platform/control-plane/session-broker-helpers.d.ts.map +1 -1
  234. package/dist/platform/control-plane/session-broker-inputs.d.ts +18 -0
  235. package/dist/platform/control-plane/session-broker-inputs.d.ts.map +1 -1
  236. package/dist/platform/control-plane/session-broker-inputs.js +34 -0
  237. package/dist/platform/control-plane/session-broker-sessions.d.ts +102 -3
  238. package/dist/platform/control-plane/session-broker-sessions.d.ts.map +1 -1
  239. package/dist/platform/control-plane/session-broker-sessions.js +179 -5
  240. package/dist/platform/control-plane/session-broker-state.d.ts +20 -1
  241. package/dist/platform/control-plane/session-broker-state.d.ts.map +1 -1
  242. package/dist/platform/control-plane/session-broker-state.js +67 -5
  243. package/dist/platform/control-plane/session-broker.d.ts +51 -38
  244. package/dist/platform/control-plane/session-broker.d.ts.map +1 -1
  245. package/dist/platform/control-plane/session-broker.js +183 -75
  246. package/dist/platform/control-plane/session-store-importer.d.ts +57 -0
  247. package/dist/platform/control-plane/session-store-importer.d.ts.map +1 -0
  248. package/dist/platform/control-plane/session-store-importer.js +227 -0
  249. package/dist/platform/control-plane/session-types.d.ts +142 -7
  250. package/dist/platform/control-plane/session-types.d.ts.map +1 -1
  251. package/dist/platform/core/adaptive-planner.d.ts +50 -0
  252. package/dist/platform/core/adaptive-planner.d.ts.map +1 -1
  253. package/dist/platform/core/adaptive-planner.js +49 -0
  254. package/dist/platform/core/execution-plan.d.ts +43 -1
  255. package/dist/platform/core/execution-plan.d.ts.map +1 -1
  256. package/dist/platform/core/execution-plan.js +46 -10
  257. package/dist/platform/core/index.d.ts +2 -0
  258. package/dist/platform/core/index.d.ts.map +1 -1
  259. package/dist/platform/core/index.js +2 -0
  260. package/dist/platform/core/orchestrator-runtime.d.ts +31 -0
  261. package/dist/platform/core/orchestrator-runtime.d.ts.map +1 -1
  262. package/dist/platform/core/orchestrator-tool-runtime.d.ts +7 -0
  263. package/dist/platform/core/orchestrator-tool-runtime.d.ts.map +1 -1
  264. package/dist/platform/core/orchestrator-tool-runtime.js +10 -0
  265. package/dist/platform/core/orchestrator-turn-loop.d.ts +35 -1
  266. package/dist/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
  267. package/dist/platform/core/orchestrator-turn-loop.js +121 -3
  268. package/dist/platform/core/orchestrator.d.ts +67 -0
  269. package/dist/platform/core/orchestrator.d.ts.map +1 -1
  270. package/dist/platform/core/orchestrator.js +89 -1
  271. package/dist/platform/core/plan-decomposition.d.ts +196 -0
  272. package/dist/platform/core/plan-decomposition.d.ts.map +1 -0
  273. package/dist/platform/core/plan-decomposition.js +417 -0
  274. package/dist/platform/core/plan-proposal.d.ts +204 -0
  275. package/dist/platform/core/plan-proposal.d.ts.map +1 -0
  276. package/dist/platform/core/plan-proposal.js +296 -0
  277. package/dist/platform/core/wrfc-routing.d.ts +1 -0
  278. package/dist/platform/core/wrfc-routing.d.ts.map +1 -1
  279. package/dist/platform/core/wrfc-routing.js +51 -1
  280. package/dist/platform/daemon/boot.d.ts +63 -0
  281. package/dist/platform/daemon/boot.d.ts.map +1 -0
  282. package/dist/platform/daemon/boot.js +60 -0
  283. package/dist/platform/daemon/cli.js +2 -1
  284. package/dist/platform/daemon/control-plane.d.ts.map +1 -1
  285. package/dist/platform/daemon/control-plane.js +50 -1
  286. package/dist/platform/daemon/facade-composition.d.ts.map +1 -1
  287. package/dist/platform/daemon/facade-composition.js +6 -0
  288. package/dist/platform/daemon/facade.d.ts +18 -6
  289. package/dist/platform/daemon/facade.d.ts.map +1 -1
  290. package/dist/platform/daemon/facade.js +50 -43
  291. package/dist/platform/daemon/http/router-route-contexts.d.ts +1 -0
  292. package/dist/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
  293. package/dist/platform/daemon/http/router-route-contexts.js +1 -0
  294. package/dist/platform/daemon/http/router-session-broker-adapter.d.ts +13 -0
  295. package/dist/platform/daemon/http/router-session-broker-adapter.d.ts.map +1 -0
  296. package/dist/platform/daemon/http/router-session-broker-adapter.js +27 -0
  297. package/dist/platform/daemon/http/router.d.ts +1 -1
  298. package/dist/platform/daemon/http/router.d.ts.map +1 -1
  299. package/dist/platform/daemon/http/router.js +7 -22
  300. package/dist/platform/daemon/http/runtime-route-types.d.ts +42 -4
  301. package/dist/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
  302. package/dist/platform/daemon/index.d.ts +2 -0
  303. package/dist/platform/daemon/index.d.ts.map +1 -1
  304. package/dist/platform/daemon/index.js +1 -0
  305. package/dist/platform/daemon/service-manager.d.ts +16 -0
  306. package/dist/platform/daemon/service-manager.d.ts.map +1 -1
  307. package/dist/platform/daemon/service-manager.js +79 -15
  308. package/dist/platform/intelligence/tree-sitter/service.d.ts.map +1 -1
  309. package/dist/platform/intelligence/tree-sitter/service.js +16 -2
  310. package/dist/platform/knowledge/browser-history/readers.d.ts.map +1 -1
  311. package/dist/platform/knowledge/browser-history/readers.js +15 -5
  312. package/dist/platform/knowledge/knowledge-api.d.ts +26 -0
  313. package/dist/platform/knowledge/knowledge-api.d.ts.map +1 -1
  314. package/dist/platform/knowledge/knowledge-api.js +11 -0
  315. package/dist/platform/knowledge/project-planning/service.d.ts +14 -1
  316. package/dist/platform/knowledge/project-planning/service.d.ts.map +1 -1
  317. package/dist/platform/knowledge/project-planning/service.js +77 -0
  318. package/dist/platform/knowledge/project-planning/types.d.ts +32 -0
  319. package/dist/platform/knowledge/project-planning/types.d.ts.map +1 -1
  320. package/dist/platform/orchestration/bookkeeping.d.ts +12 -0
  321. package/dist/platform/orchestration/bookkeeping.d.ts.map +1 -0
  322. package/dist/platform/orchestration/bookkeeping.js +91 -0
  323. package/dist/platform/orchestration/budget.d.ts +22 -0
  324. package/dist/platform/orchestration/budget.d.ts.map +1 -0
  325. package/dist/platform/orchestration/budget.js +35 -0
  326. package/dist/platform/orchestration/cancellation.d.ts +31 -0
  327. package/dist/platform/orchestration/cancellation.d.ts.map +1 -0
  328. package/dist/platform/orchestration/cancellation.js +25 -0
  329. package/dist/platform/orchestration/controller-compat.d.ts +46 -0
  330. package/dist/platform/orchestration/controller-compat.d.ts.map +1 -0
  331. package/dist/platform/orchestration/controller-compat.js +27 -0
  332. package/dist/platform/orchestration/dirty-guard.d.ts +32 -0
  333. package/dist/platform/orchestration/dirty-guard.d.ts.map +1 -0
  334. package/dist/platform/orchestration/dirty-guard.js +147 -0
  335. package/dist/platform/orchestration/engine.d.ts +82 -0
  336. package/dist/platform/orchestration/engine.d.ts.map +1 -0
  337. package/dist/platform/orchestration/engine.js +623 -0
  338. package/dist/platform/orchestration/index.d.ts +20 -0
  339. package/dist/platform/orchestration/index.d.ts.map +1 -0
  340. package/dist/platform/orchestration/index.js +11 -0
  341. package/dist/platform/orchestration/persistence.d.ts +24 -0
  342. package/dist/platform/orchestration/persistence.d.ts.map +1 -0
  343. package/dist/platform/orchestration/persistence.js +179 -0
  344. package/dist/platform/orchestration/phase-runner.d.ts +114 -0
  345. package/dist/platform/orchestration/phase-runner.d.ts.map +1 -0
  346. package/dist/platform/orchestration/phase-runner.js +347 -0
  347. package/dist/platform/orchestration/proposal-workstream.d.ts +56 -0
  348. package/dist/platform/orchestration/proposal-workstream.d.ts.map +1 -0
  349. package/dist/platform/orchestration/proposal-workstream.js +76 -0
  350. package/dist/platform/orchestration/scheduler.d.ts +64 -0
  351. package/dist/platform/orchestration/scheduler.d.ts.map +1 -0
  352. package/dist/platform/orchestration/scheduler.js +73 -0
  353. package/dist/platform/orchestration/types.d.ts +535 -0
  354. package/dist/platform/orchestration/types.d.ts.map +1 -0
  355. package/dist/platform/orchestration/types.js +47 -0
  356. package/dist/platform/orchestration/worktree-isolation.d.ts +33 -0
  357. package/dist/platform/orchestration/worktree-isolation.d.ts.map +1 -0
  358. package/dist/platform/orchestration/worktree-isolation.js +248 -0
  359. package/dist/platform/presentation/glyphs.d.ts +91 -0
  360. package/dist/platform/presentation/glyphs.d.ts.map +1 -0
  361. package/dist/platform/presentation/glyphs.js +93 -0
  362. package/dist/platform/presentation/index.d.ts +28 -0
  363. package/dist/platform/presentation/index.d.ts.map +1 -0
  364. package/dist/platform/presentation/index.js +27 -0
  365. package/dist/platform/presentation/thinking-phrases.d.ts +12 -0
  366. package/dist/platform/presentation/thinking-phrases.d.ts.map +1 -0
  367. package/dist/platform/presentation/thinking-phrases.js +32 -0
  368. package/dist/platform/presentation/tones.d.ts +121 -0
  369. package/dist/platform/presentation/tones.d.ts.map +1 -0
  370. package/dist/platform/presentation/tones.js +145 -0
  371. package/dist/platform/presentation/waiting-wording.d.ts +54 -0
  372. package/dist/platform/presentation/waiting-wording.d.ts.map +1 -0
  373. package/dist/platform/presentation/waiting-wording.js +51 -0
  374. package/dist/platform/providers/runtime-snapshot.d.ts.map +1 -1
  375. package/dist/platform/providers/runtime-snapshot.js +12 -2
  376. package/dist/platform/runtime/bootstrap-services.d.ts +62 -2
  377. package/dist/platform/runtime/bootstrap-services.d.ts.map +1 -1
  378. package/dist/platform/runtime/bootstrap-services.js +217 -50
  379. package/dist/platform/runtime/daemon-version-compat.d.ts +39 -0
  380. package/dist/platform/runtime/daemon-version-compat.d.ts.map +1 -0
  381. package/dist/platform/runtime/daemon-version-compat.js +75 -0
  382. package/dist/platform/runtime/detached-daemon-runtime.d.ts +26 -0
  383. package/dist/platform/runtime/detached-daemon-runtime.d.ts.map +1 -0
  384. package/dist/platform/runtime/detached-daemon-runtime.js +49 -0
  385. package/dist/platform/runtime/emitters/communication.d.ts +11 -0
  386. package/dist/platform/runtime/emitters/communication.d.ts.map +1 -1
  387. package/dist/platform/runtime/emitters/communication.js +9 -0
  388. package/dist/platform/runtime/emitters/workflows.d.ts +1 -1
  389. package/dist/platform/runtime/emitters/workflows.d.ts.map +1 -1
  390. package/dist/platform/runtime/events/index.d.ts +13 -0
  391. package/dist/platform/runtime/events/index.d.ts.map +1 -1
  392. package/dist/platform/runtime/events/index.js +13 -0
  393. package/dist/platform/runtime/feature-flags/flags.d.ts.map +1 -1
  394. package/dist/platform/runtime/feature-flags/flags.js +56 -1
  395. package/dist/platform/runtime/fleet/adapters/agent.d.ts +56 -0
  396. package/dist/platform/runtime/fleet/adapters/agent.d.ts.map +1 -0
  397. package/dist/platform/runtime/fleet/adapters/agent.js +143 -0
  398. package/dist/platform/runtime/fleet/adapters/automation.d.ts +30 -0
  399. package/dist/platform/runtime/fleet/adapters/automation.d.ts.map +1 -0
  400. package/dist/platform/runtime/fleet/adapters/automation.js +41 -0
  401. package/dist/platform/runtime/fleet/adapters/background-process.d.ts +12 -0
  402. package/dist/platform/runtime/fleet/adapters/background-process.d.ts.map +1 -0
  403. package/dist/platform/runtime/fleet/adapters/background-process.js +46 -0
  404. package/dist/platform/runtime/fleet/adapters/code-index.d.ts +21 -0
  405. package/dist/platform/runtime/fleet/adapters/code-index.d.ts.map +1 -0
  406. package/dist/platform/runtime/fleet/adapters/code-index.js +44 -0
  407. package/dist/platform/runtime/fleet/adapters/orchestration.d.ts +69 -0
  408. package/dist/platform/runtime/fleet/adapters/orchestration.d.ts.map +1 -0
  409. package/dist/platform/runtime/fleet/adapters/orchestration.js +329 -0
  410. package/dist/platform/runtime/fleet/adapters/schedule.d.ts +14 -0
  411. package/dist/platform/runtime/fleet/adapters/schedule.d.ts.map +1 -0
  412. package/dist/platform/runtime/fleet/adapters/schedule.js +28 -0
  413. package/dist/platform/runtime/fleet/adapters/trigger.d.ts +12 -0
  414. package/dist/platform/runtime/fleet/adapters/trigger.d.ts.map +1 -0
  415. package/dist/platform/runtime/fleet/adapters/trigger.js +22 -0
  416. package/dist/platform/runtime/fleet/adapters/watcher.d.ts +13 -0
  417. package/dist/platform/runtime/fleet/adapters/watcher.d.ts.map +1 -0
  418. package/dist/platform/runtime/fleet/adapters/watcher.js +47 -0
  419. package/dist/platform/runtime/fleet/adapters/workflow.d.ts +11 -0
  420. package/dist/platform/runtime/fleet/adapters/workflow.d.ts.map +1 -0
  421. package/dist/platform/runtime/fleet/adapters/workflow.js +34 -0
  422. package/dist/platform/runtime/fleet/adapters/wrfc.d.ts +35 -0
  423. package/dist/platform/runtime/fleet/adapters/wrfc.d.ts.map +1 -0
  424. package/dist/platform/runtime/fleet/adapters/wrfc.js +275 -0
  425. package/dist/platform/runtime/fleet/index.d.ts +10 -0
  426. package/dist/platform/runtime/fleet/index.d.ts.map +1 -0
  427. package/dist/platform/runtime/fleet/index.js +6 -0
  428. package/dist/platform/runtime/fleet/registry.d.ts +113 -0
  429. package/dist/platform/runtime/fleet/registry.d.ts.map +1 -0
  430. package/dist/platform/runtime/fleet/registry.js +664 -0
  431. package/dist/platform/runtime/fleet/types.d.ts +199 -0
  432. package/dist/platform/runtime/fleet/types.d.ts.map +1 -0
  433. package/dist/platform/runtime/fleet/types.js +2 -0
  434. package/dist/platform/runtime/operator-client.d.ts +20 -2
  435. package/dist/platform/runtime/operator-client.d.ts.map +1 -1
  436. package/dist/platform/runtime/operator-client.js +11 -1
  437. package/dist/platform/runtime/provider-accounts/registry.d.ts.map +1 -1
  438. package/dist/platform/runtime/provider-accounts/registry.js +11 -1
  439. package/dist/platform/runtime/runtime-knowledge-api.d.ts +1 -1
  440. package/dist/platform/runtime/runtime-knowledge-api.d.ts.map +1 -1
  441. package/dist/platform/runtime/runtime-knowledge-api.js +1 -0
  442. package/dist/platform/runtime/services.d.ts +48 -0
  443. package/dist/platform/runtime/services.d.ts.map +1 -1
  444. package/dist/platform/runtime/services.js +95 -2
  445. package/dist/platform/runtime/session-spine/client.d.ts +234 -0
  446. package/dist/platform/runtime/session-spine/client.d.ts.map +1 -0
  447. package/dist/platform/runtime/session-spine/client.js +449 -0
  448. package/dist/platform/runtime/session-spine/index.d.ts +12 -0
  449. package/dist/platform/runtime/session-spine/index.d.ts.map +1 -0
  450. package/dist/platform/runtime/session-spine/index.js +11 -0
  451. package/dist/platform/runtime/session-spine/union-cache.d.ts +225 -0
  452. package/dist/platform/runtime/session-spine/union-cache.d.ts.map +1 -0
  453. package/dist/platform/runtime/session-spine/union-cache.js +333 -0
  454. package/dist/platform/runtime/shell-command-ops.d.ts +3 -1
  455. package/dist/platform/runtime/shell-command-ops.d.ts.map +1 -1
  456. package/dist/platform/runtime/transports/daemon-http-client-validators.d.ts.map +1 -1
  457. package/dist/platform/runtime/transports/daemon-http-client-validators.js +22 -0
  458. package/dist/platform/runtime/transports/daemon-http-client.d.ts.map +1 -1
  459. package/dist/platform/runtime/transports/daemon-http-client.js +25 -2
  460. package/dist/platform/runtime/transports/http-types.d.ts +9 -2
  461. package/dist/platform/runtime/transports/http-types.d.ts.map +1 -1
  462. package/dist/platform/state/canonical-memory.d.ts +95 -0
  463. package/dist/platform/state/canonical-memory.d.ts.map +1 -0
  464. package/dist/platform/state/canonical-memory.js +155 -0
  465. package/dist/platform/state/code-index-chunking.d.ts +49 -0
  466. package/dist/platform/state/code-index-chunking.d.ts.map +1 -0
  467. package/dist/platform/state/code-index-chunking.js +111 -0
  468. package/dist/platform/state/code-index-db.d.ts +53 -0
  469. package/dist/platform/state/code-index-db.d.ts.map +1 -0
  470. package/dist/platform/state/code-index-db.js +101 -0
  471. package/dist/platform/state/code-index-reindex.d.ts +73 -0
  472. package/dist/platform/state/code-index-reindex.d.ts.map +1 -0
  473. package/dist/platform/state/code-index-reindex.js +156 -0
  474. package/dist/platform/state/code-index-store.d.ts +175 -0
  475. package/dist/platform/state/code-index-store.d.ts.map +1 -0
  476. package/dist/platform/state/code-index-store.js +620 -0
  477. package/dist/platform/state/index.d.ts +12 -2
  478. package/dist/platform/state/index.d.ts.map +1 -1
  479. package/dist/platform/state/index.js +6 -1
  480. package/dist/platform/state/knowledge-injection.d.ts +23 -0
  481. package/dist/platform/state/knowledge-injection.d.ts.map +1 -1
  482. package/dist/platform/state/knowledge-injection.js +34 -19
  483. package/dist/platform/state/memory-recall-contract.d.ts +63 -0
  484. package/dist/platform/state/memory-recall-contract.d.ts.map +1 -0
  485. package/dist/platform/state/memory-recall-contract.js +94 -0
  486. package/dist/platform/state/memory-store.d.ts +2 -0
  487. package/dist/platform/state/memory-store.d.ts.map +1 -1
  488. package/dist/platform/state/memory-store.js +4 -0
  489. package/dist/platform/state/memory-vector-store.d.ts +1 -13
  490. package/dist/platform/state/memory-vector-store.d.ts.map +1 -1
  491. package/dist/platform/state/memory-vector-store.js +18 -39
  492. package/dist/platform/state/sqlite-store.d.ts +2 -0
  493. package/dist/platform/state/sqlite-store.d.ts.map +1 -1
  494. package/dist/platform/state/sqlite-store.js +4 -0
  495. package/dist/platform/state/sqlite-vec-loader.d.ts +25 -0
  496. package/dist/platform/state/sqlite-vec-loader.d.ts.map +1 -0
  497. package/dist/platform/state/sqlite-vec-loader.js +43 -0
  498. package/dist/platform/state/vibe-projection.d.ts +67 -0
  499. package/dist/platform/state/vibe-projection.d.ts.map +1 -0
  500. package/dist/platform/state/vibe-projection.js +115 -0
  501. package/dist/platform/tools/agent/index.d.ts.map +1 -1
  502. package/dist/platform/tools/agent/index.js +8 -0
  503. package/dist/platform/tools/agent/manager.d.ts +140 -1
  504. package/dist/platform/tools/agent/manager.d.ts.map +1 -1
  505. package/dist/platform/tools/agent/manager.js +143 -1
  506. package/dist/platform/tools/agent/schema.d.ts +26 -0
  507. package/dist/platform/tools/agent/schema.d.ts.map +1 -1
  508. package/dist/platform/tools/agent/schema.js +2 -2
  509. package/dist/platform/tools/agent/wrfc-batch-policy.d.ts +13 -0
  510. package/dist/platform/tools/agent/wrfc-batch-policy.d.ts.map +1 -1
  511. package/dist/platform/tools/agent/wrfc-batch-policy.js +60 -0
  512. package/dist/platform/tools/exec/runtime.d.ts +10 -0
  513. package/dist/platform/tools/exec/runtime.d.ts.map +1 -1
  514. package/dist/platform/tools/exec/runtime.js +161 -49
  515. package/dist/platform/tools/exec/schema.d.ts +3 -1
  516. package/dist/platform/tools/exec/schema.d.ts.map +1 -1
  517. package/dist/platform/tools/exec/schema.js +2 -1
  518. package/dist/platform/tools/fetch/runtime.d.ts +7 -0
  519. package/dist/platform/tools/fetch/runtime.d.ts.map +1 -1
  520. package/dist/platform/tools/fetch/runtime.js +8 -6
  521. package/dist/platform/tools/index.d.ts +2 -0
  522. package/dist/platform/tools/index.d.ts.map +1 -1
  523. package/dist/platform/tools/index.js +2 -0
  524. package/dist/platform/tools/registry.d.ts +9 -3
  525. package/dist/platform/tools/registry.d.ts.map +1 -1
  526. package/dist/platform/tools/registry.js +9 -3
  527. package/dist/platform/tools/state/index.d.ts +9 -0
  528. package/dist/platform/tools/state/index.d.ts.map +1 -1
  529. package/dist/platform/tools/state/index.js +60 -3
  530. package/dist/platform/types/foundation-contract.d.ts +1 -1
  531. package/dist/platform/types/foundation-contract.d.ts.map +1 -1
  532. package/dist/platform/types/index.d.ts +1 -1
  533. package/dist/platform/types/index.d.ts.map +1 -1
  534. package/dist/platform/types/tools.d.ts +14 -1
  535. package/dist/platform/types/tools.d.ts.map +1 -1
  536. package/dist/platform/version.js +1 -1
  537. package/package.json +29 -9
  538. package/dist/platform/control-plane/routes/automation.d.ts +0 -3
  539. package/dist/platform/control-plane/routes/automation.d.ts.map +0 -1
  540. package/dist/platform/control-plane/routes/automation.js +0 -63
  541. package/dist/platform/control-plane/routes/context.d.ts +0 -2
  542. package/dist/platform/control-plane/routes/context.d.ts.map +0 -1
  543. package/dist/platform/control-plane/routes/context.js +0 -1
  544. package/dist/platform/control-plane/routes/operator.d.ts +0 -8
  545. package/dist/platform/control-plane/routes/operator.d.ts.map +0 -1
  546. package/dist/platform/control-plane/routes/operator.js +0 -415
  547. package/dist/platform/control-plane/routes/remote.d.ts +0 -3
  548. package/dist/platform/control-plane/routes/remote.d.ts.map +0 -1
  549. package/dist/platform/control-plane/routes/remote.js +0 -35
  550. package/dist/platform/control-plane/routes/sessions.d.ts +0 -3
  551. package/dist/platform/control-plane/routes/sessions.d.ts.map +0 -1
  552. package/dist/platform/control-plane/routes/sessions.js +0 -43
  553. package/dist/platform/control-plane/routes/tasks.d.ts +0 -3
  554. package/dist/platform/control-plane/routes/tasks.d.ts.map +0 -1
  555. package/dist/platform/control-plane/routes/tasks.js +0 -22
@@ -14,6 +14,7 @@ import { isTransportFailureMessage } from '../types/errors.js';
14
14
  import { buildEngineerConstraintAddendum, } from './wrfc-prompt-addenda.js';
15
15
  import { completeWrfcOrchestrationNode, createWrfcWorkflowContext, emitWrfcAutoCommitted, emitWrfcCascadeAbort, emitWrfcChainCreated, emitWrfcChainPassed, emitWrfcConstraintsEnumerated, emitWrfcGraphCreated, emitWrfcScoreRegression, emitWrfcStateChanged, failWrfcOrchestrationNode, startWrfcOrchestrationNode, } from './wrfc-runtime-events.js';
16
16
  import { runWrfcGateChecks } from './wrfc-gate-runtime.js';
17
+ import { isFanoutShapeConstraintText } from '../tools/agent/wrfc-batch-policy.js';
17
18
  export { extractScoreFromText, extractPassedFromText, extractIssuesFromText } from './wrfc-reporting.js';
18
19
  /**
19
20
  * Schema version for the serialized WRFC chain envelope.
@@ -296,7 +297,17 @@ export class WrfcController {
296
297
  });
297
298
  return false;
298
299
  }
300
+ // Insert into the chain map BEFORE reapZombieChain runs. reapZombieChain
301
+ // emits state-changed + chain-failed for a terminal transition, and every
302
+ // other terminal transition in this controller operates on a chain already
303
+ // present in this.chains — so a consumer that resolves the chain via
304
+ // getChain(id) in response to those events finds it, consistent with the
305
+ // rest of the lifecycle. (chain is a reference already held here, so
306
+ // setting first and then mutating it in reapZombieChain is equivalent.)
299
307
  this.chains.set(chain.id, chain);
308
+ if (!isChainTerminal(chain.state) && this.isZombieChain(chain)) {
309
+ this.reapZombieChain(chain);
310
+ }
300
311
  logger.info('WrfcController.importChain: chain imported', {
301
312
  chainId: chain.id,
302
313
  state: chain.state,
@@ -304,6 +315,51 @@ export class WrfcController {
304
315
  });
305
316
  return true;
306
317
  }
318
+ /**
319
+ * Item d5 (Wave 6, wo-F): resurrection-safe zombie check for a chain about
320
+ * to be imported at rehydrate. A non-terminal chain whose ENTIRE roster
321
+ * (allAgentIds) is absent from THIS process's live AgentManager never
322
+ * survived the restart — no in-process execution is coming back to finish
323
+ * it, so it would otherwise show as "running" forever. If even ONE roster
324
+ * agent id IS live (e.g. re-imported mid-session, not at a real process
325
+ * restart), this returns false and the chain is left exactly as imported —
326
+ * reaping only ever fires when NOTHING could possibly still be driving it.
327
+ */
328
+ isZombieChain(chain) {
329
+ if (chain.allAgentIds.length === 0)
330
+ return false;
331
+ return chain.allAgentIds.every((agentId) => this.agentManager.getStatus(agentId) === null);
332
+ }
333
+ /**
334
+ * Item d5: mark a reimported zombie chain terminal at import time so it
335
+ * presents as failed + prunable instead of stuck non-terminal forever.
336
+ * Deliberately does NOT call failChain()/cancelChain(): those assume a
337
+ * live in-memory execution (cancel running children, complete the owner
338
+ * agent record, re-check gates for siblings) that makes no sense for a
339
+ * chain whose entire roster is already confirmed dead — this is a direct,
340
+ * minimal field mutation plus the same state-changed/chain-failed events
341
+ * every other terminal transition emits, so consumers see one consistent
342
+ * "chain failed" signal regardless of which path produced it.
343
+ */
344
+ reapZombieChain(chain) {
345
+ const from = chain.state;
346
+ const reason = 'zombie chain reaped at rehydrate: no member agent survived the restart';
347
+ chain.state = 'failed';
348
+ chain.error = reason;
349
+ chain.failureKind = 'other';
350
+ chain.completedAt = Date.now();
351
+ emitWrfcStateChanged(this.runtimeBus, this.sessionId, chain.id, from, 'failed');
352
+ emitWorkflowChainFailed(this.runtimeBus, createWrfcWorkflowContext(this.sessionId, chain.id), {
353
+ chainId: chain.id,
354
+ reason,
355
+ failureKind: 'other',
356
+ });
357
+ logger.warn('WrfcController.importChain: reaped zombie chain — no member agent survived restart', {
358
+ chainId: chain.id,
359
+ priorState: from,
360
+ agentIds: chain.allAgentIds,
361
+ });
362
+ }
307
363
  dispose() {
308
364
  for (const unsub of this.unsubscribers)
309
365
  unsub();
@@ -714,14 +770,21 @@ export class WrfcController {
714
770
  this.cancelChain(chain, reason ?? 'WRFC owner agent cancelled');
715
771
  return;
716
772
  }
773
+ // A CANCELLED member agent means the whole chain was cancelled — an operator
774
+ // kill of any member (the fleet cascade cancels the running leaf first), or an
775
+ // explicit interrupt. That is an intended STOP, not a failure: cancel the chain
776
+ // so the chain row, owner row, cohort tally, and completion narration all read
777
+ // 'cancelled', not '✗ failed'. (Genuine agent CRASHES arrive as 'failed' via a
778
+ // separate path and still failChain — see onAgentFailed.) The controller's own
779
+ // cascade re-cancels are guarded by the isChainTerminal check above.
717
780
  this.setWrfcWorkPlanTaskStatus(chain, agentId, 'cancelled', reason ?? `Agent ${agentId} cancelled`);
718
- this.failChain(chain, reason ?? `Agent ${agentId} cancelled`);
781
+ this.cancelChain(chain, reason ?? `Agent ${agentId} cancelled`);
719
782
  }
720
783
  startReview(chain, report) {
721
784
  this.transition(chain, 'reviewing');
722
785
  // Prepend any synthetic issues from the controller (e.g. fixer constraint-continuity
723
786
  // violations) to the review task body, then clear them so they fire only once.
724
- let reviewTask = buildReviewTask(chain.id, chain.task, report, getWrfcScoreThreshold(this.configManager), chain.constraints);
787
+ let reviewTask = buildReviewTask(chain.id, chain.task, report, getWrfcScoreThreshold(this.configManager), this.reviewableConstraints(chain));
725
788
  if (chain.syntheticIssues?.length) {
726
789
  reviewTask = this.prependSyntheticIssues(chain.syntheticIssues, reviewTask);
727
790
  chain.syntheticIssues = [];
@@ -878,7 +941,16 @@ export class WrfcController {
878
941
  },
879
942
  });
880
943
  }
881
- evaluateConstraintSet(constraints, review) {
944
+ evaluateConstraintSet(allConstraints, review, systemUnsatisfiableIds = []) {
945
+ // System-unsatisfiable constraints (e.g. a "separate agent per file" constraint
946
+ // that a fan-out collapse invalidated) are removed from the rubric BEFORE
947
+ // accounting: they can never be counted as unsatisfied and can never force a
948
+ // failure, because no fix agent can satisfy a constraint whose precondition the
949
+ // system itself removed. This is the un-loopable guarantee (WO UX-A item 1c).
950
+ const excluded = systemUnsatisfiableIds.length > 0 ? new Set(systemUnsatisfiableIds) : null;
951
+ const constraints = excluded
952
+ ? allConstraints.filter((constraint) => !excluded.has(constraint.id))
953
+ : allConstraints;
882
954
  if (constraints.length === 0) {
883
955
  return {
884
956
  constraintsSatisfied: 0,
@@ -893,6 +965,11 @@ export class WrfcController {
893
965
  const ignoredConstraintFindingIds = [];
894
966
  for (const finding of review.constraintFindings ?? []) {
895
967
  if (!expectedIds.has(finding.constraintId)) {
968
+ // A finding for a system-unsatisfiable constraint is known-but-excluded, not
969
+ // unknown: drop it silently instead of injecting a "reviewed an unknown
970
+ // constraint" penalty.
971
+ if (excluded?.has(finding.constraintId))
972
+ continue;
896
973
  ignoredConstraintFindingIds.push(finding.constraintId);
897
974
  continue;
898
975
  }
@@ -920,7 +997,20 @@ export class WrfcController {
920
997
  };
921
998
  }
922
999
  evaluateConstraints(chain, review) {
923
- return this.evaluateConstraintSet(chain.constraints, review);
1000
+ return this.evaluateConstraintSet(chain.constraints, review, chain.systemUnsatisfiableConstraintIds ?? []);
1001
+ }
1002
+ /**
1003
+ * The constraints a reviewer/fixer is asked to verify: the full enumerated set
1004
+ * MINUS the ones a system action (a fan-out collapse) made unsatisfiable. Keeping
1005
+ * chain.constraints itself intact preserves fixer constraint-continuity checks;
1006
+ * only the rubric handed to review/gate-fix is narrowed.
1007
+ */
1008
+ reviewableConstraints(chain) {
1009
+ const excluded = chain.systemUnsatisfiableConstraintIds;
1010
+ if (!excluded || excluded.length === 0)
1011
+ return chain.constraints;
1012
+ const excludedSet = new Set(excluded);
1013
+ return chain.constraints.filter((constraint) => !excludedSet.has(constraint.id));
924
1014
  }
925
1015
  evaluateSubtaskConstraints(subtask, review) {
926
1016
  return this.evaluateConstraintSet(subtask.constraints, review);
@@ -975,9 +1065,12 @@ export class WrfcController {
975
1065
  chainId: chain.id,
976
1066
  attempt: chain.fixAttempts,
977
1067
  maxAttempts: maxGateRetries,
978
- ...(chain.constraints.length > 0 ? { targetConstraintIds: chain.constraints.map((constraint) => constraint.id) } : {}),
1068
+ ...((() => {
1069
+ const reviewable = this.reviewableConstraints(chain);
1070
+ return reviewable.length > 0 ? { targetConstraintIds: reviewable.map((constraint) => constraint.id) } : {};
1071
+ })()),
979
1072
  });
980
- const gateFixTask = buildGateFailureTask(chain.id, chain.task, failedGates, chain.constraints);
1073
+ const gateFixTask = buildGateFailureTask(chain.id, chain.task, failedGates, this.reviewableConstraints(chain));
981
1074
  const fixerRecord = this.spawnWrfcAgent(chain, 'fixer', 'engineer', gateFixTask, true);
982
1075
  chain.fixerAgentId = fixerRecord.id;
983
1076
  this.registerSpawnedChild(chain, fixerRecord, 'fixer');
@@ -1066,19 +1159,25 @@ export class WrfcController {
1066
1159
  }
1067
1160
  const commitCandidateIds = this.autoCommitCandidateAgentIds(chain);
1068
1161
  if (commitCandidateIds.length === 0) {
1069
- this.failChain(chain, 'autoCommit: no write-capable WRFC agent found on chain');
1162
+ // A structurally odd chain (no engineer/fixer/integrator) cannot be auto-committed, but the
1163
+ // full-scope review and gates already passed — that is what determines success. Surface the
1164
+ // miss as a warning on a passing chain rather than flipping a green chain to FAILED.
1165
+ logger.warn('WrfcController.autoCommit: no write-capable WRFC agent found on chain; skipping commit', {
1166
+ chainId: chain.id,
1167
+ });
1168
+ this.completeChainAsPassed(chain, 'commit skipped: no write-capable WRFC agent on chain');
1070
1169
  return;
1071
1170
  }
1072
1171
  if (!existsSync(join(this.projectRoot, '.git'))) {
1073
1172
  logger.debug('WrfcController.autoCommit: not a git repo, skipping commit', { chainId: chain.id });
1074
- this.completeChainAsPassed(chain);
1173
+ this.completeChainAsPassed(chain, 'commit skipped: not a git repository');
1075
1174
  return;
1076
1175
  }
1077
1176
  const worktree = this.createWorktree();
1078
- let completed = false;
1079
1177
  try {
1080
1178
  const commitMessage = this.buildAutoCommitMessage(chain, commitScope);
1081
- let directCommitHash = null;
1179
+ let commitResult = { hash: null, skippedIgnored: [] };
1180
+ let ledgerEmpty = false;
1082
1181
  if (worktree.commitWorkingTree) {
1083
1182
  if (commitScope === 'scoped') {
1084
1183
  const touchedPaths = this.collectChainTouchedPaths(chain);
@@ -1086,17 +1185,18 @@ export class WrfcController {
1086
1185
  // Do NOT fall back to a full-tree `--all` sweep here — an empty self-reported
1087
1186
  // ledger means we genuinely don't know what this chain touched, and committing
1088
1187
  // everything dirty in the working tree is exactly the trust bug this fixes.
1188
+ ledgerEmpty = true;
1089
1189
  logger.warn('WrfcController.autoCommit: commitScope is scoped but the chain edit ledger is empty; skipping commit rather than falling back to a full-tree sweep', {
1090
1190
  chainId: chain.id,
1091
1191
  });
1092
1192
  }
1093
1193
  else {
1094
- directCommitHash = await worktree.commitWorkingTree(commitMessage, touchedPaths);
1194
+ commitResult = await worktree.commitWorkingTree(commitMessage, touchedPaths);
1095
1195
  }
1096
1196
  }
1097
1197
  else {
1098
1198
  // commitScope === 'all': legacy full-tree sweep, no paths argument.
1099
- directCommitHash = await worktree.commitWorkingTree(commitMessage);
1199
+ commitResult = await worktree.commitWorkingTree(commitMessage);
1100
1200
  }
1101
1201
  }
1102
1202
  let mergedCount = 0;
@@ -1105,28 +1205,35 @@ export class WrfcController {
1105
1205
  mergedCount += 1;
1106
1206
  }
1107
1207
  }
1108
- const headHash = mergedCount > 0 && worktree.currentHead ? await worktree.currentHead() : directCommitHash;
1208
+ const headHash = mergedCount > 0 && worktree.currentHead ? await worktree.currentHead() : commitResult.hash;
1109
1209
  emitWrfcAutoCommitted(this.runtimeBus, this.sessionId, chain.id, headHash ?? undefined);
1110
- this.completeChainAsPassed(chain);
1111
- completed = true;
1210
+ const commitNote = this.describeCommitOutcome(headHash, commitResult.skippedIgnored, ledgerEmpty);
1211
+ this.completeChainAsPassed(chain, commitNote);
1112
1212
  logger.debug('WrfcController.autoCommit: success', {
1113
1213
  chainId: chain.id,
1114
1214
  commitCandidateIds,
1115
- directCommitHash,
1215
+ commitHash: commitResult.hash,
1216
+ skippedIgnored: commitResult.skippedIgnored,
1116
1217
  mergedCount,
1117
1218
  headHash,
1118
1219
  });
1119
1220
  }
1120
1221
  catch (error) {
1121
1222
  const reason = summarizeError(error);
1122
- logger.error('WrfcController.autoCommit: failed', { chainId: chain.id, error: reason });
1123
- this.failChain(chain, `autoCommit failed: ${reason}`);
1223
+ // Non-fatal: the full-scope review and quality gates already passed, so the chain SUCCEEDED.
1224
+ // A commit that could not complete (permissions, a rejecting hook, a dirty/locked index) is a
1225
+ // warning on a passing chain, never a flip to FAILED. AgentWorktree.commitWorkingTree already
1226
+ // reset the paths it staged before rethrowing, so the user's staging area is left clean.
1227
+ logger.warn('WrfcController.autoCommit: commit did not complete; completing chain as passed with a warning', {
1228
+ chainId: chain.id,
1229
+ error: reason,
1230
+ });
1231
+ this.completeChainAsPassed(chain, `commit failed (non-fatal): ${reason}`);
1124
1232
  }
1125
1233
  finally {
1126
- const cleanupIds = completed
1127
- ? chain.allAgentIds
1128
- : chain.allAgentIds.filter((id) => !commitCandidateIds.includes(id));
1129
- for (const id of cleanupIds) {
1234
+ // The chain has completed (passed) on every path above, so every agent's worktree can be
1235
+ // released regardless of whether the commit succeeded.
1236
+ for (const id of chain.allAgentIds) {
1130
1237
  worktree.cleanup(id).catch((error) => {
1131
1238
  logger.warn('WrfcController.autoCommit: cleanup failed', {
1132
1239
  agentId: id,
@@ -1136,6 +1243,26 @@ export class WrfcController {
1136
1243
  }
1137
1244
  }
1138
1245
  }
1246
+ /**
1247
+ * Render the commit outcome as an honest, single-line note for the chain-completion message.
1248
+ * Distinguishes a real commit (with any gitignored paths that were skipped) from the several
1249
+ * "nothing was committed" cases, so the completion message states the commit result plainly
1250
+ * instead of implying a commit happened when it did not.
1251
+ */
1252
+ describeCommitOutcome(headHash, skippedIgnored, ledgerEmpty) {
1253
+ const ignoredNote = skippedIgnored.length > 0
1254
+ ? `${skippedIgnored.length} ignored path${skippedIgnored.length === 1 ? '' : 's'} skipped`
1255
+ : null;
1256
+ if (headHash) {
1257
+ const shortHash = headHash.slice(0, 8);
1258
+ return ignoredNote ? `committed ${shortHash} (${ignoredNote})` : `committed ${shortHash}`;
1259
+ }
1260
+ if (ignoredNote)
1261
+ return `commit skipped: ${ignoredNote}`;
1262
+ if (ledgerEmpty)
1263
+ return 'commit skipped: chain edit ledger empty';
1264
+ return 'commit skipped: nothing to stage';
1265
+ }
1139
1266
  autoCommitCandidateAgentIds(chain) {
1140
1267
  const candidates = [];
1141
1268
  const add = (agentId) => {
@@ -1289,23 +1416,41 @@ export class WrfcController {
1289
1416
  if (wasActive) {
1290
1417
  this.activeChainCount = Math.max(0, this.activeChainCount - 1);
1291
1418
  }
1292
- chain.error = reason;
1419
+ // Honest completion narration: an operator cancellation summarises the work
1420
+ // that already landed on disk from the chain's edit ledger, mirroring the
1421
+ // dual-outcome message pattern used for a passed chain's commit note. So the
1422
+ // user sees "cancelled — N file(s) already modified on disk" rather than a bare
1423
+ // stop that hides in-flight edits.
1424
+ const landed = this.collectChainTouchedPaths(chain);
1425
+ const narration = landed.length > 0
1426
+ ? `${reason} — ${landed.length} file${landed.length === 1 ? '' : 's'} already modified on disk`
1427
+ : reason;
1428
+ chain.error = narration;
1429
+ // 'cancelled' failureKind flags this terminal-'failed' state as an intended
1430
+ // operator stop so every surface (fleet chain row, cohort tally, narration)
1431
+ // renders it as cancelled rather than a failure.
1432
+ chain.failureKind = 'cancelled';
1293
1433
  chain.completedAt = Date.now();
1294
1434
  chain.ownerTerminalEmitted = true;
1295
- this.setWrfcWorkPlanTaskStatus(chain, chain.ownerAgentId, 'cancelled', reason);
1296
- this.appendOwnerDecision(chain, 'chain_cancelled', reason, {
1435
+ this.setWrfcWorkPlanTaskStatus(chain, chain.ownerAgentId, 'cancelled', narration);
1436
+ this.appendOwnerDecision(chain, 'chain_cancelled', narration, {
1297
1437
  agentId: chain.ownerAgentId,
1298
1438
  });
1299
1439
  const owner = this.agentManager.getStatus(chain.ownerAgentId);
1300
- if (isAgentInFlight(owner)) {
1440
+ if (owner) {
1301
1441
  owner.status = 'cancelled';
1302
1442
  owner.completedAt = Date.now();
1303
- owner.progress = reason;
1443
+ owner.progress = narration;
1444
+ // Roll up member usage onto the owner (same as completeOwnerAgent) so the
1445
+ // owner row shows the chain's real, priceable token totals at cancel time
1446
+ // instead of the never-updated spawn-time zeros.
1447
+ owner.usage = this.aggregateChainUsage(chain);
1448
+ owner.toolCallCount = this.aggregateChainToolCallCount(chain);
1304
1449
  }
1305
1450
  this.cancelRunningChildren(chain);
1306
- this.workmap.append({ ts: new Date().toISOString(), wrfcId: chain.id, event: 'chain_failed', reason });
1307
- emitWorkflowChainFailed(this.runtimeBus, createWrfcWorkflowContext(this.sessionId, chain.id), { chainId: chain.id, reason });
1308
- logger.warn('WrfcController.cancelChain', { chainId: chain.id, reason });
1451
+ this.workmap.append({ ts: new Date().toISOString(), wrfcId: chain.id, event: 'chain_failed', reason: narration });
1452
+ emitWorkflowChainFailed(this.runtimeBus, createWrfcWorkflowContext(this.sessionId, chain.id), { chainId: chain.id, reason: narration, failureKind: 'cancelled' });
1453
+ logger.warn('WrfcController.cancelChain', { chainId: chain.id, reason: narration });
1309
1454
  this.scheduleChainCleanup(chain);
1310
1455
  this.safeDequeueNext();
1311
1456
  }
@@ -1421,6 +1566,7 @@ export class WrfcController {
1421
1566
  createdAt: Date.now(),
1422
1567
  transportRetryCount: 0,
1423
1568
  ...(subtasks.length > 1 ? { subtasks } : {}),
1569
+ ...(ownerRecord.fanoutCollapse ? { fanoutCollapse: ownerRecord.fanoutCollapse } : {}),
1424
1570
  };
1425
1571
  this.chains.set(chain.id, chain);
1426
1572
  emitWrfcGraphCreated(this.runtimeBus, this.sessionId, chain.id, `WRFC: ${ownerRecord.task}`);
@@ -1535,6 +1681,25 @@ export class WrfcController {
1535
1681
  if (!chain.constraintsEnumerated) {
1536
1682
  chain.constraints = isEngineerReportShape(report) ? (report.constraints ?? []) : [];
1537
1683
  chain.constraintsEnumerated = true;
1684
+ // Mechanically derive the system-unsatisfiable constraints from the collapse
1685
+ // action: only when this chain was created by collapsing a requested fan-out,
1686
+ // and only for constraints whose text describes the parallelism/spawn-count
1687
+ // topology the collapse removed. Such a constraint cannot be satisfied by ANY
1688
+ // fix agent (the precondition is gone), so it is excluded from the rubric and
1689
+ // can never fail the review — no fix-loop re-billing while chasing it.
1690
+ if (chain.fanoutCollapse) {
1691
+ const unsatisfiable = chain.constraints
1692
+ .filter((constraint) => isFanoutShapeConstraintText(constraint.text))
1693
+ .map((constraint) => constraint.id);
1694
+ if (unsatisfiable.length > 0) {
1695
+ chain.systemUnsatisfiableConstraintIds = unsatisfiable;
1696
+ logger.warn('WrfcController: excluded fan-out-collapse-invalidated constraints from review', {
1697
+ chainId: chain.id,
1698
+ systemUnsatisfiableConstraintIds: unsatisfiable,
1699
+ requestedAgentCount: chain.fanoutCollapse.requestedAgentCount,
1700
+ });
1701
+ }
1702
+ }
1538
1703
  emitWrfcConstraintsEnumerated(this.runtimeBus, this.sessionId, chain.id, chain.constraints);
1539
1704
  }
1540
1705
  else {
@@ -1994,19 +2159,35 @@ export class WrfcController {
1994
2159
  withRouteReason(baseReason, record) {
1995
2160
  return record.wrfcRouteReason ? `${baseReason}; route: ${record.wrfcRouteReason}` : baseReason;
1996
2161
  }
1997
- completeChainAsPassed(chain) {
2162
+ /**
2163
+ * Terminal success path — the ONE derivation point for a passing chain (its counterpart is
2164
+ * failChain). The chain's terminal status derives here from the full-scope review and quality
2165
+ * gates, never from the auto-commit result: the optional `commitNote` states the commit outcome
2166
+ * SEPARATELY in the completion message so a skipped/failed commit reads as a warning on a passing
2167
+ * chain, and can never contradict the "succeeded" verdict the transcript already showed.
2168
+ */
2169
+ completeChainAsPassed(chain, commitNote) {
1998
2170
  this.activeChainCount = Math.max(0, this.activeChainCount - 1);
1999
2171
  this.transition(chain, 'passed');
2000
2172
  chain.completedAt = Date.now();
2173
+ const reviewOutcome = this.describeReviewOutcome(chain);
2174
+ const summary = commitNote
2175
+ ? `WRFC chain ${chain.id} passed (${reviewOutcome}); ${commitNote}`
2176
+ : `WRFC chain ${chain.id} passed (${reviewOutcome})`;
2001
2177
  this.appendOwnerDecision(chain, 'chain_passed', 'WRFC full-scope review and quality gates passed', {
2002
2178
  agentId: chain.ownerAgentId,
2003
2179
  });
2004
2180
  this.setWrfcWorkPlanTaskStatus(chain, chain.ownerAgentId, 'done', 'WRFC full-scope review and quality gates passed');
2005
- this.completeOwnerAgent(chain, 'completed', `WRFC chain ${chain.id} passed`);
2181
+ this.completeOwnerAgent(chain, 'completed', summary);
2006
2182
  emitWrfcChainPassed(this.runtimeBus, this.sessionId, chain.id);
2007
2183
  this.scheduleChainCleanup(chain);
2008
2184
  this.safeDequeueNext();
2009
2185
  }
2186
+ /** The review outcome for the completion message — the last recorded review score out of 10, or a plain "review passed" for a chain with no numeric score on record. */
2187
+ describeReviewOutcome(chain) {
2188
+ const lastScore = chain.reviewScores.at(-1);
2189
+ return typeof lastScore === 'number' ? `review ${lastScore}/10` : 'review passed';
2190
+ }
2010
2191
  completeOwnerAgent(chain, status, message) {
2011
2192
  if (chain.ownerTerminalEmitted)
2012
2193
  return;
@@ -7,6 +7,15 @@ export declare function runWrfcGateChecks(options: {
7
7
  readonly runtimeBus: RuntimeEventBus;
8
8
  readonly sessionId: string;
9
9
  readonly chainId: string;
10
+ /**
11
+ * Working directory to RUN the gate commands (and detect skip conditions) in
12
+ * (BIG-3 item 5). Defaults to `projectRoot`. In worktree-isolation mode the
13
+ * orchestration phase-runner passes the item's worktree path here, so gates
14
+ * execute against the item's isolated tree rather than the shared root —
15
+ * threaded exactly like the phantom-work guard's worktree path. Omitted ⇒
16
+ * projectRoot, i.e. shared-mode behavior unchanged.
17
+ */
18
+ readonly cwd?: string | undefined;
10
19
  readonly onResult?: ((results: readonly QualityGateResult[], result: QualityGateResult) => void) | undefined;
11
20
  }): Promise<QualityGateResult[]>;
12
21
  //# sourceMappingURL=wrfc-gate-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrfc-gate-runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/wrfc-gate-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AASzD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EAAE,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9G,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuD/B"}
1
+ {"version":3,"file":"wrfc-gate-runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/wrfc-gate-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AASzD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EAAE,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9G,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA2D/B"}
@@ -12,10 +12,14 @@ export async function runWrfcGateChecks(options) {
12
12
  chainId: options.chainId,
13
13
  gateCount: gates.length,
14
14
  });
15
- const pkgScripts = await loadPackageScripts(options.projectRoot);
15
+ // Resolve/detect/execute all relative to the gate cwd (worktree path in
16
+ // isolation mode, else projectRoot) so skip detection and command execution
17
+ // agree on which tree they're inspecting.
18
+ const gateCwd = options.cwd ?? options.projectRoot;
19
+ const pkgScripts = await loadPackageScripts(gateCwd);
16
20
  const results = [];
17
21
  for (const gate of gates) {
18
- const skipReason = getSkippedGateReason(gate.name, options.projectRoot, pkgScripts);
22
+ const skipReason = getSkippedGateReason(gate.name, gateCwd, pkgScripts);
19
23
  if (skipReason !== null) {
20
24
  const result = {
21
25
  gate: gate.name,
@@ -34,7 +38,7 @@ export async function runWrfcGateChecks(options) {
34
38
  continue;
35
39
  }
36
40
  const startedAt = Date.now();
37
- const { passed, output } = await executeGateCommand(gate.command);
41
+ const { passed, output } = await executeGateCommand(gate.command, options.cwd);
38
42
  const result = {
39
43
  gate: gate.name,
40
44
  passed,
@@ -1,7 +1,7 @@
1
1
  export declare const WRFC_GATE_TIMEOUT_MS = 120000;
2
2
  export declare function loadPackageScripts(cwd: string): Promise<Record<string, string>>;
3
3
  export declare function getSkippedGateReason(gateName: string, cwd: string, pkgScripts: Record<string, string>): string | null;
4
- export declare function executeGateCommand(command: string): Promise<{
4
+ export declare function executeGateCommand(command: string, cwd?: string): Promise<{
5
5
  passed: boolean;
6
6
  output: string;
7
7
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"wrfc-gates.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/wrfc-gates.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,SAAU,CAAC;AAE5C,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CASrF;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,MAAM,GAAG,IAAI,CAgBf;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+BtG"}
1
+ {"version":3,"file":"wrfc-gates.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/wrfc-gates.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,SAAU,CAAC;AAE5C,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CASrF;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,MAAM,GAAG,IAAI,CAgBf;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCpH"}
@@ -33,11 +33,17 @@ export function getSkippedGateReason(gateName, cwd, pkgScripts) {
33
33
  return 'Skipped: no build script in package.json';
34
34
  return null;
35
35
  }
36
- export async function executeGateCommand(command) {
36
+ export async function executeGateCommand(command, cwd) {
37
37
  try {
38
+ // `cwd` (BIG-3 item 5): in worktree-isolation mode the caller passes the
39
+ // item's worktree path so the gate command runs INSIDE that worktree — its
40
+ // typecheck/lint/test (and any file it writes) see the item's isolated
41
+ // changes, not the shared projectRoot. Omitted (shared mode) ⇒ Bun.spawn
42
+ // inherits the process cwd exactly as before — shared-mode gates unchanged.
38
43
  const proc = Bun.spawn(['/bin/sh', '-c', command], {
39
44
  stdout: 'pipe',
40
45
  stderr: 'pipe',
46
+ ...(cwd ? { cwd } : {}),
41
47
  });
42
48
  const timer = setTimeout(() => {
43
49
  killGateProcess(proc, 'timeout');
@@ -1,5 +1,6 @@
1
1
  import type { CompletionReport, Constraint, ReviewerReport } from './completion-report.js';
2
2
  import type { AgentRecord } from '../tools/agent/index.js';
3
+ import type { FanoutCollapseInfo } from '../tools/agent/schema.js';
3
4
  /** Queued chain waiting to start. */
4
5
  export interface QueuedChain {
5
6
  record: AgentRecord;
@@ -14,10 +15,13 @@ export type WrfcOwnerDecisionAction = 'chain_created' | 'compound_started' | 'sp
14
15
  /**
15
16
  * Why a chain reached the terminal 'failed' state. Distinguishes a transport/network
16
17
  * blip (which gets one automatic retry, see WrfcChain.transportRetryCount) from an
17
- * ordinary review/gate rejection, so a consumer (e.g. the TUI) can render the two
18
- * differently instead of showing every failure identically.
18
+ * ordinary review/gate rejection and from an operator-initiated cancellation, so a
19
+ * consumer (e.g. the TUI) can render the three differently instead of showing every
20
+ * terminal-'failed' identically. 'cancelled' is an operator kill/interrupt of the
21
+ * chain — an intended stop, not a failure — and must read as cancelled at every
22
+ * surface (chain row, owner row, cohort tally, completion narration).
19
23
  */
20
- export type WrfcChainFailureKind = 'transport' | 'other';
24
+ export type WrfcChainFailureKind = 'transport' | 'other' | 'cancelled';
21
25
  export interface WrfcOwnerDecision {
22
26
  id: string;
23
27
  ts: string;
@@ -142,6 +146,22 @@ export interface WrfcChain {
142
146
  constraints: Constraint[];
143
147
  /** True once constraints have been captured and WORKFLOW_CONSTRAINTS_ENUMERATED has been emitted. */
144
148
  constraintsEnumerated: boolean;
149
+ /**
150
+ * Set when this chain was created by collapsing a requested multi-agent fan-out
151
+ * into one owner chain (schema.ts FanoutCollapseInfo). Its presence is what makes
152
+ * a parallelism/spawn-count constraint SYSTEM-UNSATISFIABLE — the collapse removed
153
+ * the precondition, so no fix agent can ever satisfy it.
154
+ */
155
+ fanoutCollapse?: FanoutCollapseInfo | undefined;
156
+ /**
157
+ * Constraint ids that no fix agent can satisfy because the system itself removed
158
+ * their precondition (e.g. the fan-out collapse invalidated a "separate agent per
159
+ * file / in parallel" constraint). Derived mechanically from fanoutCollapse at
160
+ * enumeration time. These are excluded from the review rubric, never counted as
161
+ * unsatisfied, and never entered into the fix-loop target set — an un-loopable
162
+ * constraint can never fail the review.
163
+ */
164
+ systemUnsatisfiableConstraintIds?: string[] | undefined;
145
165
  /**
146
166
  * Synthetic critical issues injected by the controller (e.g. fixer constraint-continuity
147
167
  * violations). Prepended to the next review task body, then cleared so they fire once per cycle.
@@ -1 +1 @@
1
- {"version":3,"file":"wrfc-types.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/wrfc-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,aAAa,GACb,aAAa,GACb,WAAW,GACX,QAAQ,GACR,gBAAgB,GAChB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,YAAY,CAAC;AAEjB,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;AAErH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExG,MAAM,MAAM,uBAAuB,GAC/B,eAAe,GACf,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,GACb,kBAAkB,GAClB,kBAAkB,GAClB,uBAAuB,GACvB,uBAAuB,GACvB,eAAe,GACf,eAAe,GACf,aAAa,GACb,aAAa,GACb,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,0BAA0B,GAC1B,uBAAuB,GACvB,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,uBAAuB,CAAC;IAChC,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,eAAe,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IAC7D,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAC7C,eAAe,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IAC7D,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,GAAG,cAAc,GAAG,UAAU,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;CACzC,KAAK,uBAAuB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,gBAAgB,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,cAAc,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IACnF;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,oCAAoC;AACpC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,mEAAmE;IACnE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,uFAAuF;IACvF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oDAAoD;IACpD,cAAc,EAAE,iBAAiB,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC/C;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,CAAC;QACvD,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;QACjD,IAAI,EAAE,MAAM,CAAC;QACb,sBAAsB,EAAE,OAAO,CAAC;QAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,GAAG,SAAS,CAAC;IACd,+FAA+F;IAC/F,kBAAkB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;IACtF,yEAAyE;IACzE,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gFAAgF;IAChF,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,qGAAqG;IACrG,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IACnF;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACrC;AAED,+BAA+B;AAC/B,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"wrfc-types.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/wrfc-types.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,18 @@
3
3
  * Shared automation type vocabulary used across jobs, runs, routes, delivery,
4
4
  * watchers, and control-plane domains.
5
5
  */
6
+ import type { TransportSurfaceKind } from '../../events/surfaces.js';
6
7
  export type AutomationJobStatus = 'enabled' | 'paused' | 'error' | 'archived';
7
8
  export type AutomationRunStatus = 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';
8
9
  export type AutomationRunTrigger = 'scheduled' | 'manual' | 'catch_up' | 'webhook' | 'surface' | 'watcher';
9
- export type AutomationSurfaceKind = 'tui' | 'web' | 'slack' | 'discord' | 'ntfy' | 'webhook' | 'homeassistant' | 'telegram' | 'google-chat' | 'signal' | 'whatsapp' | 'telephony' | 'imessage' | 'msteams' | 'bluebubbles' | 'mattermost' | 'matrix' | 'service';
10
+ /**
11
+ * The transport surface axis for routes, channels, and delivery. Collapsed onto
12
+ * the canonical {@link TransportSurfaceKind} (= the strict route-binding list in
13
+ * events/routes.ts) so there is no longer a parallel literal union to drift.
14
+ * This is the STRICT set — product surfaces (agent/webui/companion) live only on
15
+ * the wider {@link SurfaceKind} used by the participant/message identity axis.
16
+ */
17
+ export type AutomationSurfaceKind = TransportSurfaceKind;
10
18
  export type AutomationRouteKind = 'session' | 'thread' | 'channel' | 'message';
11
19
  export type AutomationSourceKind = 'schedule' | 'manual' | 'hook' | 'webhook' | 'surface' | 'watcher';
12
20
  export type AutomationExecutionKind = 'isolated' | 'current' | 'pinned' | 'background' | 'main';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/platform/automation/types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;GAGG;AAEH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAC9E,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC9F,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,QAAQ,GACR,UAAU,GACV,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,qBAAqB,GAC7B,KAAK,GACL,KAAK,GACL,OAAO,GACP,SAAS,GACT,MAAM,GACN,SAAS,GACT,eAAe,GACf,UAAU,GACV,aAAa,GACb,QAAQ,GACR,UAAU,GACV,WAAW,GACX,UAAU,GACV,SAAS,GACT,aAAa,GACb,YAAY,GACZ,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAC5B,UAAU,GACV,QAAQ,GACR,MAAM,GACN,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AACd,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;AAChG,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,GAAG,SAAS,GAAG,OAAO,CAAC;AAC1F,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;AAC7F,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG,UAAU,GAAG,WAAW,CAAC;AACpF,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,YAAY,CAAC;AACnG,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAClG,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AACzE,MAAM,MAAM,2BAA2B,GAAG,aAAa,GAAG,eAAe,CAAC;AAE1E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACzD;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAC;CACpD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACxD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,eAAe,GAAG,SAAS,CAAC;CAChF;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/platform/automation/types.ts"],"names":[],"mappings":"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"}