@evalops/maestro 0.10.23 → 0.10.25

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 (376) hide show
  1. package/README.md +4 -4
  2. package/dist/agent/agent.d.ts +2 -2
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/agent.js +1 -1
  5. package/dist/agent/agent.js.map +1 -1
  6. package/dist/agent/keys.d.ts +2 -5
  7. package/dist/agent/keys.d.ts.map +1 -1
  8. package/dist/agent/keys.js +4 -5
  9. package/dist/agent/keys.js.map +1 -1
  10. package/dist/agent/modes.d.ts +2 -2
  11. package/dist/agent/modes.d.ts.map +1 -1
  12. package/dist/agent/modes.js +6 -7
  13. package/dist/agent/modes.js.map +1 -1
  14. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  15. package/dist/agent/providers/anthropic.js +4 -4
  16. package/dist/agent/providers/anthropic.js.map +1 -1
  17. package/dist/agent/providers/google.js +1 -1
  18. package/dist/agent/swarm/executor.d.ts +2 -0
  19. package/dist/agent/swarm/executor.d.ts.map +1 -1
  20. package/dist/agent/swarm/executor.js +208 -35
  21. package/dist/agent/swarm/executor.js.map +1 -1
  22. package/dist/agent/swarm/types.d.ts +2 -0
  23. package/dist/agent/swarm/types.d.ts.map +1 -1
  24. package/dist/agent/swarm/types.js.map +1 -1
  25. package/dist/agent/tool-capability-types.d.ts +36 -0
  26. package/dist/agent/tool-capability-types.d.ts.map +1 -0
  27. package/dist/agent/tool-capability-types.js +2 -0
  28. package/dist/agent/tool-capability-types.js.map +1 -0
  29. package/dist/agent/transport/tool-execution-bridge.d.ts +13 -0
  30. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  31. package/dist/agent/transport/tool-execution-bridge.js +28 -15
  32. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  33. package/dist/agent/transport/transport-utils.d.ts.map +1 -1
  34. package/dist/agent/transport/transport-utils.js +2 -3
  35. package/dist/agent/transport/transport-utils.js.map +1 -1
  36. package/dist/agent/transport.js +1 -1
  37. package/dist/agent/transport.js.map +1 -1
  38. package/dist/agent/type-guards.d.ts +1 -1
  39. package/dist/agent/type-guards.js +1 -1
  40. package/dist/agent/type-guards.js.map +1 -1
  41. package/dist/agent/types.d.ts +5 -3
  42. package/dist/agent/types.d.ts.map +1 -1
  43. package/dist/agent/types.js +2 -2
  44. package/dist/agent/types.js.map +1 -1
  45. package/dist/app-server/daemon-lifecycle-api.d.ts +31 -0
  46. package/dist/app-server/daemon-lifecycle-api.d.ts.map +1 -0
  47. package/dist/app-server/daemon-lifecycle-api.js +259 -0
  48. package/dist/app-server/daemon-lifecycle-api.js.map +1 -0
  49. package/dist/app-server/external-agent-import-api.d.ts +30 -0
  50. package/dist/app-server/external-agent-import-api.d.ts.map +1 -0
  51. package/dist/app-server/external-agent-import-api.js +553 -0
  52. package/dist/app-server/external-agent-import-api.js.map +1 -0
  53. package/dist/app-server/host-control-api.d.ts +30 -0
  54. package/dist/app-server/host-control-api.d.ts.map +1 -0
  55. package/dist/app-server/host-control-api.js +343 -0
  56. package/dist/app-server/host-control-api.js.map +1 -0
  57. package/dist/app-server/in-process-client.d.ts +2 -2
  58. package/dist/app-server/in-process-client.d.ts.map +1 -1
  59. package/dist/app-server/in-process-client.js.map +1 -1
  60. package/dist/app-server/network-governance-api.d.ts +26 -0
  61. package/dist/app-server/network-governance-api.d.ts.map +1 -0
  62. package/dist/app-server/network-governance-api.js +476 -0
  63. package/dist/app-server/network-governance-api.js.map +1 -0
  64. package/dist/app-server/plugin-bundle-api.d.ts +17 -0
  65. package/dist/app-server/plugin-bundle-api.d.ts.map +1 -0
  66. package/dist/app-server/plugin-bundle-api.js +219 -0
  67. package/dist/app-server/plugin-bundle-api.js.map +1 -0
  68. package/dist/app-server/policy-control-api.d.ts +14 -0
  69. package/dist/app-server/policy-control-api.d.ts.map +1 -0
  70. package/dist/app-server/policy-control-api.js +200 -0
  71. package/dist/app-server/policy-control-api.js.map +1 -0
  72. package/dist/app-server/protocol-modes-api.d.ts +22 -0
  73. package/dist/app-server/protocol-modes-api.d.ts.map +1 -0
  74. package/dist/app-server/protocol-modes-api.js +124 -0
  75. package/dist/app-server/protocol-modes-api.js.map +1 -0
  76. package/dist/app-server/sandbox-proof-api.d.ts +21 -0
  77. package/dist/app-server/sandbox-proof-api.d.ts.map +1 -0
  78. package/dist/app-server/sandbox-proof-api.js +127 -0
  79. package/dist/app-server/sandbox-proof-api.js.map +1 -0
  80. package/dist/app-server/session-api.d.ts +93 -3
  81. package/dist/app-server/session-api.d.ts.map +1 -1
  82. package/dist/app-server/session-api.js +706 -18
  83. package/dist/app-server/session-api.js.map +1 -1
  84. package/dist/audit/logger.d.ts +1 -1
  85. package/dist/bootstrap/auth-setup.d.ts.map +1 -1
  86. package/dist/bootstrap/auth-setup.js +17 -2
  87. package/dist/bootstrap/auth-setup.js.map +1 -1
  88. package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
  89. package/dist/bootstrap/model-resolution-setup.js +19 -4
  90. package/dist/bootstrap/model-resolution-setup.js.map +1 -1
  91. package/dist/cli/args.d.ts +2 -2
  92. package/dist/cli/args.d.ts.map +1 -1
  93. package/dist/cli/args.js +2 -2
  94. package/dist/cli/args.js.map +1 -1
  95. package/dist/cli/commands/a2a.d.ts.map +1 -1
  96. package/dist/cli/commands/a2a.js +226 -14
  97. package/dist/cli/commands/a2a.js.map +1 -1
  98. package/dist/cli/commands/anthropic.d.ts +1 -1
  99. package/dist/cli/commands/anthropic.d.ts.map +1 -1
  100. package/dist/cli/commands/anthropic.js +3 -68
  101. package/dist/cli/commands/anthropic.js.map +1 -1
  102. package/dist/cli/commands/modes.js +1 -1
  103. package/dist/cli/commands/modes.js.map +1 -1
  104. package/dist/cli/help.d.ts.map +1 -1
  105. package/dist/cli/help.js +5 -7
  106. package/dist/cli/help.js.map +1 -1
  107. package/dist/cli/rpc-mode.d.ts +1 -1
  108. package/dist/cli/rpc-mode.js +1 -1
  109. package/dist/cli/rpc-mode.js.map +1 -1
  110. package/dist/cli/session.js +1 -1
  111. package/dist/cli/session.js.map +1 -1
  112. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  113. package/dist/cli-tui/commands/command-catalog.js +7 -12
  114. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  115. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +1 -1
  116. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -1
  117. package/dist/cli-tui/commands/subcommands/auth-commands.js +4 -12
  118. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -1
  119. package/dist/cli-tui/custom-editor.d.ts +1 -1
  120. package/dist/cli-tui/custom-editor.js +2 -2
  121. package/dist/cli-tui/custom-editor.js.map +1 -1
  122. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
  123. package/dist/cli-tui/oauth/oauth-flow-controller.js +19 -23
  124. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
  125. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  126. package/dist/cli-tui/selectors/model-selector.js +0 -1
  127. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  128. package/dist/cli-tui/selectors/oauth-selector-view.d.ts +2 -2
  129. package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +1 -1
  130. package/dist/cli-tui/selectors/oauth-selector-view.js.map +1 -1
  131. package/dist/cli-tui/selectors/oauth-selector.d.ts +2 -2
  132. package/dist/cli-tui/selectors/oauth-selector.d.ts.map +1 -1
  133. package/dist/cli-tui/selectors/oauth-selector.js +3 -4
  134. package/dist/cli-tui/selectors/oauth-selector.js.map +1 -1
  135. package/dist/cli-tui/tui-renderer/mcp-events-setup.js +1 -1
  136. package/dist/cli-tui/tui-renderer/mcp-events-setup.js.map +1 -1
  137. package/dist/cli-tui/tui-renderer.js +2 -2
  138. package/dist/cli-tui/tui-renderer.js.map +1 -1
  139. package/dist/cli-tui/utils/footer-utils.d.ts +1 -1
  140. package/dist/cli-tui/utils/footer-utils.js +1 -1
  141. package/dist/cli-tui/utils/footer-utils.js.map +1 -1
  142. package/dist/cli.js +15156 -14232
  143. package/dist/commands/prompts.d.ts +1 -1
  144. package/dist/commands/prompts.js +1 -1
  145. package/dist/commands/prompts.js.map +1 -1
  146. package/dist/config/constants.d.ts +2 -2
  147. package/dist/config/constants.d.ts.map +1 -1
  148. package/dist/config/constants.js +2 -2
  149. package/dist/config/constants.js.map +1 -1
  150. package/dist/config/index.d.ts +1 -1
  151. package/dist/config/index.js +1 -1
  152. package/dist/config/index.js.map +1 -1
  153. package/dist/config/toml-config.js +3 -3
  154. package/dist/config/toml-config.js.map +1 -1
  155. package/dist/db/client.d.ts +2 -2
  156. package/dist/db/client.js +2 -2
  157. package/dist/db/client.js.map +1 -1
  158. package/dist/db/migrate.d.ts +1 -1
  159. package/dist/db/migrate.js +1 -1
  160. package/dist/db/migrate.js.map +1 -1
  161. package/dist/db/schema.d.ts +2 -2
  162. package/dist/db/schema.js +1 -1
  163. package/dist/db/schema.js.map +1 -1
  164. package/dist/errors/index.d.ts +2 -2
  165. package/dist/errors/index.js +2 -2
  166. package/dist/errors/index.js.map +1 -1
  167. package/dist/main.d.ts +4 -5
  168. package/dist/main.d.ts.map +1 -1
  169. package/dist/main.js +17 -14
  170. package/dist/main.js.map +1 -1
  171. package/dist/mcp/config.d.ts +15 -2
  172. package/dist/mcp/config.d.ts.map +1 -1
  173. package/dist/mcp/config.js +50 -26
  174. package/dist/mcp/config.js.map +1 -1
  175. package/dist/mcp/fathom-cua.d.ts.map +1 -1
  176. package/dist/mcp/fathom-cua.js +10 -0
  177. package/dist/mcp/fathom-cua.js.map +1 -1
  178. package/dist/mcp/manager.d.ts.map +1 -1
  179. package/dist/mcp/manager.js +32 -1
  180. package/dist/mcp/manager.js.map +1 -1
  181. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  182. package/dist/mcp/tool-bridge.js +12 -3
  183. package/dist/mcp/tool-bridge.js.map +1 -1
  184. package/dist/mcp/tool-capabilities.d.ts +5 -0
  185. package/dist/mcp/tool-capabilities.d.ts.map +1 -0
  186. package/dist/mcp/tool-capabilities.js +271 -0
  187. package/dist/mcp/tool-capabilities.js.map +1 -0
  188. package/dist/mcp/types.d.ts +6 -1
  189. package/dist/mcp/types.d.ts.map +1 -1
  190. package/dist/mcp/types.js.map +1 -1
  191. package/dist/models/config-loader.d.ts +1 -1
  192. package/dist/models/factory-integration.d.ts +1 -1
  193. package/dist/models/factory-integration.js +1 -1
  194. package/dist/models/factory-integration.js.map +1 -1
  195. package/dist/node_modules/@evalops/contracts/dist/index.d.ts +3 -3
  196. package/dist/node_modules/@evalops/contracts/dist/index.js +2 -2
  197. package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  198. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +1182 -14
  199. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
  200. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +450 -1
  201. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
  202. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  203. package/dist/node_modules/@evalops/tui/package.json +1 -1
  204. package/dist/oauth/connectors.d.ts +2 -2
  205. package/dist/oauth/connectors.d.ts.map +1 -1
  206. package/dist/oauth/connectors.js +3 -5
  207. package/dist/oauth/connectors.js.map +1 -1
  208. package/dist/oauth/github-copilot.d.ts +1 -1
  209. package/dist/oauth/github-copilot.js +1 -1
  210. package/dist/oauth/github-copilot.js.map +1 -1
  211. package/dist/oauth/index.d.ts +10 -8
  212. package/dist/oauth/index.d.ts.map +1 -1
  213. package/dist/oauth/index.js +54 -31
  214. package/dist/oauth/index.js.map +1 -1
  215. package/dist/oauth/openai.d.ts +1 -1
  216. package/dist/oauth/openai.js +2 -2
  217. package/dist/oauth/openai.js.map +1 -1
  218. package/dist/platform/a2a-completion-audit.d.ts +41 -0
  219. package/dist/platform/a2a-completion-audit.d.ts.map +1 -0
  220. package/dist/platform/a2a-completion-audit.js +177 -0
  221. package/dist/platform/a2a-completion-audit.js.map +1 -0
  222. package/dist/platform/a2a-task-ledger.d.ts.map +1 -1
  223. package/dist/platform/a2a-task-ledger.js +17 -0
  224. package/dist/platform/a2a-task-ledger.js.map +1 -1
  225. package/dist/platform/a2a-telemetry-inspect.d.ts +58 -0
  226. package/dist/platform/a2a-telemetry-inspect.d.ts.map +1 -0
  227. package/dist/platform/a2a-telemetry-inspect.js +224 -0
  228. package/dist/platform/a2a-telemetry-inspect.js.map +1 -0
  229. package/dist/platform/agent-registry-client.d.ts +8 -0
  230. package/dist/platform/agent-registry-client.d.ts.map +1 -1
  231. package/dist/platform/agent-registry-client.js +9 -1
  232. package/dist/platform/agent-registry-client.js.map +1 -1
  233. package/dist/providers/api-keys.d.ts +2 -2
  234. package/dist/providers/api-keys.js +2 -2
  235. package/dist/providers/api-keys.js.map +1 -1
  236. package/dist/providers/auth.d.ts +3 -6
  237. package/dist/providers/auth.d.ts.map +1 -1
  238. package/dist/providers/auth.js +1 -40
  239. package/dist/providers/auth.js.map +1 -1
  240. package/dist/rpc/index.d.ts +2 -2
  241. package/dist/rpc/index.js +2 -2
  242. package/dist/rpc/index.js.map +1 -1
  243. package/dist/rpc/rpc-types.d.ts +1 -1
  244. package/dist/rpc/rpc-types.js +1 -1
  245. package/dist/rpc/rpc-types.js.map +1 -1
  246. package/dist/safety/nested-agent-guard.js +1 -1
  247. package/dist/safety/nested-agent-guard.js.map +1 -1
  248. package/dist/safety/policy.d.ts +2 -2
  249. package/dist/safety/policy.js +2 -2
  250. package/dist/safety/policy.js.map +1 -1
  251. package/dist/safety/validators/network-policy-validator.d.ts +8 -0
  252. package/dist/safety/validators/network-policy-validator.d.ts.map +1 -1
  253. package/dist/safety/validators/network-policy-validator.js +29 -4
  254. package/dist/safety/validators/network-policy-validator.js.map +1 -1
  255. package/dist/sandbox/local-sandbox.d.ts +1 -1
  256. package/dist/sandbox/local-sandbox.js +1 -1
  257. package/dist/sandbox/local-sandbox.js.map +1 -1
  258. package/dist/server/app-context.d.ts +2 -0
  259. package/dist/server/app-context.d.ts.map +1 -1
  260. package/dist/server/app-context.js.map +1 -1
  261. package/dist/server/handlers/attachments.d.ts.map +1 -1
  262. package/dist/server/handlers/attachments.js +1 -0
  263. package/dist/server/handlers/attachments.js.map +1 -1
  264. package/dist/server/handlers/models.d.ts.map +1 -1
  265. package/dist/server/handlers/models.js +3 -1
  266. package/dist/server/handlers/models.js.map +1 -1
  267. package/dist/server/handlers/session-attachments.d.ts.map +1 -1
  268. package/dist/server/handlers/session-attachments.js +2 -0
  269. package/dist/server/handlers/session-attachments.js.map +1 -1
  270. package/dist/server/handlers/sessions.js +1 -1
  271. package/dist/server/handlers/sessions.js.map +1 -1
  272. package/dist/server/handlers/status.d.ts +2 -0
  273. package/dist/server/handlers/status.d.ts.map +1 -1
  274. package/dist/server/handlers/status.js +3 -2
  275. package/dist/server/handlers/status.js.map +1 -1
  276. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  277. package/dist/server/headless-runtime-service.js +32 -3
  278. package/dist/server/headless-runtime-service.js.map +1 -1
  279. package/dist/server/hosted-session-manager.d.ts +2 -0
  280. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  281. package/dist/server/hosted-session-manager.js +9 -0
  282. package/dist/server/hosted-session-manager.js.map +1 -1
  283. package/dist/server/model-selection.d.ts.map +1 -1
  284. package/dist/server/model-selection.js +9 -1
  285. package/dist/server/model-selection.js.map +1 -1
  286. package/dist/server/rate-limiter.d.ts +1 -1
  287. package/dist/server/rate-limiter.js +1 -1
  288. package/dist/server/rate-limiter.js.map +1 -1
  289. package/dist/server/router.d.ts +2 -2
  290. package/dist/server/router.js.map +1 -1
  291. package/dist/server/session-serialization.d.ts +9 -9
  292. package/dist/server/session-serialization.js +15 -15
  293. package/dist/server/session-serialization.js.map +1 -1
  294. package/dist/session/manager.d.ts +5 -0
  295. package/dist/session/manager.d.ts.map +1 -1
  296. package/dist/session/manager.js +56 -8
  297. package/dist/session/manager.js.map +1 -1
  298. package/dist/session/session-catalog.d.ts +2 -0
  299. package/dist/session/session-catalog.d.ts.map +1 -1
  300. package/dist/session/session-catalog.js +6 -0
  301. package/dist/session/session-catalog.js.map +1 -1
  302. package/dist/session/session-context.d.ts +2 -0
  303. package/dist/session/session-context.d.ts.map +1 -1
  304. package/dist/session/session-context.js +15 -0
  305. package/dist/session/session-context.js.map +1 -1
  306. package/dist/session/types.d.ts +7 -0
  307. package/dist/session/types.d.ts.map +1 -1
  308. package/dist/session/types.js.map +1 -1
  309. package/dist/session/wire-format.generated.d.ts +1 -0
  310. package/dist/session/wire-format.generated.d.ts.map +1 -1
  311. package/dist/session/wire-format.generated.js +1 -0
  312. package/dist/session/wire-format.generated.js.map +1 -1
  313. package/dist/shared-memory/contract.d.ts +4 -4
  314. package/dist/shared-memory/contract.js +2 -2
  315. package/dist/shared-memory/contract.js.map +1 -1
  316. package/dist/telemetry/index.d.ts +2 -2
  317. package/dist/telemetry/index.d.ts.map +1 -1
  318. package/dist/telemetry/index.js +2 -2
  319. package/dist/telemetry/index.js.map +1 -1
  320. package/dist/telemetry/maestro-event-bus.d.ts +57 -0
  321. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  322. package/dist/telemetry/maestro-event-bus.js +59 -1
  323. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  324. package/dist/telemetry/maestro-event-catalog.d.ts +17 -1
  325. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
  326. package/dist/telemetry/maestro-event-catalog.js +24 -0
  327. package/dist/telemetry/maestro-event-catalog.js.map +1 -1
  328. package/dist/telemetry/mcp-beacon.d.ts +2 -0
  329. package/dist/telemetry/mcp-beacon.d.ts.map +1 -1
  330. package/dist/telemetry/mcp-beacon.js +15 -0
  331. package/dist/telemetry/mcp-beacon.js.map +1 -1
  332. package/dist/telemetry/metrics.d.ts +62 -0
  333. package/dist/telemetry/metrics.d.ts.map +1 -1
  334. package/dist/telemetry/metrics.js +84 -0
  335. package/dist/telemetry/metrics.js.map +1 -1
  336. package/dist/telemetry.d.ts +44 -0
  337. package/dist/telemetry.d.ts.map +1 -1
  338. package/dist/telemetry.js +84 -2
  339. package/dist/telemetry.js.map +1 -1
  340. package/dist/theme/theme-loader.js +2 -2
  341. package/dist/theme/theme-loader.js.map +1 -1
  342. package/dist/theme/theme-schema.json +2 -2
  343. package/dist/theme/theme.d.ts +1 -1
  344. package/dist/theme/theme.js.map +1 -1
  345. package/dist/tools/background/task-types.d.ts +1 -1
  346. package/dist/tools/extract-document.d.ts +1 -0
  347. package/dist/tools/extract-document.d.ts.map +1 -1
  348. package/dist/tools/extract-document.js +2 -1
  349. package/dist/tools/extract-document.js.map +1 -1
  350. package/dist/tools/index.d.ts +55 -55
  351. package/dist/tools/index.js +1 -1
  352. package/dist/tools/index.js.map +1 -1
  353. package/dist/tools/tool-dsl.d.ts +1 -1
  354. package/dist/tools/tool-dsl.js +1 -1
  355. package/dist/tools/tool-dsl.js.map +1 -1
  356. package/dist/utils/document-extractor.d.ts +1 -0
  357. package/dist/utils/document-extractor.d.ts.map +1 -1
  358. package/dist/utils/document-extractor.js +320 -40
  359. package/dist/utils/document-extractor.js.map +1 -1
  360. package/dist/utils/logger.d.ts +1 -1
  361. package/dist/utils/logger.js +1 -1
  362. package/dist/utils/logger.js.map +1 -1
  363. package/dist/version.json +2 -2
  364. package/dist/web-server.d.ts +1 -1
  365. package/dist/web-server.d.ts.map +1 -1
  366. package/dist/web-server.js +12 -8
  367. package/dist/web-server.js.map +1 -1
  368. package/package.json +4 -2
  369. package/dist/oauth/anthropic.d.ts +0 -17
  370. package/dist/oauth/anthropic.d.ts.map +0 -1
  371. package/dist/oauth/anthropic.js +0 -81
  372. package/dist/oauth/anthropic.js.map +0 -1
  373. package/dist/providers/anthropic-auth.d.ts +0 -75
  374. package/dist/providers/anthropic-auth.d.ts.map +0 -1
  375. package/dist/providers/anthropic-auth.js +0 -221
  376. package/dist/providers/anthropic-auth.js.map +0 -1
