@evalops/maestro 0.10.50 → 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 (406) 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-runtime.js +7756 -2800
  143. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
  144. package/dist/cli-tui/client-tools/client-tool-controller.js +1 -3
  145. package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
  146. package/dist/cli-tui/commands/undo-handlers.d.ts.map +1 -1
  147. package/dist/cli-tui/commands/undo-handlers.js +7 -2
  148. package/dist/cli-tui/commands/undo-handlers.js.map +1 -1
  149. package/dist/cli-tui/tui-renderer/skills-controller.d.ts +3 -0
  150. package/dist/cli-tui/tui-renderer/skills-controller.d.ts.map +1 -1
  151. package/dist/cli-tui/tui-renderer/skills-controller.js +77 -33
  152. package/dist/cli-tui/tui-renderer/skills-controller.js.map +1 -1
  153. package/dist/codex/app-server-client.d.ts.map +1 -1
  154. package/dist/codex/app-server-client.js +1 -3
  155. package/dist/codex/app-server-client.js.map +1 -1
  156. package/dist/codex/compatibility.d.ts.map +1 -1
  157. package/dist/codex/compatibility.js +1 -3
  158. package/dist/codex/compatibility.js.map +1 -1
  159. package/dist/codex/subagent-dispatch-table.d.ts +8 -0
  160. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -1
  161. package/dist/codex/subagent-dispatch-table.js +23 -0
  162. package/dist/codex/subagent-dispatch-table.js.map +1 -1
  163. package/dist/context/manifest.d.ts.map +1 -1
  164. package/dist/context/manifest.js +1 -3
  165. package/dist/context/manifest.js.map +1 -1
  166. package/dist/conversation/render-model.d.ts +0 -36
  167. package/dist/conversation/render-model.d.ts.map +1 -1
  168. package/dist/conversation/render-model.js +1 -3
  169. package/dist/conversation/render-model.js.map +1 -1
  170. package/dist/customer-value/ambient-learning.d.ts +75 -0
  171. package/dist/customer-value/ambient-learning.d.ts.map +1 -0
  172. package/dist/customer-value/ambient-learning.js +472 -0
  173. package/dist/customer-value/ambient-learning.js.map +1 -0
  174. package/dist/customer-value/internal-helpers.d.ts +13 -0
  175. package/dist/customer-value/internal-helpers.d.ts.map +1 -0
  176. package/dist/customer-value/internal-helpers.js +70 -0
  177. package/dist/customer-value/internal-helpers.js.map +1 -0
  178. package/dist/customer-value/report.d.ts +282 -0
  179. package/dist/customer-value/report.d.ts.map +1 -0
  180. package/dist/customer-value/report.js +2085 -0
  181. package/dist/customer-value/report.js.map +1 -0
  182. package/dist/db/schema.d.ts +5 -1
  183. package/dist/db/schema.d.ts.map +1 -1
  184. package/dist/db/schema.js.map +1 -1
  185. package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
  186. package/dist/evalops/agent-bootstrap.js +1 -3
  187. package/dist/evalops/agent-bootstrap.js.map +1 -1
  188. package/dist/evalops/agent-mcp-metadata.d.ts.map +1 -1
  189. package/dist/evalops/agent-mcp-metadata.js +1 -3
  190. package/dist/evalops/agent-mcp-metadata.js.map +1 -1
  191. package/dist/index.d.ts +1 -0
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +1 -0
  194. package/dist/index.js.map +1 -1
  195. package/dist/installers/maestro-review-workflow.d.ts +38 -0
  196. package/dist/installers/maestro-review-workflow.d.ts.map +1 -0
  197. package/dist/installers/maestro-review-workflow.js +163 -0
  198. package/dist/installers/maestro-review-workflow.js.map +1 -0
  199. package/dist/load-env.d.ts.map +1 -1
  200. package/dist/load-env.js +2 -1
  201. package/dist/load-env.js.map +1 -1
  202. package/dist/main.d.ts.map +1 -1
  203. package/dist/main.js +92 -3
  204. package/dist/main.js.map +1 -1
  205. package/dist/mcp/config.d.ts.map +1 -1
  206. package/dist/mcp/config.js +1 -3
  207. package/dist/mcp/config.js.map +1 -1
  208. package/dist/mcp/elicitation.d.ts.map +1 -1
  209. package/dist/mcp/elicitation.js +1 -3
  210. package/dist/mcp/elicitation.js.map +1 -1
  211. package/dist/mcp/official-registry.d.ts.map +1 -1
  212. package/dist/mcp/official-registry.js +1 -3
  213. package/dist/mcp/official-registry.js.map +1 -1
  214. package/dist/mcp/workspace-trust.d.ts.map +1 -1
  215. package/dist/mcp/workspace-trust.js +1 -3
  216. package/dist/mcp/workspace-trust.js.map +1 -1
  217. package/dist/memory/service-client.d.ts.map +1 -1
  218. package/dist/memory/service-client.js +1 -3
  219. package/dist/memory/service-client.js.map +1 -1
  220. package/dist/models/config-loader.d.ts.map +1 -1
  221. package/dist/models/config-loader.js +1 -3
  222. package/dist/models/config-loader.js.map +1 -1
  223. package/dist/node_modules/@evalops/contracts/dist/index.d.ts +1 -0
  224. package/dist/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  225. package/dist/node_modules/@evalops/contracts/dist/index.js +1 -0
  226. package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  227. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts +61 -0
  228. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts.map +1 -0
  229. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js +183 -0
  230. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js.map +1 -0
  231. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  232. package/dist/node_modules/@evalops/tui/package.json +1 -1
  233. package/dist/oauth/connectors.d.ts.map +1 -1
  234. package/dist/oauth/connectors.js +1 -3
  235. package/dist/oauth/connectors.js.map +1 -1
  236. package/dist/oauth/evalops.d.ts.map +1 -1
  237. package/dist/oauth/evalops.js +1 -3
  238. package/dist/oauth/evalops.js.map +1 -1
  239. package/dist/platform/a2a-client.d.ts.map +1 -1
  240. package/dist/platform/a2a-client.js +1 -3
  241. package/dist/platform/a2a-client.js.map +1 -1
  242. package/dist/platform/a2a-cockpit.d.ts +1 -0
  243. package/dist/platform/a2a-cockpit.d.ts.map +1 -1
  244. package/dist/platform/a2a-cockpit.js +42 -11
  245. package/dist/platform/a2a-cockpit.js.map +1 -1
  246. package/dist/platform/a2a-completion-audit.d.ts +1 -1
  247. package/dist/platform/a2a-completion-audit.d.ts.map +1 -1
  248. package/dist/platform/a2a-completion-audit.js +7 -11
  249. package/dist/platform/a2a-completion-audit.js.map +1 -1
  250. package/dist/platform/a2a-maestro-peer.js +16 -0
  251. package/dist/platform/a2a-maestro-peer.js.map +1 -1
  252. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -1
  253. package/dist/platform/a2a-peer-pairing.js +1 -3
  254. package/dist/platform/a2a-peer-pairing.js.map +1 -1
  255. package/dist/platform/a2a-peer-registry.d.ts.map +1 -1
  256. package/dist/platform/a2a-peer-registry.js +1 -3
  257. package/dist/platform/a2a-peer-registry.js.map +1 -1
  258. package/dist/platform/a2a-task-ledger.d.ts +20 -0
  259. package/dist/platform/a2a-task-ledger.d.ts.map +1 -1
  260. package/dist/platform/a2a-task-ledger.js +207 -11
  261. package/dist/platform/a2a-task-ledger.js.map +1 -1
  262. package/dist/platform/a2a-work-graph.d.ts.map +1 -1
  263. package/dist/platform/a2a-work-graph.js +1 -3
  264. package/dist/platform/a2a-work-graph.js.map +1 -1
  265. package/dist/platform/operating-layer.d.ts.map +1 -1
  266. package/dist/platform/operating-layer.js +14 -8
  267. package/dist/platform/operating-layer.js.map +1 -1
  268. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  269. package/dist/platform/tool-execution-client.js +19 -2
  270. package/dist/platform/tool-execution-client.js.map +1 -1
  271. package/dist/providers/auth.d.ts.map +1 -1
  272. package/dist/providers/auth.js +1 -3
  273. package/dist/providers/auth.js.map +1 -1
  274. package/dist/runtime/env.d.ts +9 -1
  275. package/dist/runtime/env.d.ts.map +1 -1
  276. package/dist/runtime/env.js +63 -1
  277. package/dist/runtime/env.js.map +1 -1
  278. package/dist/safety/policy.d.ts.map +1 -1
  279. package/dist/safety/policy.js +1 -4
  280. package/dist/safety/policy.js.map +1 -1
  281. package/dist/sandbox/docker-sandbox.d.ts.map +1 -1
  282. package/dist/sandbox/docker-sandbox.js +6 -1
  283. package/dist/sandbox/docker-sandbox.js.map +1 -1
  284. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  285. package/dist/server/handlers/hosted-runner-drain.js +1 -3
  286. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  287. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
  288. package/dist/server/handlers/platform-a2a-push.js +53 -2
  289. package/dist/server/handlers/platform-a2a-push.js.map +1 -1
  290. package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -1
  291. package/dist/server/handlers/runtime-app-server-ws.js +1 -3
  292. package/dist/server/handlers/runtime-app-server-ws.js.map +1 -1
  293. package/dist/server/headless-runtime-service.d.ts +16 -0
  294. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  295. package/dist/server/headless-runtime-service.js +232 -206
  296. package/dist/server/headless-runtime-service.js.map +1 -1
  297. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -1
  298. package/dist/server/hosted-agent-runtime-progress.js +12 -3
  299. package/dist/server/hosted-agent-runtime-progress.js.map +1 -1
  300. package/dist/server/pending-request-payload.d.ts.map +1 -1
  301. package/dist/server/pending-request-payload.js +1 -3
  302. package/dist/server/pending-request-payload.js.map +1 -1
  303. package/dist/server/route-auth.d.ts.map +1 -1
  304. package/dist/server/route-auth.js +2 -0
  305. package/dist/server/route-auth.js.map +1 -1
  306. package/dist/server/session-serialization.d.ts.map +1 -1
  307. package/dist/server/session-serialization.js +1 -3
  308. package/dist/server/session-serialization.js.map +1 -1
  309. package/dist/services/compliance/normalize.d.ts.map +1 -1
  310. package/dist/services/compliance/normalize.js +1 -3
  311. package/dist/services/compliance/normalize.js.map +1 -1
  312. package/dist/services/intelligent-router/normalize.d.ts.map +1 -1
  313. package/dist/services/intelligent-router/normalize.js +1 -3
  314. package/dist/services/intelligent-router/normalize.js.map +1 -1
  315. package/dist/services/revenue-attribution/normalize.d.ts.map +1 -1
  316. package/dist/services/revenue-attribution/normalize.js +1 -3
  317. package/dist/services/revenue-attribution/normalize.js.map +1 -1
  318. package/dist/services/traces/normalize.d.ts.map +1 -1
  319. package/dist/services/traces/normalize.js +1 -3
  320. package/dist/services/traces/normalize.js.map +1 -1
  321. package/dist/services/workspace-config/normalize.d.ts.map +1 -1
  322. package/dist/services/workspace-config/normalize.js +1 -3
  323. package/dist/services/workspace-config/normalize.js.map +1 -1
  324. package/dist/skills/composer.d.ts.map +1 -1
  325. package/dist/skills/composer.js +13 -1
  326. package/dist/skills/composer.js.map +1 -1
  327. package/dist/skills/index.d.ts +1 -0
  328. package/dist/skills/index.d.ts.map +1 -1
  329. package/dist/skills/index.js +1 -0
  330. package/dist/skills/index.js.map +1 -1
  331. package/dist/skills/learned-guidelines.d.ts +33 -0
  332. package/dist/skills/learned-guidelines.d.ts.map +1 -0
  333. package/dist/skills/learned-guidelines.js +291 -0
  334. package/dist/skills/learned-guidelines.js.map +1 -0
  335. package/dist/skills/linter.d.ts.map +1 -1
  336. package/dist/skills/linter.js +1 -3
  337. package/dist/skills/linter.js.map +1 -1
  338. package/dist/skills/runtime-activation.d.ts +1 -0
  339. package/dist/skills/runtime-activation.d.ts.map +1 -1
  340. package/dist/skills/runtime-activation.js +2 -3
  341. package/dist/skills/runtime-activation.js.map +1 -1
  342. package/dist/skills/tool.d.ts.map +1 -1
  343. package/dist/skills/tool.js +26 -21
  344. package/dist/skills/tool.js.map +1 -1
  345. package/dist/skills/trust-cache.d.ts +7 -0
  346. package/dist/skills/trust-cache.d.ts.map +1 -1
  347. package/dist/skills/trust-cache.js +16 -0
  348. package/dist/skills/trust-cache.js.map +1 -1
  349. package/dist/telemetry/agent-workforce-native-event.d.ts.map +1 -1
  350. package/dist/telemetry/agent-workforce-native-event.js +1 -3
  351. package/dist/telemetry/agent-workforce-native-event.js.map +1 -1
  352. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  353. package/dist/telemetry/maestro-event-bus.js +42 -81
  354. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  355. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  356. package/dist/telemetry/maestro-platform-replay-fixture.js +1 -3
  357. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  358. package/dist/telemetry.d.ts.map +1 -1
  359. package/dist/telemetry.js +54 -43
  360. package/dist/telemetry.js.map +1 -1
  361. package/dist/theme/theme-loader.d.ts.map +1 -1
  362. package/dist/theme/theme-loader.js +1 -3
  363. package/dist/theme/theme-loader.js.map +1 -1
  364. package/dist/tools/apply-patch.d.ts.map +1 -1
  365. package/dist/tools/apply-patch.js +76 -8
  366. package/dist/tools/apply-patch.js.map +1 -1
  367. package/dist/tools/diff-preview.d.ts.map +1 -1
  368. package/dist/tools/diff-preview.js +10 -1
  369. package/dist/tools/diff-preview.js.map +1 -1
  370. package/dist/tools/edit.d.ts.map +1 -1
  371. package/dist/tools/edit.js +17 -0
  372. package/dist/tools/edit.js.map +1 -1
  373. package/dist/tools/write.d.ts.map +1 -1
  374. package/dist/tools/write.js +9 -0
  375. package/dist/tools/write.js.map +1 -1
  376. package/dist/undo/tracker.d.ts +5 -0
  377. package/dist/undo/tracker.d.ts.map +1 -1
  378. package/dist/undo/tracker.js +13 -0
  379. package/dist/undo/tracker.js.map +1 -1
  380. package/dist/utils/fs.d.ts +1 -1
  381. package/dist/utils/fs.d.ts.map +1 -1
  382. package/dist/utils/fs.js +29 -2
  383. package/dist/utils/fs.js.map +1 -1
  384. package/dist/utils/git-stash.d.ts.map +1 -1
  385. package/dist/utils/git-stash.js +15 -8
  386. package/dist/utils/git-stash.js.map +1 -1
  387. package/dist/utils/json.d.ts +11 -0
  388. package/dist/utils/json.d.ts.map +1 -1
  389. package/dist/utils/json.js +9 -0
  390. package/dist/utils/json.js.map +1 -1
  391. package/dist/utils/shell-env.d.ts.map +1 -1
  392. package/dist/utils/shell-env.js +2 -0
  393. package/dist/utils/shell-env.js.map +1 -1
  394. package/dist/utils/url-extractor-git.d.ts +26 -0
  395. package/dist/utils/url-extractor-git.d.ts.map +1 -0
  396. package/dist/utils/url-extractor-git.js +259 -0
  397. package/dist/utils/url-extractor-git.js.map +1 -0
  398. package/dist/utils/url-extractor.d.ts.map +1 -1
  399. package/dist/utils/url-extractor.js +23 -251
  400. package/dist/utils/url-extractor.js.map +1 -1
  401. package/dist/version.json +2 -2
  402. package/package.json +310 -306
  403. package/skills/incident-triage/SKILL.md +19 -1
  404. package/skills/install-code-review/SKILL.md +69 -0
  405. package/skills/security-review/SKILL.md +68 -0
  406. package/skills/security-review/reference/rubric.md +85 -0
