@evalops/maestro 0.10.49 → 0.10.51

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 (422) hide show
  1. package/dist/agent/agent-outcome.d.ts +54 -0
  2. package/dist/agent/agent-outcome.d.ts.map +1 -0
  3. package/dist/agent/agent-outcome.js +142 -0
  4. package/dist/agent/agent-outcome.js.map +1 -0
  5. package/dist/agent/agent-resume.d.ts.map +1 -1
  6. package/dist/agent/agent-resume.js +3 -3
  7. package/dist/agent/agent-resume.js.map +1 -1
  8. package/dist/agent/agent-run-summary.d.ts +37 -0
  9. package/dist/agent/agent-run-summary.d.ts.map +1 -0
  10. package/dist/agent/agent-run-summary.js +15 -0
  11. package/dist/agent/agent-run-summary.js.map +1 -0
  12. package/dist/agent/agent-work-board.d.ts +82 -0
  13. package/dist/agent/agent-work-board.d.ts.map +1 -0
  14. package/dist/agent/agent-work-board.js +312 -0
  15. package/dist/agent/agent-work-board.js.map +1 -0
  16. package/dist/agent/auto-compaction.d.ts +7 -2
  17. package/dist/agent/auto-compaction.d.ts.map +1 -1
  18. package/dist/agent/auto-compaction.js +23 -10
  19. package/dist/agent/auto-compaction.js.map +1 -1
  20. package/dist/agent/mission-artifacts.d.ts +62 -0
  21. package/dist/agent/mission-artifacts.d.ts.map +1 -0
  22. package/dist/agent/mission-artifacts.js +438 -0
  23. package/dist/agent/mission-artifacts.js.map +1 -0
  24. package/dist/agent/mission-manifest.d.ts +139 -3
  25. package/dist/agent/mission-manifest.d.ts.map +1 -1
  26. package/dist/agent/mission-manifest.js +549 -3
  27. package/dist/agent/mission-manifest.js.map +1 -1
  28. package/dist/agent/mission-store.d.ts +80 -0
  29. package/dist/agent/mission-store.d.ts.map +1 -0
  30. package/dist/agent/mission-store.js +603 -0
  31. package/dist/agent/mission-store.js.map +1 -0
  32. package/dist/agent/modes.d.ts +2 -2
  33. package/dist/agent/modes.d.ts.map +1 -1
  34. package/dist/agent/modes.js +10 -3
  35. package/dist/agent/modes.js.map +1 -1
  36. package/dist/agent/providers/codex-app-server.d.ts.map +1 -1
  37. package/dist/agent/providers/codex-app-server.js +1 -3
  38. package/dist/agent/providers/codex-app-server.js.map +1 -1
  39. package/dist/agent/providers/google-gemini-cli.js +203 -107
  40. package/dist/agent/providers/google.js +100 -41
  41. package/dist/agent/providers/scripted.d.ts.map +1 -1
  42. package/dist/agent/providers/scripted.js +1 -3
  43. package/dist/agent/providers/scripted.js.map +1 -1
  44. package/dist/agent/providers/validation.d.ts.map +1 -1
  45. package/dist/agent/providers/validation.js +1 -3
  46. package/dist/agent/providers/validation.js.map +1 -1
  47. package/dist/agent/providers/vertex.js +203 -107
  48. package/dist/agent/snapshot-store.d.ts +32 -0
  49. package/dist/agent/snapshot-store.d.ts.map +1 -0
  50. package/dist/agent/snapshot-store.js +195 -0
  51. package/dist/agent/snapshot-store.js.map +1 -0
  52. package/dist/agent/specialist-profiles.d.ts +36 -0
  53. package/dist/agent/specialist-profiles.d.ts.map +1 -0
  54. package/dist/agent/specialist-profiles.js +159 -0
  55. package/dist/agent/specialist-profiles.js.map +1 -0
  56. package/dist/agent/subagent-specs.d.ts +4 -1
  57. package/dist/agent/subagent-specs.d.ts.map +1 -1
  58. package/dist/agent/subagent-specs.js +81 -8
  59. package/dist/agent/subagent-specs.js.map +1 -1
  60. package/dist/agent/swarm/coverage-gate.d.ts +37 -0
  61. package/dist/agent/swarm/coverage-gate.d.ts.map +1 -0
  62. package/dist/agent/swarm/coverage-gate.js +48 -0
  63. package/dist/agent/swarm/coverage-gate.js.map +1 -0
  64. package/dist/agent/swarm/executor.d.ts +1 -0
  65. package/dist/agent/swarm/executor.d.ts.map +1 -1
  66. package/dist/agent/swarm/executor.js +151 -15
  67. package/dist/agent/swarm/executor.js.map +1 -1
  68. package/dist/agent/swarm/orchestrator-prompt.d.ts +25 -0
  69. package/dist/agent/swarm/orchestrator-prompt.d.ts.map +1 -0
  70. package/dist/agent/swarm/orchestrator-prompt.js +48 -0
  71. package/dist/agent/swarm/orchestrator-prompt.js.map +1 -0
  72. package/dist/agent/swarm/plan-parser.d.ts.map +1 -1
  73. package/dist/agent/swarm/plan-parser.js +27 -2
  74. package/dist/agent/swarm/plan-parser.js.map +1 -1
  75. package/dist/agent/swarm/types.d.ts +17 -0
  76. package/dist/agent/swarm/types.d.ts.map +1 -1
  77. package/dist/agent/swarm/types.js.map +1 -1
  78. package/dist/agent/swarm/validation-directive.d.ts +21 -0
  79. package/dist/agent/swarm/validation-directive.d.ts.map +1 -0
  80. package/dist/agent/swarm/validation-directive.js +25 -0
  81. package/dist/agent/swarm/validation-directive.js.map +1 -0
  82. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  83. package/dist/agent/transport/tool-execution-bridge.js +4 -1
  84. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  85. package/dist/api/enterprise-routes.d.ts.map +1 -1
  86. package/dist/api/enterprise-routes.js +87 -10
  87. package/dist/api/enterprise-routes.js.map +1 -1
  88. package/dist/api/org-settings-merge.d.ts +12 -0
  89. package/dist/api/org-settings-merge.d.ts.map +1 -0
  90. package/dist/api/org-settings-merge.js +38 -0
  91. package/dist/api/org-settings-merge.js.map +1 -0
  92. package/dist/api/user-settings-merge.d.ts +16 -0
  93. package/dist/api/user-settings-merge.d.ts.map +1 -0
  94. package/dist/api/user-settings-merge.js +37 -0
  95. package/dist/api/user-settings-merge.js.map +1 -0
  96. package/dist/app-server/daemon-lifecycle-api.d.ts.map +1 -1
  97. package/dist/app-server/daemon-lifecycle-api.js +1 -3
  98. package/dist/app-server/daemon-lifecycle-api.js.map +1 -1
  99. package/dist/app-server/external-agent-import-api.d.ts.map +1 -1
  100. package/dist/app-server/external-agent-import-api.js +1 -3
  101. package/dist/app-server/external-agent-import-api.js.map +1 -1
  102. package/dist/app-server/network-governance-api.d.ts.map +1 -1
  103. package/dist/app-server/network-governance-api.js +1 -3
  104. package/dist/app-server/network-governance-api.js.map +1 -1
  105. package/dist/app-server/plugin-bundle-api.d.ts.map +1 -1
  106. package/dist/app-server/plugin-bundle-api.js +1 -3
  107. package/dist/app-server/plugin-bundle-api.js.map +1 -1
  108. package/dist/app-server/policy-control-api.d.ts.map +1 -1
  109. package/dist/app-server/policy-control-api.js +1 -3
  110. package/dist/app-server/policy-control-api.js.map +1 -1
  111. package/dist/app-server/protocol-modes-api.d.ts.map +1 -1
  112. package/dist/app-server/protocol-modes-api.js +1 -3
  113. package/dist/app-server/protocol-modes-api.js.map +1 -1
  114. package/dist/cli/args.d.ts +2 -0
  115. package/dist/cli/args.d.ts.map +1 -1
  116. package/dist/cli/args.js +15 -0
  117. package/dist/cli/args.js.map +1 -1
  118. package/dist/cli/commands/a2a.d.ts.map +1 -1
  119. package/dist/cli/commands/a2a.js +1 -3
  120. package/dist/cli/commands/a2a.js.map +1 -1
  121. package/dist/cli/commands/agents.d.ts +4 -0
  122. package/dist/cli/commands/agents.d.ts.map +1 -1
  123. package/dist/cli/commands/agents.js +149 -0
  124. package/dist/cli/commands/agents.js.map +1 -1
  125. package/dist/cli/commands/mission.d.ts +4 -0
  126. package/dist/cli/commands/mission.d.ts.map +1 -0
  127. package/dist/cli/commands/mission.js +196 -0
  128. package/dist/cli/commands/mission.js.map +1 -0
  129. package/dist/cli/commands/value.d.ts +10 -0
  130. package/dist/cli/commands/value.d.ts.map +1 -0
  131. package/dist/cli/commands/value.js +33 -0
  132. package/dist/cli/commands/value.js.map +1 -0
  133. package/dist/cli/headless-protocol.d.ts.map +1 -1
  134. package/dist/cli/headless-protocol.js +1 -3
  135. package/dist/cli/headless-protocol.js.map +1 -1
  136. package/dist/cli/help.d.ts.map +1 -1
  137. package/dist/cli/help.js +10 -0
  138. package/dist/cli/help.js.map +1 -1
  139. package/dist/cli/system-prompt.d.ts.map +1 -1
  140. package/dist/cli/system-prompt.js +38 -7
  141. package/dist/cli/system-prompt.js.map +1 -1
  142. package/dist/cli-command-runtime.js +2 -2
  143. package/dist/cli-command-runtime.js.map +1 -1
  144. package/dist/cli-runtime.js +7798 -2805
  145. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
  146. package/dist/cli-tui/client-tools/client-tool-controller.js +1 -3
  147. package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
  148. package/dist/cli-tui/commands/undo-handlers.d.ts.map +1 -1
  149. package/dist/cli-tui/commands/undo-handlers.js +7 -2
  150. package/dist/cli-tui/commands/undo-handlers.js.map +1 -1
  151. package/dist/cli-tui/tui-renderer/skills-controller.d.ts +3 -0
  152. package/dist/cli-tui/tui-renderer/skills-controller.d.ts.map +1 -1
  153. package/dist/cli-tui/tui-renderer/skills-controller.js +77 -33
  154. package/dist/cli-tui/tui-renderer/skills-controller.js.map +1 -1
  155. package/dist/cli.js +4 -6
  156. package/dist/cli.js.map +1 -1
  157. package/dist/codex/app-server-client.d.ts.map +1 -1
  158. package/dist/codex/app-server-client.js +1 -3
  159. package/dist/codex/app-server-client.js.map +1 -1
  160. package/dist/codex/compatibility.d.ts.map +1 -1
  161. package/dist/codex/compatibility.js +1 -3
  162. package/dist/codex/compatibility.js.map +1 -1
  163. package/dist/codex/subagent-dispatch-table.d.ts +8 -0
  164. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -1
  165. package/dist/codex/subagent-dispatch-table.js +23 -0
  166. package/dist/codex/subagent-dispatch-table.js.map +1 -1
  167. package/dist/context/manifest.d.ts.map +1 -1
  168. package/dist/context/manifest.js +1 -3
  169. package/dist/context/manifest.js.map +1 -1
  170. package/dist/conversation/render-model.d.ts +0 -36
  171. package/dist/conversation/render-model.d.ts.map +1 -1
  172. package/dist/conversation/render-model.js +1 -3
  173. package/dist/conversation/render-model.js.map +1 -1
  174. package/dist/customer-value/ambient-learning.d.ts +75 -0
  175. package/dist/customer-value/ambient-learning.d.ts.map +1 -0
  176. package/dist/customer-value/ambient-learning.js +472 -0
  177. package/dist/customer-value/ambient-learning.js.map +1 -0
  178. package/dist/customer-value/internal-helpers.d.ts +13 -0
  179. package/dist/customer-value/internal-helpers.d.ts.map +1 -0
  180. package/dist/customer-value/internal-helpers.js +70 -0
  181. package/dist/customer-value/internal-helpers.js.map +1 -0
  182. package/dist/customer-value/report.d.ts +282 -0
  183. package/dist/customer-value/report.d.ts.map +1 -0
  184. package/dist/customer-value/report.js +2085 -0
  185. package/dist/customer-value/report.js.map +1 -0
  186. package/dist/db/health.d.ts +1 -1
  187. package/dist/db/health.d.ts.map +1 -1
  188. package/dist/db/health.js +10 -0
  189. package/dist/db/health.js.map +1 -1
  190. package/dist/db/migrations/0009_operating_layer_evidence.sql +30 -0
  191. package/dist/db/migrations/meta/_journal.json +7 -0
  192. package/dist/db/schema.d.ts +268 -1
  193. package/dist/db/schema.d.ts.map +1 -1
  194. package/dist/db/schema.js +28 -0
  195. package/dist/db/schema.js.map +1 -1
  196. package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
  197. package/dist/evalops/agent-bootstrap.js +1 -3
  198. package/dist/evalops/agent-bootstrap.js.map +1 -1
  199. package/dist/evalops/agent-mcp-metadata.d.ts.map +1 -1
  200. package/dist/evalops/agent-mcp-metadata.js +1 -3
  201. package/dist/evalops/agent-mcp-metadata.js.map +1 -1
  202. package/dist/index.d.ts +1 -0
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +1 -0
  205. package/dist/index.js.map +1 -1
  206. package/dist/installers/maestro-review-workflow.d.ts +38 -0
  207. package/dist/installers/maestro-review-workflow.d.ts.map +1 -0
  208. package/dist/installers/maestro-review-workflow.js +163 -0
  209. package/dist/installers/maestro-review-workflow.js.map +1 -0
  210. package/dist/load-env.d.ts +13 -0
  211. package/dist/load-env.d.ts.map +1 -1
  212. package/dist/load-env.js +17 -0
  213. package/dist/load-env.js.map +1 -1
  214. package/dist/main.d.ts.map +1 -1
  215. package/dist/main.js +96 -7
  216. package/dist/main.js.map +1 -1
  217. package/dist/mcp/config.d.ts.map +1 -1
  218. package/dist/mcp/config.js +1 -3
  219. package/dist/mcp/config.js.map +1 -1
  220. package/dist/mcp/elicitation.d.ts.map +1 -1
  221. package/dist/mcp/elicitation.js +1 -3
  222. package/dist/mcp/elicitation.js.map +1 -1
  223. package/dist/mcp/official-registry.d.ts.map +1 -1
  224. package/dist/mcp/official-registry.js +1 -3
  225. package/dist/mcp/official-registry.js.map +1 -1
  226. package/dist/mcp/workspace-trust.d.ts.map +1 -1
  227. package/dist/mcp/workspace-trust.js +1 -3
  228. package/dist/mcp/workspace-trust.js.map +1 -1
  229. package/dist/memory/service-client.d.ts.map +1 -1
  230. package/dist/memory/service-client.js +1 -3
  231. package/dist/memory/service-client.js.map +1 -1
  232. package/dist/models/config-loader.d.ts.map +1 -1
  233. package/dist/models/config-loader.js +1 -3
  234. package/dist/models/config-loader.js.map +1 -1
  235. package/dist/node_modules/@evalops/contracts/dist/index.d.ts +1 -0
  236. package/dist/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  237. package/dist/node_modules/@evalops/contracts/dist/index.js +1 -0
  238. package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  239. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts +61 -0
  240. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts.map +1 -0
  241. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js +183 -0
  242. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js.map +1 -0
  243. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  244. package/dist/node_modules/@evalops/tui/package.json +1 -1
  245. package/dist/oauth/connectors.d.ts.map +1 -1
  246. package/dist/oauth/connectors.js +1 -3
  247. package/dist/oauth/connectors.js.map +1 -1
  248. package/dist/oauth/evalops.d.ts.map +1 -1
  249. package/dist/oauth/evalops.js +1 -3
  250. package/dist/oauth/evalops.js.map +1 -1
  251. package/dist/platform/a2a-client.d.ts.map +1 -1
  252. package/dist/platform/a2a-client.js +1 -3
  253. package/dist/platform/a2a-client.js.map +1 -1
  254. package/dist/platform/a2a-cockpit.d.ts +1 -0
  255. package/dist/platform/a2a-cockpit.d.ts.map +1 -1
  256. package/dist/platform/a2a-cockpit.js +42 -11
  257. package/dist/platform/a2a-cockpit.js.map +1 -1
  258. package/dist/platform/a2a-completion-audit.d.ts +1 -1
  259. package/dist/platform/a2a-completion-audit.d.ts.map +1 -1
  260. package/dist/platform/a2a-completion-audit.js +7 -11
  261. package/dist/platform/a2a-completion-audit.js.map +1 -1
  262. package/dist/platform/a2a-maestro-peer.js +16 -0
  263. package/dist/platform/a2a-maestro-peer.js.map +1 -1
  264. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -1
  265. package/dist/platform/a2a-peer-pairing.js +1 -3
  266. package/dist/platform/a2a-peer-pairing.js.map +1 -1
  267. package/dist/platform/a2a-peer-registry.d.ts.map +1 -1
  268. package/dist/platform/a2a-peer-registry.js +1 -3
  269. package/dist/platform/a2a-peer-registry.js.map +1 -1
  270. package/dist/platform/a2a-task-ledger.d.ts +20 -0
  271. package/dist/platform/a2a-task-ledger.d.ts.map +1 -1
  272. package/dist/platform/a2a-task-ledger.js +207 -11
  273. package/dist/platform/a2a-task-ledger.js.map +1 -1
  274. package/dist/platform/a2a-work-graph.d.ts.map +1 -1
  275. package/dist/platform/a2a-work-graph.js +1 -3
  276. package/dist/platform/a2a-work-graph.js.map +1 -1
  277. package/dist/platform/operating-layer.d.ts +127 -0
  278. package/dist/platform/operating-layer.d.ts.map +1 -0
  279. package/dist/platform/operating-layer.js +360 -0
  280. package/dist/platform/operating-layer.js.map +1 -0
  281. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  282. package/dist/platform/tool-execution-client.js +19 -2
  283. package/dist/platform/tool-execution-client.js.map +1 -1
  284. package/dist/providers/auth.d.ts.map +1 -1
  285. package/dist/providers/auth.js +1 -3
  286. package/dist/providers/auth.js.map +1 -1
  287. package/dist/runtime/env.d.ts +9 -1
  288. package/dist/runtime/env.d.ts.map +1 -1
  289. package/dist/runtime/env.js +63 -1
  290. package/dist/runtime/env.js.map +1 -1
  291. package/dist/safety/policy.d.ts.map +1 -1
  292. package/dist/safety/policy.js +1 -4
  293. package/dist/safety/policy.js.map +1 -1
  294. package/dist/sandbox/docker-sandbox.d.ts.map +1 -1
  295. package/dist/sandbox/docker-sandbox.js +6 -1
  296. package/dist/sandbox/docker-sandbox.js.map +1 -1
  297. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  298. package/dist/server/handlers/hosted-runner-drain.js +1 -3
  299. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  300. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
  301. package/dist/server/handlers/platform-a2a-push.js +53 -2
  302. package/dist/server/handlers/platform-a2a-push.js.map +1 -1
  303. package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -1
  304. package/dist/server/handlers/runtime-app-server-ws.js +1 -3
  305. package/dist/server/handlers/runtime-app-server-ws.js.map +1 -1
  306. package/dist/server/headless-runtime-service.d.ts +16 -0
  307. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  308. package/dist/server/headless-runtime-service.js +232 -206
  309. package/dist/server/headless-runtime-service.js.map +1 -1
  310. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -1
  311. package/dist/server/hosted-agent-runtime-progress.js +12 -3
  312. package/dist/server/hosted-agent-runtime-progress.js.map +1 -1
  313. package/dist/server/pending-request-payload.d.ts.map +1 -1
  314. package/dist/server/pending-request-payload.js +1 -3
  315. package/dist/server/pending-request-payload.js.map +1 -1
  316. package/dist/server/route-auth.d.ts.map +1 -1
  317. package/dist/server/route-auth.js +2 -0
  318. package/dist/server/route-auth.js.map +1 -1
  319. package/dist/server/session-serialization.d.ts.map +1 -1
  320. package/dist/server/session-serialization.js +1 -3
  321. package/dist/server/session-serialization.js.map +1 -1
  322. package/dist/services/compliance/normalize.d.ts.map +1 -1
  323. package/dist/services/compliance/normalize.js +1 -3
  324. package/dist/services/compliance/normalize.js.map +1 -1
  325. package/dist/services/intelligent-router/normalize.d.ts.map +1 -1
  326. package/dist/services/intelligent-router/normalize.js +1 -3
  327. package/dist/services/intelligent-router/normalize.js.map +1 -1
  328. package/dist/services/revenue-attribution/normalize.d.ts.map +1 -1
  329. package/dist/services/revenue-attribution/normalize.js +1 -3
  330. package/dist/services/revenue-attribution/normalize.js.map +1 -1
  331. package/dist/services/traces/normalize.d.ts.map +1 -1
  332. package/dist/services/traces/normalize.js +1 -3
  333. package/dist/services/traces/normalize.js.map +1 -1
  334. package/dist/services/workspace-config/normalize.d.ts.map +1 -1
  335. package/dist/services/workspace-config/normalize.js +1 -3
  336. package/dist/services/workspace-config/normalize.js.map +1 -1
  337. package/dist/skills/composer.d.ts.map +1 -1
  338. package/dist/skills/composer.js +13 -1
  339. package/dist/skills/composer.js.map +1 -1
  340. package/dist/skills/index.d.ts +1 -0
  341. package/dist/skills/index.d.ts.map +1 -1
  342. package/dist/skills/index.js +1 -0
  343. package/dist/skills/index.js.map +1 -1
  344. package/dist/skills/learned-guidelines.d.ts +33 -0
  345. package/dist/skills/learned-guidelines.d.ts.map +1 -0
  346. package/dist/skills/learned-guidelines.js +291 -0
  347. package/dist/skills/learned-guidelines.js.map +1 -0
  348. package/dist/skills/linter.d.ts.map +1 -1
  349. package/dist/skills/linter.js +1 -3
  350. package/dist/skills/linter.js.map +1 -1
  351. package/dist/skills/runtime-activation.d.ts +1 -0
  352. package/dist/skills/runtime-activation.d.ts.map +1 -1
  353. package/dist/skills/runtime-activation.js +2 -3
  354. package/dist/skills/runtime-activation.js.map +1 -1
  355. package/dist/skills/tool.d.ts.map +1 -1
  356. package/dist/skills/tool.js +26 -21
  357. package/dist/skills/tool.js.map +1 -1
  358. package/dist/skills/trust-cache.d.ts +7 -0
  359. package/dist/skills/trust-cache.d.ts.map +1 -1
  360. package/dist/skills/trust-cache.js +16 -0
  361. package/dist/skills/trust-cache.js.map +1 -1
  362. package/dist/telemetry/agent-workforce-native-event.d.ts.map +1 -1
  363. package/dist/telemetry/agent-workforce-native-event.js +1 -3
  364. package/dist/telemetry/agent-workforce-native-event.js.map +1 -1
  365. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  366. package/dist/telemetry/maestro-event-bus.js +42 -81
  367. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  368. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  369. package/dist/telemetry/maestro-platform-replay-fixture.js +1 -3
  370. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  371. package/dist/telemetry.d.ts.map +1 -1
  372. package/dist/telemetry.js +54 -43
  373. package/dist/telemetry.js.map +1 -1
  374. package/dist/theme/theme-loader.d.ts.map +1 -1
  375. package/dist/theme/theme-loader.js +1 -3
  376. package/dist/theme/theme-loader.js.map +1 -1
  377. package/dist/tools/apply-patch.d.ts.map +1 -1
  378. package/dist/tools/apply-patch.js +76 -8
  379. package/dist/tools/apply-patch.js.map +1 -1
  380. package/dist/tools/diff-preview.d.ts.map +1 -1
  381. package/dist/tools/diff-preview.js +10 -1
  382. package/dist/tools/diff-preview.js.map +1 -1
  383. package/dist/tools/edit.d.ts.map +1 -1
  384. package/dist/tools/edit.js +17 -0
  385. package/dist/tools/edit.js.map +1 -1
  386. package/dist/tools/write.d.ts.map +1 -1
  387. package/dist/tools/write.js +9 -0
  388. package/dist/tools/write.js.map +1 -1
  389. package/dist/undo/tracker.d.ts +5 -0
  390. package/dist/undo/tracker.d.ts.map +1 -1
  391. package/dist/undo/tracker.js +13 -0
  392. package/dist/undo/tracker.js.map +1 -1
  393. package/dist/utils/fs.d.ts +1 -1
  394. package/dist/utils/fs.d.ts.map +1 -1
  395. package/dist/utils/fs.js +29 -2
  396. package/dist/utils/fs.js.map +1 -1
  397. package/dist/utils/git-stash.d.ts.map +1 -1
  398. package/dist/utils/git-stash.js +15 -8
  399. package/dist/utils/git-stash.js.map +1 -1
  400. package/dist/utils/json.d.ts +11 -0
  401. package/dist/utils/json.d.ts.map +1 -1
  402. package/dist/utils/json.js +9 -0
  403. package/dist/utils/json.js.map +1 -1
  404. package/dist/utils/shell-env.d.ts.map +1 -1
  405. package/dist/utils/shell-env.js +2 -0
  406. package/dist/utils/shell-env.js.map +1 -1
  407. package/dist/utils/url-extractor-git.d.ts +26 -0
  408. package/dist/utils/url-extractor-git.d.ts.map +1 -0
  409. package/dist/utils/url-extractor-git.js +259 -0
  410. package/dist/utils/url-extractor-git.js.map +1 -0
  411. package/dist/utils/url-extractor.d.ts.map +1 -1
  412. package/dist/utils/url-extractor.js +23 -251
  413. package/dist/utils/url-extractor.js.map +1 -1
  414. package/dist/version.json +2 -2
  415. package/dist/web-server.d.ts.map +1 -1
  416. package/dist/web-server.js +2 -5
  417. package/dist/web-server.js.map +1 -1
  418. package/package.json +310 -306
  419. package/skills/incident-triage/SKILL.md +19 -1
  420. package/skills/install-code-review/SKILL.md +69 -0
  421. package/skills/security-review/SKILL.md +68 -0
  422. package/skills/security-review/reference/rubric.md +85 -0
