@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-peer-pairing.d.ts","sourceRoot":"","sources":["../../src/platform/a2a-peer-pairing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,489 @@
1
+ import { createHash, timingSafeEqual } from "node:crypto";
2
+ import { normalizeA2ABaseUrl, } from "./a2a-client.js";
3
+ export const A2A_PEER_PAIRING_CODE_PREFIX = "maestro-pair-v1";
4
+ const PAIRING_CODE_VERSION = 1;
5
+ const PAIRING_CODE_CHECKSUM_LENGTH = 16;
6
+ const MAX_PAIRING_CODE_LENGTH = 8192;
7
+ const DEFAULT_PAIRING_TTL_MS = 30 * 60 * 1000;
8
+ const MAX_SKILLS_IN_PAIRING_CODE = 8;
9
+ const MAX_SKILL_TAGS_IN_PAIRING_CODE = 8;
10
+ export function createA2APeerPairingPayload(input) {
11
+ const issuedAt = toDate(input.issuedAt ?? input.now ?? new Date(), "issuedAt");
12
+ const expiresAt = toDate(input.expiresAt ??
13
+ new Date(issuedAt.getTime() + (input.ttlMs ?? DEFAULT_PAIRING_TTL_MS)), "expiresAt");
14
+ const payload = {
15
+ version: PAIRING_CODE_VERSION,
16
+ displayName: requireNonEmptyString(input.displayName, "displayName"),
17
+ agentCardUrl: normalizePairingUrl(input.agentCardUrl, "agentCardUrl"),
18
+ transportUrl: normalizePairingUrl(input.transportUrl, "transportUrl"),
19
+ protocolBinding: normalizeProtocolBinding(input.protocolBinding),
20
+ protocolVersion: requireNonEmptyString(input.protocolVersion ?? "1.0", "protocolVersion"),
21
+ issuedAt: issuedAt.toISOString(),
22
+ expiresAt: expiresAt.toISOString(),
23
+ ...(input.peerId
24
+ ? { peerId: requireNonEmptyString(input.peerId, "peerId") }
25
+ : {}),
26
+ ...(input.provider ? { provider: normalizeProvider(input.provider) } : {}),
27
+ ...(input.capabilities
28
+ ? { capabilities: normalizeCapabilities(input.capabilities) }
29
+ : {}),
30
+ ...(input.skills ? { skills: normalizeSkills(input.skills) } : {}),
31
+ ...(input.keyFingerprint
32
+ ? {
33
+ keyFingerprint: requireNonEmptyString(input.keyFingerprint, "keyFingerprint"),
34
+ }
35
+ : {}),
36
+ ...(input.relayHints
37
+ ? { relayHints: normalizeRelayHints(input.relayHints) }
38
+ : {}),
39
+ ...(input.metadata ? { metadata: normalizeMetadata(input.metadata) } : {}),
40
+ };
41
+ validateA2APeerPairingPayload(payload, { now: input.now });
42
+ return payload;
43
+ }
44
+ export function createA2APeerPairingPayloadFromAgentCard(input) {
45
+ const selectedInterface = selectA2AAgentInterface(input.agentCard);
46
+ return createA2APeerPairingPayload({
47
+ displayName: input.displayName ?? input.agentCard.name,
48
+ agentCardUrl: input.agentCardUrl,
49
+ transportUrl: selectedInterface.url,
50
+ protocolBinding: selectedInterface.protocolBinding,
51
+ protocolVersion: selectedInterface.protocolVersion,
52
+ issuedAt: input.issuedAt,
53
+ expiresAt: input.expiresAt,
54
+ ttlMs: input.ttlMs,
55
+ peerId: input.peerId,
56
+ provider: input.agentCard.provider,
57
+ capabilities: input.agentCard.capabilities,
58
+ skills: normalizeSkills(input.agentCard.skills),
59
+ keyFingerprint: input.keyFingerprint,
60
+ relayHints: input.relayHints,
61
+ metadata: input.metadata,
62
+ now: input.now,
63
+ });
64
+ }
65
+ export function encodeA2APeerPairingCode(payload) {
66
+ const normalized = normalizeDecodedPayload(payload, { allowExpired: true });
67
+ rejectSecretBearingFields(normalized);
68
+ for (const candidate of pairingCodeSizeCandidates(normalized)) {
69
+ const code = encodeNormalizedPairingCode(candidate);
70
+ if (code.length <= MAX_PAIRING_CODE_LENGTH) {
71
+ return code;
72
+ }
73
+ }
74
+ throw new Error("A2A pairing payload is too large");
75
+ }
76
+ function encodeNormalizedPairingCode(payload) {
77
+ const encoded = Buffer.from(JSON.stringify(payload), "utf8").toString("base64url");
78
+ const checksum = pairingChecksum(encoded);
79
+ return `${A2A_PEER_PAIRING_CODE_PREFIX}.${encoded}.${checksum}`;
80
+ }
81
+ function pairingCodeSizeCandidates(payload) {
82
+ if (!payload.skills || payload.skills.length === 0) {
83
+ return [payload];
84
+ }
85
+ return [
86
+ payload,
87
+ {
88
+ ...payload,
89
+ skills: payload.skills.map(compactSkillForPairingCode),
90
+ },
91
+ omitPairingCodeSkills(payload),
92
+ ];
93
+ }
94
+ function compactSkillForPairingCode(skill) {
95
+ return {
96
+ id: skill.id,
97
+ name: skill.name,
98
+ ...(skill.tags && skill.tags.length > 0
99
+ ? { tags: skill.tags.slice(0, MAX_SKILL_TAGS_IN_PAIRING_CODE) }
100
+ : {}),
101
+ };
102
+ }
103
+ function omitPairingCodeSkills(payload) {
104
+ const { skills: _skills, ...withoutSkills } = payload;
105
+ return withoutSkills;
106
+ }
107
+ export function decodeA2APeerPairingCode(code, options = {}) {
108
+ const compact = code.trim();
109
+ if (!compact) {
110
+ throw new Error("A2A pairing code is required");
111
+ }
112
+ if (compact.length > MAX_PAIRING_CODE_LENGTH) {
113
+ throw new Error("A2A pairing code is too large");
114
+ }
115
+ const parts = compact.split(".");
116
+ if (parts.length !== 3 ||
117
+ parts[0] !== A2A_PEER_PAIRING_CODE_PREFIX ||
118
+ !parts[1] ||
119
+ !parts[2]) {
120
+ throw new Error(`A2A pairing code must use the ${A2A_PEER_PAIRING_CODE_PREFIX} format`);
121
+ }
122
+ const [, encoded, checksum] = parts;
123
+ assertPairingChecksum(encoded, checksum);
124
+ let rawPayload;
125
+ try {
126
+ rawPayload = JSON.parse(Buffer.from(encoded, "base64url").toString("utf8"));
127
+ }
128
+ catch (error) {
129
+ throw new Error(`A2A pairing code payload is not valid JSON: ${errorMessage(error)}`);
130
+ }
131
+ return normalizeDecodedPayload(rawPayload, options);
132
+ }
133
+ export function a2aPeerConnectionFromPairingPayload(payload) {
134
+ validateA2APeerPairingPayload(payload, { allowExpired: true });
135
+ return {
136
+ peerId: payload.peerId ?? stablePeerId(payload),
137
+ displayName: payload.displayName,
138
+ baseUrl: payload.transportUrl.replace(/\/+$/u, ""),
139
+ agentCardUrl: payload.agentCardUrl,
140
+ protocolBinding: payload.protocolBinding,
141
+ protocolVersion: payload.protocolVersion,
142
+ ...(payload.capabilities ? { capabilities: payload.capabilities } : {}),
143
+ ...(payload.skills ? { skills: payload.skills } : {}),
144
+ ...(payload.keyFingerprint
145
+ ? { keyFingerprint: payload.keyFingerprint }
146
+ : {}),
147
+ ...(payload.metadata ? { metadata: payload.metadata } : {}),
148
+ };
149
+ }
150
+ export function selectA2AAgentInterface(agentCard) {
151
+ if (!Array.isArray(agentCard.supportedInterfaces)) {
152
+ throw new Error("A2A Agent Card must include supportedInterfaces");
153
+ }
154
+ const preferred = agentCard.supportedInterfaces.find((candidate) => candidate.protocolBinding.trim().toUpperCase() === "HTTP+JSON");
155
+ if (!preferred) {
156
+ throw new Error("A2A Agent Card does not advertise a supported HTTP+JSON interface");
157
+ }
158
+ return {
159
+ url: normalizePairingUrl(preferred.url, "supportedInterfaces[].url"),
160
+ protocolBinding: normalizeProtocolBinding(preferred.protocolBinding),
161
+ protocolVersion: requireNonEmptyString(preferred.protocolVersion, "supportedInterfaces[].protocolVersion"),
162
+ ...(preferred.tenant ? { tenant: preferred.tenant } : {}),
163
+ };
164
+ }
165
+ export function resolveA2AAgentCardUrl(input) {
166
+ const baseUrl = normalizeA2ABaseUrl(normalizePairingUrl(input, "agentCardUrl"));
167
+ const parsed = new URL(baseUrl);
168
+ parsed.pathname = `${parsed.pathname.replace(/\/+$/u, "")}/.well-known/agent-card.json`;
169
+ parsed.search = "";
170
+ parsed.hash = "";
171
+ return normalizePairingUrl(parsed.toString(), "agentCardUrl");
172
+ }
173
+ function normalizeDecodedPayload(input, options = {}) {
174
+ if (!isRecord(input)) {
175
+ throw new Error("A2A pairing code payload must be an object");
176
+ }
177
+ if (input.version !== PAIRING_CODE_VERSION) {
178
+ throw new Error(`Unsupported A2A pairing code version: ${String(input.version)}`);
179
+ }
180
+ const payload = {
181
+ version: PAIRING_CODE_VERSION,
182
+ displayName: requireNonEmptyString(input.displayName, "displayName"),
183
+ agentCardUrl: normalizePairingUrl(input.agentCardUrl, "agentCardUrl"),
184
+ transportUrl: normalizePairingUrl(input.transportUrl, "transportUrl"),
185
+ protocolBinding: normalizeProtocolBinding(input.protocolBinding),
186
+ protocolVersion: requireNonEmptyString(input.protocolVersion, "protocolVersion"),
187
+ issuedAt: toDate(input.issuedAt, "issuedAt").toISOString(),
188
+ expiresAt: toDate(input.expiresAt, "expiresAt").toISOString(),
189
+ ...(typeof input.peerId === "string"
190
+ ? { peerId: requireNonEmptyString(input.peerId, "peerId") }
191
+ : {}),
192
+ ...(isRecord(input.provider)
193
+ ? { provider: normalizeProvider(input.provider) }
194
+ : {}),
195
+ ...(isRecord(input.capabilities)
196
+ ? { capabilities: normalizeCapabilities(input.capabilities) }
197
+ : {}),
198
+ ...(Array.isArray(input.skills)
199
+ ? { skills: normalizeSkills(input.skills) }
200
+ : {}),
201
+ ...(typeof input.keyFingerprint === "string"
202
+ ? {
203
+ keyFingerprint: requireNonEmptyString(input.keyFingerprint, "keyFingerprint"),
204
+ }
205
+ : {}),
206
+ ...(isRecord(input.relayHints)
207
+ ? { relayHints: normalizeRelayHints(input.relayHints) }
208
+ : {}),
209
+ ...(isRecord(input.metadata)
210
+ ? { metadata: normalizeMetadata(input.metadata) }
211
+ : {}),
212
+ };
213
+ validateA2APeerPairingPayload(payload, options);
214
+ return payload;
215
+ }
216
+ function validateA2APeerPairingPayload(payload, options = {}) {
217
+ rejectSecretBearingFields(payload);
218
+ const issuedAt = toDate(payload.issuedAt, "issuedAt");
219
+ const expiresAt = toDate(payload.expiresAt, "expiresAt");
220
+ if (expiresAt.getTime() <= issuedAt.getTime()) {
221
+ throw new Error("A2A pairing code expiresAt must be after issuedAt");
222
+ }
223
+ if (!options.allowExpired) {
224
+ const now = options.now ?? new Date();
225
+ if (expiresAt.getTime() <= now.getTime()) {
226
+ throw new Error("A2A pairing code has expired");
227
+ }
228
+ }
229
+ }
230
+ function normalizePairingUrl(input, label) {
231
+ const raw = requireNonEmptyString(input, label);
232
+ let parsed;
233
+ try {
234
+ parsed = new URL(raw);
235
+ }
236
+ catch (error) {
237
+ throw new Error(`${label} must be an absolute URL: ${errorMessage(error)}`);
238
+ }
239
+ parsed.username = "";
240
+ parsed.password = "";
241
+ parsed.search = "";
242
+ parsed.hash = "";
243
+ if (parsed.protocol === "https:") {
244
+ return parsed.toString();
245
+ }
246
+ if (parsed.protocol !== "http:") {
247
+ throw new Error(`${label} must use http or https`);
248
+ }
249
+ if (!isLocalPairingHost(parsed.hostname)) {
250
+ throw new Error(`${label} must use https unless it targets localhost, private LAN, or Tailscale`);
251
+ }
252
+ return parsed.toString();
253
+ }
254
+ function isLocalPairingHost(hostname) {
255
+ const host = hostname.toLowerCase().replace(/^\[/u, "").replace(/\]$/u, "");
256
+ if (host === "localhost" ||
257
+ host === "::1" ||
258
+ host.endsWith(".local") ||
259
+ host.endsWith(".ts.net") ||
260
+ !host.includes(".")) {
261
+ return true;
262
+ }
263
+ const ipv4Parts = host.split(".").map((part) => Number(part));
264
+ if (ipv4Parts.length === 4 &&
265
+ ipv4Parts.every((part) => Number.isInteger(part))) {
266
+ const first = ipv4Parts[0] ?? -1;
267
+ const second = ipv4Parts[1] ?? -1;
268
+ return (first === 10 ||
269
+ first === 127 ||
270
+ (first === 192 && second === 168) ||
271
+ (first === 172 && second >= 16 && second <= 31) ||
272
+ (first === 100 && second >= 64 && second <= 127));
273
+ }
274
+ return (host.includes(":") &&
275
+ (/^f[cd][0-9a-f]*:/u.test(host) || host.startsWith("fe80:")));
276
+ }
277
+ function normalizeProtocolBinding(input) {
278
+ return requireNonEmptyString(input ?? "HTTP+JSON", "protocolBinding");
279
+ }
280
+ function normalizeProvider(input) {
281
+ return {
282
+ ...(typeof input.organization === "string" && input.organization.trim()
283
+ ? { organization: input.organization.trim() }
284
+ : {}),
285
+ ...(typeof input.url === "string" && input.url.trim()
286
+ ? { url: normalizePairingUrl(input.url, "provider.url") }
287
+ : {}),
288
+ };
289
+ }
290
+ function normalizeCapabilities(input) {
291
+ return {
292
+ ...(typeof input.streaming === "boolean"
293
+ ? { streaming: input.streaming }
294
+ : {}),
295
+ ...(typeof input.pushNotifications === "boolean"
296
+ ? { pushNotifications: input.pushNotifications }
297
+ : {}),
298
+ ...(typeof input.extendedAgentCard === "boolean"
299
+ ? { extendedAgentCard: input.extendedAgentCard }
300
+ : {}),
301
+ };
302
+ }
303
+ function normalizeSkills(input) {
304
+ return input.slice(0, MAX_SKILLS_IN_PAIRING_CODE).map((skill, index) => {
305
+ if (!isRecord(skill)) {
306
+ throw new Error(`skills[${index}] must be an object`);
307
+ }
308
+ return {
309
+ id: requireNonEmptyString(skill.id, `skills[${index}].id`),
310
+ name: requireNonEmptyString(skill.name, `skills[${index}].name`),
311
+ ...copyOptionalString(skill, "description"),
312
+ ...copyStringList(skill, "tags", MAX_SKILL_TAGS_IN_PAIRING_CODE),
313
+ ...copyStringList(skill, "examples"),
314
+ ...copyStringList(skill, "inputModes"),
315
+ ...copyStringList(skill, "outputModes"),
316
+ ...copyStringList(skill, "requiredContextGrants"),
317
+ ...copyOptionalString(skill, "approvalPolicyRef"),
318
+ ...copyOptionalString(skill, "maxAutonomy"),
319
+ ...copyStringList(skill, "requiredArtifactKinds"),
320
+ ...copyStringList(skill, "optionalArtifactKinds"),
321
+ ...copyStringList(skill, "allowedTaskClasses"),
322
+ ...copyStringList(skill, "deniedTaskClasses"),
323
+ ...copyStringRecord(skill, "attributes"),
324
+ ...copyPrimitiveRecord(skill, "metadata"),
325
+ };
326
+ });
327
+ }
328
+ function copyOptionalString(input, key) {
329
+ const value = input[key];
330
+ return typeof value === "string" && value.trim()
331
+ ? { [key]: value.trim() }
332
+ : {};
333
+ }
334
+ function copyStringList(input, key, limit = Number.POSITIVE_INFINITY) {
335
+ const value = input[key];
336
+ if (!Array.isArray(value)) {
337
+ return {};
338
+ }
339
+ const strings = value
340
+ .filter((item) => typeof item === "string")
341
+ .map((item) => item.trim())
342
+ .filter(Boolean)
343
+ .slice(0, limit);
344
+ return strings.length > 0 ? { [key]: strings } : {};
345
+ }
346
+ function copyStringRecord(input, key) {
347
+ const value = input[key];
348
+ if (!isRecord(value)) {
349
+ return {};
350
+ }
351
+ const entries = Object.entries(value)
352
+ .map(([entryKey, entryValue]) => [
353
+ entryKey.trim(),
354
+ typeof entryValue === "string" ? entryValue.trim() : "",
355
+ ])
356
+ .filter((entry) => Boolean(entry[0]) && Boolean(entry[1]));
357
+ return entries.length > 0 ? { [key]: Object.fromEntries(entries) } : {};
358
+ }
359
+ function copyPrimitiveRecord(input, key) {
360
+ const value = input[key];
361
+ if (!isRecord(value)) {
362
+ return {};
363
+ }
364
+ const output = {};
365
+ for (const [entryKey, entryValue] of Object.entries(value)) {
366
+ const normalizedKey = entryKey.trim();
367
+ if (!normalizedKey) {
368
+ continue;
369
+ }
370
+ if (typeof entryValue === "string" ||
371
+ typeof entryValue === "number" ||
372
+ typeof entryValue === "boolean") {
373
+ output[normalizedKey] =
374
+ typeof entryValue === "string" ? entryValue.trim() : entryValue;
375
+ }
376
+ }
377
+ return Object.keys(output).length > 0 ? { [key]: output } : {};
378
+ }
379
+ function normalizeRelayHints(input) {
380
+ return {
381
+ ...(typeof input.host === "string" && input.host.trim()
382
+ ? { host: input.host.trim() }
383
+ : {}),
384
+ ...(typeof input.port === "number" &&
385
+ Number.isInteger(input.port) &&
386
+ input.port > 0 &&
387
+ input.port <= 65535
388
+ ? { port: input.port }
389
+ : {}),
390
+ ...(typeof input.tailscaleName === "string" && input.tailscaleName.trim()
391
+ ? { tailscaleName: input.tailscaleName.trim() }
392
+ : {}),
393
+ ...(typeof input.path === "string" && input.path.trim()
394
+ ? { path: input.path.trim() }
395
+ : {}),
396
+ };
397
+ }
398
+ function normalizeMetadata(input) {
399
+ const output = {};
400
+ for (const [key, value] of Object.entries(input)) {
401
+ if (!key.trim()) {
402
+ throw new Error("A2A pairing metadata keys must be non-empty");
403
+ }
404
+ if (typeof value === "string" ||
405
+ typeof value === "number" ||
406
+ typeof value === "boolean") {
407
+ output[key.trim()] = value;
408
+ }
409
+ }
410
+ return output;
411
+ }
412
+ function rejectSecretBearingFields(value, path = "$") {
413
+ if (Array.isArray(value)) {
414
+ for (const [index, item] of value.entries()) {
415
+ rejectSecretBearingFields(item, `${path}[${index}]`);
416
+ }
417
+ return;
418
+ }
419
+ if (!isRecord(value)) {
420
+ return;
421
+ }
422
+ for (const [key, child] of Object.entries(value)) {
423
+ if (isSecretLikeKey(key)) {
424
+ throw new Error(`A2A pairing codes must not include secret field ${path}.${key}`);
425
+ }
426
+ rejectSecretBearingFields(child, `${path}.${key}`);
427
+ }
428
+ }
429
+ function isSecretLikeKey(key) {
430
+ const normalized = key.toLowerCase().replace(/[-_]/gu, "");
431
+ return (normalized === "authorization" ||
432
+ normalized === "token" ||
433
+ normalized.endsWith("token") ||
434
+ normalized === "secret" ||
435
+ normalized.endsWith("secret") ||
436
+ normalized === "password" ||
437
+ normalized.endsWith("password") ||
438
+ normalized === "apikey" ||
439
+ normalized.endsWith("apikey") ||
440
+ normalized === "credentials" ||
441
+ normalized.endsWith("credentials") ||
442
+ normalized === "bearer");
443
+ }
444
+ function requireNonEmptyString(input, label) {
445
+ if (typeof input !== "string" || !input.trim()) {
446
+ throw new Error(`${label} is required`);
447
+ }
448
+ return input.trim();
449
+ }
450
+ function toDate(input, label) {
451
+ const date = input instanceof Date
452
+ ? input
453
+ : new Date(requireNonEmptyString(input, label));
454
+ if (Number.isNaN(date.getTime())) {
455
+ throw new Error(`${label} must be an ISO timestamp`);
456
+ }
457
+ return date;
458
+ }
459
+ function pairingChecksum(encoded) {
460
+ return createHash("sha256")
461
+ .update(`${A2A_PEER_PAIRING_CODE_PREFIX}.${encoded}`)
462
+ .digest("hex")
463
+ .slice(0, PAIRING_CODE_CHECKSUM_LENGTH);
464
+ }
465
+ function assertPairingChecksum(encoded, checksum) {
466
+ const expected = pairingChecksum(encoded);
467
+ if (checksum.length !== expected.length) {
468
+ throw new Error("A2A pairing code checksum does not match");
469
+ }
470
+ const expectedBytes = Buffer.from(expected, "utf8");
471
+ const actualBytes = Buffer.from(checksum, "utf8");
472
+ if (!timingSafeEqual(expectedBytes, actualBytes)) {
473
+ throw new Error("A2A pairing code checksum does not match");
474
+ }
475
+ }
476
+ function stablePeerId(payload) {
477
+ const hash = createHash("sha256")
478
+ .update(`${payload.displayName}\n${payload.agentCardUrl}\n${payload.transportUrl}`)
479
+ .digest("base64url")
480
+ .slice(0, 16);
481
+ return `a2a-peer-${hash}`;
482
+ }
483
+ function isRecord(value) {
484
+ return typeof value === "object" && value !== null && !Array.isArray(value);
485
+ }
486
+ function errorMessage(error) {
487
+ return error instanceof Error ? error.message : String(error);
488
+ }
489
+ //# sourceMappingURL=a2a-peer-pairing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-peer-pairing.js","sourceRoot":"","sources":["../../src/platform/a2a-peer-pairing.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, timingSafeEqual } from \"node:crypto\";\nimport {\n\ttype A2AAgentCard,\n\ttype A2AAgentInterface,\n\tnormalizeA2ABaseUrl,\n} from \"./a2a-client.js\";\n\nexport const A2A_PEER_PAIRING_CODE_PREFIX = \"maestro-pair-v1\";\n\nconst PAIRING_CODE_VERSION = 1;\nconst PAIRING_CODE_CHECKSUM_LENGTH = 16;\nconst MAX_PAIRING_CODE_LENGTH = 8192;\nconst DEFAULT_PAIRING_TTL_MS = 30 * 60 * 1000;\nconst MAX_SKILLS_IN_PAIRING_CODE = 8;\nconst MAX_SKILL_TAGS_IN_PAIRING_CODE = 8;\n\nexport interface A2APeerPairingCapabilities {\n\tstreaming?: boolean;\n\tpushNotifications?: boolean;\n\textendedAgentCard?: boolean;\n}\n\nexport interface A2APeerPairingSkillSummary {\n\tid: string;\n\tname: string;\n\tdescription?: string;\n\ttags?: string[];\n\texamples?: string[];\n\tinputModes?: string[];\n\toutputModes?: string[];\n\trequiredContextGrants?: string[];\n\tapprovalPolicyRef?: string;\n\tmaxAutonomy?: string;\n\trequiredArtifactKinds?: string[];\n\toptionalArtifactKinds?: string[];\n\tallowedTaskClasses?: string[];\n\tdeniedTaskClasses?: string[];\n\tattributes?: Record<string, string>;\n\tmetadata?: Record<string, string | number | boolean>;\n}\n\nexport interface A2APeerPairingProvider {\n\torganization?: string;\n\turl?: string;\n}\n\nexport interface A2APeerPairingRelayHints {\n\thost?: string;\n\tport?: number;\n\ttailscaleName?: string;\n\tpath?: string;\n}\n\nexport interface A2APeerPairingPayload {\n\tversion: 1;\n\tdisplayName: string;\n\tagentCardUrl: string;\n\ttransportUrl: string;\n\tprotocolBinding: string;\n\tprotocolVersion: string;\n\tissuedAt: string;\n\texpiresAt: string;\n\tpeerId?: string;\n\tprovider?: A2APeerPairingProvider;\n\tcapabilities?: A2APeerPairingCapabilities;\n\tskills?: A2APeerPairingSkillSummary[];\n\tkeyFingerprint?: string;\n\trelayHints?: A2APeerPairingRelayHints;\n\tmetadata?: Record<string, string | number | boolean>;\n}\n\nexport interface CreateA2APeerPairingPayloadInput {\n\tdisplayName: string;\n\tagentCardUrl: string;\n\ttransportUrl: string;\n\tprotocolBinding?: string;\n\tprotocolVersion?: string;\n\tissuedAt?: Date | string;\n\texpiresAt?: Date | string;\n\tttlMs?: number;\n\tpeerId?: string;\n\tprovider?: A2APeerPairingProvider;\n\tcapabilities?: A2APeerPairingCapabilities;\n\tskills?: A2APeerPairingSkillSummary[];\n\tkeyFingerprint?: string;\n\trelayHints?: A2APeerPairingRelayHints;\n\tmetadata?: Record<string, string | number | boolean>;\n\tnow?: Date;\n}\n\nexport interface CreateA2APeerPairingPayloadFromAgentCardInput {\n\tagentCard: A2AAgentCard;\n\tagentCardUrl: string;\n\tdisplayName?: string;\n\tissuedAt?: Date | string;\n\texpiresAt?: Date | string;\n\tttlMs?: number;\n\tpeerId?: string;\n\tkeyFingerprint?: string;\n\trelayHints?: A2APeerPairingRelayHints;\n\tmetadata?: Record<string, string | number | boolean>;\n\tnow?: Date;\n}\n\nexport interface DecodeA2APeerPairingCodeOptions {\n\tnow?: Date;\n\tallowExpired?: boolean;\n}\n\nexport interface A2APeerConnection {\n\tpeerId: string;\n\tdisplayName: string;\n\tbaseUrl: string;\n\tagentCardUrl: string;\n\tprotocolBinding: string;\n\tprotocolVersion: string;\n\tcapabilities?: A2APeerPairingCapabilities;\n\tskills?: A2APeerPairingSkillSummary[];\n\tkeyFingerprint?: string;\n\tmetadata?: Record<string, string | number | boolean>;\n}\n\nexport function createA2APeerPairingPayload(\n\tinput: CreateA2APeerPairingPayloadInput,\n): A2APeerPairingPayload {\n\tconst issuedAt = toDate(\n\t\tinput.issuedAt ?? input.now ?? new Date(),\n\t\t\"issuedAt\",\n\t);\n\tconst expiresAt = toDate(\n\t\tinput.expiresAt ??\n\t\t\tnew Date(issuedAt.getTime() + (input.ttlMs ?? DEFAULT_PAIRING_TTL_MS)),\n\t\t\"expiresAt\",\n\t);\n\tconst payload: A2APeerPairingPayload = {\n\t\tversion: PAIRING_CODE_VERSION,\n\t\tdisplayName: requireNonEmptyString(input.displayName, \"displayName\"),\n\t\tagentCardUrl: normalizePairingUrl(input.agentCardUrl, \"agentCardUrl\"),\n\t\ttransportUrl: normalizePairingUrl(input.transportUrl, \"transportUrl\"),\n\t\tprotocolBinding: normalizeProtocolBinding(input.protocolBinding),\n\t\tprotocolVersion: requireNonEmptyString(\n\t\t\tinput.protocolVersion ?? \"1.0\",\n\t\t\t\"protocolVersion\",\n\t\t),\n\t\tissuedAt: issuedAt.toISOString(),\n\t\texpiresAt: expiresAt.toISOString(),\n\t\t...(input.peerId\n\t\t\t? { peerId: requireNonEmptyString(input.peerId, \"peerId\") }\n\t\t\t: {}),\n\t\t...(input.provider ? { provider: normalizeProvider(input.provider) } : {}),\n\t\t...(input.capabilities\n\t\t\t? { capabilities: normalizeCapabilities(input.capabilities) }\n\t\t\t: {}),\n\t\t...(input.skills ? { skills: normalizeSkills(input.skills) } : {}),\n\t\t...(input.keyFingerprint\n\t\t\t? {\n\t\t\t\t\tkeyFingerprint: requireNonEmptyString(\n\t\t\t\t\t\tinput.keyFingerprint,\n\t\t\t\t\t\t\"keyFingerprint\",\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(input.relayHints\n\t\t\t? { relayHints: normalizeRelayHints(input.relayHints) }\n\t\t\t: {}),\n\t\t...(input.metadata ? { metadata: normalizeMetadata(input.metadata) } : {}),\n\t};\n\tvalidateA2APeerPairingPayload(payload, { now: input.now });\n\treturn payload;\n}\n\nexport function createA2APeerPairingPayloadFromAgentCard(\n\tinput: CreateA2APeerPairingPayloadFromAgentCardInput,\n): A2APeerPairingPayload {\n\tconst selectedInterface = selectA2AAgentInterface(input.agentCard);\n\treturn createA2APeerPairingPayload({\n\t\tdisplayName: input.displayName ?? input.agentCard.name,\n\t\tagentCardUrl: input.agentCardUrl,\n\t\ttransportUrl: selectedInterface.url,\n\t\tprotocolBinding: selectedInterface.protocolBinding,\n\t\tprotocolVersion: selectedInterface.protocolVersion,\n\t\tissuedAt: input.issuedAt,\n\t\texpiresAt: input.expiresAt,\n\t\tttlMs: input.ttlMs,\n\t\tpeerId: input.peerId,\n\t\tprovider: input.agentCard.provider,\n\t\tcapabilities: input.agentCard.capabilities,\n\t\tskills: normalizeSkills(input.agentCard.skills),\n\t\tkeyFingerprint: input.keyFingerprint,\n\t\trelayHints: input.relayHints,\n\t\tmetadata: input.metadata,\n\t\tnow: input.now,\n\t});\n}\n\nexport function encodeA2APeerPairingCode(\n\tpayload: A2APeerPairingPayload,\n): string {\n\tconst normalized = normalizeDecodedPayload(payload, { allowExpired: true });\n\trejectSecretBearingFields(normalized);\n\tfor (const candidate of pairingCodeSizeCandidates(normalized)) {\n\t\tconst code = encodeNormalizedPairingCode(candidate);\n\t\tif (code.length <= MAX_PAIRING_CODE_LENGTH) {\n\t\t\treturn code;\n\t\t}\n\t}\n\tthrow new Error(\"A2A pairing payload is too large\");\n}\n\nfunction encodeNormalizedPairingCode(payload: A2APeerPairingPayload): string {\n\tconst encoded = Buffer.from(JSON.stringify(payload), \"utf8\").toString(\n\t\t\"base64url\",\n\t);\n\tconst checksum = pairingChecksum(encoded);\n\treturn `${A2A_PEER_PAIRING_CODE_PREFIX}.${encoded}.${checksum}`;\n}\n\nfunction pairingCodeSizeCandidates(\n\tpayload: A2APeerPairingPayload,\n): A2APeerPairingPayload[] {\n\tif (!payload.skills || payload.skills.length === 0) {\n\t\treturn [payload];\n\t}\n\treturn [\n\t\tpayload,\n\t\t{\n\t\t\t...payload,\n\t\t\tskills: payload.skills.map(compactSkillForPairingCode),\n\t\t},\n\t\tomitPairingCodeSkills(payload),\n\t];\n}\n\nfunction compactSkillForPairingCode(\n\tskill: A2APeerPairingSkillSummary,\n): A2APeerPairingSkillSummary {\n\treturn {\n\t\tid: skill.id,\n\t\tname: skill.name,\n\t\t...(skill.tags && skill.tags.length > 0\n\t\t\t? { tags: skill.tags.slice(0, MAX_SKILL_TAGS_IN_PAIRING_CODE) }\n\t\t\t: {}),\n\t};\n}\n\nfunction omitPairingCodeSkills(\n\tpayload: A2APeerPairingPayload,\n): A2APeerPairingPayload {\n\tconst { skills: _skills, ...withoutSkills } = payload;\n\treturn withoutSkills;\n}\n\nexport function decodeA2APeerPairingCode(\n\tcode: string,\n\toptions: DecodeA2APeerPairingCodeOptions = {},\n): A2APeerPairingPayload {\n\tconst compact = code.trim();\n\tif (!compact) {\n\t\tthrow new Error(\"A2A pairing code is required\");\n\t}\n\tif (compact.length > MAX_PAIRING_CODE_LENGTH) {\n\t\tthrow new Error(\"A2A pairing code is too large\");\n\t}\n\tconst parts = compact.split(\".\");\n\tif (\n\t\tparts.length !== 3 ||\n\t\tparts[0] !== A2A_PEER_PAIRING_CODE_PREFIX ||\n\t\t!parts[1] ||\n\t\t!parts[2]\n\t) {\n\t\tthrow new Error(\n\t\t\t`A2A pairing code must use the ${A2A_PEER_PAIRING_CODE_PREFIX} format`,\n\t\t);\n\t}\n\tconst [, encoded, checksum] = parts;\n\tassertPairingChecksum(encoded, checksum);\n\tlet rawPayload: unknown;\n\ttry {\n\t\trawPayload = JSON.parse(Buffer.from(encoded, \"base64url\").toString(\"utf8\"));\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`A2A pairing code payload is not valid JSON: ${errorMessage(error)}`,\n\t\t);\n\t}\n\treturn normalizeDecodedPayload(rawPayload, options);\n}\n\nexport function a2aPeerConnectionFromPairingPayload(\n\tpayload: A2APeerPairingPayload,\n): A2APeerConnection {\n\tvalidateA2APeerPairingPayload(payload, { allowExpired: true });\n\treturn {\n\t\tpeerId: payload.peerId ?? stablePeerId(payload),\n\t\tdisplayName: payload.displayName,\n\t\tbaseUrl: payload.transportUrl.replace(/\\/+$/u, \"\"),\n\t\tagentCardUrl: payload.agentCardUrl,\n\t\tprotocolBinding: payload.protocolBinding,\n\t\tprotocolVersion: payload.protocolVersion,\n\t\t...(payload.capabilities ? { capabilities: payload.capabilities } : {}),\n\t\t...(payload.skills ? { skills: payload.skills } : {}),\n\t\t...(payload.keyFingerprint\n\t\t\t? { keyFingerprint: payload.keyFingerprint }\n\t\t\t: {}),\n\t\t...(payload.metadata ? { metadata: payload.metadata } : {}),\n\t};\n}\n\nexport function selectA2AAgentInterface(\n\tagentCard: A2AAgentCard,\n): A2AAgentInterface {\n\tif (!Array.isArray(agentCard.supportedInterfaces)) {\n\t\tthrow new Error(\"A2A Agent Card must include supportedInterfaces\");\n\t}\n\tconst preferred = agentCard.supportedInterfaces.find(\n\t\t(candidate) =>\n\t\t\tcandidate.protocolBinding.trim().toUpperCase() === \"HTTP+JSON\",\n\t);\n\tif (!preferred) {\n\t\tthrow new Error(\n\t\t\t\"A2A Agent Card does not advertise a supported HTTP+JSON interface\",\n\t\t);\n\t}\n\treturn {\n\t\turl: normalizePairingUrl(preferred.url, \"supportedInterfaces[].url\"),\n\t\tprotocolBinding: normalizeProtocolBinding(preferred.protocolBinding),\n\t\tprotocolVersion: requireNonEmptyString(\n\t\t\tpreferred.protocolVersion,\n\t\t\t\"supportedInterfaces[].protocolVersion\",\n\t\t),\n\t\t...(preferred.tenant ? { tenant: preferred.tenant } : {}),\n\t};\n}\n\nexport function resolveA2AAgentCardUrl(input: string): string {\n\tconst baseUrl = normalizeA2ABaseUrl(\n\t\tnormalizePairingUrl(input, \"agentCardUrl\"),\n\t);\n\tconst parsed = new URL(baseUrl);\n\tparsed.pathname = `${parsed.pathname.replace(/\\/+$/u, \"\")}/.well-known/agent-card.json`;\n\tparsed.search = \"\";\n\tparsed.hash = \"\";\n\treturn normalizePairingUrl(parsed.toString(), \"agentCardUrl\");\n}\n\nfunction normalizeDecodedPayload(\n\tinput: unknown,\n\toptions: DecodeA2APeerPairingCodeOptions = {},\n): A2APeerPairingPayload {\n\tif (!isRecord(input)) {\n\t\tthrow new Error(\"A2A pairing code payload must be an object\");\n\t}\n\tif (input.version !== PAIRING_CODE_VERSION) {\n\t\tthrow new Error(\n\t\t\t`Unsupported A2A pairing code version: ${String(input.version)}`,\n\t\t);\n\t}\n\tconst payload: A2APeerPairingPayload = {\n\t\tversion: PAIRING_CODE_VERSION,\n\t\tdisplayName: requireNonEmptyString(input.displayName, \"displayName\"),\n\t\tagentCardUrl: normalizePairingUrl(input.agentCardUrl, \"agentCardUrl\"),\n\t\ttransportUrl: normalizePairingUrl(input.transportUrl, \"transportUrl\"),\n\t\tprotocolBinding: normalizeProtocolBinding(input.protocolBinding),\n\t\tprotocolVersion: requireNonEmptyString(\n\t\t\tinput.protocolVersion,\n\t\t\t\"protocolVersion\",\n\t\t),\n\t\tissuedAt: toDate(input.issuedAt, \"issuedAt\").toISOString(),\n\t\texpiresAt: toDate(input.expiresAt, \"expiresAt\").toISOString(),\n\t\t...(typeof input.peerId === \"string\"\n\t\t\t? { peerId: requireNonEmptyString(input.peerId, \"peerId\") }\n\t\t\t: {}),\n\t\t...(isRecord(input.provider)\n\t\t\t? { provider: normalizeProvider(input.provider) }\n\t\t\t: {}),\n\t\t...(isRecord(input.capabilities)\n\t\t\t? { capabilities: normalizeCapabilities(input.capabilities) }\n\t\t\t: {}),\n\t\t...(Array.isArray(input.skills)\n\t\t\t? { skills: normalizeSkills(input.skills) }\n\t\t\t: {}),\n\t\t...(typeof input.keyFingerprint === \"string\"\n\t\t\t? {\n\t\t\t\t\tkeyFingerprint: requireNonEmptyString(\n\t\t\t\t\t\tinput.keyFingerprint,\n\t\t\t\t\t\t\"keyFingerprint\",\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(isRecord(input.relayHints)\n\t\t\t? { relayHints: normalizeRelayHints(input.relayHints) }\n\t\t\t: {}),\n\t\t...(isRecord(input.metadata)\n\t\t\t? { metadata: normalizeMetadata(input.metadata) }\n\t\t\t: {}),\n\t};\n\tvalidateA2APeerPairingPayload(payload, options);\n\treturn payload;\n}\n\nfunction validateA2APeerPairingPayload(\n\tpayload: A2APeerPairingPayload,\n\toptions: DecodeA2APeerPairingCodeOptions = {},\n): void {\n\trejectSecretBearingFields(payload);\n\tconst issuedAt = toDate(payload.issuedAt, \"issuedAt\");\n\tconst expiresAt = toDate(payload.expiresAt, \"expiresAt\");\n\tif (expiresAt.getTime() <= issuedAt.getTime()) {\n\t\tthrow new Error(\"A2A pairing code expiresAt must be after issuedAt\");\n\t}\n\tif (!options.allowExpired) {\n\t\tconst now = options.now ?? new Date();\n\t\tif (expiresAt.getTime() <= now.getTime()) {\n\t\t\tthrow new Error(\"A2A pairing code has expired\");\n\t\t}\n\t}\n}\n\nfunction normalizePairingUrl(input: unknown, label: string): string {\n\tconst raw = requireNonEmptyString(input, label);\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(raw);\n\t} catch (error) {\n\t\tthrow new Error(`${label} must be an absolute URL: ${errorMessage(error)}`);\n\t}\n\tparsed.username = \"\";\n\tparsed.password = \"\";\n\tparsed.search = \"\";\n\tparsed.hash = \"\";\n\tif (parsed.protocol === \"https:\") {\n\t\treturn parsed.toString();\n\t}\n\tif (parsed.protocol !== \"http:\") {\n\t\tthrow new Error(`${label} must use http or https`);\n\t}\n\tif (!isLocalPairingHost(parsed.hostname)) {\n\t\tthrow new Error(\n\t\t\t`${label} must use https unless it targets localhost, private LAN, or Tailscale`,\n\t\t);\n\t}\n\treturn parsed.toString();\n}\n\nfunction isLocalPairingHost(hostname: string): boolean {\n\tconst host = hostname.toLowerCase().replace(/^\\[/u, \"\").replace(/\\]$/u, \"\");\n\tif (\n\t\thost === \"localhost\" ||\n\t\thost === \"::1\" ||\n\t\thost.endsWith(\".local\") ||\n\t\thost.endsWith(\".ts.net\") ||\n\t\t!host.includes(\".\")\n\t) {\n\t\treturn true;\n\t}\n\tconst ipv4Parts = host.split(\".\").map((part) => Number(part));\n\tif (\n\t\tipv4Parts.length === 4 &&\n\t\tipv4Parts.every((part) => Number.isInteger(part))\n\t) {\n\t\tconst first = ipv4Parts[0] ?? -1;\n\t\tconst second = ipv4Parts[1] ?? -1;\n\t\treturn (\n\t\t\tfirst === 10 ||\n\t\t\tfirst === 127 ||\n\t\t\t(first === 192 && second === 168) ||\n\t\t\t(first === 172 && second >= 16 && second <= 31) ||\n\t\t\t(first === 100 && second >= 64 && second <= 127)\n\t\t);\n\t}\n\treturn (\n\t\thost.includes(\":\") &&\n\t\t(/^f[cd][0-9a-f]*:/u.test(host) || host.startsWith(\"fe80:\"))\n\t);\n}\n\nfunction normalizeProtocolBinding(input: unknown): string {\n\treturn requireNonEmptyString(input ?? \"HTTP+JSON\", \"protocolBinding\");\n}\n\nfunction normalizeProvider(\n\tinput: A2APeerPairingProvider | Record<string, unknown>,\n): A2APeerPairingProvider {\n\treturn {\n\t\t...(typeof input.organization === \"string\" && input.organization.trim()\n\t\t\t? { organization: input.organization.trim() }\n\t\t\t: {}),\n\t\t...(typeof input.url === \"string\" && input.url.trim()\n\t\t\t? { url: normalizePairingUrl(input.url, \"provider.url\") }\n\t\t\t: {}),\n\t};\n}\n\nfunction normalizeCapabilities(\n\tinput: A2APeerPairingCapabilities | Record<string, unknown>,\n): A2APeerPairingCapabilities {\n\treturn {\n\t\t...(typeof input.streaming === \"boolean\"\n\t\t\t? { streaming: input.streaming }\n\t\t\t: {}),\n\t\t...(typeof input.pushNotifications === \"boolean\"\n\t\t\t? { pushNotifications: input.pushNotifications }\n\t\t\t: {}),\n\t\t...(typeof input.extendedAgentCard === \"boolean\"\n\t\t\t? { extendedAgentCard: input.extendedAgentCard }\n\t\t\t: {}),\n\t};\n}\n\nfunction normalizeSkills(\n\tinput: readonly unknown[],\n): A2APeerPairingSkillSummary[] {\n\treturn input.slice(0, MAX_SKILLS_IN_PAIRING_CODE).map((skill, index) => {\n\t\tif (!isRecord(skill)) {\n\t\t\tthrow new Error(`skills[${index}] must be an object`);\n\t\t}\n\t\treturn {\n\t\t\tid: requireNonEmptyString(skill.id, `skills[${index}].id`),\n\t\t\tname: requireNonEmptyString(skill.name, `skills[${index}].name`),\n\t\t\t...copyOptionalString(skill, \"description\"),\n\t\t\t...copyStringList(skill, \"tags\", MAX_SKILL_TAGS_IN_PAIRING_CODE),\n\t\t\t...copyStringList(skill, \"examples\"),\n\t\t\t...copyStringList(skill, \"inputModes\"),\n\t\t\t...copyStringList(skill, \"outputModes\"),\n\t\t\t...copyStringList(skill, \"requiredContextGrants\"),\n\t\t\t...copyOptionalString(skill, \"approvalPolicyRef\"),\n\t\t\t...copyOptionalString(skill, \"maxAutonomy\"),\n\t\t\t...copyStringList(skill, \"requiredArtifactKinds\"),\n\t\t\t...copyStringList(skill, \"optionalArtifactKinds\"),\n\t\t\t...copyStringList(skill, \"allowedTaskClasses\"),\n\t\t\t...copyStringList(skill, \"deniedTaskClasses\"),\n\t\t\t...copyStringRecord(skill, \"attributes\"),\n\t\t\t...copyPrimitiveRecord(skill, \"metadata\"),\n\t\t};\n\t});\n}\n\nfunction copyOptionalString(\n\tinput: Record<string, unknown>,\n\tkey: string,\n): Record<string, string> {\n\tconst value = input[key];\n\treturn typeof value === \"string\" && value.trim()\n\t\t? { [key]: value.trim() }\n\t\t: {};\n}\n\nfunction copyStringList(\n\tinput: Record<string, unknown>,\n\tkey: string,\n\tlimit = Number.POSITIVE_INFINITY,\n): Record<string, string[]> {\n\tconst value = input[key];\n\tif (!Array.isArray(value)) {\n\t\treturn {};\n\t}\n\tconst strings = value\n\t\t.filter((item): item is string => typeof item === \"string\")\n\t\t.map((item) => item.trim())\n\t\t.filter(Boolean)\n\t\t.slice(0, limit);\n\treturn strings.length > 0 ? { [key]: strings } : {};\n}\n\nfunction copyStringRecord(\n\tinput: Record<string, unknown>,\n\tkey: string,\n): Record<string, Record<string, string>> {\n\tconst value = input[key];\n\tif (!isRecord(value)) {\n\t\treturn {};\n\t}\n\tconst entries = Object.entries(value)\n\t\t.map(([entryKey, entryValue]) => [\n\t\t\tentryKey.trim(),\n\t\t\ttypeof entryValue === \"string\" ? entryValue.trim() : \"\",\n\t\t])\n\t\t.filter(\n\t\t\t(entry): entry is [string, string] =>\n\t\t\t\tBoolean(entry[0]) && Boolean(entry[1]),\n\t\t);\n\treturn entries.length > 0 ? { [key]: Object.fromEntries(entries) } : {};\n}\n\nfunction copyPrimitiveRecord(\n\tinput: Record<string, unknown>,\n\tkey: string,\n): Record<string, Record<string, string | number | boolean>> {\n\tconst value = input[key];\n\tif (!isRecord(value)) {\n\t\treturn {};\n\t}\n\tconst output: Record<string, string | number | boolean> = {};\n\tfor (const [entryKey, entryValue] of Object.entries(value)) {\n\t\tconst normalizedKey = entryKey.trim();\n\t\tif (!normalizedKey) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (\n\t\t\ttypeof entryValue === \"string\" ||\n\t\t\ttypeof entryValue === \"number\" ||\n\t\t\ttypeof entryValue === \"boolean\"\n\t\t) {\n\t\t\toutput[normalizedKey] =\n\t\t\t\ttypeof entryValue === \"string\" ? entryValue.trim() : entryValue;\n\t\t}\n\t}\n\treturn Object.keys(output).length > 0 ? { [key]: output } : {};\n}\n\nfunction normalizeRelayHints(\n\tinput: A2APeerPairingRelayHints | Record<string, unknown>,\n): A2APeerPairingRelayHints {\n\treturn {\n\t\t...(typeof input.host === \"string\" && input.host.trim()\n\t\t\t? { host: input.host.trim() }\n\t\t\t: {}),\n\t\t...(typeof input.port === \"number\" &&\n\t\tNumber.isInteger(input.port) &&\n\t\tinput.port > 0 &&\n\t\tinput.port <= 65535\n\t\t\t? { port: input.port }\n\t\t\t: {}),\n\t\t...(typeof input.tailscaleName === \"string\" && input.tailscaleName.trim()\n\t\t\t? { tailscaleName: input.tailscaleName.trim() }\n\t\t\t: {}),\n\t\t...(typeof input.path === \"string\" && input.path.trim()\n\t\t\t? { path: input.path.trim() }\n\t\t\t: {}),\n\t};\n}\n\nfunction normalizeMetadata(\n\tinput: Record<string, unknown>,\n): Record<string, string | number | boolean> {\n\tconst output: Record<string, string | number | boolean> = {};\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tif (!key.trim()) {\n\t\t\tthrow new Error(\"A2A pairing metadata keys must be non-empty\");\n\t\t}\n\t\tif (\n\t\t\ttypeof value === \"string\" ||\n\t\t\ttypeof value === \"number\" ||\n\t\t\ttypeof value === \"boolean\"\n\t\t) {\n\t\t\toutput[key.trim()] = value;\n\t\t}\n\t}\n\treturn output;\n}\n\nfunction rejectSecretBearingFields(value: unknown, path = \"$\"): void {\n\tif (Array.isArray(value)) {\n\t\tfor (const [index, item] of value.entries()) {\n\t\t\trejectSecretBearingFields(item, `${path}[${index}]`);\n\t\t}\n\t\treturn;\n\t}\n\tif (!isRecord(value)) {\n\t\treturn;\n\t}\n\tfor (const [key, child] of Object.entries(value)) {\n\t\tif (isSecretLikeKey(key)) {\n\t\t\tthrow new Error(\n\t\t\t\t`A2A pairing codes must not include secret field ${path}.${key}`,\n\t\t\t);\n\t\t}\n\t\trejectSecretBearingFields(child, `${path}.${key}`);\n\t}\n}\n\nfunction isSecretLikeKey(key: string): boolean {\n\tconst normalized = key.toLowerCase().replace(/[-_]/gu, \"\");\n\treturn (\n\t\tnormalized === \"authorization\" ||\n\t\tnormalized === \"token\" ||\n\t\tnormalized.endsWith(\"token\") ||\n\t\tnormalized === \"secret\" ||\n\t\tnormalized.endsWith(\"secret\") ||\n\t\tnormalized === \"password\" ||\n\t\tnormalized.endsWith(\"password\") ||\n\t\tnormalized === \"apikey\" ||\n\t\tnormalized.endsWith(\"apikey\") ||\n\t\tnormalized === \"credentials\" ||\n\t\tnormalized.endsWith(\"credentials\") ||\n\t\tnormalized === \"bearer\"\n\t);\n}\n\nfunction requireNonEmptyString(input: unknown, label: string): string {\n\tif (typeof input !== \"string\" || !input.trim()) {\n\t\tthrow new Error(`${label} is required`);\n\t}\n\treturn input.trim();\n}\n\nfunction toDate(input: Date | string | unknown, label: string): Date {\n\tconst date =\n\t\tinput instanceof Date\n\t\t\t? input\n\t\t\t: new Date(requireNonEmptyString(input, label));\n\tif (Number.isNaN(date.getTime())) {\n\t\tthrow new Error(`${label} must be an ISO timestamp`);\n\t}\n\treturn date;\n}\n\nfunction pairingChecksum(encoded: string): string {\n\treturn createHash(\"sha256\")\n\t\t.update(`${A2A_PEER_PAIRING_CODE_PREFIX}.${encoded}`)\n\t\t.digest(\"hex\")\n\t\t.slice(0, PAIRING_CODE_CHECKSUM_LENGTH);\n}\n\nfunction assertPairingChecksum(encoded: string, checksum: string): void {\n\tconst expected = pairingChecksum(encoded);\n\tif (checksum.length !== expected.length) {\n\t\tthrow new Error(\"A2A pairing code checksum does not match\");\n\t}\n\tconst expectedBytes = Buffer.from(expected, \"utf8\");\n\tconst actualBytes = Buffer.from(checksum, \"utf8\");\n\tif (!timingSafeEqual(expectedBytes, actualBytes)) {\n\t\tthrow new Error(\"A2A pairing code checksum does not match\");\n\t}\n}\n\nfunction stablePeerId(payload: A2APeerPairingPayload): string {\n\tconst hash = createHash(\"sha256\")\n\t\t.update(\n\t\t\t`${payload.displayName}\\n${payload.agentCardUrl}\\n${payload.transportUrl}`,\n\t\t)\n\t\t.digest(\"base64url\")\n\t\t.slice(0, 16);\n\treturn `a2a-peer-${hash}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction errorMessage(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n"]}
@@ -0,0 +1,68 @@
1
+ import { type A2AServiceConfig } from "./a2a-client.js";
2
+ import { type A2APeerConnection, type A2APeerPairingPayload } from "./a2a-peer-pairing.js";
3
+ export interface A2APeerRegistryEntry {
4
+ url: string;
5
+ displayName?: string;
6
+ agentCardUrl?: string;
7
+ protocolBinding?: string;
8
+ protocolVersion?: string;
9
+ tokenEnv?: string;
10
+ tokenFile?: string;
11
+ organizationId?: string;
12
+ workspaceId?: string;
13
+ agentId?: string;
14
+ sessionId?: string;
15
+ actorId?: string;
16
+ timeoutMs?: number;
17
+ maxAttempts?: number;
18
+ capabilities?: A2APeerConnection["capabilities"];
19
+ skills?: A2APeerConnection["skills"];
20
+ keyFingerprint?: string;
21
+ metadata?: Record<string, string | number | boolean>;
22
+ createdAt?: string;
23
+ updatedAt?: string;
24
+ }
25
+ export interface A2APeerRegistryFile {
26
+ defaultPeer?: string;
27
+ timeoutMs?: number;
28
+ maxAttempts?: number;
29
+ peers: Record<string, A2APeerRegistryEntry>;
30
+ }
31
+ export interface A2APeerRegistryOptions {
32
+ path?: string;
33
+ now?: Date;
34
+ }
35
+ export interface UpsertA2APeerOptions extends A2APeerRegistryOptions {
36
+ name?: string;
37
+ makeDefault?: boolean;
38
+ tokenEnv?: string;
39
+ tokenFile?: string;
40
+ workspaceId?: string;
41
+ organizationId?: string;
42
+ }
43
+ export interface ResolveA2APeerOptions extends A2APeerRegistryOptions {
44
+ token?: string;
45
+ timeoutMs?: number;
46
+ maxAttempts?: number;
47
+ }
48
+ export interface ResolvedA2APeer {
49
+ name: string;
50
+ entry: A2APeerRegistryEntry;
51
+ config: A2AServiceConfig;
52
+ }
53
+ export declare function getA2APeerRegistryPath(path?: string): string;
54
+ export declare function loadA2APeerRegistry(options?: A2APeerRegistryOptions): Promise<A2APeerRegistryFile>;
55
+ export declare function saveA2APeerRegistry(registry: A2APeerRegistryFile, options?: A2APeerRegistryOptions): Promise<string>;
56
+ export declare function upsertA2APeerFromPairingPayload(payload: A2APeerPairingPayload, options?: UpsertA2APeerOptions): Promise<{
57
+ name: string;
58
+ entry: A2APeerRegistryEntry;
59
+ path: string;
60
+ }>;
61
+ export declare function listA2APeers(options?: A2APeerRegistryOptions): Promise<{
62
+ path: string;
63
+ registry: A2APeerRegistryFile;
64
+ }>;
65
+ export declare function resolveA2APeer(name: string | undefined, options?: ResolveA2APeerOptions): Promise<ResolvedA2APeer>;
66
+ export declare function resolvePeerToken(entry: Pick<A2APeerRegistryEntry, "tokenEnv" | "tokenFile">): Promise<string | undefined>;
67
+ export declare function normalizePeerName(name: string | undefined): string;
68
+ //# sourceMappingURL=a2a-peer-registry.d.ts.map