@@ -18797,6 +18797,28 @@ function resolveHomePath(value, raw) {
18797
18797
  const expanded = value === "~" ? home : value.startsWith("~/") || value.startsWith("~\\") ? join4(home, value.slice(2)) : value;
18798
18798
  return resolve3(expanded);
18799
18799
  }
18800
+ function homeFromEnv(raw) {
18801
+ return trim(raw.HOME) ?? trim(raw.USERPROFILE) ?? homedir2();
18802
+ }
18803
+ function resolveDataLocalDir(raw) {
18804
+ const home = homeFromEnv(raw);
18805
+ if (process.platform === "darwin") {
18806
+ return join4(home, "Library", "Application Support");
18807
+ }
18808
+ if (process.platform === "win32") {
18809
+ return resolveHomePath(trim(raw.LOCALAPPDATA), raw) ?? resolveHomePath(trim(raw.APPDATA), raw) ?? join4(home, "AppData", "Local");
18810
+ }
18811
+ return resolveHomePath(trim(raw.XDG_DATA_HOME), raw) ?? join4(home, ".local", "share");
18812
+ }
18813
+ function resolveRuntimeDir(raw) {
18814
+ if (process.platform === "darwin") {
18815
+ return resolveDataLocalDir(raw);
18816
+ }
18817
+ const xdgRuntimeDir = resolveHomePath(trim(raw.XDG_RUNTIME_DIR), raw);
18818
+ if (xdgRuntimeDir)
18819
+ return xdgRuntimeDir;
18820
+ return resolveDataLocalDir(raw);
18821
+ }
18800
18822
  function createRuntimeEnv(raw) {
18801
18823
  return Object.freeze({
18802
18824
  logLevel: parseLogLevel2(trim(raw.MAESTRO_LOG_LEVEL)),
@@ -18807,6 +18829,9 @@ function createRuntimeEnv(raw) {
18807
18829
  disableKeychain: parseBoolean(trim(raw.MAESTRO_DISABLE_KEYCHAIN)),
18808
18830
  maestroHome: trim(raw.MAESTRO_HOME) ?? join4(homedir2(), ".maestro"),
18809
18831
  maestroAgentDir: trim(raw.MAESTRO_AGENT_DIR),
18832
+ missionStoreDir: resolveHomePath(trim(raw.MAESTRO_MISSION_STORE_DIR), raw),
18833
+ snapshotBlobDir: resolveHomePath(trim(raw.MAESTRO_SNAPSHOT_BLOB_DIR), raw),
18834
+ skillTrustStrict: parseBoolean(trim(raw.MAESTRO_SKILL_TRUST_STRICT)),
18810
18835
  telemetryEnabled: parseOptionalBoolean(trim(raw.MAESTRO_TELEMETRY) ?? trim(raw.PLAYWRIGHT_TELEMETRY)),
18811
18836
  telemetryFlag: trim(raw.MAESTRO_TELEMETRY) ?? trim(raw.PLAYWRIGHT_TELEMETRY),
18812
18837
  beaconFile: resolveHomePath(trim(raw.MAESTRO_BEACON_FILE), raw),
@@ -18830,10 +18855,31 @@ function createRuntimeEnv(raw) {
18830
18855
  ]),
18831
18856
  meterBaseUrl: firstNonEmpty(raw, METER_BASE_URL_VARS),
18832
18857
  meterAccessToken: firstNonEmpty(raw, METER_ACCESS_TOKEN_VARS),
18833
- meterOrganizationId: firstNonEmpty(raw, METER_ORG_ID_VARS)
18858
+ meterOrganizationId: firstNonEmpty(raw, METER_ORG_ID_VARS),
18859
+ ambientLearnerFile: resolveHomePath(trim(raw.MAESTRO_AMBIENT_LEARNER_FILE), raw),
18860
+ ambientLearnerDefaultFile: join4(resolveDataLocalDir(raw), "ambient-agent", "learner.json"),
18861
+ ambientSocketFile: join4(resolveRuntimeDir(raw), "ambient-agent.sock")
18834
18862
  });
18835
18863
  }
