@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
@@ -13,8 +13,10 @@ import { ConsecutiveErrorBreaker } from '../core/circuit-breaker.js';
13
13
  import { isRateLimitOrQuotaError, isContextSizeExceededError, isNetworkTransportError } from '../types/errors.js';
14
14
  import { AgentSession } from './session.js';
15
15
  import { estimateTokens, estimateConversationTokens, compactSmallWindow, } from '../core/context-compaction.js';
16
+ import { emitCommunicationConsumed } from '../runtime/emitters/index.js';
16
17
  import { summarizeToolArgs } from './orchestrator-utils.js';
17
18
  import { buildLayeredOrchestratorSystemPrompt, buildOrchestratorSystemPrompt } from './orchestrator-prompts.js';
19
+ import { buildPerTurnKnowledgeInjection, defaultTurnKnowledgeBudgetTokens, recordTurnInjection, DEFAULT_TURN_KNOWLEDGE_RELEVANCE_FLOOR, } from './turn-knowledge-injection.js';
18
20
  import { summarizeError } from '../utils/error-display.js';
19
21
  import { resolveScopedDirectory } from '../runtime/surface-root.js';
20
22
  import { appendGoodVibesRuntimeAwarenessPrompt } from '../tools/goodvibes-runtime/index.js';
@@ -133,8 +135,16 @@ async function executeToolCalls(toolCalls, toolRegistry, session, turn, record,
133
135
  }
134
136
  const callSig = `${call.name}::${JSON.stringify(call.arguments)}`;