@@ -0,0 +1,360 @@
1
+ export const MAESTRO_OPERATING_LAYER_VERSION = "evalops.maestro.operating-layer.v1";
2
+ export const OPERATING_LAYER_CAPABILITIES = [
3
+ {
4
+ id: "protocol-boundary",
5
+ name: "Protocol boundary",
6
+ description: "Treats versioned protocols as the product integration surface.",
7
+ evidenceKinds: ["protocol.version", "protocol.contract", "protocol.owner"],
8
+ },
9
+ {
10
+ id: "policy-resolution",
11
+ name: "Policy resolution",
12
+ description: "Explains the source and override chain for resolved settings.",
13
+ evidenceKinds: ["policy.subject", "policy.source", "policy.resolved_value"],
14
+ },
15
+ {
16
+ id: "sync-outbox",
17
+ name: "Sync outbox",
18
+ description: "Classifies cloud/session sync outcomes into durable retry actions.",
19
+ evidenceKinds: ["sync.item", "sync.outcome", "sync.next_action"],
20
+ },
21
+ {
22
+ id: "approval-evidence",
23
+ name: "Approval evidence",
24
+ description: "Normalizes permission decisions across tool and product surfaces.",
25
+ evidenceKinds: [
26
+ "approval.request",
27
+ "approval.decision",
28
+ "approval.surface",
29
+ ],
30
+ },
31
+ {
32
+ id: "extension-governance",
33
+ name: "Extension governance",
34
+ description: "Evaluates extensions against marketplace trust and scope policy.",
35
+ evidenceKinds: [
36
+ "extension.source",
37
+ "extension.signature",
38
+ "extension.scopes",
39
+ ],
40
+ },
41
+ {
42
+ id: "run-readiness",
43
+ name: "Run readiness",
44
+ description: "Scores whether a run has enough evidence to proceed or ship.",
45
+ evidenceKinds: ["readiness.signal", "readiness.score", "readiness.blocker"],
46
+ },
47
+ {
48
+ id: "run-effectiveness",
49
+ name: "Run effectiveness",
50
+ description: "Scores completed work against outcome and confidence signals.",
51
+ evidenceKinds: [
52
+ "effectiveness.signal",
53
+ "effectiveness.score",
54
+ "effectiveness.evidence",
55
+ ],
56
+ },
57
+ {
58
+ id: "release-canary",
59
+ name: "Release canary",
60
+ description: "Defines ordered gates for publish, smoke, replay, and notification.",
61
+ evidenceKinds: ["release.stage", "release.gate", "release.evidence"],
62
+ },
63
+ ];
64
+ function unique(values) {
65
+ return [...new Set(values)];
66
+ }
67
+ function normalizedList(values) {
68
+ return unique((values ?? []).map((value) => value.trim()).filter(Boolean));
69
+ }
70
+ export function buildOperatingLayerManifest() {
71
+ return {
72
+ version: MAESTRO_OPERATING_LAYER_VERSION,
73
+ capabilities: OPERATING_LAYER_CAPABILITIES.map((capability) => ({
74
+ ...capability,
75
+ evidenceKinds: [...capability.evidenceKinds],
76
+ })),
77
+ };
78
+ }
79
+ export function buildProtocolBoundaryDescriptor(input) {
80
+ const owners = normalizedList(input.owners);
81
+ const contracts = normalizedList(input.contracts);
82
+ const reasons = [
83
+ `protocol:${input.protocolId}`,
84
+ `version:${input.version}`,
85
+ ...owners.map((owner) => `owner:${owner}`),
86
+ ...contracts.map((contract) => `contract:${contract}`),
87
+ ];
88
+ return {
89
+ ...input,
90
+ owners,
91
+ contracts,
92
+ compatibility: input.compatibility ?? "experimental",
93
+ reasons,
94
+ };
95
+ }
96
+ export function explainResolvedPolicy(subject, sources) {
97
+ const activeSource = sources.at(-1);
98
+ return {
99
+ subject,
100
+ resolvedValue: activeSource?.value,
101
+ ...(activeSource ? { activeSource } : {}),
102
+ chain: sources.map((source, index) => ({
103
+ ...source,
104
+ overrides: sources.slice(0, index).map((prior) => prior.id),
105
+ })),
106
+ reasons: [
107
+ `subject:${subject}`,
108
+ ...(activeSource ? [`active_source:${activeSource.id}`] : []),
109
+ ...sources.flatMap((source) => source.reason ? [`reason:${source.id}:${source.reason}`] : []),
110
+ ],
111
+ };
112
+ }
113
+ export function classifySyncOutcome(item, outcome) {
114
+ const nextAttempt = item.attempt + 1;
115
+ if (outcome.ok) {
116
+ return {
117
+ action: "complete",
118
+ reason: "sync_ok",
119
+ nextAttempt,
120
+ };
121
+ }
122
+ if (item.attempt >= item.maxAttempts) {
123
+ return {
124
+ action: "block",
125
+ reason: outcome.errorCode ?? "max_attempts_exhausted",
126
+ nextAttempt,
127
+ };
128
+ }
129
+ if (item.kind !== "session_create" &&
130
+ item.sessionId &&
131
+ (outcome.statusCode === 404 || outcome.statusCode === 410)) {
132
+ return {
133
+ action: "self_heal_session",
134
+ reason: "remote_session_missing",
135
+ nextAttempt,
136
+ };
137
+ }
138
+ return {
139
+ action: "retry",
140
+ reason: outcome.errorCode ?? `http_${outcome.statusCode ?? "unknown"}`,
141
+ nextAttempt,
142
+ };
143
+ }
144
+ export function buildApprovalDecisionEvidence(input) {
145
+ const toolNames = normalizedList(input.toolNames);
146
+ const approved = input.decision === "approved";
147
+ return {
148
+ ...input,
149
+ toolNames,
150
+ policyRefs: normalizedList(input.policyRefs),
151
+ approvedTools: approved ? toolNames : [],
152
+ blockedTools: approved ? [] : toolNames,
153
+ reasons: [
154
+ `surface:${input.surface}`,
155
+ `mode:${input.mode}`,
156
+ `decision:${input.decision}`,
157
+ ],
158
+ };
159
+ }
160
+ export function evaluateExtensionGovernance(candidate, policy = {}) {
161
+ const blockers = [];
162
+ const reasons = [`source:${candidate.source}`];
163
+ const allowedSources = new Set(policy.allowedSources ?? []);
164
+ if (policy.allowedSources !== undefined &&
165
+ !allowedSources.has(candidate.source)) {
166
+ blockers.push(`source_not_allowed:${candidate.source}`);
167
+ }
168
+ if (policy.requireSignature && !candidate.signed) {
169
+ blockers.push("signature_required");
170
+ }
171
+ const pinnedRef = candidate.pinnedRef?.trim();
172
+ if (policy.requirePinnedGitRef && candidate.source === "git" && !pinnedRef) {
173
+ blockers.push("pinned_git_ref_required");
174
+ }
175
+ const trustedPublishers = new Set(policy.trustedPublishers ?? []);
176
+ if (candidate.source === "marketplace" &&
177
+ candidate.publisher &&
178
+ trustedPublishers.has(candidate.publisher)) {
179
+ reasons.push(`trusted_publisher:${candidate.publisher}`);
180
+ }
181
+ else if (policy.trustedPublishers !== undefined &&
182
+ candidate.source === "marketplace") {
183
+ blockers.push(`publisher_not_trusted:${candidate.publisher ?? "unknown"}`);
184
+ }
185
+ const allowedScopes = new Set(policy.allowedScopes ?? []);
186
+ const requestedScopes = normalizedList(candidate.requestedScopes);
187
+ for (const scope of requestedScopes) {
188
+ if (policy.allowedScopes !== undefined && !allowedScopes.has(scope)) {
189
+ blockers.push(`scope_not_allowed:${scope}`);
190
+ }
191
+ }
192
+ reasons.push(...requestedScopes.map((scope) => `scope:${scope}`));
193
+ if (candidate.signed) {
194
+ reasons.push("signed");
195
+ }
196
+ if (pinnedRef) {
197
+ reasons.push(`pinned_ref:${pinnedRef}`);
198
+ }
199
+ return {
200
+ allowed: blockers.length === 0,
201
+ blockers: unique(blockers),
202
+ reasons: unique(reasons),
203
+ };
204
+ }
205
+ export function buildRunReadinessReport(signals) {
206
+ return buildScoreReport(signals, "readiness");
207
+ }
208
+ export function buildRunEffectivenessReport(signals) {
209
+ return buildScoreReport(signals, "effectiveness");
210
+ }
211
+ function buildScoreReport(signals, prefix) {
212
+ let earned = 0;
213
+ let possible = 0;
214
+ const blockers = [];
215
+ const warnings = [];
216
+ for (const signal of signals) {
217
+ const weight = signal.weight ?? 1;
218
+ if (signal.status !== "unknown") {
219
+ possible += weight;
220
+ }
221
+ if (signal.status === "pass") {
222
+ earned += weight;
223
+ }
224
+ if (signal.status === "warn") {
225
+ earned += weight / 2;
226
+ warnings.push(`${prefix}:${signal.id}`);
227
+ }
228
+ if (signal.status === "fail") {
229
+ blockers.push(`${prefix}:${signal.id}`);
230
+ }
231
+ }
232
+ return {
233
+ version: MAESTRO_OPERATING_LAYER_VERSION,
234
+ score: possible === 0 ? 0 : Math.round((earned / possible) * 100),
235
+ blockers,
236
+ warnings,
237
+ signals,
238
+ };
239
+ }
240
+ export const DEFAULT_RELEASE_CANARY_STAGES = Object.freeze([
241
+ {
242
+ id: "local_release_gate",
243
+ name: "Local release gate",
244
+ requires: [],
245
+ evidenceKinds: ["lint", "test", "build", "release.check"],
246
+ },
247
+ {
248
+ id: "publish_package",
249
+ name: "Publish package",
250
+ requires: ["local_release_gate"],
251
+ evidenceKinds: ["npm.publish", "git.tag", "github.release"],
252
+ },
253
+ {
254
+ id: "registry_install_smoke",
255
+ name: "Registry install smoke",
256
+ requires: ["publish_package"],
257
+ evidenceKinds: ["npm.install", "cli.smoke"],
258
+ },
259
+ {
260
+ id: "published_replay_evidence",
261
+ name: "Published replay evidence",
262
+ requires: ["registry_install_smoke"],
263
+ evidenceKinds: ["replay.e2e", "evidence.verify"],
264
+ },
265
+ {
266
+ id: "release_notification",
267
+ name: "Release notification",
268
+ requires: ["published_replay_evidence"],
269
+ evidenceKinds: ["release.notes", "channel.notification"],
270
+ },
271
+ ].map((stage) => Object.freeze({
272
+ ...stage,
273
+ requires: Object.freeze([...stage.requires]),
274
+ evidenceKinds: Object.freeze([...stage.evidenceKinds]),
275
+ })));
276
+ export function buildReleaseCanaryPlan(stages) {
277
+ const planStages = cloneReleaseCanaryStages(stages ?? DEFAULT_RELEASE_CANARY_STAGES);
278
+ const stageIds = new Set(planStages.map((stage) => stage.id));
279
+ const stageIndexes = new Map();
280
+ for (const [index, stage] of planStages.entries()) {
281
+ if (!stageIndexes.has(stage.id)) {
282
+ stageIndexes.set(stage.id, index);
283
+ }
284
+ }
285
+ const blockers = [
286
+ ...detectDuplicateReleaseCanaryStages(planStages),
287
+ ...planStages.flatMap((stage) => stage.requires
288
+ .filter((required) => !stageIds.has(required))
289
+ .map((required) => `missing_stage:${stage.id}:${required}`)),
290
+ ...planStages.flatMap((stage, index) => stage.requires
291
+ .filter((required) => {
292
+ const requiredIndex = stageIndexes.get(required);
293
+ return requiredIndex !== undefined && requiredIndex > index;
294
+ })
295
+ .map((required) => `out_of_order_stage:${stage.id}:${required}`)),
296
+ ...detectReleaseCanaryCycles(planStages),
297
+ ];
298
+ return {
299
+ version: MAESTRO_OPERATING_LAYER_VERSION,
300
+ stages: planStages,
301
+ blockers,
302
+ };
303
+ }
304
+ function cloneReleaseCanaryStages(stages) {
305
+ return stages.map((stage) => ({
306
+ ...stage,
307
+ requires: [...stage.requires],
308
+ evidenceKinds: [...stage.evidenceKinds],
309
+ }));
310
+ }
311
+ function detectDuplicateReleaseCanaryStages(stages) {
312
+ const seen = new Set();
313
+ const blockers = [];
314
+ for (const stage of stages) {
315
+ if (seen.has(stage.id)) {
316
+ blockers.push(`duplicate_stage:${stage.id}`);
317
+ }
318
+ seen.add(stage.id);
319
+ }
320
+ return unique(blockers);
321
+ }
322
+ function detectReleaseCanaryCycles(stages) {
323
+ const requirementsById = new Map();
324
+ for (const stage of stages) {
325
+ const requirements = requirementsById.get(stage.id) ?? new Set();
326
+ for (const required of stage.requires) {
327
+ requirements.add(required);
328
+ }
329
+ requirementsById.set(stage.id, requirements);
330
+ }
331
+ const visiting = new Set();
332
+ const visited = new Set();
333
+ const blockers = [];
334
+ function visit(stageId, path) {
335
+ if (visiting.has(stageId)) {
336
+ const cycleStart = path.indexOf(stageId);
337
+ const cycle = path.slice(cycleStart).join(">");
338
+ blockers.push(`cycle:${cycle}`);
339
+ return;
340
+ }
341
+ if (visited.has(stageId)) {
342
+ return;
343
+ }
344
+ const requirements = requirementsById.get(stageId);
345
+ if (!requirements) {
346
+ return;
347
+ }
348
+ visiting.add(stageId);
349
+ for (const required of requirements) {
350
+ visit(required, [...path, required]);
351
+ }
352
+ visiting.delete(stageId);
353
+ visited.add(stageId);
354
+ }
355
+ for (const stage of stages) {
356
+ visit(stage.id, [stage.id]);
357
+ }
358
+ return unique(blockers);
359
+ }
360
+ //# sourceMappingURL=operating-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operating-layer.js","sourceRoot":"","sources":["../../src/platform/operating-layer.ts"],"names":[],"mappings":"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","sourcesContent":["export const MAESTRO_OPERATING_LAYER_VERSION =\n\t\"evalops.maestro.operating-layer.v1\";\n\nexport type OperatingLayerCapabilityId =\n\t| \"protocol-boundary\"\n\t| \"policy-resolution\"\n\t| \"sync-outbox\"\n\t| \"approval-evidence\"\n\t| \"extension-governance\"\n\t| \"run-readiness\"\n\t| \"run-effectiveness\"\n\t| \"release-canary\";\n\nexport interface OperatingLayerCapability {\n\tid: OperatingLayerCapabilityId;\n\tname: string;\n\tdescription: string;\n\tevidenceKinds: string[];\n}\n\nexport interface OperatingLayerManifest {\n\tversion: typeof MAESTRO_OPERATING_LAYER_VERSION;\n\tcapabilities: OperatingLayerCapability[];\n}\n\nexport const OPERATING_LAYER_CAPABILITIES: OperatingLayerCapability[] = [\n\t{\n\t\tid: \"protocol-boundary\",\n\t\tname: \"Protocol boundary\",\n\t\tdescription:\n\t\t\t\"Treats versioned protocols as the product integration surface.\",\n\t\tevidenceKinds: [\"protocol.version\", \"protocol.contract\", \"protocol.owner\"],\n\t},\n\t{\n\t\tid: \"policy-resolution\",\n\t\tname: \"Policy resolution\",\n\t\tdescription:\n\t\t\t\"Explains the source and override chain for resolved settings.\",\n\t\tevidenceKinds: [\"policy.subject\", \"policy.source\", \"policy.resolved_value\"],\n\t},\n\t{\n\t\tid: \"sync-outbox\",\n\t\tname: \"Sync outbox\",\n\t\tdescription:\n\t\t\t\"Classifies cloud/session sync outcomes into durable retry actions.\",\n\t\tevidenceKinds: [\"sync.item\", \"sync.outcome\", \"sync.next_action\"],\n\t},\n\t{\n\t\tid: \"approval-evidence\",\n\t\tname: \"Approval evidence\",\n\t\tdescription:\n\t\t\t\"Normalizes permission decisions across tool and product surfaces.\",\n\t\tevidenceKinds: [\n\t\t\t\"approval.request\",\n\t\t\t\"approval.decision\",\n\t\t\t\"approval.surface\",\n\t\t],\n\t},\n\t{\n\t\tid: \"extension-governance\",\n\t\tname: \"Extension governance\",\n\t\tdescription:\n\t\t\t\"Evaluates extensions against marketplace trust and scope policy.\",\n\t\tevidenceKinds: [\n\t\t\t\"extension.source\",\n\t\t\t\"extension.signature\",\n\t\t\t\"extension.scopes\",\n\t\t],\n\t},\n\t{\n\t\tid: \"run-readiness\",\n\t\tname: \"Run readiness\",\n\t\tdescription: \"Scores whether a run has enough evidence to proceed or ship.\",\n\t\tevidenceKinds: [\"readiness.signal\", \"readiness.score\", \"readiness.blocker\"],\n\t},\n\t{\n\t\tid: \"run-effectiveness\",\n\t\tname: \"Run effectiveness\",\n\t\tdescription:\n\t\t\t\"Scores completed work against outcome and confidence signals.\",\n\t\tevidenceKinds: [\n\t\t\t\"effectiveness.signal\",\n\t\t\t\"effectiveness.score\",\n\t\t\t\"effectiveness.evidence\",\n\t\t],\n\t},\n\t{\n\t\tid: \"release-canary\",\n\t\tname: \"Release canary\",\n\t\tdescription:\n\t\t\t\"Defines ordered gates for publish, smoke, replay, and notification.\",\n\t\tevidenceKinds: [\"release.stage\", \"release.gate\", \"release.evidence\"],\n\t},\n];\n\nexport interface ProtocolBoundaryInput {\n\tprotocolId: string;\n\tversion: string;\n\towners?: string[];\n\tcontracts?: string[];\n\tcompatibility?: \"experimental\" | \"stable\" | \"deprecated\";\n}\n\nexport interface ProtocolBoundaryDescriptor extends ProtocolBoundaryInput {\n\tcompatibility: \"experimental\" | \"stable\" | \"deprecated\";\n\treasons: string[];\n}\n\nexport interface PolicyResolutionSource<T = unknown> {\n\tlayer:\n\t\t| \"default\"\n\t\t| \"runtime\"\n\t\t| \"user\"\n\t\t| \"workspace\"\n\t\t| \"project\"\n\t\t| \"organization\"\n\t\t| \"session\";\n\tid: string;\n\tvalue: T;\n\treason?: string;\n}\n\nexport interface PolicyResolutionExplanation<T = unknown> {\n\tsubject: string;\n\tresolvedValue: T | undefined;\n\tactiveSource?: PolicyResolutionSource<T>;\n\tchain: Array<\n\t\tPolicyResolutionSource<T> & {\n\t\t\toverrides: string[];\n\t\t}\n\t>;\n\treasons: string[];\n}\n\nexport type SyncOutboxKind =\n\t| \"session_create\"\n\t| \"session_update\"\n\t| \"message\"\n\t| \"settings\"\n\t| \"artifact\"\n\t| \"approval\";\n\nexport interface SyncOutboxItem {\n\tid: string;\n\tkind: SyncOutboxKind;\n\tsessionId?: string;\n\tstatus: \"pending\" | \"in_flight\" | \"succeeded\" | \"failed\" | \"blocked\";\n\tattempt: number;\n\tmaxAttempts: number;\n}\n\nexport interface SyncOutcome {\n\tok: boolean;\n\tstatusCode?: number;\n\terrorCode?: string;\n}\n\nexport interface SyncOutboxDecision {\n\taction: \"complete\" | \"retry\" | \"self_heal_session\" | \"block\";\n\treason: string;\n\tnextAttempt: number;\n}\n\nexport interface ApprovalDecisionInput {\n\trequestId: string;\n\tsurface: \"cli\" | \"tui\" | \"web\" | \"mcp\" | \"api\";\n\tmode: \"suggest\" | \"ask\" | \"auto\" | \"deny\";\n\tdecision: \"approved\" | \"denied\" | \"expired\";\n\ttoolNames?: string[];\n\tpolicyRefs?: string[];\n}\n\nexport interface ApprovalDecisionEvidence extends ApprovalDecisionInput {\n\tapprovedTools: string[];\n\tblockedTools: string[];\n\treasons: string[];\n}\n\nexport interface ExtensionCandidate {\n\tid: string;\n\tsource: \"builtin\" | \"marketplace\" | \"local\" | \"git\";\n\tpublisher?: string;\n\tsigned?: boolean;\n\tpinnedRef?: string;\n\trequestedScopes?: string[];\n}\n\nexport interface ExtensionGovernancePolicy {\n\tallowedSources?: ExtensionCandidate[\"source\"][];\n\ttrustedPublishers?: string[];\n\tallowedScopes?: string[];\n\trequireSignature?: boolean;\n\trequirePinnedGitRef?: boolean;\n}\n\nexport interface ExtensionGovernanceDecision {\n\tallowed: boolean;\n\tblockers: string[];\n\treasons: string[];\n}\n\nexport interface OperatingLayerSignal {\n\tid: string;\n\tlabel: string;\n\tstatus: \"pass\" | \"warn\" | \"fail\" | \"unknown\";\n\tweight?: number;\n\tevidence?: string[];\n}\n\nexport interface OperatingLayerScoreReport {\n\tversion: typeof MAESTRO_OPERATING_LAYER_VERSION;\n\tscore: number;\n\tblockers: string[];\n\twarnings: string[];\n\tsignals: OperatingLayerSignal[];\n}\n\nexport interface ReleaseCanaryStage {\n\tid: string;\n\tname: string;\n\trequires: string[];\n\tevidenceKinds: string[];\n}\n\nexport interface ReleaseCanaryPlan {\n\tversion: typeof MAESTRO_OPERATING_LAYER_VERSION;\n\tstages: ReleaseCanaryStage[];\n\tblockers: string[];\n}\n\nfunction unique(values: string[]): string[] {\n\treturn [...new Set(values)];\n}\n\nfunction normalizedList(values: string[] | undefined): string[] {\n\treturn unique((values ?? []).map((value) => value.trim()).filter(Boolean));\n}\n\nexport function buildOperatingLayerManifest(): OperatingLayerManifest {\n\treturn {\n\t\tversion: MAESTRO_OPERATING_LAYER_VERSION,\n\t\tcapabilities: OPERATING_LAYER_CAPABILITIES.map((capability) => ({\n\t\t\t...capability,\n\t\t\tevidenceKinds: [...capability.evidenceKinds],\n\t\t})),\n\t};\n}\n\nexport function buildProtocolBoundaryDescriptor(\n\tinput: ProtocolBoundaryInput,\n): ProtocolBoundaryDescriptor {\n\tconst owners = normalizedList(input.owners);\n\tconst contracts = normalizedList(input.contracts);\n\tconst reasons = [\n\t\t`protocol:${input.protocolId}`,\n\t\t`version:${input.version}`,\n\t\t...owners.map((owner) => `owner:${owner}`),\n\t\t...contracts.map((contract) => `contract:${contract}`),\n\t];\n\n\treturn {\n\t\t...input,\n\t\towners,\n\t\tcontracts,\n\t\tcompatibility: input.compatibility ?? \"experimental\",\n\t\treasons,\n\t};\n}\n\nexport function explainResolvedPolicy<T>(\n\tsubject: string,\n\tsources: PolicyResolutionSource<T>[],\n): PolicyResolutionExplanation<T> {\n\tconst activeSource = sources.at(-1);\n\treturn {\n\t\tsubject,\n\t\tresolvedValue: activeSource?.value,\n\t\t...(activeSource ? { activeSource } : {}),\n\t\tchain: sources.map((source, index) => ({\n\t\t\t...source,\n\t\t\toverrides: sources.slice(0, index).map((prior) => prior.id),\n\t\t})),\n\t\treasons: [\n\t\t\t`subject:${subject}`,\n\t\t\t...(activeSource ? [`active_source:${activeSource.id}`] : []),\n\t\t\t...sources.flatMap((source) =>\n\t\t\t\tsource.reason ? [`reason:${source.id}:${source.reason}`] : [],\n\t\t\t),\n\t\t],\n\t};\n}\n\nexport function classifySyncOutcome(\n\titem: SyncOutboxItem,\n\toutcome: SyncOutcome,\n): SyncOutboxDecision {\n\tconst nextAttempt = item.attempt + 1;\n\tif (outcome.ok) {\n\t\treturn {\n\t\t\taction: \"complete\",\n\t\t\treason: \"sync_ok\",\n\t\t\tnextAttempt,\n\t\t};\n\t}\n\n\tif (item.attempt >= item.maxAttempts) {\n\t\treturn {\n\t\t\taction: \"block\",\n\t\t\treason: outcome.errorCode ?? \"max_attempts_exhausted\",\n\t\t\tnextAttempt,\n\t\t};\n\t}\n\n\tif (\n\t\titem.kind !== \"session_create\" &&\n\t\titem.sessionId &&\n\t\t(outcome.statusCode === 404 || outcome.statusCode === 410)\n\t) {\n\t\treturn {\n\t\t\taction: \"self_heal_session\",\n\t\t\treason: \"remote_session_missing\",\n\t\t\tnextAttempt,\n\t\t};\n\t}\n\n\treturn {\n\t\taction: \"retry\",\n\t\treason: outcome.errorCode ?? `http_${outcome.statusCode ?? \"unknown\"}`,\n\t\tnextAttempt,\n\t};\n}\n\nexport function buildApprovalDecisionEvidence(\n\tinput: ApprovalDecisionInput,\n): ApprovalDecisionEvidence {\n\tconst toolNames = normalizedList(input.toolNames);\n\tconst approved = input.decision === \"approved\";\n\treturn {\n\t\t...input,\n\t\ttoolNames,\n\t\tpolicyRefs: normalizedList(input.policyRefs),\n\t\tapprovedTools: approved ? toolNames : [],\n\t\tblockedTools: approved ? [] : toolNames,\n\t\treasons: [\n\t\t\t`surface:${input.surface}`,\n\t\t\t`mode:${input.mode}`,\n\t\t\t`decision:${input.decision}`,\n\t\t],\n\t};\n}\n\nexport function evaluateExtensionGovernance(\n\tcandidate: ExtensionCandidate,\n\tpolicy: ExtensionGovernancePolicy = {},\n): ExtensionGovernanceDecision {\n\tconst blockers: string[] = [];\n\tconst reasons = [`source:${candidate.source}`];\n\tconst allowedSources = new Set(policy.allowedSources ?? []);\n\tif (\n\t\tpolicy.allowedSources !== undefined &&\n\t\t!allowedSources.has(candidate.source)\n\t) {\n\t\tblockers.push(`source_not_allowed:${candidate.source}`);\n\t}\n\tif (policy.requireSignature && !candidate.signed) {\n\t\tblockers.push(\"signature_required\");\n\t}\n\tconst pinnedRef = candidate.pinnedRef?.trim();\n\tif (policy.requirePinnedGitRef && candidate.source === \"git\" && !pinnedRef) {\n\t\tblockers.push(\"pinned_git_ref_required\");\n\t}\n\n\tconst trustedPublishers = new Set(policy.trustedPublishers ?? []);\n\tif (\n\t\tcandidate.source === \"marketplace\" &&\n\t\tcandidate.publisher &&\n\t\ttrustedPublishers.has(candidate.publisher)\n\t) {\n\t\treasons.push(`trusted_publisher:${candidate.publisher}`);\n\t} else if (\n\t\tpolicy.trustedPublishers !== undefined &&\n\t\tcandidate.source === \"marketplace\"\n\t) {\n\t\tblockers.push(`publisher_not_trusted:${candidate.publisher ?? \"unknown\"}`);\n\t}\n\n\tconst allowedScopes = new Set(policy.allowedScopes ?? []);\n\tconst requestedScopes = normalizedList(candidate.requestedScopes);\n\tfor (const scope of requestedScopes) {\n\t\tif (policy.allowedScopes !== undefined && !allowedScopes.has(scope)) {\n\t\t\tblockers.push(`scope_not_allowed:${scope}`);\n\t\t}\n\t}\n\treasons.push(...requestedScopes.map((scope) => `scope:${scope}`));\n\tif (candidate.signed) {\n\t\treasons.push(\"signed\");\n\t}\n\tif (pinnedRef) {\n\t\treasons.push(`pinned_ref:${pinnedRef}`);\n\t}\n\n\treturn {\n\t\tallowed: blockers.length === 0,\n\t\tblockers: unique(blockers),\n\t\treasons: unique(reasons),\n\t};\n}\n\nexport function buildRunReadinessReport(\n\tsignals: OperatingLayerSignal[],\n): OperatingLayerScoreReport {\n\treturn buildScoreReport(signals, \"readiness\");\n}\n\nexport function buildRunEffectivenessReport(\n\tsignals: OperatingLayerSignal[],\n): OperatingLayerScoreReport {\n\treturn buildScoreReport(signals, \"effectiveness\");\n}\n\nfunction buildScoreReport(\n\tsignals: OperatingLayerSignal[],\n\tprefix: \"readiness\" | \"effectiveness\",\n): OperatingLayerScoreReport {\n\tlet earned = 0;\n\tlet possible = 0;\n\tconst blockers: string[] = [];\n\tconst warnings: string[] = [];\n\n\tfor (const signal of signals) {\n\t\tconst weight = signal.weight ?? 1;\n\t\tif (signal.status !== \"unknown\") {\n\t\t\tpossible += weight;\n\t\t}\n\t\tif (signal.status === \"pass\") {\n\t\t\tearned += weight;\n\t\t}\n\t\tif (signal.status === \"warn\") {\n\t\t\tearned += weight / 2;\n\t\t\twarnings.push(`${prefix}:${signal.id}`);\n\t\t}\n\t\tif (signal.status === \"fail\") {\n\t\t\tblockers.push(`${prefix}:${signal.id}`);\n\t\t}\n\t}\n\n\treturn {\n\t\tversion: MAESTRO_OPERATING_LAYER_VERSION,\n\t\tscore: possible === 0 ? 0 : Math.round((earned / possible) * 100),\n\t\tblockers,\n\t\twarnings,\n\t\tsignals,\n\t};\n}\n\nexport const DEFAULT_RELEASE_CANARY_STAGES: ReleaseCanaryStage[] =\n\tObject.freeze(\n\t\t[\n\t\t\t{\n\t\t\t\tid: \"local_release_gate\",\n\t\t\t\tname: \"Local release gate\",\n\t\t\t\trequires: [],\n\t\t\t\tevidenceKinds: [\"lint\", \"test\", \"build\", \"release.check\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"publish_package\",\n\t\t\t\tname: \"Publish package\",\n\t\t\t\trequires: [\"local_release_gate\"],\n\t\t\t\tevidenceKinds: [\"npm.publish\", \"git.tag\", \"github.release\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"registry_install_smoke\",\n\t\t\t\tname: \"Registry install smoke\",\n\t\t\t\trequires: [\"publish_package\"],\n\t\t\t\tevidenceKinds: [\"npm.install\", \"cli.smoke\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"published_replay_evidence\",\n\t\t\t\tname: \"Published replay evidence\",\n\t\t\t\trequires: [\"registry_install_smoke\"],\n\t\t\t\tevidenceKinds: [\"replay.e2e\", \"evidence.verify\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"release_notification\",\n\t\t\t\tname: \"Release notification\",\n\t\t\t\trequires: [\"published_replay_evidence\"],\n\t\t\t\tevidenceKinds: [\"release.notes\", \"channel.notification\"],\n\t\t\t},\n\t\t].map((stage) =>\n\t\t\tObject.freeze({\n\t\t\t\t...stage,\n\t\t\t\trequires: Object.freeze([...stage.requires]) as string[],\n\t\t\t\tevidenceKinds: Object.freeze([...stage.evidenceKinds]) as string[],\n\t\t\t}),\n\t\t),\n\t) as ReleaseCanaryStage[];\n\nexport function buildReleaseCanaryPlan(\n\tstages?: ReleaseCanaryStage[],\n): ReleaseCanaryPlan {\n\tconst planStages = cloneReleaseCanaryStages(\n\t\tstages ?? DEFAULT_RELEASE_CANARY_STAGES,\n\t);\n\tconst stageIds = new Set(planStages.map((stage) => stage.id));\n\tconst stageIndexes = new Map<string, number>();\n\tfor (const [index, stage] of planStages.entries()) {\n\t\tif (!stageIndexes.has(stage.id)) {\n\t\t\tstageIndexes.set(stage.id, index);\n\t\t}\n\t}\n\tconst blockers = [\n\t\t...detectDuplicateReleaseCanaryStages(planStages),\n\t\t...planStages.flatMap((stage) =>\n\t\t\tstage.requires\n\t\t\t\t.filter((required) => !stageIds.has(required))\n\t\t\t\t.map((required) => `missing_stage:${stage.id}:${required}`),\n\t\t),\n\t\t...planStages.flatMap((stage, index) =>\n\t\t\tstage.requires\n\t\t\t\t.filter((required) => {\n\t\t\t\t\tconst requiredIndex = stageIndexes.get(required);\n\t\t\t\t\treturn requiredIndex !== undefined && requiredIndex > index;\n\t\t\t\t})\n\t\t\t\t.map((required) => `out_of_order_stage:${stage.id}:${required}`),\n\t\t),\n\t\t...detectReleaseCanaryCycles(planStages),\n\t];\n\n\treturn {\n\t\tversion: MAESTRO_OPERATING_LAYER_VERSION,\n\t\tstages: planStages,\n\t\tblockers,\n\t};\n}\n\nfunction cloneReleaseCanaryStages(\n\tstages: ReleaseCanaryStage[],\n): ReleaseCanaryStage[] {\n\treturn stages.map((stage) => ({\n\t\t...stage,\n\t\trequires: [...stage.requires],\n\t\tevidenceKinds: [...stage.evidenceKinds],\n\t}));\n}\n\nfunction detectDuplicateReleaseCanaryStages(\n\tstages: ReleaseCanaryStage[],\n): string[] {\n\tconst seen = new Set<string>();\n\tconst blockers: string[] = [];\n\tfor (const stage of stages) {\n\t\tif (seen.has(stage.id)) {\n\t\t\tblockers.push(`duplicate_stage:${stage.id}`);\n\t\t}\n\t\tseen.add(stage.id);\n\t}\n\treturn unique(blockers);\n}\n\nfunction detectReleaseCanaryCycles(stages: ReleaseCanaryStage[]): string[] {\n\tconst requirementsById = new Map<string, Set<string>>();\n\tfor (const stage of stages) {\n\t\tconst requirements = requirementsById.get(stage.id) ?? new Set<string>();\n\t\tfor (const required of stage.requires) {\n\t\t\trequirements.add(required);\n\t\t}\n\t\trequirementsById.set(stage.id, requirements);\n\t}\n\tconst visiting = new Set<string>();\n\tconst visited = new Set<string>();\n\tconst blockers: string[] = [];\n\n\tfunction visit(stageId: string, path: string[]): void {\n\t\tif (visiting.has(stageId)) {\n\t\t\tconst cycleStart = path.indexOf(stageId);\n\t\t\tconst cycle = path.slice(cycleStart).join(\">\");\n\t\t\tblockers.push(`cycle:${cycle}`);\n\t\t\treturn;\n\t\t}\n\t\tif (visited.has(stageId)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst requirements = requirementsById.get(stageId);\n\t\tif (!requirements) {\n\t\t\treturn;\n\t\t}\n\n\t\tvisiting.add(stageId);\n\t\tfor (const required of requirements) {\n\t\t\tvisit(required, [...path, required]);\n\t\t}\n\t\tvisiting.delete(stageId);\n\t\tvisited.add(stageId);\n\t}\n\n\tfor (const stage of stages) {\n\t\tvisit(stage.id, [stage.id]);\n\t}\n\n\treturn unique(blockers);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution-client.d.ts","sourceRoot":"","sources":["../../src/platform/tool-execution-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-execution-client.d.ts","sourceRoot":"","sources":["../../src/platform/tool-execution-client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { EVALOPS_ACCESS_TOKEN_ENV_VARS, EVALOPS_ORGANIZATION_ID_ENV_VARS, EVALOPS_WORKSPACE_ID_ENV_VARS, } from "../evalops/env-aliases.js";
2
- import { postPlatformConnect, resolvePlatformServiceConfig, trimString, } from "./client.js";
2
+ import { getEnvValue, postPlatformConnect, resolvePlatformServiceConfig, trimString, } from "./client.js";
3
3
  import { PLATFORM_CONNECT_METHODS, platformConnectMethodPath, platformConnectServicePath, } from "./core-services.js";
