@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
@@ -1,8 +1,18 @@
1
1
  import { ConfigurationError } from '@pellux/goodvibes-errors';
2
2
  import { logger } from '../utils/logger.js';
3
3
  import net from 'node:net';
4
+ import os from 'node:os';
5
+ import { closeSync, mkdirSync, openSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { spawn } from 'node:child_process';
4
8
  import { summarizeError } from '../utils/error-display.js';
5
9
  import { createTimeoutController } from '../utils/fetch-with-timeout.js';
10
+ import { VERSION } from '../version.js';
11
+ import { isDaemonVersionCompatible, describeVersionIncompatibility } from './daemon-version-compat.js';
12
+ import { resolveDaemonEnabled } from '../config/index.js';
13
+ import { recordDetachedDaemonRuntime } from './detached-daemon-runtime.js';
14
+ /** One-time hint surfaced ONCE by the TUI after a successful detached spawn. */
15
+ export const DETACHED_DAEMON_INSTALL_HINT = 'daemon started for this session — install it as a service so it survives reboots: POST /api/service/install on the daemon HTTP API (admin token required)';
6
16
  const DEFAULT_SERVICE_START_TIMEOUT_MS = 1500;
7
17
  const TCP_PORT_PROBE_TIMEOUT_MS = 250;
8
18
  const DAEMON_IDENTITY_PROBE_TIMEOUT_MS = 750;
@@ -13,6 +23,14 @@ function readBooleanSetting(config, key) {
13
23
  }
14
24
  return value;
15
25
  }