135
137
  try {
136
- const result = await toolRegistry.execute(call.id, call.name, call.arguments);
138
+ const signal = context.getCancellationSignal?.(record.id);
139
+ const result = await toolRegistry.execute(call.id, call.name, call.arguments, signal ? { signal } : undefined);
137
140
  results.push({ ...result, callId: call.id });
141
+ // Stage B: schedule a debounced reindex of any touched file(s). Never awaited.
142
+ try {
143
+ context.onToolExecuted?.(call.name, call.arguments, result.success !== false);
144
+ }
145
+ catch (hookErr) {
146
+ logger.warn('onToolExecuted hook error', { tool: call.name, error: summarizeError(hookErr) });
147
+ }
138
148
  session.appendMessage({
139
149
  type: 'tool_execution',
140
150
  turn,
@@ -291,7 +301,23 @@ export async function runAgentTask(context, record) {
291
301
  : 0;
292
302
  conversation = new ConversationManager();
293
303
  conversation.addUserMessage(record.task);
304
+ // Wave-3 Part C6 bridge: hand AgentManager a live accessor onto THIS
305
+ // ConversationManager instance so a fleet tab can render a full-fidelity
306
+ // transcript while the agent runs. `activeConversation` is a separate
307
+ // const (rather than closing over the outer `let conversation`) so the
308
+ // closure's type is non-nullable without a runtime assertion.
309
+ const activeConversation = conversation;
310
+ context.registerConversationSource?.(record.id, () => activeConversation.getMessageSnapshot());
294
311
  let systemPrompt = buildOrchestratorSystemPrompt(record, undefined, context);
312
+ // Wave-5 (wo801, W5.1) per-turn passive-injection state. `knowledgeIdsAlreadySurfaced`
313
+ // seeds from the spawn-time baseline (record.knowledgeInjections, just populated by the
314
+ // call above) and grows with every id a later turn injects, so no record is ever listed
315
+ // twice across the whole run. `priorTurnKnowledgeBlock` is the last successfully-built
316
+ // block, reused verbatim on turns where nothing new arrived (see newUserInputThisTurn
317
+ // below) — it is composed onto the CURRENT `systemPrompt` fresh every turn (see
318
+ // composeTurnSystemPrompt), never written back into the cached `systemPrompt` let itself.
319
+ const knowledgeIdsAlreadySurfaced = new Set((record.knowledgeInjections ?? []).map((entry) => entry.id));
320
+ let priorTurnKnowledgeBlock = null;
295
321
  let continueLoop = true;
296
322
  let turn = 0;
297
323
  record.progress = 'Turn 1 · Thinking…';
@@ -338,6 +364,16 @@ export async function runAgentTask(context, record) {
338
364
  }
339
365
  session.appendMessage({ type: 'llm_request', turn, messageCount: conversation.getMessagesForLLM().length, timestamp: new Date().toISOString() });
340
366
  const pending = context.messageBus.getMessages(record.id);
367
+ // Steers drained into the conversation THIS turn, awaiting the "consumed"
368
+ // signal below — deferred until the turn's chat call actually succeeds.
369
+ // See the comment at the emission site for why this can't fire here.
370
+ const drainedSteerMessageIds = [];
371
+ // Wave-5 (wo801, W5.1): true when this turn actually added new content to the
372
+ // conversation the model will see — turn 1 (the initial task) or any steer/directive
373
+ // drained just above. Gates per-turn knowledge re-retrieval: no new input means the
374
+ // evolving-conversation query would be identical to last turn's, so the prior turn's
375
+ // block is reused verbatim instead of re-running retrieval for no behavioral gain.
376
+ let newUserInputThisTurn = turn === 1;
341
377
  for (const msg of pending) {
342
378
  // Skip the agent's own broadcasts and any message already injected on a
343
379
  // prior turn so each directive is surfaced to the model exactly once.
@@ -346,14 +382,116 @@ export async function runAgentTask(context, record) {
346
382
  if (injectedMessageIds.has(msg.id))
347
383
  continue;
348
384
  injectedMessageIds.add(msg.id);
349
- const kindLabel = (msg.kind[0] ?? '').toUpperCase() + msg.kind.slice(1);
350
- conversation.addUserMessage(`[${kindLabel} from ${msg.from}]: ${msg.content}`);
385
+ newUserInputThisTurn = true;
386
+ if (msg.kind === 'steer') {
387
+ // A human steer (ProcessRegistry.steer) is a genuine user turn, not
388
+ // an inter-agent directive — inject it verbatim, with none of the
389
+ // "[Kind from sender]" framing used for agent-to-agent messages.
390
+ conversation.addUserMessage(msg.content);
391
+ drainedSteerMessageIds.push(msg.id);
392
+ }
393
+ else {
394
+ const kindLabel = (msg.kind[0] ?? '').toUpperCase() + msg.kind.slice(1);
395
+ conversation.addUserMessage(`[${kindLabel} from ${msg.from}]: ${msg.content}`);
396
+ }
351
397
  }
352
- if (context.featureFlagManager?.isEnabled('agent-context-window-awareness') ?? true) {
398
+ const contextWindowAwarenessEnabled = context.featureFlagManager?.isEnabled('agent-context-window-awareness') ?? true;
399
+ const passiveKnowledgeInjectionEnabled = context.featureFlagManager?.isEnabled('agent-passive-knowledge-injection') ?? true;
400
+ // Resolved once per turn (used by both the awareness check below and the per-turn
401
+ // knowledge budget), rather than only inside the awareness branch, so the passive-
402
+ // injection budget can derive "3% of context window" even when context-window
403
+ // awareness itself is disabled.
404
+ let contextWindowForTurn = 0;
405
+ if (contextWindowAwarenessEnabled || passiveKnowledgeInjectionEnabled) {
353
406
  const modelDef = resolveContextWindowModelDefinition(providerRegistry, activeRoute);
354
- const contextWindow = context.providerRegistry.getContextWindowForModel(modelDef);
355
- systemPrompt = applyContextWindowAwareness(context, record, activeRoute.modelId, contextWindow, conversation, systemPrompt, toolTokens, turn);
407
+ contextWindowForTurn = context.providerRegistry.getContextWindowForModel(modelDef);
356
408
  }
409
+ if (contextWindowAwarenessEnabled) {
410
+ systemPrompt = applyContextWindowAwareness(context, record, activeRoute.modelId, contextWindowForTurn, conversation, systemPrompt, toolTokens, turn);
411
+ }
412
+ // Wave-5 (wo801, W5.1): per-turn passive knowledge injection. Gated on the feature
413
+ // flag AND on there being new conversation input this turn; otherwise
414
+ // priorTurnKnowledgeBlock (unchanged) is reused. `priorTurnKnowledgeBlock` and
415
+ // `systemPrompt` are combined into a request-time-only string just below
416
+ // (composeTurnSystemPrompt) — the block is NEVER written back into the `systemPrompt`
417
+ // let, so it cannot compound turn over turn even across the emergency-compaction
418
+ // retry path (which DOES reassign `systemPrompt`) inside the chat-retry loop.
419
+ if (passiveKnowledgeInjectionEnabled && newUserInputThisTurn && context.memoryRegistry) {
420
+ const configuredBudget = context.passiveKnowledgeInjectionBudgetTokens
421
+ ?? defaultTurnKnowledgeBudgetTokens(contextWindowForTurn);
422
+ let turnBudgetTokens = configuredBudget;
423
+ if (contextWindowAwarenessEnabled && contextWindowForTurn > 0) {
424
+ // Clamp the block's budget to whatever headroom is left under the SAME 85%
425
+ // compaction threshold applyContextWindowAwareness just enforced on the base
426
+ // prompt, so base+block can never silently exceed it even though the block is
427
+ // composed after that check ran (risk: B-tier token dishonesty otherwise).
428
+ const msgTokensForBudget = estimateConversationTokens(conversation.getMessagesForLLM());
429
+ const sysTokensForBudget = estimateTokens(systemPrompt);
430
+ const threshold = Math.floor(contextWindowForTurn * CONTEXT_COMPACT_THRESHOLD);
431
+ const headroomTokens = threshold - msgTokensForBudget - sysTokensForBudget - toolTokens;
432
+ turnBudgetTokens = Math.max(0, Math.min(configuredBudget, headroomTokens));
433
+ }
434
+ if (turnBudgetTokens > 0) {
435
+ const relevanceFloor = context.passiveKnowledgeInjectionRelevanceFloor ?? DEFAULT_TURN_KNOWLEDGE_RELEVANCE_FLOOR;
436
+ // Stage B: code hits share this turn's SAME budget/floor. Gated on the separate
437
+ // (default-off) code-injection flag AND the embedder's storage.codeIndexEnabled setting.
438
+ const codeInjectionEnabled = !!context.codeIndex
439
+ && (context.featureFlagManager?.isEnabled('agent-passive-code-injection') ?? false)
440
+ && (context.isCodeInjectionSettingEnabled?.() ?? true);
441
+ const { block, record: turnInjectionRecord } = buildPerTurnKnowledgeInjection({
442
+ memoryRegistry: context.memoryRegistry,
443
+ task: record.task,
444
+ writeScope: record.writeScope ?? [],
445
+ conversationTail: conversation.getMessagesForLLM(),
446
+ budgetTokens: turnBudgetTokens,
447
+ relevanceFloor,
448
+ alreadyInjectedIds: [...knowledgeIdsAlreadySurfaced],
449
+ turn,
450
+ codeIndex: context.codeIndex,
451
+ codeInjectionEnabled,
452
+ });
453
+ priorTurnKnowledgeBlock = block;
454
+ for (const id of turnInjectionRecord.injectedIds)
455
+ knowledgeIdsAlreadySurfaced.add(id);
456
+ record.turnInjections = recordTurnInjection(record.turnInjections, turnInjectionRecord);
457
+ session.appendMessage({ type: 'knowledge_injection', ...turnInjectionRecord });
458
+ }
459
+ else {
460
+ // Hard no-op: no budget headroom this turn. Never call into retrieval for a
461
+ // budget that's already known to be zero, and never claim a block that can't
462
+ // exist — no record, no session message, prior block cleared so the composed
463
+ // prompt below falls back to the base systemPrompt exactly.
464
+ priorTurnKnowledgeBlock = null;
465
+ }
466
+ }
467
+ // Wave-5 (wo801, W5.1): compose the per-turn knowledge block onto the base
468
+ // systemPrompt fresh at EVERY call site (including each chat-retry iteration below),
469
+ // instead of hoisting a single `const turnSystemPrompt` computed once before the
470
+ // retry loop. This matters because the emergency-compaction retry path inside that
471
+ // loop reassigns the outer `systemPrompt` let (buildLayeredOrchestratorSystemPrompt)
472
+ // — a hoisted const would go stale and keep resubmitting the pre-compaction prompt,
473
+ // silently defeating that retry. Composing here also re-validates fit on every call:
474
+ // if base+block would exceed the SAME 85% compaction threshold applyContextWindowAwareness
475
+ // enforces (using live, current-call token counts, not turn-start estimates), the block
476
+ // is dropped for that call only — this is the safety net for a REUSED block (one that
477
+ // was sized against a headroom estimate one or more turns ago and may no longer fit,
478
+ // e.g. after several no-new-input turns of tool-result growth). It never mutates
479
+ // `priorTurnKnowledgeBlock` or the stored TurnInjectionRecord, both of which honestly
480
+ // reflect what retrieval computed at the time it ran.
481
+ const composeTurnSystemPrompt = (base) => {
482
+ if (!priorTurnKnowledgeBlock)
483
+ return base;
484
+ if (contextWindowAwarenessEnabled && contextWindowForTurn > 0) {
485
+ const liveMsgTokens = estimateConversationTokens(activeConversation.getMessagesForLLM());
486
+ const liveSysTokens = estimateTokens(base);
487
+ const liveBlockTokens = estimateTokens(priorTurnKnowledgeBlock);
488
+ const threshold = Math.floor(contextWindowForTurn * CONTEXT_COMPACT_THRESHOLD);
489
+ if (liveMsgTokens + liveSysTokens + liveBlockTokens + toolTokens > threshold) {
490
+ return base;
491
+ }
492
+ }
493
+ return `${base}\n\n${priorTurnKnowledgeBlock}`;
494
+ };
357
495
  let response;
358
496
  {
359
497
  let networkAttempt = 0;
@@ -380,7 +518,7 @@ export async function runAgentTask(context, record) {
380
518
  model: activeRoute.modelId,
381
519
  messages: conversation.getMessagesForLLM(),
382
520
  tools: toolDefinitions.length > 0 ? toolDefinitions : undefined,
383
- systemPrompt: appendGoodVibesRuntimeAwarenessPrompt(systemPrompt),
521
+ systemPrompt: appendGoodVibesRuntimeAwarenessPrompt(composeTurnSystemPrompt(systemPrompt)),
384
522
  ...(record.reasoningEffort ? { reasoningEffort: record.reasoningEffort } : {}),
385
523
  onDelta,
386
524
  });
@@ -461,6 +599,24 @@ export async function runAgentTask(context, record) {
461
599
  record.streamingContent = undefined;
462
600
  record.progress = `Turn ${turn} · Thinking…`;
463
601
  }
602
+ // Honest "consumed at boundary" signal, emitted here (not at drain time
603
+ // above) because this is the first point in the turn where the chat
604
+ // call is KNOWN to have succeeded. If the call above exhausted its
605
+ // retries/fallbacks, it throws and unwinds out of this function (caught
606
+ // by the outer try/catch → handleAgentRunFailure) without ever reaching
607
+ // this line — so a steer drained into a turn whose chat then fails
608
+ // never gets a consumed signal it didn't earn. Never emit this from
609
+ // AgentMessageBus.send() itself — that fires eagerly, before the agent
610
+ // has any chance to see the message.
611
+ if (context.runtimeBus) {
612
+ for (const messageId of drainedSteerMessageIds) {
613
+ emitCommunicationConsumed(context.runtimeBus, context.emitterContext(record.id), {
614
+ messageId,
615
+ agentId: record.id,
616
+ turn,
617
+ });
618
+ }
619
+ }
464
620
  session.appendMessage({ type: 'llm_response', turn, contentLength: response.content.length, toolCallCount: response.toolCalls.length, usage: response.usage, timestamp: new Date().toISOString() });
465
621
  record.usage = {
466
622
  inputTokens: (record.usage?.inputTokens ?? 0) + response.usage.inputTokens,
@@ -539,4 +695,13 @@ export async function runAgentTask(context, record) {
539
695
  catch (err) {
540
696
  await handleAgentRunFailure(context, record, conversation, session, preAgentProcessIds, err);
541
697
  }
698
+ finally {
699
+ // Wave-3 Part C6 bridge: release on EVERY exit path (normal completion,
700
+ // the mid-loop cancellation/MAX_TURNS early returns above, and the catch
701
+ // above) so the live source is never retained past the run and a final
702
+ // snapshot always lands in AgentManager's retention ring. A no-op when
703
+ // register was never called (e.g. failure before the ConversationManager
704
+ // was created).
705
+ context.releaseConversationSource?.(record.id);
706
+ }
542
707
  }
@@ -1,5 +1,6 @@
1
1
  import { ToolRegistry } from '../tools/registry.js';
2
2
  import type { ConfigManager } from '../config/manager.js';
3
+ import type { ConversationMessageSnapshot } from '../core/conversation.js';
3
4
  import type { ProviderRegistry } from '../providers/registry.js';
4
5
  import { AgentMessageBus } from './message-bus.js';
5
6
  import type { ChannelPluginRegistry } from '../channels/index.js';
@@ -10,6 +11,29 @@ import type { ToolLLM } from '../config/tool-llm.js';
10
11
  import type { FeatureFlagManager } from '../runtime/feature-flags/manager.js';
11
12
  import type { RuntimeEventBus } from '../runtime/events/index.js';
12
13
  export { summarizeToolArgs } from './orchestrator-utils.js';
14
+ /**
15
+ * Wave-3 Part C6 bridge: where AgentOrchestrator forwards a running agent's
16
+ * live conversation-snapshot accessor. In production this is AgentManager's
17
+ * registerConversationSource/releaseConversationSource, wired post-
18
+ * construction in runtime/services.ts (AgentOrchestrator is constructed
19
+ * before AgentManager there, so this is a setter rather than a constructor
20
+ * dependency — same pattern as setRuntimeBus).
21
+ */
22
+ export interface AgentConversationSink {
23
+ readonly register: (agentId: string, source: () => ConversationMessageSnapshot[]) => void;
24
+ readonly release: (agentId: string) => void;
25
+ }
26
+ /**
27
+ * Wave-4 cooperative cancellation bridge (wo701): where AgentOrchestrator
28
+ * looks up a per-agent AbortSignal registered by an orchestration engine's
29
+ * work-item run. Same shape/wiring precedent as AgentConversationSink — a
30
+ * setter rather than a constructor dependency, wired post-construction in
31
+ * runtime/services.ts (production backing is
32
+ * AgentManager.registerCancellationSignal/getCancellationSignal).
33
+ */
34
+ export interface AgentCancellationSource {
35
+ readonly get: (agentId: string) => AbortSignal | undefined;
36
+ }
13
37
  type AgentOrchestratorToolDeps = {
14
38
  readonly fileCache: FileStateCache;
15
39
  readonly projectIndex: ProjectIndex;
@@ -24,6 +48,9 @@ type AgentOrchestratorToolDeps = {
24
48
  readonly remoteRunnerRegistry?: import('../runtime/remote/index.js').RemoteRunnerRegistry | undefined;
25
49
  readonly knowledgeService?: import('../knowledge/index.js').KnowledgeService | undefined;
26
50
  readonly memoryRegistry?: import('../state/index.js').MemoryRegistry | undefined;
51
+ readonly codeIndex?: import('./turn-knowledge-injection.js').TurnCodeIndexSource | undefined;
52
+ readonly isCodeInjectionSettingEnabled?: (() => boolean) | undefined;
53
+ readonly codeIndexReindexScheduler?: Pick<import('../state/code-index-reindex.js').CodeIndexReindexScheduler, 'onToolExecuted'> | undefined;
27
54
  readonly sessionOrchestration: import('../sessions/orchestration/index.js').CrossSessionTaskRegistry;
28
55
  readonly archetypeLoader?: import('./archetypes.js').ArchetypeLoader | undefined;
29
56
  readonly configManager?: ConfigManager | undefined;
@@ -45,11 +72,22 @@ type AgentOrchestratorToolDeps = {
45
72
  * `orchestrator-runner.ts`; this class owns shared registry/state wiring.
46
73
  */
47
74
  export declare class AgentOrchestrator {
48
- private fullRegistry;
75
+ /**
76
+ * Keyed by working directory. A ToolRegistry is permanently bound to one
77
+ * cwd at construction (every tool factory closes over it — see
78
+ * tools/index.ts registerAllTools), so a distinct cwd genuinely needs its
79
+ * own registry, not a mutable field. The default cwd
80
+ * (`this.toolDeps.workingDirectory`) is cached under its own key exactly
81
+ * like the single `fullRegistry` field this replaces — same lazy-build,
82
+ * same channel-version invalidation, same object identity once built.
83
+ */
84
+ private fullRegistries;
49
85
  private fullRegistryChannelVersion;
50
86
  private toolDeps;
51
87
  private featureFlagManager;
52
88
  private runtimeBus;
89
+ private conversationSink;
90
+ private cancellationSource;
53
91
  private readonly channelRegistry;
54
92
  private readonly messageBus;
55
93
  constructor(config?: {
@@ -59,6 +97,20 @@ export declare class AgentOrchestrator {
59
97
  setRuntimeBus(runtimeBus: RuntimeEventBus | null): void;
60
98
  /** Set the FeatureFlagManager for context-window awareness gating. */
61
99
  setFeatureFlagManager(manager: FeatureFlagManager): void;
100
+ /**
101
+ * Wire the Wave-3 Part C6 conversation-snapshot bridge (see
102
+ * AgentConversationSink). Pass null to detach — createRunContext() then
103
+ * omits the register/release callbacks entirely and orchestrator-runner's
104
+ * `?.()` calls become no-ops.
105
+ */
106
+ setConversationSink(sink: AgentConversationSink | null): void;
107
+ /**
108
+ * Wire the Wave-4 cancellation bridge (see AgentCancellationSource). Pass
109
+ * null to detach — createRunContext() then omits getCancellationSignal
110
+ * entirely and orchestrator-runner's `?.()` call becomes a no-op, so every
111
+ * tool call runs with `opts` undefined exactly as before this change.
112
+ */
113
+ setCancellationSource(source: AgentCancellationSource | null): void;
62
114
  private emitterContext;
63
115
  private emitAgentProgress;
64
116
  private emitOrchestrationProgress;
@@ -76,12 +128,22 @@ export declare class AgentOrchestrator {
76
128
  */
77
129
  setDependencies(toolDeps: AgentOrchestratorToolDeps): void;
78
130
  /**
79
- * Returns the fully-populated ToolRegistry for this orchestrator.
80
- * Used by companion chat to execute tool calls emitted by the LLM.
81
- * Delegates to the lazy-initialized internal registry.
131
+ * Returns the fully-populated ToolRegistry for this orchestrator's DEFAULT
132
+ * working directory. Used by companion chat to execute tool calls emitted
133
+ * by the LLM — companion chat has no per-call cwd override, so this always
134
+ * resolves to `this.toolDeps.workingDirectory`. Delegates to the
135
+ * lazy-initialized internal registry cache.
82
136
  */
83
137
  getToolRegistry(): ToolRegistry;
84
- /** Lazily build and cache the full ToolRegistry. */
138
+ /**
139
+ * Lazily build and cache the full ToolRegistry for `workingDirectory`
140
+ * (default: `this.toolDeps.workingDirectory`, unchanged from before this
141
+ * cache became keyed). A non-default cwd — a spawned agent's dedicated
142
+ * worktree (AgentRecord.workingDirectory, see AgentInput.workingDirectory)
143
+ * — gets its OWN fresh fileCache/projectIndex rather than reusing the
144
+ * shared session's: those are scoped to the default cwd and would
145
+ * otherwise silently index/search the wrong directory.
146
+ */
85
147
  private getFullRegistry;
86
148
  /**
87
149
  * Build a ToolRegistry containing only the tools whose names appear in
@@ -97,8 +159,18 @@ export declare class AgentOrchestrator {
97
159
  private assertProviderQualifiedModel;
98
160
  private resolveChatModelId;
99
161
  private resolveFallbackModelRoutes;
162
+ /**
163
+ * @param workingDirectory Per-call cwd override (AgentRecord.workingDirectory).
164
+ * Absent ⇒ `this.toolDeps.workingDirectory`, byte-identical to every run
165
+ * context built before this parameter existed.
166
+ */
100
167
  private createRunContext;
101
- /** Run an agent task described by the given record. */
168
+ /**
169
+ * Run an agent task described by the given record. Honors
170
+ * `record.workingDirectory` when set (see AgentInput.workingDirectory) —
171
+ * every tool this run's registry exposes is bound to that cwd instead of
172
+ * the orchestrator's default.
173
+ */
102
174
  runAgent(record: AgentRecord): Promise<void>;
103
175
  }
104
176
  //# sourceMappingURL=orchestrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -19,11 +19,22 @@ export { summarizeToolArgs } from './orchestrator-utils.js';
19
19
  * `orchestrator-runner.ts`; this class owns shared registry/state wiring.
20
20
  */
21
21
  export class AgentOrchestrator {
22
- fullRegistry = null;
22
+ /**
23
+ * Keyed by working directory. A ToolRegistry is permanently bound to one
24
+ * cwd at construction (every tool factory closes over it — see
25
+ * tools/index.ts registerAllTools), so a distinct cwd genuinely needs its
26
+ * own registry, not a mutable field. The default cwd
27
+ * (`this.toolDeps.workingDirectory`) is cached under its own key exactly
28
+ * like the single `fullRegistry` field this replaces — same lazy-build,
29
+ * same channel-version invalidation, same object identity once built.
30
+ */
31
+ fullRegistries = new Map();
23
32
  fullRegistryChannelVersion = -2;
24
33
  toolDeps = null;
25
34
  featureFlagManager = null;
26
35
  runtimeBus = null;
36
+ conversationSink = null;
37
+ cancellationSource = null;
27
38
  channelRegistry;
28
39
  messageBus;
29
40
  constructor(config = {
@@ -39,6 +50,24 @@ export class AgentOrchestrator {
39
50
  setFeatureFlagManager(manager) {
40
51
  this.featureFlagManager = manager;
41
52
  }
53
+ /**
54
+ * Wire the Wave-3 Part C6 conversation-snapshot bridge (see
55
+ * AgentConversationSink). Pass null to detach — createRunContext() then
56
+ * omits the register/release callbacks entirely and orchestrator-runner's
57
+ * `?.()` calls become no-ops.
58
+ */
59
+ setConversationSink(sink) {
60
+ this.conversationSink = sink;
61
+ }
62
+ /**
63
+ * Wire the Wave-4 cancellation bridge (see AgentCancellationSource). Pass
64
+ * null to detach — createRunContext() then omits getCancellationSignal
65
+ * entirely and orchestrator-runner's `?.()` call becomes a no-op, so every
66
+ * tool call runs with `opts` undefined exactly as before this change.
67
+ */
68
+ setCancellationSource(source) {
69
+ this.cancellationSource = source;
70
+ }
42
71
  emitterContext(agentId) {
43
72
  return {
44
73
  sessionId: 'agent-orchestrator',
@@ -138,30 +167,53 @@ export class AgentOrchestrator {
138
167
  */
139
168
  setDependencies(toolDeps) {
140
169
  this.toolDeps = toolDeps;
141
- this.fullRegistry = null;
170
+ this.fullRegistries = new Map();
142
171
  this.fullRegistryChannelVersion = -2;
143
172
  }
144
173
  /**
145
- * Returns the fully-populated ToolRegistry for this orchestrator.
146
- * Used by companion chat to execute tool calls emitted by the LLM.
147
- * Delegates to the lazy-initialized internal registry.
174
+ * Returns the fully-populated ToolRegistry for this orchestrator's DEFAULT
175
+ * working directory. Used by companion chat to execute tool calls emitted
176
+ * by the LLM — companion chat has no per-call cwd override, so this always
177
+ * resolves to `this.toolDeps.workingDirectory`. Delegates to the
178
+ * lazy-initialized internal registry cache.
148
179
  */
149
180
  getToolRegistry() {
150
181
  return this.getFullRegistry();
151
182
  }
152
- /** Lazily build and cache the full ToolRegistry. */
153
- getFullRegistry() {
183
+ /**
184
+ * Lazily build and cache the full ToolRegistry for `workingDirectory`
185
+ * (default: `this.toolDeps.workingDirectory`, unchanged from before this
186
+ * cache became keyed). A non-default cwd — a spawned agent's dedicated
187
+ * worktree (AgentRecord.workingDirectory, see AgentInput.workingDirectory)
188
+ * — gets its OWN fresh fileCache/projectIndex rather than reusing the
189
+ * shared session's: those are scoped to the default cwd and would
190
+ * otherwise silently index/search the wrong directory.
191
+ */
192
+ getFullRegistry(workingDirectory) {
154
193
  const channelVersion = this.channelRegistry?.getVersion() ?? -1;
155
- if (!this.fullRegistry || this.fullRegistryChannelVersion !== channelVersion) {
194
+ if (this.fullRegistryChannelVersion !== channelVersion) {
195
+ this.fullRegistries.clear();
196
+ this.fullRegistryChannelVersion = channelVersion;
197
+ }
198
+ const defaultCwd = this.toolDeps?.workingDirectory ?? '';
199
+ const cwd = workingDirectory ?? defaultCwd;
200
+ let registry = this.fullRegistries.get(cwd);
201
+ if (!registry) {
156
202
  if (!this.toolDeps?.configManager || !this.toolDeps?.providerRegistry || !this.toolDeps?.toolLLM) {
157
203
  throw new Error('AgentOrchestrator requires configManager, providerRegistry, and toolLLM dependencies before tool registration');
158
204
  }
159
- this.fullRegistry = new ToolRegistry();
160
- registerAllTools(this.fullRegistry, this.toolDeps);
161
- registerChannelAgentTools(this.fullRegistry, this.toolDeps?.channelRegistry ?? this.channelRegistry);
162
- this.fullRegistryChannelVersion = channelVersion;
205
+ registry = new ToolRegistry();
206
+ const isDefaultCwd = cwd === defaultCwd;
207
+ registerAllTools(registry, {
208
+ ...this.toolDeps,
209
+ workingDirectory: cwd,
210
+ fileCache: isDefaultCwd ? this.toolDeps.fileCache : undefined,
211
+ projectIndex: isDefaultCwd ? this.toolDeps.projectIndex : undefined,
212
+ });
213
+ registerChannelAgentTools(registry, this.toolDeps?.channelRegistry ?? this.channelRegistry);
214
+ this.fullRegistries.set(cwd, registry);
163
215
  }
164
- return this.fullRegistry;
216
+ return registry;
165
217
  }
166
218
  /**
167
219
  * Build a ToolRegistry containing only the tools whose names appear in
@@ -327,9 +379,15 @@ export class AgentOrchestrator {
327
379
  }
328
380
  return routes;
329
381
  }
330
- createRunContext() {
382
+ /**
383
+ * @param workingDirectory Per-call cwd override (AgentRecord.workingDirectory).
384
+ * Absent ⇒ `this.toolDeps.workingDirectory`, byte-identical to every run
385
+ * context built before this parameter existed.
386
+ */
387
+ createRunContext(workingDirectory) {
388
+ const cwd = workingDirectory ?? this.toolDeps?.workingDirectory ?? '';
331
389
  return {
332
- workingDirectory: this.toolDeps?.workingDirectory ?? '',
390
+ workingDirectory: cwd,
333
391
  surfaceRoot: this.toolDeps?.surfaceRoot ?? '',
334
392
  runtimeBus: this.runtimeBus,
335
393
  featureFlagManager: this.featureFlagManager,
@@ -344,21 +402,40 @@ export class AgentOrchestrator {
344
402
  emitAgentCompletedEvent: (recordId, durationMs, output, toolCallsMade, usage) => this.emitAgentCompletedEvent(recordId, durationMs, output, toolCallsMade, usage),
345
403
  emitOrchestrationCompleted: (record, output) => this.emitOrchestrationCompleted(record, output),
346
404
  emitStreamDelta: (recordId, content, accumulated) => this.emitStreamDelta(recordId, content, accumulated),
405
+ registerConversationSource: this.conversationSink
406
+ ? (agentId, source) => this.conversationSink.register(agentId, source)
407
+ : undefined,
408
+ releaseConversationSource: this.conversationSink
409
+ ? (agentId) => this.conversationSink.release(agentId)
410
+ : undefined,
411
+ getCancellationSignal: this.cancellationSource
412
+ ? (agentId) => this.cancellationSource.get(agentId)
413
+ : undefined,
347
414
  processManager: this.toolDeps?.processManager,
348
415
  messageBus: this.messageBus,
349
416
  knowledgeService: this.toolDeps?.knowledgeService,
350
417
  memoryRegistry: this.toolDeps?.memoryRegistry,
418
+ codeIndex: this.toolDeps?.codeIndex,
419
+ isCodeInjectionSettingEnabled: this.toolDeps?.isCodeInjectionSettingEnabled,
420
+ onToolExecuted: this.toolDeps?.codeIndexReindexScheduler
421
+ ? (toolName, args, success) => this.toolDeps.codeIndexReindexScheduler.onToolExecuted(toolName, args, success)
422
+ : undefined,
351
423
  archetypeLoader: this.toolDeps?.archetypeLoader,
352
424
  providerOptimizer: this.toolDeps?.providerOptimizer,
353
425
  providerRegistry: this.toolDeps.providerRegistry,
354
- getFullRegistry: () => this.getFullRegistry(),
426
+ getFullRegistry: () => this.getFullRegistry(cwd),
355
427
  buildScopedRegistry: (allowedNames, fullRegistry) => this.buildScopedRegistry(allowedNames, fullRegistry),
356
428
  resolveProviderForRecord: (providerRegistry, record, currentModel) => this.resolveProviderForRecord(providerRegistry, record, currentModel),
357
429
  resolveFallbackModelRoutes: (providerRegistry, record, currentModel, primaryRequestedModelId) => this.resolveFallbackModelRoutes(providerRegistry, record, currentModel, primaryRequestedModelId),
358
430
  };
359
431
  }
360
- /** Run an agent task described by the given record. */
432
+ /**
433
+ * Run an agent task described by the given record. Honors
434
+ * `record.workingDirectory` when set (see AgentInput.workingDirectory) —
435
+ * every tool this run's registry exposes is bound to that cwd instead of
436
+ * the orchestrator's default.
437
+ */
361
438
  async runAgent(record) {
362
- await runAgentTask(this.createRunContext(), record);
439
+ await runAgentTask(this.createRunContext(record.workingDirectory), record);
363
440
  }
364
441
  }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Production `DecompositionRunner` backed by the real `AgentManager`.
3
+ *
4
+ * This is the concrete driver that spawns a bounded, READ-ONLY `planner`
5
+ * agent through the existing agents machinery and polls it to completion. It
6
+ * lives in the agents layer (not `core`) precisely so `core/plan-decomposition.ts`
7
+ * can stay free of any agent-machinery import and be unit-tested against a
8
+ * stubbed runner. The planning agent it spawns is an ordinary `AgentManager`
9
+ * agent, so it surfaces in the fleet like any other and honours kill/steer;
10
+ * an external kill lands here as a `'cancelled'` result → heuristic fallback.
11
+ *
12
+ * Bounds are enforced cooperatively by polling `AgentRecord.usage`:
13
+ * - wall-clock: `cancel()` once `now() >= start + wallTimeoutMs`
14
+ * - token ceiling: `cancel()` once input+output tokens exceed the ceiling
15
+ * - turns: `cancel()` once `usage.turnCount` exceeds `maxTurns`
16
+ * All three collapse to a `'cancelled'` run result (with a `detail`), which the
17
+ * service turns into an honest `fallbackReason`.
18
+ */
19
+ import type { AgentManager } from '../tools/agent/manager.js';
20
+ import type { DecompositionRunner } from '../core/plan-decomposition.js';
21
+ /** The read-only tool set the planner template resolves to. Kept in lockstep
22
+ * with AGENT_TEMPLATES.planner and passed with restrictTools for a hard cap. */
23
+ export declare const PLANNER_DECOMPOSITION_TOOLS: readonly ["read", "find", "analyze", "inspect"];
24
+ export interface AgentManagerDecompositionRunnerDeps {
25
+ agentManager: Pick<AgentManager, 'spawn' | 'getStatus' | 'cancel'>;
26
+ /** Injectable clock (tests). */
27
+ now?: () => number;
28
+ /** Injectable sleep (tests). */
29
+ sleep?: (ms: number) => Promise<void>;
30
+ /** Poll interval in ms (default 50). */
31
+ pollIntervalMs?: number;
32
+ /** Optional model registry key override for the planner agent. */
33
+ model?: string | undefined;
34
+ /** Optional provider override for the planner agent. */
35
+ provider?: string | undefined;
36
+ }
37
+ export declare function createAgentManagerDecompositionRunner(deps: AgentManagerDecompositionRunnerDeps): DecompositionRunner;
38
+ //# sourceMappingURL=planner-decomposition-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-decomposition-runner.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/planner-decomposition-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,+BAA+B,CAAC;AAGvC;iFACiF;AACjF,eAAO,MAAM,2BAA2B,iDAAkD,CAAC;AAE3F,MAAM,WAAW,mCAAmC;IAClD,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC,CAAC;IACnE,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,wCAAwC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAyBD,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,mCAAmC,GACxC,mBAAmB,CA+ErB"}