@evalops/maestro 0.10.18 → 0.10.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (922) hide show
  1. package/README.md +56 -1
  2. package/dist/agent/action-approval.d.ts +12 -2
  3. package/dist/agent/action-approval.d.ts.map +1 -1
  4. package/dist/agent/action-approval.js +19 -32
  5. package/dist/agent/action-approval.js.map +1 -1
  6. package/dist/agent/agent.d.ts +1 -0
  7. package/dist/agent/agent.d.ts.map +1 -1
  8. package/dist/agent/agent.js +26 -0
  9. package/dist/agent/agent.js.map +1 -1
  10. package/dist/agent/compaction.d.ts +2 -0
  11. package/dist/agent/compaction.d.ts.map +1 -1
  12. package/dist/agent/compaction.js +4 -2
  13. package/dist/agent/compaction.js.map +1 -1
  14. package/dist/agent/index.d.ts +1 -1
  15. package/dist/agent/index.d.ts.map +1 -1
  16. package/dist/agent/index.js +1 -1
  17. package/dist/agent/index.js.map +1 -1
  18. package/dist/agent/modes.d.ts +56 -4
  19. package/dist/agent/modes.d.ts.map +1 -1
  20. package/dist/agent/modes.js +163 -2
  21. package/dist/agent/modes.js.map +1 -1
  22. package/dist/agent/prompt-recovery.d.ts.map +1 -1
  23. package/dist/agent/prompt-recovery.js +1 -3
  24. package/dist/agent/prompt-recovery.js.map +1 -1
  25. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  26. package/dist/agent/providers/anthropic.js +9 -1
  27. package/dist/agent/providers/anthropic.js.map +1 -1
  28. package/dist/agent/providers/codex-app-server.d.ts +12 -0
  29. package/dist/agent/providers/codex-app-server.d.ts.map +1 -0
  30. package/dist/agent/providers/codex-app-server.js +788 -0
  31. package/dist/agent/providers/codex-app-server.js.map +1 -0
  32. package/dist/agent/providers/google-gemini-cli.js +14 -3
  33. package/dist/agent/providers/google.js +22 -3
  34. package/dist/agent/providers/scripted.d.ts +11 -0
  35. package/dist/agent/providers/scripted.d.ts.map +1 -0
  36. package/dist/agent/providers/scripted.js +399 -0
  37. package/dist/agent/providers/scripted.js.map +1 -0
  38. package/dist/agent/providers/vertex.js +14 -3
  39. package/dist/agent/scenario-source.d.ts +19 -0
  40. package/dist/agent/scenario-source.d.ts.map +1 -0
  41. package/dist/agent/scenario-source.js +112 -0
  42. package/dist/agent/scenario-source.js.map +1 -0
  43. package/dist/agent/subagent-specs.d.ts +1 -1
  44. package/dist/agent/subagent-specs.js +1 -1
  45. package/dist/agent/subagent-specs.js.map +1 -1
  46. package/dist/agent/swarm/executor.d.ts +25 -0
  47. package/dist/agent/swarm/executor.d.ts.map +1 -1
  48. package/dist/agent/swarm/executor.js +795 -20
  49. package/dist/agent/swarm/executor.js.map +1 -1
  50. package/dist/agent/swarm/runtime-events.d.ts +11 -0
  51. package/dist/agent/swarm/runtime-events.d.ts.map +1 -0
  52. package/dist/agent/swarm/runtime-events.js +26 -0
  53. package/dist/agent/swarm/runtime-events.js.map +1 -0
  54. package/dist/agent/swarm/types.d.ts +78 -0
  55. package/dist/agent/swarm/types.d.ts.map +1 -1
  56. package/dist/agent/swarm/types.js.map +1 -1
  57. package/dist/agent/tracing.d.ts +1 -1
  58. package/dist/agent/tracing.d.ts.map +1 -1
  59. package/dist/agent/tracing.js +17 -9
  60. package/dist/agent/tracing.js.map +1 -1
  61. package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
  62. package/dist/agent/transport/create-provider-stream.js +14 -0
  63. package/dist/agent/transport/create-provider-stream.js.map +1 -1
  64. package/dist/agent/transport/stable-stringify.d.ts +2 -0
  65. package/dist/agent/transport/stable-stringify.d.ts.map +1 -0
  66. package/dist/agent/transport/stable-stringify.js +14 -0
  67. package/dist/agent/transport/stable-stringify.js.map +1 -0
  68. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  69. package/dist/agent/transport/tool-execution-bridge.js +2 -15
  70. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  71. package/dist/agent/transport/tool-safety-pipeline.d.ts +5 -1
  72. package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
  73. package/dist/agent/transport/tool-safety-pipeline.js +184 -36
  74. package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
  75. package/dist/agent/transport.d.ts +8 -0
  76. package/dist/agent/transport.d.ts.map +1 -1
  77. package/dist/agent/transport.js +1613 -68
  78. package/dist/agent/transport.js.map +1 -1
  79. package/dist/agent/types.d.ts +170 -2
  80. package/dist/agent/types.d.ts.map +1 -1
  81. package/dist/agent/types.js.map +1 -1
  82. package/dist/api/enterprise-routes.d.ts.map +1 -1
  83. package/dist/api/enterprise-routes.js +34 -3
  84. package/dist/api/enterprise-routes.js.map +1 -1
  85. package/dist/app-server/in-process-client.d.ts +32 -0
  86. package/dist/app-server/in-process-client.d.ts.map +1 -0
  87. package/dist/app-server/in-process-client.js +73 -0
  88. package/dist/app-server/in-process-client.js.map +1 -0
  89. package/dist/app-server/session-api.d.ts +36 -0
  90. package/dist/app-server/session-api.d.ts.map +1 -0
  91. package/dist/app-server/session-api.js +713 -0
  92. package/dist/app-server/session-api.js.map +1 -0
  93. package/dist/approvals/platform-action-approval.d.ts +3 -1
  94. package/dist/approvals/platform-action-approval.d.ts.map +1 -1
  95. package/dist/approvals/platform-action-approval.js +16 -9
  96. package/dist/approvals/platform-action-approval.js.map +1 -1
  97. package/dist/approvals/service-client.d.ts.map +1 -1
  98. package/dist/approvals/service-client.js +7 -7
  99. package/dist/approvals/service-client.js.map +1 -1
  100. package/dist/audit/logger.d.ts +4 -4
  101. package/dist/bootstrap/agent-creation-setup.d.ts +4 -0
  102. package/dist/bootstrap/agent-creation-setup.d.ts.map +1 -1
  103. package/dist/bootstrap/agent-creation-setup.js +3 -1
  104. package/dist/bootstrap/agent-creation-setup.js.map +1 -1
  105. package/dist/bootstrap/auth-setup.js +1 -1
  106. package/dist/bootstrap/auth-setup.js.map +1 -1
  107. package/dist/bootstrap/event-subscriptions-setup.d.ts +6 -0
  108. package/dist/bootstrap/event-subscriptions-setup.d.ts.map +1 -1
  109. package/dist/bootstrap/event-subscriptions-setup.js +26 -2
  110. package/dist/bootstrap/event-subscriptions-setup.js.map +1 -1
  111. package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
  112. package/dist/bootstrap/model-resolution-setup.js +4 -1
  113. package/dist/bootstrap/model-resolution-setup.js.map +1 -1
  114. package/dist/bootstrap/tools-setup.d.ts +2 -1
  115. package/dist/bootstrap/tools-setup.d.ts.map +1 -1
  116. package/dist/bootstrap/tools-setup.js +5 -1
  117. package/dist/bootstrap/tools-setup.js.map +1 -1
  118. package/dist/cli/args.d.ts +9 -1
  119. package/dist/cli/args.d.ts.map +1 -1
  120. package/dist/cli/args.js +130 -5
  121. package/dist/cli/args.js.map +1 -1
  122. package/dist/cli/commands/a2a.d.ts +9 -0
  123. package/dist/cli/commands/a2a.d.ts.map +1 -0
  124. package/dist/cli/commands/a2a.js +1714 -0
  125. package/dist/cli/commands/a2a.js.map +1 -0
  126. package/dist/cli/commands/agents.d.ts +16 -2
  127. package/dist/cli/commands/agents.d.ts.map +1 -1
  128. package/dist/cli/commands/agents.js +223 -35
  129. package/dist/cli/commands/agents.js.map +1 -1
  130. package/dist/cli/commands/codex.d.ts +1 -1
  131. package/dist/cli/commands/codex.d.ts.map +1 -1
  132. package/dist/cli/commands/codex.js +145 -39
  133. package/dist/cli/commands/codex.js.map +1 -1
  134. package/dist/cli/commands/context.d.ts +10 -0
  135. package/dist/cli/commands/context.d.ts.map +1 -0
  136. package/dist/cli/commands/context.js +176 -0
  137. package/dist/cli/commands/context.js.map +1 -0
  138. package/dist/cli/commands/hosted-runner.d.ts +1 -0
  139. package/dist/cli/commands/hosted-runner.d.ts.map +1 -1
  140. package/dist/cli/commands/hosted-runner.js +9 -1
  141. package/dist/cli/commands/hosted-runner.js.map +1 -1
  142. package/dist/cli/commands/modes.d.ts +8 -0
  143. package/dist/cli/commands/modes.d.ts.map +1 -0
  144. package/dist/cli/commands/modes.js +151 -0
  145. package/dist/cli/commands/modes.js.map +1 -0
  146. package/dist/cli/commands/operating-plane.d.ts +14 -0
  147. package/dist/cli/commands/operating-plane.d.ts.map +1 -0
  148. package/dist/cli/commands/operating-plane.js +160 -0
  149. package/dist/cli/commands/operating-plane.js.map +1 -0
  150. package/dist/cli/commands/run.d.ts +87 -0
  151. package/dist/cli/commands/run.d.ts.map +1 -0
  152. package/dist/cli/commands/run.js +356 -0
  153. package/dist/cli/commands/run.js.map +1 -0
  154. package/dist/cli/commands/scenario.d.ts +7 -0
  155. package/dist/cli/commands/scenario.d.ts.map +1 -0
  156. package/dist/cli/commands/scenario.js +195 -0
  157. package/dist/cli/commands/scenario.js.map +1 -0
  158. package/dist/cli/commands/skill.d.ts +7 -0
  159. package/dist/cli/commands/skill.d.ts.map +1 -0
  160. package/dist/cli/commands/skill.js +286 -0
  161. package/dist/cli/commands/skill.js.map +1 -0
  162. package/dist/cli/headless-protocol.d.ts +55 -1
  163. package/dist/cli/headless-protocol.d.ts.map +1 -1
  164. package/dist/cli/headless-protocol.js +446 -7
  165. package/dist/cli/headless-protocol.js.map +1 -1
  166. package/dist/cli/headless-runtime-selection.d.ts +38 -0
  167. package/dist/cli/headless-runtime-selection.d.ts.map +1 -0
  168. package/dist/cli/headless-runtime-selection.js +48 -0
  169. package/dist/cli/headless-runtime-selection.js.map +1 -0
  170. package/dist/cli/headless.d.ts +5 -1
  171. package/dist/cli/headless.d.ts.map +1 -1
  172. package/dist/cli/headless.js +11 -1
  173. package/dist/cli/headless.js.map +1 -1
  174. package/dist/cli/help.d.ts +3 -1
  175. package/dist/cli/help.d.ts.map +1 -1
  176. package/dist/cli/help.js +135 -30
  177. package/dist/cli/help.js.map +1 -1
  178. package/dist/cli/system-prompt.d.ts +22 -4
  179. package/dist/cli/system-prompt.d.ts.map +1 -1
  180. package/dist/cli/system-prompt.js +224 -127
  181. package/dist/cli/system-prompt.js.map +1 -1
  182. package/dist/cli-tui/commands/a2a-handlers.d.ts +7 -0
  183. package/dist/cli-tui/commands/a2a-handlers.d.ts.map +1 -0
  184. package/dist/cli-tui/commands/a2a-handlers.js +160 -0
  185. package/dist/cli-tui/commands/a2a-handlers.js.map +1 -0
  186. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  187. package/dist/cli-tui/commands/command-catalog.js +15 -0
  188. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  189. package/dist/cli-tui/commands/command-registry-adapter.js +10 -1
  190. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -1
  191. package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +1 -1
  192. package/dist/cli-tui/commands/handlers/mode-handler.js +22 -10
  193. package/dist/cli-tui/commands/handlers/mode-handler.js.map +1 -1
  194. package/dist/cli-tui/commands/mcp-handlers.d.ts.map +1 -1
  195. package/dist/cli-tui/commands/mcp-handlers.js +6 -5
  196. package/dist/cli-tui/commands/mcp-handlers.js.map +1 -1
  197. package/dist/cli-tui/commands/types.d.ts +1 -0
  198. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  199. package/dist/cli-tui/commands/types.js.map +1 -1
  200. package/dist/cli-tui/commands/utility-handlers.d.ts +4 -0
  201. package/dist/cli-tui/commands/utility-handlers.d.ts.map +1 -1
  202. package/dist/cli-tui/commands/utility-handlers.js +45 -6
  203. package/dist/cli-tui/commands/utility-handlers.js.map +1 -1
  204. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  205. package/dist/cli-tui/run/run-shell-command.js +14 -5
  206. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  207. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  208. package/dist/cli-tui/run/streaming-shell-command.js +14 -5
  209. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  210. package/dist/cli-tui/selectors/model-selector.d.ts +1 -0
  211. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  212. package/dist/cli-tui/selectors/model-selector.js +6 -2
  213. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  214. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  215. package/dist/cli-tui/tui-renderer/command-registry-options.js +5 -0
  216. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  217. package/dist/cli-tui/utils/commands/review-prompt.d.ts +1 -1
  218. package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +1 -1
  219. package/dist/cli-tui/utils/commands/review-prompt.js +8 -3
  220. package/dist/cli-tui/utils/commands/review-prompt.js.map +1 -1
  221. package/dist/cli-tui/utils/runtime-badges.d.ts +1 -0
  222. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  223. package/dist/cli-tui/utils/runtime-badges.js +7 -0
  224. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  225. package/dist/cli-tui/utils/text-formatting.d.ts +1 -0
  226. package/dist/cli-tui/utils/text-formatting.d.ts.map +1 -1
  227. package/dist/cli-tui/utils/text-formatting.js +5 -0
  228. package/dist/cli-tui/utils/text-formatting.js.map +1 -1
  229. package/dist/cli.js +49158 -26161
  230. package/dist/cli.js.map +1 -1
  231. package/dist/codex/app-server-client.d.ts +139 -0
  232. package/dist/codex/app-server-client.d.ts.map +1 -0
  233. package/dist/codex/app-server-client.js +352 -0
  234. package/dist/codex/app-server-client.js.map +1 -0
  235. package/dist/codex/compatibility.d.ts +48 -0
  236. package/dist/codex/compatibility.d.ts.map +1 -0
  237. package/dist/codex/compatibility.js +344 -0
  238. package/dist/codex/compatibility.js.map +1 -0
  239. package/dist/codex/subagent-dispatch-table.d.ts +66 -0
  240. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -0
  241. package/dist/codex/subagent-dispatch-table.js +127 -0
  242. package/dist/codex/subagent-dispatch-table.js.map +1 -0
  243. package/dist/codex/subagent-workgraph.d.ts +56 -0
  244. package/dist/codex/subagent-workgraph.d.ts.map +1 -0
  245. package/dist/codex/subagent-workgraph.js +89 -0
  246. package/dist/codex/subagent-workgraph.js.map +1 -0
  247. package/dist/config/constants.d.ts +3 -1
  248. package/dist/config/constants.d.ts.map +1 -1
  249. package/dist/config/constants.js +9 -0
  250. package/dist/config/constants.js.map +1 -1
  251. package/dist/config/feature-flags.d.ts +10 -1
  252. package/dist/config/feature-flags.d.ts.map +1 -1
  253. package/dist/config/feature-flags.js +17 -6
  254. package/dist/config/feature-flags.js.map +1 -1
  255. package/dist/config/index.d.ts +1 -1
  256. package/dist/config/index.d.ts.map +1 -1
  257. package/dist/config/index.js +1 -1
  258. package/dist/config/index.js.map +1 -1
  259. package/dist/config/toml-config.d.ts +32 -0
  260. package/dist/config/toml-config.d.ts.map +1 -1
  261. package/dist/config/toml-config.js +152 -43
  262. package/dist/config/toml-config.js.map +1 -1
  263. package/dist/connectors/service-client.d.ts.map +1 -1
  264. package/dist/connectors/service-client.js +4 -7
  265. package/dist/connectors/service-client.js.map +1 -1
  266. package/dist/context/manifest-types.d.ts +59 -0
  267. package/dist/context/manifest-types.d.ts.map +1 -0
  268. package/dist/context/manifest-types.js +2 -0
  269. package/dist/context/manifest-types.js.map +1 -0
  270. package/dist/context/manifest.d.ts +16 -0
  271. package/dist/context/manifest.d.ts.map +1 -0
  272. package/dist/context/manifest.js +503 -0
  273. package/dist/context/manifest.js.map +1 -0
  274. package/dist/db/schema.d.ts +10 -1
  275. package/dist/db/schema.d.ts.map +1 -1
  276. package/dist/db/schema.js.map +1 -1
  277. package/dist/evalops/env-aliases.d.ts +13 -0
  278. package/dist/evalops/env-aliases.d.ts.map +1 -0
  279. package/dist/evalops/env-aliases.js +60 -0
  280. package/dist/evalops/env-aliases.js.map +1 -0
  281. package/dist/evalops/managed-context.d.ts.map +1 -1
  282. package/dist/evalops/managed-context.js +28 -62
  283. package/dist/evalops/managed-context.js.map +1 -1
  284. package/dist/guardian/config.d.ts.map +1 -1
  285. package/dist/guardian/config.js +1 -0
  286. package/dist/guardian/config.js.map +1 -1
  287. package/dist/guardian/runner.d.ts +2 -0
  288. package/dist/guardian/runner.d.ts.map +1 -1
  289. package/dist/guardian/runner.js +105 -2
  290. package/dist/guardian/runner.js.map +1 -1
  291. package/dist/guardian/types.d.ts +1 -0
  292. package/dist/guardian/types.d.ts.map +1 -1
  293. package/dist/guardian/types.js.map +1 -1
  294. package/dist/index.d.ts +5 -1
  295. package/dist/index.d.ts.map +1 -1
  296. package/dist/index.js +5 -1
  297. package/dist/index.js.map +1 -1
  298. package/dist/main.d.ts.map +1 -1
  299. package/dist/main.js +267 -55
  300. package/dist/main.js.map +1 -1
  301. package/dist/mcp/config.d.ts.map +1 -1
  302. package/dist/mcp/config.js +89 -7
  303. package/dist/mcp/config.js.map +1 -1
  304. package/dist/mcp/manager.d.ts +5 -1
  305. package/dist/mcp/manager.d.ts.map +1 -1
  306. package/dist/mcp/manager.js +159 -4
  307. package/dist/mcp/manager.js.map +1 -1
  308. package/dist/mcp/platform-plugin.d.ts.map +1 -1
  309. package/dist/mcp/platform-plugin.js +9 -26
  310. package/dist/mcp/platform-plugin.js.map +1 -1
  311. package/dist/mcp/schema.d.ts +15 -0
  312. package/dist/mcp/schema.d.ts.map +1 -1
  313. package/dist/mcp/schema.js +24 -0
  314. package/dist/mcp/schema.js.map +1 -1
  315. package/dist/mcp/tool-bridge.d.ts +39 -10
  316. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  317. package/dist/mcp/tool-bridge.js +101 -24
  318. package/dist/mcp/tool-bridge.js.map +1 -1
  319. package/dist/mcp/types.d.ts +27 -0
  320. package/dist/mcp/types.d.ts.map +1 -1
  321. package/dist/mcp/types.js.map +1 -1
  322. package/dist/mcp/workspace-trust.d.ts +10 -0
  323. package/dist/mcp/workspace-trust.d.ts.map +1 -0
  324. package/dist/mcp/workspace-trust.js +295 -0
  325. package/dist/mcp/workspace-trust.js.map +1 -0
  326. package/dist/memory/service-client.d.ts +1 -0
  327. package/dist/memory/service-client.d.ts.map +1 -1
  328. package/dist/memory/service-client.js +194 -9
  329. package/dist/memory/service-client.js.map +1 -1
  330. package/dist/models/builtin.d.ts.map +1 -1
  331. package/dist/models/builtin.js +66 -25
  332. package/dist/models/builtin.js.map +1 -1
  333. package/dist/models/config-loader.d.ts +10 -10
  334. package/dist/models/config-loader.d.ts.map +1 -1
  335. package/dist/models/config-loader.js +2 -0
  336. package/dist/models/config-loader.js.map +1 -1
  337. package/dist/models/registry.d.ts +1 -0
  338. package/dist/models/registry.d.ts.map +1 -1
  339. package/dist/models/registry.js +1 -0
  340. package/dist/models/registry.js.map +1 -1
  341. package/dist/oauth/device-identity.d.ts.map +1 -1
  342. package/dist/oauth/device-identity.js +1 -3
  343. package/dist/oauth/device-identity.js.map +1 -1
  344. package/dist/oauth/evalops.d.ts.map +1 -1
  345. package/dist/oauth/evalops.js +2 -5
  346. package/dist/oauth/evalops.js.map +1 -1
  347. package/dist/opentelemetry.d.ts.map +1 -1
  348. package/dist/opentelemetry.js +12 -12
  349. package/dist/opentelemetry.js.map +1 -1
  350. package/dist/package-version.d.ts +2 -0
  351. package/dist/package-version.d.ts.map +1 -0
  352. package/dist/package-version.js +11 -0
  353. package/dist/package-version.js.map +1 -0
  354. package/dist/packages/constants.d.ts +3 -0
  355. package/dist/packages/constants.d.ts.map +1 -0
  356. package/dist/packages/constants.js +3 -0
  357. package/dist/packages/constants.js.map +1 -0
  358. package/dist/packages/inspection.d.ts.map +1 -1
  359. package/dist/packages/inspection.js +2 -1
  360. package/dist/packages/inspection.js.map +1 -1
  361. package/dist/packages/search.d.ts.map +1 -1
  362. package/dist/packages/search.js +1 -1
  363. package/dist/packages/search.js.map +1 -1
  364. package/dist/platform/a2a-capability-market.d.ts +21 -0
  365. package/dist/platform/a2a-capability-market.d.ts.map +1 -0
  366. package/dist/platform/a2a-capability-market.js +176 -0
  367. package/dist/platform/a2a-capability-market.js.map +1 -0
  368. package/dist/platform/a2a-client.d.ts +119 -0
  369. package/dist/platform/a2a-client.d.ts.map +1 -1
  370. package/dist/platform/a2a-client.js +413 -24
  371. package/dist/platform/a2a-client.js.map +1 -1
  372. package/dist/platform/a2a-fleet.d.ts +41 -0
  373. package/dist/platform/a2a-fleet.d.ts.map +1 -0
  374. package/dist/platform/a2a-fleet.js +109 -0
  375. package/dist/platform/a2a-fleet.js.map +1 -0
  376. package/dist/platform/a2a-maestro-peer.d.ts +20 -0
  377. package/dist/platform/a2a-maestro-peer.d.ts.map +1 -0
  378. package/dist/platform/a2a-maestro-peer.js +176 -0
  379. package/dist/platform/a2a-maestro-peer.js.map +1 -0
  380. package/dist/platform/a2a-peer-pairing.d.ts +107 -0
  381. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -0
  382. package/dist/platform/a2a-peer-pairing.js +489 -0
  383. package/dist/platform/a2a-peer-pairing.js.map +1 -0
  384. package/dist/platform/a2a-peer-registry.d.ts +68 -0
  385. package/dist/platform/a2a-peer-registry.d.ts.map +1 -0
  386. package/dist/platform/a2a-peer-registry.js +320 -0
  387. package/dist/platform/a2a-peer-registry.js.map +1 -0
  388. package/dist/platform/a2a-task-ledger.d.ts +86 -0
  389. package/dist/platform/a2a-task-ledger.d.ts.map +1 -0
  390. package/dist/platform/a2a-task-ledger.js +546 -0
  391. package/dist/platform/a2a-task-ledger.js.map +1 -0
  392. package/dist/platform/a2a-work-graph.d.ts +43 -0
  393. package/dist/platform/a2a-work-graph.d.ts.map +1 -0
  394. package/dist/platform/a2a-work-graph.js +267 -0
  395. package/dist/platform/a2a-work-graph.js.map +1 -0
  396. package/dist/platform/agent-registry-client.d.ts +327 -0
  397. package/dist/platform/agent-registry-client.d.ts.map +1 -0
  398. package/dist/platform/agent-registry-client.js +803 -0
  399. package/dist/platform/agent-registry-client.js.map +1 -0
  400. package/dist/platform/agent-runtime-client.d.ts +135 -1
  401. package/dist/platform/agent-runtime-client.d.ts.map +1 -1
  402. package/dist/platform/agent-runtime-client.js +467 -10
  403. package/dist/platform/agent-runtime-client.js.map +1 -1
  404. package/dist/platform/cerebro-facts-client.d.ts.map +1 -1
  405. package/dist/platform/cerebro-facts-client.js +4 -7
  406. package/dist/platform/cerebro-facts-client.js.map +1 -1
  407. package/dist/platform/client.d.ts.map +1 -1
  408. package/dist/platform/client.js +3 -12
  409. package/dist/platform/client.js.map +1 -1
  410. package/dist/platform/core-services.d.ts +68 -0
  411. package/dist/platform/core-services.d.ts.map +1 -1
  412. package/dist/platform/core-services.js +68 -0
  413. package/dist/platform/core-services.js.map +1 -1
  414. package/dist/platform/fermata-eval-client.d.ts +195 -0
  415. package/dist/platform/fermata-eval-client.d.ts.map +1 -0
  416. package/dist/platform/fermata-eval-client.js +146 -0
  417. package/dist/platform/fermata-eval-client.js.map +1 -0
  418. package/dist/platform/fermata-scenario-suite.d.ts +99 -0
  419. package/dist/platform/fermata-scenario-suite.d.ts.map +1 -0
  420. package/dist/platform/fermata-scenario-suite.js +459 -0
  421. package/dist/platform/fermata-scenario-suite.js.map +1 -0
  422. package/dist/platform/maestro-timeline-client.d.ts.map +1 -1
  423. package/dist/platform/maestro-timeline-client.js +5 -11
  424. package/dist/platform/maestro-timeline-client.js.map +1 -1
  425. package/dist/platform/operating-plane-client.d.ts +156 -0
  426. package/dist/platform/operating-plane-client.d.ts.map +1 -0
  427. package/dist/platform/operating-plane-client.js +131 -0
  428. package/dist/platform/operating-plane-client.js.map +1 -0
  429. package/dist/platform/operating-plane-summary.d.ts +47 -0
  430. package/dist/platform/operating-plane-summary.d.ts.map +1 -0
  431. package/dist/platform/operating-plane-summary.js +209 -0
  432. package/dist/platform/operating-plane-summary.js.map +1 -0
  433. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  434. package/dist/platform/tool-execution-client.js +4 -11
  435. package/dist/platform/tool-execution-client.js.map +1 -1
  436. package/dist/prompts/service-client.d.ts.map +1 -1
  437. package/dist/prompts/service-client.js +3 -5
  438. package/dist/prompts/service-client.js.map +1 -1
  439. package/dist/prompts/system-prompt.d.ts +3 -0
  440. package/dist/prompts/system-prompt.d.ts.map +1 -1
  441. package/dist/prompts/system-prompt.js +13 -3
  442. package/dist/prompts/system-prompt.js.map +1 -1
  443. package/dist/prompts/types.d.ts +2 -0
  444. package/dist/prompts/types.d.ts.map +1 -1
  445. package/dist/prompts/types.js.map +1 -1
  446. package/dist/providers/api-keys.d.ts +1 -1
  447. package/dist/providers/api-keys.d.ts.map +1 -1
  448. package/dist/providers/api-keys.js +2 -1
  449. package/dist/providers/api-keys.js.map +1 -1
  450. package/dist/providers/auth.d.ts.map +1 -1
  451. package/dist/providers/auth.js +48 -25
  452. package/dist/providers/auth.js.map +1 -1
  453. package/dist/remote-runner/attach-client.d.ts.map +1 -1
  454. package/dist/remote-runner/attach-client.js +1 -0
  455. package/dist/remote-runner/attach-client.js.map +1 -1
  456. package/dist/remote-runner/client.d.ts.map +1 -1
  457. package/dist/remote-runner/client.js +4 -7
  458. package/dist/remote-runner/client.js.map +1 -1
  459. package/dist/rpc/rpc-types.d.ts.map +1 -1
  460. package/dist/rpc/rpc-types.js +1 -0
  461. package/dist/rpc/rpc-types.js.map +1 -1
  462. package/dist/safety/action-firewall.d.ts.map +1 -1
  463. package/dist/safety/action-firewall.js +69 -6
  464. package/dist/safety/action-firewall.js.map +1 -1
  465. package/dist/safety/attack-patterns.d.ts.map +1 -1
  466. package/dist/safety/attack-patterns.js +31 -14
  467. package/dist/safety/attack-patterns.js.map +1 -1
  468. package/dist/safety/bash-parser.d.ts.map +1 -1
  469. package/dist/safety/bash-parser.js +4 -3
  470. package/dist/safety/bash-parser.js.map +1 -1
  471. package/dist/safety/execpolicy.d.ts +15 -3
  472. package/dist/safety/execpolicy.d.ts.map +1 -1
  473. package/dist/safety/execpolicy.js +248 -37
  474. package/dist/safety/execpolicy.js.map +1 -1
  475. package/dist/safety/governance-service-client.d.ts.map +1 -1
  476. package/dist/safety/governance-service-client.js +4 -7
  477. package/dist/safety/governance-service-client.js.map +1 -1
  478. package/dist/safety/guarded-files.d.ts +34 -0
  479. package/dist/safety/guarded-files.d.ts.map +1 -0
  480. package/dist/safety/guarded-files.js +372 -0
  481. package/dist/safety/guarded-files.js.map +1 -0
  482. package/dist/safety/loop-detector.d.ts.map +1 -1
  483. package/dist/safety/loop-detector.js +6 -1
  484. package/dist/safety/loop-detector.js.map +1 -1
  485. package/dist/safety/permission-profile.d.ts +47 -0
  486. package/dist/safety/permission-profile.d.ts.map +1 -0
  487. package/dist/safety/permission-profile.js +349 -0
  488. package/dist/safety/permission-profile.js.map +1 -0
  489. package/dist/safety/safety-middleware.d.ts +5 -1
  490. package/dist/safety/safety-middleware.d.ts.map +1 -1
  491. package/dist/safety/safety-middleware.js +3 -2
  492. package/dist/safety/safety-middleware.js.map +1 -1
  493. package/dist/safety/suspicious-patterns.d.ts.map +1 -1
  494. package/dist/safety/suspicious-patterns.js +12 -7
  495. package/dist/safety/suspicious-patterns.js.map +1 -1
  496. package/dist/safety/tool-categorization.js +1 -1
  497. package/dist/safety/tool-categorization.js.map +1 -1
  498. package/dist/safety/validators/path-policy-validator.d.ts.map +1 -1
  499. package/dist/safety/validators/path-policy-validator.js +7 -0
  500. package/dist/safety/validators/path-policy-validator.js.map +1 -1
  501. package/dist/sandbox/index.d.ts +6 -1
  502. package/dist/sandbox/index.d.ts.map +1 -1
  503. package/dist/sandbox/index.js +30 -4
  504. package/dist/sandbox/index.js.map +1 -1
  505. package/dist/sandbox/native-sandbox.d.ts +3 -0
  506. package/dist/sandbox/native-sandbox.d.ts.map +1 -1
  507. package/dist/sandbox/native-sandbox.js +139 -18
  508. package/dist/sandbox/native-sandbox.js.map +1 -1
  509. package/dist/sentry.d.ts +17 -0
  510. package/dist/sentry.d.ts.map +1 -0
  511. package/dist/sentry.js +91 -0
  512. package/dist/sentry.js.map +1 -0
  513. package/dist/server/agent-runtime-ledger.d.ts +141 -0
  514. package/dist/server/agent-runtime-ledger.d.ts.map +1 -0
  515. package/dist/server/agent-runtime-ledger.js +334 -0
  516. package/dist/server/agent-runtime-ledger.js.map +1 -0
  517. package/dist/server/agent-trajectory-inspection.d.ts +104 -0
  518. package/dist/server/agent-trajectory-inspection.d.ts.map +1 -0
  519. package/dist/server/agent-trajectory-inspection.js +168 -0
  520. package/dist/server/agent-trajectory-inspection.js.map +1 -0
  521. package/dist/server/agent-trajectory-replay.d.ts +56 -0
  522. package/dist/server/agent-trajectory-replay.d.ts.map +1 -0
  523. package/dist/server/agent-trajectory-replay.js +214 -0
  524. package/dist/server/agent-trajectory-replay.js.map +1 -0
  525. package/dist/server/agent-trajectory-scenarios.d.ts +109 -0
  526. package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -0
  527. package/dist/server/agent-trajectory-scenarios.js +822 -0
  528. package/dist/server/agent-trajectory-scenarios.js.map +1 -0
  529. package/dist/server/agent-trajectory-scorers.d.ts +61 -0
  530. package/dist/server/agent-trajectory-scorers.d.ts.map +1 -0
  531. package/dist/server/agent-trajectory-scorers.js +162 -0
  532. package/dist/server/agent-trajectory-scorers.js.map +1 -0
  533. package/dist/server/agent-trajectory-validation.d.ts +7 -0
  534. package/dist/server/agent-trajectory-validation.d.ts.map +1 -0
  535. package/dist/server/agent-trajectory-validation.js +101 -0
  536. package/dist/server/agent-trajectory-validation.js.map +1 -0
  537. package/dist/server/agent-trajectory.d.ts +50 -0
  538. package/dist/server/agent-trajectory.d.ts.map +1 -0
  539. package/dist/server/agent-trajectory.js +159 -0
  540. package/dist/server/agent-trajectory.js.map +1 -0
  541. package/dist/server/app-context.d.ts +18 -0
  542. package/dist/server/app-context.d.ts.map +1 -1
  543. package/dist/server/app-context.js.map +1 -1
  544. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  545. package/dist/server/handlers/headless-sessions.js +64 -27
  546. package/dist/server/handlers/headless-sessions.js.map +1 -1
  547. package/dist/server/handlers/health.d.ts +6 -0
  548. package/dist/server/handlers/health.d.ts.map +1 -1
  549. package/dist/server/handlers/health.js +6 -0
  550. package/dist/server/handlers/health.js.map +1 -1
  551. package/dist/server/handlers/hosted-runner-drain.d.ts +69 -1
  552. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  553. package/dist/server/handlers/hosted-runner-drain.js +309 -18
  554. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  555. package/dist/server/handlers/hosted-runner-identity.d.ts +16 -0
  556. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
  557. package/dist/server/handlers/hosted-runner-identity.js +43 -0
  558. package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
  559. package/dist/server/handlers/mode.d.ts.map +1 -1
  560. package/dist/server/handlers/mode.js +3 -1
  561. package/dist/server/handlers/mode.js.map +1 -1
  562. package/dist/server/handlers/pending-requests.d.ts.map +1 -1
  563. package/dist/server/handlers/pending-requests.js +336 -51
  564. package/dist/server/handlers/pending-requests.js.map +1 -1
  565. package/dist/server/handlers/platform-a2a-push.d.ts +6 -0
  566. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -0
  567. package/dist/server/handlers/platform-a2a-push.js +136 -0
  568. package/dist/server/handlers/platform-a2a-push.js.map +1 -0
  569. package/dist/server/handlers/sessions.d.ts.map +1 -1
  570. package/dist/server/handlers/sessions.js +21 -1
  571. package/dist/server/handlers/sessions.js.map +1 -1
  572. package/dist/server/headless-runtime-service.d.ts +9 -2
  573. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  574. package/dist/server/headless-runtime-service.js +39 -0
  575. package/dist/server/headless-runtime-service.js.map +1 -1
  576. package/dist/server/hosted-agent-runtime-progress.d.ts +144 -0
  577. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -0
  578. package/dist/server/hosted-agent-runtime-progress.js +1650 -0
  579. package/dist/server/hosted-agent-runtime-progress.js.map +1 -0
  580. package/dist/server/hosted-runner-lease.d.ts +41 -0
  581. package/dist/server/hosted-runner-lease.d.ts.map +1 -0
  582. package/dist/server/hosted-runner-lease.js +140 -0
  583. package/dist/server/hosted-runner-lease.js.map +1 -0
  584. package/dist/server/hosted-session-manager.d.ts +16 -8
  585. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  586. package/dist/server/hosted-session-manager.js +98 -76
  587. package/dist/server/hosted-session-manager.js.map +1 -1
  588. package/dist/server/junit-xml.d.ts +2 -0
  589. package/dist/server/junit-xml.d.ts.map +1 -0
  590. package/dist/server/junit-xml.js +9 -0
  591. package/dist/server/junit-xml.js.map +1 -0
  592. package/dist/server/routes.d.ts.map +1 -1
  593. package/dist/server/routes.js +6 -0
  594. package/dist/server/routes.js.map +1 -1
  595. package/dist/server/scenario-recorder.d.ts +56 -0
  596. package/dist/server/scenario-recorder.d.ts.map +1 -0
  597. package/dist/server/scenario-recorder.js +109 -0
  598. package/dist/server/scenario-recorder.js.map +1 -0
  599. package/dist/server/scripted-scenario-runner.d.ts +46 -0
  600. package/dist/server/scripted-scenario-runner.d.ts.map +1 -0
  601. package/dist/server/scripted-scenario-runner.js +190 -0
  602. package/dist/server/scripted-scenario-runner.js.map +1 -0
  603. package/dist/server/server-middlewares.d.ts +6 -2
  604. package/dist/server/server-middlewares.d.ts.map +1 -1
  605. package/dist/server/server-middlewares.js +8 -2
  606. package/dist/server/server-middlewares.js.map +1 -1
  607. package/dist/server/server-request-manager.d.ts +9 -1
  608. package/dist/server/server-request-manager.d.ts.map +1 -1
  609. package/dist/server/server-request-manager.js +49 -4
  610. package/dist/server/server-request-manager.js.map +1 -1
  611. package/dist/services/intelligent-router/service.d.ts +2 -0
  612. package/dist/services/intelligent-router/service.d.ts.map +1 -1
  613. package/dist/services/intelligent-router/service.js +4 -0
  614. package/dist/services/intelligent-router/service.js.map +1 -1
  615. package/dist/services/service-authority.d.ts +25 -0
  616. package/dist/services/service-authority.d.ts.map +1 -0
  617. package/dist/services/service-authority.js +143 -0
  618. package/dist/services/service-authority.js.map +1 -0
  619. package/dist/services/workspace-config/service.d.ts +2 -0
  620. package/dist/services/workspace-config/service.d.ts.map +1 -1
  621. package/dist/services/workspace-config/service.js +4 -0
  622. package/dist/services/workspace-config/service.js.map +1 -1
  623. package/dist/session/manager.d.ts +8 -2
  624. package/dist/session/manager.d.ts.map +1 -1
  625. package/dist/session/manager.js +19 -4
  626. package/dist/session/manager.js.map +1 -1
  627. package/dist/session/session-branch.d.ts.map +1 -1
  628. package/dist/session/session-branch.js +5 -1
  629. package/dist/session/session-branch.js.map +1 -1
  630. package/dist/session/session-catalog.d.ts +7 -2
  631. package/dist/session/session-catalog.d.ts.map +1 -1
  632. package/dist/session/session-catalog.js +13 -2
  633. package/dist/session/session-catalog.js.map +1 -1
  634. package/dist/session/session-context.d.ts +6 -2
  635. package/dist/session/session-context.d.ts.map +1 -1
  636. package/dist/session/session-context.js +44 -4
  637. package/dist/session/session-context.js.map +1 -1
  638. package/dist/session/session-graph-projection.d.ts +32 -0
  639. package/dist/session/session-graph-projection.d.ts.map +1 -0
  640. package/dist/session/session-graph-projection.js +133 -0
  641. package/dist/session/session-graph-projection.js.map +1 -0
  642. package/dist/session/types.d.ts +18 -0
  643. package/dist/session/types.d.ts.map +1 -1
  644. package/dist/session/types.js +8 -0
  645. package/dist/session/types.js.map +1 -1
  646. package/dist/session/wire-format.generated.d.ts +3 -0
  647. package/dist/session/wire-format.generated.d.ts.map +1 -1
  648. package/dist/session/wire-format.generated.js +20 -0
  649. package/dist/session/wire-format.generated.js.map +1 -1
  650. package/dist/skills/eval-harness.d.ts +38 -0
  651. package/dist/skills/eval-harness.d.ts.map +1 -0
  652. package/dist/skills/eval-harness.js +112 -0
  653. package/dist/skills/eval-harness.js.map +1 -0
  654. package/dist/skills/index.d.ts +5 -1
  655. package/dist/skills/index.d.ts.map +1 -1
  656. package/dist/skills/index.js +5 -1
  657. package/dist/skills/index.js.map +1 -1
  658. package/dist/skills/linter.d.ts +36 -0
  659. package/dist/skills/linter.d.ts.map +1 -0
  660. package/dist/skills/linter.js +398 -0
  661. package/dist/skills/linter.js.map +1 -0
  662. package/dist/skills/loader.d.ts +36 -6
  663. package/dist/skills/loader.d.ts.map +1 -1
  664. package/dist/skills/loader.js +169 -86
  665. package/dist/skills/loader.js.map +1 -1
  666. package/dist/skills/package-contract.d.ts +45 -0
  667. package/dist/skills/package-contract.d.ts.map +1 -0
  668. package/dist/skills/package-contract.js +153 -0
  669. package/dist/skills/package-contract.js.map +1 -0
  670. package/dist/skills/runtime-activation.d.ts +68 -0
  671. package/dist/skills/runtime-activation.d.ts.map +1 -0
  672. package/dist/skills/runtime-activation.js +228 -0
  673. package/dist/skills/runtime-activation.js.map +1 -0
  674. package/dist/skills/service-client.d.ts.map +1 -1
  675. package/dist/skills/service-client.js +3 -4
  676. package/dist/skills/service-client.js.map +1 -1
  677. package/dist/skills/tool.d.ts.map +1 -1
  678. package/dist/skills/tool.js +2 -0
  679. package/dist/skills/tool.js.map +1 -1
  680. package/dist/skills/types.d.ts +14 -0
  681. package/dist/skills/types.d.ts.map +1 -1
  682. package/dist/skills/types.js.map +1 -1
  683. package/dist/telemetry/agent-operating-plane-context.d.ts +24 -0
  684. package/dist/telemetry/agent-operating-plane-context.d.ts.map +1 -0
  685. package/dist/telemetry/agent-operating-plane-context.js +54 -0
  686. package/dist/telemetry/agent-operating-plane-context.js.map +1 -0
  687. package/dist/telemetry/beacon.d.ts +24 -0
  688. package/dist/telemetry/beacon.d.ts.map +1 -0
  689. package/dist/telemetry/beacon.js +115 -0
  690. package/dist/telemetry/beacon.js.map +1 -0
  691. package/dist/telemetry/cli-command-aggregator.d.ts +36 -0
  692. package/dist/telemetry/cli-command-aggregator.d.ts.map +1 -0
  693. package/dist/telemetry/cli-command-aggregator.js +251 -0
  694. package/dist/telemetry/cli-command-aggregator.js.map +1 -0
  695. package/dist/telemetry/cli-startup.d.ts +21 -0
  696. package/dist/telemetry/cli-startup.d.ts.map +1 -0
  697. package/dist/telemetry/cli-startup.js +83 -0
  698. package/dist/telemetry/cli-startup.js.map +1 -0
  699. package/dist/telemetry/disablement.d.ts +13 -0
  700. package/dist/telemetry/disablement.d.ts.map +1 -0
  701. package/dist/telemetry/disablement.js +19 -0
  702. package/dist/telemetry/disablement.js.map +1 -0
  703. package/dist/telemetry/index.d.ts +6 -2
  704. package/dist/telemetry/index.d.ts.map +1 -1
  705. package/dist/telemetry/index.js +6 -2
  706. package/dist/telemetry/index.js.map +1 -1
  707. package/dist/telemetry/maestro-event-bus.d.ts +52 -0
  708. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  709. package/dist/telemetry/maestro-event-bus.js +179 -3
  710. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  711. package/dist/telemetry/maestro-event-catalog.d.ts +3 -1
  712. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
  713. package/dist/telemetry/maestro-event-catalog.js +2 -0
  714. package/dist/telemetry/maestro-event-catalog.js.map +1 -1
  715. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  716. package/dist/telemetry/maestro-platform-replay-fixture.js +74 -9
  717. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  718. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +1 -1
  719. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -1
  720. package/dist/telemetry/maestro-publisher-conformance-fixture.js +46 -11
  721. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
  722. package/dist/telemetry/mcp-beacon.d.ts +20 -0
  723. package/dist/telemetry/mcp-beacon.d.ts.map +1 -0
  724. package/dist/telemetry/mcp-beacon.js +54 -0
  725. package/dist/telemetry/mcp-beacon.js.map +1 -0
  726. package/dist/telemetry/metadata-normalization.d.ts +7 -0
  727. package/dist/telemetry/metadata-normalization.d.ts.map +1 -0
  728. package/dist/telemetry/metadata-normalization.js +189 -0
  729. package/dist/telemetry/metadata-normalization.js.map +1 -0
  730. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  731. package/dist/telemetry/meter-service-client.js +5 -10
  732. package/dist/telemetry/meter-service-client.js.map +1 -1
  733. package/dist/telemetry/metrics.d.ts +123 -0
  734. package/dist/telemetry/metrics.d.ts.map +1 -0
  735. package/dist/telemetry/metrics.js +184 -0
  736. package/dist/telemetry/metrics.js.map +1 -0
  737. package/dist/telemetry/turn-tracker.d.ts +1 -0
  738. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  739. package/dist/telemetry/turn-tracker.js +22 -1
  740. package/dist/telemetry/turn-tracker.js.map +1 -1
  741. package/dist/telemetry/wide-events.d.ts +31 -1
  742. package/dist/telemetry/wide-events.d.ts.map +1 -1
  743. package/dist/telemetry/wide-events.js +229 -1
  744. package/dist/telemetry/wide-events.js.map +1 -1
  745. package/dist/telemetry.d.ts +39 -3
  746. package/dist/telemetry.d.ts.map +1 -1
  747. package/dist/telemetry.js +160 -3
  748. package/dist/telemetry.js.map +1 -1
  749. package/dist/testing/test-verification-hook.d.ts.map +1 -1
  750. package/dist/testing/test-verification-hook.js +34 -21
  751. package/dist/testing/test-verification-hook.js.map +1 -1
  752. package/dist/tools/apply-patch-parser.d.ts +26 -0
  753. package/dist/tools/apply-patch-parser.d.ts.map +1 -0
  754. package/dist/tools/apply-patch-parser.js +146 -0
  755. package/dist/tools/apply-patch-parser.js.map +1 -0
  756. package/dist/tools/apply-patch.d.ts +42 -0
  757. package/dist/tools/apply-patch.d.ts.map +1 -0
  758. package/dist/tools/apply-patch.js +648 -0
  759. package/dist/tools/apply-patch.js.map +1 -0
  760. package/dist/tools/ask-user.d.ts +1 -0
  761. package/dist/tools/ask-user.d.ts.map +1 -1
  762. package/dist/tools/background/tool-handler.d.ts +1 -0
  763. package/dist/tools/background/tool-handler.d.ts.map +1 -1
  764. package/dist/tools/bash.d.ts +1 -0
  765. package/dist/tools/bash.d.ts.map +1 -1
  766. package/dist/tools/codesearch.d.ts +1 -0
  767. package/dist/tools/codesearch.d.ts.map +1 -1
  768. package/dist/tools/conductor-client.d.ts +1 -0
  769. package/dist/tools/conductor-client.d.ts.map +1 -1
  770. package/dist/tools/conductor-client.js +63 -0
  771. package/dist/tools/conductor-client.js.map +1 -1
  772. package/dist/tools/diff.d.ts +1 -0
  773. package/dist/tools/diff.d.ts.map +1 -1
  774. package/dist/tools/edit.d.ts +1 -0
  775. package/dist/tools/edit.d.ts.map +1 -1
  776. package/dist/tools/extract-document.d.ts +1 -0
  777. package/dist/tools/extract-document.d.ts.map +1 -1
  778. package/dist/tools/find.d.ts +10 -0
  779. package/dist/tools/find.d.ts.map +1 -1
  780. package/dist/tools/find.js +236 -27
  781. package/dist/tools/find.js.map +1 -1
  782. package/dist/tools/gh.d.ts +3 -0
  783. package/dist/tools/gh.d.ts.map +1 -1
  784. package/dist/tools/index.d.ts +50 -0
  785. package/dist/tools/index.d.ts.map +1 -1
  786. package/dist/tools/index.js +4 -0
  787. package/dist/tools/index.js.map +1 -1
  788. package/dist/tools/list.d.ts +1 -0
  789. package/dist/tools/list.d.ts.map +1 -1
  790. package/dist/tools/notebook.d.ts +1 -0
  791. package/dist/tools/notebook.d.ts.map +1 -1
  792. package/dist/tools/oracle.d.ts +1 -0
  793. package/dist/tools/oracle.d.ts.map +1 -1
  794. package/dist/tools/oracle.js +17 -32
  795. package/dist/tools/oracle.js.map +1 -1
  796. package/dist/tools/parallel-execution.d.ts +13 -2
  797. package/dist/tools/parallel-execution.d.ts.map +1 -1
  798. package/dist/tools/parallel-execution.js +178 -7
  799. package/dist/tools/parallel-execution.js.map +1 -1
  800. package/dist/tools/parallel-ripgrep.d.ts +1 -0
  801. package/dist/tools/parallel-ripgrep.d.ts.map +1 -1
  802. package/dist/tools/pipeline.d.ts +4 -0
  803. package/dist/tools/pipeline.d.ts.map +1 -1
  804. package/dist/tools/read.d.ts +1 -0
  805. package/dist/tools/read.d.ts.map +1 -1
  806. package/dist/tools/search.d.ts +1 -0
  807. package/dist/tools/search.d.ts.map +1 -1
  808. package/dist/tools/status.d.ts +1 -0
  809. package/dist/tools/status.d.ts.map +1 -1
  810. package/dist/tools/todo.d.ts +1 -0
  811. package/dist/tools/todo.d.ts.map +1 -1
  812. package/dist/tools/tool-dsl.d.ts +5 -1
  813. package/dist/tools/tool-dsl.d.ts.map +1 -1
  814. package/dist/tools/tool-dsl.js +1 -0
  815. package/dist/tools/tool-dsl.js.map +1 -1
  816. package/dist/tools/tool-result-cache.d.ts.map +1 -1
  817. package/dist/tools/tool-result-cache.js +1 -0
  818. package/dist/tools/tool-result-cache.js.map +1 -1
  819. package/dist/tools/typebox-tool.d.ts.map +1 -1
  820. package/dist/tools/typebox-tool.js +3 -0
  821. package/dist/tools/typebox-tool.js.map +1 -1
  822. package/dist/tools/webfetch.d.ts +1 -0
  823. package/dist/tools/webfetch.d.ts.map +1 -1
  824. package/dist/tools/websearch.d.ts +1 -0
  825. package/dist/tools/websearch.d.ts.map +1 -1
  826. package/dist/tools/write.d.ts +1 -0
  827. package/dist/tools/write.d.ts.map +1 -1
  828. package/dist/utils/abort-error.d.ts +2 -0
  829. package/dist/utils/abort-error.d.ts.map +1 -0
  830. package/dist/utils/abort-error.js +7 -0
  831. package/dist/utils/abort-error.js.map +1 -0
  832. package/dist/utils/downstream.d.ts.map +1 -1
  833. package/dist/utils/downstream.js +4 -0
  834. package/dist/utils/downstream.js.map +1 -1
  835. package/dist/utils/logger.d.ts +3 -0
  836. package/dist/utils/logger.d.ts.map +1 -1
  837. package/dist/utils/logger.js +14 -3
  838. package/dist/utils/logger.js.map +1 -1
  839. package/dist/utils/path-containment.d.ts +2 -0
  840. package/dist/utils/path-containment.d.ts.map +1 -0
  841. package/dist/utils/path-containment.js +14 -0
  842. package/dist/utils/path-containment.js.map +1 -0
  843. package/dist/utils/prompt-safe-text.d.ts +7 -0
  844. package/dist/utils/prompt-safe-text.d.ts.map +1 -0
  845. package/dist/utils/prompt-safe-text.js +44 -0
  846. package/dist/utils/prompt-safe-text.js.map +1 -0
  847. package/dist/version.json +2 -2
  848. package/dist/web-server.d.ts.map +1 -1
  849. package/dist/web-server.js +32 -7
  850. package/dist/web-server.js.map +1 -1
  851. package/dist/workspace/root-resolver.d.ts +4 -1
  852. package/dist/workspace/root-resolver.d.ts.map +1 -1
  853. package/dist/workspace/root-resolver.js +16 -6
  854. package/dist/workspace/root-resolver.js.map +1 -1
  855. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts +8 -0
  856. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts.map +1 -0
  857. package/node_modules/@evalops/contracts/dist/advisor-effort.js +35 -0
  858. package/node_modules/@evalops/contracts/dist/advisor-effort.js.map +1 -0
  859. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts +10 -0
  860. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts.map +1 -0
  861. package/node_modules/@evalops/contracts/dist/delegation-prompt.js +48 -0
  862. package/node_modules/@evalops/contracts/dist/delegation-prompt.js.map +1 -0
  863. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts +20 -0
  864. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts.map +1 -0
  865. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js +147 -0
  866. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js.map +1 -0
  867. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts +2 -0
  868. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts.map +1 -1
  869. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js +1 -0
  870. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js.map +1 -1
  871. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +280 -5
  872. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  873. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +36 -1
  874. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  875. package/node_modules/@evalops/contracts/dist/index.d.ts +15 -1
  876. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  877. package/node_modules/@evalops/contracts/dist/index.js +6 -0
  878. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  879. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +593 -0
  880. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -0
  881. package/node_modules/@evalops/contracts/dist/maestro-app-server.js +218 -0
  882. package/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -0
  883. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +91 -0
  884. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  885. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +92 -61
  886. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  887. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +3 -0
  888. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -1
  889. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts +28 -0
  890. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts.map +1 -0
  891. package/node_modules/@evalops/contracts/dist/runtime-constraints.js +71 -0
  892. package/node_modules/@evalops/contracts/dist/runtime-constraints.js.map +1 -0
  893. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +7 -0
  894. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -1
  895. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +2 -0
  896. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -1
  897. package/node_modules/@evalops/contracts/dist/scenario.d.ts +191 -0
  898. package/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -0
  899. package/node_modules/@evalops/contracts/dist/scenario.js +4 -0
  900. package/node_modules/@evalops/contracts/dist/scenario.js.map +1 -0
  901. package/node_modules/@evalops/contracts/dist/schemas.d.ts +17 -3
  902. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  903. package/node_modules/@evalops/contracts/dist/schemas.js +16 -0
  904. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  905. package/node_modules/@evalops/contracts/package.json +1 -1
  906. package/node_modules/@evalops/tui/package.json +1 -1
  907. package/package.json +41 -7
  908. package/skills/incident-triage/SKILL.md +40 -0
  909. package/skills/incident-triage/mcp.json +14 -0
  910. package/skills/incident-triage/reference/triage.md +20 -0
  911. package/skills/incident-triage/toolbox/incident-timeline +22 -0
  912. package/skills/incident-triage/toolbox/incident-timeline.cmd +16 -0
  913. package/skills/pr-review/SKILL.md +40 -0
  914. package/skills/pr-review/mcp.json +14 -0
  915. package/skills/pr-review/reference/rubric.md +20 -0
  916. package/skills/pr-review/toolbox/review-summary +20 -0
  917. package/skills/pr-review/toolbox/review-summary.cmd +14 -0
  918. package/skills/release-verification/SKILL.md +40 -0
  919. package/skills/release-verification/mcp.json +15 -0
  920. package/skills/release-verification/reference/checklist.md +21 -0
  921. package/skills/release-verification/toolbox/release-readiness +18 -0
  922. package/skills/release-verification/toolbox/release-readiness.cmd +12 -0