4
4
  const DEFAULT_TIMEOUT_MS = 2_500;
5
5
  const DEFAULT_MAX_ATTEMPTS = 2;
@@ -26,6 +26,15 @@ const TOOL_EXECUTION_WORKSPACE_ENV_VARS = [
26
26
  "MAESTRO_REMOTE_RUNNER_WORKSPACE_ID",
27
27
  ...EVALOPS_WORKSPACE_ID_ENV_VARS,
28
28
  ];
29
+ const TOOL_EXECUTION_OBJECTIVE_ENV_VARS = [
30
+ "MAESTRO_OBJECTIVE_ID",
31
+ "MAESTRO_EVALOPS_OBJECTIVE_ID",
32
+ ];
33
+ // Surface identifier for the Platform "codex worker" agent runtime. The
34
+ // operating-chat / tool-execution endpoint requires `objective_id` on the
35
+ // request linkage when this surface is in use (Sentry PLATFORM-5). Kept as a
36
+ // local const to avoid a circular import from shell-env.ts.
37
+ const PLATFORM_WORKER_SURFACE = "platform-agent-runtime";
29
38
  const TOOL_EXECUTION_TIMEOUT_ENV_VARS = [
30
39
  "TOOL_EXECUTION_SERVICE_TIMEOUT_MS",
31
40
  "MAESTRO_TOOL_EXECUTION_SERVICE_TIMEOUT_MS",
@@ -153,6 +162,10 @@ function normalizeExecutionRecord(record) {
153
162
  function stripUndefinedValues(record) {
154
163
  return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined));
155
164
  }
