@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,822 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { MAESTRO_SCENARIO_SCHEMA, MAESTRO_SCENARIO_WORKSPACE_MANIFEST_SCHEMA, } from "@evalops/contracts";
4
+ import { escapeXml } from "./junit-xml.js";
5
+ export const AGENT_TRAJECTORY_SCENARIO_RESULT_SCHEMA = "evalops.maestro.agent-trajectory-scenario-result.v1";
6
+ export { MAESTRO_SCENARIO_WORKSPACE_MANIFEST_SCHEMA, MAESTRO_SCENARIO_SCHEMA, } from "@evalops/contracts";
7
+ const AGENT_TRAJECTORY_SCENARIO_ASSERTION_KINDS = new Set([
8
+ "event.exists",
9
+ "event.forbidden",
10
+ "replay.deltas",
11
+ "score.finding",
12
+ "inspection.redaction",
13
+ "workspace.manifest",
14
+ "efficiency.budget",
15
+ "provenance.chain",
16
+ "human.review",
17
+ "external.refs",
18
+ "trajectory.diff",
19
+ ]);
20
+ const EXTERNAL_REF_FIELDS = [
21
+ "ensembleTranscriptIds",
22
+ "platformTraceIds",
23
+ "platformWorkEnvelopeIds",
24
+ "slackThreadRefs",
25
+ "evidenceArtifactIds",
26
+ ];
27
+ const RELEASE_GATE_TIERS = [
28
+ "smoke",
29
+ "regression",
30
+ "gauntlet",
31
+ ];
32
+ const REQUIRED_ARTIFACTS = [
33
+ "trajectory",
34
+ "replay",
35
+ "score",
36
+ "inspection",
37
+ "workspace_manifest",
38
+ ];
39
+ const HYDRATION_MODES = [
40
+ "manifest_only",
41
+ "fixture_workspace",
42
+ "frozen_archive",
43
+ ];
44
+ const WORKSPACE_SOURCES = [
45
+ "production",
46
+ "canary",
47
+ "fixture",
48
+ "synthetic",
49
+ ];
50
+ const TOOL_ADAPTER_MODES = [
51
+ "recorded",
52
+ "mocked",
53
+ "sandboxed",
54
+ "disabled",
55
+ ];
56
+ function isObject(value) {
57
+ return typeof value === "object" && value !== null && !Array.isArray(value);
58
+ }
59
+ function readJson(path) {
60
+ return JSON.parse(readFileSync(path, "utf8"));
61
+ }
62
+ function requireString(value, name) {
63
+ if (typeof value !== "string" || value.length === 0) {
64
+ throw new Error(`${name} must be a non-empty string`);
65
+ }
66
+ return value;
67
+ }
68
+ function requireOptionalString(value, name) {
69
+ if (value !== undefined) {
70
+ requireString(value, name);
71
+ }
72
+ }
73
+ function requireStringArray(value, name) {
74
+ if (!Array.isArray(value) ||
75
+ value.some((item) => typeof item !== "string" || item.length === 0)) {
76
+ throw new Error(`${name} must contain non-empty strings`);
77
+ }
78
+ }
79
+ function requireOptionalStringArray(value, name) {
80
+ if (value !== undefined) {
81
+ requireStringArray(value, name);
82
+ }
83
+ }
84
+ function requireOptionalNonNegativeInteger(value, name) {
85
+ if (value !== undefined &&
86
+ (!Number.isInteger(value) || value < 0)) {
87
+ throw new Error(`${name} must be a non-negative integer`);
88
+ }
89
+ }
90
+ function loadTypedJson(path, schemaVersion, name) {
91
+ const value = readJson(path);
92
+ if (!isObject(value) ||
93
+ (value.schemaVersion !== schemaVersion &&
94
+ value.trajectorySchemaVersion !== schemaVersion)) {
95
+ throw new Error(`${name} at ${path} must use schemaVersion ${schemaVersion}`);
96
+ }
97
+ return value;
98
+ }
99
+ function validateWorkspaceManifest(manifest, label) {
100
+ requireString(manifest.id, `${label}.id`);
101
+ requireString(manifest.recordedAt, `${label}.recordedAt`);
102
+ if (!WORKSPACE_SOURCES.includes(manifest.source)) {
103
+ throw new Error(`${label}.source must be one of: ${WORKSPACE_SOURCES.join(", ")}`);
104
+ }
105
+ requireOptionalString(manifest.workspaceRoot, `${label}.workspaceRoot`);
106
+ if (!isObject(manifest.hydration)) {
107
+ throw new Error(`${label}.hydration must be an object`);
108
+ }
109
+ if (!HYDRATION_MODES.includes(manifest.hydration.mode)) {
110
+ throw new Error(`${label}.hydration.mode must be one of: ${HYDRATION_MODES.join(", ")}`);
111
+ }
112
+ requireOptionalString(manifest.hydration.archiveUri, `${label}.hydration.archiveUri`);
113
+ requireOptionalString(manifest.hydration.rootPath, `${label}.hydration.rootPath`);
114
+ if (!Array.isArray(manifest.files)) {
115
+ throw new Error(`${label}.files must be an array`);
116
+ }
117
+ for (const [index, file] of manifest.files.entries()) {
118
+ const fileLabel = `${label}.files[${index}]`;
119
+ if (!isObject(file)) {
120
+ throw new Error(`${fileLabel} must be an object`);
121
+ }
122
+ requireString(file.path, `${fileLabel}.path`);
123
+ requireOptionalString(file.sha256, `${fileLabel}.sha256`);
124
+ requireOptionalNonNegativeInteger(file.sizeBytes, `${fileLabel}.sizeBytes`);
125
+ requireOptionalString(file.purpose, `${fileLabel}.purpose`);
126
+ }
127
+ if (!Array.isArray(manifest.toolAdapters)) {
128
+ throw new Error(`${label}.toolAdapters must be an array`);
129
+ }
130
+ for (const [index, adapter] of manifest.toolAdapters.entries()) {
131
+ const adapterLabel = `${label}.toolAdapters[${index}]`;
132
+ if (!isObject(adapter)) {
133
+ throw new Error(`${adapterLabel} must be an object`);
134
+ }
135
+ requireString(adapter.tool, `${adapterLabel}.tool`);
136
+ if (!TOOL_ADAPTER_MODES.includes(adapter.mode)) {
137
+ throw new Error(`${adapterLabel}.mode must be one of: ${TOOL_ADAPTER_MODES.join(", ")}`);
138
+ }
139
+ requireOptionalString(adapter.fixturePath, `${adapterLabel}.fixturePath`);
140
+ requireOptionalString(adapter.rationale, `${adapterLabel}.rationale`);
141
+ }
142
+ if (!isObject(manifest.redaction)) {
143
+ throw new Error(`${label}.redaction must be an object`);
144
+ }
145
+ if (typeof manifest.redaction.secretsRemoved !== "boolean") {
146
+ throw new Error(`${label}.redaction.secretsRemoved must be a boolean`);
147
+ }
148
+ if (typeof manifest.redaction.rawPromptsIncluded !== "boolean") {
149
+ throw new Error(`${label}.redaction.rawPromptsIncluded must be a boolean`);
150
+ }
151
+ requireOptionalStringArray(manifest.redaction.notes, `${label}.redaction.notes`);
152
+ }
153
+ export function parseAgentTrajectoryScenario(value, label) {
154
+ if (!isObject(value)) {
155
+ throw new Error(`Scenario ${label} must be a JSON object`);
156
+ }
157
+ const schemaVersion = value.schemaVersion;
158
+ if (schemaVersion !== MAESTRO_SCENARIO_SCHEMA) {
159
+ throw new Error(`Scenario ${label} must use schemaVersion ${MAESTRO_SCENARIO_SCHEMA}`);
160
+ }
161
+ const scenario = value;
162
+ validateAgentTrajectoryScenario(scenario, label);
163
+ return scenario;
164
+ }
165
+ export function loadAgentTrajectoryScenario(path) {
166
+ return parseAgentTrajectoryScenario(readJson(path), path);
167
+ }
168
+ export function loadAgentTrajectoryScenarioInputs(scenario, baseDir) {
169
+ const resolvePath = (path) => resolve(baseDir, path);
170
+ const source = scenario.source;
171
+ const inputs = {
172
+ trajectory: loadTypedJson(resolvePath(source.trajectoryPath), "evalops.maestro.agent-trajectory.v1", "trajectory"),
173
+ replay: loadTypedJson(resolvePath(source.replayPath), "evalops.maestro.agent-trajectory-replay.v1", "trajectory replay"),
174
+ score: loadTypedJson(resolvePath(source.scorePath), "evalops.maestro.agent-trajectory-score.v1", "trajectory score"),
175
+ };
176
+ if (source.inspectionPath) {
177
+ inputs.inspection = loadTypedJson(resolvePath(source.inspectionPath), "evalops.maestro.agent-trajectory-inspection.v1", "trajectory inspection");
178
+ }
179
+ if (source.workspaceManifestPath) {
180
+ const manifestPath = resolvePath(source.workspaceManifestPath);
181
+ const workspaceManifest = loadTypedJson(manifestPath, MAESTRO_SCENARIO_WORKSPACE_MANIFEST_SCHEMA, "workspace manifest");
182
+ validateWorkspaceManifest(workspaceManifest, `workspace manifest at ${manifestPath}`);
183
+ inputs.workspaceManifest = workspaceManifest;
184
+ }
185
+ if (source.baselineTrajectoryPath) {
186
+ inputs.baselineTrajectory = loadTypedJson(resolvePath(source.baselineTrajectoryPath), "evalops.maestro.agent-trajectory.v1", "baseline trajectory");
187
+ }
188
+ if (source.candidateTrajectoryPath) {
189
+ inputs.candidateTrajectory = loadTypedJson(resolvePath(source.candidateTrajectoryPath), "evalops.maestro.agent-trajectory.v1", "candidate trajectory");
190
+ }
191
+ if (source.baselineScorePath) {
192
+ inputs.baselineScore = loadTypedJson(resolvePath(source.baselineScorePath), "evalops.maestro.agent-trajectory-score.v1", "baseline score");
193
+ }
194
+ if (source.candidateScorePath) {
195
+ inputs.candidateScore = loadTypedJson(resolvePath(source.candidateScorePath), "evalops.maestro.agent-trajectory-score.v1", "candidate score");
196
+ }
197
+ return inputs;
198
+ }
199
+ export function validateAgentTrajectoryScenario(scenario, label = scenario.id) {
200
+ requireString(scenario.id, `${label}.id`);
201
+ requireString(scenario.title, `${label}.title`);
202
+ requireString(scenario.description, `${label}.description`);
203
+ if (scenario.expectedOutcome !== undefined &&
204
+ scenario.expectedOutcome !== "pass" &&
205
+ scenario.expectedOutcome !== "fail") {
206
+ throw new Error(`${label}.expectedOutcome must be pass or fail`);
207
+ }
208
+ if (!isObject(scenario.source)) {
209
+ throw new Error(`${label}.source must be an object`);
210
+ }
211
+ requireString(scenario.source.trajectoryPath, `${label}.source.trajectoryPath`);
212
+ requireString(scenario.source.replayPath, `${label}.source.replayPath`);
213
+ requireString(scenario.source.scorePath, `${label}.source.scorePath`);
214
+ if (scenario.source.workspaceManifestPath !== undefined) {
215
+ requireString(scenario.source.workspaceManifestPath, `${label}.source.workspaceManifestPath`);
216
+ }
217
+ if (Boolean(scenario.source.baselineTrajectoryPath) !==
218
+ Boolean(scenario.source.candidateTrajectoryPath)) {
219
+ throw new Error(`${label}.source baselineTrajectoryPath and candidateTrajectoryPath must be provided together`);
220
+ }
221
+ if (Boolean(scenario.source.baselineScorePath) !==
222
+ Boolean(scenario.source.candidateScorePath)) {
223
+ throw new Error(`${label}.source baselineScorePath and candidateScorePath must be provided together`);
224
+ }
225
+ if (!Array.isArray(scenario.assertions) || scenario.assertions.length === 0) {
226
+ throw new Error(`${label}.assertions must contain at least one assertion`);
227
+ }
228
+ if (!Array.isArray(scenario.reviewLabels)) {
229
+ throw new Error(`${label}.reviewLabels must be an array`);
230
+ }
231
+ if (scenario.releaseGate !== undefined) {
232
+ if (!isObject(scenario.releaseGate)) {
233
+ throw new Error(`${label}.releaseGate must be an object`);
234
+ }
235
+ if (typeof scenario.releaseGate.releaseBlocking !== "boolean") {
236
+ throw new Error(`${label}.releaseGate.releaseBlocking must be a boolean`);
237
+ }
238
+ if (!RELEASE_GATE_TIERS.includes(scenario.releaseGate.tier)) {
239
+ throw new Error(`${label}.releaseGate.tier must be one of: ${RELEASE_GATE_TIERS.join(", ")}`);
240
+ }
241
+ if (!Array.isArray(scenario.releaseGate.requiredArtifacts) ||
242
+ scenario.releaseGate.requiredArtifacts.length === 0) {
243
+ throw new Error(`${label}.releaseGate.requiredArtifacts must not be empty`);
244
+ }
245
+ const unknownArtifacts = scenario.releaseGate.requiredArtifacts.filter((artifact) => !REQUIRED_ARTIFACTS.includes(artifact));
246
+ if (unknownArtifacts.length > 0) {
247
+ throw new Error(`${label}.releaseGate.requiredArtifacts contains unknown artifact(s): ${unknownArtifacts.join(", ")}`);
248
+ }
249
+ if (scenario.releaseGate.releaseBlocking &&
250
+ !scenario.releaseGate.requiredArtifacts.includes("workspace_manifest")) {
251
+ throw new Error(`${label}.releaseGate release-blocking scenarios must require workspace_manifest`);
252
+ }
253
+ if (scenario.releaseGate.requiredArtifacts.includes("inspection") &&
254
+ !scenario.source.inspectionPath) {
255
+ throw new Error(`${label}.releaseGate requires inspection but source.inspectionPath is missing`);
256
+ }
257
+ if (scenario.releaseGate.requiredArtifacts.includes("workspace_manifest") &&
258
+ !scenario.source.workspaceManifestPath) {
259
+ throw new Error(`${label}.releaseGate requires workspace_manifest but source.workspaceManifestPath is missing`);
260
+ }
261
+ requireOptionalNonNegativeInteger(scenario.releaseGate.maxEvents, `${label}.releaseGate.maxEvents`);
262
+ requireOptionalNonNegativeInteger(scenario.releaseGate.maxToolCalls, `${label}.releaseGate.maxToolCalls`);
263
+ requireOptionalNonNegativeInteger(scenario.releaseGate.maxReplayDeltas, `${label}.releaseGate.maxReplayDeltas`);
264
+ requireOptionalNonNegativeInteger(scenario.releaseGate.maxScoreFailures, `${label}.releaseGate.maxScoreFailures`);
265
+ requireOptionalNonNegativeInteger(scenario.releaseGate.maxScoreWarnings, `${label}.releaseGate.maxScoreWarnings`);
266
+ }
267
+ if (!isObject(scenario.platform)) {
268
+ throw new Error(`${label}.platform must be an object`);
269
+ }
270
+ if (!Array.isArray(scenario.platform.traceJoinKeys) ||
271
+ scenario.platform.traceJoinKeys.length === 0) {
272
+ throw new Error(`${label}.platform.traceJoinKeys must not be empty`);
273
+ }
274
+ if (scenario.externalRefs !== undefined) {
275
+ if (!isObject(scenario.externalRefs)) {
276
+ throw new Error(`${label}.externalRefs must be an object`);
277
+ }
278
+ let refs = 0;
279
+ for (const field of EXTERNAL_REF_FIELDS) {
280
+ const values = scenario.externalRefs[field];
281
+ if (values === undefined)
282
+ continue;
283
+ if (!Array.isArray(values) ||
284
+ values.some((value) => typeof value !== "string" || value.length === 0)) {
285
+ throw new Error(`${label}.externalRefs.${field} must contain non-empty strings`);
286
+ }
287
+ refs += values.length;
288
+ }
289
+ if (refs === 0) {
290
+ throw new Error(`${label}.externalRefs must contain at least one ref`);
291
+ }
292
+ }
293
+ if (!isObject(scenario.assumptions)) {
294
+ throw new Error(`${label}.assumptions must be an object`);
295
+ }
296
+ requireString(scenario.assumptions.workflow, `${label}.assumptions.workflow`);
297
+ requireString(scenario.assumptions.correctnessModel, `${label}.assumptions.correctnessModel`);
298
+ requireString(scenario.assumptions.threatModel, `${label}.assumptions.threatModel`);
299
+ if (!Array.isArray(scenario.assumptions.researchBasis) ||
300
+ scenario.assumptions.researchBasis.length === 0) {
301
+ throw new Error(`${label}.assumptions.researchBasis must not be empty`);
302
+ }
303
+ let hasWorkspaceManifestAssertion = false;
304
+ let hasWarningWorkspaceManifestAssertion = false;
305
+ for (const assertion of scenario.assertions) {
306
+ requireString(assertion.id, `${label}.assertions[].id`);
307
+ const kind = requireString(assertion.kind, `${label}.assertions[].kind`);
308
+ if (!AGENT_TRAJECTORY_SCENARIO_ASSERTION_KINDS.has(kind)) {
309
+ throw new Error(`${label}.assertions[].kind must be one of: ${Array.from(AGENT_TRAJECTORY_SCENARIO_ASSERTION_KINDS).join(", ")}`);
310
+ }
311
+ if (kind === "trajectory.diff" &&
312
+ assertion.maxAddedScoreFailures !== undefined &&
313
+ (!scenario.source.baselineScorePath ||
314
+ !scenario.source.candidateScorePath)) {
315
+ throw new Error(`${label}.assertions[].maxAddedScoreFailures requires baselineScorePath and candidateScorePath`);
316
+ }
317
+ if (kind === "workspace.manifest") {
318
+ hasWorkspaceManifestAssertion = true;
319
+ hasWarningWorkspaceManifestAssertion =
320
+ hasWarningWorkspaceManifestAssertion ||
321
+ assertion.severity === "warning";
322
+ if (!scenario.source.workspaceManifestPath) {
323
+ throw new Error(`${label}.assertions[].kind workspace.manifest requires source.workspaceManifestPath`);
324
+ }
325
+ requireOptionalStringArray(assertion.requiredWorkspaceFiles, `${label}.assertions[].requiredWorkspaceFiles`);
326
+ requireOptionalStringArray(assertion.requiredToolAdapters, `${label}.assertions[].requiredToolAdapters`);
327
+ if (assertion.requiredHydrationModes !== undefined &&
328
+ (!Array.isArray(assertion.requiredHydrationModes) ||
329
+ assertion.requiredHydrationModes.some((mode) => !HYDRATION_MODES.includes(mode)))) {
330
+ throw new Error(`${label}.assertions[].requiredHydrationModes must contain known hydration modes`);
331
+ }
332
+ if (assertion.requiredReleaseGateTier !== undefined &&
333
+ !RELEASE_GATE_TIERS.includes(assertion.requiredReleaseGateTier)) {
334
+ throw new Error(`${label}.assertions[].requiredReleaseGateTier must be one of: ${RELEASE_GATE_TIERS.join(", ")}`);
335
+ }
336
+ requireOptionalNonNegativeInteger(assertion.minWorkspaceFiles, `${label}.assertions[].minWorkspaceFiles`);
337
+ requireOptionalNonNegativeInteger(assertion.minToolAdapters, `${label}.assertions[].minToolAdapters`);
338
+ }
339
+ if (kind === "external.refs" &&
340
+ (!Array.isArray(assertion.requiredExternalRefKinds) ||
341
+ assertion.requiredExternalRefKinds.length === 0)) {
342
+ throw new Error(`${label}.assertions[].requiredExternalRefKinds must not be empty for external.refs`);
343
+ }
344
+ if (kind === "external.refs") {
345
+ const unknownKinds = (assertion.requiredExternalRefKinds ?? []).filter((refKind) => !EXTERNAL_REF_FIELDS.includes(refKind));
346
+ if (unknownKinds.length > 0) {
347
+ throw new Error(`${label}.assertions[].requiredExternalRefKinds contains unknown external ref kind(s): ${unknownKinds.join(", ")}`);
348
+ }
349
+ if (assertion.requiredExternalRefs !== undefined &&
350
+ (!Array.isArray(assertion.requiredExternalRefs) ||
351
+ assertion.requiredExternalRefs.some((ref) => typeof ref !== "string" || ref.length === 0))) {
352
+ throw new Error(`${label}.assertions[].requiredExternalRefs must contain non-empty strings for external.refs`);
353
+ }
354
+ }
355
+ }
356
+ if (scenario.releaseGate?.releaseBlocking === true &&
357
+ scenario.releaseGate.requiredArtifacts.includes("workspace_manifest") &&
358
+ !hasWorkspaceManifestAssertion) {
359
+ throw new Error(`${label}.releaseGate release-blocking workspace_manifest gates must include a workspace.manifest assertion`);
360
+ }
361
+ if (scenario.releaseGate?.releaseBlocking === true &&
362
+ scenario.releaseGate.requiredArtifacts.includes("workspace_manifest") &&
363
+ hasWarningWorkspaceManifestAssertion) {
364
+ throw new Error(`${label}.releaseGate release-blocking workspace_manifest assertions must use error severity`);
365
+ }
366
+ }
367
+ function eventMatches(event, selector) {
368
+ return ((selector.kind === undefined || event.kind === selector.kind) &&
369
+ (selector.phase === undefined || event.phase === selector.phase) &&
370
+ (selector.type === undefined || event.type === selector.type) &&
371
+ (selector.status === undefined || event.status === selector.status) &&
372
+ (selector.toolName === undefined || event.toolName === selector.toolName) &&
373
+ (selector.source === undefined || event.source === selector.source) &&
374
+ (selector.actor === undefined || event.actor === selector.actor));
375
+ }
376
+ function evidenceFromEvents(events) {
377
+ const seen = new Set();
378
+ const evidence = [];
379
+ for (const event of events) {
380
+ const eventKey = `trajectory:event:${event.id}`;
381
+ if (!seen.has(eventKey)) {
382
+ seen.add(eventKey);
383
+ evidence.push({
384
+ kind: "trajectory_event",
385
+ id: event.id,
386
+ source: "trajectory",
387
+ label: `${event.type}:${event.id}`,
388
+ });
389
+ }
390
+ for (const anchor of event.evidence) {
391
+ const key = `trajectory:${anchor.kind}:${anchor.id}`;
392
+ if (seen.has(key))
393
+ continue;
394
+ seen.add(key);
395
+ evidence.push({
396
+ kind: anchor.kind,
397
+ id: anchor.id,
398
+ source: "trajectory",
399
+ label: `${anchor.kind}:${anchor.id}`,
400
+ });
401
+ }
402
+ }
403
+ return evidence.sort((left, right) => left.label.localeCompare(right.label));
404
+ }
405
+ function scenarioEvidence(id, label) {
406
+ return [
407
+ {
408
+ kind: "scenario",
409
+ id,
410
+ source: "scenario",
411
+ label,
412
+ },
413
+ ];
414
+ }
415
+ function result(assertion, status, message, evidence = []) {
416
+ return {
417
+ id: assertion.id,
418
+ kind: assertion.kind,
419
+ status,
420
+ severity: assertion.severity ?? "error",
421
+ message,
422
+ evidence,
423
+ };
424
+ }
425
+ function fail(assertion, message, evidence = []) {
426
+ const status = assertion.severity === "warning" ? "warn" : "fail";
427
+ return result(assertion, status, message, evidence);
428
+ }
429
+ function countToolCalls(report) {
430
+ return report.events.filter((event) => event.type === "tool.requested")
431
+ .length;
432
+ }
433
+ function scoreFailures(report) {
434
+ return report.findings.filter((finding) => finding.status === "fail").length;
435
+ }
436
+ function scoreWarnings(report) {
437
+ return report.findings.filter((finding) => finding.status === "warn").length;
438
+ }
439
+ function buildDiff(inputs) {
440
+ if (!inputs.baselineTrajectory || !inputs.candidateTrajectory)
441
+ return undefined;
442
+ return {
443
+ baselineRunId: inputs.baselineTrajectory.run.id,
444
+ candidateRunId: inputs.candidateTrajectory.run.id,
445
+ eventsDelta: inputs.candidateTrajectory.counts.events -
446
+ inputs.baselineTrajectory.counts.events,
447
+ toolCallsDelta: countToolCalls(inputs.candidateTrajectory) -
448
+ countToolCalls(inputs.baselineTrajectory),
449
+ scoreFailuresDelta: inputs.baselineScore && inputs.candidateScore
450
+ ? scoreFailures(inputs.candidateScore) -
451
+ scoreFailures(inputs.baselineScore)
452
+ : 0,
453
+ };
454
+ }
455
+ function workspaceEvidence(manifest) {
456
+ return [
457
+ {
458
+ kind: "workspace_manifest",
459
+ id: manifest.id,
460
+ source: "scenario",
461
+ label: `workspace_manifest:${manifest.id}`,
462
+ },
463
+ ...manifest.toolAdapters.map((adapter) => ({
464
+ kind: "tool_adapter",
465
+ id: adapter.tool,
466
+ source: "scenario",
467
+ label: `tool_adapter:${adapter.tool}:${adapter.mode}`,
468
+ })),
469
+ ];
470
+ }
471
+ function buildWorkspaceSummary(manifest) {
472
+ if (!manifest)
473
+ return undefined;
474
+ return {
475
+ manifestId: manifest.id,
476
+ source: manifest.source,
477
+ recordedAt: manifest.recordedAt,
478
+ hydrationMode: manifest.hydration.mode,
479
+ files: manifest.files.length,
480
+ toolAdapters: manifest.toolAdapters.length,
481
+ };
482
+ }
483
+ function hasRequiredArtifact(artifact, inputs) {
484
+ switch (artifact) {
485
+ case "trajectory":
486
+ return true;
487
+ case "replay":
488
+ return true;
489
+ case "score":
490
+ return true;
491
+ case "inspection":
492
+ return inputs.inspection !== undefined;
493
+ case "workspace_manifest":
494
+ return inputs.workspaceManifest !== undefined;
495
+ }
496
+ }
497
+ function workspaceReleasePolicyViolations(gate, inputs) {
498
+ if (!gate.requiredArtifacts.includes("workspace_manifest")) {
499
+ return [];
500
+ }
501
+ const manifest = inputs.workspaceManifest;
502
+ if (!manifest) {
503
+ return [];
504
+ }
505
+ return [
506
+ manifest.redaction.secretsRemoved !== true
507
+ ? "workspace manifest did not confirm secret redaction"
508
+ : undefined,
509
+ manifest.redaction.rawPromptsIncluded !== false
510
+ ? "workspace manifest did not confirm raw prompts were excluded"
511
+ : undefined,
512
+ ].filter((value) => value !== undefined);
513
+ }
514
+ function buildReleaseGateSummary(scenario, inputs) {
515
+ const gate = scenario.releaseGate;
516
+ if (!gate)
517
+ return undefined;
518
+ const observedToolCalls = countToolCalls(inputs.trajectory);
519
+ const observedFailures = scoreFailures(inputs.score);
520
+ const observedWarnings = scoreWarnings(inputs.score);
521
+ const missingArtifacts = gate.requiredArtifacts.filter((artifact) => !hasRequiredArtifact(artifact, inputs));
522
+ const budgetViolations = [
523
+ gate.maxEvents !== undefined &&
524
+ inputs.trajectory.counts.events > gate.maxEvents
525
+ ? `events ${inputs.trajectory.counts.events}/${gate.maxEvents}`
526
+ : undefined,
527
+ gate.maxToolCalls !== undefined && observedToolCalls > gate.maxToolCalls
528
+ ? `toolCalls ${observedToolCalls}/${gate.maxToolCalls}`
529
+ : undefined,
530
+ gate.maxReplayDeltas !== undefined &&
531
+ inputs.replay.counts.deltas > gate.maxReplayDeltas
532
+ ? `replayDeltas ${inputs.replay.counts.deltas}/${gate.maxReplayDeltas}`
533
+ : undefined,
534
+ gate.maxScoreFailures !== undefined &&
535
+ observedFailures > gate.maxScoreFailures
536
+ ? `scoreFailures ${observedFailures}/${gate.maxScoreFailures}`
537
+ : undefined,
538
+ gate.maxScoreWarnings !== undefined &&
539
+ observedWarnings > gate.maxScoreWarnings
540
+ ? `scoreWarnings ${observedWarnings}/${gate.maxScoreWarnings}`
541
+ : undefined,
542
+ ].filter((value) => value !== undefined);
543
+ const policyViolations = workspaceReleasePolicyViolations(gate, inputs);
544
+ return {
545
+ ...gate,
546
+ satisfied: missingArtifacts.length === 0 &&
547
+ budgetViolations.length === 0 &&
548
+ policyViolations.length === 0,
549
+ missingArtifacts,
550
+ budgetViolations,
551
+ policyViolations,
552
+ };
553
+ }
554
+ function evaluateAssertion(assertion, scenario, inputs, diff) {
555
+ switch (assertion.kind) {
556
+ case "event.exists": {
557
+ if (!assertion.selector) {
558
+ return fail(assertion, "event.exists requires a selector.");
559
+ }
560
+ const matches = inputs.trajectory.events.filter((event) => eventMatches(event, assertion.selector ?? {}));
561
+ return matches.length > 0
562
+ ? result(assertion, "pass", `Matched ${matches.length} trajectory event(s).`, evidenceFromEvents(matches))
563
+ : fail(assertion, "No trajectory event matched the selector.");
564
+ }
565
+ case "event.forbidden": {
566
+ if (!assertion.selector) {
567
+ return fail(assertion, "event.forbidden requires a selector.");
568
+ }
569
+ const matches = inputs.trajectory.events.filter((event) => eventMatches(event, assertion.selector ?? {}));
570
+ return matches.length === 0
571
+ ? result(assertion, "pass", "No forbidden trajectory event matched.")
572
+ : fail(assertion, `Forbidden selector matched ${matches.length} trajectory event(s).`, evidenceFromEvents(matches));
573
+ }
574
+ case "replay.deltas": {
575
+ const maxDeltas = assertion.maxReplayDeltas ?? Number.POSITIVE_INFINITY;
576
+ const maxErrors = assertion.maxReplayErrors ?? Number.POSITIVE_INFINITY;
577
+ const failed = inputs.replay.counts.deltas > maxDeltas ||
578
+ inputs.replay.counts.errors > maxErrors;
579
+ return failed
580
+ ? fail(assertion, `Replay deltas exceeded budget: ${inputs.replay.counts.deltas}/${maxDeltas}, errors ${inputs.replay.counts.errors}/${maxErrors}.`, inputs.replay.deltas.map((delta) => ({
581
+ kind: "replay_delta",
582
+ id: delta.id,
583
+ source: "replay",
584
+ label: `${delta.ruleId}:${delta.id}`,
585
+ })))
586
+ : result(assertion, "pass", `Replay stayed within delta and error budgets (${inputs.replay.counts.deltas} deltas, ${inputs.replay.counts.errors} errors).`);
587
+ }
588
+ case "score.finding": {
589
+ if (!assertion.ruleId) {
590
+ return fail(assertion, "score.finding requires ruleId.");
591
+ }
592
+ const finding = inputs.score.findings.find((item) => item.ruleId === assertion.ruleId);
593
+ if (!finding) {
594
+ return fail(assertion, `Missing score finding ${assertion.ruleId}.`);
595
+ }
596
+ if (assertion.status && finding.status !== assertion.status) {
597
+ return fail(assertion, `Score finding ${assertion.ruleId} was ${finding.status}; expected ${assertion.status}.`, evidenceFromEvents(inputs.trajectory.events.filter((event) => finding.eventIds.includes(event.id))));
598
+ }
599
+ return result(assertion, "pass", `Score finding ${assertion.ruleId} matched ${finding.status}.`, evidenceFromEvents(inputs.trajectory.events.filter((event) => finding.eventIds.includes(event.id))));
600
+ }
601
+ case "inspection.redaction": {
602
+ if (!inputs.inspection) {
603
+ return fail(assertion, "inspection.redaction requires inspectionPath.");
604
+ }
605
+ const inspectionJson = JSON.stringify(inputs.inspection);
606
+ const leaked = (assertion.forbiddenTerms ?? []).filter((term) => inspectionJson.includes(term));
607
+ const unredactedItem = inputs.inspection.timelineItems.find((item) => item.redacted !== true);
608
+ if (leaked.length > 0 || unredactedItem) {
609
+ return fail(assertion, `Inspection output was not fail-closed: ${leaked.length} forbidden term(s), unredacted item ${unredactedItem?.id ?? "none"}.`, scenarioEvidence(inputs.inspection.run.id, "inspection:redaction"));
610
+ }
611
+ return result(assertion, "pass", "Inspection artifact stayed redacted and omitted forbidden terms.", scenarioEvidence(inputs.inspection.run.id, "inspection:redaction"));
612
+ }
613
+ case "workspace.manifest": {
614
+ const manifest = inputs.workspaceManifest;
615
+ if (!manifest) {
616
+ return fail(assertion, "workspace.manifest requires source.workspaceManifestPath.");
617
+ }
618
+ const requiredFiles = assertion.requiredWorkspaceFiles ?? [];
619
+ const requiredAdapters = assertion.requiredToolAdapters ?? [];
620
+ const missingFiles = requiredFiles.filter((path) => !manifest.files.some((file) => file.path === path));
621
+ const missingAdapters = requiredAdapters.filter((tool) => !manifest.toolAdapters.some((adapter) => adapter.tool === tool));
622
+ const allowedHydrationModes = assertion.requiredHydrationModes ?? [];
623
+ const hydrationRejected = allowedHydrationModes.length > 0 &&
624
+ !allowedHydrationModes.includes(manifest.hydration.mode);
625
+ const releaseGateRejected = assertion.requiredReleaseGateTier !== undefined &&
626
+ scenario.releaseGate?.tier !== assertion.requiredReleaseGateTier;
627
+ const fileFloor = assertion.minWorkspaceFiles ?? 0;
628
+ const adapterFloor = assertion.minToolAdapters ?? 0;
629
+ const floorFailures = [
630
+ manifest.files.length < fileFloor
631
+ ? `workspace files ${manifest.files.length}/${fileFloor}`
632
+ : undefined,
633
+ manifest.toolAdapters.length < adapterFloor
634
+ ? `tool adapters ${manifest.toolAdapters.length}/${adapterFloor}`
635
+ : undefined,
636
+ ].filter((value) => value !== undefined);
637
+ const failures = [
638
+ ...missingFiles.map((path) => `missing file ${path}`),
639
+ ...missingAdapters.map((tool) => `missing tool adapter ${tool}`),
640
+ hydrationRejected
641
+ ? `hydration mode ${manifest.hydration.mode} not allowed`
642
+ : undefined,
643
+ releaseGateRejected
644
+ ? `release tier ${scenario.releaseGate?.tier ?? "none"} did not match ${assertion.requiredReleaseGateTier}`
645
+ : undefined,
646
+ ...floorFailures,
647
+ manifest.redaction.secretsRemoved !== true
648
+ ? "workspace manifest did not confirm secret redaction"
649
+ : undefined,
650
+ manifest.redaction.rawPromptsIncluded !== false
651
+ ? "workspace manifest did not confirm raw prompts were excluded"
652
+ : undefined,
653
+ ].filter((value) => value !== undefined);
654
+ return failures.length === 0
655
+ ? result(assertion, "pass", `Workspace manifest ${manifest.id} is release-gate ready (${manifest.files.length} file(s), ${manifest.toolAdapters.length} tool adapter(s), ${manifest.hydration.mode}).`, workspaceEvidence(manifest))
656
+ : fail(assertion, `Workspace manifest is not release-gate ready: ${failures.join("; ")}.`, workspaceEvidence(manifest));
657
+ }
658
+ case "efficiency.budget": {
659
+ const maxEvents = assertion.maxEvents ?? Number.POSITIVE_INFINITY;
660
+ const maxToolCalls = assertion.maxToolCalls ?? Number.POSITIVE_INFINITY;
661
+ const maxDeltas = assertion.maxReplayDeltas ?? Number.POSITIVE_INFINITY;
662
+ const maxFailures = assertion.maxScoreFailures ?? Number.POSITIVE_INFINITY;
663
+ const maxWarnings = assertion.maxScoreWarnings ?? Number.POSITIVE_INFINITY;
664
+ const observedToolCalls = countToolCalls(inputs.trajectory);
665
+ const observedFailures = scoreFailures(inputs.score);
666
+ const observedWarnings = scoreWarnings(inputs.score);
667
+ const exceeded = inputs.trajectory.counts.events > maxEvents ||
668
+ observedToolCalls > maxToolCalls ||
669
+ inputs.replay.counts.deltas > maxDeltas ||
670
+ observedFailures > maxFailures ||
671
+ observedWarnings > maxWarnings;
672
+ const message = `Observed events=${inputs.trajectory.counts.events}, toolCalls=${observedToolCalls}, replayDeltas=${inputs.replay.counts.deltas}, scoreFailures=${observedFailures}, scoreWarnings=${observedWarnings}.`;
673
+ return exceeded
674
+ ? fail(assertion, `Efficiency budget exceeded. ${message}`)
675
+ : result(assertion, "pass", `Efficiency budget satisfied. ${message}`);
676
+ }
677
+ case "provenance.chain": {
678
+ if (!assertion.eventId) {
679
+ return fail(assertion, "provenance.chain requires eventId.");
680
+ }
681
+ const event = inputs.trajectory.events.find((item) => item.id === assertion.eventId);
682
+ if (!event) {
683
+ return fail(assertion, `Missing provenance event ${assertion.eventId}.`);
684
+ }
685
+ const kinds = new Set(event.evidence.map((anchor) => anchor.kind));
686
+ const missing = (assertion.requiredEvidenceKinds ?? []).filter((kind) => !kinds.has(kind));
687
+ return missing.length === 0
688
+ ? result(assertion, "pass", `Event ${assertion.eventId} includes required provenance anchors.`, evidenceFromEvents([event]))
689
+ : fail(assertion, `Event ${assertion.eventId} is missing provenance anchors: ${missing.join(", ")}.`, evidenceFromEvents([event]));
690
+ }
691
+ case "human.review": {
692
+ const missing = (assertion.requiredLabels ?? []).filter((label) => !scenario.reviewLabels.includes(label));
693
+ return missing.length === 0
694
+ ? result(assertion, "pass", `Human review labels present: ${(assertion.requiredLabels ?? []).join(", ")}.`, scenarioEvidence(scenario.id, "human-review:labels"))
695
+ : fail(assertion, `Missing human review labels: ${missing.join(", ")}.`, scenarioEvidence(scenario.id, "human-review:labels"));
696
+ }
697
+ case "external.refs": {
698
+ const externalRefs = scenario.externalRefs;
699
+ if (!externalRefs) {
700
+ return fail(assertion, "external.refs requires scenario.externalRefs.");
701
+ }
702
+ const missingKinds = (assertion.requiredExternalRefKinds ?? []).filter((kind) => {
703
+ const values = externalRefs[kind];
704
+ return !Array.isArray(values) || values.length === 0;
705
+ });
706
+ const flattenedRefs = new Set(EXTERNAL_REF_FIELDS.flatMap((field) => externalRefs[field] ?? []));
707
+ const missingRefs = (assertion.requiredExternalRefs ?? []).filter((ref) => !flattenedRefs.has(ref));
708
+ const missing = [...missingKinds, ...missingRefs];
709
+ return missing.length === 0
710
+ ? result(assertion, "pass", `External refs present for ${(assertion.requiredExternalRefKinds ?? []).join(", ")}.`, scenarioEvidence(scenario.id, "external-refs"))
711
+ : fail(assertion, `Missing external refs: ${missing.join(", ")}.`, scenarioEvidence(scenario.id, "external-refs"));
712
+ }
713
+ case "trajectory.diff": {
714
+ if (!diff) {
715
+ return fail(assertion, "trajectory.diff requires baselineTrajectoryPath and candidateTrajectoryPath.");
716
+ }
717
+ const exceeded = diff.eventsDelta >
718
+ (assertion.maxAddedEvents ?? Number.POSITIVE_INFINITY) ||
719
+ diff.toolCallsDelta >
720
+ (assertion.maxAddedToolCalls ?? Number.POSITIVE_INFINITY) ||
721
+ diff.scoreFailuresDelta >
722
+ (assertion.maxAddedScoreFailures ?? Number.POSITIVE_INFINITY);
723
+ const message = `Diff eventsDelta=${diff.eventsDelta}, toolCallsDelta=${diff.toolCallsDelta}, scoreFailuresDelta=${diff.scoreFailuresDelta}.`;
724
+ return exceeded
725
+ ? fail(assertion, `Trajectory diff budget exceeded. ${message}`)
726
+ : result(assertion, "pass", `Trajectory diff budget satisfied. ${message}`);
727
+ }
728
+ }
729
+ const _exhaustive = assertion.kind;
730
+ return fail(assertion, `Unsupported scenario assertion kind: ${_exhaustive}`);
731
+ }
732
+ function buildProvenance(report) {
733
+ return report.events
734
+ .filter((event) => event.evidence.length > 0)
735
+ .map((event) => ({
736
+ eventId: event.id,
737
+ eventType: event.type,
738
+ phase: event.phase,
739
+ actor: event.actor,
740
+ evidence: evidenceFromEvents([event]),
741
+ }));
742
+ }
743
+ export function evaluateAgentTrajectoryScenario(scenario, inputs) {
744
+ const diff = buildDiff(inputs);
745
+ const releaseGate = buildReleaseGateSummary(scenario, inputs);
746
+ const workspace = buildWorkspaceSummary(inputs.workspaceManifest);
747
+ const assertions = scenario.assertions.map((assertion) => evaluateAssertion(assertion, scenario, inputs, diff));
748
+ const failed = assertions.filter((assertion) => assertion.status === "fail");
749
+ const warnings = assertions.filter((assertion) => assertion.status === "warn");
750
+ const observedOutcome = failed.length > 0 ? "fail" : "pass";
751
+ return {
752
+ schemaVersion: AGENT_TRAJECTORY_SCENARIO_RESULT_SCHEMA,
753
+ scenarioSchemaVersion: MAESTRO_SCENARIO_SCHEMA,
754
+ scenario: {
755
+ id: scenario.id,
756
+ title: scenario.title,
757
+ expectedOutcome: scenario.expectedOutcome ?? "pass",
758
+ observedOutcome,
759
+ reviewLabels: scenario.reviewLabels,
760
+ },
761
+ ...(scenario.externalRefs ? { externalRefs: scenario.externalRefs } : {}),
762
+ run: {
763
+ ...inputs.trajectory.run,
764
+ scenarioId: scenario.id,
765
+ replay: true,
766
+ },
767
+ counts: {
768
+ assertions: assertions.length,
769
+ passed: assertions.filter((assertion) => assertion.status === "pass")
770
+ .length,
771
+ failed: failed.length,
772
+ warnings: warnings.length,
773
+ events: inputs.trajectory.counts.events,
774
+ toolCalls: countToolCalls(inputs.trajectory),
775
+ replayDeltas: inputs.replay.counts.deltas,
776
+ scoreFailures: scoreFailures(inputs.score),
777
+ scoreWarnings: scoreWarnings(inputs.score),
778
+ workspaceFiles: inputs.workspaceManifest?.files.length ?? 0,
779
+ toolAdapters: inputs.workspaceManifest?.toolAdapters.length ?? 0,
780
+ },
781
+ platform: {
782
+ ...scenario.platform,
783
+ evidenceEventType: "maestro.events.eval.scored",
784
+ },
785
+ ...(releaseGate ? { releaseGate } : {}),
786
+ ...(workspace ? { workspace } : {}),
787
+ assumptions: scenario.assumptions,
788
+ assertions,
789
+ provenance: buildProvenance(inputs.trajectory),
790
+ ...(diff ? { diff } : {}),
791
+ };
792
+ }
793
+ export function scenarioResultToJunit(result) {
794
+ const outcomeMatches = result.scenario.observedOutcome === result.scenario.expectedOutcome;
795
+ const failures = result.assertions.filter((assertion) => assertion.status === "fail");
796
+ const testcases = result.assertions
797
+ .map((assertion) => {
798
+ const failure = !outcomeMatches && assertion.status === "fail"
799
+ ? `\n\t\t<failure message="${escapeXml(assertion.message)}">${escapeXml(JSON.stringify(assertion.evidence))}</failure>\n\t`
800
+ : "";
801
+ const expectedFailureOutput = outcomeMatches && assertion.status === "fail"
802
+ ? `\n\t\t<system-out>${escapeXml([
803
+ `Expected failing assertion observed: ${assertion.message}`,
804
+ JSON.stringify(assertion.evidence),
805
+ ].join("\n"))}</system-out>\n\t`
806
+ : "";
807
+ return `\t<testcase classname="${escapeXml(result.scenario.id)}" name="${escapeXml(assertion.id)}">${failure}${expectedFailureOutput}</testcase>`;
808
+ })
809
+ .join("\n");
810
+ const outcomeFailure = !outcomeMatches && failures.length === 0
811
+ ? `\t<testcase classname="${escapeXml(result.scenario.id)}" name="scenario-outcome">\n\t\t<failure message="${escapeXml(`Observed outcome ${result.scenario.observedOutcome}; expected ${result.scenario.expectedOutcome}.`)}"></failure>\n\t</testcase>\n`
812
+ : "";
813
+ const failureCount = outcomeMatches ? 0 : Math.max(1, failures.length);
814
+ const testCount = result.counts.assertions + (outcomeFailure ? 1 : 0);
815
+ return `<?xml version="1.0" encoding="UTF-8"?>\n<testsuite name="${escapeXml(result.scenario.id)}" tests="${testCount}" failures="${failureCount}" warnings="${result.counts.warnings}">\n${outcomeFailure}${testcases}\n</testsuite>\n`;
816
+ }
817
+ export function runAgentTrajectoryScenarioFile(path, options = {}) {
818
+ const scenario = loadAgentTrajectoryScenario(path);
819
+ const inputs = loadAgentTrajectoryScenarioInputs(scenario, options.baseDir ?? process.cwd());
820
+ return evaluateAgentTrajectoryScenario(scenario, inputs);
821
+ }
822
+ //# sourceMappingURL=agent-trajectory-scenarios.js.map