@@ -0,0 +1,1650 @@
1
+ import { createHash } from "node:crypto";
2
+ import { CODEX_SUBAGENT_TOOL_PREFIX, canonicalCodexSubagentTool, codexSubagentActiveStatus, codexSubagentNextAction as codexSubagentContractNextAction, codexSubagentOperationName, codexSubagentTerminalSuccessStatus, } from "../codex/subagent-workgraph.js";
3
+ import { PlatformDelegationStatusValue, delegateAgentWithPlatform, resolveAgentDelegationWithPlatform, } from "../platform/agent-registry-client.js";
4
+ import { PlatformAgentRunStepKindValue, PlatformAgentRunStepStateValue, PlatformAgentRunWaitTypeValue, PlatformAgentWorkItemKindValue, PlatformAgentWorkItemStateValue, PlatformRuntimeEventTypeValue, completeAgentRuntimeRun, failAgentRuntimeRun, recordAgentRuntimeRunCost, recordAgentRuntimeRunEvent, recordAgentRuntimeRunStep, recordAgentRuntimeRunWorkItem, resumeAgentRuntimeRun, updateAgentRuntimeRunWorkItem, waitAgentRuntimeRun, } from "../platform/agent-runtime-client.js";
5
+ import { createLogger } from "../utils/logger.js";
6
+ const logger = createLogger("server:hosted-agent-runtime-progress");
7
+ const CODEX_THREAD_CHILD_RUN_PREFIX = "codex-thread:";
8
+ const DEFAULT_CODEX_SUBAGENT_DELEGATION_CAPABILITY = "code:write";
9
+ function safeIdPart(value) {
10
+ return value.replace(/[^A-Za-z0-9_.:-]+/g, "_").slice(0, 96) || "unknown";
11
+ }
12
+ function nonEmptyString(value) {
13
+ return typeof value === "string" && value.trim().length > 0
14
+ ? value
15
+ : undefined;
16
+ }
17
+ function compactString(value, maxLength = 256) {
18
+ const text = nonEmptyString(value)?.trim();
19
+ if (!text) {
20
+ return undefined;
21
+ }
22
+ if (text.length <= maxLength) {
23
+ return text;
24
+ }
25
+ if (maxLength <= 0) {
26
+ return "";
27
+ }
28
+ if (maxLength <= 3) {
29
+ return ".".repeat(maxLength);
30
+ }
31
+ return `${text.slice(0, maxLength - 3)}...`;
32
+ }
33
+ function isExistingWorkItemCreateError(error) {
34
+ const message = error instanceof Error ? error.message : String(error);
35
+ return /\b409\b|already exists|already_exists|duplicate|unique constraint/i.test(message);
36
+ }
37
+ function stableShortHash(value) {
38
+ return createHash("sha256").update(value).digest("hex").slice(0, 12);
39
+ }
40
+ function goalScopedTodoId(id, goal) {
41
+ return goal ? `goal-${stableShortHash(goal)}:${id}` : id;
42
+ }
43
+ function swarmCompletionStatus(event) {
44
+ switch (event.state.status) {
45
+ case "completed":
46
+ return "succeeded";
47
+ case "failed":
48
+ return "failed";
49
+ case "cancelled":
50
+ return "cancelled";
51
+ case "completing":
52
+ return "running";
53
+ case "initializing":
54
+ return "pending";
55
+ case "running":
56
+ return "running";
57
+ }
58
+ }
59
+ function objectKeys(value) {
60
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
61
+ return undefined;
62
+ }
63
+ const keys = Object.keys(value).sort();
64
+ return keys.length > 0 ? keys : undefined;
65
+ }
66
+ function isRecord(value) {
67
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
68
+ }
69
+ function recordArray(value) {
70
+ if (!Array.isArray(value)) {
71
+ return [];
72
+ }
73
+ return value.filter(isRecord);
74
+ }
75
+ function finiteNumber(value) {
76
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
77
+ }
78
+ function stringArray(value) {
79
+ if (!Array.isArray(value)) {
80
+ return [];
81
+ }
82
+ return value.filter((item) => typeof item === "string" && item.length > 0);
83
+ }
84
+ function codexSubagentToolName(toolName) {
85
+ const tool = toolName.startsWith(CODEX_SUBAGENT_TOOL_PREFIX)
86
+ ? toolName.slice(CODEX_SUBAGENT_TOOL_PREFIX.length)
87
+ : undefined;
88
+ return tool ? (canonicalCodexSubagentTool(tool) ?? tool) : undefined;
89
+ }
90
+ function codexThreadChildRunId(threadId) {
91
+ return `${CODEX_THREAD_CHILD_RUN_PREFIX}${threadId}`;
92
+ }
93
+ function codexSubagentWorkGraph(args) {
94
+ const graph = args?.codexWorkGraph ?? args?.codex_work_graph;
95
+ return isRecord(graph) ? graph : undefined;
96
+ }
97
+ function codexSubagentWorkGraphChildRuns(args) {
98
+ const graph = codexSubagentWorkGraph(args);
99
+ const childRuns = graph?.childRuns ?? graph?.child_runs;
100
+ if (!Array.isArray(childRuns)) {
101
+ return [];
102
+ }
103
+ return childRuns.filter(isRecord);
104
+ }
105
+ function codexSubagentReceiverThreadIds(args) {
106
+ const explicit = stringArray(args.receiverThreadIds ?? args.receiver_thread_ids);
107
+ if (explicit.length > 0) {
108
+ return explicit;
109
+ }
110
+ const graphThreadIds = codexSubagentWorkGraphChildRuns(args)
111
+ .map((childRun) => childRun.threadId ?? childRun.thread_id)
112
+ .filter((threadId) => typeof threadId === "string" && threadId.length > 0);
113
+ return graphThreadIds;
114
+ }
115
+ function codexSubagentExplicitChildRunIds(args) {
116
+ const explicit = stringArray(args.childRunIds ?? args.child_run_ids);
117
+ if (explicit.length > 0) {
118
+ return explicit;
119
+ }
120
+ const graphChildRunIds = codexSubagentWorkGraphChildRuns(args)
121
+ .map((childRun) => childRun.childRunId ?? childRun.child_run_id)
122
+ .filter((childRunId) => typeof childRunId === "string" && childRunId.length > 0);
123
+ if (graphChildRunIds.length > 0) {
124
+ return graphChildRunIds;
125
+ }
126
+ return [];
127
+ }
128
+ function codexSubagentChildRunIds(args, receiverThreadIds) {
129
+ const explicit = codexSubagentExplicitChildRunIds(args);
130
+ if (explicit.length > 0) {
131
+ return explicit;
132
+ }
133
+ return receiverThreadIds.map(codexThreadChildRunId);
134
+ }
135
+ function codexSubagentNextAction(tool) {
136
+ return (codexSubagentContractNextAction(tool) ??
137
+ "track Codex subagent collaboration");
138
+ }
139
+ function codexSubagentDelegationTargetAgentId(args) {
140
+ return (nonEmptyString(args.toAgentId) ??
141
+ nonEmptyString(args.to_agent_id) ??
142
+ nonEmptyString(args.targetAgentId) ??
143
+ nonEmptyString(args.target_agent_id));
144
+ }
145
+ function codexSubagentDelegationRequiredCapability(args, targetAgentId) {
146
+ const explicit = nonEmptyString(args.requiredCapability) ??
147
+ nonEmptyString(args.required_capability) ??
148
+ nonEmptyString(args.capability);
149
+ return (explicit ??
150
+ (targetAgentId ? undefined : DEFAULT_CODEX_SUBAGENT_DELEGATION_CAPABILITY));
151
+ }
152
+ function codexSubagentDelegationA2ASkillID(args, requiredCapability) {
153
+ const explicit = nonEmptyString(args.a2aSkillId) ??
154
+ nonEmptyString(args.a2a_skill_id) ??
155
+ nonEmptyString(args.agentSkillId) ??
156
+ nonEmptyString(args.agent_skill_id) ??
157
+ nonEmptyString(args.subagentSkillId) ??
158
+ nonEmptyString(args.subagent_skill_id) ??
159
+ nonEmptyString(args.skillId) ??
160
+ nonEmptyString(args.skill_id);
161
+ if (explicit) {
162
+ return explicit.trim();
163
+ }
164
+ const subagentType = nonEmptyString(args.agentType) ??
165
+ nonEmptyString(args.agent_type) ??
166
+ nonEmptyString(args.subagentType) ??
167
+ nonEmptyString(args.subagent_type);
168
+ return (codexSubagentTypeA2ASkillID(subagentType) ??
169
+ codexSubagentCapabilityA2ASkillID(requiredCapability));
170
+ }
171
+ function codexSubagentTypeA2ASkillID(value) {
172
+ const token = codexSubagentSkillToken(value);
173
+ if (!token) {
174
+ return undefined;
175
+ }
176
+ switch (token) {
177
+ case "pr-review":
178
+ case "review":
179
+ case "reviewer":
180
+ case "code-review":
181
+ case "code-reviewer":
182
+ return "maestro.subagent.code-review";
183
+ case "test":
184
+ case "qa":
185
+ case "ci":
186
+ case "ci-monitor":
187
+ case "test-runner":
188
+ return "maestro.subagent.test-runner";
189
+ case "explore":
190
+ case "explorer":
191
+ case "repo-explorer":
192
+ case "research":
193
+ case "competitive-intel":
194
+ case "people-research":
195
+ return "maestro.subagent.repo-explorer";
196
+ case "release":
197
+ case "release-shepherd":
198
+ return "maestro.subagent.release-shepherd";
199
+ case "worker":
200
+ case "coder":
201
+ case "code":
202
+ case "code-writer":
203
+ case "default":
204
+ return "maestro.subagent.code-writer";
205
+ default:
206
+ return `maestro.subagent.${token}`;
207
+ }
208
+ }
209
+ function codexSubagentCapabilityA2ASkillID(value) {
210
+ const token = codexSubagentSkillToken(value);
211
+ if (!token) {
212
+ return undefined;
213
+ }
214
+ switch (token) {
215
+ case "code-review":
216
+ return "maestro.subagent.code-review";
217
+ case "code-test":
218
+ case "test-run":
219
+ case "test-runner":
220
+ return "maestro.subagent.test-runner";
221
+ case "repo-explore":
222
+ case "repo-explorer":
223
+ case "code-search":
224
+ return "maestro.subagent.repo-explorer";
225
+ case "release-shepherd":
226
+ case "release-manage":
227
+ return "maestro.subagent.release-shepherd";
228
+ case "code-write":
229
+ case "code-edit":
230
+ case "code-implement":
231
+ return "maestro.subagent.code-writer";
232
+ default:
233
+ return `maestro.subagent.${token}`;
234
+ }
235
+ }
236
+ function codexSubagentSkillToken(value) {
237
+ const token = value
238
+ ?.trim()
239
+ .toLowerCase()
240
+ .replace(/[:_/. ]+/g, "-")
241
+ .replace(/-{2,}/g, "-")
242
+ .replace(/^-|-$/g, "");
243
+ return token || undefined;
244
+ }
245
+ function codexSubagentDelegationReason(prompt) {
246
+ if (!prompt) {
247
+ return "Codex subagent spawn requested by Maestro";
248
+ }
249
+ return `Codex subagent spawn requested by Maestro: ${prompt}`.slice(0, 512);
250
+ }
251
+ function codexSubagentOperation(tool) {
252
+ return codexSubagentOperationName(tool);
253
+ }
254
+ function activeCodexSubagentEdgeStatus(tool) {
255
+ return codexSubagentActiveStatus(tool);
256
+ }
257
+ function terminalCodexSubagentEdgeStatus(tool, isError) {
258
+ if (isError) {
259
+ return "failed";
260
+ }
261
+ return codexSubagentTerminalSuccessStatus(tool);
262
+ }
263
+ function shouldResolveCodexSubagentDelegation(tool, isError) {
264
+ if (tool === "wait" || tool === "closeAgent") {
265
+ return true;
266
+ }
267
+ if (tool === "spawnAgent" && isError) {
268
+ return true;
269
+ }
270
+ if (tool === "resumeAgent" && isError) {
271
+ return true;
272
+ }
273
+ return false;
274
+ }
275
+ function codexSubagentDelegationFailureMessage(tool) {
276
+ switch (tool) {
277
+ case "spawnAgent":
278
+ return "Codex subagent spawn failed";
279
+ case "sendInput":
280
+ return "Codex subagent input failed";
281
+ case "resumeAgent":
282
+ return "Codex subagent resume failed";
283
+ case "wait":
284
+ return "Codex subagent wait failed";
285
+ case "closeAgent":
286
+ return "Codex subagent close failed";
287
+ default:
288
+ return "Codex subagent delegation failed";
289
+ }
290
+ }
291
+ function toolDisplayName(event) {
292
+ return event.displayName ?? event.summaryLabel ?? event.toolName;
293
+ }
294
+ function materializedToolExecutionId(event) {
295
+ const toolExecutionId = nonEmptyString(event.toolExecutionId)?.trim();
296
+ const toolCallId = nonEmptyString(event.toolCallId)?.trim();
297
+ if (!toolExecutionId || toolExecutionId === toolCallId) {
298
+ return undefined;
299
+ }
300
+ return toolExecutionId;
301
+ }
302
+ function waitTypeForRequest(kind) {
303
+ switch (kind) {
304
+ case "approval":
305
+ case "tool_retry":
306
+ return PlatformAgentRunWaitTypeValue.Approval;
307
+ case "client_tool":
308
+ case "mcp_elicitation":
309
+ case "user_input":
310
+ return PlatformAgentRunWaitTypeValue.Input;
311
+ }
312
+ }
313
+ function taskWorkItemState(status) {
314
+ switch (status) {
315
+ case "pending":
316
+ return PlatformAgentWorkItemStateValue.Pending;
317
+ case "running":
318
+ return PlatformAgentWorkItemStateValue.Running;
319
+ case "waiting":
320
+ return PlatformAgentWorkItemStateValue.Waiting;
321
+ case "blocked":
322
+ return PlatformAgentWorkItemStateValue.Blocked;
323
+ case "succeeded":
324
+ return PlatformAgentWorkItemStateValue.Succeeded;
325
+ case "failed":
326
+ return PlatformAgentWorkItemStateValue.Failed;
327
+ case "cancelled":
328
+ return PlatformAgentWorkItemStateValue.Cancelled;
329
+ }
330
+ }
331
+ function taskStepState(status) {
332
+ switch (status) {
333
+ case "pending":
334
+ return PlatformAgentRunStepStateValue.Pending;
335
+ case "running":
336
+ return PlatformAgentRunStepStateValue.Running;
337
+ case "waiting":
338
+ case "blocked":
339
+ return PlatformAgentRunStepStateValue.Waiting;
340
+ case "succeeded":
341
+ return PlatformAgentRunStepStateValue.Succeeded;
342
+ case "failed":
343
+ return PlatformAgentRunStepStateValue.Failed;
344
+ case "cancelled":
345
+ return PlatformAgentRunStepStateValue.Cancelled;
346
+ }
347
+ }
348
+ function defaultTaskWorkItemKind(source) {
349
+ switch (source) {
350
+ case "background":
351
+ return PlatformAgentWorkItemKindValue.ToolCall;
352
+ case "swarm":
353
+ return PlatformAgentWorkItemKindValue.ChildRun;
354
+ case "checkpoint":
355
+ return PlatformAgentWorkItemKindValue.Recovery;
356
+ case "todo":
357
+ return PlatformAgentWorkItemKindValue.Followup;
358
+ }
359
+ }
360
+ function defaultTaskStepKind(source, status) {
361
+ if (status === "failed") {
362
+ return PlatformAgentRunStepKindValue.Error;
363
+ }
364
+ if (source === "background") {
365
+ return status === "succeeded" || status === "cancelled"
366
+ ? PlatformAgentRunStepKindValue.ToolResult
367
+ : PlatformAgentRunStepKindValue.ToolCallIntent;
368
+ }
369
+ return PlatformAgentRunStepKindValue.System;
370
+ }
371
+ function shouldRecordTaskStep(event) {
372
+ if (event.recordStep !== undefined) {
373
+ return event.recordStep;
374
+ }
375
+ return event.status !== "pending";
376
+ }
377
+ function backgroundStatusToTaskStatus(status) {
378
+ switch (status) {
379
+ case "running":
380
+ case "restarting":
381
+ return "running";
382
+ case "stopped":
383
+ return "cancelled";
384
+ case "exited":
385
+ return "succeeded";
386
+ case "failed":
387
+ return "failed";
388
+ default:
389
+ return "pending";
390
+ }
391
+ }
392
+ function todoStatusToTaskStatus(status) {
393
+ switch (status) {
394
+ case "in_progress":
395
+ return "running";
396
+ case "completed":
397
+ return "succeeded";
398
+ default:
399
+ return "pending";
400
+ }
401
+ }
402
+ function taskPromptSummary(task) {
403
+ return compactString(task.prompt, 160) ?? task.id;
404
+ }
405
+ export class HostedAgentRuntimeProgressRecorder {
406
+ constructor(options) {
407
+ this.pendingWaitIds = new Map();
408
+ this.resumedWaitIds = new Set();
409
+ this.codexSubagentReceiverThreadIds = new Map();
410
+ this.codexSubagentToolChildRunIds = new Map();
411
+ this.codexSubagentToolWorkGraphs = new Map();
412
+ this.codexSubagentThreadWorkItemIds = new Map();
413
+ this.codexSubagentDelegationIds = new Map();
414
+ this.codexSubagentDelegationIdsByThreadId = new Map();
415
+ this.codexSubagentDelegationIdsByChildRunId = new Map();
416
+ this.recordedModelUsageTurnIds = new Set();
417
+ this.toolArgsByCallId = new Map();
418
+ this.recordedTaskWorkItemIds = new Set();
419
+ this.pending = Promise.resolve();
420
+ this.turnIndex = 0;
421
+ this.terminalRecorded = false;
422
+ this.sessionId = options.sessionId;
423
+ this.hostedRunner = options.hostedRunner;
424
+ this.workspaceRoot = options.workspaceRoot;
425
+ this.operations = {
426
+ recordStep: options.operations?.recordStep ?? recordAgentRuntimeRunStep,
427
+ recordEvent: options.operations?.recordEvent ?? recordAgentRuntimeRunEvent,
428
+ recordCost: options.operations?.recordCost ?? recordAgentRuntimeRunCost,
429
+ recordWorkItem: options.operations?.recordWorkItem ?? recordAgentRuntimeRunWorkItem,
430
+ updateWorkItem: options.operations?.updateWorkItem ?? updateAgentRuntimeRunWorkItem,
431
+ waitRun: options.operations?.waitRun ?? waitAgentRuntimeRun,
432
+ resumeRun: options.operations?.resumeRun ?? resumeAgentRuntimeRun,
433
+ completeRun: options.operations?.completeRun ?? completeAgentRuntimeRun,
434
+ failRun: options.operations?.failRun ?? failAgentRuntimeRun,
435
+ delegateAgent: options.operations?.delegateAgent ?? delegateAgentWithPlatform,
436
+ resolveDelegation: options.operations?.resolveDelegation ??
437
+ resolveAgentDelegationWithPlatform,
438
+ };
439
+ }
440
+ recordAgentEvent(event) {
441
+ switch (event.type) {
442
+ case "agent_start":
443
+ this.recordStep({
444
+ id: this.stepId("agent", `start-${this.turnIndex + 1}`),
445
+ name: event.continuation ? "Agent continuation" : "Agent run",
446
+ stepKind: PlatformAgentRunStepKindValue.System,
447
+ state: PlatformAgentRunStepStateValue.Running,
448
+ input: this.basePayload({
449
+ event_type: event.type,
450
+ continuation: event.continuation ?? false,
451
+ }),
452
+ });
453
+ return;
454
+ case "agent_end":
455
+ this.recordStep({
456
+ id: this.stepId("agent", `end-${this.turnIndex}`),
457
+ name: "Agent run completed",
458
+ stepKind: event.aborted || event.stopReason === "error"
459
+ ? PlatformAgentRunStepKindValue.Error
460
+ : PlatformAgentRunStepKindValue.System,
461
+ state: event.aborted || event.stopReason === "error"
462
+ ? PlatformAgentRunStepStateValue.Failed
463
+ : PlatformAgentRunStepStateValue.Succeeded,
464
+ output: this.basePayload({
465
+ event_type: event.type,
466
+ aborted: event.aborted ?? false,
467
+ stop_reason: event.stopReason,
468
+ }),
469
+ });
470
+ return;
471
+ case "turn_start":
472
+ this.turnIndex += 1;
473
+ this.recordStep({
474
+ id: this.stepId("turn", String(this.turnIndex)),
475
+ name: `Turn ${this.turnIndex}`,
476
+ stepKind: PlatformAgentRunStepKindValue.ModelCall,
477
+ state: PlatformAgentRunStepStateValue.Running,
478
+ input: this.basePayload({ event_type: event.type }),
479
+ });
480
+ return;
481
+ case "turn_end":
482
+ this.recordStep({
483
+ id: this.stepId("turn", String(this.turnIndex)),
484
+ name: `Turn ${this.turnIndex}`,
485
+ stepKind: PlatformAgentRunStepKindValue.ModelCall,
486
+ state: PlatformAgentRunStepStateValue.Succeeded,
487
+ output: this.basePayload({
488
+ event_type: event.type,
489
+ tool_result_count: event.toolResults.length,
490
+ }),
491
+ });
492
+ this.recordModelUsageEvent(event.message);
493
+ return;
494
+ case "tool_execution_start":
495
+ this.toolArgsByCallId.set(event.toolCallId, event.args);
496
+ this.recordStep({
497
+ id: this.toolStepId(event.toolCallId),
498
+ name: toolDisplayName(event),
499
+ stepKind: PlatformAgentRunStepKindValue.ToolCallIntent,
500
+ state: PlatformAgentRunStepStateValue.Running,
501
+ input: this.basePayload({
502
+ event_type: event.type,
503
+ tool_call_id: event.toolCallId,
504
+ tool_execution_id: materializedToolExecutionId(event),
505
+ tool_name: event.toolName,
506
+ display_name: event.displayName,
507
+ summary_label: event.summaryLabel,
508
+ arg_keys: objectKeys(event.args),
509
+ }),
510
+ });
511
+ this.recordCodexSubagentWorkItem(event);
512
+ return;
513
+ case "tool_execution_end":
514
+ this.recordStep({
515
+ id: this.toolStepId(event.toolCallId),
516
+ name: toolDisplayName(event),
517
+ stepKind: event.isError
518
+ ? PlatformAgentRunStepKindValue.Error
519
+ : PlatformAgentRunStepKindValue.ToolResult,
520
+ state: event.isError
521
+ ? PlatformAgentRunStepStateValue.Failed
522
+ : PlatformAgentRunStepStateValue.Succeeded,
523
+ errorMessage: event.isError
524
+ ? (event.errorCode ?? event.governedOutcome ?? "tool failed")
525
+ : undefined,
526
+ output: this.basePayload({
527
+ event_type: event.type,
528
+ tool_call_id: event.toolCallId,
529
+ tool_execution_id: materializedToolExecutionId(event),
530
+ approval_request_id: event.approvalRequestId,
531
+ tool_name: event.toolName,
532
+ display_name: event.displayName,
533
+ summary_label: event.summaryLabel,
534
+ error_code: event.errorCode,
535
+ governed_outcome: event.governedOutcome,
536
+ }),
537
+ });
538
+ this.updateCodexSubagentWorkItem(event);
539
+ this.recordToolDerivedTaskProgress(event);
540
+ return;
541
+ case "action_approval_required":
542
+ this.recordApprovalWait({
543
+ id: event.request.id,
544
+ callId: event.request.id,
545
+ toolName: event.request.toolName,
546
+ reason: event.request.reason,
547
+ displayName: event.request.displayName,
548
+ summaryLabel: event.request.summaryLabel,
549
+ startedAtMs: event.request.startedAtMs,
550
+ });
551
+ return;
552
+ case "action_approval_resolved":
553
+ this.resumeWait({
554
+ id: event.request.id,
555
+ kind: "approval",
556
+ resolution: event.decision.approved ? "approved" : "denied",
557
+ resolvedBy: event.decision.resolvedBy ?? "user",
558
+ reason: event.decision.reason,
559
+ startedAtMs: event.request.startedAtMs,
560
+ resolvedAtMs: event.decision.resolvedAtMs,
561
+ });
562
+ return;
563
+ case "error":
564
+ this.recordPromptFailure(event.message);
565
+ return;
566
+ default:
567
+ return;
568
+ }
569
+ }
570
+ recordServerRequestEvent(event) {
571
+ if (event.type === "registered") {
572
+ this.recordApprovalWait({
573
+ id: event.request.id,
574
+ callId: event.request.callId,
575
+ toolName: event.request.toolName,
576
+ reason: event.request.reason,
577
+ displayName: event.request.displayName,
578
+ summaryLabel: event.request.summaryLabel,
579
+ kind: event.request.kind,
580
+ startedAtMs: event.request.startedAtMs,
581
+ });
582
+ return;
583
+ }
584
+ this.resumeWait({
585
+ id: event.request.id,
586
+ kind: event.request.kind,
587
+ resolution: event.resolution,
588
+ resolvedBy: event.resolvedBy,
589
+ reason: event.reason,
590
+ startedAtMs: event.request.startedAtMs,
591
+ resolvedAtMs: event.resolvedAtMs,
592
+ });
593
+ }
594
+ recordPromptFailure(message) {
595
+ this.recordStep({
596
+ id: this.stepId("error", `${Date.now()}`),
597
+ name: "Prompt failed",
598
+ stepKind: PlatformAgentRunStepKindValue.Error,
599
+ state: PlatformAgentRunStepStateValue.Failed,
600
+ errorMessage: message,
601
+ output: this.basePayload({
602
+ event_type: "prompt_failure",
603
+ }),
604
+ });
605
+ }
606
+ recordTaskProgressEvent(event) {
607
+ const runId = nonEmptyString(this.hostedRunner?.agentRunId);
608
+ if (!this.hostedRunner?.enabled || !runId) {
609
+ return;
610
+ }
611
+ const taskId = this.taskProgressId(event.source, event.id);
612
+ const parentWorkItemId = event.parentId
613
+ ? this.taskProgressId(event.source, event.parentId)
614
+ : undefined;
615
+ const evidenceRefs = [
616
+ `maestro-task:${event.source}:${event.id}`,
617
+ ...(event.toolCallId ? [`tool-call:${event.toolCallId}`] : []),
618
+ ...(event.toolExecutionId
619
+ ? [`tool-execution:${event.toolExecutionId}`]
620
+ : []),
621
+ ...(event.evidenceRefs ?? []),
622
+ ];
623
+ const state = taskWorkItemState(event.status);
624
+ const payload = this.basePayload({
625
+ event_type: "maestro_task_progress",
626
+ task_source: event.source,
627
+ task_id: event.id,
628
+ task_status: event.status,
629
+ parent_task_id: event.parentId,
630
+ owner_child_run_id: event.ownerChildRunId,
631
+ tool_call_id: event.toolCallId,
632
+ tool_execution_id: event.toolExecutionId,
633
+ approval_request_id: event.approvalRequestId,
634
+ title: compactString(event.title),
635
+ goal: compactString(event.goal, 512),
636
+ next_action: compactString(event.nextAction),
637
+ blocker: compactString(event.blocker),
638
+ ...event.payload,
639
+ });
640
+ this.enqueue(async () => {
641
+ const updateWorkItem = () => this.operations.updateWorkItem({
642
+ runId,
643
+ workItemId: taskId,
644
+ state,
645
+ ...(event.nextAction
646
+ ? { nextAction: compactString(event.nextAction) }
647
+ : {}),
648
+ ...(event.blocker ? { blocker: compactString(event.blocker) } : {}),
649
+ ...(event.toolExecutionId
650
+ ? { toolExecutionId: event.toolExecutionId }
651
+ : {}),
652
+ evidenceRefs,
653
+ completionGate: event.completionGate ?? "maestro_task_progress_recorded",
654
+ payload,
655
+ });
656
+ if (this.recordedTaskWorkItemIds.has(taskId)) {
657
+ await updateWorkItem();
658
+ return;
659
+ }
660
+ const workItem = {
661
+ id: taskId,
662
+ runId,
663
+ ...(parentWorkItemId ? { parentWorkItemId } : {}),
664
+ ...(event.ownerChildRunId
665
+ ? { ownerChildRunId: event.ownerChildRunId }
666
+ : {}),
667
+ kind: event.workItemKind ?? defaultTaskWorkItemKind(event.source),
668
+ state,
669
+ title: compactString(event.title),
670
+ ...(event.goal ? { goal: compactString(event.goal, 512) } : {}),
671
+ ...(event.nextAction
672
+ ? { nextAction: compactString(event.nextAction) }
673
+ : {}),
674
+ ...(event.blocker ? { blocker: compactString(event.blocker) } : {}),
675
+ ...(event.toolExecutionId
676
+ ? { toolExecutionId: event.toolExecutionId }
677
+ : {}),
678
+ evidenceRefs,
679
+ completionGate: event.completionGate ?? "maestro_task_progress_recorded",
680
+ payload,
681
+ };
682
+ try {
683
+ await this.operations.recordWorkItem({
684
+ runId,
685
+ workItem,
686
+ });
687
+ }
688
+ catch (error) {
689
+ if (!isExistingWorkItemCreateError(error)) {
690
+ throw error;
691
+ }
692
+ await updateWorkItem();
693
+ }
694
+ this.recordedTaskWorkItemIds.add(taskId);
695
+ });
696
+ this.recordEvent({
697
+ type: PlatformRuntimeEventTypeValue.AgentProgressRecorded,
698
+ message: `Maestro ${event.source} task ${event.status}`,
699
+ stepId: shouldRecordTaskStep(event) ? taskId : undefined,
700
+ attributes: payload,
701
+ });
702
+ if (!shouldRecordTaskStep(event)) {
703
+ return;
704
+ }
705
+ const stepState = taskStepState(event.status);
706
+ const stepKind = event.stepKind ?? defaultTaskStepKind(event.source, event.status);
707
+ this.recordStep({
708
+ id: taskId,
709
+ name: compactString(event.title),
710
+ stepKind,
711
+ state: stepState,
712
+ errorMessage: event.status === "failed" ? event.errorMessage : undefined,
713
+ ...(stepState === PlatformAgentRunStepStateValue.Running ||
714
+ stepState === PlatformAgentRunStepStateValue.Waiting ||
715
+ stepState === PlatformAgentRunStepStateValue.Pending
716
+ ? { input: payload }
717
+ : { output: payload }),
718
+ });
719
+ }
720
+ recordSwarmEvent(event) {
721
+ switch (event.type) {
722
+ case "swarm_start":
723
+ this.recordTaskProgressEvent({
724
+ source: "swarm",
725
+ id: event.swarmId,
726
+ status: "running",
727
+ title: `Swarm ${event.swarmId}`,
728
+ goal: compactString(event.config.planFile, 512),
729
+ workItemKind: PlatformAgentWorkItemKindValue.Root,
730
+ nextAction: "coordinate swarm teammates",
731
+ payload: {
732
+ swarm_id: event.swarmId,
733
+ teammate_count: event.config.teammateCount,
734
+ task_count: event.config.tasks.length,
735
+ mode: event.config.mode,
736
+ model: event.config.model,
737
+ model_provider: event.config.modelProvider,
738
+ subagent_type: event.config.subagentType,
739
+ reasoning_effort: event.config.reasoningEffort,
740
+ continue_on_failure: event.config.continueOnFailure,
741
+ },
742
+ });
743
+ return;
744
+ case "task_start":
745
+ this.recordTaskProgressEvent({
746
+ source: "swarm",
747
+ id: `${event.swarmId}:task:${event.task.id}`,
748
+ parentId: event.swarmId,
749
+ status: "running",
750
+ title: `Swarm task ${event.task.id}`,
751
+ goal: taskPromptSummary(event.task),
752
+ workItemKind: PlatformAgentWorkItemKindValue.ChildRun,
753
+ ownerChildRunId: `swarm:${event.swarmId}:teammate:${event.teammateId}`,
754
+ nextAction: "wait for teammate task completion",
755
+ payload: {
756
+ swarm_id: event.swarmId,
757
+ teammate_id: event.teammateId,
758
+ task_id: event.task.id,
759
+ file_count: event.task.files?.length ?? 0,
760
+ depends_on: event.task.dependsOn,
761
+ model: event.task.model,
762
+ subagent_type: event.task.subagentType,
763
+ priority: event.task.priority,
764
+ },
765
+ });
766
+ return;
767
+ case "task_complete":
768
+ this.recordTaskProgressEvent({
769
+ source: "swarm",
770
+ id: `${event.swarmId}:task:${event.taskId}`,
771
+ parentId: event.swarmId,
772
+ status: "succeeded",
773
+ title: `Swarm task ${event.taskId}`,
774
+ workItemKind: PlatformAgentWorkItemKindValue.ChildRun,
775
+ ownerChildRunId: `swarm:${event.swarmId}:teammate:${event.teammateId}`,
776
+ payload: {
777
+ swarm_id: event.swarmId,
778
+ teammate_id: event.teammateId,
779
+ task_id: event.taskId,
780
+ output_bytes: Buffer.byteLength(event.output, "utf8"),
781
+ },
782
+ });
783
+ return;
784
+ case "task_fail":
785
+ this.recordTaskProgressEvent({
786
+ source: "swarm",
787
+ id: `${event.swarmId}:task:${event.taskId}`,
788
+ parentId: event.swarmId,
789
+ status: "failed",
790
+ title: `Swarm task ${event.taskId}`,
791
+ workItemKind: PlatformAgentWorkItemKindValue.ChildRun,
792
+ ownerChildRunId: `swarm:${event.swarmId}:teammate:${event.teammateId}`,
793
+ errorMessage: event.error,
794
+ payload: {
795
+ swarm_id: event.swarmId,
796
+ teammate_id: event.teammateId,
797
+ task_id: event.taskId,
798
+ error: compactString(event.error, 512),
799
+ },
800
+ });
801
+ return;
802
+ case "swarm_complete":
803
+ this.recordTaskProgressEvent({
804
+ source: "swarm",
805
+ id: event.swarmId,
806
+ status: swarmCompletionStatus(event),
807
+ title: `Swarm ${event.swarmId}`,
808
+ workItemKind: PlatformAgentWorkItemKindValue.Root,
809
+ errorMessage: event.state.error,
810
+ payload: {
811
+ swarm_id: event.swarmId,
812
+ swarm_status: event.state.status,
813
+ completed_task_count: event.state.completedTasks.size,
814
+ failed_task_count: event.state.failedTasks.size,
815
+ teammate_count: event.state.teammates.length,
816
+ error: compactString(event.state.error, 512),
817
+ },
818
+ });
819
+ return;
820
+ case "swarm_fail":
821
+ this.recordTaskProgressEvent({
822
+ source: "swarm",
823
+ id: event.swarmId,
824
+ status: "failed",
825
+ title: `Swarm ${event.swarmId}`,
826
+ workItemKind: PlatformAgentWorkItemKindValue.Root,
827
+ errorMessage: event.error,
828
+ payload: {
829
+ swarm_id: event.swarmId,
830
+ error: compactString(event.error, 512),
831
+ },
832
+ });
833
+ return;
834
+ case "teammate_spawn":
835
+ case "teammate_complete":
836
+ this.recordEvent({
837
+ type: PlatformRuntimeEventTypeValue.AgentProgressRecorded,
838
+ message: `Maestro swarm ${event.type}`,
839
+ attributes: this.basePayload({
840
+ event_type: "maestro_swarm_teammate_progress",
841
+ swarm_id: event.swarmId,
842
+ swarm_event_type: event.type,
843
+ teammate_id: event.teammate.id,
844
+ teammate_name: compactString(event.teammate.name),
845
+ teammate_status: event.teammate.status,
846
+ completed_task_count: event.teammate.completedTasks.length,
847
+ }),
848
+ });
849
+ return;
850
+ }
851
+ }
852
+ async flush() {
853
+ await this.pending;
854
+ }
855
+ async completeRun(input = {}) {
856
+ if (this.terminalRecorded) {
857
+ await this.flush();
858
+ return;
859
+ }
860
+ this.terminalRecorded = true;
861
+ this.enqueue(async () => {
862
+ const handles = this.handles();
863
+ if (!handles) {
864
+ return;
865
+ }
866
+ await this.operations.completeRun({
867
+ runId: handles.runId,
868
+ leaseToken: handles.leaseToken,
869
+ result: this.basePayload({
870
+ event_type: "hosted_runner_drained",
871
+ status: "drained",
872
+ flush_status: input.flushStatus,
873
+ reason: input.reason,
874
+ requested_by: input.requestedBy,
875
+ manifest_path: input.manifestPath,
876
+ }),
877
+ });
878
+ });
879
+ await this.flush();
880
+ }
881
+ async failRun(input) {
882
+ if (this.terminalRecorded) {
883
+ await this.flush();
884
+ return;
885
+ }
886
+ this.terminalRecorded = true;
887
+ this.recordStep({
888
+ id: this.stepId("terminal", "failed"),
889
+ name: "Hosted runner drain failed",
890
+ stepKind: PlatformAgentRunStepKindValue.Error,
891
+ state: PlatformAgentRunStepStateValue.Failed,
892
+ errorMessage: input.errorMessage,
893
+ output: this.basePayload({
894
+ event_type: "hosted_runner_drain_failed",
895
+ reason: input.reason,
896
+ requested_by: input.requestedBy,
897
+ flush_status: input.flushStatus,
898
+ manifest_path: input.manifestPath,
899
+ }),
900
+ });
901
+ this.enqueue(async () => {
902
+ const handles = this.handles();
903
+ if (!handles) {
904
+ return;
905
+ }
906
+ await this.operations.failRun({
907
+ runId: handles.runId,
908
+ leaseToken: handles.leaseToken,
909
+ errorMessage: input.errorMessage,
910
+ retryable: input.retryable ?? false,
911
+ });
912
+ });
913
+ await this.flush();
914
+ }
915
+ async recordHostedRunnerDrain(input) {
916
+ this.recordDrainManifestEvent(input);
917
+ if (input.status === "drained") {
918
+ await this.completeRun({
919
+ reason: input.reason,
920
+ requestedBy: input.requestedBy,
921
+ flushStatus: input.flushStatus,
922
+ manifestPath: input.manifestPath,
923
+ });
924
+ return;
925
+ }
926
+ await this.failRun({
927
+ errorMessage: input.errorMessage ?? "Hosted runner drain did not complete cleanly",
928
+ reason: input.reason,
929
+ requestedBy: input.requestedBy,
930
+ retryable: false,
931
+ flushStatus: input.flushStatus,
932
+ manifestPath: input.manifestPath,
933
+ });
934
+ }
935
+ recordApprovalWait(input) {
936
+ if (this.pendingWaitIds.has(input.id)) {
937
+ return;
938
+ }
939
+ const waitId = this.waitId(input.id);
940
+ this.pendingWaitIds.set(input.id, waitId);
941
+ this.enqueue(async () => {
942
+ const handles = this.handles();
943
+ if (!handles) {
944
+ return;
945
+ }
946
+ await this.operations.waitRun({
947
+ runId: handles.runId,
948
+ leaseToken: handles.leaseToken,
949
+ wait: {
950
+ id: waitId,
951
+ stepId: this.toolStepId(input.callId),
952
+ type: waitTypeForRequest(input.kind ?? "approval"),
953
+ externalRef: input.id,
954
+ reason: input.reason,
955
+ payload: this.basePayload({
956
+ request_id: input.id,
957
+ request_type: input.kind ?? "approval",
958
+ call_id: input.callId,
959
+ tool_name: input.toolName,
960
+ display_name: input.displayName,
961
+ summary_label: input.summaryLabel,
962
+ started_at_ms: input.startedAtMs,
963
+ }),
964
+ },
965
+ checkpoint: {
966
+ id: this.checkpointId(input.id),
967
+ stepId: this.toolStepId(input.callId),
968
+ resumeToken: waitId,
969
+ payload: this.basePayload({
970
+ request_id: input.id,
971
+ request_type: input.kind ?? "approval",
972
+ }),
973
+ },
974
+ });
975
+ });
976
+ }
977
+ resumeWait(input) {
978
+ if (this.resumedWaitIds.has(input.id)) {
979
+ return;
980
+ }
981
+ this.resumedWaitIds.add(input.id);
982
+ const waitId = this.pendingWaitIds.get(input.id) ?? this.waitId(input.id);
983
+ this.pendingWaitIds.delete(input.id);
984
+ this.enqueue(async () => {
985
+ const handles = this.handles();
986
+ if (!handles) {
987
+ return;
988
+ }
989
+ await this.operations.resumeRun({
990
+ runId: handles.runId,
991
+ waitId,
992
+ resumeEventId: this.resumeEventId(input.id),
993
+ payload: this.basePayload({
994
+ request_id: input.id,
995
+ request_type: input.kind,
996
+ resolution: input.resolution,
997
+ resolved_by: input.resolvedBy,
998
+ reason: input.reason,
999
+ started_at_ms: input.startedAtMs,
1000
+ resolved_at_ms: input.resolvedAtMs,
1001
+ }),
1002
+ });
1003
+ });
1004
+ }
1005
+ recordStep(step) {
1006
+ this.enqueue(async () => {
1007
+ const handles = this.handles();
1008
+ if (!handles) {
1009
+ return;
1010
+ }
1011
+ await this.operations.recordStep({
1012
+ runId: handles.runId,
1013
+ leaseToken: handles.leaseToken,
1014
+ step,
1015
+ });
1016
+ });
1017
+ }
1018
+ recordModelUsageEvent(message) {
1019
+ if (message.role !== "assistant") {
1020
+ return;
1021
+ }
1022
+ const usage = message.usage;
1023
+ if (!usage) {
1024
+ return;
1025
+ }
1026
+ const inputTokens = finiteNumber(usage.input);
1027
+ const outputTokens = finiteNumber(usage.output);
1028
+ const cacheReadTokens = finiteNumber(usage.cacheRead);
1029
+ const cacheWriteTokens = finiteNumber(usage.cacheWrite);
1030
+ const totalTokens = inputTokens + outputTokens + cacheReadTokens + cacheWriteTokens;
1031
+ const estimatedCostMicros = Math.max(0, Math.round(finiteNumber(usage.cost?.total) * 1_000_000));
1032
+ if (totalTokens <= 0 && estimatedCostMicros <= 0) {
1033
+ return;
1034
+ }
1035
+ const turnId = String(this.turnIndex);
1036
+ if (this.recordedModelUsageTurnIds.has(turnId)) {
1037
+ return;
1038
+ }
1039
+ this.recordedModelUsageTurnIds.add(turnId);
1040
+ const modelCallId = this.stepId("model", turnId);
1041
+ const costId = this.costId(turnId);
1042
+ const stepId = this.stepId("turn", turnId);
1043
+ const meterRef = this.meterRef(costId);
1044
+ this.recordEvent({
1045
+ type: PlatformRuntimeEventTypeValue.ModelResponseRecorded,
1046
+ message: "Maestro model response usage recorded",
1047
+ stepId,
1048
+ costId,
1049
+ attributes: this.basePayload({
1050
+ event_type: "model_response_recorded",
1051
+ session_kind: "codex",
1052
+ session_provider: "maestro",
1053
+ model_call_id: modelCallId,
1054
+ cost_id: costId,
1055
+ provider: message.provider,
1056
+ model: message.model,
1057
+ input_tokens: inputTokens,
1058
+ output_tokens: outputTokens,
1059
+ cache_read_tokens: cacheReadTokens,
1060
+ cache_write_tokens: cacheWriteTokens,
1061
+ total_tokens: totalTokens,
1062
+ estimated_cost_micros: estimatedCostMicros,
1063
+ currency: "USD",
1064
+ }),
1065
+ });
1066
+ this.recordCost({
1067
+ id: costId,
1068
+ stepId,
1069
+ meterRef,
1070
+ provider: message.provider,
1071
+ model: message.model,
1072
+ inputTokens,
1073
+ outputTokens,
1074
+ totalTokens,
1075
+ currency: estimatedCostMicros > 0 ? "USD" : undefined,
1076
+ estimatedCostMicros,
1077
+ });
1078
+ }
1079
+ recordDrainManifestEvent(input) {
1080
+ this.recordEvent({
1081
+ type: PlatformRuntimeEventTypeValue.AgentProgressRecorded,
1082
+ message: input.status === "drained"
1083
+ ? "hosted runner drain manifest recorded"
1084
+ : "hosted runner interrupted drain manifest recorded",
1085
+ attributes: this.basePayload({
1086
+ event_type: "hosted_runner_drain_manifest_recorded",
1087
+ status: input.status,
1088
+ flush_status: input.flushStatus,
1089
+ reason: input.reason,
1090
+ requested_by: input.requestedBy,
1091
+ manifest_path: input.manifestPath,
1092
+ error: input.errorMessage,
1093
+ platform_evidence: input.platformEvidence,
1094
+ }),
1095
+ });
1096
+ }
1097
+ recordEvent(event) {
1098
+ this.enqueue(async () => {
1099
+ const runId = nonEmptyString(this.hostedRunner?.agentRunId);
1100
+ if (!this.hostedRunner?.enabled || !runId) {
1101
+ return;
1102
+ }
1103
+ await this.operations.recordEvent({
1104
+ runId,
1105
+ ...event,
1106
+ });
1107
+ });
1108
+ }
1109
+ recordCost(cost) {
1110
+ this.enqueue(async () => {
1111
+ const runId = nonEmptyString(this.hostedRunner?.agentRunId);
1112
+ const leaseToken = nonEmptyString(this.hostedRunner?.agentRuntimeLeaseToken);
1113
+ if (!this.hostedRunner?.enabled || !runId || !leaseToken) {
1114
+ return;
1115
+ }
1116
+ await this.operations.recordCost({
1117
+ runId,
1118
+ leaseToken,
1119
+ cost,
1120
+ });
1121
+ });
1122
+ }
1123
+ recordCodexSubagentWorkItem(event) {
1124
+ const codexTool = codexSubagentToolName(event.toolName);
1125
+ if (!codexTool) {
1126
+ return;
1127
+ }
1128
+ const runId = nonEmptyString(this.hostedRunner?.agentRunId);
1129
+ if (!this.hostedRunner?.enabled || !runId) {
1130
+ return;
1131
+ }
1132
+ const workGraph = codexSubagentWorkGraph(event.args);
1133
+ const receiverThreadIds = codexSubagentReceiverThreadIds(event.args);
1134
+ const childRunIds = codexSubagentChildRunIds(event.args, receiverThreadIds);
1135
+ const ownerChildRunId = childRunIds[0];
1136
+ const linkedWorkItemIds = this.codexSubagentLinkedWorkItemIds(receiverThreadIds);
1137
+ const parentWorkItemId = linkedWorkItemIds.length === 1 ? linkedWorkItemIds[0] : undefined;
1138
+ const workItemId = this.workItemId(event.toolCallId);
1139
+ this.codexSubagentReceiverThreadIds.set(event.toolCallId, receiverThreadIds);
1140
+ this.codexSubagentToolChildRunIds.set(event.toolCallId, childRunIds);
1141
+ if (workGraph) {
1142
+ this.codexSubagentToolWorkGraphs.set(event.toolCallId, workGraph);
1143
+ }
1144
+ if (codexTool === "spawnAgent") {
1145
+ for (const threadId of receiverThreadIds) {
1146
+ this.codexSubagentThreadWorkItemIds.set(threadId, workItemId);
1147
+ }
1148
+ }
1149
+ const toolExecutionId = materializedToolExecutionId(event);
1150
+ const prompt = nonEmptyString(event.args.prompt);
1151
+ const model = nonEmptyString(event.args.model);
1152
+ const reasoningEffort = nonEmptyString(event.args.reasoningEffort);
1153
+ const codexSubagentOperationName = codexSubagentOperation(codexTool);
1154
+ const workItem = {
1155
+ id: workItemId,
1156
+ runId,
1157
+ ...(parentWorkItemId ? { parentWorkItemId } : {}),
1158
+ ...(ownerChildRunId ? { ownerChildRunId } : {}),
1159
+ kind: codexTool === "wait"
1160
+ ? PlatformAgentWorkItemKindValue.Wait
1161
+ : PlatformAgentWorkItemKindValue.ChildRun,
1162
+ state: codexTool === "wait"
1163
+ ? PlatformAgentWorkItemStateValue.Waiting
1164
+ : PlatformAgentWorkItemStateValue.Running,
1165
+ title: toolDisplayName(event),
1166
+ ...(prompt ? { goal: prompt } : {}),
1167
+ nextAction: codexSubagentNextAction(codexTool),
1168
+ ...(toolExecutionId ? { toolExecutionId } : {}),
1169
+ evidenceRefs: [
1170
+ `codex-tool-call:${event.toolCallId}`,
1171
+ ...receiverThreadIds.map((id) => `codex-thread:${id}`),
1172
+ ...childRunIds.map((id) => `codex-child-run:${id}`),
1173
+ ],
1174
+ completionGate: "codex_collab_tool_completed",
1175
+ payload: this.basePayload({
1176
+ event_type: event.type,
1177
+ codex_tool: codexTool,
1178
+ tool_call_id: event.toolCallId,
1179
+ tool_name: event.toolName,
1180
+ display_name: event.displayName,
1181
+ summary_label: event.summaryLabel,
1182
+ codex_subagent_operation: codexSubagentOperationName,
1183
+ codex_subagent_edge_status: activeCodexSubagentEdgeStatus(codexTool),
1184
+ sender_thread_id: nonEmptyString(event.args.senderThreadId),
1185
+ receiver_thread_ids: receiverThreadIds,
1186
+ receiver_thread_count: receiverThreadIds.length,
1187
+ child_run_ids: childRunIds,
1188
+ codex_work_graph: workGraph,
1189
+ linked_work_item_ids: linkedWorkItemIds,
1190
+ model,
1191
+ reasoning_effort: reasoningEffort,
1192
+ arg_keys: objectKeys(event.args),
1193
+ }),
1194
+ };
1195
+ this.enqueue(async () => {
1196
+ await this.operations.recordWorkItem({ runId, workItem });
1197
+ });
1198
+ if (codexTool === "spawnAgent") {
1199
+ this.recordCodexSubagentDelegation({
1200
+ event,
1201
+ runId,
1202
+ workItemId,
1203
+ parentWorkItemId,
1204
+ ownerChildRunId,
1205
+ receiverThreadIds,
1206
+ childRunIds,
1207
+ linkedWorkItemIds,
1208
+ workGraph,
1209
+ prompt,
1210
+ model,
1211
+ reasoningEffort,
1212
+ });
1213
+ }
1214
+ }
1215
+ recordCodexSubagentDelegation(input) {
1216
+ const fromAgentId = nonEmptyString(this.hostedRunner?.agentId) ?? "maestro";
1217
+ const toAgentId = codexSubagentDelegationTargetAgentId(input.event.args);
1218
+ const requiredCapability = codexSubagentDelegationRequiredCapability(input.event.args, toAgentId);
1219
+ const a2aSkillId = codexSubagentDelegationA2ASkillID(input.event.args, requiredCapability);
1220
+ this.enqueue(async () => {
1221
+ const result = await this.operations.delegateAgent({
1222
+ fromAgentId,
1223
+ ...(toAgentId ? { toAgentId } : {}),
1224
+ ...(requiredCapability ? { requiredCapability } : {}),
1225
+ ...(a2aSkillId ? { a2aSkillId } : {}),
1226
+ contextPayload: this.basePayload({
1227
+ event_type: "codex_subagent_delegation_requested",
1228
+ codex_tool: "spawnAgent",
1229
+ agent_run_id: input.runId,
1230
+ work_item_id: input.workItemId,
1231
+ parent_work_item_id: input.parentWorkItemId,
1232
+ owner_child_run_id: input.ownerChildRunId,
1233
+ tool_call_id: input.event.toolCallId,
1234
+ tool_name: input.event.toolName,
1235
+ display_name: input.event.displayName,
1236
+ summary_label: input.event.summaryLabel,
1237
+ from_agent_id: fromAgentId,
1238
+ to_agent_id: toAgentId,
1239
+ required_capability: requiredCapability,
1240
+ a2a_skill_id: a2aSkillId,
1241
+ sender_thread_id: nonEmptyString(input.event.args.senderThreadId),
1242
+ receiver_thread_ids: input.receiverThreadIds,
1243
+ child_run_ids: input.childRunIds,
1244
+ codex_work_graph: input.workGraph,
1245
+ linked_work_item_ids: input.linkedWorkItemIds,
1246
+ prompt: input.prompt,
1247
+ model: input.model,
1248
+ reasoning_effort: input.reasoningEffort,
1249
+ arg_keys: objectKeys(input.event.args),
1250
+ }),
1251
+ reason: codexSubagentDelegationReason(input.prompt),
1252
+ });
1253
+ const delegationId = result?.delegation?.id;
1254
+ if (delegationId) {
1255
+ this.rememberCodexSubagentDelegation({
1256
+ delegationId,
1257
+ toolCallId: input.event.toolCallId,
1258
+ receiverThreadIds: input.receiverThreadIds,
1259
+ childRunIds: input.childRunIds,
1260
+ });
1261
+ }
1262
+ });
1263
+ }
1264
+ updateCodexSubagentWorkItem(event) {
1265
+ const codexTool = codexSubagentToolName(event.toolName);
1266
+ if (!codexTool) {
1267
+ return;
1268
+ }
1269
+ const runId = nonEmptyString(this.hostedRunner?.agentRunId);
1270
+ if (!this.hostedRunner?.enabled || !runId) {
1271
+ return;
1272
+ }
1273
+ const details = event.result.details &&
1274
+ typeof event.result.details === "object" &&
1275
+ !Array.isArray(event.result.details)
1276
+ ? event.result.details
1277
+ : undefined;
1278
+ const detailWorkGraph = codexSubagentWorkGraph(details);
1279
+ const workGraph = detailWorkGraph ?? this.codexSubagentToolWorkGraphs.get(event.toolCallId);
1280
+ const detailReceiverThreadIds = details
1281
+ ? codexSubagentReceiverThreadIds(details)
1282
+ : [];
1283
+ const receiverThreadIds = detailReceiverThreadIds.length > 0
1284
+ ? detailReceiverThreadIds
1285
+ : (this.codexSubagentReceiverThreadIds.get(event.toolCallId) ?? []);
1286
+ const detailChildRunIds = details
1287
+ ? codexSubagentExplicitChildRunIds(details)
1288
+ : [];
1289
+ const childRunIds = detailChildRunIds.length > 0
1290
+ ? detailChildRunIds
1291
+ : (this.codexSubagentToolChildRunIds.get(event.toolCallId) ??
1292
+ codexSubagentChildRunIds({}, receiverThreadIds));
1293
+ const linkedWorkItemIds = this.codexSubagentLinkedWorkItemIds(receiverThreadIds);
1294
+ this.codexSubagentReceiverThreadIds.delete(event.toolCallId);
1295
+ this.codexSubagentToolChildRunIds.delete(event.toolCallId);
1296
+ this.codexSubagentToolWorkGraphs.delete(event.toolCallId);
1297
+ if (codexTool === "closeAgent" && !event.isError) {
1298
+ for (const threadId of receiverThreadIds) {
1299
+ this.codexSubagentThreadWorkItemIds.delete(threadId);
1300
+ }
1301
+ }
1302
+ const codexSubagentOperationName = codexSubagentOperation(codexTool);
1303
+ const codexSubagentEdgeStatus = terminalCodexSubagentEdgeStatus(codexTool, event.isError);
1304
+ this.enqueue(async () => {
1305
+ const delegationIds = this.codexSubagentDelegationIdsFor(event.toolCallId, receiverThreadIds, childRunIds);
1306
+ const delegationId = delegationIds[0];
1307
+ const delegationEvidenceRefs = delegationIds.map((id) => `agent-registry-delegation:${id}`);
1308
+ const shouldResolveDelegation = delegationIds.length > 0 &&
1309
+ shouldResolveCodexSubagentDelegation(codexTool, event.isError);
1310
+ const toolExecutionId = materializedToolExecutionId(event);
1311
+ let updateError;
1312
+ try {
1313
+ await this.operations.updateWorkItem({
1314
+ runId,
1315
+ workItemId: this.workItemId(event.toolCallId),
1316
+ state: event.isError
1317
+ ? PlatformAgentWorkItemStateValue.Failed
1318
+ : PlatformAgentWorkItemStateValue.Succeeded,
1319
+ ...(toolExecutionId ? { toolExecutionId } : {}),
1320
+ evidenceRefs: [
1321
+ `codex-tool-call:${event.toolCallId}`,
1322
+ ...receiverThreadIds.map((id) => `codex-thread:${id}`),
1323
+ ...childRunIds.map((id) => `codex-child-run:${id}`),
1324
+ ...delegationEvidenceRefs,
1325
+ ],
1326
+ completionGate: event.isError
1327
+ ? "codex_collab_tool_failed"
1328
+ : "codex_collab_tool_completed",
1329
+ payload: this.basePayload({
1330
+ event_type: event.type,
1331
+ codex_tool: codexTool,
1332
+ tool_call_id: event.toolCallId,
1333
+ tool_name: event.toolName,
1334
+ display_name: event.displayName,
1335
+ summary_label: event.summaryLabel,
1336
+ codex_subagent_operation: codexSubagentOperationName,
1337
+ codex_subagent_edge_status: codexSubagentEdgeStatus,
1338
+ error_code: event.errorCode,
1339
+ governed_outcome: event.governedOutcome,
1340
+ result_error: event.isError,
1341
+ receiver_thread_ids: receiverThreadIds,
1342
+ child_run_ids: childRunIds,
1343
+ codex_work_graph: workGraph,
1344
+ linked_work_item_ids: linkedWorkItemIds,
1345
+ delegation_id: delegationId,
1346
+ delegation_ids: delegationIds.length > 0 ? delegationIds : undefined,
1347
+ delegation_resolution: codexTool === "spawnAgent" &&
1348
+ delegationIds.length > 0 &&
1349
+ !event.isError
1350
+ ? "deferred_until_child_terminal_edge"
1351
+ : shouldResolveDelegation
1352
+ ? "resolved_from_child_terminal_edge"
1353
+ : undefined,
1354
+ result_detail_keys: objectKeys(details),
1355
+ }),
1356
+ });
1357
+ }
1358
+ catch (error) {
1359
+ updateError = error;
1360
+ }
1361
+ if (shouldResolveDelegation) {
1362
+ for (const delegationIdToResolve of delegationIds) {
1363
+ try {
1364
+ await this.operations.resolveDelegation({
1365
+ delegationId: delegationIdToResolve,
1366
+ status: event.isError
1367
+ ? PlatformDelegationStatusValue.Failed
1368
+ : PlatformDelegationStatusValue.Completed,
1369
+ resultPayload: this.basePayload({
1370
+ event_type: "codex_subagent_delegation_resolved",
1371
+ codex_tool: codexTool,
1372
+ codex_subagent_operation: codexSubagentOperationName,
1373
+ codex_subagent_edge_status: codexSubagentEdgeStatus,
1374
+ agent_run_id: runId,
1375
+ work_item_id: this.workItemId(event.toolCallId),
1376
+ resolution_tool_call_id: event.toolCallId,
1377
+ tool_call_id: event.toolCallId,
1378
+ tool_name: event.toolName,
1379
+ result_error: event.isError,
1380
+ receiver_thread_ids: receiverThreadIds,
1381
+ child_run_ids: childRunIds,
1382
+ codex_work_graph: workGraph,
1383
+ linked_work_item_ids: linkedWorkItemIds,
1384
+ delegation_ids: delegationIds,
1385
+ result_detail_keys: objectKeys(details),
1386
+ }),
1387
+ errorMessage: event.isError
1388
+ ? (event.errorCode ??
1389
+ event.governedOutcome ??
1390
+ codexSubagentDelegationFailureMessage(codexTool))
1391
+ : undefined,
1392
+ });
1393
+ }
1394
+ catch (error) {
1395
+ logger.warn("Failed to resolve Codex subagent delegation", {
1396
+ error: error instanceof Error ? error.message : String(error),
1397
+ session_id: this.sessionId,
1398
+ agent_run_id: runId,
1399
+ tool_call_id: event.toolCallId,
1400
+ delegation_id: delegationIdToResolve,
1401
+ });
1402
+ }
1403
+ finally {
1404
+ this.clearCodexSubagentDelegationLinks(delegationIdToResolve);
1405
+ }
1406
+ }
1407
+ }
1408
+ if (updateError !== undefined) {
1409
+ throw updateError;
1410
+ }
1411
+ });
1412
+ }
1413
+ rememberCodexSubagentDelegation(input) {
1414
+ this.codexSubagentDelegationIds.set(input.toolCallId, input.delegationId);
1415
+ for (const threadId of input.receiverThreadIds) {
1416
+ this.codexSubagentDelegationIdsByThreadId.set(threadId, input.delegationId);
1417
+ }
1418
+ for (const childRunId of input.childRunIds) {
1419
+ this.codexSubagentDelegationIdsByChildRunId.set(childRunId, input.delegationId);
1420
+ }
1421
+ }
1422
+ codexSubagentDelegationIdsFor(toolCallId, receiverThreadIds, childRunIds) {
1423
+ const ids = new Set();
1424
+ const add = (delegationId) => {
1425
+ if (delegationId) {
1426
+ ids.add(delegationId);
1427
+ }
1428
+ };
1429
+ add(this.codexSubagentDelegationIds.get(toolCallId));
1430
+ for (const childRunId of childRunIds) {
1431
+ add(this.codexSubagentDelegationIdsByChildRunId.get(childRunId));
1432
+ }
1433
+ for (const threadId of receiverThreadIds) {
1434
+ add(this.codexSubagentDelegationIdsByThreadId.get(threadId));
1435
+ }
1436
+ return [...ids];
1437
+ }
1438
+ clearCodexSubagentDelegationLinks(delegationId) {
1439
+ for (const [toolCallId, linkedDelegationId] of this
1440
+ .codexSubagentDelegationIds) {
1441
+ if (linkedDelegationId === delegationId) {
1442
+ this.codexSubagentDelegationIds.delete(toolCallId);
1443
+ }
1444
+ }
1445
+ for (const [threadId, linkedDelegationId] of this
1446
+ .codexSubagentDelegationIdsByThreadId) {
1447
+ if (linkedDelegationId === delegationId) {
1448
+ this.codexSubagentDelegationIdsByThreadId.delete(threadId);
1449
+ }
1450
+ }
1451
+ for (const [childRunId, linkedDelegationId] of this
1452
+ .codexSubagentDelegationIdsByChildRunId) {
1453
+ if (linkedDelegationId === delegationId) {
1454
+ this.codexSubagentDelegationIdsByChildRunId.delete(childRunId);
1455
+ }
1456
+ }
1457
+ }
1458
+ codexSubagentLinkedWorkItemIds(receiverThreadIds) {
1459
+ const linked = receiverThreadIds
1460
+ .map((threadId) => this.codexSubagentThreadWorkItemIds.get(threadId))
1461
+ .filter((id) => Boolean(id));
1462
+ return Array.from(new Set(linked));
1463
+ }
1464
+ recordToolDerivedTaskProgress(event) {
1465
+ const args = this.toolArgsByCallId.get(event.toolCallId);
1466
+ this.toolArgsByCallId.delete(event.toolCallId);
1467
+ if (event.isError) {
1468
+ return;
1469
+ }
1470
+ if (event.toolName === "todo") {
1471
+ this.recordTodoTaskProgress(event, args);
1472
+ return;
1473
+ }
1474
+ if (event.toolName === "background_tasks" || event.toolName === "bash") {
1475
+ this.recordBackgroundTaskProgress(event, args);
1476
+ }
1477
+ }
1478
+ recordTodoTaskProgress(event, args) {
1479
+ const details = isRecord(event.result.details)
1480
+ ? event.result.details
1481
+ : undefined;
1482
+ if (!details) {
1483
+ return;
1484
+ }
1485
+ const rawGoal = nonEmptyString(args?.goal)?.trim();
1486
+ const goal = compactString(rawGoal, 512);
1487
+ const goalHash = rawGoal ? stableShortHash(rawGoal) : undefined;
1488
+ for (const item of recordArray(details.items)) {
1489
+ const id = compactString(item.id, 128);
1490
+ const content = compactString(item.content, 512);
1491
+ if (!id || !content) {
1492
+ continue;
1493
+ }
1494
+ const scopedId = goalScopedTodoId(id, rawGoal);
1495
+ const blockedBy = stringArray(item.blockedBy);
1496
+ const status = todoStatusToTaskStatus(item.status);
1497
+ this.recordTaskProgressEvent({
1498
+ source: "todo",
1499
+ id: scopedId,
1500
+ status,
1501
+ title: content,
1502
+ goal,
1503
+ toolCallId: event.toolCallId,
1504
+ toolExecutionId: materializedToolExecutionId(event),
1505
+ completionGate: "todo_status_projected",
1506
+ nextAction: status === "pending"
1507
+ ? "wait for task to start"
1508
+ : status === "running"
1509
+ ? "complete the active task"
1510
+ : "task completed",
1511
+ blocker: blockedBy.length > 0 ? blockedBy.join(", ") : undefined,
1512
+ payload: {
1513
+ task_id: id,
1514
+ todo_id: id,
1515
+ todo_scope: rawGoal ? "goal" : "session",
1516
+ todo_goal_hash: goalHash,
1517
+ todo_status: compactString(item.status),
1518
+ priority: compactString(item.priority),
1519
+ blocked_by: blockedBy,
1520
+ due: compactString(item.due),
1521
+ },
1522
+ });
1523
+ }
1524
+ }
1525
+ recordBackgroundTaskProgress(event, args) {
1526
+ const details = event.result.details;
1527
+ const candidates = Array.isArray(details)
1528
+ ? recordArray(details)
1529
+ : isRecord(details)
1530
+ ? [details]
1531
+ : [];
1532
+ for (const detail of candidates) {
1533
+ const id = compactString(detail.id ?? detail.taskId, 128);
1534
+ if (!id) {
1535
+ continue;
1536
+ }
1537
+ const statusLabel = compactString(detail.status, 64);
1538
+ if (!statusLabel) {
1539
+ continue;
1540
+ }
1541
+ const command = compactString(detail.command ?? args?.command, 512);
1542
+ const status = backgroundStatusToTaskStatus(statusLabel);
1543
+ this.recordTaskProgressEvent({
1544
+ source: "background",
1545
+ id,
1546
+ status,
1547
+ title: command
1548
+ ? `Background task: ${command}`
1549
+ : `Background task ${id}`,
1550
+ toolCallId: event.toolCallId,
1551
+ toolExecutionId: materializedToolExecutionId(event),
1552
+ completionGate: "background_task_status_projected",
1553
+ nextAction: status === "running"
1554
+ ? "monitor or stop the background task"
1555
+ : "inspect task result if needed",
1556
+ errorMessage: compactString(detail.failureReason, 512),
1557
+ payload: {
1558
+ background_task_id: id,
1559
+ background_task_status: statusLabel,
1560
+ command_summary: command,
1561
+ cwd: compactString(detail.cwd, 512),
1562
+ pid: typeof detail.pid === "number" ? detail.pid : undefined,
1563
+ shell_mode: compactString(detail.shellMode, 64),
1564
+ restart_attempts: finiteNumber(detail.restartAttempts),
1565
+ restart_max_attempts: finiteNumber(detail.restartMaxAttempts),
1566
+ log_truncated: typeof detail.logTruncated === "boolean"
1567
+ ? detail.logTruncated
1568
+ : undefined,
1569
+ monitoring_mode: compactString(detail.monitoringMode, 64),
1570
+ },
1571
+ });
1572
+ }
1573
+ }
1574
+ enqueue(operation) {
1575
+ this.pending = this.pending.then(operation, operation).then(() => { }, (error) => {
1576
+ logger.warn("Failed to record hosted AgentRuntime progress", {
1577
+ error: error instanceof Error ? error.message : String(error),
1578
+ session_id: this.sessionId,
1579
+ agent_run_id: this.hostedRunner?.agentRunId,
1580
+ });
1581
+ });
1582
+ }
1583
+ handles() {
1584
+ const runId = nonEmptyString(this.hostedRunner?.agentRunId);
1585
+ const leaseToken = nonEmptyString(this.hostedRunner?.agentRuntimeLeaseToken);
1586
+ if (!this.hostedRunner?.enabled || !runId || !leaseToken) {
1587
+ return null;
1588
+ }
1589
+ return { runId, leaseToken };
1590
+ }
1591
+ basePayload(values) {
1592
+ return {
1593
+ maestro_session_id: this.sessionId,
1594
+ ...(this.workspaceRoot ? { workspace_root: this.workspaceRoot } : {}),
1595
+ ...(this.hostedRunner?.workspaceId
1596
+ ? { workspace_id: this.hostedRunner.workspaceId }
1597
+ : {}),
1598
+ ...(this.hostedRunner?.runnerSessionId
1599
+ ? { runner_session_id: this.hostedRunner.runnerSessionId }
1600
+ : {}),
1601
+ ...(this.hostedRunner?.ownerInstanceId
1602
+ ? { owner_instance_id: this.hostedRunner.ownerInstanceId }
1603
+ : {}),
1604
+ ...(this.hostedRunner?.agentId
1605
+ ? { agent_id: this.hostedRunner.agentId }
1606
+ : {}),
1607
+ ...(this.hostedRunner?.agentRuntimeWorkerQueue
1608
+ ? { worker_queue: this.hostedRunner.agentRuntimeWorkerQueue }
1609
+ : {}),
1610
+ ...(this.hostedRunner?.agentRuntimeCorrelationPath
1611
+ ? { correlation_path: this.hostedRunner.agentRuntimeCorrelationPath }
1612
+ : {}),
1613
+ ...Object.fromEntries(Object.entries(values).filter(([, value]) => value !== undefined)),
1614
+ };
1615
+ }
1616
+ stepId(kind, id) {
1617
+ return `maestro:${safeIdPart(this.sessionId)}:${kind}:${safeIdPart(id)}`;
1618
+ }
1619
+ taskProgressId(source, id) {
1620
+ return this.stepId(source, id);
1621
+ }
1622
+ toolStepId(toolCallId) {
1623
+ return this.stepId("tool", toolCallId);
1624
+ }
1625
+ workItemId(toolCallId) {
1626
+ return this.stepId("work", toolCallId);
1627
+ }
1628
+ waitId(requestId) {
1629
+ return this.stepId("wait", requestId);
1630
+ }
1631
+ checkpointId(requestId) {
1632
+ return this.stepId("checkpoint", requestId);
1633
+ }
1634
+ resumeEventId(requestId) {
1635
+ return this.stepId("resume", requestId);
1636
+ }
1637
+ costId(turnId) {
1638
+ return this.stepId("cost", turnId);
1639
+ }
1640
+ meterRef(costId) {
1641
+ return `meter://maestro/model-usage/${safeIdPart(costId)}`;
1642
+ }
1643
+ }
1644
+ export function createHostedAgentRuntimeProgressRecorder(options) {
1645
+ if (!options.hostedRunner?.enabled) {
1646
+ return undefined;
1647
+ }
1648
+ return new HostedAgentRuntimeProgressRecorder(options);
1649
+ }
1650
+ //# sourceMappingURL=hosted-agent-runtime-progress.js.map