26
+ /**
27
+ * Whether the daemon should be hosted IN THIS PROCESS (Layer 3 opt-in). Default
28
+ * false: the surface spawns a detached daemon instead. Reads leniently so an
29
+ * unset value (undefined) means false rather than throwing.
30
+ */
31
+ function readDaemonEmbedInProcess(config) {
32
+ return config.get('daemon.embedInProcess') === true;
33
+ }
16
34
  function readHostSetting(config, key, fallback) {
17
35
  const value = config.get(key);
18
36
  if (value === undefined || value === null)
@@ -201,27 +219,152 @@ export async function startHostServices(config, runtimeBus, hookDispatcher, runt
201
219
  const probeDaemonPortInUse = factories.probeDaemonPortInUse ?? ((host, port) => isTcpPortInUse(host, port));
202
220
  const probeDaemonIdentity = factories.probeDaemonIdentity ?? probeGoodVibesDaemonIdentity;
203
221
  const probeHttpListenerPortInUse = factories.probeHttpListenerPortInUse ?? ((host, port) => isTcpPortInUse(host, port));
222
+ const localDaemonVersion = factories.localDaemonVersion ?? VERSION;
223
+ const versionCompatible = factories.isDaemonVersionCompatible ?? isDaemonVersionCompatible;
224
+ // A daemon whose identity probe says `goodvibes` has only proven it IS a
225
+ // GoodVibes daemon — not that it speaks a wire version this surface can adopt.
226
+ // Band-check the reported version and produce an honest `incompatible` status
227
+ // (never a second competing daemon) when it does not match this surface's band.
228
+ const resolveVerifiedDaemonStatus = (identity, reasonAdopted) => {
229
+ if (versionCompatible(localDaemonVersion, identity.version)) {
230
+ return createServiceStatus('external', daemonHost, daemonPort, {
231
+ authenticated: true,
232
+ status: identity.status,
233
+ version: identity.version,
234
+ reason: reasonAdopted,
235
+ });
236
+ }
237
+ const reason = describeVersionIncompatibility(daemonHost, daemonPort, localDaemonVersion, identity.version);
238
+ logger.warn('Daemon on configured port reports an incompatible version; refusing to adopt or start a competing daemon', {
239
+ host: daemonHost,
240
+ port: daemonPort,
241
+ foundVersion: identity.version,
242
+ localVersion: localDaemonVersion,
243
+ });
244
+ return createServiceStatus('incompatible', daemonHost, daemonPort, {
245
+ authenticated: true,
246
+ status: identity.status,
247
+ version: identity.version,
248
+ reason,
249
+ });
250
+ };
251
+ // Layer 2: spawn the daemon as a DETACHED standalone process (default), then
252
+ // poll (bounded) for it to bind and pass the identity probe. On success adopt
253
+ // it as 'external' with a one-time install-service hint. Returns an honest
254
+ // failure reason otherwise so the caller can fall back.
255
+ const attemptDetachedDaemonSpawn = async () => {
256
+ const spawnDetached = factories.spawnDetachedDaemon
257
+ ?? ((command, args, options) => spawn(command, [...args], {
258
+ detached: options.detached,
259
+ stdio: options.stdio,
260
+ ...(options.cwd !== undefined ? { cwd: options.cwd } : {}),
261
+ ...(options.env !== undefined ? { env: options.env } : {}),
262
+ }));
263
+ const command = (factories.daemonLaunchCommand ?? process.env.GOODVIBES_DAEMON_BINARY ?? 'goodvibes-daemon').trim()
264
+ || 'goodvibes-daemon';
265
+ const daemonHomeDir = factories.daemonHomeDir ?? os.homedir();
266
+ const runtimeDir = factories.daemonRuntimeDir ?? join(daemonHomeDir, '.goodvibes', 'daemon');
267
+ const logFilePath = join(runtimeDir, 'detached-daemon.log');
268
+ const args = [
269
+ '--daemon-home', daemonHomeDir,
270
+ '--hostname', daemonHost,
271
+ '--port', String(daemonPort),
272
+ ...(factories.daemonLaunchArgs ?? []),
273
+ ];
274
+ let stdio = 'ignore';
275
+ let closeStdio = null;
276
+ try {
277
+ mkdirSync(runtimeDir, { recursive: true });
278
+ const out = openSync(logFilePath, 'a');
279
+ const err = openSync(logFilePath, 'a');
280
+ stdio = ['ignore', out, err];
281
+ closeStdio = () => {
282
+ try {
283
+ closeSync(out);
284
+ }
285
+ catch { /* already closed */ }
286
+ try {
287
+ closeSync(err);
288
+ }
289
+ catch { /* already closed */ }
290
+ };
291
+ }
292
+ catch {
293
+ stdio = 'ignore';
294
+ }
295
+ let child;
296
+ try {
297
+ child = spawnDetached(command, args, {
298
+ detached: true,
299
+ stdio,
300
+ cwd: daemonHomeDir,
301
+ env: { ...process.env, GOODVIBES_DAEMON_HOME: daemonHomeDir },
302
+ });
303
+ }
304
+ catch (error) {
305
+ return { reason: `Detached daemon spawn failed to launch: ${summarizeError(error)}` };
306
+ }
307
+ finally {
308
+ // The child has inherited the fds; the parent's copies can be closed now.
309
+ closeStdio?.();
310
+ }
311
+ child.unref();
312
+ let processError = null;
313
+ child.once?.('error', (err) => { processError = summarizeError(err); });
314
+ recordDetachedDaemonRuntime(runtimeDir, {
315
+ pid: child.pid,
316
+ host: daemonHost,
317
+ port: daemonPort,
318
+ command,
319
+ startedAt: new Date().toISOString(),
320
+ logFilePath,
321
+ });
322
+ const timeoutMs = factories.detachedSpawnProbeTimeoutMs ?? 5000;
323
+ const intervalMs = factories.detachedSpawnProbeIntervalMs ?? 150;
324
+ const sleep = factories.sleep ?? ((ms) => new Promise((resolve) => {
325
+ const timer = setTimeout(resolve, ms);
326
+ timer.unref?.();
327
+ }));
328
+ const deadline = Date.now() + timeoutMs;
329
+ let lastReason = 'Detached daemon did not become reachable before timeout';
330
+ // Probe at least once, then poll until the deadline.
331
+ for (;;) {
332
+ if (processError)
333
+ return { reason: `Detached daemon process error: ${processError}` };
334
+ const identity = await probeDaemonIdentity(daemonHost, daemonPort, factories.sharedDaemonToken);
335
+ if (identity.kind === 'goodvibes') {
336
+ const verified = resolveVerifiedDaemonStatus(identity, 'Spawned detached daemon for this session');
337
+ if (verified.mode === 'external') {
338
+ return { status: verified, hint: DETACHED_DAEMON_INSTALL_HINT };
339
+ }
340
+ // Incompatible: do not keep a competing daemon around; report honestly.
341
+ return { reason: verified.reason ?? 'Spawned daemon reported an incompatible version' };
342
+ }
343
+ lastReason = identity.reason ?? lastReason;
344
+ if (Date.now() >= deadline)
345
+ return { reason: lastReason };
346
+ await sleep(intervalMs);
347
+ }
348
+ };
204
349
  let embeddedDaemonServer = null;
205
350
  let embeddedHttpListener = null;
206
- let daemonStatus = createServiceStatus('disabled', daemonHost, daemonPort, { reason: 'danger.daemon is disabled' });
351
+ let daemonStartHint;
352
+ let daemonStatus = createServiceStatus('disabled', daemonHost, daemonPort, { reason: 'daemon.enabled is false' });
207
353
  let httpListenerStatus = createServiceStatus('disabled', httpListenerHost, httpListenerPort, {
208
354
  reason: 'danger.httpListener is disabled',
209
355
  });
210
- if (readBooleanSetting(config, 'danger.daemon')) {
356
+ if (resolveDaemonEnabled(config)) {
211
357
  if (await probeDaemonPortInUse(daemonHost, daemonPort)) {
212
358
  const identity = await probeDaemonIdentity(daemonHost, daemonPort, factories.sharedDaemonToken);
213
359
  if (identity.kind === 'goodvibes') {
214
- daemonStatus = createServiceStatus('external', daemonHost, daemonPort, {
215
- authenticated: true,
216
- status: identity.status,
217
- version: identity.version,
218
- reason: 'Existing GoodVibes daemon verified on configured host/port',
219
- });
220
- logger.info('Existing GoodVibes daemon detected; continuing without embedded daemon in this host instance', {
221
- host: daemonHost,
222
- port: daemonPort,
223
- version: identity.version,
224
- });
360
+ daemonStatus = resolveVerifiedDaemonStatus(identity, 'Existing GoodVibes daemon verified on configured host/port');
361
+ if (daemonStatus.mode === 'external') {
362
+ logger.info('Existing GoodVibes daemon detected; continuing without embedded daemon in this host instance', {
363
+ host: daemonHost,
364
+ port: daemonPort,
365
+ version: identity.version,
366
+ });
367
+ }
225
368
  }
226
369
  else {
227
370
  daemonStatus = createServiceStatus('blocked', daemonHost, daemonPort, {
@@ -236,45 +379,68 @@ export async function startHostServices(config, runtimeBus, hookDispatcher, runt
236
379
  }
237
380
  }
238
381
  else {
239
- const pendingDaemonServer = factories.createDaemonServer
240
- ? factories.createDaemonServer(runtimeBus, sharedUserAuth, runtimeServices)
241
- : await createDefaultDaemonServer(runtimeBus, sharedUserAuth, runtimeServices);
242
- const service = pendingDaemonServer;
243
- service.enable({ daemon: true }, factories.sharedDaemonToken);
244
- const started = await startGuardedService({
245
- label: 'Daemon server',
246
- service,
247
- timeoutMs: startupTimeoutMs,
248
- timedOutStatus: () => createServiceStatus('unavailable', daemonHost, daemonPort, {
249
- reason: 'Daemon server startup timed out',
250
- }),
251
- startedStatus: () => createServiceStatus('embedded', daemonHost, daemonPort, {
252
- reason: 'Embedded daemon started in this host instance',
253
- }),
254
- bindConflictStatus: async (message) => {
255
- const identity = await probeDaemonIdentity(daemonHost, daemonPort, factories.sharedDaemonToken);
256
- if (identity.kind === 'goodvibes') {
257
- logger.info('Existing GoodVibes daemon detected after bind conflict; continuing without embedded daemon in this host instance', {
258
- host: daemonHost,
259
- port: daemonPort,
260
- version: identity.version,
261
- });
262
- return createServiceStatus('external', daemonHost, daemonPort, {
263
- authenticated: true,
264
- status: identity.status,
265
- version: identity.version,
266
- reason: 'Existing GoodVibes daemon verified after bind conflict',
382
+ // Port is free. Owner ruling (D7a): the daemon is a SYSTEM SERVICE, so
383
+ // starting a surface must NOT couple the daemon's lifetime to this process.
384
+ // DEFAULT (Layer 2): spawn the daemon as a detached standalone process and
385
+ // adopt it as 'external'. In-process embedding is an explicit opt-in
386
+ // (Layer 3: daemon.embedInProcess).
387
+ const startEmbeddedDaemon = async () => {
388
+ const pendingDaemonServer = factories.createDaemonServer
389
+ ? factories.createDaemonServer(runtimeBus, sharedUserAuth, runtimeServices)
390
+ : await createDefaultDaemonServer(runtimeBus, sharedUserAuth, runtimeServices);
391
+ const service = pendingDaemonServer;
392
+ service.enable({ daemon: true }, factories.sharedDaemonToken);
393
+ return startGuardedService({
394
+ label: 'Daemon server',
395
+ service,
396
+ timeoutMs: startupTimeoutMs,
397
+ timedOutStatus: () => createServiceStatus('unavailable', daemonHost, daemonPort, {
398
+ reason: 'Daemon server startup timed out',
399
+ }),
400
+ startedStatus: () => createServiceStatus('embedded', daemonHost, daemonPort, {
401
+ reason: 'Embedded daemon started in this host instance (daemon.embedInProcess opt-in)',
402
+ }),
403
+ bindConflictStatus: async (message) => {
404
+ const identity = await probeDaemonIdentity(daemonHost, daemonPort, factories.sharedDaemonToken);
405
+ if (identity.kind === 'goodvibes') {
406
+ const verified = resolveVerifiedDaemonStatus(identity, 'Existing GoodVibes daemon verified after bind conflict');
407
+ if (verified.mode === 'external') {
408
+ logger.info('Existing GoodVibes daemon detected after bind conflict; continuing without embedded daemon in this host instance', { host: daemonHost, port: daemonPort, version: identity.version });
409
+ }
410
+ return verified;
411
+ }
412
+ logger.warn('Daemon server port already in use; continuing without local daemon in this host instance', { error: message });
413
+ return createServiceStatus('blocked', daemonHost, daemonPort, {
414
+ authenticated: identity.kind !== 'unauthorized' ? undefined : false,
415
+ reason: identity.reason ?? message,
267
416
  });
268
- }
269
- logger.warn('Daemon server port already in use; continuing without local daemon in this host instance', { error: message });
270
- return createServiceStatus('blocked', daemonHost, daemonPort, {
271
- authenticated: identity.kind !== 'unauthorized' ? undefined : false,
272
- reason: identity.reason ?? message,
417
+ },
418
+ });
419
+ };
420
+ if (readDaemonEmbedInProcess(config)) {
421
+ logger.warn('daemon.embedInProcess is enabled: hosting the daemon in-process couples its lifetime to this surface (single point of failure)');
422
+ const started = await startEmbeddedDaemon();
423
+ embeddedDaemonServer = started.service;
424
+ daemonStatus = started.status;
425
+ }
426
+ else {
427
+ const detached = await attemptDetachedDaemonSpawn();
428
+ if ('status' in detached) {
429
+ daemonStatus = detached.status;
430
+ daemonStartHint = detached.hint;
431
+ logger.info('Spawned detached GoodVibes daemon for this session', {
432
+ host: daemonHost,
433
+ port: daemonPort,
434
+ version: detached.status.version,
273
435
  });
274
- },
275
- });
276
- embeddedDaemonServer = started.service;
277
- daemonStatus = started.status;
436
+ }
437
+ else {
438
+ logger.warn('Detached daemon spawn did not become reachable; falling back to in-process embedded daemon for this session', { reason: detached.reason });
439
+ const started = await startEmbeddedDaemon();
440
+ embeddedDaemonServer = started.service;
441
+ daemonStatus = started.status;
442
+ }
443
+ }
278
444
  }
279
445
  }
280
446
  if (readBooleanSetting(config, 'danger.httpListener')) {
@@ -317,6 +483,7 @@ export async function startHostServices(config, runtimeBus, hookDispatcher, runt
317
483
  httpListener: embeddedHttpListener,
318
484
  daemonStatus,
319
485
  httpListenerStatus,
486
+ ...(daemonStartHint !== undefined ? { daemonStartHint } : {}),
320
487
  listRecentControlPlaneEvents(limit) {
321
488
  return embeddedDaemonServer?.listRecentControlPlaneEvents(limit) ?? [];
322
489
  },
@@ -0,0 +1,39 @@
1
+ /**
2
+ * daemon-version-compat.ts
3
+ *
4
+ * The adopt-or-start path (bootstrap-services.ts) verifies that a daemon found
5
+ * on the configured port is a GoodVibes daemon via its `/status` identity probe,
6
+ * which reports the daemon's SDK `version`. Verifying identity is NOT the same as
7
+ * verifying that the daemon speaks the SAME wire shape this surface expects:
8
+ * adopting a daemon built from an incompatible SDK band produces silent
9
+ * wire-shape failures (a session method the surface calls that the daemon does
10
+ * not serve, a payload field that moved). This module answers the one question
11
+ * the probe leaves open — "may this surface safely adopt a daemon reporting
12
+ * version X?" — so the adopt path can refuse an incompatible occupant honestly
13
+ * instead of adopting it and failing later, and without ever starting a second
14
+ * competing daemon on an occupied port.
15
+ *
16
+ * Compatibility band policy (semver, https://semver.org/#spec-item-4):
17
+ * - `0.y.z` releases treat the MINOR position as the breaking axis, so two
18
+ * `0.y` versions are compatible only when `y` matches (0.38.x adopts 0.38.*
19
+ * but not 0.37.*).
20
+ * - `>=1.0.0` releases treat MAJOR as the breaking axis, so major must match
21
+ * (1.4.x adopts any 1.*.* but not 2.*.*).
22
+ * - A version string that cannot be parsed is treated as INCOMPATIBLE — the
23
+ * conservative, honest default. An empty/absent remote version is likewise
24
+ * incompatible: the surface must not adopt something it cannot band-check.
25
+ * Prerelease and build metadata (`-rc.1`, `+sha`) are ignored for banding.
26
+ */
27
+ /**
28
+ * True when a surface reporting `localVersion` may safely adopt a daemon
29
+ * reporting `remoteVersion` — see the band policy in the file header.
30
+ * Unparseable or absent versions are never compatible.
31
+ */
32
+ export declare function isDaemonVersionCompatible(localVersion: string | undefined | null, remoteVersion: string | undefined | null): boolean;
33
+ /**
34
+ * Human-readable reason string for an incompatible adoption refusal, naming
35
+ * both the occupied endpoint's version and this surface's version so the
36
+ * operator can see the skew without guessing.
37
+ */
38
+ export declare function describeVersionIncompatibility(host: string, port: number, localVersion: string | undefined | null, remoteVersion: string | undefined | null): string;
39
+ //# sourceMappingURL=daemon-version-compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-version-compat.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/daemon-version-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA0BH;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACvC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GACvC,OAAO,CAQT;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACvC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GACvC,MAAM,CAIR"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * daemon-version-compat.ts
3
+ *
4
+ * The adopt-or-start path (bootstrap-services.ts) verifies that a daemon found
5
+ * on the configured port is a GoodVibes daemon via its `/status` identity probe,
6
+ * which reports the daemon's SDK `version`. Verifying identity is NOT the same as
7
+ * verifying that the daemon speaks the SAME wire shape this surface expects:
8
+ * adopting a daemon built from an incompatible SDK band produces silent
9
+ * wire-shape failures (a session method the surface calls that the daemon does
10
+ * not serve, a payload field that moved). This module answers the one question
11
+ * the probe leaves open — "may this surface safely adopt a daemon reporting
12
+ * version X?" — so the adopt path can refuse an incompatible occupant honestly
13
+ * instead of adopting it and failing later, and without ever starting a second
14
+ * competing daemon on an occupied port.
15
+ *
16
+ * Compatibility band policy (semver, https://semver.org/#spec-item-4):
17
+ * - `0.y.z` releases treat the MINOR position as the breaking axis, so two
18
+ * `0.y` versions are compatible only when `y` matches (0.38.x adopts 0.38.*
19
+ * but not 0.37.*).
20
+ * - `>=1.0.0` releases treat MAJOR as the breaking axis, so major must match
21
+ * (1.4.x adopts any 1.*.* but not 2.*.*).
22
+ * - A version string that cannot be parsed is treated as INCOMPATIBLE — the
23
+ * conservative, honest default. An empty/absent remote version is likewise
24
+ * incompatible: the surface must not adopt something it cannot band-check.
25
+ * Prerelease and build metadata (`-rc.1`, `+sha`) are ignored for banding.
26
+ */
27
+ /**
28
+ * Parse the leading `major.minor` of a semver string, ignoring patch,
29
+ * prerelease, and build metadata. Returns null when the leading two numeric
30
+ * positions cannot be read.
31
+ */
32
+ function parseVersionBand(version) {
33
+ if (typeof version !== 'string')
34
+ return null;
35
+ const trimmed = version.trim();
36
+ if (!trimmed)
37
+ return null;
38
+ // Strip a leading `v`, then take the core before any `-` (prerelease) or `+` (build).
39
+ const core = trimmed.replace(/^v/i, '').split(/[-+]/, 1)[0] ?? '';
40
+ const parts = core.split('.');
41
+ if (parts.length < 2)
42
+ return null;
43
+ const major = Number(parts[0]);
44
+ const minor = Number(parts[1]);
45
+ if (!Number.isInteger(major) || !Number.isInteger(minor) || major < 0 || minor < 0)
46
+ return null;
47
+ return { major, minor };
48
+ }
49
+ /**
50
+ * True when a surface reporting `localVersion` may safely adopt a daemon
51
+ * reporting `remoteVersion` — see the band policy in the file header.
52
+ * Unparseable or absent versions are never compatible.
53
+ */
54
+ export function isDaemonVersionCompatible(localVersion, remoteVersion) {
55
+ const local = parseVersionBand(localVersion);
56
+ const remote = parseVersionBand(remoteVersion);
57
+ if (local === null || remote === null)
58
+ return false;
59
+ if (local.major !== remote.major)
60
+ return false;
61
+ // For the 0.y band the minor position is the breaking axis; for >=1 it is not.
62
+ if (local.major === 0)
63
+ return local.minor === remote.minor;
64
+ return true;
65
+ }
66
+ /**
67
+ * Human-readable reason string for an incompatible adoption refusal, naming
68
+ * both the occupied endpoint's version and this surface's version so the
69
+ * operator can see the skew without guessing.
70
+ */
71
+ export function describeVersionIncompatibility(host, port, localVersion, remoteVersion) {
72
+ const found = (typeof remoteVersion === 'string' && remoteVersion.trim()) ? remoteVersion.trim() : 'unknown';
73
+ const mine = (typeof localVersion === 'string' && localVersion.trim()) ? localVersion.trim() : 'unknown';
74
+ return `A GoodVibes daemon (version ${found}) is running on ${host}:${port}, but this surface (version ${mine}) speaks an incompatible wire version — not adopting, and not starting a second daemon on the occupied port.`;
75
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * D7a Layer 2 — pid/port discovery for the detached daemon.
3
+ *
4
+ * When a surface spawns the daemon as a detached, standalone process, it records
5
+ * the pid/host/port to a small JSON file under the daemon home so a later surface
6
+ * (or a `GET /api/service/status` call against the daemon HTTP API) can discover and adopt it without a fresh
7
+ * spawn. This is deliberately a plain record — not a lock — since the daemon's own
8
+ * identity probe is the source of truth for "is it actually alive and mine".
9
+ */
10
+ /** File name of the detached-daemon runtime record within the daemon home dir. */
11
+ export declare const DETACHED_DAEMON_RUNTIME_FILE = "detached-daemon.json";
12
+ export interface DetachedDaemonRuntimeRecord {
13
+ readonly pid: number | undefined;
14
+ readonly host: string;
15
+ readonly port: number;
16
+ readonly command: string;
17
+ readonly startedAt: string;
18
+ readonly logFilePath?: string | undefined;
19
+ }
20
+ /** Absolute path of the runtime record file for a given daemon runtime dir. */
21
+ export declare function detachedDaemonRuntimePath(runtimeDir: string): string;
22
+ /** Write (or overwrite) the detached-daemon runtime record. Best-effort; never throws. */
23
+ export declare function recordDetachedDaemonRuntime(runtimeDir: string, record: DetachedDaemonRuntimeRecord): string | null;
24
+ /** Read the detached-daemon runtime record, or null if missing/unparseable. */
25
+ export declare function readDetachedDaemonRuntime(runtimeDir: string): DetachedDaemonRuntimeRecord | null;
26
+ //# sourceMappingURL=detached-daemon-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detached-daemon-runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/detached-daemon-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AAEnE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,0FAA0F;AAC1F,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,2BAA2B,GAClC,MAAM,GAAG,IAAI,CASf;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,2BAA2B,GAAG,IAAI,CAgBhG"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * D7a Layer 2 — pid/port discovery for the detached daemon.
3
+ *
4
+ * When a surface spawns the daemon as a detached, standalone process, it records
5
+ * the pid/host/port to a small JSON file under the daemon home so a later surface
6
+ * (or a `GET /api/service/status` call against the daemon HTTP API) can discover and adopt it without a fresh
7
+ * spawn. This is deliberately a plain record — not a lock — since the daemon's own
8
+ * identity probe is the source of truth for "is it actually alive and mine".
9
+ */
10
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
11
+ import { dirname, join } from 'node:path';
12
+ /** File name of the detached-daemon runtime record within the daemon home dir. */
13
+ export const DETACHED_DAEMON_RUNTIME_FILE = 'detached-daemon.json';
14
+ /** Absolute path of the runtime record file for a given daemon runtime dir. */
15
+ export function detachedDaemonRuntimePath(runtimeDir) {
16
+ return join(runtimeDir, DETACHED_DAEMON_RUNTIME_FILE);
17
+ }
18
+ /** Write (or overwrite) the detached-daemon runtime record. Best-effort; never throws. */
19
+ export function recordDetachedDaemonRuntime(runtimeDir, record) {
20
+ const path = detachedDaemonRuntimePath(runtimeDir);
21
+ try {
22
+ mkdirSync(dirname(path), { recursive: true });
23
+ writeFileSync(path, `${JSON.stringify(record, null, 2)}\n`, 'utf-8');
24
+ return path;
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ /** Read the detached-daemon runtime record, or null if missing/unparseable. */
31
+ export function readDetachedDaemonRuntime(runtimeDir) {
32
+ try {
33
+ const raw = readFileSync(detachedDaemonRuntimePath(runtimeDir), 'utf-8');
34
+ const parsed = JSON.parse(raw);
35
+ if (typeof parsed.port !== 'number' || typeof parsed.host !== 'string')
36
+ return null;
37
+ return {
38
+ pid: typeof parsed.pid === 'number' ? parsed.pid : undefined,
39
+ host: parsed.host,
40
+ port: parsed.port,
41
+ command: typeof parsed.command === 'string' ? parsed.command : '',
42
+ startedAt: typeof parsed.startedAt === 'string' ? parsed.startedAt : '',
43
+ logFilePath: typeof parsed.logFilePath === 'string' ? parsed.logFilePath : undefined,
44
+ };
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
@@ -17,6 +17,17 @@ export declare function emitCommunicationSent(bus: RuntimeEventBus, ctx: Emitter
17
17
  parentAgentId?: string | undefined;
18
18
  }): void;
19
19
  export declare function emitCommunicationDelivered(bus: RuntimeEventBus, ctx: EmitterContext, data: BaseCommunication): void;
20
+ /**
21
+ * The honest "consumed at boundary" signal — emitted once, at the drain
22
+ * site (orchestrator-runner.ts), the turn a queued message is actually
23
+ * injected into the target agent's conversation. Never repurpose
24
+ * `emitCommunicationDelivered` for this: it fires eagerly at send() time.
25
+ */
26
+ export declare function emitCommunicationConsumed(bus: RuntimeEventBus, ctx: EmitterContext, data: {
27
+ messageId: string;
28
+ agentId: string;
29
+ turn: number;
30
+ }): void;
20
31
  export declare function emitCommunicationBlocked(bus: RuntimeEventBus, ctx: EmitterContext, data: BaseCommunication & {
21
32
  reason: string;
22
33
  fromRole?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"communication.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/emitters/communication.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE9F,KAAK,iBAAiB,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GACA,IAAI,CAEN;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAEN;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GACA,IAAI,CAEN"}
1
+ {"version":3,"file":"communication.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/emitters/communication.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE9F,KAAK,iBAAiB,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GACA,IAAI,CAEN;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzD,IAAI,CAEN;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GACA,IAAI,CAEN"}
@@ -8,6 +8,15 @@ export function emitCommunicationSent(bus, ctx, data) {
8
8
  export function emitCommunicationDelivered(bus, ctx, data) {
9
9
  bus.emit('communication', createEventEnvelope('COMMUNICATION_DELIVERED', { type: 'COMMUNICATION_DELIVERED', ...data }, ctx));
10
10
  }
11
+ /**
12
+ * The honest "consumed at boundary" signal — emitted once, at the drain
13
+ * site (orchestrator-runner.ts), the turn a queued message is actually
14
+ * injected into the target agent's conversation. Never repurpose
15
+ * `emitCommunicationDelivered` for this: it fires eagerly at send() time.
16
+ */
17
+ export function emitCommunicationConsumed(bus, ctx, data) {
18
+ bus.emit('communication', createEventEnvelope('COMMUNICATION_CONSUMED', { type: 'COMMUNICATION_CONSUMED', ...data }, ctx));
19
+ }
11
20
  export function emitCommunicationBlocked(bus, ctx, data) {
12
21
  bus.emit('communication', createEventEnvelope('COMMUNICATION_BLOCKED', { type: 'COMMUNICATION_BLOCKED', ...data }, ctx));
13
22
  }
@@ -36,7 +36,7 @@ export declare function emitWorkflowChainPassed(bus: RuntimeEventBus, ctx: Emitt
36
36
  export declare function emitWorkflowChainFailed(bus: RuntimeEventBus, ctx: EmitterContext, data: {
37
37
  chainId: string;
38
38
  reason: string;
39
- failureKind?: 'transport' | 'other' | undefined;
39
+ failureKind?: 'transport' | 'other' | 'cancelled' | undefined;
40
40
  }): void;
41
41
  export declare function emitWorkflowAutoCommitted(bus: RuntimeEventBus, ctx: EmitterContext, data: {
42
42
  chainId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/emitters/workflows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/emitters/workflows.ts"],"names":[],"mappings":"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"}
@@ -69,6 +69,19 @@ export interface RuntimeEventBusOptions {
69
69
  * sessionId, timestamps, and source context.
70
70
  *
71
71
  * This is the authoritative event transport for runtime domain signaling.
72
+ *
73
+ * DISPATCH ORDERING GUARANTEE (contract — pinned by
74
+ * test/runtime-event-bus-dispatch-contract.test.ts): {@link emit} NEVER invokes
75
+ * a subscriber synchronously. Each matching handler is deferred to its own
76
+ * `queueMicrotask`, so emit() always returns to its caller — and the caller's
77
+ * remaining synchronous statements run — BEFORE any listener fires. A component
78
+ * may therefore emit an event from the MIDDLE of a state mutation without risk
79
+ * that a subscriber observes the half-applied state: by the time a listener
80
+ * runs, the mutating call has already completed and the state has settled. This
81
+ * asynchronous-dispatch ordering is load-bearing for event-ordering safety
82
+ * across the runtime (e.g. the orchestration zombie-reap path relies on
83
+ * listeners never seeing a mutation mid-flight) — do NOT replace queueMicrotask
84
+ * with synchronous invocation.
72
85
  */
73
86
  export declare class RuntimeEventBus {
74
87
  /** Per-event-type listener sets. Keyed by the exact event type string. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/events/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/events/index.ts"],"names":[],"mappings":"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"}