18864
+ function isTestProcess() {
18865
+ return process.env.NODE_ENV === "test" || process.env.VITEST === "true";
18866
+ }
18867
+ function maybeReportEarlyRuntimeEnvAccess() {
18868
+ if (processWithRuntimeEnvCache.__MAESTRO_RUNTIME_ENV_FINALIZED__) {
18869
+ return;
18870
+ }
18871
+ const message = "defaultRuntimeEnv() was read before loadAndFinalizeEnv() completed. Bootstrap entry points must finish dotenv loading and security scrubbing before runtime env snapshots are created.";
18872
+ if (process.env.MAESTRO_RUNTIME_ENV_STRICT_BOOTSTRAP === "1") {
18873
+ throw new Error(message);
18874
+ }
18875
+ if (isTestProcess() || processWithRuntimeEnvCache.__MAESTRO_RUNTIME_ENV_EARLY_ACCESS_WARNED__) {
18876
+ return;
18877
+ }
18878
+ processWithRuntimeEnvCache.__MAESTRO_RUNTIME_ENV_EARLY_ACCESS_WARNED__ = true;
18879
+ console.warn(`[maestro] ${message}`);
18880
+ }
18836
18881
  function defaultRuntimeEnv() {
18882
+ maybeReportEarlyRuntimeEnvAccess();
18837
18883
  if (!processWithRuntimeEnvCache.__MAESTRO_DEFAULT_RUNTIME_ENV__) {
18838
18884
  processWithRuntimeEnvCache.__MAESTRO_DEFAULT_RUNTIME_ENV__ = createRuntimeEnv(process.env);
18839
18885
  }
@@ -19041,6 +19087,43 @@ var init_logger = __esm({
19041
19087
  }
19042
19088
  });
