@evalops/maestro 0.10.17 → 0.10.20

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 (930) hide show
  1. package/README.md +56 -1
  2. package/dist/agent/action-approval.d.ts +12 -2
  3. package/dist/agent/action-approval.d.ts.map +1 -1
  4. package/dist/agent/action-approval.js +19 -32
  5. package/dist/agent/action-approval.js.map +1 -1
  6. package/dist/agent/agent.d.ts +1 -0
  7. package/dist/agent/agent.d.ts.map +1 -1
  8. package/dist/agent/agent.js +26 -0
  9. package/dist/agent/agent.js.map +1 -1
  10. package/dist/agent/compaction.d.ts +2 -0
  11. package/dist/agent/compaction.d.ts.map +1 -1
  12. package/dist/agent/compaction.js +4 -2
  13. package/dist/agent/compaction.js.map +1 -1
  14. package/dist/agent/index.d.ts +1 -1
  15. package/dist/agent/index.d.ts.map +1 -1
  16. package/dist/agent/index.js +1 -1
  17. package/dist/agent/index.js.map +1 -1
  18. package/dist/agent/modes.d.ts +56 -4
  19. package/dist/agent/modes.d.ts.map +1 -1
  20. package/dist/agent/modes.js +163 -2
  21. package/dist/agent/modes.js.map +1 -1
  22. package/dist/agent/prompt-recovery.d.ts.map +1 -1
  23. package/dist/agent/prompt-recovery.js +1 -3
  24. package/dist/agent/prompt-recovery.js.map +1 -1
  25. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  26. package/dist/agent/providers/anthropic.js +9 -1
  27. package/dist/agent/providers/anthropic.js.map +1 -1
  28. package/dist/agent/providers/codex-app-server.d.ts +12 -0
  29. package/dist/agent/providers/codex-app-server.d.ts.map +1 -0
  30. package/dist/agent/providers/codex-app-server.js +788 -0
  31. package/dist/agent/providers/codex-app-server.js.map +1 -0
  32. package/dist/agent/providers/google-gemini-cli.js +14 -3
  33. package/dist/agent/providers/google.js +22 -3
  34. package/dist/agent/providers/scripted.d.ts +11 -0
  35. package/dist/agent/providers/scripted.d.ts.map +1 -0
  36. package/dist/agent/providers/scripted.js +399 -0
  37. package/dist/agent/providers/scripted.js.map +1 -0
  38. package/dist/agent/providers/vertex.js +14 -3
  39. package/dist/agent/scenario-source.d.ts +19 -0
  40. package/dist/agent/scenario-source.d.ts.map +1 -0
  41. package/dist/agent/scenario-source.js +112 -0
  42. package/dist/agent/scenario-source.js.map +1 -0
  43. package/dist/agent/subagent-specs.d.ts +1 -1
  44. package/dist/agent/subagent-specs.js +1 -1
  45. package/dist/agent/subagent-specs.js.map +1 -1
  46. package/dist/agent/swarm/executor.d.ts +25 -0
  47. package/dist/agent/swarm/executor.d.ts.map +1 -1
  48. package/dist/agent/swarm/executor.js +795 -20
  49. package/dist/agent/swarm/executor.js.map +1 -1
  50. package/dist/agent/swarm/runtime-events.d.ts +11 -0
  51. package/dist/agent/swarm/runtime-events.d.ts.map +1 -0
  52. package/dist/agent/swarm/runtime-events.js +26 -0
  53. package/dist/agent/swarm/runtime-events.js.map +1 -0
  54. package/dist/agent/swarm/types.d.ts +78 -0
  55. package/dist/agent/swarm/types.d.ts.map +1 -1
  56. package/dist/agent/swarm/types.js.map +1 -1
  57. package/dist/agent/tracing.d.ts +1 -1
  58. package/dist/agent/tracing.d.ts.map +1 -1
  59. package/dist/agent/tracing.js +17 -9
  60. package/dist/agent/tracing.js.map +1 -1
  61. package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
  62. package/dist/agent/transport/create-provider-stream.js +14 -0
  63. package/dist/agent/transport/create-provider-stream.js.map +1 -1
  64. package/dist/agent/transport/stable-stringify.d.ts +2 -0
  65. package/dist/agent/transport/stable-stringify.d.ts.map +1 -0
  66. package/dist/agent/transport/stable-stringify.js +14 -0
  67. package/dist/agent/transport/stable-stringify.js.map +1 -0
  68. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  69. package/dist/agent/transport/tool-execution-bridge.js +2 -15
  70. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  71. package/dist/agent/transport/tool-safety-pipeline.d.ts +5 -1
  72. package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
  73. package/dist/agent/transport/tool-safety-pipeline.js +184 -36
  74. package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
  75. package/dist/agent/transport.d.ts +8 -0
  76. package/dist/agent/transport.d.ts.map +1 -1
  77. package/dist/agent/transport.js +1613 -68
  78. package/dist/agent/transport.js.map +1 -1
  79. package/dist/agent/types.d.ts +170 -2
  80. package/dist/agent/types.d.ts.map +1 -1
  81. package/dist/agent/types.js.map +1 -1
  82. package/dist/api/enterprise-routes.d.ts.map +1 -1
  83. package/dist/api/enterprise-routes.js +34 -3
  84. package/dist/api/enterprise-routes.js.map +1 -1
  85. package/dist/app-server/in-process-client.d.ts +32 -0
  86. package/dist/app-server/in-process-client.d.ts.map +1 -0
  87. package/dist/app-server/in-process-client.js +73 -0
  88. package/dist/app-server/in-process-client.js.map +1 -0
  89. package/dist/app-server/session-api.d.ts +36 -0
  90. package/dist/app-server/session-api.d.ts.map +1 -0
  91. package/dist/app-server/session-api.js +713 -0
  92. package/dist/app-server/session-api.js.map +1 -0
  93. package/dist/approvals/platform-action-approval.d.ts +3 -1
  94. package/dist/approvals/platform-action-approval.d.ts.map +1 -1
  95. package/dist/approvals/platform-action-approval.js +16 -9
  96. package/dist/approvals/platform-action-approval.js.map +1 -1
  97. package/dist/approvals/service-client.d.ts.map +1 -1
  98. package/dist/approvals/service-client.js +7 -7
  99. package/dist/approvals/service-client.js.map +1 -1
  100. package/dist/audit/logger.d.ts +4 -4
  101. package/dist/bootstrap/agent-creation-setup.d.ts +4 -0
  102. package/dist/bootstrap/agent-creation-setup.d.ts.map +1 -1
  103. package/dist/bootstrap/agent-creation-setup.js +3 -1
  104. package/dist/bootstrap/agent-creation-setup.js.map +1 -1
  105. package/dist/bootstrap/auth-setup.js +1 -1
  106. package/dist/bootstrap/auth-setup.js.map +1 -1
  107. package/dist/bootstrap/event-subscriptions-setup.d.ts +6 -0
  108. package/dist/bootstrap/event-subscriptions-setup.d.ts.map +1 -1
  109. package/dist/bootstrap/event-subscriptions-setup.js +26 -2
  110. package/dist/bootstrap/event-subscriptions-setup.js.map +1 -1
  111. package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
  112. package/dist/bootstrap/model-resolution-setup.js +4 -1
  113. package/dist/bootstrap/model-resolution-setup.js.map +1 -1
  114. package/dist/bootstrap/tools-setup.d.ts +2 -1
  115. package/dist/bootstrap/tools-setup.d.ts.map +1 -1
  116. package/dist/bootstrap/tools-setup.js +5 -1
  117. package/dist/bootstrap/tools-setup.js.map +1 -1
  118. package/dist/cli/args.d.ts +9 -1
  119. package/dist/cli/args.d.ts.map +1 -1
  120. package/dist/cli/args.js +130 -5
  121. package/dist/cli/args.js.map +1 -1
  122. package/dist/cli/commands/a2a.d.ts +9 -0
  123. package/dist/cli/commands/a2a.d.ts.map +1 -0
  124. package/dist/cli/commands/a2a.js +1714 -0
  125. package/dist/cli/commands/a2a.js.map +1 -0
  126. package/dist/cli/commands/agents.d.ts +16 -2
  127. package/dist/cli/commands/agents.d.ts.map +1 -1
  128. package/dist/cli/commands/agents.js +223 -35
  129. package/dist/cli/commands/agents.js.map +1 -1
  130. package/dist/cli/commands/codex.d.ts +1 -1
  131. package/dist/cli/commands/codex.d.ts.map +1 -1
  132. package/dist/cli/commands/codex.js +145 -39
  133. package/dist/cli/commands/codex.js.map +1 -1
  134. package/dist/cli/commands/context.d.ts +10 -0
  135. package/dist/cli/commands/context.d.ts.map +1 -0
  136. package/dist/cli/commands/context.js +176 -0
  137. package/dist/cli/commands/context.js.map +1 -0
  138. package/dist/cli/commands/hosted-runner.d.ts +1 -0
  139. package/dist/cli/commands/hosted-runner.d.ts.map +1 -1
  140. package/dist/cli/commands/hosted-runner.js +9 -1
  141. package/dist/cli/commands/hosted-runner.js.map +1 -1
  142. package/dist/cli/commands/init.d.ts.map +1 -1
  143. package/dist/cli/commands/init.js +6 -0
  144. package/dist/cli/commands/init.js.map +1 -1
  145. package/dist/cli/commands/modes.d.ts +8 -0
  146. package/dist/cli/commands/modes.d.ts.map +1 -0
  147. package/dist/cli/commands/modes.js +151 -0
  148. package/dist/cli/commands/modes.js.map +1 -0
  149. package/dist/cli/commands/operating-plane.d.ts +14 -0
  150. package/dist/cli/commands/operating-plane.d.ts.map +1 -0
  151. package/dist/cli/commands/operating-plane.js +160 -0
  152. package/dist/cli/commands/operating-plane.js.map +1 -0
  153. package/dist/cli/commands/run.d.ts +87 -0
  154. package/dist/cli/commands/run.d.ts.map +1 -0
  155. package/dist/cli/commands/run.js +356 -0
  156. package/dist/cli/commands/run.js.map +1 -0
  157. package/dist/cli/commands/scenario.d.ts +7 -0
  158. package/dist/cli/commands/scenario.d.ts.map +1 -0
  159. package/dist/cli/commands/scenario.js +195 -0
  160. package/dist/cli/commands/scenario.js.map +1 -0
  161. package/dist/cli/commands/skill.d.ts +7 -0
  162. package/dist/cli/commands/skill.d.ts.map +1 -0
  163. package/dist/cli/commands/skill.js +286 -0
  164. package/dist/cli/commands/skill.js.map +1 -0
  165. package/dist/cli/headless-protocol.d.ts +55 -1
  166. package/dist/cli/headless-protocol.d.ts.map +1 -1
  167. package/dist/cli/headless-protocol.js +446 -7
  168. package/dist/cli/headless-protocol.js.map +1 -1
  169. package/dist/cli/headless-runtime-selection.d.ts +38 -0
  170. package/dist/cli/headless-runtime-selection.d.ts.map +1 -0
  171. package/dist/cli/headless-runtime-selection.js +48 -0
  172. package/dist/cli/headless-runtime-selection.js.map +1 -0
  173. package/dist/cli/headless.d.ts +5 -1
  174. package/dist/cli/headless.d.ts.map +1 -1
  175. package/dist/cli/headless.js +11 -1
  176. package/dist/cli/headless.js.map +1 -1
  177. package/dist/cli/help.d.ts +3 -1
  178. package/dist/cli/help.d.ts.map +1 -1
  179. package/dist/cli/help.js +136 -30
  180. package/dist/cli/help.js.map +1 -1
  181. package/dist/cli/system-prompt.d.ts +22 -4
  182. package/dist/cli/system-prompt.d.ts.map +1 -1
  183. package/dist/cli/system-prompt.js +224 -127
  184. package/dist/cli/system-prompt.js.map +1 -1
  185. package/dist/cli-tui/commands/a2a-handlers.d.ts +7 -0
  186. package/dist/cli-tui/commands/a2a-handlers.d.ts.map +1 -0
  187. package/dist/cli-tui/commands/a2a-handlers.js +160 -0
  188. package/dist/cli-tui/commands/a2a-handlers.js.map +1 -0
  189. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  190. package/dist/cli-tui/commands/command-catalog.js +15 -0
  191. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  192. package/dist/cli-tui/commands/command-registry-adapter.js +10 -1
  193. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -1
  194. package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +1 -1
  195. package/dist/cli-tui/commands/handlers/mode-handler.js +22 -10
  196. package/dist/cli-tui/commands/handlers/mode-handler.js.map +1 -1
  197. package/dist/cli-tui/commands/mcp-handlers.d.ts.map +1 -1
  198. package/dist/cli-tui/commands/mcp-handlers.js +6 -5
  199. package/dist/cli-tui/commands/mcp-handlers.js.map +1 -1
  200. package/dist/cli-tui/commands/types.d.ts +1 -0
  201. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  202. package/dist/cli-tui/commands/types.js.map +1 -1
  203. package/dist/cli-tui/commands/utility-handlers.d.ts +4 -0
  204. package/dist/cli-tui/commands/utility-handlers.d.ts.map +1 -1
  205. package/dist/cli-tui/commands/utility-handlers.js +45 -6
  206. package/dist/cli-tui/commands/utility-handlers.js.map +1 -1
  207. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  208. package/dist/cli-tui/run/run-shell-command.js +14 -5
  209. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  210. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  211. package/dist/cli-tui/run/streaming-shell-command.js +14 -5
  212. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  213. package/dist/cli-tui/selectors/model-selector.d.ts +1 -0
  214. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  215. package/dist/cli-tui/selectors/model-selector.js +6 -2
  216. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  217. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  218. package/dist/cli-tui/tui-renderer/command-registry-options.js +5 -0
  219. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  220. package/dist/cli-tui/utils/commands/review-prompt.d.ts +1 -1
  221. package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +1 -1
  222. package/dist/cli-tui/utils/commands/review-prompt.js +8 -3
  223. package/dist/cli-tui/utils/commands/review-prompt.js.map +1 -1
  224. package/dist/cli-tui/utils/runtime-badges.d.ts +1 -0
  225. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  226. package/dist/cli-tui/utils/runtime-badges.js +7 -0
  227. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  228. package/dist/cli-tui/utils/text-formatting.d.ts +1 -0
  229. package/dist/cli-tui/utils/text-formatting.d.ts.map +1 -1
  230. package/dist/cli-tui/utils/text-formatting.js +5 -0
  231. package/dist/cli-tui/utils/text-formatting.js.map +1 -1
  232. package/dist/cli.js +49209 -26165
  233. package/dist/cli.js.map +1 -1
  234. package/dist/codex/app-server-client.d.ts +139 -0
  235. package/dist/codex/app-server-client.d.ts.map +1 -0
  236. package/dist/codex/app-server-client.js +352 -0
  237. package/dist/codex/app-server-client.js.map +1 -0
  238. package/dist/codex/compatibility.d.ts +48 -0
  239. package/dist/codex/compatibility.d.ts.map +1 -0
  240. package/dist/codex/compatibility.js +344 -0
  241. package/dist/codex/compatibility.js.map +1 -0
  242. package/dist/codex/subagent-dispatch-table.d.ts +66 -0
  243. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -0
  244. package/dist/codex/subagent-dispatch-table.js +127 -0
  245. package/dist/codex/subagent-dispatch-table.js.map +1 -0
  246. package/dist/codex/subagent-workgraph.d.ts +56 -0
  247. package/dist/codex/subagent-workgraph.d.ts.map +1 -0
  248. package/dist/codex/subagent-workgraph.js +89 -0
  249. package/dist/codex/subagent-workgraph.js.map +1 -0
  250. package/dist/config/constants.d.ts +3 -1
  251. package/dist/config/constants.d.ts.map +1 -1
  252. package/dist/config/constants.js +9 -0
  253. package/dist/config/constants.js.map +1 -1
  254. package/dist/config/feature-flags.d.ts +10 -1
  255. package/dist/config/feature-flags.d.ts.map +1 -1
  256. package/dist/config/feature-flags.js +17 -6
  257. package/dist/config/feature-flags.js.map +1 -1
  258. package/dist/config/index.d.ts +1 -1
  259. package/dist/config/index.d.ts.map +1 -1
  260. package/dist/config/index.js +1 -1
  261. package/dist/config/index.js.map +1 -1
  262. package/dist/config/toml-config.d.ts +32 -0
  263. package/dist/config/toml-config.d.ts.map +1 -1
  264. package/dist/config/toml-config.js +152 -43
  265. package/dist/config/toml-config.js.map +1 -1
  266. package/dist/connectors/service-client.d.ts.map +1 -1
  267. package/dist/connectors/service-client.js +4 -7
  268. package/dist/connectors/service-client.js.map +1 -1
  269. package/dist/context/manifest-types.d.ts +59 -0
  270. package/dist/context/manifest-types.d.ts.map +1 -0
  271. package/dist/context/manifest-types.js +2 -0
  272. package/dist/context/manifest-types.js.map +1 -0
  273. package/dist/context/manifest.d.ts +16 -0
  274. package/dist/context/manifest.d.ts.map +1 -0
  275. package/dist/context/manifest.js +503 -0
  276. package/dist/context/manifest.js.map +1 -0
  277. package/dist/db/schema.d.ts +10 -1
  278. package/dist/db/schema.d.ts.map +1 -1
  279. package/dist/db/schema.js.map +1 -1
  280. package/dist/evalops/agent-bootstrap.d.ts +1 -0
  281. package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
  282. package/dist/evalops/agent-bootstrap.js +41 -1
  283. package/dist/evalops/agent-bootstrap.js.map +1 -1
  284. package/dist/evalops/env-aliases.d.ts +13 -0
  285. package/dist/evalops/env-aliases.d.ts.map +1 -0
  286. package/dist/evalops/env-aliases.js +60 -0
  287. package/dist/evalops/env-aliases.js.map +1 -0
  288. package/dist/evalops/managed-context.d.ts.map +1 -1
  289. package/dist/evalops/managed-context.js +28 -62
  290. package/dist/evalops/managed-context.js.map +1 -1
  291. package/dist/guardian/config.d.ts.map +1 -1
  292. package/dist/guardian/config.js +1 -0
  293. package/dist/guardian/config.js.map +1 -1
  294. package/dist/guardian/runner.d.ts +2 -0
  295. package/dist/guardian/runner.d.ts.map +1 -1
  296. package/dist/guardian/runner.js +105 -2
  297. package/dist/guardian/runner.js.map +1 -1
  298. package/dist/guardian/types.d.ts +1 -0
  299. package/dist/guardian/types.d.ts.map +1 -1
  300. package/dist/guardian/types.js.map +1 -1
  301. package/dist/index.d.ts +6 -1
  302. package/dist/index.d.ts.map +1 -1
  303. package/dist/index.js +6 -1
  304. package/dist/index.js.map +1 -1
  305. package/dist/main.d.ts.map +1 -1
  306. package/dist/main.js +267 -55
  307. package/dist/main.js.map +1 -1
  308. package/dist/mcp/config.d.ts.map +1 -1
  309. package/dist/mcp/config.js +89 -7
  310. package/dist/mcp/config.js.map +1 -1
  311. package/dist/mcp/manager.d.ts +5 -1
  312. package/dist/mcp/manager.d.ts.map +1 -1
  313. package/dist/mcp/manager.js +159 -4
  314. package/dist/mcp/manager.js.map +1 -1
  315. package/dist/mcp/platform-plugin.d.ts.map +1 -1
  316. package/dist/mcp/platform-plugin.js +9 -26
  317. package/dist/mcp/platform-plugin.js.map +1 -1
  318. package/dist/mcp/schema.d.ts +15 -0
  319. package/dist/mcp/schema.d.ts.map +1 -1
  320. package/dist/mcp/schema.js +24 -0
  321. package/dist/mcp/schema.js.map +1 -1
  322. package/dist/mcp/tool-bridge.d.ts +39 -10
  323. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  324. package/dist/mcp/tool-bridge.js +101 -24
  325. package/dist/mcp/tool-bridge.js.map +1 -1
  326. package/dist/mcp/types.d.ts +27 -0
  327. package/dist/mcp/types.d.ts.map +1 -1
  328. package/dist/mcp/types.js.map +1 -1
  329. package/dist/mcp/workspace-trust.d.ts +10 -0
  330. package/dist/mcp/workspace-trust.d.ts.map +1 -0
  331. package/dist/mcp/workspace-trust.js +295 -0
  332. package/dist/mcp/workspace-trust.js.map +1 -0
  333. package/dist/memory/service-client.d.ts +1 -0
  334. package/dist/memory/service-client.d.ts.map +1 -1
  335. package/dist/memory/service-client.js +194 -9
  336. package/dist/memory/service-client.js.map +1 -1
  337. package/dist/models/builtin.d.ts.map +1 -1
  338. package/dist/models/builtin.js +66 -25
  339. package/dist/models/builtin.js.map +1 -1
  340. package/dist/models/config-loader.d.ts +10 -10
  341. package/dist/models/config-loader.d.ts.map +1 -1
  342. package/dist/models/config-loader.js +2 -0
  343. package/dist/models/config-loader.js.map +1 -1
  344. package/dist/models/registry.d.ts +1 -0
  345. package/dist/models/registry.d.ts.map +1 -1
  346. package/dist/models/registry.js +1 -0
  347. package/dist/models/registry.js.map +1 -1
  348. package/dist/oauth/device-identity.d.ts.map +1 -1
  349. package/dist/oauth/device-identity.js +1 -3
  350. package/dist/oauth/device-identity.js.map +1 -1
  351. package/dist/oauth/evalops.d.ts.map +1 -1
  352. package/dist/oauth/evalops.js +2 -5
  353. package/dist/oauth/evalops.js.map +1 -1
  354. package/dist/opentelemetry.d.ts.map +1 -1
  355. package/dist/opentelemetry.js +12 -12
  356. package/dist/opentelemetry.js.map +1 -1
  357. package/dist/package-version.d.ts +2 -0
  358. package/dist/package-version.d.ts.map +1 -0
  359. package/dist/package-version.js +11 -0
  360. package/dist/package-version.js.map +1 -0
  361. package/dist/packages/constants.d.ts +3 -0
  362. package/dist/packages/constants.d.ts.map +1 -0
  363. package/dist/packages/constants.js +3 -0
  364. package/dist/packages/constants.js.map +1 -0
  365. package/dist/packages/inspection.d.ts.map +1 -1
  366. package/dist/packages/inspection.js +2 -1
  367. package/dist/packages/inspection.js.map +1 -1
  368. package/dist/packages/search.d.ts.map +1 -1
  369. package/dist/packages/search.js +1 -1
  370. package/dist/packages/search.js.map +1 -1
  371. package/dist/platform/a2a-capability-market.d.ts +21 -0
  372. package/dist/platform/a2a-capability-market.d.ts.map +1 -0
  373. package/dist/platform/a2a-capability-market.js +176 -0
  374. package/dist/platform/a2a-capability-market.js.map +1 -0
  375. package/dist/platform/a2a-client.d.ts +217 -0
  376. package/dist/platform/a2a-client.d.ts.map +1 -0
  377. package/dist/platform/a2a-client.js +589 -0
  378. package/dist/platform/a2a-client.js.map +1 -0
  379. package/dist/platform/a2a-fleet.d.ts +41 -0
  380. package/dist/platform/a2a-fleet.d.ts.map +1 -0
  381. package/dist/platform/a2a-fleet.js +109 -0
  382. package/dist/platform/a2a-fleet.js.map +1 -0
  383. package/dist/platform/a2a-maestro-peer.d.ts +20 -0
  384. package/dist/platform/a2a-maestro-peer.d.ts.map +1 -0
  385. package/dist/platform/a2a-maestro-peer.js +176 -0
  386. package/dist/platform/a2a-maestro-peer.js.map +1 -0
  387. package/dist/platform/a2a-peer-pairing.d.ts +107 -0
  388. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -0
  389. package/dist/platform/a2a-peer-pairing.js +489 -0
  390. package/dist/platform/a2a-peer-pairing.js.map +1 -0
  391. package/dist/platform/a2a-peer-registry.d.ts +68 -0
  392. package/dist/platform/a2a-peer-registry.d.ts.map +1 -0
  393. package/dist/platform/a2a-peer-registry.js +320 -0
  394. package/dist/platform/a2a-peer-registry.js.map +1 -0
  395. package/dist/platform/a2a-task-ledger.d.ts +86 -0
  396. package/dist/platform/a2a-task-ledger.d.ts.map +1 -0
  397. package/dist/platform/a2a-task-ledger.js +546 -0
  398. package/dist/platform/a2a-task-ledger.js.map +1 -0
  399. package/dist/platform/a2a-work-graph.d.ts +43 -0
  400. package/dist/platform/a2a-work-graph.d.ts.map +1 -0
  401. package/dist/platform/a2a-work-graph.js +267 -0
  402. package/dist/platform/a2a-work-graph.js.map +1 -0
  403. package/dist/platform/agent-registry-client.d.ts +327 -0
  404. package/dist/platform/agent-registry-client.d.ts.map +1 -0
  405. package/dist/platform/agent-registry-client.js +803 -0
  406. package/dist/platform/agent-registry-client.js.map +1 -0
  407. package/dist/platform/agent-runtime-client.d.ts +135 -1
  408. package/dist/platform/agent-runtime-client.d.ts.map +1 -1
  409. package/dist/platform/agent-runtime-client.js +467 -10
  410. package/dist/platform/agent-runtime-client.js.map +1 -1
  411. package/dist/platform/cerebro-facts-client.d.ts.map +1 -1
  412. package/dist/platform/cerebro-facts-client.js +4 -7
  413. package/dist/platform/cerebro-facts-client.js.map +1 -1
  414. package/dist/platform/client.d.ts +2 -0
  415. package/dist/platform/client.d.ts.map +1 -1
  416. package/dist/platform/client.js +7 -14
  417. package/dist/platform/client.js.map +1 -1
  418. package/dist/platform/core-services.d.ts +68 -0
  419. package/dist/platform/core-services.d.ts.map +1 -1
  420. package/dist/platform/core-services.js +68 -0
  421. package/dist/platform/core-services.js.map +1 -1
  422. package/dist/platform/fermata-eval-client.d.ts +195 -0
  423. package/dist/platform/fermata-eval-client.d.ts.map +1 -0
  424. package/dist/platform/fermata-eval-client.js +146 -0
  425. package/dist/platform/fermata-eval-client.js.map +1 -0
  426. package/dist/platform/fermata-scenario-suite.d.ts +99 -0
  427. package/dist/platform/fermata-scenario-suite.d.ts.map +1 -0
  428. package/dist/platform/fermata-scenario-suite.js +459 -0
  429. package/dist/platform/fermata-scenario-suite.js.map +1 -0
  430. package/dist/platform/maestro-timeline-client.d.ts.map +1 -1
  431. package/dist/platform/maestro-timeline-client.js +5 -11
  432. package/dist/platform/maestro-timeline-client.js.map +1 -1
  433. package/dist/platform/operating-plane-client.d.ts +156 -0
  434. package/dist/platform/operating-plane-client.d.ts.map +1 -0
  435. package/dist/platform/operating-plane-client.js +131 -0
  436. package/dist/platform/operating-plane-client.js.map +1 -0
  437. package/dist/platform/operating-plane-summary.d.ts +47 -0
  438. package/dist/platform/operating-plane-summary.d.ts.map +1 -0
  439. package/dist/platform/operating-plane-summary.js +209 -0
  440. package/dist/platform/operating-plane-summary.js.map +1 -0
  441. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  442. package/dist/platform/tool-execution-client.js +4 -11
  443. package/dist/platform/tool-execution-client.js.map +1 -1
  444. package/dist/prompts/service-client.d.ts.map +1 -1
  445. package/dist/prompts/service-client.js +3 -5
  446. package/dist/prompts/service-client.js.map +1 -1
  447. package/dist/prompts/system-prompt.d.ts +3 -0
  448. package/dist/prompts/system-prompt.d.ts.map +1 -1
  449. package/dist/prompts/system-prompt.js +13 -3
  450. package/dist/prompts/system-prompt.js.map +1 -1
  451. package/dist/prompts/types.d.ts +2 -0
  452. package/dist/prompts/types.d.ts.map +1 -1
  453. package/dist/prompts/types.js.map +1 -1
  454. package/dist/providers/api-keys.d.ts +1 -1
  455. package/dist/providers/api-keys.d.ts.map +1 -1
  456. package/dist/providers/api-keys.js +2 -1
  457. package/dist/providers/api-keys.js.map +1 -1
  458. package/dist/providers/auth.d.ts.map +1 -1
  459. package/dist/providers/auth.js +48 -25
  460. package/dist/providers/auth.js.map +1 -1
  461. package/dist/remote-runner/attach-client.d.ts.map +1 -1
  462. package/dist/remote-runner/attach-client.js +1 -0
  463. package/dist/remote-runner/attach-client.js.map +1 -1
  464. package/dist/remote-runner/client.d.ts.map +1 -1
  465. package/dist/remote-runner/client.js +4 -7
  466. package/dist/remote-runner/client.js.map +1 -1
  467. package/dist/rpc/rpc-types.d.ts.map +1 -1
  468. package/dist/rpc/rpc-types.js +1 -0
  469. package/dist/rpc/rpc-types.js.map +1 -1
  470. package/dist/safety/action-firewall.d.ts.map +1 -1
  471. package/dist/safety/action-firewall.js +69 -6
  472. package/dist/safety/action-firewall.js.map +1 -1
  473. package/dist/safety/attack-patterns.d.ts.map +1 -1
  474. package/dist/safety/attack-patterns.js +31 -14
  475. package/dist/safety/attack-patterns.js.map +1 -1
  476. package/dist/safety/bash-parser.d.ts.map +1 -1
  477. package/dist/safety/bash-parser.js +4 -3
  478. package/dist/safety/bash-parser.js.map +1 -1
  479. package/dist/safety/execpolicy.d.ts +15 -3
  480. package/dist/safety/execpolicy.d.ts.map +1 -1
  481. package/dist/safety/execpolicy.js +248 -37
  482. package/dist/safety/execpolicy.js.map +1 -1
  483. package/dist/safety/governance-service-client.d.ts.map +1 -1
  484. package/dist/safety/governance-service-client.js +4 -7
  485. package/dist/safety/governance-service-client.js.map +1 -1
  486. package/dist/safety/guarded-files.d.ts +34 -0
  487. package/dist/safety/guarded-files.d.ts.map +1 -0
  488. package/dist/safety/guarded-files.js +372 -0
  489. package/dist/safety/guarded-files.js.map +1 -0
  490. package/dist/safety/loop-detector.d.ts.map +1 -1
  491. package/dist/safety/loop-detector.js +6 -1
  492. package/dist/safety/loop-detector.js.map +1 -1
  493. package/dist/safety/permission-profile.d.ts +47 -0
  494. package/dist/safety/permission-profile.d.ts.map +1 -0
  495. package/dist/safety/permission-profile.js +349 -0
  496. package/dist/safety/permission-profile.js.map +1 -0
  497. package/dist/safety/safety-middleware.d.ts +5 -1
  498. package/dist/safety/safety-middleware.d.ts.map +1 -1
  499. package/dist/safety/safety-middleware.js +3 -2
  500. package/dist/safety/safety-middleware.js.map +1 -1
  501. package/dist/safety/suspicious-patterns.d.ts.map +1 -1
  502. package/dist/safety/suspicious-patterns.js +12 -7
  503. package/dist/safety/suspicious-patterns.js.map +1 -1
  504. package/dist/safety/tool-categorization.js +1 -1
  505. package/dist/safety/tool-categorization.js.map +1 -1
  506. package/dist/safety/validators/path-policy-validator.d.ts.map +1 -1
  507. package/dist/safety/validators/path-policy-validator.js +7 -0
  508. package/dist/safety/validators/path-policy-validator.js.map +1 -1
  509. package/dist/sandbox/index.d.ts +6 -1
  510. package/dist/sandbox/index.d.ts.map +1 -1
  511. package/dist/sandbox/index.js +30 -4
  512. package/dist/sandbox/index.js.map +1 -1
  513. package/dist/sandbox/native-sandbox.d.ts +3 -0
  514. package/dist/sandbox/native-sandbox.d.ts.map +1 -1
  515. package/dist/sandbox/native-sandbox.js +139 -18
  516. package/dist/sandbox/native-sandbox.js.map +1 -1
  517. package/dist/sentry.d.ts +17 -0
  518. package/dist/sentry.d.ts.map +1 -0
  519. package/dist/sentry.js +91 -0
  520. package/dist/sentry.js.map +1 -0
  521. package/dist/server/agent-runtime-ledger.d.ts +141 -0
  522. package/dist/server/agent-runtime-ledger.d.ts.map +1 -0
  523. package/dist/server/agent-runtime-ledger.js +334 -0
  524. package/dist/server/agent-runtime-ledger.js.map +1 -0
  525. package/dist/server/agent-trajectory-inspection.d.ts +104 -0
  526. package/dist/server/agent-trajectory-inspection.d.ts.map +1 -0
  527. package/dist/server/agent-trajectory-inspection.js +168 -0
  528. package/dist/server/agent-trajectory-inspection.js.map +1 -0
  529. package/dist/server/agent-trajectory-replay.d.ts +56 -0
  530. package/dist/server/agent-trajectory-replay.d.ts.map +1 -0
  531. package/dist/server/agent-trajectory-replay.js +214 -0
  532. package/dist/server/agent-trajectory-replay.js.map +1 -0
  533. package/dist/server/agent-trajectory-scenarios.d.ts +109 -0
  534. package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -0
  535. package/dist/server/agent-trajectory-scenarios.js +822 -0
  536. package/dist/server/agent-trajectory-scenarios.js.map +1 -0
  537. package/dist/server/agent-trajectory-scorers.d.ts +61 -0
  538. package/dist/server/agent-trajectory-scorers.d.ts.map +1 -0
  539. package/dist/server/agent-trajectory-scorers.js +162 -0
  540. package/dist/server/agent-trajectory-scorers.js.map +1 -0
  541. package/dist/server/agent-trajectory-validation.d.ts +7 -0
  542. package/dist/server/agent-trajectory-validation.d.ts.map +1 -0
  543. package/dist/server/agent-trajectory-validation.js +101 -0
  544. package/dist/server/agent-trajectory-validation.js.map +1 -0
  545. package/dist/server/agent-trajectory.d.ts +50 -0
  546. package/dist/server/agent-trajectory.d.ts.map +1 -0
  547. package/dist/server/agent-trajectory.js +159 -0
  548. package/dist/server/agent-trajectory.js.map +1 -0
  549. package/dist/server/app-context.d.ts +18 -0
  550. package/dist/server/app-context.d.ts.map +1 -1
  551. package/dist/server/app-context.js.map +1 -1
  552. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  553. package/dist/server/handlers/headless-sessions.js +64 -27
  554. package/dist/server/handlers/headless-sessions.js.map +1 -1
  555. package/dist/server/handlers/health.d.ts +6 -0
  556. package/dist/server/handlers/health.d.ts.map +1 -1
  557. package/dist/server/handlers/health.js +6 -0
  558. package/dist/server/handlers/health.js.map +1 -1
  559. package/dist/server/handlers/hosted-runner-drain.d.ts +69 -1
  560. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  561. package/dist/server/handlers/hosted-runner-drain.js +309 -18
  562. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  563. package/dist/server/handlers/hosted-runner-identity.d.ts +16 -0
  564. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
  565. package/dist/server/handlers/hosted-runner-identity.js +43 -0
  566. package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
  567. package/dist/server/handlers/mode.d.ts.map +1 -1
  568. package/dist/server/handlers/mode.js +3 -1
  569. package/dist/server/handlers/mode.js.map +1 -1
  570. package/dist/server/handlers/pending-requests.d.ts.map +1 -1
  571. package/dist/server/handlers/pending-requests.js +336 -51
  572. package/dist/server/handlers/pending-requests.js.map +1 -1
  573. package/dist/server/handlers/platform-a2a-push.d.ts +6 -0
  574. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -0
  575. package/dist/server/handlers/platform-a2a-push.js +136 -0
  576. package/dist/server/handlers/platform-a2a-push.js.map +1 -0
  577. package/dist/server/handlers/sessions.d.ts.map +1 -1
  578. package/dist/server/handlers/sessions.js +21 -1
  579. package/dist/server/handlers/sessions.js.map +1 -1
  580. package/dist/server/headless-runtime-service.d.ts +9 -2
  581. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  582. package/dist/server/headless-runtime-service.js +39 -0
  583. package/dist/server/headless-runtime-service.js.map +1 -1
  584. package/dist/server/hosted-agent-runtime-progress.d.ts +144 -0
  585. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -0
  586. package/dist/server/hosted-agent-runtime-progress.js +1650 -0
  587. package/dist/server/hosted-agent-runtime-progress.js.map +1 -0
  588. package/dist/server/hosted-runner-lease.d.ts +41 -0
  589. package/dist/server/hosted-runner-lease.d.ts.map +1 -0
  590. package/dist/server/hosted-runner-lease.js +140 -0
  591. package/dist/server/hosted-runner-lease.js.map +1 -0
  592. package/dist/server/hosted-session-manager.d.ts +16 -8
  593. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  594. package/dist/server/hosted-session-manager.js +98 -76
  595. package/dist/server/hosted-session-manager.js.map +1 -1
  596. package/dist/server/junit-xml.d.ts +2 -0
  597. package/dist/server/junit-xml.d.ts.map +1 -0
  598. package/dist/server/junit-xml.js +9 -0
  599. package/dist/server/junit-xml.js.map +1 -0
  600. package/dist/server/routes.d.ts.map +1 -1
  601. package/dist/server/routes.js +6 -0
  602. package/dist/server/routes.js.map +1 -1
  603. package/dist/server/scenario-recorder.d.ts +56 -0
  604. package/dist/server/scenario-recorder.d.ts.map +1 -0
  605. package/dist/server/scenario-recorder.js +109 -0
  606. package/dist/server/scenario-recorder.js.map +1 -0
  607. package/dist/server/scripted-scenario-runner.d.ts +46 -0
  608. package/dist/server/scripted-scenario-runner.d.ts.map +1 -0
  609. package/dist/server/scripted-scenario-runner.js +190 -0
  610. package/dist/server/scripted-scenario-runner.js.map +1 -0
  611. package/dist/server/server-middlewares.d.ts +6 -2
  612. package/dist/server/server-middlewares.d.ts.map +1 -1
  613. package/dist/server/server-middlewares.js +8 -2
  614. package/dist/server/server-middlewares.js.map +1 -1
  615. package/dist/server/server-request-manager.d.ts +9 -1
  616. package/dist/server/server-request-manager.d.ts.map +1 -1
  617. package/dist/server/server-request-manager.js +49 -4
  618. package/dist/server/server-request-manager.js.map +1 -1
  619. package/dist/services/intelligent-router/service.d.ts +2 -0
  620. package/dist/services/intelligent-router/service.d.ts.map +1 -1
  621. package/dist/services/intelligent-router/service.js +4 -0
  622. package/dist/services/intelligent-router/service.js.map +1 -1
  623. package/dist/services/service-authority.d.ts +25 -0
  624. package/dist/services/service-authority.d.ts.map +1 -0
  625. package/dist/services/service-authority.js +143 -0
  626. package/dist/services/service-authority.js.map +1 -0
  627. package/dist/services/workspace-config/service.d.ts +2 -0
  628. package/dist/services/workspace-config/service.d.ts.map +1 -1
  629. package/dist/services/workspace-config/service.js +4 -0
  630. package/dist/services/workspace-config/service.js.map +1 -1
  631. package/dist/session/manager.d.ts +8 -2
  632. package/dist/session/manager.d.ts.map +1 -1
  633. package/dist/session/manager.js +19 -4
  634. package/dist/session/manager.js.map +1 -1
  635. package/dist/session/session-branch.d.ts.map +1 -1
  636. package/dist/session/session-branch.js +5 -1
  637. package/dist/session/session-branch.js.map +1 -1
  638. package/dist/session/session-catalog.d.ts +7 -2
  639. package/dist/session/session-catalog.d.ts.map +1 -1
  640. package/dist/session/session-catalog.js +13 -2
  641. package/dist/session/session-catalog.js.map +1 -1
  642. package/dist/session/session-context.d.ts +6 -2
  643. package/dist/session/session-context.d.ts.map +1 -1
  644. package/dist/session/session-context.js +44 -4
  645. package/dist/session/session-context.js.map +1 -1
  646. package/dist/session/session-graph-projection.d.ts +32 -0
  647. package/dist/session/session-graph-projection.d.ts.map +1 -0
  648. package/dist/session/session-graph-projection.js +133 -0
  649. package/dist/session/session-graph-projection.js.map +1 -0
  650. package/dist/session/types.d.ts +18 -0
  651. package/dist/session/types.d.ts.map +1 -1
  652. package/dist/session/types.js +8 -0
  653. package/dist/session/types.js.map +1 -1
  654. package/dist/session/wire-format.generated.d.ts +3 -0
  655. package/dist/session/wire-format.generated.d.ts.map +1 -1
  656. package/dist/session/wire-format.generated.js +20 -0
  657. package/dist/session/wire-format.generated.js.map +1 -1
  658. package/dist/skills/eval-harness.d.ts +38 -0
  659. package/dist/skills/eval-harness.d.ts.map +1 -0
  660. package/dist/skills/eval-harness.js +112 -0
  661. package/dist/skills/eval-harness.js.map +1 -0
  662. package/dist/skills/index.d.ts +5 -1
  663. package/dist/skills/index.d.ts.map +1 -1
  664. package/dist/skills/index.js +5 -1
  665. package/dist/skills/index.js.map +1 -1
  666. package/dist/skills/linter.d.ts +36 -0
  667. package/dist/skills/linter.d.ts.map +1 -0
  668. package/dist/skills/linter.js +398 -0
  669. package/dist/skills/linter.js.map +1 -0
  670. package/dist/skills/loader.d.ts +36 -6
  671. package/dist/skills/loader.d.ts.map +1 -1
  672. package/dist/skills/loader.js +169 -86
  673. package/dist/skills/loader.js.map +1 -1
  674. package/dist/skills/package-contract.d.ts +45 -0
  675. package/dist/skills/package-contract.d.ts.map +1 -0
  676. package/dist/skills/package-contract.js +153 -0
  677. package/dist/skills/package-contract.js.map +1 -0
  678. package/dist/skills/runtime-activation.d.ts +68 -0
  679. package/dist/skills/runtime-activation.d.ts.map +1 -0
  680. package/dist/skills/runtime-activation.js +228 -0
  681. package/dist/skills/runtime-activation.js.map +1 -0
  682. package/dist/skills/service-client.d.ts.map +1 -1
  683. package/dist/skills/service-client.js +3 -4
  684. package/dist/skills/service-client.js.map +1 -1
  685. package/dist/skills/tool.d.ts.map +1 -1
  686. package/dist/skills/tool.js +2 -0
  687. package/dist/skills/tool.js.map +1 -1
  688. package/dist/skills/types.d.ts +14 -0
  689. package/dist/skills/types.d.ts.map +1 -1
  690. package/dist/skills/types.js.map +1 -1
  691. package/dist/telemetry/agent-operating-plane-context.d.ts +24 -0
  692. package/dist/telemetry/agent-operating-plane-context.d.ts.map +1 -0
  693. package/dist/telemetry/agent-operating-plane-context.js +54 -0
  694. package/dist/telemetry/agent-operating-plane-context.js.map +1 -0
  695. package/dist/telemetry/beacon.d.ts +24 -0
  696. package/dist/telemetry/beacon.d.ts.map +1 -0
  697. package/dist/telemetry/beacon.js +115 -0
  698. package/dist/telemetry/beacon.js.map +1 -0
  699. package/dist/telemetry/cli-command-aggregator.d.ts +36 -0
  700. package/dist/telemetry/cli-command-aggregator.d.ts.map +1 -0
  701. package/dist/telemetry/cli-command-aggregator.js +251 -0
  702. package/dist/telemetry/cli-command-aggregator.js.map +1 -0
  703. package/dist/telemetry/cli-startup.d.ts +21 -0
  704. package/dist/telemetry/cli-startup.d.ts.map +1 -0
  705. package/dist/telemetry/cli-startup.js +83 -0
  706. package/dist/telemetry/cli-startup.js.map +1 -0
  707. package/dist/telemetry/disablement.d.ts +13 -0
  708. package/dist/telemetry/disablement.d.ts.map +1 -0
  709. package/dist/telemetry/disablement.js +19 -0
  710. package/dist/telemetry/disablement.js.map +1 -0
  711. package/dist/telemetry/index.d.ts +6 -2
  712. package/dist/telemetry/index.d.ts.map +1 -1
  713. package/dist/telemetry/index.js +6 -2
  714. package/dist/telemetry/index.js.map +1 -1
  715. package/dist/telemetry/maestro-event-bus.d.ts +52 -0
  716. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  717. package/dist/telemetry/maestro-event-bus.js +179 -3
  718. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  719. package/dist/telemetry/maestro-event-catalog.d.ts +3 -1
  720. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
  721. package/dist/telemetry/maestro-event-catalog.js +2 -0
  722. package/dist/telemetry/maestro-event-catalog.js.map +1 -1
  723. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  724. package/dist/telemetry/maestro-platform-replay-fixture.js +74 -9
  725. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  726. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +1 -1
  727. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -1
  728. package/dist/telemetry/maestro-publisher-conformance-fixture.js +46 -11
  729. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
  730. package/dist/telemetry/mcp-beacon.d.ts +20 -0
  731. package/dist/telemetry/mcp-beacon.d.ts.map +1 -0
  732. package/dist/telemetry/mcp-beacon.js +54 -0
  733. package/dist/telemetry/mcp-beacon.js.map +1 -0
  734. package/dist/telemetry/metadata-normalization.d.ts +7 -0
  735. package/dist/telemetry/metadata-normalization.d.ts.map +1 -0
  736. package/dist/telemetry/metadata-normalization.js +189 -0
  737. package/dist/telemetry/metadata-normalization.js.map +1 -0
  738. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  739. package/dist/telemetry/meter-service-client.js +5 -10
  740. package/dist/telemetry/meter-service-client.js.map +1 -1
  741. package/dist/telemetry/metrics.d.ts +123 -0
  742. package/dist/telemetry/metrics.d.ts.map +1 -0
  743. package/dist/telemetry/metrics.js +184 -0
  744. package/dist/telemetry/metrics.js.map +1 -0
  745. package/dist/telemetry/turn-tracker.d.ts +1 -0
  746. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  747. package/dist/telemetry/turn-tracker.js +22 -1
  748. package/dist/telemetry/turn-tracker.js.map +1 -1
  749. package/dist/telemetry/wide-events.d.ts +31 -1
  750. package/dist/telemetry/wide-events.d.ts.map +1 -1
  751. package/dist/telemetry/wide-events.js +229 -1
  752. package/dist/telemetry/wide-events.js.map +1 -1
  753. package/dist/telemetry.d.ts +39 -3
  754. package/dist/telemetry.d.ts.map +1 -1
  755. package/dist/telemetry.js +160 -3
  756. package/dist/telemetry.js.map +1 -1
  757. package/dist/testing/test-verification-hook.d.ts.map +1 -1
  758. package/dist/testing/test-verification-hook.js +34 -21
  759. package/dist/testing/test-verification-hook.js.map +1 -1
  760. package/dist/tools/apply-patch-parser.d.ts +26 -0
  761. package/dist/tools/apply-patch-parser.d.ts.map +1 -0
  762. package/dist/tools/apply-patch-parser.js +146 -0
  763. package/dist/tools/apply-patch-parser.js.map +1 -0
  764. package/dist/tools/apply-patch.d.ts +42 -0
  765. package/dist/tools/apply-patch.d.ts.map +1 -0
  766. package/dist/tools/apply-patch.js +648 -0
  767. package/dist/tools/apply-patch.js.map +1 -0
  768. package/dist/tools/ask-user.d.ts +1 -0
  769. package/dist/tools/ask-user.d.ts.map +1 -1
  770. package/dist/tools/background/tool-handler.d.ts +1 -0
  771. package/dist/tools/background/tool-handler.d.ts.map +1 -1
  772. package/dist/tools/bash.d.ts +1 -0
  773. package/dist/tools/bash.d.ts.map +1 -1
  774. package/dist/tools/codesearch.d.ts +1 -0
  775. package/dist/tools/codesearch.d.ts.map +1 -1
  776. package/dist/tools/conductor-client.d.ts +1 -0
  777. package/dist/tools/conductor-client.d.ts.map +1 -1
  778. package/dist/tools/conductor-client.js +63 -0
  779. package/dist/tools/conductor-client.js.map +1 -1
  780. package/dist/tools/diff.d.ts +1 -0
  781. package/dist/tools/diff.d.ts.map +1 -1
  782. package/dist/tools/edit.d.ts +1 -0
  783. package/dist/tools/edit.d.ts.map +1 -1
  784. package/dist/tools/extract-document.d.ts +1 -0
  785. package/dist/tools/extract-document.d.ts.map +1 -1
  786. package/dist/tools/find.d.ts +10 -0
  787. package/dist/tools/find.d.ts.map +1 -1
  788. package/dist/tools/find.js +236 -27
  789. package/dist/tools/find.js.map +1 -1
  790. package/dist/tools/gh.d.ts +3 -0
  791. package/dist/tools/gh.d.ts.map +1 -1
  792. package/dist/tools/index.d.ts +50 -0
  793. package/dist/tools/index.d.ts.map +1 -1
  794. package/dist/tools/index.js +4 -0
  795. package/dist/tools/index.js.map +1 -1
  796. package/dist/tools/list.d.ts +1 -0
  797. package/dist/tools/list.d.ts.map +1 -1
  798. package/dist/tools/notebook.d.ts +1 -0
  799. package/dist/tools/notebook.d.ts.map +1 -1
  800. package/dist/tools/oracle.d.ts +1 -0
  801. package/dist/tools/oracle.d.ts.map +1 -1
  802. package/dist/tools/oracle.js +17 -32
  803. package/dist/tools/oracle.js.map +1 -1
  804. package/dist/tools/parallel-execution.d.ts +13 -2
  805. package/dist/tools/parallel-execution.d.ts.map +1 -1
  806. package/dist/tools/parallel-execution.js +178 -7
  807. package/dist/tools/parallel-execution.js.map +1 -1
  808. package/dist/tools/parallel-ripgrep.d.ts +1 -0
  809. package/dist/tools/parallel-ripgrep.d.ts.map +1 -1
  810. package/dist/tools/pipeline.d.ts +4 -0
  811. package/dist/tools/pipeline.d.ts.map +1 -1
  812. package/dist/tools/read.d.ts +1 -0
  813. package/dist/tools/read.d.ts.map +1 -1
  814. package/dist/tools/search.d.ts +1 -0
  815. package/dist/tools/search.d.ts.map +1 -1
  816. package/dist/tools/status.d.ts +1 -0
  817. package/dist/tools/status.d.ts.map +1 -1
  818. package/dist/tools/todo.d.ts +1 -0
  819. package/dist/tools/todo.d.ts.map +1 -1
  820. package/dist/tools/tool-dsl.d.ts +5 -1
  821. package/dist/tools/tool-dsl.d.ts.map +1 -1
  822. package/dist/tools/tool-dsl.js +1 -0
  823. package/dist/tools/tool-dsl.js.map +1 -1
  824. package/dist/tools/tool-result-cache.d.ts.map +1 -1
  825. package/dist/tools/tool-result-cache.js +1 -0
  826. package/dist/tools/tool-result-cache.js.map +1 -1
  827. package/dist/tools/typebox-tool.d.ts.map +1 -1
  828. package/dist/tools/typebox-tool.js +3 -0
  829. package/dist/tools/typebox-tool.js.map +1 -1
  830. package/dist/tools/webfetch.d.ts +1 -0
  831. package/dist/tools/webfetch.d.ts.map +1 -1
  832. package/dist/tools/websearch.d.ts +1 -0
  833. package/dist/tools/websearch.d.ts.map +1 -1
  834. package/dist/tools/write.d.ts +1 -0
  835. package/dist/tools/write.d.ts.map +1 -1
  836. package/dist/utils/abort-error.d.ts +2 -0
  837. package/dist/utils/abort-error.d.ts.map +1 -0
  838. package/dist/utils/abort-error.js +7 -0
  839. package/dist/utils/abort-error.js.map +1 -0
  840. package/dist/utils/downstream.d.ts.map +1 -1
  841. package/dist/utils/downstream.js +4 -0
  842. package/dist/utils/downstream.js.map +1 -1
  843. package/dist/utils/logger.d.ts +3 -0
  844. package/dist/utils/logger.d.ts.map +1 -1
  845. package/dist/utils/logger.js +14 -3
  846. package/dist/utils/logger.js.map +1 -1
  847. package/dist/utils/path-containment.d.ts +2 -0
  848. package/dist/utils/path-containment.d.ts.map +1 -0
  849. package/dist/utils/path-containment.js +14 -0
  850. package/dist/utils/path-containment.js.map +1 -0
  851. package/dist/utils/prompt-safe-text.d.ts +7 -0
  852. package/dist/utils/prompt-safe-text.d.ts.map +1 -0
  853. package/dist/utils/prompt-safe-text.js +44 -0
  854. package/dist/utils/prompt-safe-text.js.map +1 -0
  855. package/dist/version.json +2 -2
  856. package/dist/web-server.d.ts.map +1 -1
  857. package/dist/web-server.js +32 -7
  858. package/dist/web-server.js.map +1 -1
  859. package/dist/workspace/root-resolver.d.ts +4 -1
  860. package/dist/workspace/root-resolver.d.ts.map +1 -1
  861. package/dist/workspace/root-resolver.js +16 -6
  862. package/dist/workspace/root-resolver.js.map +1 -1
  863. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts +8 -0
  864. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts.map +1 -0
  865. package/node_modules/@evalops/contracts/dist/advisor-effort.js +35 -0
  866. package/node_modules/@evalops/contracts/dist/advisor-effort.js.map +1 -0
  867. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts +10 -0
  868. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts.map +1 -0
  869. package/node_modules/@evalops/contracts/dist/delegation-prompt.js +48 -0
  870. package/node_modules/@evalops/contracts/dist/delegation-prompt.js.map +1 -0
  871. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts +20 -0
  872. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts.map +1 -0
  873. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js +147 -0
  874. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js.map +1 -0
  875. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts +2 -0
  876. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts.map +1 -1
  877. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js +1 -0
  878. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js.map +1 -1
  879. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +280 -5
  880. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  881. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +36 -1
  882. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  883. package/node_modules/@evalops/contracts/dist/index.d.ts +15 -1
  884. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  885. package/node_modules/@evalops/contracts/dist/index.js +6 -0
  886. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  887. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +593 -0
  888. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -0
  889. package/node_modules/@evalops/contracts/dist/maestro-app-server.js +218 -0
  890. package/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -0
  891. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +91 -0
  892. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  893. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +92 -61
  894. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  895. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +3 -0
  896. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -1
  897. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts +28 -0
  898. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts.map +1 -0
  899. package/node_modules/@evalops/contracts/dist/runtime-constraints.js +71 -0
  900. package/node_modules/@evalops/contracts/dist/runtime-constraints.js.map +1 -0
  901. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +7 -0
  902. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -1
  903. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +2 -0
  904. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -1
  905. package/node_modules/@evalops/contracts/dist/scenario.d.ts +191 -0
  906. package/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -0
  907. package/node_modules/@evalops/contracts/dist/scenario.js +4 -0
  908. package/node_modules/@evalops/contracts/dist/scenario.js.map +1 -0
  909. package/node_modules/@evalops/contracts/dist/schemas.d.ts +17 -3
  910. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  911. package/node_modules/@evalops/contracts/dist/schemas.js +16 -0
  912. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  913. package/node_modules/@evalops/contracts/package.json +1 -1
  914. package/node_modules/@evalops/tui/package.json +1 -1
  915. package/package.json +41 -7
  916. package/skills/incident-triage/SKILL.md +40 -0
  917. package/skills/incident-triage/mcp.json +14 -0
  918. package/skills/incident-triage/reference/triage.md +20 -0
  919. package/skills/incident-triage/toolbox/incident-timeline +22 -0
  920. package/skills/incident-triage/toolbox/incident-timeline.cmd +16 -0
  921. package/skills/pr-review/SKILL.md +40 -0
  922. package/skills/pr-review/mcp.json +14 -0
  923. package/skills/pr-review/reference/rubric.md +20 -0
  924. package/skills/pr-review/toolbox/review-summary +20 -0
  925. package/skills/pr-review/toolbox/review-summary.cmd +14 -0
  926. package/skills/release-verification/SKILL.md +40 -0
  927. package/skills/release-verification/mcp.json +15 -0
  928. package/skills/release-verification/reference/checklist.md +21 -0
  929. package/skills/release-verification/toolbox/release-readiness +18 -0
  930. package/skills/release-verification/toolbox/release-readiness.cmd +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/agent/swarm/executor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Swarm Executor\n *\n * Manages parallel execution of multiple agent instances (teammates)\n * working on tasks from a plan. Uses subprocess spawning similar to\n * the Oracle tool pattern.\n */\n\nimport { type ChildProcess, spawn } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { existsSync, mkdirSync, unlinkSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\nimport {\n\tbuildEvalOpsDelegationEnvironment,\n\tissueEvalOpsDelegationToken,\n} from \"../../oauth/index.js\";\nimport { createLogger } from \"../../utils/logger.js\";\nimport type {\n\tSwarmConfig,\n\tSwarmEvent,\n\tSwarmEventHandler,\n\tSwarmState,\n\tSwarmStatus,\n\tSwarmTask,\n\tSwarmTeammate,\n\tTeammateStatus,\n} from \"./types.js\";\n\nconst logger = createLogger(\"agent:swarm:executor\");\n\n/** Default timeout per task (5 minutes) */\nconst DEFAULT_TASK_TIMEOUT_MS = 5 * 60 * 1000;\n\n/** Maximum concurrent teammates */\nconst MAX_TEAMMATES = 10;\n\n/** Teammate name prefixes for friendly identification */\nconst TEAMMATE_NAMES = [\n\t\"Alpha\",\n\t\"Beta\",\n\t\"Gamma\",\n\t\"Delta\",\n\t\"Epsilon\",\n\t\"Zeta\",\n\t\"Eta\",\n\t\"Theta\",\n\t\"Iota\",\n\t\"Kappa\",\n];\n\nfunction toSafeTaskTempBasename(taskId: string): string {\n\tconst safeId = taskId\n\t\t.replace(/[^A-Za-z0-9_-]+/g, \"_\")\n\t\t.replace(/^_+|_+$/g, \"\");\n\treturn `swarm-task-${safeId || \"task\"}.md`;\n}\n\nfunction cloneTask(task: SwarmTask): SwarmTask {\n\treturn {\n\t\t...task,\n\t\tfiles: task.files ? [...task.files] : undefined,\n\t\tdependsOn: task.dependsOn ? [...task.dependsOn] : undefined,\n\t};\n}\n\nfunction cloneTeammate(teammate: SwarmTeammate): SwarmTeammate {\n\treturn {\n\t\t...teammate,\n\t\tcurrentTask: teammate.currentTask\n\t\t\t? cloneTask(teammate.currentTask)\n\t\t\t: undefined,\n\t\tcompletedTasks: [...teammate.completedTasks],\n\t};\n}\n\nfunction cloneConfig(config: SwarmConfig): SwarmConfig {\n\treturn {\n\t\t...config,\n\t\ttasks: config.tasks.map(cloneTask),\n\t};\n}\n\nfunction cloneState(state: SwarmState): SwarmState {\n\treturn {\n\t\t...state,\n\t\tconfig: cloneConfig(state.config),\n\t\tteammates: state.teammates.map(cloneTeammate),\n\t\tpendingTasks: state.pendingTasks.map(cloneTask),\n\t\tactiveTasks: new Map(state.activeTasks),\n\t\tcompletedTasks: new Set(state.completedTasks),\n\t\tfailedTasks: new Set(state.failedTasks),\n\t};\n}\n\n/**\n * SwarmExecutor manages a swarm of parallel agent instances.\n */\nexport class SwarmExecutor {\n\tprivate state: SwarmState;\n\tprivate processes: Map<string, ChildProcess> = new Map();\n\tprivate eventHandlers: Set<SwarmEventHandler> = new Set();\n\tprivate abortController: AbortController;\n\n\tconstructor(config: SwarmConfig) {\n\t\t// Validate config\n\t\tif (config.teammateCount < 1 || config.teammateCount > MAX_TEAMMATES) {\n\t\t\tthrow new Error(\n\t\t\t\t`Teammate count must be between 1 and ${MAX_TEAMMATES}, got ${config.teammateCount}`,\n\t\t\t);\n\t\t}\n\n\t\tthis.abortController = new AbortController();\n\n\t\t// Initialize state\n\t\tthis.state = {\n\t\t\tid: randomUUID(),\n\t\t\tstatus: \"initializing\",\n\t\t\tconfig,\n\t\t\tteammates: [],\n\t\t\tpendingTasks: [...config.tasks],\n\t\t\tactiveTasks: new Map(),\n\t\t\tcompletedTasks: new Set(),\n\t\t\tfailedTasks: new Set(),\n\t\t\tstartedAt: Date.now(),\n\t\t};\n\n\t\t// Create teammates\n\t\tfor (let i = 0; i < config.teammateCount; i++) {\n\t\t\tthis.state.teammates.push({\n\t\t\t\tid: randomUUID(),\n\t\t\t\tname: TEAMMATE_NAMES[i] || `Teammate-${i + 1}`,\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tcompletedTasks: [],\n\t\t\t});\n\t\t}\n\n\t\tlogger.info(\"Swarm initialized\", {\n\t\t\tswarmId: this.state.id,\n\t\t\tteammateCount: config.teammateCount,\n\t\t\ttaskCount: config.tasks.length,\n\t\t});\n\t}\n\n\t/**\n\t * Subscribe to swarm events.\n\t */\n\tonEvent(handler: SwarmEventHandler): () => void {\n\t\tthis.eventHandlers.add(handler);\n\t\treturn () => this.eventHandlers.delete(handler);\n\t}\n\n\t/**\n\t * Emit an event to all handlers.\n\t */\n\tprivate emit(event: SwarmEvent): void {\n\t\tfor (const handler of this.eventHandlers) {\n\t\t\ttry {\n\t\t\t\thandler(event);\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(\n\t\t\t\t\t\"Event handler error\",\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get the current swarm state.\n\t */\n\tgetState(): SwarmState {\n\t\treturn cloneState(this.state);\n\t}\n\n\t/**\n\t * Cancel the swarm execution.\n\t */\n\tcancel(): void {\n\t\tthis.abortController.abort();\n\t\tthis.state.status = \"cancelled\";\n\n\t\t// Kill all running processes\n\t\tfor (const [teammateId, proc] of this.processes) {\n\t\t\ttry {\n\t\t\t\tproc.kill(\"SIGTERM\");\n\t\t\t} catch {\n\t\t\t\t// Process may already be dead\n\t\t\t}\n\t\t\tconst teammate = this.state.teammates.find((t) => t.id === teammateId);\n\t\t\tif (teammate) {\n\t\t\t\tteammate.status = \"cancelled\";\n\t\t\t\tteammate.currentTask = undefined;\n\t\t\t}\n\t\t}\n\n\t\tfor (const teammate of this.state.teammates) {\n\t\t\tif (teammate.status === \"running\" || teammate.currentTask) {\n\t\t\t\tteammate.status = \"cancelled\";\n\t\t\t\tteammate.currentTask = undefined;\n\t\t\t\tteammate.completedAt = Date.now();\n\t\t\t}\n\t\t}\n\n\t\tthis.state.activeTasks.clear();\n\t\tthis.processes.clear();\n\t\tlogger.info(\"Swarm cancelled\", { swarmId: this.state.id });\n\t}\n\n\t/**\n\t * Execute the swarm - runs all tasks with available teammates.\n\t */\n\tasync execute(): Promise<SwarmState> {\n\t\tthis.state.status = \"running\";\n\t\tthis.emit({\n\t\t\ttype: \"swarm_start\",\n\t\t\tswarmId: this.state.id,\n\t\t\tconfig: this.state.config,\n\t\t});\n\n\t\ttry {\n\t\t\t// Sort tasks by priority (higher first) and dependencies\n\t\t\tthis.state.pendingTasks.sort(\n\t\t\t\t(a, b) => (b.priority ?? 0) - (a.priority ?? 0),\n\t\t\t);\n\n\t\t\t// Main execution loop\n\t\t\twhile (\n\t\t\t\tthis.state.status === \"running\" &&\n\t\t\t\t(this.state.pendingTasks.length > 0 || this.state.activeTasks.size > 0)\n\t\t\t) {\n\t\t\t\t// Assign tasks to idle teammates\n\t\t\t\tawait this.assignTasks();\n\n\t\t\t\t// Wait for any task to complete\n\t\t\t\tif (this.state.activeTasks.size > 0) {\n\t\t\t\t\tawait this.waitForAnyCompletion();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Determine final status\n\t\t\t// Note: status may have been changed to \"cancelled\" asynchronously via cancel()\n\t\t\tconst finalStatus = this.state.status as SwarmStatus;\n\t\t\tif (\n\t\t\t\tthis.state.failedTasks.size > 0 &&\n\t\t\t\t!this.state.config.continueOnFailure\n\t\t\t) {\n\t\t\t\tthis.state.status = \"failed\";\n\t\t\t\tthis.state.error = `${this.state.failedTasks.size} task(s) failed`;\n\t\t\t} else if (finalStatus !== \"cancelled\") {\n\t\t\t\tthis.state.status = \"completed\";\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.state.status = \"failed\";\n\t\t\tthis.state.error = error instanceof Error ? error.message : String(error);\n\t\t\tthis.emit({\n\t\t\t\ttype: \"swarm_fail\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\terror: this.state.error,\n\t\t\t});\n\t\t}\n\n\t\tthis.state.completedAt = Date.now();\n\t\tthis.emit({\n\t\t\ttype: \"swarm_complete\",\n\t\t\tswarmId: this.state.id,\n\t\t\tstate: this.state,\n\t\t});\n\n\t\tlogger.info(\"Swarm execution complete\", {\n\t\t\tswarmId: this.state.id,\n\t\t\tstatus: this.state.status,\n\t\t\tcompleted: this.state.completedTasks.size,\n\t\t\tfailed: this.state.failedTasks.size,\n\t\t\tduration: this.state.completedAt - this.state.startedAt,\n\t\t});\n\n\t\treturn this.state;\n\t}\n\n\t/**\n\t * Assign pending tasks to idle teammates.\n\t */\n\tprivate async assignTasks(): Promise<void> {\n\t\tconst idleTeammates = this.state.teammates.filter(\n\t\t\t(t) => t.status === \"pending\" || t.status === \"completed\",\n\t\t);\n\t\tconst spawnPromises: Promise<void>[] = [];\n\n\t\tfor (const teammate of idleTeammates) {\n\t\t\tconst task = this.getNextTask();\n\t\t\tif (!task) break;\n\n\t\t\t// Update state\n\t\t\tteammate.status = \"running\";\n\t\t\tteammate.currentTask = task;\n\t\t\tteammate.startedAt = Date.now();\n\t\t\tthis.state.activeTasks.set(task.id, teammate.id);\n\n\t\t\t// Remove from pending\n\t\t\tconst pendingIdx = this.state.pendingTasks.findIndex(\n\t\t\t\t(t) => t.id === task.id,\n\t\t\t);\n\t\t\tif (pendingIdx >= 0) {\n\t\t\t\tthis.state.pendingTasks.splice(pendingIdx, 1);\n\t\t\t}\n\n\t\t\tthis.emit({ type: \"teammate_spawn\", swarmId: this.state.id, teammate });\n\t\t\tthis.emit({\n\t\t\t\ttype: \"task_start\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammateId: teammate.id,\n\t\t\t\ttask,\n\t\t\t});\n\n\t\t\t// Spawn the agent process\n\t\t\tspawnPromises.push(this.spawnTeammate(teammate, task));\n\t\t}\n\n\t\tif (spawnPromises.length > 0) {\n\t\t\tawait Promise.all(spawnPromises);\n\t\t}\n\t}\n\n\t/**\n\t * Get the next task that can be executed (dependencies satisfied).\n\t */\n\tprivate getNextTask(): SwarmTask | null {\n\t\tfor (const task of this.state.pendingTasks) {\n\t\t\t// Check dependencies\n\t\t\tif (task.dependsOn && task.dependsOn.length > 0) {\n\t\t\t\tconst allDepsCompleted = task.dependsOn.every(\n\t\t\t\t\t(depId) =>\n\t\t\t\t\t\tthis.state.completedTasks.has(depId) ||\n\t\t\t\t\t\tthis.state.failedTasks.has(depId),\n\t\t\t\t);\n\t\t\t\tif (!allDepsCompleted) continue;\n\t\t\t}\n\t\t\treturn task;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Spawn a subprocess agent for a teammate.\n\t */\n\tprivate async buildTeammateEnv(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t): Promise<Record<string, string>> {\n\t\tconst baseEnv: Record<string, string> = {\n\t\t\t...process.env,\n\t\t\tMAESTRO_SWARM_MODE: \"1\",\n\t\t\tMAESTRO_SWARM_ID: this.state.id,\n\t\t\tMAESTRO_TEAMMATE_ID: teammate.id,\n\t\t};\n\n\t\ttry {\n\t\t\tconst delegation = await issueEvalOpsDelegationToken({\n\t\t\t\tagentId: teammate.id,\n\t\t\t\tagentType: \"swarm_teammate\",\n\t\t\t\tcapabilities: [\"swarm_task\"],\n\t\t\t\trunId: `${this.state.id}:${task.id}`,\n\t\t\t\tsurface: \"maestro-swarm\",\n\t\t\t\ttoken: process.env.MAESTRO_EVALOPS_ACCESS_TOKEN,\n\t\t\t\tttlSeconds: Math.max(\n\t\t\t\t\t60,\n\t\t\t\t\tMath.ceil(\n\t\t\t\t\t\t(this.state.config.taskTimeout ?? DEFAULT_TASK_TIMEOUT_MS) / 1000,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t});\n\t\t\treturn {\n\t\t\t\t...baseEnv,\n\t\t\t\t...buildEvalOpsDelegationEnvironment(delegation),\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tif (\n\t\t\t\tmessage.includes(\"Run /login evalops first\") ||\n\t\t\t\tmessage.includes(\"EvalOps login requires\")\n\t\t\t) {\n\t\t\t\treturn baseEnv;\n\t\t\t}\n\t\t\tlogger.warn(\n\t\t\t\t\"Failed to issue delegated EvalOps token for swarm teammate; using inherited auth\",\n\t\t\t\t{\n\t\t\t\t\terror: message,\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\ttaskId: task.id,\n\t\t\t\t\tteammateId: teammate.id,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn baseEnv;\n\t\t}\n\t}\n\n\tprivate async spawnTeammate(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t): Promise<void> {\n\t\tconst tmpFile = join(\n\t\t\ttmpdir(),\n\t\t\t`${this.state.id}-${toSafeTaskTempBasename(task.id)}`,\n\t\t);\n\n\t\t// Build prompt for the teammate\n\t\tlet prompt = `# Swarm Task: ${task.id}\\n\\n`;\n\t\tprompt += `You are teammate \"${teammate.name}\" in a swarm working on a plan.\\n\\n`;\n\t\tprompt += `## Your Task\\n\\n${task.prompt}\\n\\n`;\n\t\tif (task.files && task.files.length > 0) {\n\t\t\tprompt += `## Relevant Files\\n\\n${task.files.map((f) => `- ${f}`).join(\"\\n\")}\\n\\n`;\n\t\t}\n\t\tprompt += \"## Instructions\\n\\n\";\n\t\tprompt += \"1. Focus ONLY on your assigned task\\n\";\n\t\tprompt += \"2. Make changes directly - do not ask for confirmation\\n\";\n\t\tprompt += \"3. Report completion by summarizing what you did\\n\";\n\n\t\twriteFileSync(tmpFile, prompt);\n\n\t\tconst args = [\n\t\t\t\"--no-session\",\n\t\t\t...(task.model\n\t\t\t\t? [\"--model\", task.model]\n\t\t\t\t: this.state.config.model\n\t\t\t\t\t? [\"--model\", this.state.config.model]\n\t\t\t\t\t: []),\n\t\t\t\"exec\",\n\t\t\ttmpFile,\n\t\t];\n\t\tconst env = await this.buildTeammateEnv(teammate, task);\n\n\t\tif (\n\t\t\tthis.state.status !== \"running\" ||\n\t\t\tthis.abortController.signal.aborted\n\t\t) {\n\t\t\ttry {\n\t\t\t\tunlinkSync(tmpFile);\n\t\t\t} catch {\n\t\t\t\t// Ignore cleanup errors\n\t\t\t}\n\n\t\t\tthis.state.activeTasks.delete(task.id);\n\t\t\tteammate.currentTask = undefined;\n\t\t\tteammate.completedAt = Date.now();\n\n\t\t\tif (teammate.status !== \"cancelled\") {\n\t\t\t\tteammate.status =\n\t\t\t\t\tthis.state.status === \"failed\" ? \"failed\" : \"cancelled\";\n\t\t\t}\n\n\t\t\tthis.emit({\n\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammate,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst proc = spawn(\"maestro\", args, {\n\t\t\tcwd: this.state.config.cwd,\n\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t\tenv,\n\t\t});\n\n\t\tteammate.pid = proc.pid;\n\t\tthis.processes.set(teammate.id, proc);\n\n\t\tlet output = \"\";\n\t\tlet errorOutput = \"\";\n\n\t\tproc.stdout?.on(\"data\", (data) => {\n\t\t\toutput += data.toString();\n\t\t});\n\n\t\tproc.stderr?.on(\"data\", (data) => {\n\t\t\terrorOutput += data.toString();\n\t\t});\n\n\t\tconst timeout = this.state.config.taskTimeout ?? DEFAULT_TASK_TIMEOUT_MS;\n\t\tconst timeoutHandle = setTimeout(() => {\n\t\t\tproc.kill(\"SIGTERM\");\n\t\t\tteammate.error = \"Task timed out\";\n\t\t}, timeout);\n\n\t\tproc.on(\"close\", (code) => {\n\t\t\tclearTimeout(timeoutHandle);\n\t\t\tthis.processes.delete(teammate.id);\n\n\t\t\t// Cleanup temp file\n\t\t\ttry {\n\t\t\t\tunlinkSync(tmpFile);\n\t\t\t} catch {\n\t\t\t\t// Ignore cleanup errors\n\t\t\t}\n\n\t\t\tconst taskId = task.id;\n\t\t\tteammate.completedAt = Date.now();\n\t\t\tteammate.currentTask = undefined;\n\t\t\tteammate.output = output;\n\n\t\t\tthis.state.activeTasks.delete(taskId);\n\n\t\t\tif (\n\t\t\t\tthis.state.status === \"cancelled\" ||\n\t\t\t\tteammate.status === \"cancelled\"\n\t\t\t) {\n\t\t\t\tteammate.status = \"cancelled\";\n\t\t\t\tthis.emit({\n\t\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\tteammate,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (code === 0 && !teammate.error) {\n\t\t\t\tteammate.status = \"completed\";\n\t\t\t\tteammate.completedTasks.push(taskId);\n\t\t\t\tthis.state.completedTasks.add(taskId);\n\t\t\t\tthis.emit({\n\t\t\t\t\ttype: \"task_complete\",\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\tteammateId: teammate.id,\n\t\t\t\t\ttaskId,\n\t\t\t\t\toutput,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tteammate.status = \"failed\";\n\t\t\t\tteammate.error = teammate.error || errorOutput || `Exit code ${code}`;\n\t\t\t\tthis.state.failedTasks.add(taskId);\n\t\t\t\tthis.emit({\n\t\t\t\t\ttype: \"task_fail\",\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\tteammateId: teammate.id,\n\t\t\t\t\ttaskId,\n\t\t\t\t\terror: teammate.error,\n\t\t\t\t});\n\n\t\t\t\t// Stop swarm if not continuing on failure\n\t\t\t\tif (!this.state.config.continueOnFailure) {\n\t\t\t\t\tthis.state.status = \"failed\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.emit({\n\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammate,\n\t\t\t});\n\n\t\t\t// Only recycle idle teammates while the swarm still has work left.\n\t\t\tif (\n\t\t\t\tthis.state.status === \"running\" &&\n\t\t\t\t(this.state.pendingTasks.length > 0 ||\n\t\t\t\t\tthis.state.activeTasks.size > 0) &&\n\t\t\t\t(teammate.status === \"completed\" || this.state.config.continueOnFailure)\n\t\t\t) {\n\t\t\t\tteammate.status = \"pending\";\n\t\t\t\tteammate.error = undefined;\n\t\t\t}\n\t\t});\n\n\t\tproc.on(\"error\", (err) => {\n\t\t\tclearTimeout(timeoutHandle);\n\t\t\tthis.processes.delete(teammate.id);\n\t\t\tthis.state.activeTasks.delete(task.id);\n\n\t\t\ttry {\n\t\t\t\tunlinkSync(tmpFile);\n\t\t\t} catch {\n\t\t\t\t// Ignore cleanup errors\n\t\t\t}\n\n\t\t\tteammate.completedAt = Date.now();\n\t\t\tteammate.currentTask = undefined;\n\t\t\tteammate.output = output || errorOutput;\n\n\t\t\tif (\n\t\t\t\tthis.state.status === \"cancelled\" ||\n\t\t\t\tteammate.status === \"cancelled\"\n\t\t\t) {\n\t\t\t\tteammate.status = \"cancelled\";\n\t\t\t\tteammate.currentTask = undefined;\n\t\t\t\tthis.emit({\n\t\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\tteammate,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tteammate.status = \"failed\";\n\t\t\tteammate.error = err.message;\n\t\t\tthis.state.failedTasks.add(task.id);\n\n\t\t\tthis.emit({\n\t\t\t\ttype: \"task_fail\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammateId: teammate.id,\n\t\t\t\ttaskId: task.id,\n\t\t\t\terror: err.message,\n\t\t\t});\n\n\t\t\tif (!this.state.config.continueOnFailure) {\n\t\t\t\tthis.state.status = \"failed\";\n\t\t\t}\n\n\t\t\tthis.emit({\n\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammate,\n\t\t\t});\n\n\t\t\tif (\n\t\t\t\tthis.state.status === \"running\" &&\n\t\t\t\t(this.state.pendingTasks.length > 0 ||\n\t\t\t\t\tthis.state.activeTasks.size > 0) &&\n\t\t\t\tthis.state.config.continueOnFailure\n\t\t\t) {\n\t\t\t\tteammate.status = \"pending\";\n\t\t\t\tteammate.error = undefined;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Wait for any active task to complete.\n\t */\n\tprivate waitForAnyCompletion(): Promise<void> {\n\t\tconst initialActiveCount = this.state.activeTasks.size;\n\t\treturn new Promise((resolve) => {\n\t\t\tconst checkInterval = setInterval(() => {\n\t\t\t\t// Resolve as soon as at least one active task exits or the swarm stops.\n\t\t\t\tif (\n\t\t\t\t\tthis.state.activeTasks.size < initialActiveCount ||\n\t\t\t\t\tthis.state.status !== \"running\"\n\t\t\t\t) {\n\t\t\t\t\tclearInterval(checkInterval);\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t});\n\t}\n}\n\n/**\n * Create and execute a swarm.\n */\nexport async function executeSwarm(\n\tconfig: SwarmConfig,\n\tonEvent?: SwarmEventHandler,\n): Promise<SwarmState> {\n\tconst executor = new SwarmExecutor(config);\n\tif (onEvent) {\n\t\texecutor.onEvent(onEvent);\n\t}\n\treturn executor.execute();\n}\n"]}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/agent/swarm/executor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Swarm Executor\n *\n * Manages parallel execution of multiple agent instances (teammates)\n * working on tasks from a plan. Uses subprocess spawning similar to\n * the Oracle tool pattern.\n */\n\nimport { type ChildProcess, spawn } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { existsSync, mkdirSync, unlinkSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\nimport { type DelegationPrompt, formatDelegation } from \"@evalops/contracts\";\nimport { codexSubagentTypeA2ASkillID } from \"../../codex/subagent-dispatch-table.js\";\nimport {\n\tbuildEvalOpsDelegationEnvironment,\n\tissueEvalOpsDelegationToken,\n} from \"../../oauth/index.js\";\nimport { rankA2ACapabilityPeers } from \"../../platform/a2a-capability-market.js\";\nimport {\n\ttype A2AServiceConfig,\n\ttype A2ATask,\n\tbuildA2AUserMessage,\n\tcancelA2ATask,\n\tgetA2ATask,\n\tnormalizeA2ABaseUrl,\n\tsendA2AMessage,\n} from \"../../platform/a2a-client.js\";\nimport {\n\ttype ResolvedA2APeer,\n\tresolveA2APeer,\n} from \"../../platform/a2a-peer-registry.js\";\nimport {\n\textractA2ATaskText,\n\tisTerminalA2AState,\n\trecordA2ATaskStart,\n\tupdateA2ATaskInLedger,\n} from \"../../platform/a2a-task-ledger.js\";\nimport {\n\ttype PlatformAgentRegistryA2APeerCandidate,\n\tPlatformAgentStatusValue,\n\tlistA2APeerCandidatesWithPlatform,\n\tresolveAgentRegistryServiceConfig,\n} from \"../../platform/agent-registry-client.js\";\nimport { getEnvValue, trimString } from \"../../platform/client.js\";\nimport { recordSubagentDispatch } from \"../../telemetry.js\";\nimport { createLogger } from \"../../utils/logger.js\";\nimport {\n\ttype AgentMode,\n\ttype ModelProvider,\n\ttype ResolvedSubagentDispatch,\n\tparseMode,\n\tresolveSubagentDispatch,\n} from \"../modes.js\";\nimport { publishSwarmRuntimeEvent } from \"./runtime-events.js\";\nimport type {\n\tSwarmA2AConfig,\n\tSwarmConfig,\n\tSwarmEvent,\n\tSwarmEventHandler,\n\tSwarmState,\n\tSwarmStatus,\n\tSwarmTask,\n\tSwarmTeammate,\n\tTeammateStatus,\n} from \"./types.js\";\n\nconst logger = createLogger(\"agent:swarm:executor\");\n\n/** Default timeout per task (5 minutes) */\nconst DEFAULT_TASK_TIMEOUT_MS = 5 * 60 * 1000;\n\n/** Maximum concurrent teammates */\nconst MAX_TEAMMATES = 10;\nconst DEFAULT_A2A_POLL_INTERVAL_MS = 2_000;\nconst A2A_SKILL_PRIMARY_TASK_CLASSES = new Map<string, string>([\n\t[\"maestro.subagent.code-writer\", \"code.implementation\"],\n\t[\"maestro.subagent.code-review\", \"code.review\"],\n\t[\"maestro.subagent.test-runner\", \"test.execution\"],\n\t[\"maestro.subagent.repo-explorer\", \"repo.inspect\"],\n\t[\"maestro.subagent.release-shepherd\", \"release.follow-through\"],\n]);\nconst SWARM_SUBAGENT_TASK_CLASSES = new Map<string, string>([\n\t[\"coder\", \"code.implementation\"],\n\t[\"worker\", \"code.implementation\"],\n\t[\"review\", \"code.review\"],\n\t[\"reviewer\", \"code.review\"],\n\t[\"explore\", \"repo.inspect\"],\n\t[\"explorer\", \"repo.inspect\"],\n\t[\"research\", \"repo.inspect\"],\n\t[\"researcher\", \"repo.inspect\"],\n\t[\"test\", \"test.execution\"],\n\t[\"ci\", \"test.execution\"],\n\t[\"ci-monitor\", \"test.execution\"],\n\t[\"planner\", \"agent.delegation\"],\n\t[\"minimal\", \"agent.delegation\"],\n\t[\"custom\", \"agent.delegation\"],\n]);\n\n/** Teammate name prefixes for friendly identification */\nconst TEAMMATE_NAMES = [\n\t\"Alpha\",\n\t\"Beta\",\n\t\"Gamma\",\n\t\"Delta\",\n\t\"Epsilon\",\n\t\"Zeta\",\n\t\"Eta\",\n\t\"Theta\",\n\t\"Iota\",\n\t\"Kappa\",\n];\n\nconst MODEL_PROVIDERS: ModelProvider[] = [\n\t\"anthropic\",\n\t\"openai\",\n\t\"openai-codex\",\n\t\"google\",\n];\n\nfunction toSafeTaskTempBasename(taskId: string): string {\n\tconst safeId = taskId\n\t\t.replace(/[^A-Za-z0-9_-]+/g, \"_\")\n\t\t.replace(/^_+|_+$/g, \"\");\n\treturn `swarm-task-${safeId || \"task\"}.md`;\n}\n\nfunction cloneTask(task: SwarmTask): SwarmTask {\n\treturn {\n\t\t...task,\n\t\tfiles: task.files ? [...task.files] : undefined,\n\t\tdependsOn: task.dependsOn ? [...task.dependsOn] : undefined,\n\t};\n}\n\nfunction cloneTeammate(teammate: SwarmTeammate): SwarmTeammate {\n\treturn {\n\t\t...teammate,\n\t\tcurrentTask: teammate.currentTask\n\t\t\t? cloneTask(teammate.currentTask)\n\t\t\t: undefined,\n\t\tcompletedTasks: [...teammate.completedTasks],\n\t\ta2a: teammate.a2a ? { ...teammate.a2a } : undefined,\n\t};\n}\n\nfunction cloneConfig(config: SwarmConfig): SwarmConfig {\n\treturn {\n\t\t...config,\n\t\ta2a: config.a2a\n\t\t\t? {\n\t\t\t\t\t...config.a2a,\n\t\t\t\t\tpeers: config.a2a.peers ? [...config.a2a.peers] : undefined,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\ttasks: config.tasks.map(cloneTask),\n\t};\n}\n\nfunction cloneState(state: SwarmState): SwarmState {\n\treturn {\n\t\t...state,\n\t\tconfig: cloneConfig(state.config),\n\t\tteammates: state.teammates.map(cloneTeammate),\n\t\tpendingTasks: state.pendingTasks.map(cloneTask),\n\t\tactiveTasks: new Map(state.activeTasks),\n\t\tcompletedTasks: new Set(state.completedTasks),\n\t\tfailedTasks: new Set(state.failedTasks),\n\t};\n}\n\nfunction parseModelProvider(\n\tvalue: string | undefined,\n): ModelProvider | undefined {\n\tconst provider = value?.trim();\n\tif (!provider) {\n\t\treturn undefined;\n\t}\n\treturn MODEL_PROVIDERS.includes(provider as ModelProvider)\n\t\t? (provider as ModelProvider)\n\t\t: undefined;\n}\n\nfunction parseAgentMode(value: string | undefined): AgentMode | undefined {\n\tconst mode = value?.trim();\n\tif (!mode) {\n\t\treturn undefined;\n\t}\n\treturn parseMode(mode) ?? undefined;\n}\n\nfunction providerFromPrefixedModel(\n\tmodel: string | undefined,\n): ModelProvider | undefined {\n\tconst slashIndex = model?.indexOf(\"/\") ?? -1;\n\tif (!model || slashIndex <= 0) {\n\t\treturn undefined;\n\t}\n\treturn parseModelProvider(model.slice(0, slashIndex));\n}\n\nfunction parseBooleanEnv(value: string | undefined): boolean | undefined {\n\tconst normalized = value?.trim().toLowerCase();\n\tif (!normalized) {\n\t\treturn undefined;\n\t}\n\tif ([\"1\", \"true\", \"yes\", \"on\"].includes(normalized)) {\n\t\treturn true;\n\t}\n\tif ([\"0\", \"false\", \"no\", \"off\"].includes(normalized)) {\n\t\treturn false;\n\t}\n\treturn undefined;\n}\n\nfunction parsePositiveIntEnv(value: string | undefined): number | undefined {\n\tconst parsed = Number.parseInt(value ?? \"\", 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction parseCSVEnv(value: string | undefined): string[] | undefined {\n\tconst parsed = value\n\t\t?.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter(Boolean);\n\treturn parsed && parsed.length > 0 ? parsed : undefined;\n}\n\nfunction a2aStateCompleted(state: string | undefined): boolean {\n\treturn /COMPLETED/u.test(\n\t\t(state ?? \"\").toUpperCase().replace(/[\\s-]+/gu, \"_\"),\n\t);\n}\n\ntype A2ATeammateRoute = {\n\tname: string;\n\tdisplayName?: string;\n\tconfig: A2AServiceConfig;\n\tskillId?: string;\n\trole?: string;\n\ttasksPath?: string;\n\tsource: \"registry\" | \"platform-agent-registry\";\n};\n\ntype RemoteA2ARunningTask = {\n\troute: A2ATeammateRoute;\n\ttaskId: string;\n};\n\nfunction buildDispatchEnv(\n\tdispatch: ResolvedSubagentDispatch | null,\n\treasoningEffortOverride?: string,\n\truntimeSelection?: {\n\t\tmodel?: string;\n\t\tprovider?: string;\n\t\tsource?: string;\n\t},\n): Record<string, string> {\n\tif (!dispatch) {\n\t\treturn {};\n\t}\n\n\tconst env: Record<string, string> = {\n\t\tMAESTRO_SWARM_MODE_NAME: dispatch.mode,\n\t\tMAESTRO_SWARM_SUBAGENT_TYPE: dispatch.type,\n\t\tMAESTRO_SWARM_MODEL: runtimeSelection?.model ?? dispatch.model,\n\t\tMAESTRO_SWARM_REASONING_EFFORT:\n\t\t\treasoningEffortOverride ?? dispatch.reasoningEffort,\n\t\tMAESTRO_SWARM_DISPATCH_SOURCE: runtimeSelection?.source ?? dispatch.source,\n\t};\n\tconst provider = runtimeSelection?.provider ?? dispatch.provider;\n\tif (provider) {\n\t\tenv.MAESTRO_SWARM_MODEL_PROVIDER = provider;\n\t}\n\treturn env;\n}\n\ntype TaskDispatchResolution = {\n\tdispatch: ResolvedSubagentDispatch;\n\tstartedAt: number;\n\tlatencyMs: number;\n\tparentMode: AgentMode;\n\tparentModelProvider?: ModelProvider;\n};\n\n/**\n * SwarmExecutor manages a swarm of parallel agent instances.\n */\nexport class SwarmExecutor {\n\tprivate state: SwarmState;\n\tprivate processes: Map<string, ChildProcess> = new Map();\n\tprivate remoteA2ATasks: Map<string, RemoteA2ARunningTask> = new Map();\n\tprivate a2aRouteCursor = 0;\n\tprivate eventHandlers: Set<SwarmEventHandler> = new Set();\n\tprivate abortController: AbortController;\n\n\tconstructor(config: SwarmConfig) {\n\t\t// Validate config\n\t\tif (config.teammateCount < 1 || config.teammateCount > MAX_TEAMMATES) {\n\t\t\tthrow new Error(\n\t\t\t\t`Teammate count must be between 1 and ${MAX_TEAMMATES}, got ${config.teammateCount}`,\n\t\t\t);\n\t\t}\n\n\t\tthis.abortController = new AbortController();\n\n\t\t// Initialize state\n\t\tthis.state = {\n\t\t\tid: randomUUID(),\n\t\t\tstatus: \"initializing\",\n\t\t\tconfig,\n\t\t\tteammates: [],\n\t\t\tpendingTasks: [...config.tasks],\n\t\t\tactiveTasks: new Map(),\n\t\t\tcompletedTasks: new Set(),\n\t\t\tfailedTasks: new Set(),\n\t\t\tstartedAt: Date.now(),\n\t\t};\n\n\t\t// Create teammates\n\t\tfor (let i = 0; i < config.teammateCount; i++) {\n\t\t\tthis.state.teammates.push({\n\t\t\t\tid: randomUUID(),\n\t\t\t\tname: TEAMMATE_NAMES[i] || `Teammate-${i + 1}`,\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tcompletedTasks: [],\n\t\t\t});\n\t\t}\n\n\t\tlogger.info(\"Swarm initialized\", {\n\t\t\tswarmId: this.state.id,\n\t\t\tteammateCount: config.teammateCount,\n\t\t\ttaskCount: config.tasks.length,\n\t\t});\n\t}\n\n\t/**\n\t * Subscribe to swarm events.\n\t */\n\tonEvent(handler: SwarmEventHandler): () => void {\n\t\tthis.eventHandlers.add(handler);\n\t\treturn () => this.eventHandlers.delete(handler);\n\t}\n\n\t/**\n\t * Emit an event to all handlers.\n\t */\n\tprivate emit(event: SwarmEvent): void {\n\t\tpublishSwarmRuntimeEvent({\n\t\t\tevent,\n\t\t\tparentSessionId: this.state.config.parentSessionId,\n\t\t\tcwd: this.state.config.cwd,\n\t\t\tplanFile: this.state.config.planFile,\n\t\t});\n\t\tfor (const handler of this.eventHandlers) {\n\t\t\ttry {\n\t\t\t\thandler(event);\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(\n\t\t\t\t\t\"Event handler error\",\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get the current swarm state.\n\t */\n\tgetState(): SwarmState {\n\t\treturn cloneState(this.state);\n\t}\n\n\t/**\n\t * Cancel the swarm execution.\n\t */\n\tcancel(): void {\n\t\tconst remoteTasks = [...this.remoteA2ATasks.entries()];\n\t\tfor (const [teammateId, remoteTask] of remoteTasks) {\n\t\t\tvoid this.cancelRemoteA2ATask(teammateId, remoteTask);\n\t\t}\n\n\t\tthis.abortController.abort();\n\t\tthis.state.status = \"cancelled\";\n\n\t\t// Kill all running processes\n\t\tfor (const [teammateId, proc] of this.processes) {\n\t\t\ttry {\n\t\t\t\tproc.kill(\"SIGTERM\");\n\t\t\t} catch {\n\t\t\t\t// Process may already be dead\n\t\t\t}\n\t\t\tconst teammate = this.state.teammates.find((t) => t.id === teammateId);\n\t\t\tif (teammate) {\n\t\t\t\tteammate.status = \"cancelled\";\n\t\t\t\tteammate.currentTask = undefined;\n\t\t\t}\n\t\t}\n\n\t\tfor (const teammate of this.state.teammates) {\n\t\t\tif (teammate.status === \"running\" || teammate.currentTask) {\n\t\t\t\tteammate.status = \"cancelled\";\n\t\t\t\tteammate.currentTask = undefined;\n\t\t\t\tteammate.completedAt = Date.now();\n\t\t\t}\n\t\t}\n\n\t\tthis.state.activeTasks.clear();\n\t\tthis.processes.clear();\n\t\tlogger.info(\"Swarm cancelled\", { swarmId: this.state.id });\n\t}\n\n\tprivate async cancelRemoteA2ATask(\n\t\tteammateId: string,\n\t\tremoteTask: RemoteA2ARunningTask,\n\t): Promise<void> {\n\t\ttry {\n\t\t\tconst cancelledTask = await cancelA2ATask(\n\t\t\t\tremoteTask.route.config,\n\t\t\t\tremoteTask.taskId,\n\t\t\t);\n\t\t\tawait this.updateA2ASwarmTaskLedger(remoteTask.route, cancelledTask);\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Failed to cancel remote A2A swarm task\", {\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammateId,\n\t\t\t\tremoteTaskId: remoteTask.taskId,\n\t\t\t\tpeer: remoteTask.route.name,\n\t\t\t});\n\t\t} finally {\n\t\t\tthis.remoteA2ATasks.delete(teammateId);\n\t\t}\n\t}\n\n\t/**\n\t * Execute the swarm - runs all tasks with available teammates.\n\t */\n\tasync execute(): Promise<SwarmState> {\n\t\tthis.state.status = \"running\";\n\t\tthis.emit({\n\t\t\ttype: \"swarm_start\",\n\t\t\tswarmId: this.state.id,\n\t\t\tconfig: this.state.config,\n\t\t});\n\n\t\ttry {\n\t\t\t// Sort tasks by priority (higher first) and dependencies\n\t\t\tthis.state.pendingTasks.sort(\n\t\t\t\t(a, b) => (b.priority ?? 0) - (a.priority ?? 0),\n\t\t\t);\n\n\t\t\t// Main execution loop\n\t\t\twhile (\n\t\t\t\tthis.state.status === \"running\" &&\n\t\t\t\t(this.state.pendingTasks.length > 0 || this.state.activeTasks.size > 0)\n\t\t\t) {\n\t\t\t\tthis.skipTasksBlockedByFailedDependencies();\n\n\t\t\t\t// Assign tasks to idle teammates\n\t\t\t\tawait this.assignTasks();\n\n\t\t\t\t// Wait for any task to complete\n\t\t\t\tif (this.state.activeTasks.size > 0) {\n\t\t\t\t\tawait this.waitForAnyCompletion();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Determine final status\n\t\t\t// Note: status may have been changed to \"cancelled\" asynchronously via cancel()\n\t\t\tconst finalStatus = this.state.status as SwarmStatus;\n\t\t\tif (\n\t\t\t\tthis.state.failedTasks.size > 0 &&\n\t\t\t\t!this.state.config.continueOnFailure\n\t\t\t) {\n\t\t\t\tthis.state.status = \"failed\";\n\t\t\t\tthis.state.error = `${this.state.failedTasks.size} task(s) failed`;\n\t\t\t} else if (finalStatus !== \"cancelled\") {\n\t\t\t\tthis.state.status = \"completed\";\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.state.status = \"failed\";\n\t\t\tthis.state.error = error instanceof Error ? error.message : String(error);\n\t\t\tthis.emit({\n\t\t\t\ttype: \"swarm_fail\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\terror: this.state.error,\n\t\t\t});\n\t\t}\n\n\t\tthis.state.completedAt = Date.now();\n\t\tthis.emit({\n\t\t\ttype: \"swarm_complete\",\n\t\t\tswarmId: this.state.id,\n\t\t\tstate: this.state,\n\t\t});\n\n\t\tlogger.info(\"Swarm execution complete\", {\n\t\t\tswarmId: this.state.id,\n\t\t\tstatus: this.state.status,\n\t\t\tcompleted: this.state.completedTasks.size,\n\t\t\tfailed: this.state.failedTasks.size,\n\t\t\tduration: this.state.completedAt - this.state.startedAt,\n\t\t});\n\n\t\treturn this.state;\n\t}\n\n\t/**\n\t * Assign pending tasks to idle teammates.\n\t */\n\tprivate async assignTasks(): Promise<void> {\n\t\tconst idleTeammates = this.state.teammates.filter(\n\t\t\t(t) => t.status === \"pending\" || t.status === \"completed\",\n\t\t);\n\t\tconst spawnPromises: Promise<void>[] = [];\n\n\t\tfor (const teammate of idleTeammates) {\n\t\t\tconst task = this.getNextTask();\n\t\t\tif (!task) break;\n\n\t\t\t// Update state\n\t\t\tteammate.status = \"running\";\n\t\t\tteammate.currentTask = task;\n\t\t\tteammate.startedAt = Date.now();\n\t\t\tthis.state.activeTasks.set(task.id, teammate.id);\n\n\t\t\t// Remove from pending\n\t\t\tconst pendingIdx = this.state.pendingTasks.findIndex(\n\t\t\t\t(t) => t.id === task.id,\n\t\t\t);\n\t\t\tif (pendingIdx >= 0) {\n\t\t\t\tthis.state.pendingTasks.splice(pendingIdx, 1);\n\t\t\t}\n\n\t\t\tthis.emit({ type: \"teammate_spawn\", swarmId: this.state.id, teammate });\n\t\t\tthis.emit({\n\t\t\t\ttype: \"task_start\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammateId: teammate.id,\n\t\t\t\ttask,\n\t\t\t});\n\n\t\t\t// Spawn the agent process\n\t\t\tspawnPromises.push(this.spawnTeammate(teammate, task));\n\t\t}\n\n\t\tif (spawnPromises.length > 0) {\n\t\t\tawait Promise.all(spawnPromises);\n\t\t}\n\t}\n\n\t/**\n\t * Get the next task that can be executed (dependencies satisfied).\n\t */\n\tprivate getNextTask(): SwarmTask | null {\n\t\tfor (const task of this.state.pendingTasks) {\n\t\t\t// Check dependencies\n\t\t\tif (task.dependsOn && task.dependsOn.length > 0) {\n\t\t\t\tconst allDepsCompleted = task.dependsOn.every((depId) =>\n\t\t\t\t\tthis.state.completedTasks.has(depId),\n\t\t\t\t);\n\t\t\t\tif (!allDepsCompleted) continue;\n\t\t\t}\n\t\t\treturn task;\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate skipTasksBlockedByFailedDependencies(): void {\n\t\tconst blockedTasks = this.state.pendingTasks.filter((task) =>\n\t\t\ttask.dependsOn?.some((depId) => this.state.failedTasks.has(depId)),\n\t\t);\n\t\tfor (const task of blockedTasks) {\n\t\t\tconst pendingIndex = this.state.pendingTasks.findIndex(\n\t\t\t\t(candidate) => candidate.id === task.id,\n\t\t\t);\n\t\t\tif (pendingIndex >= 0) {\n\t\t\t\tthis.state.pendingTasks.splice(pendingIndex, 1);\n\t\t\t}\n\t\t\tthis.state.failedTasks.add(task.id);\n\t\t\tconst failedDependency = task.dependsOn?.find((depId) =>\n\t\t\t\tthis.state.failedTasks.has(depId),\n\t\t\t);\n\t\t\tconst error = `Dependency ${failedDependency ?? \"unknown\"} failed`;\n\t\t\tthis.emit({\n\t\t\t\ttype: \"task_fail\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammateId: \"dependency\",\n\t\t\t\ttaskId: task.id,\n\t\t\t\terror,\n\t\t\t});\n\t\t\tif (!this.state.config.continueOnFailure) {\n\t\t\t\tthis.state.status = \"failed\";\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Spawn a subprocess agent for a teammate.\n\t */\n\tprivate async buildTeammateEnv(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t\tdispatch: ResolvedSubagentDispatch | null,\n\t\truntimeSelection?: {\n\t\t\tmodel?: string;\n\t\t\tprovider?: string;\n\t\t\tsource?: string;\n\t\t},\n\t): Promise<Record<string, string>> {\n\t\tconst baseEnv: Record<string, string> = {\n\t\t\t...process.env,\n\t\t\tMAESTRO_SWARM_MODE: \"1\",\n\t\t\tMAESTRO_SWARM_ID: this.state.id,\n\t\t\tMAESTRO_TEAMMATE_ID: teammate.id,\n\t\t\t...buildDispatchEnv(\n\t\t\t\tdispatch,\n\t\t\t\tthis.state.config.reasoningEffort,\n\t\t\t\truntimeSelection,\n\t\t\t),\n\t\t};\n\n\t\ttry {\n\t\t\tconst delegation = await issueEvalOpsDelegationToken({\n\t\t\t\tagentId: teammate.id,\n\t\t\t\tagentType: \"swarm_teammate\",\n\t\t\t\tcapabilities: [\"swarm_task\"],\n\t\t\t\trunId: `${this.state.id}:${task.id}`,\n\t\t\t\tsurface: \"maestro-swarm\",\n\t\t\t\ttoken: process.env.MAESTRO_EVALOPS_ACCESS_TOKEN,\n\t\t\t\tttlSeconds: Math.max(\n\t\t\t\t\t60,\n\t\t\t\t\tMath.ceil(\n\t\t\t\t\t\t(this.state.config.taskTimeout ?? DEFAULT_TASK_TIMEOUT_MS) / 1000,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t});\n\t\t\treturn {\n\t\t\t\t...baseEnv,\n\t\t\t\t...buildEvalOpsDelegationEnvironment(delegation),\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tif (\n\t\t\t\tmessage.includes(\"Run /login evalops first\") ||\n\t\t\t\tmessage.includes(\"EvalOps login requires\")\n\t\t\t) {\n\t\t\t\treturn baseEnv;\n\t\t\t}\n\t\t\tlogger.warn(\n\t\t\t\t\"Failed to issue delegated EvalOps token for swarm teammate; using inherited auth\",\n\t\t\t\t{\n\t\t\t\t\terror: message,\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\ttaskId: task.id,\n\t\t\t\t\tteammateId: teammate.id,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn baseEnv;\n\t\t}\n\t}\n\n\tprivate resolveTaskDispatch(\n\t\ttask: SwarmTask,\n\t\tteammate: SwarmTeammate,\n\t\toptions: { hasModelOverride?: boolean } = {},\n\t): TaskDispatchResolution | null {\n\t\tconst startedAt = Date.now();\n\t\tconst subagentType = task.subagentType ?? this.state.config.subagentType;\n\t\tif (!subagentType) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst mode = this.resolveParentMode();\n\t\tconst parentProvider = this.resolveParentModelProvider();\n\t\tconst dispatch = resolveSubagentDispatch(\n\t\t\tmode,\n\t\t\tsubagentType,\n\t\t\tparentProvider ?? \"anthropic\",\n\t\t);\n\t\tif (!parentProvider && dispatch.modelTier && !options.hasModelOverride) {\n\t\t\tthis.recordTaskDispatch(\n\t\t\t\ttask,\n\t\t\t\tdispatch,\n\t\t\t\tMath.max(0, Date.now() - startedAt),\n\t\t\t\tfalse,\n\t\t\t\t{\n\t\t\t\t\tparentMode: mode,\n\t\t\t\t\tparentModelProvider: parentProvider,\n\t\t\t\t\tteammateId: teammate.id,\n\t\t\t\t\treason: \"missing_parent_model_provider\",\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tdispatch,\n\t\t\tstartedAt,\n\t\t\tlatencyMs: Math.max(0, Date.now() - startedAt),\n\t\t\tparentMode: mode,\n\t\t\tparentModelProvider: parentProvider,\n\t\t};\n\t}\n\n\tprivate recordTaskDispatch(\n\t\ttask: SwarmTask,\n\t\tdispatch: ResolvedSubagentDispatch,\n\t\tlatencyMs: number,\n\t\tsuccess: boolean,\n\t\toptions: {\n\t\t\tparentMode: AgentMode;\n\t\t\tparentModelProvider?: ModelProvider;\n\t\t\tteammateId?: string;\n\t\t\tmodel?: string;\n\t\t\tprovider?: string;\n\t\t\tsource?: string;\n\t\t\tmodelOverride?: \"task\" | \"config\";\n\t\t\treason?: string;\n\t\t},\n\t): void {\n\t\trecordSubagentDispatch({\n\t\t\tmode: dispatch.mode,\n\t\t\tsubagentType: dispatch.type,\n\t\t\tmodel: options.model ?? dispatch.model,\n\t\t\tprovider: options.provider ?? dispatch.provider,\n\t\t\treasoningEffort:\n\t\t\t\tthis.state.config.reasoningEffort ?? dispatch.reasoningEffort,\n\t\t\tlatencyMs,\n\t\t\tsuccess,\n\t\t\tsource: options.source ?? dispatch.source,\n\t\t\tmetadata: {\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammateId: options.teammateId,\n\t\t\t\ttaskId: task.id,\n\t\t\t\tparentMode: options.parentMode,\n\t\t\t\tparentModelProvider: options.parentModelProvider,\n\t\t\t\tdispatchModel: dispatch.model,\n\t\t\t\tdispatchProvider: dispatch.provider,\n\t\t\t\tdispatchSource: dispatch.source,\n\t\t\t\tmodelTier: dispatch.modelTier,\n\t\t\t\tmodelOverride: options.modelOverride,\n\t\t\t\treason: options.reason,\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate resolveParentMode(): AgentMode {\n\t\treturn (\n\t\t\tthis.state.config.mode ??\n\t\t\tparseAgentMode(process.env.MAESTRO_MODE) ??\n\t\t\t\"smart\"\n\t\t);\n\t}\n\n\tprivate resolveParentModelProvider(): ModelProvider | undefined {\n\t\treturn (\n\t\t\tthis.state.config.modelProvider ??\n\t\t\tparseModelProvider(process.env.MAESTRO_MODEL_PROVIDER) ??\n\t\t\tproviderFromPrefixedModel(process.env.MAESTRO_MODEL)\n\t\t);\n\t}\n\n\tprivate resolveA2AConfig(): SwarmA2AConfig | null {\n\t\tconst transport =\n\t\t\tthis.state.config.transport ??\n\t\t\ttrimString(process.env.MAESTRO_SWARM_TRANSPORT);\n\t\tif (transport !== \"a2a\") {\n\t\t\treturn null;\n\t\t}\n\t\tconst configured = this.state.config.a2a ?? {};\n\t\tconst peers =\n\t\t\tconfigured.peers ?? parseCSVEnv(getEnvValue([\"MAESTRO_SWARM_A2A_PEERS\"]));\n\t\treturn {\n\t\t\t...configured,\n\t\t\t...(peers ? { peers } : {}),\n\t\t\tregistryPath:\n\t\t\t\tconfigured.registryPath ??\n\t\t\t\ttrimString(process.env.MAESTRO_SWARM_A2A_REGISTRY),\n\t\t\ttasksPath:\n\t\t\t\tconfigured.tasksPath ?? trimString(process.env.MAESTRO_SWARM_A2A_TASKS),\n\t\t\tskillId:\n\t\t\t\tconfigured.skillId ??\n\t\t\t\ttrimString(process.env.MAESTRO_SWARM_A2A_SKILL_ID),\n\t\t\trole: configured.role ?? trimString(process.env.MAESTRO_SWARM_A2A_ROLE),\n\t\t\tdiscover:\n\t\t\t\tconfigured.discover ??\n\t\t\t\tparseBooleanEnv(process.env.MAESTRO_SWARM_A2A_DISCOVER),\n\t\t\tworkspaceId:\n\t\t\t\tconfigured.workspaceId ??\n\t\t\t\ttrimString(process.env.MAESTRO_SWARM_A2A_WORKSPACE_ID),\n\t\t\tcapability:\n\t\t\t\tconfigured.capability ??\n\t\t\t\ttrimString(process.env.MAESTRO_SWARM_A2A_CAPABILITY),\n\t\t\tsurface:\n\t\t\t\tconfigured.surface ?? trimString(process.env.MAESTRO_SWARM_A2A_SURFACE),\n\t\t\tpreferInternalEndpoint:\n\t\t\t\tconfigured.preferInternalEndpoint ??\n\t\t\t\tparseBooleanEnv(process.env.MAESTRO_SWARM_A2A_PREFER_INTERNAL),\n\t\t\tlimit:\n\t\t\t\tconfigured.limit ??\n\t\t\t\tparsePositiveIntEnv(process.env.MAESTRO_SWARM_A2A_LIMIT),\n\t\t\ttimeoutMs:\n\t\t\t\tconfigured.timeoutMs ??\n\t\t\t\tparsePositiveIntEnv(process.env.MAESTRO_SWARM_A2A_TIMEOUT_MS),\n\t\t\tmaxAttempts:\n\t\t\t\tconfigured.maxAttempts ??\n\t\t\t\tparsePositiveIntEnv(process.env.MAESTRO_SWARM_A2A_MAX_ATTEMPTS),\n\t\t\tmaxWaitMs:\n\t\t\t\tconfigured.maxWaitMs ??\n\t\t\t\tparsePositiveIntEnv(process.env.MAESTRO_SWARM_A2A_MAX_WAIT_MS),\n\t\t\tpollIntervalMs:\n\t\t\t\tconfigured.pollIntervalMs ??\n\t\t\t\tparsePositiveIntEnv(process.env.MAESTRO_SWARM_A2A_POLL_INTERVAL_MS),\n\t\t};\n\t}\n\n\tprivate async resolveA2ATeammateRoute(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t\toptions: SwarmA2AConfig,\n\t): Promise<A2ATeammateRoute> {\n\t\tif (options.discover) {\n\t\t\treturn this.resolvePlatformDiscoveredA2ATeammateRoute(\n\t\t\t\tteammate,\n\t\t\t\ttask,\n\t\t\t\toptions,\n\t\t\t);\n\t\t}\n\t\tconst peerName = this.selectA2APeerName(teammate, task, options);\n\t\tconst peer = await resolveA2APeer(peerName, {\n\t\t\tpath: options.registryPath,\n\t\t\ttimeoutMs: options.timeoutMs,\n\t\t\tmaxAttempts: options.maxAttempts,\n\t\t});\n\t\treturn {\n\t\t\tname: peer.name,\n\t\t\tdisplayName: peer.entry.displayName,\n\t\t\tconfig: peer.config,\n\t\t\tskillId: this.resolveA2ASkillId(task, options, peer),\n\t\t\trole: options.role ?? task.subagentType,\n\t\t\ttasksPath: options.tasksPath,\n\t\t\tsource: \"registry\",\n\t\t};\n\t}\n\n\tprivate async resolvePlatformDiscoveredA2ATeammateRoute(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t\toptions: SwarmA2AConfig,\n\t): Promise<A2ATeammateRoute> {\n\t\tconst skillId = this.resolveA2ASkillId(task, options);\n\t\tconst pinnedPeer = trimString(task.a2aPeer);\n\t\tconst routeIndex = pinnedPeer ? 0 : this.nextA2ARouteIndex();\n\t\tconst candidates = await listA2APeerCandidatesWithPlatform({\n\t\t\tworkspaceId: options.workspaceId,\n\t\t\tcapability: options.capability,\n\t\t\tsurface: options.surface ?? \"a2a\",\n\t\t\tstatus: PlatformAgentStatusValue.Idle,\n\t\t\tlimit:\n\t\t\t\toptions.limit ??\n\t\t\t\t(pinnedPeer ? undefined : this.defaultA2ADiscoveryLimit()),\n\t\t\tskillId,\n\t\t\tpreferInternalEndpoint: options.preferInternalEndpoint,\n\t\t});\n\t\tif (!candidates || candidates.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`No Platform A2A peers available for swarm task ${task.id}${\n\t\t\t\t\tskillId ? ` with skill ${skillId}` : \"\"\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\t\tconst candidatePool = pinnedPeer\n\t\t\t? candidates.filter((candidate) =>\n\t\t\t\t\tplatformA2ACandidateMatchesPeer(candidate, pinnedPeer),\n\t\t\t\t)\n\t\t\t: candidates;\n\t\tif (candidatePool.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`No Platform A2A peer matched task ${task.id} a2aPeer ${pinnedPeer}`,\n\t\t\t);\n\t\t}\n\t\tconst rankedCandidates = rankA2ACapabilityPeers(candidatePool, {\n\t\t\tskillId,\n\t\t\ttaskClass: this.resolveA2ATaskClass(task, options, skillId),\n\t\t\tpreferInternalEndpoint: options.preferInternalEndpoint,\n\t\t});\n\t\tif (rankedCandidates.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`No Platform A2A peer satisfied capability policy for swarm task ${task.id}${\n\t\t\t\t\tskillId ? ` with skill ${skillId}` : \"\"\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\t\tconst candidateIndex = pinnedPeer\n\t\t\t? 0\n\t\t\t: routeIndex % rankedCandidates.length;\n\t\tconst ranked = rankedCandidates[candidateIndex];\n\t\tconst candidate = ranked?.candidate;\n\t\tif (!candidate || !ranked) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Platform A2A peer discovery returned an invalid candidate\",\n\t\t\t);\n\t\t}\n\t\tlogger.info(\"Selected Platform A2A peer through capability market\", {\n\t\t\tswarmId: this.state.id,\n\t\t\ttaskId: task.id,\n\t\t\tagentId: candidate.agent.id,\n\t\t\tscore: ranked.score,\n\t\t\treasons: ranked.reasons,\n\t\t\tskillId: ranked.selectedSkill?.id ?? skillId,\n\t\t});\n\t\tconst config = await this.a2aConfigForPlatformCandidate(candidate, options);\n\t\treturn {\n\t\t\tname: candidate.agent.name ?? candidate.agent.id ?? candidate.endpointUrl,\n\t\t\tdisplayName: candidate.agent.name,\n\t\t\tconfig,\n\t\t\tskillId: ranked.selectedSkill?.id ?? skillId,\n\t\t\trole: options.role ?? task.subagentType,\n\t\t\ttasksPath: options.tasksPath,\n\t\t\tsource: \"platform-agent-registry\",\n\t\t};\n\t}\n\n\tprivate async a2aConfigForPlatformCandidate(\n\t\tcandidate: PlatformAgentRegistryA2APeerCandidate,\n\t\toptions: SwarmA2AConfig,\n\t): Promise<A2AServiceConfig> {\n\t\tconst platformConfig = await resolveAgentRegistryServiceConfig();\n\t\tif (!platformConfig) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Platform Agent Registry service is not configured for A2A swarm discovery\",\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\tbaseUrl: normalizeA2ABaseUrl(candidate.endpointUrl),\n\t\t\t...(platformConfig.token ? { token: platformConfig.token } : {}),\n\t\t\t...(platformConfig.organizationId\n\t\t\t\t? { organizationId: platformConfig.organizationId }\n\t\t\t\t: {}),\n\t\t\tworkspaceId:\n\t\t\t\tcandidate.agent.workspaceId ??\n\t\t\t\toptions.workspaceId ??\n\t\t\t\tplatformConfig.workspaceId,\n\t\t\t...(candidate.agent.id ? { agentId: candidate.agent.id } : {}),\n\t\t\tactorId: \"maestro-swarm\",\n\t\t\ttimeoutMs: options.timeoutMs ?? platformConfig.timeoutMs,\n\t\t\tmaxAttempts: options.maxAttempts ?? platformConfig.maxAttempts,\n\t\t};\n\t}\n\n\tprivate selectA2APeerName(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t\toptions: SwarmA2AConfig,\n\t): string {\n\t\tconst peerName = trimString(task.a2aPeer);\n\t\tif (peerName) {\n\t\t\treturn peerName;\n\t\t}\n\t\tconst peers = options.peers ?? [];\n\t\tconst selected = peers[this.nextA2ARouteIndex() % peers.length];\n\t\tif (!selected) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Remote A2A swarm transport requires a task a2aPeer, a2a.peers, MAESTRO_SWARM_A2A_PEERS, or a2a.discover=true\",\n\t\t\t);\n\t\t}\n\t\treturn selected;\n\t}\n\n\tprivate resolveA2ASkillId(\n\t\ttask: SwarmTask,\n\t\toptions: SwarmA2AConfig,\n\t\tpeer?: ResolvedA2APeer,\n\t): string | undefined {\n\t\tconst configured =\n\t\t\ttrimString(task.a2aSkillId) ??\n\t\t\ttrimString(options.skillId) ??\n\t\t\tcodexSubagentTypeA2ASkillID(\n\t\t\t\ttask.subagentType ?? this.state.config.subagentType,\n\t\t\t);\n\t\tif (configured) {\n\t\t\treturn configured;\n\t\t}\n\t\treturn peer?.entry.skills?.[0]?.id;\n\t}\n\n\tprivate resolveA2ATaskClass(\n\t\ttask: SwarmTask,\n\t\toptions: SwarmA2AConfig,\n\t\tskillId: string | undefined,\n\t): string | undefined {\n\t\tconst mappedSkillTaskClass = skillId\n\t\t\t? A2A_SKILL_PRIMARY_TASK_CLASSES.get(skillId)\n\t\t\t: undefined;\n\t\tif (mappedSkillTaskClass) {\n\t\t\treturn mappedSkillTaskClass;\n\t\t}\n\t\tif (\n\t\t\tskillId &&\n\t\t\t(trimString(task.a2aSkillId) || trimString(options.skillId))\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst subagentType = trimString(\n\t\t\ttask.subagentType ?? this.state.config.subagentType,\n\t\t);\n\t\treturn (\n\t\t\t(subagentType\n\t\t\t\t? SWARM_SUBAGENT_TASK_CLASSES.get(subagentType)\n\t\t\t\t: undefined) ?? subagentType\n\t\t);\n\t}\n\n\tprivate teammateIndex(teammate: SwarmTeammate): number {\n\t\tconst index = this.state.teammates.findIndex(\n\t\t\t(item) => item.id === teammate.id,\n\t\t);\n\t\treturn index >= 0 ? index : 0;\n\t}\n\n\tprivate nextA2ARouteIndex(): number {\n\t\tconst index = this.a2aRouteCursor;\n\t\tthis.a2aRouteCursor += 1;\n\t\treturn index;\n\t}\n\n\tprivate defaultA2ADiscoveryLimit(): number {\n\t\treturn Math.max(\n\t\t\t1,\n\t\t\tthis.state.config.teammateCount,\n\t\t\tthis.state.config.tasks.length,\n\t\t);\n\t}\n\n\tprivate async spawnTeammate(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t): Promise<void> {\n\t\tconst tmpFile = join(\n\t\t\ttmpdir(),\n\t\t\t`${this.state.id}-${toSafeTaskTempBasename(task.id)}`,\n\t\t);\n\n\t\tconst delegationPrompt: DelegationPrompt = {\n\t\t\tgoal: `Complete swarm task ${task.id} as teammate \"${teammate.name}\".`,\n\t\t\tcontext: `You are teammate \"${teammate.name}\" in swarm ${this.state.id}, working from plan file ${this.state.config.planFile}.`,\n\t\t\ttask: task.prompt,\n\t\t\tevidence: task.files?.length\n\t\t\t\t? task.files.map((file) => `Relevant file: ${file}`)\n\t\t\t\t: [],\n\t\t\tvalidation:\n\t\t\t\t\"Make the requested changes directly, add or update focused tests when behavior changes, and run the relevant verification before finishing.\",\n\t\t\tstoppingCondition:\n\t\t\t\t\"Stop when the assigned task is complete and report what changed, what you verified, and any blockers. Do not broaden into unrelated tasks.\",\n\t\t};\n\t\tconst prompt = formatDelegation(delegationPrompt);\n\n\t\twriteFileSync(tmpFile, prompt);\n\n\t\tconst a2aConfig = this.resolveA2AConfig();\n\t\tif (a2aConfig) {\n\t\t\tvoid this.spawnA2ATeammate(teammate, task, prompt, tmpFile, a2aConfig);\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelOverride =\n\t\t\ttask.model !== undefined\n\t\t\t\t? \"task\"\n\t\t\t\t: this.state.config.model !== undefined\n\t\t\t\t\t? \"config\"\n\t\t\t\t\t: undefined;\n\t\tconst hasModelOverride = Boolean(modelOverride);\n\t\tconst dispatchResolution = this.resolveTaskDispatch(task, teammate, {\n\t\t\thasModelOverride,\n\t\t});\n\t\tconst dispatch = dispatchResolution?.dispatch ?? null;\n\t\tconst model = task.model ?? this.state.config.model ?? dispatch?.model;\n\t\tconst overrideProvider = hasModelOverride\n\t\t\t? (providerFromPrefixedModel(model) ?? \"unknown\")\n\t\t\t: undefined;\n\t\tconst telemetryProvider =\n\t\t\toverrideProvider ?? (hasModelOverride ? \"unknown\" : dispatch?.provider);\n\t\tconst dispatchSource = hasModelOverride ? \"override\" : dispatch?.source;\n\t\tconst provider = hasModelOverride ? undefined : dispatch?.provider;\n\t\tconst args = [\n\t\t\t\"--no-session\",\n\t\t\t...(provider ? [\"--provider\", provider] : []),\n\t\t\t...(model ? [\"--model\", model] : []),\n\t\t\t\"exec\",\n\t\t\ttmpFile,\n\t\t];\n\t\tconst env = await this.buildTeammateEnv(\n\t\t\tteammate,\n\t\t\ttask,\n\t\t\tdispatch,\n\t\t\tdispatch\n\t\t\t\t? {\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tprovider: telemetryProvider,\n\t\t\t\t\t\tsource: dispatchSource,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t);\n\n\t\tif (\n\t\t\tthis.state.status !== \"running\" ||\n\t\t\tthis.abortController.signal.aborted\n\t\t) {\n\t\t\ttry {\n\t\t\t\tunlinkSync(tmpFile);\n\t\t\t} catch {\n\t\t\t\t// Ignore cleanup errors\n\t\t\t}\n\n\t\t\tthis.state.activeTasks.delete(task.id);\n\t\t\tteammate.currentTask = undefined;\n\t\t\tteammate.completedAt = Date.now();\n\n\t\t\tif (teammate.status !== \"cancelled\") {\n\t\t\t\tteammate.status =\n\t\t\t\t\tthis.state.status === \"failed\" ? \"failed\" : \"cancelled\";\n\t\t\t}\n\n\t\t\tthis.emit({\n\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammate,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst proc = spawn(\"maestro\", args, {\n\t\t\tcwd: this.state.config.cwd,\n\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t\tenv,\n\t\t});\n\n\t\tteammate.pid = proc.pid;\n\t\tthis.processes.set(teammate.id, proc);\n\n\t\tlet dispatchRecorded = false;\n\t\tconst recordDispatchOutcome = (success: boolean, reason?: string): void => {\n\t\t\tif (!dispatch || !dispatchResolution || dispatchRecorded) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdispatchRecorded = true;\n\t\t\tthis.recordTaskDispatch(\n\t\t\t\ttask,\n\t\t\t\tdispatch,\n\t\t\t\tMath.max(0, Date.now() - dispatchResolution.startedAt),\n\t\t\t\tsuccess,\n\t\t\t\t{\n\t\t\t\t\tparentMode: dispatchResolution.parentMode,\n\t\t\t\t\tparentModelProvider: dispatchResolution.parentModelProvider,\n\t\t\t\t\tteammateId: teammate.id,\n\t\t\t\t\tmodel,\n\t\t\t\t\tprovider: telemetryProvider,\n\t\t\t\t\tsource: dispatchSource,\n\t\t\t\t\tmodelOverride,\n\t\t\t\t\treason,\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tproc.once(\"spawn\", () => {\n\t\t\trecordDispatchOutcome(true);\n\t\t});\n\n\t\tlet output = \"\";\n\t\tlet errorOutput = \"\";\n\n\t\tproc.stdout?.on(\"data\", (data) => {\n\t\t\toutput += data.toString();\n\t\t});\n\n\t\tproc.stderr?.on(\"data\", (data) => {\n\t\t\terrorOutput += data.toString();\n\t\t});\n\n\t\tconst timeout = this.state.config.taskTimeout ?? DEFAULT_TASK_TIMEOUT_MS;\n\t\tconst timeoutHandle = setTimeout(() => {\n\t\t\tproc.kill(\"SIGTERM\");\n\t\t\tteammate.error = \"Task timed out\";\n\t\t}, timeout);\n\n\t\tproc.on(\"close\", (code) => {\n\t\t\tclearTimeout(timeoutHandle);\n\t\t\tthis.processes.delete(teammate.id);\n\n\t\t\t// Cleanup temp file\n\t\t\ttry {\n\t\t\t\tunlinkSync(tmpFile);\n\t\t\t} catch {\n\t\t\t\t// Ignore cleanup errors\n\t\t\t}\n\n\t\t\tconst taskId = task.id;\n\t\t\tteammate.completedAt = Date.now();\n\t\t\tteammate.currentTask = undefined;\n\t\t\tteammate.output = output;\n\n\t\t\tthis.state.activeTasks.delete(taskId);\n\n\t\t\tif (\n\t\t\t\tthis.state.status === \"cancelled\" ||\n\t\t\t\tteammate.status === \"cancelled\"\n\t\t\t) {\n\t\t\t\tteammate.status = \"cancelled\";\n\t\t\t\tthis.emit({\n\t\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\tteammate,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (code === 0 && !teammate.error) {\n\t\t\t\tteammate.status = \"completed\";\n\t\t\t\tteammate.completedTasks.push(taskId);\n\t\t\t\tthis.state.completedTasks.add(taskId);\n\t\t\t\tthis.emit({\n\t\t\t\t\ttype: \"task_complete\",\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\tteammateId: teammate.id,\n\t\t\t\t\ttaskId,\n\t\t\t\t\toutput,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tteammate.status = \"failed\";\n\t\t\t\tteammate.error = teammate.error || errorOutput || `Exit code ${code}`;\n\t\t\t\tthis.state.failedTasks.add(taskId);\n\t\t\t\tthis.emit({\n\t\t\t\t\ttype: \"task_fail\",\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\tteammateId: teammate.id,\n\t\t\t\t\ttaskId,\n\t\t\t\t\terror: teammate.error,\n\t\t\t\t});\n\n\t\t\t\t// Stop swarm if not continuing on failure\n\t\t\t\tif (!this.state.config.continueOnFailure) {\n\t\t\t\t\tthis.state.status = \"failed\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.emit({\n\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammate,\n\t\t\t});\n\n\t\t\t// Only recycle idle teammates while the swarm still has work left.\n\t\t\tif (\n\t\t\t\tthis.state.status === \"running\" &&\n\t\t\t\t(this.state.pendingTasks.length > 0 ||\n\t\t\t\t\tthis.state.activeTasks.size > 0) &&\n\t\t\t\t(teammate.status === \"completed\" || this.state.config.continueOnFailure)\n\t\t\t) {\n\t\t\t\tteammate.status = \"pending\";\n\t\t\t\tteammate.error = undefined;\n\t\t\t}\n\t\t});\n\n\t\tproc.on(\"error\", (err) => {\n\t\t\trecordDispatchOutcome(false, \"spawn_error\");\n\t\t\tclearTimeout(timeoutHandle);\n\t\t\tthis.processes.delete(teammate.id);\n\t\t\tthis.state.activeTasks.delete(task.id);\n\n\t\t\ttry {\n\t\t\t\tunlinkSync(tmpFile);\n\t\t\t} catch {\n\t\t\t\t// Ignore cleanup errors\n\t\t\t}\n\n\t\t\tteammate.completedAt = Date.now();\n\t\t\tteammate.currentTask = undefined;\n\t\t\tteammate.output = output || errorOutput;\n\n\t\t\tif (\n\t\t\t\tthis.state.status === \"cancelled\" ||\n\t\t\t\tteammate.status === \"cancelled\"\n\t\t\t) {\n\t\t\t\tteammate.status = \"cancelled\";\n\t\t\t\tteammate.currentTask = undefined;\n\t\t\t\tthis.emit({\n\t\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\tteammate,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tteammate.status = \"failed\";\n\t\t\tteammate.error = err.message;\n\t\t\tthis.state.failedTasks.add(task.id);\n\n\t\t\tthis.emit({\n\t\t\t\ttype: \"task_fail\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammateId: teammate.id,\n\t\t\t\ttaskId: task.id,\n\t\t\t\terror: err.message,\n\t\t\t});\n\n\t\t\tif (!this.state.config.continueOnFailure) {\n\t\t\t\tthis.state.status = \"failed\";\n\t\t\t}\n\n\t\t\tthis.emit({\n\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammate,\n\t\t\t});\n\n\t\t\tif (\n\t\t\t\tthis.state.status === \"running\" &&\n\t\t\t\t(this.state.pendingTasks.length > 0 ||\n\t\t\t\t\tthis.state.activeTasks.size > 0) &&\n\t\t\t\tthis.state.config.continueOnFailure\n\t\t\t) {\n\t\t\t\tteammate.status = \"pending\";\n\t\t\t\tteammate.error = undefined;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async spawnA2ATeammate(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t\tprompt: string,\n\t\ttmpFile: string,\n\t\toptions: SwarmA2AConfig,\n\t): Promise<void> {\n\t\ttry {\n\t\t\tconst route = await this.resolveA2ATeammateRoute(teammate, task, options);\n\t\t\tconst messageId = `maestro-swarm-message-${randomUUID()}`;\n\t\t\tconst contextId = `maestro-swarm:${this.state.id}:${task.id}`;\n\t\t\tconst sent = await sendA2AMessage(route.config, {\n\t\t\t\tmessage: buildA2AUserMessage({\n\t\t\t\t\tmessageId,\n\t\t\t\t\tcontextId,\n\t\t\t\t\ttext: prompt,\n\t\t\t\t\tmetadata: this.buildA2ASwarmMessageMetadata(teammate, task, route),\n\t\t\t\t}),\n\t\t\t\tconfiguration: {\n\t\t\t\t\treturnImmediately: true,\n\t\t\t\t\tacceptedOutputModes: [\"text/plain\", \"application/json\"],\n\t\t\t\t},\n\t\t\t\tmetadata: {\n\t\t\t\t\troute: \"maestro_swarm\",\n\t\t\t\t\ttransport: \"a2a\",\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\ttaskId: task.id,\n\t\t\t\t\tteammateId: teammate.id,\n\t\t\t\t\tpeer: route.name,\n\t\t\t\t\tsource: route.source,\n\t\t\t\t},\n\t\t\t});\n\t\t\tteammate.a2a = {\n\t\t\t\tpeer: route.name,\n\t\t\t\tpeerDisplayName: route.displayName,\n\t\t\t\tsource: route.source,\n\t\t\t\ttaskId: sent.task.id,\n\t\t\t\tcontextId: sent.task.contextId ?? contextId,\n\t\t\t\tmessageId,\n\t\t\t\tskillId: route.skillId,\n\t\t\t\trole: route.role,\n\t\t\t};\n\t\t\tthis.remoteA2ATasks.set(teammate.id, {\n\t\t\t\troute,\n\t\t\t\ttaskId: sent.task.id,\n\t\t\t});\n\t\t\tawait this.recordA2ASwarmTaskStart(route, task, sent.task, {\n\t\t\t\tmessageId,\n\t\t\t\tcontextId,\n\t\t\t});\n\t\t\tif (\n\t\t\t\tthis.state.status === \"cancelled\" ||\n\t\t\t\tthis.abortController.signal.aborted\n\t\t\t) {\n\t\t\t\tawait this.cancelRemoteA2ATask(teammate.id, {\n\t\t\t\t\troute,\n\t\t\t\t\ttaskId: sent.task.id,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst remoteTask = await this.waitForA2ASwarmTask(\n\t\t\t\troute.config,\n\t\t\t\tsent.task,\n\t\t\t\toptions,\n\t\t\t);\n\t\t\tawait this.updateA2ASwarmTaskLedger(route, remoteTask);\n\t\t\tthis.completeA2ATeammate(teammate, task, remoteTask, route);\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\tthis.state.status !== \"cancelled\" &&\n\t\t\t\t!this.abortController.signal.aborted\n\t\t\t) {\n\t\t\t\tconst remoteTask = this.remoteA2ATasks.get(teammate.id);\n\t\t\t\tif (remoteTask) {\n\t\t\t\t\tawait this.cancelRemoteA2ATask(teammate.id, remoteTask);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.failA2ATeammate(teammate, task, error);\n\t\t} finally {\n\t\t\tthis.remoteA2ATasks.delete(teammate.id);\n\t\t\ttry {\n\t\t\t\tunlinkSync(tmpFile);\n\t\t\t} catch {\n\t\t\t\t// Ignore cleanup errors\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate buildA2ASwarmMessageMetadata(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t\troute: A2ATeammateRoute,\n\t): Record<string, unknown> {\n\t\tconst currentDelegationId = `${this.state.id}:${task.id}`;\n\t\tconst lineage = {\n\t\t\trootDelegationId: this.state.id,\n\t\t\t...(this.state.config.parentSessionId\n\t\t\t\t? { parentDelegationId: this.state.config.parentSessionId }\n\t\t\t\t: {}),\n\t\t\tcurrentDelegationId,\n\t\t\tdelegationChain: [this.state.id, currentDelegationId],\n\t\t\tdelegationChainDepth: 1,\n\t\t\tmaxDelegationChainDepth: 1,\n\t\t};\n\t\tconst subagentRequest = route.skillId\n\t\t\t? {\n\t\t\t\t\tskillId: route.skillId,\n\t\t\t\t\trole: route.role,\n\t\t\t\t\tcwd: this.state.config.cwd,\n\t\t\t\t\ttaskId: task.id,\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t}\n\t\t\t: undefined;\n\t\treturn {\n\t\t\trequestKind: \"maestro-swarm-task\",\n\t\t\ttransport: \"a2a\",\n\t\t\trelayPeer: route.name,\n\t\t\tswarmId: this.state.id,\n\t\t\tteammateId: teammate.id,\n\t\t\tteammateName: teammate.name,\n\t\t\ttaskId: task.id,\n\t\t\t...(route.skillId ? { a2aSkillId: route.skillId } : {}),\n\t\t\t...(task.files?.length ? { files: task.files } : {}),\n\t\t\tswarm: lineage,\n\t\t\tevalops: {\n\t\t\t\tswarm: lineage,\n\t\t\t\ttransport: \"a2a\",\n\t\t\t\tpeer: route.name,\n\t\t\t},\n\t\t\t...(subagentRequest\n\t\t\t\t? { \"evalops.subagentRequest\": subagentRequest }\n\t\t\t\t: {}),\n\t\t};\n\t}\n\n\tprivate async waitForA2ASwarmTask(\n\t\tconfig: A2AServiceConfig,\n\t\tinitialTask: A2ATask,\n\t\toptions: SwarmA2AConfig,\n\t): Promise<A2ATask> {\n\t\tconst maxWaitMs =\n\t\t\toptions.maxWaitMs ??\n\t\t\tthis.state.config.taskTimeout ??\n\t\t\tDEFAULT_TASK_TIMEOUT_MS;\n\t\tconst pollIntervalMs =\n\t\t\toptions.pollIntervalMs ?? DEFAULT_A2A_POLL_INTERVAL_MS;\n\t\tconst deadline = Date.now() + maxWaitMs;\n\t\tlet task = initialTask;\n\t\twhile (\n\t\t\t!isTerminalA2AState(task.status.state) &&\n\t\t\tDate.now() < deadline &&\n\t\t\t!this.abortController.signal.aborted\n\t\t) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n\t\t\ttask = await getA2ATask(config, task.id, {\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t});\n\t\t}\n\t\tif (!isTerminalA2AState(task.status.state)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Timed out waiting for remote A2A task ${task.id}; last state ${task.status.state}`,\n\t\t\t);\n\t\t}\n\t\treturn task;\n\t}\n\n\tprivate completeA2ATeammate(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t\tremoteTask: A2ATask,\n\t\troute: A2ATeammateRoute,\n\t): void {\n\t\tthis.state.activeTasks.delete(task.id);\n\t\tteammate.completedAt = Date.now();\n\t\tteammate.currentTask = undefined;\n\t\tteammate.output =\n\t\t\textractA2ATaskText(remoteTask) ??\n\t\t\t`Remote A2A task ${remoteTask.id} finished with ${remoteTask.status.state}`;\n\t\tif (this.state.status === \"cancelled\" || teammate.status === \"cancelled\") {\n\t\t\tteammate.status = \"cancelled\";\n\t\t\tthis.emit({\n\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammate,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (a2aStateCompleted(remoteTask.status.state)) {\n\t\t\tteammate.status = \"completed\";\n\t\t\tteammate.completedTasks.push(task.id);\n\t\t\tthis.state.completedTasks.add(task.id);\n\t\t\tthis.emit({\n\t\t\t\ttype: \"task_complete\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammateId: teammate.id,\n\t\t\t\ttaskId: task.id,\n\t\t\t\toutput: teammate.output,\n\t\t\t});\n\t\t} else {\n\t\t\tteammate.status = \"failed\";\n\t\t\tteammate.error = `Remote A2A task ${remoteTask.id} on ${route.name} ended in ${remoteTask.status.state}`;\n\t\t\tthis.state.failedTasks.add(task.id);\n\t\t\tthis.emit({\n\t\t\t\ttype: \"task_fail\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammateId: teammate.id,\n\t\t\t\ttaskId: task.id,\n\t\t\t\terror: teammate.error,\n\t\t\t});\n\t\t\tif (!this.state.config.continueOnFailure) {\n\t\t\t\tthis.state.status = \"failed\";\n\t\t\t}\n\t\t}\n\t\tthis.emit({\n\t\t\ttype: \"teammate_complete\",\n\t\t\tswarmId: this.state.id,\n\t\t\tteammate,\n\t\t});\n\t\tif (\n\t\t\tthis.state.status === \"running\" &&\n\t\t\t(this.state.pendingTasks.length > 0 || this.state.activeTasks.size > 0) &&\n\t\t\t(teammate.status === \"completed\" || this.state.config.continueOnFailure)\n\t\t) {\n\t\t\tteammate.status = \"pending\";\n\t\t\tteammate.error = undefined;\n\t\t}\n\t}\n\n\tprivate failA2ATeammate(\n\t\tteammate: SwarmTeammate,\n\t\ttask: SwarmTask,\n\t\terror: unknown,\n\t): void {\n\t\tthis.state.activeTasks.delete(task.id);\n\t\tteammate.completedAt = Date.now();\n\t\tteammate.currentTask = undefined;\n\t\tif (this.state.status === \"cancelled\" || teammate.status === \"cancelled\") {\n\t\t\tteammate.status = \"cancelled\";\n\t\t\tthis.emit({\n\t\t\t\ttype: \"teammate_complete\",\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tteammate,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (teammate.a2a && !this.remoteA2ATasks.has(teammate.id)) {\n\t\t\tteammate.a2a = undefined;\n\t\t}\n\t\tteammate.status = \"failed\";\n\t\tteammate.error = error instanceof Error ? error.message : String(error);\n\t\tthis.state.failedTasks.add(task.id);\n\t\tthis.emit({\n\t\t\ttype: \"task_fail\",\n\t\t\tswarmId: this.state.id,\n\t\t\tteammateId: teammate.id,\n\t\t\ttaskId: task.id,\n\t\t\terror: teammate.error,\n\t\t});\n\t\tif (!this.state.config.continueOnFailure) {\n\t\t\tthis.state.status = \"failed\";\n\t\t}\n\t\tthis.emit({\n\t\t\ttype: \"teammate_complete\",\n\t\t\tswarmId: this.state.id,\n\t\t\tteammate,\n\t\t});\n\n\t\tif (\n\t\t\tthis.state.status === \"running\" &&\n\t\t\t(this.state.pendingTasks.length > 0 || this.state.activeTasks.size > 0) &&\n\t\t\tthis.state.config.continueOnFailure\n\t\t) {\n\t\t\tteammate.status = \"pending\";\n\t\t\tteammate.error = undefined;\n\t\t\tteammate.a2a = undefined;\n\t\t}\n\t}\n\n\tprivate async recordA2ASwarmTaskStart(\n\t\troute: A2ATeammateRoute,\n\t\ttask: SwarmTask,\n\t\tremoteTask: A2ATask,\n\t\tids: { messageId: string; contextId: string },\n\t): Promise<void> {\n\t\ttry {\n\t\t\tawait recordA2ATaskStart({\n\t\t\t\tpath: route.tasksPath,\n\t\t\t\tpeer: route.name,\n\t\t\t\tpeerDisplayName: route.displayName,\n\t\t\t\ttask: remoteTask,\n\t\t\t\ttext: task.prompt,\n\t\t\t\tmessageId: ids.messageId,\n\t\t\t\tcontextId: remoteTask.contextId ?? ids.contextId,\n\t\t\t\tkind: \"delegation\",\n\t\t\t\trole: route.role,\n\t\t\t\tcwd: this.state.config.cwd,\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestKind: \"maestro-swarm-task\",\n\t\t\t\t\trelayPeer: route.name,\n\t\t\t\t\tswarmId: this.state.id,\n\t\t\t\t\ttaskId: task.id,\n\t\t\t\t\ttransport: \"a2a\",\n\t\t\t\t\tsource: route.source,\n\t\t\t\t\ta2aSkillId: route.skillId,\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Failed to record remote A2A swarm task in local ledger\", {\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\ttaskId: task.id,\n\t\t\t\tpeer: route.name,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate async updateA2ASwarmTaskLedger(\n\t\troute: A2ATeammateRoute,\n\t\tremoteTask: A2ATask,\n\t): Promise<void> {\n\t\ttry {\n\t\t\tawait updateA2ATaskInLedger({\n\t\t\t\tpath: route.tasksPath,\n\t\t\t\tpeer: route.name,\n\t\t\t\ttask: remoteTask,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Failed to update remote A2A swarm task in local ledger\", {\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tswarmId: this.state.id,\n\t\t\t\tremoteTaskId: remoteTask.id,\n\t\t\t\tpeer: route.name,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Wait for any active task to complete.\n\t */\n\tprivate waitForAnyCompletion(): Promise<void> {\n\t\tconst initialActiveCount = this.state.activeTasks.size;\n\t\treturn new Promise((resolve) => {\n\t\t\tconst checkInterval = setInterval(() => {\n\t\t\t\t// Resolve as soon as at least one active task exits or the swarm stops.\n\t\t\t\tif (\n\t\t\t\t\tthis.state.activeTasks.size < initialActiveCount ||\n\t\t\t\t\tthis.state.status !== \"running\"\n\t\t\t\t) {\n\t\t\t\t\tclearInterval(checkInterval);\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t});\n\t}\n}\n\nfunction platformA2ACandidateMatchesPeer(\n\tcandidate: PlatformAgentRegistryA2APeerCandidate,\n\tpeer: string,\n): boolean {\n\tconst selector = normalizePeerSelector(peer);\n\tconst selectorBaseUrl = normalizePeerBaseUrl(peer);\n\tif (!selector) {\n\t\treturn false;\n\t}\n\tconst values = [\n\t\tcandidate.agent.id,\n\t\tcandidate.agent.name,\n\t\tcandidate.endpointUrl,\n\t\tcandidate.agentCardUrl,\n\t];\n\treturn values.some((value) => {\n\t\tconst candidateSelector = normalizePeerSelector(value);\n\t\tif (candidateSelector && candidateSelector === selector) {\n\t\t\treturn true;\n\t\t}\n\t\tconst candidateBaseUrl = normalizePeerBaseUrl(value);\n\t\treturn Boolean(\n\t\t\tselectorBaseUrl &&\n\t\t\t\tcandidateBaseUrl &&\n\t\t\t\tcandidateBaseUrl === selectorBaseUrl,\n\t\t);\n\t});\n}\n\nfunction normalizePeerSelector(value: string | undefined): string | undefined {\n\treturn trimString(value)?.toLowerCase();\n}\n\nfunction normalizePeerBaseUrl(value: string | undefined): string | undefined {\n\tconst trimmed = trimString(value);\n\treturn trimmed ? normalizeA2ABaseUrl(trimmed).toLowerCase() : undefined;\n}\n\n/**\n * Create and execute a swarm.\n */\nexport async function executeSwarm(\n\tconfig: SwarmConfig,\n\tonEvent?: SwarmEventHandler,\n): Promise<SwarmState> {\n\tconst executor = new SwarmExecutor(config);\n\tif (onEvent) {\n\t\texecutor.onEvent(onEvent);\n\t}\n\treturn executor.execute();\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import type { SwarmEvent } from "./types.js";
2
+ export interface SwarmRuntimeEvent {
3
+ event: SwarmEvent;
4
+ parentSessionId?: string;
5
+ cwd: string;
6
+ planFile: string;
7
+ }
8
+ export type SwarmRuntimeEventHandler = (event: SwarmRuntimeEvent) => void;
9
+ export declare function subscribeSwarmRuntimeEvents(handler: SwarmRuntimeEventHandler): () => void;
10
+ export declare function publishSwarmRuntimeEvent(event: SwarmRuntimeEvent): void;
11
+ //# sourceMappingURL=runtime-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-events.d.ts","sourceRoot":"","sources":["../../../src/agent/swarm/runtime-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAI1E,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,wBAAwB,GAC/B,MAAM,IAAI,CAKZ;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAcvE"}
@@ -0,0 +1,26 @@
1
+ import { createLogger } from "../../utils/logger.js";
2
+ const logger = createLogger("agent:swarm:runtime-events");
3
+ const runtimeEventHandlers = new Set();
4
+ export function subscribeSwarmRuntimeEvents(handler) {
5
+ runtimeEventHandlers.add(handler);
6
+ return () => {
7
+ runtimeEventHandlers.delete(handler);
8
+ };
9
+ }
10
+ export function publishSwarmRuntimeEvent(event) {
11
+ for (const handler of runtimeEventHandlers) {
12
+ try {
13
+ handler(event);
14
+ }
15
+ catch (error) {
16
+ logger.warn("Swarm runtime event handler failed", {
17
+ error: error instanceof Error ? error.message : String(error),
18
+ parentSessionId: event.parentSessionId,
19
+ planFile: event.planFile,
20
+ swarmId: event.event.swarmId,
21
+ eventType: event.event.type,
22
+ });
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=runtime-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-events.js","sourceRoot":"","sources":["../../../src/agent/swarm/runtime-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,MAAM,GAAG,YAAY,CAAC,4BAA4B,CAAC,CAAC;AAW1D,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEjE,MAAM,UAAU,2BAA2B,CAC1C,OAAiC;IAEjC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,GAAG,EAAE;QACX,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAwB;IAChE,KAAK,MAAM,OAAO,IAAI,oBAAoB,EAAE,CAAC;QAC5C,IAAI,CAAC;YACJ,OAAO,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;gBACjD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;gBAC5B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;aAC3B,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;AACF,CAAC","sourcesContent":["import { createLogger } from \"../../utils/logger.js\";\nimport type { SwarmEvent } from \"./types.js\";\n\nconst logger = createLogger(\"agent:swarm:runtime-events\");\n\nexport interface SwarmRuntimeEvent {\n\tevent: SwarmEvent;\n\tparentSessionId?: string;\n\tcwd: string;\n\tplanFile: string;\n}\n\nexport type SwarmRuntimeEventHandler = (event: SwarmRuntimeEvent) => void;\n\nconst runtimeEventHandlers = new Set<SwarmRuntimeEventHandler>();\n\nexport function subscribeSwarmRuntimeEvents(\n\thandler: SwarmRuntimeEventHandler,\n): () => void {\n\truntimeEventHandlers.add(handler);\n\treturn () => {\n\t\truntimeEventHandlers.delete(handler);\n\t};\n}\n\nexport function publishSwarmRuntimeEvent(event: SwarmRuntimeEvent): void {\n\tfor (const handler of runtimeEventHandlers) {\n\t\ttry {\n\t\t\thandler(event);\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Swarm runtime event handler failed\", {\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tparentSessionId: event.parentSessionId,\n\t\t\t\tplanFile: event.planFile,\n\t\t\t\tswarmId: event.event.swarmId,\n\t\t\t\teventType: event.event.type,\n\t\t\t});\n\t\t}\n\t}\n}\n"]}
@@ -4,6 +4,8 @@
4
4
  * Type definitions for the swarm execution system that enables
5
5
  * parallel agent execution for implementing plans.
6
6
  */
7
+ import type { AgentMode, ModelProvider, ReasoningEffort } from "../modes.js";
8
+ import type { SubagentType } from "../subagent-specs.js";
7
9
  /**
8
10
  * Status of a swarm teammate.
9
11
  */
@@ -22,6 +24,12 @@ export interface SwarmTask {
22
24
  dependsOn?: string[];
23
25
  /** Optional model override for this task */
24
26
  model?: string;
27
+ /** Optional subagent type used for mode-level model dispatch */
28
+ subagentType?: SubagentType;
29
+ /** Optional A2A peer override when the swarm uses remote transport */
30
+ a2aPeer?: string;
31
+ /** Optional A2A skill override when the task maps to a remote Maestro lane */
32
+ a2aSkillId?: string;
25
33
  /** Priority (higher = earlier execution when no dependencies) */
26
34
  priority?: number;
27
35
  }
@@ -41,6 +49,8 @@ export interface SwarmTeammate {
41
49
  completedTasks: string[];
42
50
  /** Process ID if running as subprocess */
43
51
  pid?: number;
52
+ /** Remote A2A task correlation when this teammate runs on a peer */
53
+ a2a?: SwarmA2ATeammateExecution;
44
54
  /** Start timestamp */
45
55
  startedAt?: number;
46
56
  /** Completion timestamp */
@@ -66,6 +76,18 @@ export interface SwarmConfig {
66
76
  parentSessionId?: string;
67
77
  /** Model to use for teammates (defaults to parent's model) */
68
78
  model?: string;
79
+ /** Agent mode used to resolve subagent model dispatch */
80
+ mode?: AgentMode;
81
+ /** Parent model provider used when dispatch falls back to a model tier */
82
+ modelProvider?: ModelProvider;
83
+ /** Default subagent type for teammate tasks without their own type */
84
+ subagentType?: SubagentType;
85
+ /** Default reasoning hint for teammate tasks */
86
+ reasoningEffort?: ReasoningEffort;
87
+ /** Execution transport for teammates; local preserves subprocess behavior. */
88
+ transport?: "local" | "a2a";
89
+ /** Remote A2A routing options for Platform-discovered or registry peers. */
90
+ a2a?: SwarmA2AConfig;
69
91
  /** Maximum time per task in milliseconds */
70
92
  taskTimeout?: number;
71
93
  /** Whether to continue on individual task failures */
@@ -73,6 +95,62 @@ export interface SwarmConfig {
73
95
  /** Git branch to work on (creates if doesn't exist) */
74
96
  gitBranch?: string;
75
97
  }
98
+ /**
99
+ * Configuration for remote A2A-backed swarm teammates.
100
+ */
101
+ export interface SwarmA2AConfig {
102
+ /** Named peers from the local A2A registry, used round-robin. */
103
+ peers?: string[];
104
+ /** Override for the local A2A peer registry path. */
105
+ registryPath?: string;
106
+ /** Override for the local A2A task ledger path. */
107
+ tasksPath?: string;
108
+ /** Default remote A2A skill id. */
109
+ skillId?: string;
110
+ /** Optional delegation role shown in task ledger metadata. */
111
+ role?: string;
112
+ /** Discover remote peers from Platform Agent Registry instead of local peers. */
113
+ discover?: boolean;
114
+ /** Platform workspace id for discovery. */
115
+ workspaceId?: string;
116
+ /** Capability filter for Platform discovery. */
117
+ capability?: string;
118
+ /** Surface filter for Platform discovery. Defaults to a2a. */
119
+ surface?: string;
120
+ /** Prefer internal endpoints returned by Platform Agent Registry. */
121
+ preferInternalEndpoint?: boolean;
122
+ /** Maximum Platform candidates to consider. */
123
+ limit?: number;
124
+ /** Timeout for individual A2A HTTP calls. */
125
+ timeoutMs?: number;
126
+ /** Max attempts for individual A2A HTTP calls. */
127
+ maxAttempts?: number;
128
+ /** Max time to wait for a remote task to reach terminal state. */
129
+ maxWaitMs?: number;
130
+ /** Poll interval while waiting for remote task state. */
131
+ pollIntervalMs?: number;
132
+ }
133
+ /**
134
+ * Public, non-secret correlation metadata for a remote A2A swarm teammate.
135
+ */
136
+ export interface SwarmA2ATeammateExecution {
137
+ /** Peer selected for this teammate task. */
138
+ peer: string;
139
+ /** Optional human-readable peer label. */
140
+ peerDisplayName?: string;
141
+ /** Peer source used by the router. */
142
+ source: "registry" | "platform-agent-registry";
143
+ /** A2A task id returned by the peer. */
144
+ taskId: string;
145
+ /** A2A context id used for resume/reply. */
146
+ contextId?: string;
147
+ /** A2A message id sent by the coordinator. */
148
+ messageId: string;
149
+ /** A2A skill id used for remote routing. */
150
+ skillId?: string;
151
+ /** Delegation role recorded for the remote task. */
152
+ role?: string;
153
+ }
76
154
  /**
77
155
  * Status of the overall swarm execution.
78
156
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/swarm/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/swarm/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent/swarm/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\n * Swarm Mode Types\n *\n * Type definitions for the swarm execution system that enables\n * parallel agent execution for implementing plans.\n */\n\n/**\n * Status of a swarm teammate.\n */\nexport type TeammateStatus =\n\t| \"pending\"\n\t| \"running\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\n/**\n * A single task assigned to a teammate in the swarm.\n */\nexport interface SwarmTask {\n\t/** Unique task identifier */\n\tid: string;\n\t/** Task description/prompt for the teammate */\n\tprompt: string;\n\t/** Files relevant to this task */\n\tfiles?: string[];\n\t/** Dependencies on other task IDs (must complete first) */\n\tdependsOn?: string[];\n\t/** Optional model override for this task */\n\tmodel?: string;\n\t/** Priority (higher = earlier execution when no dependencies) */\n\tpriority?: number;\n}\n\n/**\n * A teammate in the swarm - an individual agent working on tasks.\n */\nexport interface SwarmTeammate {\n\t/** Unique teammate identifier */\n\tid: string;\n\t/** Display name for the teammate */\n\tname: string;\n\t/** Current status */\n\tstatus: TeammateStatus;\n\t/** Currently assigned task */\n\tcurrentTask?: SwarmTask;\n\t/** Tasks completed by this teammate */\n\tcompletedTasks: string[];\n\t/** Process ID if running as subprocess */\n\tpid?: number;\n\t/** Start timestamp */\n\tstartedAt?: number;\n\t/** Completion timestamp */\n\tcompletedAt?: number;\n\t/** Error message if failed */\n\terror?: string;\n\t/** Output/results from the teammate */\n\toutput?: string;\n}\n\n/**\n * Configuration for launching a swarm.\n */\nexport interface SwarmConfig {\n\t/** Number of teammates to spawn (1-10) */\n\tteammateCount: number;\n\t/** Plan file path to implement */\n\tplanFile: string;\n\t/** Tasks to distribute among teammates */\n\ttasks: SwarmTask[];\n\t/** Working directory for all teammates */\n\tcwd: string;\n\t/** Session ID of the parent session */\n\tparentSessionId?: string;\n\t/** Model to use for teammates (defaults to parent's model) */\n\tmodel?: string;\n\t/** Maximum time per task in milliseconds */\n\ttaskTimeout?: number;\n\t/** Whether to continue on individual task failures */\n\tcontinueOnFailure?: boolean;\n\t/** Git branch to work on (creates if doesn't exist) */\n\tgitBranch?: string;\n}\n\n/**\n * Status of the overall swarm execution.\n */\nexport type SwarmStatus =\n\t| \"initializing\"\n\t| \"running\"\n\t| \"completing\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\n/**\n * State of the swarm execution.\n */\nexport interface SwarmState {\n\t/** Unique swarm execution ID */\n\tid: string;\n\t/** Current status */\n\tstatus: SwarmStatus;\n\t/** Configuration used to launch */\n\tconfig: SwarmConfig;\n\t/** All teammates in the swarm */\n\tteammates: SwarmTeammate[];\n\t/** Tasks pending assignment */\n\tpendingTasks: SwarmTask[];\n\t/** Tasks currently being worked on */\n\tactiveTasks: Map<string, string>; // taskId -> teammateId\n\t/** Completed task IDs */\n\tcompletedTasks: Set<string>;\n\t/** Failed task IDs */\n\tfailedTasks: Set<string>;\n\t/** Start timestamp */\n\tstartedAt: number;\n\t/** Completion timestamp */\n\tcompletedAt?: number;\n\t/** Error message if swarm failed */\n\terror?: string;\n}\n\n/**\n * Event emitted during swarm execution.\n */\nexport type SwarmEvent =\n\t| { type: \"swarm_start\"; swarmId: string; config: SwarmConfig }\n\t| { type: \"teammate_spawn\"; swarmId: string; teammate: SwarmTeammate }\n\t| {\n\t\t\ttype: \"task_start\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttask: SwarmTask;\n\t }\n\t| {\n\t\t\ttype: \"task_complete\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttaskId: string;\n\t\t\toutput: string;\n\t }\n\t| {\n\t\t\ttype: \"task_fail\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttaskId: string;\n\t\t\terror: string;\n\t }\n\t| {\n\t\t\ttype: \"teammate_complete\";\n\t\t\tswarmId: string;\n\t\t\tteammate: SwarmTeammate;\n\t }\n\t| { type: \"swarm_complete\"; swarmId: string; state: SwarmState }\n\t| { type: \"swarm_fail\"; swarmId: string; error: string };\n\n/**\n * Callback for swarm events.\n */\nexport type SwarmEventHandler = (event: SwarmEvent) => void;\n\n/**\n * Result of parsing a plan file into tasks.\n */\nexport interface ParsedPlan {\n\t/** Plan title/name */\n\ttitle: string;\n\t/** Extracted tasks */\n\ttasks: SwarmTask[];\n\t/** Raw plan content */\n\tcontent: string;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent/swarm/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\n * Swarm Mode Types\n *\n * Type definitions for the swarm execution system that enables\n * parallel agent execution for implementing plans.\n */\n\nimport type { AgentMode, ModelProvider, ReasoningEffort } from \"../modes.js\";\nimport type { SubagentType } from \"../subagent-specs.js\";\n\n/**\n * Status of a swarm teammate.\n */\nexport type TeammateStatus =\n\t| \"pending\"\n\t| \"running\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\n/**\n * A single task assigned to a teammate in the swarm.\n */\nexport interface SwarmTask {\n\t/** Unique task identifier */\n\tid: string;\n\t/** Task description/prompt for the teammate */\n\tprompt: string;\n\t/** Files relevant to this task */\n\tfiles?: string[];\n\t/** Dependencies on other task IDs (must complete first) */\n\tdependsOn?: string[];\n\t/** Optional model override for this task */\n\tmodel?: string;\n\t/** Optional subagent type used for mode-level model dispatch */\n\tsubagentType?: SubagentType;\n\t/** Optional A2A peer override when the swarm uses remote transport */\n\ta2aPeer?: string;\n\t/** Optional A2A skill override when the task maps to a remote Maestro lane */\n\ta2aSkillId?: string;\n\t/** Priority (higher = earlier execution when no dependencies) */\n\tpriority?: number;\n}\n\n/**\n * A teammate in the swarm - an individual agent working on tasks.\n */\nexport interface SwarmTeammate {\n\t/** Unique teammate identifier */\n\tid: string;\n\t/** Display name for the teammate */\n\tname: string;\n\t/** Current status */\n\tstatus: TeammateStatus;\n\t/** Currently assigned task */\n\tcurrentTask?: SwarmTask;\n\t/** Tasks completed by this teammate */\n\tcompletedTasks: string[];\n\t/** Process ID if running as subprocess */\n\tpid?: number;\n\t/** Remote A2A task correlation when this teammate runs on a peer */\n\ta2a?: SwarmA2ATeammateExecution;\n\t/** Start timestamp */\n\tstartedAt?: number;\n\t/** Completion timestamp */\n\tcompletedAt?: number;\n\t/** Error message if failed */\n\terror?: string;\n\t/** Output/results from the teammate */\n\toutput?: string;\n}\n\n/**\n * Configuration for launching a swarm.\n */\nexport interface SwarmConfig {\n\t/** Number of teammates to spawn (1-10) */\n\tteammateCount: number;\n\t/** Plan file path to implement */\n\tplanFile: string;\n\t/** Tasks to distribute among teammates */\n\ttasks: SwarmTask[];\n\t/** Working directory for all teammates */\n\tcwd: string;\n\t/** Session ID of the parent session */\n\tparentSessionId?: string;\n\t/** Model to use for teammates (defaults to parent's model) */\n\tmodel?: string;\n\t/** Agent mode used to resolve subagent model dispatch */\n\tmode?: AgentMode;\n\t/** Parent model provider used when dispatch falls back to a model tier */\n\tmodelProvider?: ModelProvider;\n\t/** Default subagent type for teammate tasks without their own type */\n\tsubagentType?: SubagentType;\n\t/** Default reasoning hint for teammate tasks */\n\treasoningEffort?: ReasoningEffort;\n\t/** Execution transport for teammates; local preserves subprocess behavior. */\n\ttransport?: \"local\" | \"a2a\";\n\t/** Remote A2A routing options for Platform-discovered or registry peers. */\n\ta2a?: SwarmA2AConfig;\n\t/** Maximum time per task in milliseconds */\n\ttaskTimeout?: number;\n\t/** Whether to continue on individual task failures */\n\tcontinueOnFailure?: boolean;\n\t/** Git branch to work on (creates if doesn't exist) */\n\tgitBranch?: string;\n}\n\n/**\n * Configuration for remote A2A-backed swarm teammates.\n */\nexport interface SwarmA2AConfig {\n\t/** Named peers from the local A2A registry, used round-robin. */\n\tpeers?: string[];\n\t/** Override for the local A2A peer registry path. */\n\tregistryPath?: string;\n\t/** Override for the local A2A task ledger path. */\n\ttasksPath?: string;\n\t/** Default remote A2A skill id. */\n\tskillId?: string;\n\t/** Optional delegation role shown in task ledger metadata. */\n\trole?: string;\n\t/** Discover remote peers from Platform Agent Registry instead of local peers. */\n\tdiscover?: boolean;\n\t/** Platform workspace id for discovery. */\n\tworkspaceId?: string;\n\t/** Capability filter for Platform discovery. */\n\tcapability?: string;\n\t/** Surface filter for Platform discovery. Defaults to a2a. */\n\tsurface?: string;\n\t/** Prefer internal endpoints returned by Platform Agent Registry. */\n\tpreferInternalEndpoint?: boolean;\n\t/** Maximum Platform candidates to consider. */\n\tlimit?: number;\n\t/** Timeout for individual A2A HTTP calls. */\n\ttimeoutMs?: number;\n\t/** Max attempts for individual A2A HTTP calls. */\n\tmaxAttempts?: number;\n\t/** Max time to wait for a remote task to reach terminal state. */\n\tmaxWaitMs?: number;\n\t/** Poll interval while waiting for remote task state. */\n\tpollIntervalMs?: number;\n}\n\n/**\n * Public, non-secret correlation metadata for a remote A2A swarm teammate.\n */\nexport interface SwarmA2ATeammateExecution {\n\t/** Peer selected for this teammate task. */\n\tpeer: string;\n\t/** Optional human-readable peer label. */\n\tpeerDisplayName?: string;\n\t/** Peer source used by the router. */\n\tsource: \"registry\" | \"platform-agent-registry\";\n\t/** A2A task id returned by the peer. */\n\ttaskId: string;\n\t/** A2A context id used for resume/reply. */\n\tcontextId?: string;\n\t/** A2A message id sent by the coordinator. */\n\tmessageId: string;\n\t/** A2A skill id used for remote routing. */\n\tskillId?: string;\n\t/** Delegation role recorded for the remote task. */\n\trole?: string;\n}\n\n/**\n * Status of the overall swarm execution.\n */\nexport type SwarmStatus =\n\t| \"initializing\"\n\t| \"running\"\n\t| \"completing\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\n/**\n * State of the swarm execution.\n */\nexport interface SwarmState {\n\t/** Unique swarm execution ID */\n\tid: string;\n\t/** Current status */\n\tstatus: SwarmStatus;\n\t/** Configuration used to launch */\n\tconfig: SwarmConfig;\n\t/** All teammates in the swarm */\n\tteammates: SwarmTeammate[];\n\t/** Tasks pending assignment */\n\tpendingTasks: SwarmTask[];\n\t/** Tasks currently being worked on */\n\tactiveTasks: Map<string, string>; // taskId -> teammateId\n\t/** Completed task IDs */\n\tcompletedTasks: Set<string>;\n\t/** Failed task IDs */\n\tfailedTasks: Set<string>;\n\t/** Start timestamp */\n\tstartedAt: number;\n\t/** Completion timestamp */\n\tcompletedAt?: number;\n\t/** Error message if swarm failed */\n\terror?: string;\n}\n\n/**\n * Event emitted during swarm execution.\n */\nexport type SwarmEvent =\n\t| { type: \"swarm_start\"; swarmId: string; config: SwarmConfig }\n\t| { type: \"teammate_spawn\"; swarmId: string; teammate: SwarmTeammate }\n\t| {\n\t\t\ttype: \"task_start\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttask: SwarmTask;\n\t }\n\t| {\n\t\t\ttype: \"task_complete\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttaskId: string;\n\t\t\toutput: string;\n\t }\n\t| {\n\t\t\ttype: \"task_fail\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttaskId: string;\n\t\t\terror: string;\n\t }\n\t| {\n\t\t\ttype: \"teammate_complete\";\n\t\t\tswarmId: string;\n\t\t\tteammate: SwarmTeammate;\n\t }\n\t| { type: \"swarm_complete\"; swarmId: string; state: SwarmState }\n\t| { type: \"swarm_fail\"; swarmId: string; error: string };\n\n/**\n * Callback for swarm events.\n */\nexport type SwarmEventHandler = (event: SwarmEvent) => void;\n\n/**\n * Result of parsing a plan file into tasks.\n */\nexport interface ParsedPlan {\n\t/** Plan title/name */\n\ttitle: string;\n\t/** Extracted tasks */\n\ttasks: SwarmTask[];\n\t/** Raw plan content */\n\tcontent: string;\n}\n"]}
@@ -88,7 +88,7 @@ export declare function traceToolCall<T>(context: ToolCallContext, operation: (s
88
88
  */
89
89
  export declare function traceLlmRequest<T>(context: LlmRequestContext, operation: (span: Span | null) => Promise<T>): Promise<T>;
90
90
  /**
91
- * Records usage metrics on an existing span.
91
+ * Records usage attributes on an existing span.
92
92
  */
93
93
  export declare function recordUsageOnSpan(span: Span | null, usage: Usage): void;
94
94
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/agent/tracing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/agent/tracing.ts"],"names":[],"mappings":"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"}
@@ -127,11 +127,16 @@ export async function traceToolCall(context, operation) {
127
127
  "tool.call_id": context.toolCallId,
128
128
  "tool.input_size": context.inputSize,
129
129
  }, async (span) => {
130
- const result = await operation(span);
131
- if (span) {
132
- span.setAttribute("tool.duration_ms", performance.now() - startTime);
130
+ try {
131
+ const result = await operation(span);
132
+ return result;
133
+ }
134
+ finally {
135
+ const durationMs = performance.now() - startTime;
136
+ if (span) {
137
+ span.setAttribute("tool.duration_ms", durationMs);
138
+ }
133
139
  }
134
- return result;
135
140
  });
136
141
  }
137
142
  /**
@@ -163,15 +168,18 @@ export async function traceLlmRequest(context, operation) {
163
168
  "llm.output_tokens": context.outputTokens,
164
169
  "llm.thinking_tokens": context.thinkingTokens,
165
170
  }, async (span) => {
166
- const result = await operation(span);
167
- if (span) {
168
- span.setAttribute("llm.duration_ms", performance.now() - startTime);
171
+ try {
172
+ return await operation(span);
173
+ }
174
+ finally {
175
+ if (span) {
176
+ span.setAttribute("llm.duration_ms", performance.now() - startTime);
177
+ }
169
178
  }
170
- return result;
171
179
  });
172
180
  }
173
181
  /**
174
- * Records usage metrics on an existing span.
182
+ * Records usage attributes on an existing span.
175
183
  */
176
184
  export function recordUsageOnSpan(span, usage) {
177
185
  if (!span)