165
+ function resolveObjectiveId(linkage) {
166
+ return (trimString(linkage.objectiveId) ??
167
+ getEnvValue(TOOL_EXECUTION_OBJECTIVE_ENV_VARS));
168
+ }
156
169
  function normalizeExecuteToolRequest(request) {
157
170
  return stripUndefinedValues({
158
171
  linkage: stripUndefinedValues({
@@ -160,7 +173,7 @@ function normalizeExecuteToolRequest(request) {
160
173
  organizationId: request.linkage.organizationId,
161
174
  agentId: request.linkage.agentId,
162
175
  runId: request.linkage.runId,
163
- objectiveId: request.linkage.objectiveId,
176
+ objectiveId: resolveObjectiveId(request.linkage),
164
177
  stepId: request.linkage.stepId,
165
178
  actorId: request.linkage.actorId,
166
179
  surface: request.linkage.surface,
@@ -227,6 +240,10 @@ async function parseJsonResponse(response, serviceName) {
227
240
  return JSON.parse(text);
228
241
  }
229
242
  export async function executeToolWithPlatform(config, request, signal) {
243
+ if (request.linkage.surface === PLATFORM_WORKER_SURFACE &&
244
+ !resolveObjectiveId(request.linkage)) {
245
+ throw new Error(`operating chat requires an objective_id for the ${PLATFORM_WORKER_SURFACE} surface; set MAESTRO_OBJECTIVE_ID (or MAESTRO_EVALOPS_OBJECTIVE_ID) or pass linkage.objectiveId`);
246
+ }
230
247
  const response = await postPlatformConnect(config, EXECUTE_TOOL_PATH, normalizeExecuteToolRequest(request), {
231
248
  serviceName: "tool execution service",
232
249
  failureMode: "required",
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution-client.js","sourceRoot":"","sources":["../../src/platform/tool-execution-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tEVALOPS_ACCESS_TOKEN_ENV_VARS,\n\tEVALOPS_ORGANIZATION_ID_ENV_VARS,\n\tEVALOPS_WORKSPACE_ID_ENV_VARS,\n} from \"../evalops/env-aliases.js\";\nimport {\n\ttype PlatformServiceConfig,\n\tgetEnvValue,\n\tpostPlatformConnect,\n\tresolvePlatformServiceConfig,\n\ttrimString,\n} from \"./client.js\";\nimport {\n\tPLATFORM_CONNECT_METHODS,\n\tplatformConnectMethodPath,\n\tplatformConnectServicePath,\n} from \"./core-services.js\";\n\nconst DEFAULT_TIMEOUT_MS = 2_500;\nconst DEFAULT_MAX_ATTEMPTS = 2;\n\nconst TOOL_EXECUTION_BASE_URL_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_URL\",\n\t\"MAESTRO_TOOL_EXECUTION_SERVICE_URL\",\n\t\"MAESTRO_PLATFORM_BASE_URL\",\n\t\"MAESTRO_EVALOPS_BASE_URL\",\n\t\"EVALOPS_BASE_URL\",\n] as const;\n\nconst TOOL_EXECUTION_TOKEN_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_TOKEN\",\n\t\"MAESTRO_TOOL_EXECUTION_SERVICE_TOKEN\",\n\t...EVALOPS_ACCESS_TOKEN_ENV_VARS,\n] as const;\n\nconst TOOL_EXECUTION_ORGANIZATION_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_ORGANIZATION_ID\",\n\t\"MAESTRO_TOOL_EXECUTION_ORGANIZATION_ID\",\n\t...EVALOPS_ORGANIZATION_ID_ENV_VARS,\n] as const;\n\nconst TOOL_EXECUTION_WORKSPACE_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_WORKSPACE_ID\",\n\t\"MAESTRO_TOOL_EXECUTION_WORKSPACE_ID\",\n\t\"MAESTRO_REMOTE_RUNNER_WORKSPACE_ID\",\n\t...EVALOPS_WORKSPACE_ID_ENV_VARS,\n] as const;\n\nconst TOOL_EXECUTION_TIMEOUT_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_TIMEOUT_MS\",\n\t\"MAESTRO_TOOL_EXECUTION_SERVICE_TIMEOUT_MS\",\n] as const;\n\nconst TOOL_EXECUTION_MAX_ATTEMPTS_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_MAX_ATTEMPTS\",\n\t\"MAESTRO_TOOL_EXECUTION_SERVICE_MAX_ATTEMPTS\",\n] as const;\n\nconst EXECUTE_TOOL_PATH = platformConnectMethodPath(\n\tPLATFORM_CONNECT_METHODS.toolexecution.executeTool,\n);\nconst RESUME_TOOL_EXECUTION_PATH = platformConnectMethodPath(\n\tPLATFORM_CONNECT_METHODS.toolexecution.resumeToolExecution,\n);\nconst RECORD_TOOL_EXECUTION_OUTPUT_PATH = platformConnectMethodPath(\n\tPLATFORM_CONNECT_METHODS.toolexecution.recordToolExecutionOutput,\n);\n\nexport type ToolExecutionRiskLevel =\n\t| \"RISK_LEVEL_UNSPECIFIED\"\n\t| \"RISK_LEVEL_LOW\"\n\t| \"RISK_LEVEL_MEDIUM\"\n\t| \"RISK_LEVEL_HIGH\"\n\t| \"RISK_LEVEL_CRITICAL\";\n\nexport type ToolExecutionState =\n\t| \"TOOL_EXECUTION_STATE_UNSPECIFIED\"\n\t| \"TOOL_EXECUTION_STATE_ACCEPTED\"\n\t| \"TOOL_EXECUTION_STATE_POLICY_EVALUATING\"\n\t| \"TOOL_EXECUTION_STATE_WAITING_APPROVAL\"\n\t| \"TOOL_EXECUTION_STATE_RUNNING\"\n\t| \"TOOL_EXECUTION_STATE_SUCCEEDED\"\n\t| \"TOOL_EXECUTION_STATE_FAILED\"\n\t| \"TOOL_EXECUTION_STATE_DENIED\"\n\t| \"TOOL_EXECUTION_STATE_CANCELLED\";\n\nexport interface ToolExecutionLinkage {\n\tworkspaceId: string;\n\torganizationId?: string;\n\tagentId: string;\n\trunId?: string;\n\tobjectiveId?: string;\n\tstepId: string;\n\tactorId?: string;\n\tsurface?: string;\n\tchannelId?: string;\n\tcorrelationId?: string;\n}\n\nexport interface PlatformToolRef {\n\tnamespace: string;\n\tname: string;\n\tversion?: string;\n\tcapability: string;\n\toperation?: string;\n\tidempotent?: boolean;\n\tmutatesResource?: boolean;\n}\n\nexport interface PlatformConnectorRef {\n\tconnectionId?: string;\n\tproviderId?: string;\n\tresourceId?: string;\n\tresourceKind?: string;\n\tcredentialRef?: string;\n\tcredentialEnvironment?: string;\n}\n\nexport interface PlatformToolRetryPolicy {\n\tmaxAttempts?: number;\n\tinitialDelayMs?: number;\n\tmaxDelayMs?: number;\n\tallowNonIdempotentRetry?: boolean;\n}\n\nexport interface ExecutePlatformToolRequest {\n\tlinkage: ToolExecutionLinkage;\n\ttool: PlatformToolRef;\n\tconnector?: PlatformConnectorRef;\n\targuments: Record<string, unknown>;\n\triskLevel?: ToolExecutionRiskLevel;\n\tretryPolicy?: PlatformToolRetryPolicy;\n\tidempotencyKey: string;\n\tmetadata?: Record<string, string>;\n}\n\nexport interface ResumePlatformToolExecutionRequest {\n\texecutionId: string;\n\tapprovalRequestId: string;\n\tresumeToken: string;\n\tapproved: boolean;\n\tdecidedBy?: string;\n\treason?: string;\n}\n\nexport interface PlatformToolOutputProposal {\n\tkind: string;\n\ttargetRef?: string;\n\tpayload?: Record<string, unknown>;\n\tmetadata?: Record<string, string>;\n}\n\nexport interface PlatformToolExecutionOutput {\n\trawOutput?: Record<string, unknown>;\n\tsafeOutput?: Record<string, unknown>;\n\tproposals?: PlatformToolOutputProposal[];\n\tredactions?: string[];\n\tcontentType?: string;\n\toutputDigest?: string;\n\tdurationMs?: number;\n}\n\nexport interface RecordPlatformToolExecutionOutputRequest {\n\texecutionId: string;\n\toutput: PlatformToolExecutionOutput;\n\tmetadata?: Record<string, string>;\n}\n\nexport interface PlatformApprovalWait {\n\tapprovalRequestId?: string;\n\tresumeToken?: string;\n\treason?: string;\n}\n\nexport interface PlatformToolExecutionRecord {\n\tid?: string;\n\tstate?: ToolExecutionState;\n\terrorMessage?: string;\n\tapprovalWait?: PlatformApprovalWait;\n}\n\nexport interface ExecutePlatformToolResponse {\n\texecution: PlatformToolExecutionRecord;\n\tidempotentReplay: boolean;\n}\n\nexport interface ResumePlatformToolExecutionResponse {\n\texecution: PlatformToolExecutionRecord;\n}\n\nexport interface RecordPlatformToolExecutionOutputResponse {\n\texecution: PlatformToolExecutionRecord;\n}\n\nexport interface ToolExecutionServiceConfig extends PlatformServiceConfig {}\n\nfunction stripTrailingSlashes(value: string): string {\n\treturn value.replace(/\\/+$/u, \"\");\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n\tlet normalized = stripTrailingSlashes(baseUrl.trim());\n\tfor (const suffix of [\n\t\tEXECUTE_TOOL_PATH,\n\t\tRESUME_TOOL_EXECUTION_PATH,\n\t\tRECORD_TOOL_EXECUTION_OUTPUT_PATH,\n\t\tplatformConnectServicePath(\n\t\t\tPLATFORM_CONNECT_METHODS.toolexecution.executeTool.service,\n\t\t),\n\t]) {\n\t\tif (normalized.endsWith(suffix)) {\n\t\t\tnormalized = stripTrailingSlashes(normalized.slice(0, -suffix.length));\n\t\t}\n\t}\n\treturn normalized;\n}\n\nexport async function resolveToolExecutionServiceConfig(\n\toverrides: Partial<ToolExecutionServiceConfig> = {},\n): Promise<ToolExecutionServiceConfig | null> {\n\tconst config = await resolvePlatformServiceConfig({\n\t\tbaseUrlEnvVars: TOOL_EXECUTION_BASE_URL_ENV_VARS,\n\t\ttokenEnvVars: TOOL_EXECUTION_TOKEN_ENV_VARS,\n\t\torganizationEnvVars: TOOL_EXECUTION_ORGANIZATION_ENV_VARS,\n\t\tworkspaceEnvVars: TOOL_EXECUTION_WORKSPACE_ENV_VARS,\n\t\ttimeoutEnvVars: TOOL_EXECUTION_TIMEOUT_ENV_VARS,\n\t\tmaxAttemptsEnvVars: TOOL_EXECUTION_MAX_ATTEMPTS_ENV_VARS,\n\t\tbaseUrlSuffixes: [\n\t\t\tEXECUTE_TOOL_PATH,\n\t\t\tRESUME_TOOL_EXECUTION_PATH,\n\t\t\tRECORD_TOOL_EXECUTION_OUTPUT_PATH,\n\t\t\tplatformConnectServicePath(\n\t\t\t\tPLATFORM_CONNECT_METHODS.toolexecution.executeTool.service,\n\t\t\t),\n\t\t],\n\t\tdefaultTimeoutMs: DEFAULT_TIMEOUT_MS,\n\t\tdefaultMaxAttempts: DEFAULT_MAX_ATTEMPTS,\n\t\trequireBaseUrl: false,\n\t\trequireOrganizationId: true,\n\t\trequireToken: true,\n\t});\n\tif (!config?.baseUrl || !config.workspaceId) {\n\t\treturn null;\n\t}\n\treturn {\n\t\t...config,\n\t\tbaseUrl: normalizeBaseUrl(\n\t\t\ttrimString(overrides.baseUrl ?? config.baseUrl) ?? config.baseUrl,\n\t\t),\n\t\torganizationId:\n\t\t\ttrimString(overrides.organizationId ?? config.organizationId) ??\n\t\t\tconfig.organizationId,\n\t\tworkspaceId:\n\t\t\ttrimString(overrides.workspaceId ?? config.workspaceId) ??\n\t\t\tconfig.workspaceId,\n\t\ttoken: trimString(overrides.token ?? config.token) ?? config.token,\n\t\ttimeoutMs: overrides.timeoutMs ?? config.timeoutMs,\n\t\tmaxAttempts: overrides.maxAttempts ?? config.maxAttempts,\n\t\tteamId: trimString(overrides.teamId ?? config.teamId),\n\t};\n}\n\nfunction firstString(\n\trecord: Record<string, unknown>,\n\t...keys: string[]\n): string | undefined {\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"string\" && value.trim().length > 0) {\n\t\t\treturn value.trim();\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction firstBoolean(\n\trecord: Record<string, unknown>,\n\t...keys: string[]\n): boolean | undefined {\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"boolean\") {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction objectValue(\n\trecord: Record<string, unknown>,\n\t...keys: string[]\n): Record<string, unknown> | undefined {\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (value && typeof value === \"object\" && !Array.isArray(value)) {\n\t\t\treturn value as Record<string, unknown>;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction normalizeExecutionState(\n\tvalue: unknown,\n): ToolExecutionState | undefined {\n\tif (typeof value !== \"string\" || value.trim().length === 0) {\n\t\treturn undefined;\n\t}\n\treturn value.trim() as ToolExecutionState;\n}\n\nfunction normalizeApprovalWait(\n\trecord: Record<string, unknown> | undefined,\n): PlatformApprovalWait | undefined {\n\tif (!record) {\n\t\treturn undefined;\n\t}\n\tconst approvalRequestId = firstString(\n\t\trecord,\n\t\t\"approvalRequestId\",\n\t\t\"approval_request_id\",\n\t);\n\tconst resumeToken = firstString(record, \"resumeToken\", \"resume_token\");\n\tconst reason = firstString(record, \"reason\");\n\tif (!approvalRequestId && !resumeToken && !reason) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\t...(approvalRequestId ? { approvalRequestId } : {}),\n\t\t...(resumeToken ? { resumeToken } : {}),\n\t\t...(reason ? { reason } : {}),\n\t};\n}\n\nfunction normalizeExecutionRecord(\n\trecord: Record<string, unknown> | undefined,\n): PlatformToolExecutionRecord {\n\tif (!record) {\n\t\treturn {};\n\t}\n\treturn {\n\t\tid: firstString(record, \"id\"),\n\t\tstate: normalizeExecutionState(record.state),\n\t\terrorMessage: firstString(record, \"errorMessage\", \"error_message\"),\n\t\tapprovalWait: normalizeApprovalWait(\n\t\t\tobjectValue(record, \"approvalWait\", \"approval_wait\"),\n\t\t),\n\t};\n}\n\nfunction stripUndefinedValues(\n\trecord: Record<string, unknown>,\n): Record<string, unknown> {\n\treturn Object.fromEntries(\n\t\tObject.entries(record).filter(([, value]) => value !== undefined),\n\t);\n}\n\nfunction normalizeExecuteToolRequest(\n\trequest: ExecutePlatformToolRequest,\n): Record<string, unknown> {\n\treturn stripUndefinedValues({\n\t\tlinkage: stripUndefinedValues({\n\t\t\tworkspaceId: request.linkage.workspaceId,\n\t\t\torganizationId: request.linkage.organizationId,\n\t\t\tagentId: request.linkage.agentId,\n\t\t\trunId: request.linkage.runId,\n\t\t\tobjectiveId: request.linkage.objectiveId,\n\t\t\tstepId: request.linkage.stepId,\n\t\t\tactorId: request.linkage.actorId,\n\t\t\tsurface: request.linkage.surface,\n\t\t\tchannelId: request.linkage.channelId,\n\t\t\tcorrelationId: request.linkage.correlationId,\n\t\t}),\n\t\ttool: stripUndefinedValues({\n\t\t\tnamespace: request.tool.namespace,\n\t\t\tname: request.tool.name,\n\t\t\tversion: request.tool.version,\n\t\t\tcapability: request.tool.capability,\n\t\t\toperation: request.tool.operation,\n\t\t\tidempotent: request.tool.idempotent,\n\t\t\tmutatesResource: request.tool.mutatesResource,\n\t\t}),\n\t\tconnector: request.connector\n\t\t\t? stripUndefinedValues({\n\t\t\t\t\tconnectionId: request.connector.connectionId,\n\t\t\t\t\tproviderId: request.connector.providerId,\n\t\t\t\t\tresourceId: request.connector.resourceId,\n\t\t\t\t\tresourceKind: request.connector.resourceKind,\n\t\t\t\t\tcredentialRef: request.connector.credentialRef,\n\t\t\t\t\tcredentialEnvironment: request.connector.credentialEnvironment,\n\t\t\t\t})\n\t\t\t: undefined,\n\t\targuments: request.arguments,\n\t\triskLevel: request.riskLevel,\n\t\tretryPolicy: request.retryPolicy\n\t\t\t? stripUndefinedValues({\n\t\t\t\t\tmaxAttempts: request.retryPolicy.maxAttempts,\n\t\t\t\t\tinitialDelayMs: request.retryPolicy.initialDelayMs,\n\t\t\t\t\tmaxDelayMs: request.retryPolicy.maxDelayMs,\n\t\t\t\t\tallowNonIdempotentRetry: request.retryPolicy.allowNonIdempotentRetry,\n\t\t\t\t})\n\t\t\t: undefined,\n\t\tidempotencyKey: request.idempotencyKey,\n\t\tmetadata: request.metadata,\n\t});\n}\n\nfunction normalizeToolExecutionOutput(\n\toutput: PlatformToolExecutionOutput,\n): Record<string, unknown> {\n\treturn stripUndefinedValues({\n\t\trawOutput: output.rawOutput,\n\t\tsafeOutput: output.safeOutput,\n\t\tproposals: output.proposals?.map((proposal) =>\n\t\t\tstripUndefinedValues({\n\t\t\t\tkind: proposal.kind,\n\t\t\t\ttargetRef: proposal.targetRef,\n\t\t\t\tpayload: proposal.payload,\n\t\t\t\tmetadata: proposal.metadata,\n\t\t\t}),\n\t\t),\n\t\tredactions: output.redactions,\n\t\tcontentType: output.contentType,\n\t\toutputDigest: output.outputDigest,\n\t\tdurationMs: output.durationMs,\n\t});\n}\n\nasync function parseJsonResponse(\n\tresponse: Response,\n\tserviceName: string,\n): Promise<Record<string, unknown>> {\n\tconst text = await response.text();\n\tif (!response.ok) {\n\t\tthrow new Error(\n\t\t\t`${serviceName} returned ${response.status}: ${text || response.statusText}`,\n\t\t);\n\t}\n\tif (!text.trim()) {\n\t\tthrow new Error(`${serviceName} returned empty response`);\n\t}\n\treturn JSON.parse(text) as Record<string, unknown>;\n}\n\nexport async function executeToolWithPlatform(\n\tconfig: ToolExecutionServiceConfig,\n\trequest: ExecutePlatformToolRequest,\n\tsignal?: AbortSignal,\n): Promise<ExecutePlatformToolResponse> {\n\tconst response = await postPlatformConnect(\n\t\tconfig,\n\t\tEXECUTE_TOOL_PATH,\n\t\tnormalizeExecuteToolRequest(request),\n\t\t{\n\t\t\tserviceName: \"tool execution service\",\n\t\t\tfailureMode: \"required\",\n\t\t\ttimeoutMs: config.timeoutMs,\n\t\t\tmaxAttempts: config.maxAttempts,\n\t\t\tsignal,\n\t\t},\n\t);\n\tconst payload = await parseJsonResponse(response, \"tool execution service\");\n\treturn {\n\t\texecution: normalizeExecutionRecord(objectValue(payload, \"execution\")),\n\t\tidempotentReplay:\n\t\t\tfirstBoolean(payload, \"idempotentReplay\", \"idempotent_replay\") === true,\n\t};\n}\n\nexport async function resumeToolExecutionWithPlatform(\n\tconfig: ToolExecutionServiceConfig,\n\trequest: ResumePlatformToolExecutionRequest,\n\tsignal?: AbortSignal,\n): Promise<ResumePlatformToolExecutionResponse> {\n\tconst response = await postPlatformConnect(\n\t\tconfig,\n\t\tRESUME_TOOL_EXECUTION_PATH,\n\t\tstripUndefinedValues({\n\t\t\texecutionId: request.executionId,\n\t\t\tapprovalRequestId: request.approvalRequestId,\n\t\t\tresumeToken: request.resumeToken,\n\t\t\tapproved: request.approved,\n\t\t\tdecidedBy: request.decidedBy,\n\t\t\treason: request.reason,\n\t\t}),\n\t\t{\n\t\t\tserviceName: \"tool execution service\",\n\t\t\tfailureMode: \"required\",\n\t\t\ttimeoutMs: config.timeoutMs,\n\t\t\tmaxAttempts: config.maxAttempts,\n\t\t\tsignal,\n\t\t},\n\t);\n\tconst payload = await parseJsonResponse(response, \"tool execution service\");\n\treturn {\n\t\texecution: normalizeExecutionRecord(objectValue(payload, \"execution\")),\n\t};\n}\n\nexport async function recordToolExecutionOutputWithPlatform(\n\tconfig: ToolExecutionServiceConfig,\n\trequest: RecordPlatformToolExecutionOutputRequest,\n\tsignal?: AbortSignal,\n): Promise<RecordPlatformToolExecutionOutputResponse> {\n\tconst response = await postPlatformConnect(\n\t\tconfig,\n\t\tRECORD_TOOL_EXECUTION_OUTPUT_PATH,\n\t\tstripUndefinedValues({\n\t\t\texecutionId: request.executionId,\n\t\t\toutput: normalizeToolExecutionOutput(request.output),\n\t\t\tmetadata: request.metadata,\n\t\t}),\n\t\t{\n\t\t\tserviceName: \"tool execution service\",\n\t\t\tfailureMode: \"required\",\n\t\t\ttimeoutMs: config.timeoutMs,\n\t\t\tmaxAttempts: config.maxAttempts,\n\t\t\tsignal,\n\t\t},\n\t);\n\tconst payload = await parseJsonResponse(response, \"tool execution service\");\n\treturn {\n\t\texecution: normalizeExecutionRecord(objectValue(payload, \"execution\")),\n\t};\n}\n"]}
1
+ {"version":3,"file":"tool-execution-client.js","sourceRoot":"","sources":["../../src/platform/tool-execution-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tEVALOPS_ACCESS_TOKEN_ENV_VARS,\n\tEVALOPS_ORGANIZATION_ID_ENV_VARS,\n\tEVALOPS_WORKSPACE_ID_ENV_VARS,\n} from \"../evalops/env-aliases.js\";\nimport {\n\ttype PlatformServiceConfig,\n\tgetEnvValue,\n\tpostPlatformConnect,\n\tresolvePlatformServiceConfig,\n\ttrimString,\n} from \"./client.js\";\nimport {\n\tPLATFORM_CONNECT_METHODS,\n\tplatformConnectMethodPath,\n\tplatformConnectServicePath,\n} from \"./core-services.js\";\n\nconst DEFAULT_TIMEOUT_MS = 2_500;\nconst DEFAULT_MAX_ATTEMPTS = 2;\n\nconst TOOL_EXECUTION_BASE_URL_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_URL\",\n\t\"MAESTRO_TOOL_EXECUTION_SERVICE_URL\",\n\t\"MAESTRO_PLATFORM_BASE_URL\",\n\t\"MAESTRO_EVALOPS_BASE_URL\",\n\t\"EVALOPS_BASE_URL\",\n] as const;\n\nconst TOOL_EXECUTION_TOKEN_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_TOKEN\",\n\t\"MAESTRO_TOOL_EXECUTION_SERVICE_TOKEN\",\n\t...EVALOPS_ACCESS_TOKEN_ENV_VARS,\n] as const;\n\nconst TOOL_EXECUTION_ORGANIZATION_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_ORGANIZATION_ID\",\n\t\"MAESTRO_TOOL_EXECUTION_ORGANIZATION_ID\",\n\t...EVALOPS_ORGANIZATION_ID_ENV_VARS,\n] as const;\n\nconst TOOL_EXECUTION_WORKSPACE_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_WORKSPACE_ID\",\n\t\"MAESTRO_TOOL_EXECUTION_WORKSPACE_ID\",\n\t\"MAESTRO_REMOTE_RUNNER_WORKSPACE_ID\",\n\t...EVALOPS_WORKSPACE_ID_ENV_VARS,\n] as const;\n\nconst TOOL_EXECUTION_OBJECTIVE_ENV_VARS = [\n\t\"MAESTRO_OBJECTIVE_ID\",\n\t\"MAESTRO_EVALOPS_OBJECTIVE_ID\",\n] as const;\n\n// Surface identifier for the Platform \"codex worker\" agent runtime. The\n// operating-chat / tool-execution endpoint requires `objective_id` on the\n// request linkage when this surface is in use (Sentry PLATFORM-5). Kept as a\n// local const to avoid a circular import from shell-env.ts.\nconst PLATFORM_WORKER_SURFACE = \"platform-agent-runtime\";\n\nconst TOOL_EXECUTION_TIMEOUT_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_TIMEOUT_MS\",\n\t\"MAESTRO_TOOL_EXECUTION_SERVICE_TIMEOUT_MS\",\n] as const;\n\nconst TOOL_EXECUTION_MAX_ATTEMPTS_ENV_VARS = [\n\t\"TOOL_EXECUTION_SERVICE_MAX_ATTEMPTS\",\n\t\"MAESTRO_TOOL_EXECUTION_SERVICE_MAX_ATTEMPTS\",\n] as const;\n\nconst EXECUTE_TOOL_PATH = platformConnectMethodPath(\n\tPLATFORM_CONNECT_METHODS.toolexecution.executeTool,\n);\nconst RESUME_TOOL_EXECUTION_PATH = platformConnectMethodPath(\n\tPLATFORM_CONNECT_METHODS.toolexecution.resumeToolExecution,\n);\nconst RECORD_TOOL_EXECUTION_OUTPUT_PATH = platformConnectMethodPath(\n\tPLATFORM_CONNECT_METHODS.toolexecution.recordToolExecutionOutput,\n);\n\nexport type ToolExecutionRiskLevel =\n\t| \"RISK_LEVEL_UNSPECIFIED\"\n\t| \"RISK_LEVEL_LOW\"\n\t| \"RISK_LEVEL_MEDIUM\"\n\t| \"RISK_LEVEL_HIGH\"\n\t| \"RISK_LEVEL_CRITICAL\";\n\nexport type ToolExecutionState =\n\t| \"TOOL_EXECUTION_STATE_UNSPECIFIED\"\n\t| \"TOOL_EXECUTION_STATE_ACCEPTED\"\n\t| \"TOOL_EXECUTION_STATE_POLICY_EVALUATING\"\n\t| \"TOOL_EXECUTION_STATE_WAITING_APPROVAL\"\n\t| \"TOOL_EXECUTION_STATE_RUNNING\"\n\t| \"TOOL_EXECUTION_STATE_SUCCEEDED\"\n\t| \"TOOL_EXECUTION_STATE_FAILED\"\n\t| \"TOOL_EXECUTION_STATE_DENIED\"\n\t| \"TOOL_EXECUTION_STATE_CANCELLED\";\n\nexport interface ToolExecutionLinkage {\n\tworkspaceId: string;\n\torganizationId?: string;\n\tagentId: string;\n\trunId?: string;\n\tobjectiveId?: string;\n\tstepId: string;\n\tactorId?: string;\n\tsurface?: string;\n\tchannelId?: string;\n\tcorrelationId?: string;\n}\n\nexport interface PlatformToolRef {\n\tnamespace: string;\n\tname: string;\n\tversion?: string;\n\tcapability: string;\n\toperation?: string;\n\tidempotent?: boolean;\n\tmutatesResource?: boolean;\n}\n\nexport interface PlatformConnectorRef {\n\tconnectionId?: string;\n\tproviderId?: string;\n\tresourceId?: string;\n\tresourceKind?: string;\n\tcredentialRef?: string;\n\tcredentialEnvironment?: string;\n}\n\nexport interface PlatformToolRetryPolicy {\n\tmaxAttempts?: number;\n\tinitialDelayMs?: number;\n\tmaxDelayMs?: number;\n\tallowNonIdempotentRetry?: boolean;\n}\n\nexport interface ExecutePlatformToolRequest {\n\tlinkage: ToolExecutionLinkage;\n\ttool: PlatformToolRef;\n\tconnector?: PlatformConnectorRef;\n\targuments: Record<string, unknown>;\n\triskLevel?: ToolExecutionRiskLevel;\n\tretryPolicy?: PlatformToolRetryPolicy;\n\tidempotencyKey: string;\n\tmetadata?: Record<string, string>;\n}\n\nexport interface ResumePlatformToolExecutionRequest {\n\texecutionId: string;\n\tapprovalRequestId: string;\n\tresumeToken: string;\n\tapproved: boolean;\n\tdecidedBy?: string;\n\treason?: string;\n}\n\nexport interface PlatformToolOutputProposal {\n\tkind: string;\n\ttargetRef?: string;\n\tpayload?: Record<string, unknown>;\n\tmetadata?: Record<string, string>;\n}\n\nexport interface PlatformToolExecutionOutput {\n\trawOutput?: Record<string, unknown>;\n\tsafeOutput?: Record<string, unknown>;\n\tproposals?: PlatformToolOutputProposal[];\n\tredactions?: string[];\n\tcontentType?: string;\n\toutputDigest?: string;\n\tdurationMs?: number;\n}\n\nexport interface RecordPlatformToolExecutionOutputRequest {\n\texecutionId: string;\n\toutput: PlatformToolExecutionOutput;\n\tmetadata?: Record<string, string>;\n}\n\nexport interface PlatformApprovalWait {\n\tapprovalRequestId?: string;\n\tresumeToken?: string;\n\treason?: string;\n}\n\nexport interface PlatformToolExecutionRecord {\n\tid?: string;\n\tstate?: ToolExecutionState;\n\terrorMessage?: string;\n\tapprovalWait?: PlatformApprovalWait;\n}\n\nexport interface ExecutePlatformToolResponse {\n\texecution: PlatformToolExecutionRecord;\n\tidempotentReplay: boolean;\n}\n\nexport interface ResumePlatformToolExecutionResponse {\n\texecution: PlatformToolExecutionRecord;\n}\n\nexport interface RecordPlatformToolExecutionOutputResponse {\n\texecution: PlatformToolExecutionRecord;\n}\n\nexport interface ToolExecutionServiceConfig extends PlatformServiceConfig {}\n\nfunction stripTrailingSlashes(value: string): string {\n\treturn value.replace(/\\/+$/u, \"\");\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n\tlet normalized = stripTrailingSlashes(baseUrl.trim());\n\tfor (const suffix of [\n\t\tEXECUTE_TOOL_PATH,\n\t\tRESUME_TOOL_EXECUTION_PATH,\n\t\tRECORD_TOOL_EXECUTION_OUTPUT_PATH,\n\t\tplatformConnectServicePath(\n\t\t\tPLATFORM_CONNECT_METHODS.toolexecution.executeTool.service,\n\t\t),\n\t]) {\n\t\tif (normalized.endsWith(suffix)) {\n\t\t\tnormalized = stripTrailingSlashes(normalized.slice(0, -suffix.length));\n\t\t}\n\t}\n\treturn normalized;\n}\n\nexport async function resolveToolExecutionServiceConfig(\n\toverrides: Partial<ToolExecutionServiceConfig> = {},\n): Promise<ToolExecutionServiceConfig | null> {\n\tconst config = await resolvePlatformServiceConfig({\n\t\tbaseUrlEnvVars: TOOL_EXECUTION_BASE_URL_ENV_VARS,\n\t\ttokenEnvVars: TOOL_EXECUTION_TOKEN_ENV_VARS,\n\t\torganizationEnvVars: TOOL_EXECUTION_ORGANIZATION_ENV_VARS,\n\t\tworkspaceEnvVars: TOOL_EXECUTION_WORKSPACE_ENV_VARS,\n\t\ttimeoutEnvVars: TOOL_EXECUTION_TIMEOUT_ENV_VARS,\n\t\tmaxAttemptsEnvVars: TOOL_EXECUTION_MAX_ATTEMPTS_ENV_VARS,\n\t\tbaseUrlSuffixes: [\n\t\t\tEXECUTE_TOOL_PATH,\n\t\t\tRESUME_TOOL_EXECUTION_PATH,\n\t\t\tRECORD_TOOL_EXECUTION_OUTPUT_PATH,\n\t\t\tplatformConnectServicePath(\n\t\t\t\tPLATFORM_CONNECT_METHODS.toolexecution.executeTool.service,\n\t\t\t),\n\t\t],\n\t\tdefaultTimeoutMs: DEFAULT_TIMEOUT_MS,\n\t\tdefaultMaxAttempts: DEFAULT_MAX_ATTEMPTS,\n\t\trequireBaseUrl: false,\n\t\trequireOrganizationId: true,\n\t\trequireToken: true,\n\t});\n\tif (!config?.baseUrl || !config.workspaceId) {\n\t\treturn null;\n\t}\n\treturn {\n\t\t...config,\n\t\tbaseUrl: normalizeBaseUrl(\n\t\t\ttrimString(overrides.baseUrl ?? config.baseUrl) ?? config.baseUrl,\n\t\t),\n\t\torganizationId:\n\t\t\ttrimString(overrides.organizationId ?? config.organizationId) ??\n\t\t\tconfig.organizationId,\n\t\tworkspaceId:\n\t\t\ttrimString(overrides.workspaceId ?? config.workspaceId) ??\n\t\t\tconfig.workspaceId,\n\t\ttoken: trimString(overrides.token ?? config.token) ?? config.token,\n\t\ttimeoutMs: overrides.timeoutMs ?? config.timeoutMs,\n\t\tmaxAttempts: overrides.maxAttempts ?? config.maxAttempts,\n\t\tteamId: trimString(overrides.teamId ?? config.teamId),\n\t};\n}\n\nfunction firstString(\n\trecord: Record<string, unknown>,\n\t...keys: string[]\n): string | undefined {\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"string\" && value.trim().length > 0) {\n\t\t\treturn value.trim();\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction firstBoolean(\n\trecord: Record<string, unknown>,\n\t...keys: string[]\n): boolean | undefined {\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"boolean\") {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction objectValue(\n\trecord: Record<string, unknown>,\n\t...keys: string[]\n): Record<string, unknown> | undefined {\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (value && typeof value === \"object\" && !Array.isArray(value)) {\n\t\t\treturn value as Record<string, unknown>;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction normalizeExecutionState(\n\tvalue: unknown,\n): ToolExecutionState | undefined {\n\tif (typeof value !== \"string\" || value.trim().length === 0) {\n\t\treturn undefined;\n\t}\n\treturn value.trim() as ToolExecutionState;\n}\n\nfunction normalizeApprovalWait(\n\trecord: Record<string, unknown> | undefined,\n): PlatformApprovalWait | undefined {\n\tif (!record) {\n\t\treturn undefined;\n\t}\n\tconst approvalRequestId = firstString(\n\t\trecord,\n\t\t\"approvalRequestId\",\n\t\t\"approval_request_id\",\n\t);\n\tconst resumeToken = firstString(record, \"resumeToken\", \"resume_token\");\n\tconst reason = firstString(record, \"reason\");\n\tif (!approvalRequestId && !resumeToken && !reason) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\t...(approvalRequestId ? { approvalRequestId } : {}),\n\t\t...(resumeToken ? { resumeToken } : {}),\n\t\t...(reason ? { reason } : {}),\n\t};\n}\n\nfunction normalizeExecutionRecord(\n\trecord: Record<string, unknown> | undefined,\n): PlatformToolExecutionRecord {\n\tif (!record) {\n\t\treturn {};\n\t}\n\treturn {\n\t\tid: firstString(record, \"id\"),\n\t\tstate: normalizeExecutionState(record.state),\n\t\terrorMessage: firstString(record, \"errorMessage\", \"error_message\"),\n\t\tapprovalWait: normalizeApprovalWait(\n\t\t\tobjectValue(record, \"approvalWait\", \"approval_wait\"),\n\t\t),\n\t};\n}\n\nfunction stripUndefinedValues(\n\trecord: Record<string, unknown>,\n): Record<string, unknown> {\n\treturn Object.fromEntries(\n\t\tObject.entries(record).filter(([, value]) => value !== undefined),\n\t);\n}\n\nfunction resolveObjectiveId(linkage: ToolExecutionLinkage): string | undefined {\n\treturn (\n\t\ttrimString(linkage.objectiveId) ??\n\t\tgetEnvValue(TOOL_EXECUTION_OBJECTIVE_ENV_VARS)\n\t);\n}\n\nfunction normalizeExecuteToolRequest(\n\trequest: ExecutePlatformToolRequest,\n): Record<string, unknown> {\n\treturn stripUndefinedValues({\n\t\tlinkage: stripUndefinedValues({\n\t\t\tworkspaceId: request.linkage.workspaceId,\n\t\t\torganizationId: request.linkage.organizationId,\n\t\t\tagentId: request.linkage.agentId,\n\t\t\trunId: request.linkage.runId,\n\t\t\tobjectiveId: resolveObjectiveId(request.linkage),\n\t\t\tstepId: request.linkage.stepId,\n\t\t\tactorId: request.linkage.actorId,\n\t\t\tsurface: request.linkage.surface,\n\t\t\tchannelId: request.linkage.channelId,\n\t\t\tcorrelationId: request.linkage.correlationId,\n\t\t}),\n\t\ttool: stripUndefinedValues({\n\t\t\tnamespace: request.tool.namespace,\n\t\t\tname: request.tool.name,\n\t\t\tversion: request.tool.version,\n\t\t\tcapability: request.tool.capability,\n\t\t\toperation: request.tool.operation,\n\t\t\tidempotent: request.tool.idempotent,\n\t\t\tmutatesResource: request.tool.mutatesResource,\n\t\t}),\n\t\tconnector: request.connector\n\t\t\t? stripUndefinedValues({\n\t\t\t\t\tconnectionId: request.connector.connectionId,\n\t\t\t\t\tproviderId: request.connector.providerId,\n\t\t\t\t\tresourceId: request.connector.resourceId,\n\t\t\t\t\tresourceKind: request.connector.resourceKind,\n\t\t\t\t\tcredentialRef: request.connector.credentialRef,\n\t\t\t\t\tcredentialEnvironment: request.connector.credentialEnvironment,\n\t\t\t\t})\n\t\t\t: undefined,\n\t\targuments: request.arguments,\n\t\triskLevel: request.riskLevel,\n\t\tretryPolicy: request.retryPolicy\n\t\t\t? stripUndefinedValues({\n\t\t\t\t\tmaxAttempts: request.retryPolicy.maxAttempts,\n\t\t\t\t\tinitialDelayMs: request.retryPolicy.initialDelayMs,\n\t\t\t\t\tmaxDelayMs: request.retryPolicy.maxDelayMs,\n\t\t\t\t\tallowNonIdempotentRetry: request.retryPolicy.allowNonIdempotentRetry,\n\t\t\t\t})\n\t\t\t: undefined,\n\t\tidempotencyKey: request.idempotencyKey,\n\t\tmetadata: request.metadata,\n\t});\n}\n\nfunction normalizeToolExecutionOutput(\n\toutput: PlatformToolExecutionOutput,\n): Record<string, unknown> {\n\treturn stripUndefinedValues({\n\t\trawOutput: output.rawOutput,\n\t\tsafeOutput: output.safeOutput,\n\t\tproposals: output.proposals?.map((proposal) =>\n\t\t\tstripUndefinedValues({\n\t\t\t\tkind: proposal.kind,\n\t\t\t\ttargetRef: proposal.targetRef,\n\t\t\t\tpayload: proposal.payload,\n\t\t\t\tmetadata: proposal.metadata,\n\t\t\t}),\n\t\t),\n\t\tredactions: output.redactions,\n\t\tcontentType: output.contentType,\n\t\toutputDigest: output.outputDigest,\n\t\tdurationMs: output.durationMs,\n\t});\n}\n\nasync function parseJsonResponse(\n\tresponse: Response,\n\tserviceName: string,\n): Promise<Record<string, unknown>> {\n\tconst text = await response.text();\n\tif (!response.ok) {\n\t\tthrow new Error(\n\t\t\t`${serviceName} returned ${response.status}: ${text || response.statusText}`,\n\t\t);\n\t}\n\tif (!text.trim()) {\n\t\tthrow new Error(`${serviceName} returned empty response`);\n\t}\n\treturn JSON.parse(text) as Record<string, unknown>;\n}\n\nexport async function executeToolWithPlatform(\n\tconfig: ToolExecutionServiceConfig,\n\trequest: ExecutePlatformToolRequest,\n\tsignal?: AbortSignal,\n): Promise<ExecutePlatformToolResponse> {\n\tif (\n\t\trequest.linkage.surface === PLATFORM_WORKER_SURFACE &&\n\t\t!resolveObjectiveId(request.linkage)\n\t) {\n\t\tthrow new Error(\n\t\t\t`operating chat requires an objective_id for the ${PLATFORM_WORKER_SURFACE} surface; set MAESTRO_OBJECTIVE_ID (or MAESTRO_EVALOPS_OBJECTIVE_ID) or pass linkage.objectiveId`,\n\t\t);\n\t}\n\tconst response = await postPlatformConnect(\n\t\tconfig,\n\t\tEXECUTE_TOOL_PATH,\n\t\tnormalizeExecuteToolRequest(request),\n\t\t{\n\t\t\tserviceName: \"tool execution service\",\n\t\t\tfailureMode: \"required\",\n\t\t\ttimeoutMs: config.timeoutMs,\n\t\t\tmaxAttempts: config.maxAttempts,\n\t\t\tsignal,\n\t\t},\n\t);\n\tconst payload = await parseJsonResponse(response, \"tool execution service\");\n\treturn {\n\t\texecution: normalizeExecutionRecord(objectValue(payload, \"execution\")),\n\t\tidempotentReplay:\n\t\t\tfirstBoolean(payload, \"idempotentReplay\", \"idempotent_replay\") === true,\n\t};\n}\n\nexport async function resumeToolExecutionWithPlatform(\n\tconfig: ToolExecutionServiceConfig,\n\trequest: ResumePlatformToolExecutionRequest,\n\tsignal?: AbortSignal,\n): Promise<ResumePlatformToolExecutionResponse> {\n\tconst response = await postPlatformConnect(\n\t\tconfig,\n\t\tRESUME_TOOL_EXECUTION_PATH,\n\t\tstripUndefinedValues({\n\t\t\texecutionId: request.executionId,\n\t\t\tapprovalRequestId: request.approvalRequestId,\n\t\t\tresumeToken: request.resumeToken,\n\t\t\tapproved: request.approved,\n\t\t\tdecidedBy: request.decidedBy,\n\t\t\treason: request.reason,\n\t\t}),\n\t\t{\n\t\t\tserviceName: \"tool execution service\",\n\t\t\tfailureMode: \"required\",\n\t\t\ttimeoutMs: config.timeoutMs,\n\t\t\tmaxAttempts: config.maxAttempts,\n\t\t\tsignal,\n\t\t},\n\t);\n\tconst payload = await parseJsonResponse(response, \"tool execution service\");\n\treturn {\n\t\texecution: normalizeExecutionRecord(objectValue(payload, \"execution\")),\n\t};\n}\n\nexport async function recordToolExecutionOutputWithPlatform(\n\tconfig: ToolExecutionServiceConfig,\n\trequest: RecordPlatformToolExecutionOutputRequest,\n\tsignal?: AbortSignal,\n): Promise<RecordPlatformToolExecutionOutputResponse> {\n\tconst response = await postPlatformConnect(\n\t\tconfig,\n\t\tRECORD_TOOL_EXECUTION_OUTPUT_PATH,\n\t\tstripUndefinedValues({\n\t\t\texecutionId: request.executionId,\n\t\t\toutput: normalizeToolExecutionOutput(request.output),\n\t\t\tmetadata: request.metadata,\n\t\t}),\n\t\t{\n\t\t\tserviceName: \"tool execution service\",\n\t\t\tfailureMode: \"required\",\n\t\t\ttimeoutMs: config.timeoutMs,\n\t\t\tmaxAttempts: config.maxAttempts,\n\t\t\tsignal,\n\t\t},\n\t);\n\tconst payload = await parseJsonResponse(response, \"tool execution service\");\n\treturn {\n\t\texecution: normalizeExecutionRecord(objectValue(payload, \"execution\")),\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAkBH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,cAAc,CAAC;AAE5D,MAAM,MAAM,oBAAoB,GAC7B,UAAU,GACV,KAAK,GACL,gBAAgB,GAChB,YAAY,GACZ,wBAAwB,GACxB,oBAAoB,GACpB,mBAAmB,GACnB,yBAAyB,GACzB,mBAAmB,GACnB,2BAA2B,CAAC;AAE/B,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,KAAK,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;AAuS9E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CA+I7E"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAmBH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,cAAc,CAAC;AAE5D,MAAM,MAAM,oBAAoB,GAC7B,UAAU,GACV,KAAK,GACL,gBAAgB,GAChB,YAAY,GACZ,wBAAwB,GACxB,oBAAoB,GACpB,mBAAmB,GACnB,yBAAyB,GACzB,mBAAmB,GACnB,2BAA2B,CAAC;AAE/B,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,KAAK,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;AAmS9E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CA+I7E"}
@@ -50,6 +50,7 @@
50
50
  import { EVALOPS_ORGANIZATION_ID_ENV_VARS, EVALOPS_WORKSPACE_ID_ENV_VARS, readEvalOpsEnv, } from "../evalops/env-aliases.js";
51
51
  import { getOAuthToken } from "../oauth/index.js";
52
52
  import { loadOAuthCredentials } from "../oauth/storage.js";
53
+ import { isRecord } from "../utils/json.js";
53
54
  import { lookupApiKey } from "./api-keys.js";
54
55
  import { getEvalOpsManagedProviderDefinition, isEvalOpsManagedGatewayEnabled, isEvalOpsManagedProvider, isKnownEvalOpsManagedProvider, } from "./evalops-managed.js";
55
56
  import { getFreshOpenAIOAuthCredential } from "./openai-auth.js";
@@ -76,9 +77,6 @@ function resolveEvalOpsCredentialType(provider) {
76
77
  ? "bearer-token"
77
78
  : "api-key";
78
79
  }
79
- function isRecord(value) {
80
- return typeof value === "object" && value !== null && !Array.isArray(value);
81
- }
82
80
  function getNonEmptyString(value) {
83
81
  return typeof value === "string" && value.trim().length > 0
84
82
  ? value.trim()