19043
19089
 
19090
+ // dist/utils/json.js
19091
+ function safeJsonParse(input, context) {
19092
+ try {
19093
+ const data = JSON.parse(input);
19094
+ return { success: true, data };
19095
+ } catch (error) {
19096
+ const message = context ? `Failed to parse JSON in ${context}` : "Failed to parse JSON";
19097
+ const parseError = new JsonParseError(
19098
+ message,
19099
+ input.slice(0, 200),
19100
+ // Limit stored input
19101
+ error instanceof Error ? error : void 0
19102
+ );
19103
+ logger2.debug(message, { inputLength: input.length, error });
19104
+ return { success: false, error: parseError };
19105
+ }
19106
+ }
19107
+ function isRecord(value) {
19108
+ return typeof value === "object" && value !== null && !Array.isArray(value);
19109
+ }
19110
+ var logger2, JsonParseError;
19111
+ var init_json = __esm({
19112
+ "dist/utils/json.js"() {
19113
+ "use strict";
19114
+ init_logger();
19115
+ logger2 = createLogger("json-utils");
19116
+ JsonParseError = class extends Error {
19117
+ constructor(message, input, cause) {
19118
+ super(message);
19119
+ this.input = input;
19120
+ this.cause = cause;
19121
+ this.name = "JsonParseError";
19122
+ }
19123
+ };
19124
+ }
19125
+ });
19126
+
19044
19127
  // dist/safety/credential-patterns.js
19045
19128
  import { createHash, randomBytes } from "node:crypto";
19046
19129
  function createGlobalPatternRegex(def) {
@@ -19543,40 +19626,6 @@ var init_feature_flags = __esm({
19543
19626
  }
19544
19627
  });
19545
19628
 
19546
- // dist/utils/json.js
19547
- function safeJsonParse(input, context) {
19548
- try {
19549
- const data = JSON.parse(input);
19550
- return { success: true, data };
19551
- } catch (error) {
19552
- const message = context ? `Failed to parse JSON in ${context}` : "Failed to parse JSON";
19553
- const parseError = new JsonParseError(
19554
- message,
19555
- input.slice(0, 200),
19556
- // Limit stored input
19557
- error instanceof Error ? error : void 0
19558
- );
19559
- logger2.debug(message, { inputLength: input.length, error });
19560
- return { success: false, error: parseError };
19561
- }
19562
- }
19563
- var logger2, JsonParseError;
19564
- var init_json = __esm({
19565
- "dist/utils/json.js"() {
19566
- "use strict";
19567
- init_logger();
19568
- logger2 = createLogger("json-utils");
19569
- JsonParseError = class extends Error {
19570
- constructor(message, input, cause) {
19571
- super(message);
19572
- this.input = input;
19573
- this.cause = cause;
19574
- this.name = "JsonParseError";
19575
- }
19576
- };
19577
- }
19578
- });
19579
-
19580
19629
  // dist/utils/fs.js
19581
19630
  import { randomBytes as randomBytes2 } from "node:crypto";
19582
19631
  import { constants, closeSync, existsSync, fsyncSync, mkdirSync, openSync, readFileSync as readFileSync3, renameSync, statSync as statSync3, unlinkSync, writeFileSync } from "node:fs";
@@ -19628,7 +19677,16 @@ function readJsonFile(path2, options = {}) {
19628
19677
  error: result.error.message
19629
19678
  });
19630
19679
  if (rotateOnParseFail) {
19631
- rotateCorruptJsonFile(path2);
19680
+ const rotatedPath = rotateCorruptJsonFile(path2, content);
19681
+ if (!rotatedPath) {
19682
+ const repairedContent = readTextFile(path2, { fallback: "" });
19683
+ if (repairedContent !== "" && repairedContent !== content) {
19684
+ const repaired = safeJsonParse(repairedContent, path2);
19685
+ if (repaired.success) {
19686
+ return repaired.data;
19687
+ }
19688
+ }
19689
+ }
19632
19690
  }
19633
19691
  return fallback;
19634
19692
  }