@@ -6,7 +6,7 @@
6
6
  * the Oracle tool pattern.
7
7
  */
8
8
  import { spawn } from "node:child_process";
9
- import { randomUUID } from "node:crypto";
9
+ import { createHash, randomUUID } from "node:crypto";
10
10
  import { unlinkSync, writeFileSync } from "node:fs";
11
11
  import { tmpdir } from "node:os";
12
12
  import { join } from "node:path";
@@ -15,11 +15,12 @@ import { codexSubagentTypeA2ASkillID } from "../../codex/subagent-dispatch-table
15
15
  import { buildEvalOpsDelegationEnvironment, issueEvalOpsDelegationToken, } from "../../oauth/index.js";
16
16
  import { rankA2ACapabilityPeers } from "../../platform/a2a-capability-market.js";
17
17
  import { buildA2AUserMessage, cancelA2ATask, getA2ATask, normalizeA2ABaseUrl, sendA2AMessage, } from "../../platform/a2a-client.js";
18
+ import { a2aDelegationLaneId } from "../../platform/a2a-completion-audit.js";
18
19
  import { resolveA2APeer, } from "../../platform/a2a-peer-registry.js";
19
20
  import { extractA2ATaskText, isTerminalA2AState, recordA2ATaskStart, updateA2ATaskInLedger, } from "../../platform/a2a-task-ledger.js";
20
21
  import { PlatformAgentStatusValue, listA2APeerCandidatesWithPlatform, resolveAgentRegistryServiceConfig, } from "../../platform/agent-registry-client.js";
21
22
  import { getEnvValue, trimString } from "../../platform/client.js";
22
- import { recordSubagentDispatch } from "../../telemetry.js";
23
+ import { recordA2ADelegationTelemetry as recordA2ADelegationTelemetryEvent, recordSubagentDispatch, } from "../../telemetry.js";
23
24
  import { createLogger } from "../../utils/logger.js";
24
25
  import { parseMode, resolveSubagentDispatch, } from "../modes.js";
25
26
  import { publishSwarmRuntimeEvent } from "./runtime-events.js";
@@ -214,6 +215,47 @@ function resolveA2APushNotificationConfig(configured) {
214
215
  function a2aStateCompleted(state) {
215
216
  return /COMPLETED/u.test((state ?? "").toUpperCase().replace(/[\s-]+/gu, "_"));
216
217
  }
218
+ function hashA2AEndpointUrlForTelemetry(url) {
219
+ const trimmed = url?.trim();
220
+ if (!trimmed) {
221
+ return undefined;
222
+ }
223
+ const canonical = canonicalizeA2AEndpointUrlForTelemetry(trimmed);
224
+ return `sha256:${createHash("sha256").update(canonical).digest("hex")}`;
225
+ }
226
+ function platformA2APeerRouteName(candidate, endpointHash = hashA2AEndpointUrlForTelemetry(candidate.endpointUrl)) {
227
+ const configuredName = trimString(candidate.agent.name) ?? trimString(candidate.agent.id);
228
+ if (configuredName) {
229
+ return configuredName;
230
+ }
231
+ return endpointHash
232
+ ? `endpoint:${endpointHash}`
233
+ : "platform-agent-registry-peer";
234
+ }
235
+ function canonicalizeA2AEndpointUrlForTelemetry(url) {
236
+ try {
237
+ const parsed = new URL(url);
238
+ parsed.username = "";
239
+ parsed.password = "";
240
+ parsed.search = "";
241
+ parsed.hash = "";
242
+ parsed.pathname = parsed.pathname.replace(/\/+$/u, "") || "/";
243
+ return normalizeA2ABaseUrl(parsed.toString().replace(/\/$/u, ""));
244
+ }
245
+ catch {
246
+ return normalizeA2ABaseUrl(url.replace(/[?#].*$/u, "").replace(/\/+$/u, ""));
247
+ }
248
+ }
249
+ function a2aTerminalPhase(state) {
250
+ const normalized = (state ?? "").toUpperCase().replace(/[\s-]+/gu, "_");
251
+ if (normalized.includes("COMPLETED")) {
252
+ return "task_completed";
253
+ }
254
+ if (normalized.includes("CANCEL")) {
255
+ return "task_cancelled";
256
+ }
257
+ return "task_failed";
258
+ }
217
259
  function buildDispatchEnv(dispatch, reasoningEffortOverride, runtimeSelection) {
218
260
  if (!dispatch) {
219
261
  return {};
@@ -238,6 +280,7 @@ export class SwarmExecutor {
238
280
  constructor(config) {
239
281
  this.processes = new Map();
240
282
  this.remoteA2ATasks = new Map();
283
+ this.remoteA2ACancelTasks = new Map();
241
284
  this.a2aRouteCursor = 0;
242
285
  this.eventHandlers = new Set();
243
286
  // Validate config
@@ -340,22 +383,32 @@ export class SwarmExecutor {
340
383
  logger.info("Swarm cancelled", { swarmId: this.state.id });
341
384
  }
342
385
  async cancelRemoteA2ATask(teammateId, remoteTask) {
343
- try {
344
- const cancelledTask = await cancelA2ATask(remoteTask.route.config, remoteTask.taskId);
345
- await this.updateA2ASwarmTaskLedger(remoteTask.route, cancelledTask);
346
- }
347
- catch (error) {
348
- logger.warn("Failed to cancel remote A2A swarm task", {
349
- error: error instanceof Error ? error.message : String(error),
350
- swarmId: this.state.id,
351
- teammateId,
352
- remoteTaskId: remoteTask.taskId,
353
- peer: remoteTask.route.name,
354
- });
355
- }
356
- finally {
357
- this.remoteA2ATasks.delete(teammateId);
386
+ const existingCancel = this.remoteA2ACancelTasks.get(teammateId);
387
+ if (existingCancel) {
388
+ return existingCancel;
358
389
  }
390
+ const cancelTask = (async () => {
391
+ try {
392
+ const cancelledTask = await cancelA2ATask(remoteTask.route.config, remoteTask.taskId);
393
+ await this.updateA2ASwarmTaskLedger(remoteTask.route, cancelledTask);
394
+ return cancelledTask;
395
+ }
396
+ catch (error) {
397
+ logger.warn("Failed to cancel remote A2A swarm task", {
398
+ error: error instanceof Error ? error.message : String(error),
399
+ swarmId: this.state.id,
400
+ teammateId,
401
+ remoteTaskId: remoteTask.taskId,
402
+ peer: remoteTask.route.name,
403
+ });
404
+ return undefined;
405
+ }
406
+ finally {
407
+ this.remoteA2ATasks.delete(teammateId);
408
+ }
409
+ })();
410
+ this.remoteA2ACancelTasks.set(teammateId, cancelTask);
411
+ return cancelTask;
359
412
  }
360
413
  /**
361
414
  * Execute the swarm - runs all tasks with available teammates.
@@ -537,7 +590,7 @@ export class SwarmExecutor {
537
590
  }
538
591
  const mode = this.resolveParentMode();
539
592
  const parentProvider = this.resolveParentModelProvider();
540
- const dispatch = resolveSubagentDispatch(mode, subagentType, parentProvider ?? "anthropic");
593
+ const dispatch = resolveSubagentDispatch(mode, subagentType, parentProvider ?? "openai-codex");
541
594
  if (!parentProvider && dispatch.modelTier && !options.hasModelOverride) {
542
595
  this.recordTaskDispatch(task, dispatch, Math.max(0, Date.now() - startedAt), false, {
543
596
  parentMode: mode,
@@ -639,13 +692,16 @@ export class SwarmExecutor {
639
692
  timeoutMs: options.timeoutMs,
640
693
  maxAttempts: options.maxAttempts,
641
694
  });
695
+ const skillId = this.resolveA2ASkillId(task, options, peer);
642
696
  return {
643
697
  name: peer.name,
644
698
  displayName: peer.entry.displayName,
645
699
  config: peer.config,
646
- skillId: this.resolveA2ASkillId(task, options, peer),
700
+ skillId,
701
+ taskClass: this.resolveA2ATaskClass(task, options, skillId),
647
702
  role: options.role ?? task.subagentType,
648
703
  tasksPath: options.tasksPath,
704
+ peerEndpointHash: hashA2AEndpointUrlForTelemetry(peer.config.baseUrl),
649
705
  source: "registry",
650
706
  };
651
707
  }
@@ -697,13 +753,20 @@ export class SwarmExecutor {
697
753
  skillId: ranked.selectedSkill?.id ?? skillId,
698
754
  });
699
755
  const config = await this.a2aConfigForPlatformCandidate(candidate, options);
756
+ const selectedSkillId = ranked.selectedSkill?.id ?? skillId;
757
+ const endpointHash = hashA2AEndpointUrlForTelemetry(candidate.endpointUrl);
758
+ const routeName = platformA2APeerRouteName(candidate, endpointHash);
700
759
  return {
701
- name: candidate.agent.name ?? candidate.agent.id ?? candidate.endpointUrl,
760
+ name: routeName,
702
761
  displayName: candidate.agent.name,
703
762
  config,
704
- skillId: ranked.selectedSkill?.id ?? skillId,
763
+ skillId: selectedSkillId,
764
+ taskClass: this.resolveA2ATaskClass(task, options, selectedSkillId),
705
765
  role: options.role ?? task.subagentType,
706
766
  tasksPath: options.tasksPath,
767
+ peerAgentId: candidate.agent.id,
768
+ peerEndpointHash: endpointHash,
769
+ peerEndpointKind: candidate.endpointKind,
707
770
  source: "platform-agent-registry",
708
771
  };
709
772
  }
@@ -1008,10 +1071,20 @@ export class SwarmExecutor {
1008
1071
  });
1009
1072
  }
1010
1073
  async spawnA2ATeammate(teammate, task, prompt, tmpFile, options) {
1074
+ let route;
1075
+ let messageId;
1076
+ let contextId;
1077
+ let a2aTaskId;
1078
+ const startedAt = Date.now();
1011
1079
  try {
1012
- const route = await this.resolveA2ATeammateRoute(teammate, task, options);
1013
- const messageId = `maestro-swarm-message-${randomUUID()}`;
1014
- const contextId = `maestro-swarm:${this.state.id}:${task.id}`;
1080
+ route = await this.resolveA2ATeammateRoute(teammate, task, options);
1081
+ messageId = `maestro-swarm-message-${randomUUID()}`;
1082
+ contextId = `maestro-swarm:${this.state.id}:${task.id}`;
1083
+ this.recordA2ADelegationTelemetry("peer_selected", route, teammate, task, {
1084
+ contextId,
1085
+ messageId,
1086
+ });
1087
+ const dispatchStartedAt = Date.now();
1015
1088
  const sent = await sendA2AMessage(route.config, {
1016
1089
  message: buildA2AUserMessage({
1017
1090
  messageId,
@@ -1038,16 +1111,27 @@ export class SwarmExecutor {
1038
1111
  source: route.source,
1039
1112
  },
1040
1113
  });
1114
+ a2aTaskId = sent.task.id;
1115
+ contextId = sent.task.contextId ?? contextId;
1116
+ const dispatchLatencyMs = Math.max(0, Date.now() - dispatchStartedAt);
1041
1117
  teammate.a2a = {
1042
1118
  peer: route.name,
1043
1119
  peerDisplayName: route.displayName,
1044
1120
  source: route.source,
1121
+ parentTaskId: task.id,
1045
1122
  taskId: sent.task.id,
1046
- contextId: sent.task.contextId ?? contextId,
1123
+ contextId,
1047
1124
  messageId,
1048
1125
  skillId: route.skillId,
1049
1126
  role: route.role,
1050
1127
  };
1128
+ this.recordA2ADelegationTelemetry("task_dispatched", route, teammate, task, {
1129
+ a2aTaskId: sent.task.id,
1130
+ contextId,
1131
+ messageId,
1132
+ status: sent.task.status.state,
1133
+ latencyMs: dispatchLatencyMs,
1134
+ });
1051
1135
  this.remoteA2ATasks.set(teammate.id, {
1052
1136
  route,
1053
1137
  taskId: sent.task.id,
@@ -1058,28 +1142,77 @@ export class SwarmExecutor {
1058
1142
  });
1059
1143
  if (this.state.status === "cancelled" ||
1060
1144
  this.abortController.signal.aborted) {
1061
- await this.cancelRemoteA2ATask(teammate.id, {
1145
+ const cancelledTask = await this.cancelRemoteA2ATask(teammate.id, {
1062
1146
  route,
1063
1147
  taskId: sent.task.id,
1064
1148
  });
1149
+ if (!cancelledTask) {
1150
+ return;
1151
+ }
1152
+ this.recordA2ADelegationTelemetry(a2aTerminalPhase(cancelledTask.status.state), route, teammate, task, {
1153
+ a2aTaskId: cancelledTask.id,
1154
+ contextId: cancelledTask.contextId ?? sent.task.contextId ?? contextId,
1155
+ messageId,
1156
+ status: cancelledTask.status.state,
1157
+ terminal: true,
1158
+ success: a2aStateCompleted(cancelledTask.status.state),
1159
+ durationMs: Math.max(0, Date.now() - startedAt),
1160
+ });
1065
1161
  return;
1066
1162
  }
1067
1163
  const remoteTask = await this.waitForA2ASwarmTask(route.config, sent.task, options);
1068
1164
  await this.updateA2ASwarmTaskLedger(route, remoteTask);
1165
+ this.recordA2ADelegationTelemetry(a2aTerminalPhase(remoteTask.status.state), route, teammate, task, {
1166
+ a2aTaskId: remoteTask.id,
1167
+ contextId: remoteTask.contextId ?? contextId,
1168
+ messageId,
1169
+ status: remoteTask.status.state,
1170
+ terminal: true,
1171
+ success: a2aStateCompleted(remoteTask.status.state),
1172
+ durationMs: Math.max(0, Date.now() - startedAt),
1173
+ });
1069
1174
  this.completeA2ATeammate(teammate, task, remoteTask, route);
1070
1175
  }
1071
1176
  catch (error) {
1072
- if (this.state.status !== "cancelled" &&
1073
- !this.abortController.signal.aborted) {
1074
- const remoteTask = this.remoteA2ATasks.get(teammate.id);
1075
- if (remoteTask) {
1076
- await this.cancelRemoteA2ATask(teammate.id, remoteTask);
1177
+ const wasCancelled = this.state.status === "cancelled" ||
1178
+ this.abortController.signal.aborted ||
1179
+ teammate.status === "cancelled";
1180
+ const remoteTask = this.remoteA2ATasks.get(teammate.id);
1181
+ const pendingCancelTask = this.remoteA2ACancelTasks.get(teammate.id);
1182
+ const cancelledTask = wasCancelled
1183
+ ? await (pendingCancelTask ??
1184
+ (remoteTask
1185
+ ? this.cancelRemoteA2ATask(teammate.id, remoteTask)
1186
+ : Promise.resolve(undefined)))
1187
+ : undefined;
1188
+ if (!wasCancelled && remoteTask) {
1189
+ await this.cancelRemoteA2ATask(teammate.id, remoteTask);
1190
+ }
1191
+ if (route) {
1192
+ if (!wasCancelled || cancelledTask) {
1193
+ this.recordA2ADelegationTelemetry(wasCancelled
1194
+ ? a2aTerminalPhase(cancelledTask?.status.state)
1195
+ : "task_failed", route, teammate, task, {
1196
+ a2aTaskId: cancelledTask?.id ?? a2aTaskId,
1197
+ contextId: cancelledTask?.contextId ?? contextId,
1198
+ messageId,
1199
+ status: cancelledTask?.status.state ?? "TASK_STATE_FAILED",
1200
+ terminal: true,
1201
+ success: a2aStateCompleted(cancelledTask?.status.state),
1202
+ durationMs: Math.max(0, Date.now() - startedAt),
1203
+ metadata: {
1204
+ error: error instanceof Error ? error.message : String(error),
1205
+ },
1206
+ });
1077
1207
  }
1078
1208
  }
1079
- this.failA2ATeammate(teammate, task, error);
1209
+ this.failA2ATeammate(teammate, task, error, {
1210
+ preserveA2A: Boolean(a2aTaskId),
1211
+ });
1080
1212
  }
1081
1213
  finally {
1082
1214
  this.remoteA2ATasks.delete(teammate.id);
1215
+ this.remoteA2ACancelTasks.delete(teammate.id);
1083
1216
  try {
1084
1217
  unlinkSync(tmpFile);
1085
1218
  }
@@ -1088,6 +1221,40 @@ export class SwarmExecutor {
1088
1221
  }
1089
1222
  }
1090
1223
  }
1224
+ recordA2ADelegationTelemetry(phase, route, _teammate, task, options = {}) {
1225
+ const laneId = a2aDelegationLaneId(route.name, task.id);
1226
+ recordA2ADelegationTelemetryEvent({
1227
+ phase,
1228
+ swarmId: this.state.id,
1229
+ laneId,
1230
+ parentTaskId: task.id,
1231
+ a2aTaskId: options.a2aTaskId,
1232
+ a2aMessageId: options.messageId,
1233
+ contextId: options.contextId,
1234
+ peerAgentId: route.peerAgentId,
1235
+ peerName: route.name,
1236
+ peerEndpointHash: route.peerEndpointHash,
1237
+ peerEndpointUrl: undefined,
1238
+ peerEndpointKind: route.peerEndpointKind,
1239
+ skillId: route.skillId,
1240
+ taskClass: route.taskClass,
1241
+ source: route.source,
1242
+ status: options.status,
1243
+ terminal: options.terminal,
1244
+ success: options.success,
1245
+ latencyMs: options.latencyMs,
1246
+ durationMs: options.durationMs,
1247
+ metadata: options.metadata,
1248
+ correlation: {
1249
+ attributes: {
1250
+ swarm_id: this.state.id,
1251
+ lane_id: laneId,
1252
+ parent_task_id: task.id,
1253
+ peer: route.name,
1254
+ },
1255
+ },
1256
+ });
1257
+ }
1091
1258
  buildA2ASwarmMessageMetadata(teammate, task, route) {
1092
1259
  const currentDelegationId = `${this.state.id}:${task.id}`;
1093
1260
  const contextId = `maestro-swarm:${this.state.id}:${task.id}`;
@@ -1113,7 +1280,7 @@ export class SwarmExecutor {
1113
1280
  const peerControl = {
1114
1281
  schema: "evalops.maestro.a2a-peer-control.v1",
1115
1282
  parentSwarmId: this.state.id,
1116
- laneId: teammate.id,
1283
+ laneId: a2aDelegationLaneId(route.name, task.id),
1117
1284
  taskId: task.id,
1118
1285
  contextId,
1119
1286
  controlModes: ["followup", "steer", "interrupt", "cancel"],
@@ -1217,7 +1384,7 @@ export class SwarmExecutor {
1217
1384
  teammate.error = undefined;
1218
1385
  }
1219
1386
  }
1220
- failA2ATeammate(teammate, task, error) {
1387
+ failA2ATeammate(teammate, task, error, options = {}) {
1221
1388
  this.state.activeTasks.delete(task.id);
1222
1389
  teammate.completedAt = Date.now();
1223
1390
  teammate.currentTask = undefined;
@@ -1230,7 +1397,9 @@ export class SwarmExecutor {
1230
1397
  });
1231
1398
  return;
1232
1399
  }
1233
- if (teammate.a2a && !this.remoteA2ATasks.has(teammate.id)) {
1400
+ if (teammate.a2a &&
1401
+ !options.preserveA2A &&
1402
+ !this.remoteA2ATasks.has(teammate.id)) {
1234
1403
  teammate.a2a = undefined;
1235
1404
  }
1236
1405
  teammate.status = "failed";
@@ -1338,6 +1507,10 @@ function platformA2ACandidateMatchesPeer(candidate, peer) {
1338
1507
  candidate.endpointUrl,
1339
1508
  candidate.agentCardUrl,
1340
1509
  ];
1510
+ const endpointHash = hashA2AEndpointUrlForTelemetry(candidate.endpointUrl);
1511
+ if (endpointHash) {
1512
+ values.push(endpointHash, `endpoint:${endpointHash}`);
1513
+ }
1341
1514
  return values.some((value) => {
1342
1515
  const candidateSelector = normalizePeerSelector(value);
1343
1516
  if (candidateSelector && candidateSelector === selector) {