@@ -19643,9 +19701,26 @@ function readJsonFile(path2, options = {}) {
19643
19701
  throw error;
19644
19702
  }
19645
19703
  }
19646
- function rotateCorruptJsonFile(path2) {
19704
+ function rotateCorruptJsonFile(path2, expectedContent) {
19647
19705
  if (!fileExists(path2))
19648
19706
  return null;
19707
+ if (expectedContent !== void 0) {
19708
+ try {
19709
+ const currentContent = readFileSync3(path2, "utf8");
19710
+ if (currentContent !== expectedContent) {
19711
+ logger3.warn("Skipped corrupt JSON rotation; file changed after read", {
19712
+ path: path2
19713
+ });
19714
+ return null;
19715
+ }
19716
+ } catch (error) {
19717
+ logger3.warn("Failed to re-read corrupt JSON before rotation", {
19718
+ path: path2,
19719
+ error: error instanceof Error ? error.message : String(error)
19720
+ });
19721
+ return null;
19722
+ }
19723
+ }
19649
19724
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
19650
19725
  const nonce = randomBytes2(4).toString("hex");
19651
19726
  const rotatedPath = `${path2}.corrupt.${timestamp}.${nonce}`;
@@ -20546,7 +20621,10 @@ function defaultCorrelation(env, managedContext) {
20546
20621
  remote_runner_session_id: readEnv2(env, [
20547
20622
  "MAESTRO_REMOTE_RUNNER_SESSION_ID"
20548
20623
  ]),
20549
- objective_id: readEnv2(env, ["MAESTRO_OBJECTIVE_ID"]),
20624
+ objective_id: readEnv2(env, [
20625
+ "MAESTRO_OBJECTIVE_ID",
20626
+ "MAESTRO_EVALOPS_OBJECTIVE_ID"
20627
+ ]),
20550
20628
  conversation_id: readEnv2(env, ["MAESTRO_CONVERSATION_ID"]),
20551
20629
  attributes: readStringRecord(env, "MAESTRO_EVENT_BUS_ATTR_")
20552
20630
  };
@@ -20812,28 +20890,34 @@ function contextFromMetadata(metadata, extra) {
20812
20890
  Object.assign(context, extra);
20813
20891
  return Object.keys(context).length > 0 ? context : void 0;
20814
20892
  }
20893
+ function normalizeOptionalString(value) {
20894
+ if (typeof value !== "string")
20895
+ return void 0;
20896
+ const trimmed = value.trim();
20897
+ return trimmed.length > 0 ? trimmed : void 0;
20898
+ }
20815
20899
  function correlationFromMetadata(metadata) {
20816
20900
  if (!metadata || typeof metadata !== "object" || Array.isArray(metadata)) {
20817
20901
  return void 0;
20818
20902
  }
20819
20903
  const record = metadata;
20820
20904
  return {
20821
- session_id: typeof record.sessionId === "string" ? record.sessionId : typeof record.session_id === "string" ? record.session_id : void 0,
20822
- workspace_id: typeof record.workspaceId === "string" ? record.workspaceId : typeof record.workspace_id === "string" ? record.workspace_id : void 0,
20823
- agent_run_id: typeof record.agentRunId === "string" ? record.agentRunId : typeof record.agent_run_id === "string" ? record.agent_run_id : void 0,
20824
- agent_run_step_id: typeof record.toolCallId === "string" ? record.toolCallId : typeof record.tool_call_id === "string" ? record.tool_call_id : void 0,
20825
- organization_id: typeof record.organizationId === "string" ? record.organizationId : typeof record.organization_id === "string" ? record.organization_id : void 0,
20826
- user_id: typeof record.userId === "string" ? record.userId : typeof record.user_id === "string" ? record.user_id : void 0,
20827
- agent_id: typeof record.agentId === "string" ? record.agentId : typeof record.agent_id === "string" ? record.agent_id : void 0,
20828
- actor_id: typeof record.actorId === "string" ? record.actorId : typeof record.actor_id === "string" ? record.actor_id : void 0,
20829
- principal_id: typeof record.principalId === "string" ? record.principalId : typeof record.principal_id === "string" ? record.principal_id : void 0,
20830
- trace_id: typeof record.traceId === "string" ? record.traceId : typeof record.trace_id === "string" ? record.trace_id : void 0,
20831
- traceparent: typeof record.traceparent === "string" ? record.traceparent : typeof record.trace_parent === "string" ? record.trace_parent : void 0,
20832
- tracestate: typeof record.tracestate === "string" ? record.tracestate : typeof record.trace_state === "string" ? record.trace_state : void 0,
20833
- request_id: typeof record.requestId === "string" ? record.requestId : typeof record.request_id === "string" ? record.request_id : void 0,
20834
- remote_runner_session_id: typeof record.remoteRunnerSessionId === "string" ? record.remoteRunnerSessionId : typeof record.remote_runner_session_id === "string" ? record.remote_runner_session_id : void 0,
20835
- objective_id: typeof record.objectiveId === "string" ? record.objectiveId : typeof record.objective_id === "string" ? record.objective_id : void 0,
20836
- conversation_id: typeof record.conversationId === "string" ? record.conversationId : typeof record.conversation_id === "string" ? record.conversation_id : void 0
20905
+ session_id: normalizeOptionalString(record.sessionId) ?? normalizeOptionalString(record.session_id),
20906
+ workspace_id: normalizeOptionalString(record.workspaceId) ?? normalizeOptionalString(record.workspace_id),
20907
+ agent_run_id: normalizeOptionalString(record.agentRunId) ?? normalizeOptionalString(record.agent_run_id),
20908
+ agent_run_step_id: normalizeOptionalString(record.toolCallId) ?? normalizeOptionalString(record.tool_call_id),
20909
+ organization_id: normalizeOptionalString(record.organizationId) ?? normalizeOptionalString(record.organization_id),
20910
+ user_id: normalizeOptionalString(record.userId) ?? normalizeOptionalString(record.user_id),
20911
+ agent_id: normalizeOptionalString(record.agentId) ?? normalizeOptionalString(record.agent_id),
20912
+ actor_id: normalizeOptionalString(record.actorId) ?? normalizeOptionalString(record.actor_id),
20913
+ principal_id: normalizeOptionalString(record.principalId) ?? normalizeOptionalString(record.principal_id),
20914
+ trace_id: normalizeOptionalString(record.traceId) ?? normalizeOptionalString(record.trace_id),
20915
+ traceparent: normalizeOptionalString(record.traceparent) ?? normalizeOptionalString(record.trace_parent),
20916
+ tracestate: normalizeOptionalString(record.tracestate) ?? normalizeOptionalString(record.trace_state),
20917
+ request_id: normalizeOptionalString(record.requestId) ?? normalizeOptionalString(record.request_id),
20918
+ remote_runner_session_id: normalizeOptionalString(record.remoteRunnerSessionId) ?? normalizeOptionalString(record.remote_runner_session_id),
20919
+ objective_id: normalizeOptionalString(record.objectiveId) ?? normalizeOptionalString(record.objective_id),
20920
+ conversation_id: normalizeOptionalString(record.conversationId) ?? normalizeOptionalString(record.conversation_id)
20837
20921
  };
20838
20922
  }
20839
20923
  function stringMetadata(metadata, name) {
@@ -21431,9 +21515,6 @@ function resolveBundledCodexBinPath() {
21431
21515
  return null;
21432
21516
  }
21433
21517
  }
21434
- function isRecord(value) {
21435
- return Boolean(value && typeof value === "object" && !Array.isArray(value));
21436
- }
21437
21518
  function defaultServerRequestResponse(method) {
21438
21519
  switch (method) {
21439
21520
  case "item/commandExecution/requestApproval":
@@ -21469,6 +21550,7 @@ var init_app_server_client = __esm({
21469
21550
  "dist/codex/app-server-client.js"() {
21470
21551
  "use strict";
21471
21552
  init_package_version();
21553
+ init_json();
21472
21554
  DEFAULT_REQUEST_TIMEOUT_MS = 3e4;
21473
21555
  DEFAULT_LOGIN_TIMEOUT_MS = 5 * 6e4;
21474
21556
  MAX_NOTIFICATION_HISTORY = 100;
@@ -23399,9 +23481,6 @@ var init_service_client = __esm({
23399
23481
  function isConnectorOAuthProvider(provider) {
23400
23482
  return Object.prototype.hasOwnProperty.call(CONNECTOR_PROVIDER_BY_OAUTH_PROVIDER, provider);
23401
23483
  }
23402
- function isRecord2(value) {
23403
- return typeof value === "object" && value !== null && !Array.isArray(value);
23404
- }
23405
23484
  function getMetadataString(metadata, key) {
23406
23485
  const value = metadata?.[key];
23407
23486
  return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
@@ -23416,7 +23495,7 @@ function getMetadataStringArray(metadata, key) {
23416
23495
  }
23417
23496
  function getMetadataStringMap(metadata, key) {
23418
23497
  const value = metadata?.[key];
23419
- if (!isRecord2(value)) {
23498
+ if (!isRecord(value)) {
23420
23499
  return void 0;
23421
23500
  }
23422
23501
  const entries = Object.entries(value).map(([entryKey, entryValue]) => [
@@ -23527,6 +23606,7 @@ var init_connectors = __esm({
23527
23606
  "dist/oauth/connectors.js"() {
23528
23607
  "use strict";
23529
23608
  init_service_client();
23609
+ init_json();
23530
23610
  init_storage();
23531
23611
  CONNECTOR_PROVIDER_BY_OAUTH_PROVIDER = {
23532
23612
  "github-copilot": "github",
@@ -23905,9 +23985,6 @@ function parseScopesPayload(value) {
23905
23985
  }
23906
23986
  return value.filter((entry2) => typeof entry2 === "string").map((entry2) => entry2.trim()).filter((entry2) => entry2.length > 0);
23907
23987
  }
23908
- function isRecord3(value) {
23909
- return typeof value === "object" && value !== null && !Array.isArray(value);
23910
- }
23911
23988
  function getMetadataString2(metadata, key) {
23912
23989
  const value = metadata?.[key];
23913
23990
  return typeof value === "string" && value.trim().length > 0 ? value : void 0;
@@ -23921,7 +23998,7 @@ function getMetadataScopes(metadata) {
23921
23998
  }
23922
23999
  function resolveProviderRef(metadata) {
23923
24000
  const fallback = getProviderRef();
23924
- const providerRef = isRecord3(metadata?.providerRef) ? metadata.providerRef : void 0;
24001
+ const providerRef = isRecord(metadata?.providerRef) ? metadata.providerRef : void 0;
23925
24002
  return {
23926
24003
  provider: getMetadataString2(providerRef, "provider") ?? fallback.provider,
23927
24004
  environment: getMetadataString2(providerRef, "environment") ?? fallback.environment,
@@ -24288,6 +24365,7 @@ var init_evalops = __esm({
24288
24365
  init_env_aliases();
24289
24366
  init_core_services();
24290
24367
  init_downstream_http();
24368
+ init_json();
24291
24369
  init_logger();
24292
24370
  init_loopback_http();
24293
24371
  init_device_identity();
@@ -26604,28 +26682,58 @@ __export(telemetry_exports, {
26604
26682
  import { appendFile as appendFile2, mkdir as mkdir2 } from "node:fs/promises";
26605
26683
  import { dirname as dirname6 } from "node:path";
26606
26684
  import { SpanStatusCode } from "@opentelemetry/api";
26685
+ function createExporterRuntimeConfig(env) {
26686
+ const file = env.exporterFile;
26687
+ const endpoint = env.exporterEndpoint;
26688
+ const initialEnabled = shouldEnableTelemetryForEnv(env, file, endpoint);
26689
+ return {
26690
+ endpoint,
26691
+ env,
26692
+ file,
26693
+ flag: env.telemetryFlag,
26694
+ initialEnabled,
26695
+ // `RuntimeEnv.telemetrySampleRate` is already parsed and clamped to
26696
+ // `[0, 1]`; `null` means no signal, treated as full-sampling.
26697
+ sampleRate: env.telemetrySampleRate ?? 1
26698
+ };
26699
+ }
26700
+ function getExporterRuntimeConfig() {
26701
+ const env = defaultRuntimeEnv();
26702
+ if (!exporterRuntimeConfig || exporterRuntimeConfig.env !== env) {
26703
+ exporterRuntimeConfig = createExporterRuntimeConfig(env);
26704
+ }
26705
+ return exporterRuntimeConfig;
26706
+ }
26707
+ function shouldEnableTelemetryForEnv(env, file, endpoint) {
26708
+ if (env.telemetryEnabled === false)
26709
+ return false;
26710
+ if (env.telemetryEnabled === true)
26711
+ return true;
26712
+ return Boolean(endpoint || file || hasRemoteMeterDestination());
26713
+ }
26607
26714
  function getTelemetryStatus() {
26715
+ const config = getExporterRuntimeConfig();
26608
26716
  let reason = "disabled";
26609
- const baseEnabled = initialTelemetryEnabled && samplingRate > 0;
26610
- if (!shouldEnableTelemetry()) {
26717
+ const baseEnabled = config.initialEnabled && config.sampleRate > 0;
26718
+ if (!shouldEnableTelemetry(config)) {
26611
26719
  reason = "flag disabled";
26612
- } else if (samplingRate === 0) {
26720
+ } else if (config.sampleRate === 0) {
26613
26721
  reason = "sampling=0";
26614
- } else if (telemetryEndpointEnv) {
26722
+ } else if (config.endpoint) {
26615
26723
  reason = "endpoint";
26616
26724
  } else if (hasRemoteMeterDestination()) {
26617
26725
  reason = "meter";
26618
- } else if (telemetryFileEnv || baseEnabled) {
26726
+ } else if (config.file || baseEnabled) {
26619
26727
  reason = "file";
26620
26728
  }
26621
26729
  const runtimeOverride = telemetryOverride === null ? void 0 : telemetryOverride ? "enabled" : "disabled";
26622
26730
  return {
26623
- enabled: telemetryEnabled && samplingRate > 0,
26731
+ enabled: (telemetryOverride === null ? config.initialEnabled : telemetryOverride) && config.sampleRate > 0,
26624
26732
  reason,
26625
- endpoint: telemetryEndpointEnv ?? void 0,
26626
- filePath: telemetryFileEnv ?? defaultTelemetryFile,
26627
- sampleRate: samplingRate,
26628
- flagValue: telemetryFlag ?? void 0,
26733
+ endpoint: config.endpoint ?? void 0,
26734
+ filePath: config.file ?? defaultTelemetryFile,
26735
+ sampleRate: config.sampleRate,
26736
+ flagValue: config.flag ?? void 0,
26629
26737
  runtimeOverride,
26630
26738
  overrideReason: telemetryOverrideReason
26631
26739
  };
@@ -26633,7 +26741,6 @@ function getTelemetryStatus() {
26633
26741
  function setTelemetryRuntimeOverride(enabled, reason) {
26634
26742
  telemetryOverride = enabled;
26635
26743
  telemetryOverrideReason = reason;
26636
- telemetryEnabled = enabled === null ? initialTelemetryEnabled : enabled;
26637
26744
  }
26638
26745
  function normalizeTelemetryEventMetadata(event) {
26639
26746
  if (!("metadata" in event) && !("sensitiveMetadata" in event)) {
@@ -26661,7 +26768,7 @@ function isCanonicalTurnTelemetryEvent(event) {
26661
26768
  return event.type === "canonical-turn" && "model" in event && "tokens" in event;
26662
26769
  }
26663
26770
  async function writeToFile(payload) {
26664
- const filePath = telemetryFileEnv || defaultTelemetryFile;
26771
+ const filePath = getExporterRuntimeConfig().file || defaultTelemetryFile;
26665
26772
  await mkdir2(dirname6(filePath), { recursive: true });
26666
26773
  await appendFile2(filePath, `${payload}
26667
26774
  `, "utf-8");
@@ -26672,7 +26779,7 @@ async function appendToolFailure(payload) {
26672
26779
  `, "utf-8");
26673
26780
  }
26674
26781
  async function postToEndpoint(payload) {
26675
- const endpoint = telemetryEndpointEnv;
26782
+ const endpoint = getExporterRuntimeConfig().endpoint;
26676
26783
  if (!endpoint) {
26677
26784
  return;
26678
26785
  }
@@ -26980,17 +27087,18 @@ function maestroCorrelationSpanAttributes(event) {
26980
27087
  return Object.fromEntries(Object.entries(attributes).filter((entry2) => typeof entry2[1] === "string" && entry2[1].trim().length > 0 && entry2[1] !== "unknown"));
26981
27088
  }
26982
27089
  async function persistTelemetry(event) {
27090
+ const config = getExporterRuntimeConfig();
26983
27091
  const payload = JSON.stringify(event);
26984
27092
  const tasks = [];
26985
27093
  if (isCanonicalTurnTelemetryEvent(event)) {
26986
27094
  tasks.push(mirrorCanonicalTurnEventToMeter(event).then(() => void 0));
26987
27095
  }
26988
- if (telemetryEndpointEnv) {
27096
+ if (config.endpoint) {
26989
27097
  tasks.push(postToEndpoint(payload));
26990
27098
  }
26991
- if (telemetryEndpointEnv === void 0) {
27099
+ if (config.file) {
26992
27100
  tasks.push(writeToFile(payload));
26993
- } else if (telemetryFileEnv) {
27101
+ } else if (config.endpoint === null && !hasRemoteMeterDestination(config.env)) {
26994
27102
  tasks.push(writeToFile(payload));
26995
27103
  }
26996
27104
  await Promise.all(tasks);
@@ -27018,6 +27126,7 @@ async function recordTelemetry(event) {
27018
27126
  if (isInternalTelemetryDisabled()) {
27019
27127
  return;
27020
27128
  }
27129
+ const config = getExporterRuntimeConfig();
27021
27130
  const normalizedEvent = normalizeTelemetryEventMetadata(event);
27022
27131
  const openTelemetryEnabled = isOpenTelemetryEnabled();
27023
27132
  if (openTelemetryEnabled) {
@@ -27025,12 +27134,12 @@ async function recordTelemetry(event) {
27025
27134
  recordOpenTelemetryMetric(normalizedEvent);
27026
27135
  }
27027
27136
  const eventBusTask = mirrorTelemetryToMaestroEventBus(normalizedEvent);
27028
- const legacyEnabled = telemetryEnabled && samplingRate > 0;
27137
+ const legacyEnabled = (telemetryOverride === null ? config.initialEnabled : telemetryOverride) && config.sampleRate > 0;
27029
27138
  if (!legacyEnabled) {
27030
27139
  await eventBusTask;
27031
27140
  return;
27032
27141
  }
27033
- if (samplingRate < 1 && Math.random() > samplingRate) {
27142
+ if (config.sampleRate < 1 && Math.random() > config.sampleRate) {
27034
27143
  await eventBusTask;
27035
27144
  return;
27036
27145
  }
@@ -27284,7 +27393,7 @@ function recordSandboxViolation(event, tool, action, reason, options) {
27284
27393
  metadata: options?.metadata ? { ...options.metadata, sessionId: options.sessionId } : options?.sessionId ? { sessionId: options.sessionId } : void 0
27285
27394
  });
27286
27395
  }
27287
- var exporterRuntimeEnv, telemetryFileEnv, telemetryEndpointEnv, telemetryFlag, telemetrySampleRate, shouldEnableTelemetry, initialTelemetryEnabled, telemetryEnabled, telemetryOverride, telemetryOverrideReason, A2A_PHASE_EVENT_TYPES, samplingRate, defaultTelemetryFile, toolFailureLogFile, BACKGROUND_TASK_HISTORY_LIMIT, backgroundTaskHistory;
27396
+ var exporterRuntimeConfig, shouldEnableTelemetry, telemetryOverride, telemetryOverrideReason, A2A_PHASE_EVENT_TYPES, defaultTelemetryFile, toolFailureLogFile, BACKGROUND_TASK_HISTORY_LIMIT, backgroundTaskHistory;
27288
27397
  var init_telemetry = __esm({
27289
27398
  "dist/telemetry.js"() {
27290
27399
  "use strict";
@@ -27300,20 +27409,8 @@ var init_telemetry = __esm({
27300
27409
  init_wide_events();
27301
27410
  init_secret_redactor();
27302
27411
  init_metadata_normalization();
27303
- exporterRuntimeEnv = defaultRuntimeEnv();
27304
- telemetryFileEnv = exporterRuntimeEnv.exporterFile;
27305
- telemetryEndpointEnv = exporterRuntimeEnv.exporterEndpoint;
27306
- telemetryFlag = exporterRuntimeEnv.telemetryFlag;
27307
- telemetrySampleRate = exporterRuntimeEnv.telemetrySampleRate;
27308
- shouldEnableTelemetry = () => {
27309
- if (exporterRuntimeEnv.telemetryEnabled === false)
27310
- return false;
27311
- if (exporterRuntimeEnv.telemetryEnabled === true)
27312
- return true;
27313
- return Boolean(telemetryEndpointEnv || telemetryFileEnv || hasRemoteMeterDestination());
27314
- };
27315
- initialTelemetryEnabled = shouldEnableTelemetry();
27316
- telemetryEnabled = initialTelemetryEnabled;
27412
+ exporterRuntimeConfig = null;
27413
+ shouldEnableTelemetry = (config = getExporterRuntimeConfig()) => shouldEnableTelemetryForEnv(config.env, config.file, config.endpoint);
27317
27414
  telemetryOverride = null;
27318
27415
  A2A_PHASE_EVENT_TYPES = {
27319
27416
  peer_selected: MaestroBusEventType.A2APeerSelected,
@@ -27325,7 +27422,6 @@ var init_telemetry = __esm({
27325
27422
  push_received: MaestroBusEventType.A2APushReceived,
27326
27423
  evidence_completed: MaestroBusEventType.A2AEvidenceCompleted
27327
27424
  };
27328
- samplingRate = telemetrySampleRate ?? 1;
27329
27425
  defaultTelemetryFile = PATHS.TELEMETRY_LOG;
27330
27426
  toolFailureLogFile = PATHS.TOOL_FAILURE_LOG;
27331
27427
  BACKGROUND_TASK_HISTORY_LIMIT = 50;
@@ -29595,6 +29691,9 @@ ${errMsg}`);
29595
29691
  return result;
29596
29692
  }
29597
29693
 
29694
+ // dist/models/config-loader.js
29695
+ init_json();
29696
+
29598
29697
  // dist/utils/jsonc-umd.js
29599
29698
  import { parse as parseJsonc, printParseErrorCode } from "jsonc-parser";
29600
29699
 
@@ -30151,9 +30250,6 @@ var configSchema = Type3.Object({
30151
30250
  var configValidator = compileTypeboxSchema(configSchema);
30152
30251
  var TRUST_PROJECT_MODEL_CONFIG_ENV = "MAESTRO_TRUST_PROJECT_MODEL_CONFIG";
30153
30252
  var TRUE_ENV_VALUES = /* @__PURE__ */ new Set(["1", "true", "yes", "on"]);
30154
- function isRecord4(value) {
30155
- return typeof value === "object" && value !== null && !Array.isArray(value);
30156
- }
30157
30253
  function isProjectModelConfigTrusted() {
30158
30254
  const value = process.env[TRUST_PROJECT_MODEL_CONFIG_ENV];
30159
30255
  return value !== void 0 && TRUE_ENV_VALUES.has(value.toLowerCase());
@@ -30422,7 +30518,7 @@ function loadUntrustedProjectConfigFile(path2) {
30422
30518
  }
30423
30519
  function sanitizeUntrustedProjectConfig(config, path2) {
30424
30520
  const providers = [];
30425
- if (!isRecord4(config)) {
30521
+ if (!isRecord(config)) {
30426
30522
  logger19.warn("Ignoring invalid untrusted project model config", {
30427
30523
  path: path2,
30428
30524
  trustEnv: TRUST_PROJECT_MODEL_CONFIG_ENV
@@ -30917,7 +31013,7 @@ function parseStreamingJson(partialJson) {
30917
31013
  }
30918
31014
 
30919
31015
  // dist/agent/providers/tool-arguments.js
30920
- function isRecord5(value) {
31016
+ function isRecord2(value) {
30921
31017
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
30922
31018
  }
30923
31019
  function describeValueType(value) {
@@ -30947,7 +31043,7 @@ function createToolArgumentNormalizer(options) {
30947
31043
  }
30948
31044
  function parseFromString(raw, context, parseOptions) {
30949
31045
  const parsed = parseStreamingJson(raw);
30950
- if (isRecord5(parsed)) {
31046
+ if (isRecord2(parsed)) {
30951
31047
  return parsed;
30952
31048
  }
30953
31049
  if (parseOptions?.logInvalid ?? true) {
@@ -30962,7 +31058,7 @@ function createToolArgumentNormalizer(options) {
30962
31058
  logInvalid: normalizeOptions?.logInvalid
30963
31059
  });
30964
31060
  }
30965
- if (isRecord5(raw)) {
31061
+ if (isRecord2(raw)) {
30966
31062
  if (normalizeOptions?.expectString) {
30967
31063
  warnOnce("raw:object", `${options.providerLabel} tool call arguments were object, expected string`, buildWarningDetails(context));
30968
31064
  }
@@ -30985,7 +31081,7 @@ function createToolArgumentNormalizer(options) {
30985
31081
  partialJson: raw
30986
31082
  };
30987
31083
  }
30988
- if (isRecord5(raw)) {
31084
+ if (isRecord2(raw)) {
30989
31085
  if (normalizeOptions?.expectString) {
30990
31086
  warnOnce("raw:object", `${options.providerLabel} tool call arguments were object, expected string`, buildWarningDetails(context));
30991
31087
  }