@evalops/maestro 0.10.50 → 0.10.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/dist/agent/agent-outcome.d.ts +54 -0
  2. package/dist/agent/agent-outcome.d.ts.map +1 -0
  3. package/dist/agent/agent-outcome.js +142 -0
  4. package/dist/agent/agent-outcome.js.map +1 -0
  5. package/dist/agent/agent-resume.d.ts.map +1 -1
  6. package/dist/agent/agent-resume.js +3 -3
  7. package/dist/agent/agent-resume.js.map +1 -1
  8. package/dist/agent/agent-run-summary.d.ts +37 -0
  9. package/dist/agent/agent-run-summary.d.ts.map +1 -0
  10. package/dist/agent/agent-run-summary.js +15 -0
  11. package/dist/agent/agent-run-summary.js.map +1 -0
  12. package/dist/agent/agent-work-board.d.ts +82 -0
  13. package/dist/agent/agent-work-board.d.ts.map +1 -0
  14. package/dist/agent/agent-work-board.js +312 -0
  15. package/dist/agent/agent-work-board.js.map +1 -0
  16. package/dist/agent/auto-compaction.d.ts +7 -2
  17. package/dist/agent/auto-compaction.d.ts.map +1 -1
  18. package/dist/agent/auto-compaction.js +23 -10
  19. package/dist/agent/auto-compaction.js.map +1 -1
  20. package/dist/agent/mission-artifacts.d.ts +62 -0
  21. package/dist/agent/mission-artifacts.d.ts.map +1 -0
  22. package/dist/agent/mission-artifacts.js +438 -0
  23. package/dist/agent/mission-artifacts.js.map +1 -0
  24. package/dist/agent/mission-manifest.d.ts +139 -3
  25. package/dist/agent/mission-manifest.d.ts.map +1 -1
  26. package/dist/agent/mission-manifest.js +549 -3
  27. package/dist/agent/mission-manifest.js.map +1 -1
  28. package/dist/agent/mission-store.d.ts +80 -0
  29. package/dist/agent/mission-store.d.ts.map +1 -0
  30. package/dist/agent/mission-store.js +603 -0
  31. package/dist/agent/mission-store.js.map +1 -0
  32. package/dist/agent/modes.d.ts +2 -2
  33. package/dist/agent/modes.d.ts.map +1 -1
  34. package/dist/agent/modes.js +10 -3
  35. package/dist/agent/modes.js.map +1 -1
  36. package/dist/agent/providers/codex-app-server.d.ts.map +1 -1
  37. package/dist/agent/providers/codex-app-server.js +1 -3
  38. package/dist/agent/providers/codex-app-server.js.map +1 -1
  39. package/dist/agent/providers/google-gemini-cli.js +203 -107
  40. package/dist/agent/providers/google.js +100 -41
  41. package/dist/agent/providers/scripted.d.ts.map +1 -1
  42. package/dist/agent/providers/scripted.js +1 -3
  43. package/dist/agent/providers/scripted.js.map +1 -1
  44. package/dist/agent/providers/validation.d.ts.map +1 -1
  45. package/dist/agent/providers/validation.js +1 -3
  46. package/dist/agent/providers/validation.js.map +1 -1
  47. package/dist/agent/providers/vertex.js +203 -107
  48. package/dist/agent/snapshot-store.d.ts +32 -0
  49. package/dist/agent/snapshot-store.d.ts.map +1 -0
  50. package/dist/agent/snapshot-store.js +195 -0
  51. package/dist/agent/snapshot-store.js.map +1 -0
  52. package/dist/agent/specialist-profiles.d.ts +36 -0
  53. package/dist/agent/specialist-profiles.d.ts.map +1 -0
  54. package/dist/agent/specialist-profiles.js +159 -0
  55. package/dist/agent/specialist-profiles.js.map +1 -0
  56. package/dist/agent/subagent-specs.d.ts +4 -1
  57. package/dist/agent/subagent-specs.d.ts.map +1 -1
  58. package/dist/agent/subagent-specs.js +81 -8
  59. package/dist/agent/subagent-specs.js.map +1 -1
  60. package/dist/agent/swarm/coverage-gate.d.ts +37 -0
  61. package/dist/agent/swarm/coverage-gate.d.ts.map +1 -0
  62. package/dist/agent/swarm/coverage-gate.js +48 -0
  63. package/dist/agent/swarm/coverage-gate.js.map +1 -0
  64. package/dist/agent/swarm/executor.d.ts +1 -0
  65. package/dist/agent/swarm/executor.d.ts.map +1 -1
  66. package/dist/agent/swarm/executor.js +151 -15
  67. package/dist/agent/swarm/executor.js.map +1 -1
  68. package/dist/agent/swarm/orchestrator-prompt.d.ts +25 -0
  69. package/dist/agent/swarm/orchestrator-prompt.d.ts.map +1 -0
  70. package/dist/agent/swarm/orchestrator-prompt.js +48 -0
  71. package/dist/agent/swarm/orchestrator-prompt.js.map +1 -0
  72. package/dist/agent/swarm/plan-parser.d.ts.map +1 -1
  73. package/dist/agent/swarm/plan-parser.js +27 -2
  74. package/dist/agent/swarm/plan-parser.js.map +1 -1
  75. package/dist/agent/swarm/types.d.ts +17 -0
  76. package/dist/agent/swarm/types.d.ts.map +1 -1
  77. package/dist/agent/swarm/types.js.map +1 -1
  78. package/dist/agent/swarm/validation-directive.d.ts +21 -0
  79. package/dist/agent/swarm/validation-directive.d.ts.map +1 -0
  80. package/dist/agent/swarm/validation-directive.js +25 -0
  81. package/dist/agent/swarm/validation-directive.js.map +1 -0
  82. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  83. package/dist/agent/transport/tool-execution-bridge.js +4 -1
  84. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  85. package/dist/api/enterprise-routes.d.ts.map +1 -1
  86. package/dist/api/enterprise-routes.js +87 -10
  87. package/dist/api/enterprise-routes.js.map +1 -1
  88. package/dist/api/org-settings-merge.d.ts +12 -0
  89. package/dist/api/org-settings-merge.d.ts.map +1 -0
  90. package/dist/api/org-settings-merge.js +38 -0
  91. package/dist/api/org-settings-merge.js.map +1 -0
  92. package/dist/api/user-settings-merge.d.ts +16 -0
  93. package/dist/api/user-settings-merge.d.ts.map +1 -0
  94. package/dist/api/user-settings-merge.js +37 -0
  95. package/dist/api/user-settings-merge.js.map +1 -0
  96. package/dist/app-server/daemon-lifecycle-api.d.ts.map +1 -1
  97. package/dist/app-server/daemon-lifecycle-api.js +1 -3
  98. package/dist/app-server/daemon-lifecycle-api.js.map +1 -1
  99. package/dist/app-server/external-agent-import-api.d.ts.map +1 -1
  100. package/dist/app-server/external-agent-import-api.js +1 -3
  101. package/dist/app-server/external-agent-import-api.js.map +1 -1
  102. package/dist/app-server/network-governance-api.d.ts.map +1 -1
  103. package/dist/app-server/network-governance-api.js +1 -3
  104. package/dist/app-server/network-governance-api.js.map +1 -1
  105. package/dist/app-server/plugin-bundle-api.d.ts.map +1 -1
  106. package/dist/app-server/plugin-bundle-api.js +1 -3
  107. package/dist/app-server/plugin-bundle-api.js.map +1 -1
  108. package/dist/app-server/policy-control-api.d.ts.map +1 -1
  109. package/dist/app-server/policy-control-api.js +1 -3
  110. package/dist/app-server/policy-control-api.js.map +1 -1
  111. package/dist/app-server/protocol-modes-api.d.ts.map +1 -1
  112. package/dist/app-server/protocol-modes-api.js +1 -3
  113. package/dist/app-server/protocol-modes-api.js.map +1 -1
  114. package/dist/cli/args.d.ts +2 -0
  115. package/dist/cli/args.d.ts.map +1 -1
  116. package/dist/cli/args.js +15 -0
  117. package/dist/cli/args.js.map +1 -1
  118. package/dist/cli/commands/a2a.d.ts.map +1 -1
  119. package/dist/cli/commands/a2a.js +1 -3
  120. package/dist/cli/commands/a2a.js.map +1 -1
  121. package/dist/cli/commands/agents.d.ts +4 -0
  122. package/dist/cli/commands/agents.d.ts.map +1 -1
  123. package/dist/cli/commands/agents.js +149 -0
  124. package/dist/cli/commands/agents.js.map +1 -1
  125. package/dist/cli/commands/mission.d.ts +4 -0
  126. package/dist/cli/commands/mission.d.ts.map +1 -0
  127. package/dist/cli/commands/mission.js +196 -0
  128. package/dist/cli/commands/mission.js.map +1 -0
  129. package/dist/cli/commands/value.d.ts +10 -0
  130. package/dist/cli/commands/value.d.ts.map +1 -0
  131. package/dist/cli/commands/value.js +33 -0
  132. package/dist/cli/commands/value.js.map +1 -0
  133. package/dist/cli/headless-protocol.d.ts.map +1 -1
  134. package/dist/cli/headless-protocol.js +1 -3
  135. package/dist/cli/headless-protocol.js.map +1 -1
  136. package/dist/cli/help.d.ts.map +1 -1
  137. package/dist/cli/help.js +10 -0
  138. package/dist/cli/help.js.map +1 -1
  139. package/dist/cli/system-prompt.d.ts.map +1 -1
  140. package/dist/cli/system-prompt.js +38 -7
  141. package/dist/cli/system-prompt.js.map +1 -1
  142. package/dist/cli-runtime.js +7756 -2800
  143. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
  144. package/dist/cli-tui/client-tools/client-tool-controller.js +1 -3
  145. package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
  146. package/dist/cli-tui/commands/undo-handlers.d.ts.map +1 -1
  147. package/dist/cli-tui/commands/undo-handlers.js +7 -2
  148. package/dist/cli-tui/commands/undo-handlers.js.map +1 -1
  149. package/dist/cli-tui/tui-renderer/skills-controller.d.ts +3 -0
  150. package/dist/cli-tui/tui-renderer/skills-controller.d.ts.map +1 -1
  151. package/dist/cli-tui/tui-renderer/skills-controller.js +77 -33
  152. package/dist/cli-tui/tui-renderer/skills-controller.js.map +1 -1
  153. package/dist/codex/app-server-client.d.ts.map +1 -1
  154. package/dist/codex/app-server-client.js +1 -3
  155. package/dist/codex/app-server-client.js.map +1 -1
  156. package/dist/codex/compatibility.d.ts.map +1 -1
  157. package/dist/codex/compatibility.js +1 -3
  158. package/dist/codex/compatibility.js.map +1 -1
  159. package/dist/codex/subagent-dispatch-table.d.ts +8 -0
  160. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -1
  161. package/dist/codex/subagent-dispatch-table.js +23 -0
  162. package/dist/codex/subagent-dispatch-table.js.map +1 -1
  163. package/dist/context/manifest.d.ts.map +1 -1
  164. package/dist/context/manifest.js +1 -3
  165. package/dist/context/manifest.js.map +1 -1
  166. package/dist/conversation/render-model.d.ts +0 -36
  167. package/dist/conversation/render-model.d.ts.map +1 -1
  168. package/dist/conversation/render-model.js +1 -3
  169. package/dist/conversation/render-model.js.map +1 -1
  170. package/dist/customer-value/ambient-learning.d.ts +75 -0
  171. package/dist/customer-value/ambient-learning.d.ts.map +1 -0
  172. package/dist/customer-value/ambient-learning.js +472 -0
  173. package/dist/customer-value/ambient-learning.js.map +1 -0
  174. package/dist/customer-value/internal-helpers.d.ts +13 -0
  175. package/dist/customer-value/internal-helpers.d.ts.map +1 -0
  176. package/dist/customer-value/internal-helpers.js +70 -0
  177. package/dist/customer-value/internal-helpers.js.map +1 -0
  178. package/dist/customer-value/report.d.ts +282 -0
  179. package/dist/customer-value/report.d.ts.map +1 -0
  180. package/dist/customer-value/report.js +2085 -0
  181. package/dist/customer-value/report.js.map +1 -0
  182. package/dist/db/schema.d.ts +5 -1
  183. package/dist/db/schema.d.ts.map +1 -1
  184. package/dist/db/schema.js.map +1 -1
  185. package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
  186. package/dist/evalops/agent-bootstrap.js +1 -3
  187. package/dist/evalops/agent-bootstrap.js.map +1 -1
  188. package/dist/evalops/agent-mcp-metadata.d.ts.map +1 -1
  189. package/dist/evalops/agent-mcp-metadata.js +1 -3
  190. package/dist/evalops/agent-mcp-metadata.js.map +1 -1
  191. package/dist/index.d.ts +1 -0
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +1 -0
  194. package/dist/index.js.map +1 -1
  195. package/dist/installers/maestro-review-workflow.d.ts +38 -0
  196. package/dist/installers/maestro-review-workflow.d.ts.map +1 -0
  197. package/dist/installers/maestro-review-workflow.js +163 -0
  198. package/dist/installers/maestro-review-workflow.js.map +1 -0
  199. package/dist/load-env.d.ts.map +1 -1
  200. package/dist/load-env.js +2 -1
  201. package/dist/load-env.js.map +1 -1
  202. package/dist/main.d.ts.map +1 -1
  203. package/dist/main.js +92 -3
  204. package/dist/main.js.map +1 -1
  205. package/dist/mcp/config.d.ts.map +1 -1
  206. package/dist/mcp/config.js +1 -3
  207. package/dist/mcp/config.js.map +1 -1
  208. package/dist/mcp/elicitation.d.ts.map +1 -1
  209. package/dist/mcp/elicitation.js +1 -3
  210. package/dist/mcp/elicitation.js.map +1 -1
  211. package/dist/mcp/official-registry.d.ts.map +1 -1
  212. package/dist/mcp/official-registry.js +1 -3
  213. package/dist/mcp/official-registry.js.map +1 -1
  214. package/dist/mcp/workspace-trust.d.ts.map +1 -1
  215. package/dist/mcp/workspace-trust.js +1 -3
  216. package/dist/mcp/workspace-trust.js.map +1 -1
  217. package/dist/memory/service-client.d.ts.map +1 -1
  218. package/dist/memory/service-client.js +1 -3
  219. package/dist/memory/service-client.js.map +1 -1
  220. package/dist/models/config-loader.d.ts.map +1 -1
  221. package/dist/models/config-loader.js +1 -3
  222. package/dist/models/config-loader.js.map +1 -1
  223. package/dist/node_modules/@evalops/contracts/dist/index.d.ts +1 -0
  224. package/dist/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  225. package/dist/node_modules/@evalops/contracts/dist/index.js +1 -0
  226. package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  227. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts +61 -0
  228. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts.map +1 -0
  229. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js +183 -0
  230. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js.map +1 -0
  231. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  232. package/dist/node_modules/@evalops/tui/package.json +1 -1
  233. package/dist/oauth/connectors.d.ts.map +1 -1
  234. package/dist/oauth/connectors.js +1 -3
  235. package/dist/oauth/connectors.js.map +1 -1
  236. package/dist/oauth/evalops.d.ts.map +1 -1
  237. package/dist/oauth/evalops.js +1 -3
  238. package/dist/oauth/evalops.js.map +1 -1
  239. package/dist/platform/a2a-client.d.ts.map +1 -1
  240. package/dist/platform/a2a-client.js +1 -3
  241. package/dist/platform/a2a-client.js.map +1 -1
  242. package/dist/platform/a2a-cockpit.d.ts +1 -0
  243. package/dist/platform/a2a-cockpit.d.ts.map +1 -1
  244. package/dist/platform/a2a-cockpit.js +42 -11
  245. package/dist/platform/a2a-cockpit.js.map +1 -1
  246. package/dist/platform/a2a-completion-audit.d.ts +1 -1
  247. package/dist/platform/a2a-completion-audit.d.ts.map +1 -1
  248. package/dist/platform/a2a-completion-audit.js +7 -11
  249. package/dist/platform/a2a-completion-audit.js.map +1 -1
  250. package/dist/platform/a2a-maestro-peer.js +16 -0
  251. package/dist/platform/a2a-maestro-peer.js.map +1 -1
  252. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -1
  253. package/dist/platform/a2a-peer-pairing.js +1 -3
  254. package/dist/platform/a2a-peer-pairing.js.map +1 -1
  255. package/dist/platform/a2a-peer-registry.d.ts.map +1 -1
  256. package/dist/platform/a2a-peer-registry.js +1 -3
  257. package/dist/platform/a2a-peer-registry.js.map +1 -1
  258. package/dist/platform/a2a-task-ledger.d.ts +20 -0
  259. package/dist/platform/a2a-task-ledger.d.ts.map +1 -1
  260. package/dist/platform/a2a-task-ledger.js +207 -11
  261. package/dist/platform/a2a-task-ledger.js.map +1 -1
  262. package/dist/platform/a2a-work-graph.d.ts.map +1 -1
  263. package/dist/platform/a2a-work-graph.js +1 -3
  264. package/dist/platform/a2a-work-graph.js.map +1 -1
  265. package/dist/platform/operating-layer.d.ts.map +1 -1
  266. package/dist/platform/operating-layer.js +14 -8
  267. package/dist/platform/operating-layer.js.map +1 -1
  268. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  269. package/dist/platform/tool-execution-client.js +19 -2
  270. package/dist/platform/tool-execution-client.js.map +1 -1
  271. package/dist/providers/auth.d.ts.map +1 -1
  272. package/dist/providers/auth.js +1 -3
  273. package/dist/providers/auth.js.map +1 -1
  274. package/dist/runtime/env.d.ts +9 -1
  275. package/dist/runtime/env.d.ts.map +1 -1
  276. package/dist/runtime/env.js +63 -1
  277. package/dist/runtime/env.js.map +1 -1
  278. package/dist/safety/policy.d.ts.map +1 -1
  279. package/dist/safety/policy.js +1 -4
  280. package/dist/safety/policy.js.map +1 -1
  281. package/dist/sandbox/docker-sandbox.d.ts.map +1 -1
  282. package/dist/sandbox/docker-sandbox.js +6 -1
  283. package/dist/sandbox/docker-sandbox.js.map +1 -1
  284. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  285. package/dist/server/handlers/hosted-runner-drain.js +1 -3
  286. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  287. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
  288. package/dist/server/handlers/platform-a2a-push.js +53 -2
  289. package/dist/server/handlers/platform-a2a-push.js.map +1 -1
  290. package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -1
  291. package/dist/server/handlers/runtime-app-server-ws.js +1 -3
  292. package/dist/server/handlers/runtime-app-server-ws.js.map +1 -1
  293. package/dist/server/headless-runtime-service.d.ts +16 -0
  294. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  295. package/dist/server/headless-runtime-service.js +232 -206
  296. package/dist/server/headless-runtime-service.js.map +1 -1
  297. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -1
  298. package/dist/server/hosted-agent-runtime-progress.js +12 -3
  299. package/dist/server/hosted-agent-runtime-progress.js.map +1 -1
  300. package/dist/server/pending-request-payload.d.ts.map +1 -1
  301. package/dist/server/pending-request-payload.js +1 -3
  302. package/dist/server/pending-request-payload.js.map +1 -1
  303. package/dist/server/route-auth.d.ts.map +1 -1
  304. package/dist/server/route-auth.js +2 -0
  305. package/dist/server/route-auth.js.map +1 -1
  306. package/dist/server/session-serialization.d.ts.map +1 -1
  307. package/dist/server/session-serialization.js +1 -3
  308. package/dist/server/session-serialization.js.map +1 -1
  309. package/dist/services/compliance/normalize.d.ts.map +1 -1
  310. package/dist/services/compliance/normalize.js +1 -3
  311. package/dist/services/compliance/normalize.js.map +1 -1
  312. package/dist/services/intelligent-router/normalize.d.ts.map +1 -1
  313. package/dist/services/intelligent-router/normalize.js +1 -3
  314. package/dist/services/intelligent-router/normalize.js.map +1 -1
  315. package/dist/services/revenue-attribution/normalize.d.ts.map +1 -1
  316. package/dist/services/revenue-attribution/normalize.js +1 -3
  317. package/dist/services/revenue-attribution/normalize.js.map +1 -1
  318. package/dist/services/traces/normalize.d.ts.map +1 -1
  319. package/dist/services/traces/normalize.js +1 -3
  320. package/dist/services/traces/normalize.js.map +1 -1
  321. package/dist/services/workspace-config/normalize.d.ts.map +1 -1
  322. package/dist/services/workspace-config/normalize.js +1 -3
  323. package/dist/services/workspace-config/normalize.js.map +1 -1
  324. package/dist/skills/composer.d.ts.map +1 -1
  325. package/dist/skills/composer.js +13 -1
  326. package/dist/skills/composer.js.map +1 -1
  327. package/dist/skills/index.d.ts +1 -0
  328. package/dist/skills/index.d.ts.map +1 -1
  329. package/dist/skills/index.js +1 -0
  330. package/dist/skills/index.js.map +1 -1
  331. package/dist/skills/learned-guidelines.d.ts +33 -0
  332. package/dist/skills/learned-guidelines.d.ts.map +1 -0
  333. package/dist/skills/learned-guidelines.js +291 -0
  334. package/dist/skills/learned-guidelines.js.map +1 -0
  335. package/dist/skills/linter.d.ts.map +1 -1
  336. package/dist/skills/linter.js +1 -3
  337. package/dist/skills/linter.js.map +1 -1
  338. package/dist/skills/runtime-activation.d.ts +1 -0
  339. package/dist/skills/runtime-activation.d.ts.map +1 -1
  340. package/dist/skills/runtime-activation.js +2 -3
  341. package/dist/skills/runtime-activation.js.map +1 -1
  342. package/dist/skills/tool.d.ts.map +1 -1
  343. package/dist/skills/tool.js +26 -21
  344. package/dist/skills/tool.js.map +1 -1
  345. package/dist/skills/trust-cache.d.ts +7 -0
  346. package/dist/skills/trust-cache.d.ts.map +1 -1
  347. package/dist/skills/trust-cache.js +16 -0
  348. package/dist/skills/trust-cache.js.map +1 -1
  349. package/dist/telemetry/agent-workforce-native-event.d.ts.map +1 -1
  350. package/dist/telemetry/agent-workforce-native-event.js +1 -3
  351. package/dist/telemetry/agent-workforce-native-event.js.map +1 -1
  352. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  353. package/dist/telemetry/maestro-event-bus.js +42 -81
  354. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  355. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  356. package/dist/telemetry/maestro-platform-replay-fixture.js +1 -3
  357. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  358. package/dist/telemetry.d.ts.map +1 -1
  359. package/dist/telemetry.js +54 -43
  360. package/dist/telemetry.js.map +1 -1
  361. package/dist/theme/theme-loader.d.ts.map +1 -1
  362. package/dist/theme/theme-loader.js +1 -3
  363. package/dist/theme/theme-loader.js.map +1 -1
  364. package/dist/tools/apply-patch.d.ts.map +1 -1
  365. package/dist/tools/apply-patch.js +76 -8
  366. package/dist/tools/apply-patch.js.map +1 -1
  367. package/dist/tools/diff-preview.d.ts.map +1 -1
  368. package/dist/tools/diff-preview.js +10 -1
  369. package/dist/tools/diff-preview.js.map +1 -1
  370. package/dist/tools/edit.d.ts.map +1 -1
  371. package/dist/tools/edit.js +17 -0
  372. package/dist/tools/edit.js.map +1 -1
  373. package/dist/tools/write.d.ts.map +1 -1
  374. package/dist/tools/write.js +9 -0
  375. package/dist/tools/write.js.map +1 -1
  376. package/dist/undo/tracker.d.ts +5 -0
  377. package/dist/undo/tracker.d.ts.map +1 -1
  378. package/dist/undo/tracker.js +13 -0
  379. package/dist/undo/tracker.js.map +1 -1
  380. package/dist/utils/fs.d.ts +1 -1
  381. package/dist/utils/fs.d.ts.map +1 -1
  382. package/dist/utils/fs.js +29 -2
  383. package/dist/utils/fs.js.map +1 -1
  384. package/dist/utils/git-stash.d.ts.map +1 -1
  385. package/dist/utils/git-stash.js +15 -8
  386. package/dist/utils/git-stash.js.map +1 -1
  387. package/dist/utils/json.d.ts +11 -0
  388. package/dist/utils/json.d.ts.map +1 -1
  389. package/dist/utils/json.js +9 -0
  390. package/dist/utils/json.js.map +1 -1
  391. package/dist/utils/shell-env.d.ts.map +1 -1
  392. package/dist/utils/shell-env.js +2 -0
  393. package/dist/utils/shell-env.js.map +1 -1
  394. package/dist/utils/url-extractor-git.d.ts +26 -0
  395. package/dist/utils/url-extractor-git.d.ts.map +1 -0
  396. package/dist/utils/url-extractor-git.js +259 -0
  397. package/dist/utils/url-extractor-git.js.map +1 -0
  398. package/dist/utils/url-extractor.d.ts.map +1 -1
  399. package/dist/utils/url-extractor.js +23 -251
  400. package/dist/utils/url-extractor.js.map +1 -1
  401. package/dist/version.json +2 -2
  402. package/package.json +310 -306
  403. package/skills/incident-triage/SKILL.md +19 -1
  404. package/skills/install-code-review/SKILL.md +69 -0
  405. package/skills/security-review/SKILL.md +68 -0
  406. package/skills/security-review/reference/rubric.md +85 -0
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Swarm orchestrator prompt
3
+ *
4
+ * The orchestrator is the agent that plans a swarm and delegates to workers.
5
+ * Its posture is "architect, not builder": it designs the system of workers,
6
+ * tracks every requirement, and steers the mission to success — it does not
7
+ * reach past its workers to implement features itself.
8
+ *
9
+ * This prompt is paired with the coverage gate (see ./coverage-gate.ts): the
10
+ * orchestrator is expected to produce a validation contract whose assertions
11
+ * are each claimed by exactly one feature before any worker is dispatched.
12
+ */
13
+ export interface SwarmOrchestratorPromptOptions {
14
+ /**
15
+ * When true, the mission has explicitly opted out of the end-to-end
16
+ * validation default and workers may use mocks/stubs for unavailable
17
+ * integrations.
18
+ */
19
+ mocksAllowed?: boolean;
20
+ }
21
+ /**
22
+ * Build the orchestrator system prompt for a swarm mission.
23
+ */
24
+ export declare function buildSwarmOrchestratorPrompt(options?: SwarmOrchestratorPromptOptions): string;
25
+ //# sourceMappingURL=orchestrator-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator-prompt.d.ts","sourceRoot":"","sources":["../../../src/agent/swarm/orchestrator-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,8BAA8B;IAC9C;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AA4BD;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,OAAO,GAAE,8BAAmC,GAC1C,MAAM,CAUR"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Swarm orchestrator prompt
3
+ *
4
+ * The orchestrator is the agent that plans a swarm and delegates to workers.
5
+ * Its posture is "architect, not builder": it designs the system of workers,
6
+ * tracks every requirement, and steers the mission to success — it does not
7
+ * reach past its workers to implement features itself.
8
+ *
9
+ * This prompt is paired with the coverage gate (see ./coverage-gate.ts): the
10
+ * orchestrator is expected to produce a validation contract whose assertions
11
+ * are each claimed by exactly one feature before any worker is dispatched.
12
+ */
13
+ const ARCHITECT_MINDSET = `# Role & Mindset
14
+
15
+ You are the architect and orchestrator of a multi-worker swarm. You design the architecture, plan the work, decompose it into features, and steer the workers to success.
16
+
17
+ You do not build directly — you design the system that builds, and provide every worker with the context, files, and acceptance criteria it needs. Reach for a worker, not your own edit tools, to implement a feature.`;
18
+ const REQUIREMENT_TRACKING = `## Requirement Tracking
19
+
20
+ Every requirement the user states — even casually, even once — must be captured and tracked.
21
+
22
+ - Maintain an explicit inventory of all stated requirements before you decompose work.
23
+ - If the user names a specific package, library, SDK, tool, or version, treat it as a requirement, not a suggestion. Do not silently substitute an alternative; if you believe a substitution is warranted, surface it and get agreement first.
24
+ - Echo back the full set of captured requirements at least once before dispatching workers, so the user can correct omissions.`;
25
+ const VALIDATION_DEFAULT = `## End-to-End Validation Is the Default
26
+
27
+ All functionality must be validated end-to-end against real integrations (real services, real data, real auth) before the mission is declared done. Mocks and stubs are a conscious opt-out, not the default, and are acceptable only when the user explicitly requests them or a real integration is genuinely impossible in this environment. If end-to-end validation is blocked, treat it as a setup problem to solve with the user during planning — do not silently skip it.`;
28
+ const MOCKS_ALLOWED_NOTE = `## Validation Posture: Mocks Permitted
29
+
30
+ This mission has explicitly opted into using mocks/stubs where a real integration is unavailable. Still prefer the real execution path wherever it exists, and have each worker state exactly what was exercised with a mock rather than for real.`;
31
+ const COVERAGE_GATE_CONTRACT = `## Coverage Contract
32
+
33
+ Before any worker is dispatched, define a validation contract — the mission's exhaustive definition of done as a set of behavioral assertions — and decompose the work so that every assertion is claimed by exactly one feature. The coverage gate refuses to start work until every assertion is claimed exactly once and no feature references an unknown assertion. An uncovered assertion means the plan is incomplete, not that the gate is wrong.`;
34
+ /**
35
+ * Build the orchestrator system prompt for a swarm mission.
36
+ */
37
+ export function buildSwarmOrchestratorPrompt(options = {}) {
38
+ const validationSection = options.mocksAllowed
39
+ ? MOCKS_ALLOWED_NOTE
40
+ : VALIDATION_DEFAULT;
41
+ return [
42
+ ARCHITECT_MINDSET,
43
+ REQUIREMENT_TRACKING,
44
+ validationSection,
45
+ COVERAGE_GATE_CONTRACT,
46
+ ].join("\n\n");
47
+ }
48
+ //# sourceMappingURL=orchestrator-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator-prompt.js","sourceRoot":"","sources":["../../../src/agent/swarm/orchestrator-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,iBAAiB,GAAG;;;;wNAI8L,CAAC;AAEzN,MAAM,oBAAoB,GAAG;;;;;;+HAMkG,CAAC;AAEhI,MAAM,kBAAkB,GAAG;;mdAEwb,CAAC;AAEpd,MAAM,kBAAkB,GAAG;;mPAEwN,CAAC;AAEpP,MAAM,sBAAsB,GAAG;;ybAE0Z,CAAC;AAE1b;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC3C,UAA0C,EAAE;IAE5C,MAAM,iBAAiB,GAAG,OAAO,CAAC,YAAY;QAC7C,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,kBAAkB,CAAC;IACtB,OAAO;QACN,iBAAiB;QACjB,oBAAoB;QACpB,iBAAiB;QACjB,sBAAsB;KACtB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChB,CAAC","sourcesContent":["/**\n * Swarm orchestrator prompt\n *\n * The orchestrator is the agent that plans a swarm and delegates to workers.\n * Its posture is \"architect, not builder\": it designs the system of workers,\n * tracks every requirement, and steers the mission to success — it does not\n * reach past its workers to implement features itself.\n *\n * This prompt is paired with the coverage gate (see ./coverage-gate.ts): the\n * orchestrator is expected to produce a validation contract whose assertions\n * are each claimed by exactly one feature before any worker is dispatched.\n */\n\nexport interface SwarmOrchestratorPromptOptions {\n\t/**\n\t * When true, the mission has explicitly opted out of the end-to-end\n\t * validation default and workers may use mocks/stubs for unavailable\n\t * integrations.\n\t */\n\tmocksAllowed?: boolean;\n}\n\nconst ARCHITECT_MINDSET = `# Role & Mindset\n\nYou are the architect and orchestrator of a multi-worker swarm. You design the architecture, plan the work, decompose it into features, and steer the workers to success.\n\nYou do not build directly — you design the system that builds, and provide every worker with the context, files, and acceptance criteria it needs. Reach for a worker, not your own edit tools, to implement a feature.`;\n\nconst REQUIREMENT_TRACKING = `## Requirement Tracking\n\nEvery requirement the user states — even casually, even once — must be captured and tracked.\n\n- Maintain an explicit inventory of all stated requirements before you decompose work.\n- If the user names a specific package, library, SDK, tool, or version, treat it as a requirement, not a suggestion. Do not silently substitute an alternative; if you believe a substitution is warranted, surface it and get agreement first.\n- Echo back the full set of captured requirements at least once before dispatching workers, so the user can correct omissions.`;\n\nconst VALIDATION_DEFAULT = `## End-to-End Validation Is the Default\n\nAll functionality must be validated end-to-end against real integrations (real services, real data, real auth) before the mission is declared done. Mocks and stubs are a conscious opt-out, not the default, and are acceptable only when the user explicitly requests them or a real integration is genuinely impossible in this environment. If end-to-end validation is blocked, treat it as a setup problem to solve with the user during planning — do not silently skip it.`;\n\nconst MOCKS_ALLOWED_NOTE = `## Validation Posture: Mocks Permitted\n\nThis mission has explicitly opted into using mocks/stubs where a real integration is unavailable. Still prefer the real execution path wherever it exists, and have each worker state exactly what was exercised with a mock rather than for real.`;\n\nconst COVERAGE_GATE_CONTRACT = `## Coverage Contract\n\nBefore any worker is dispatched, define a validation contract — the mission's exhaustive definition of done as a set of behavioral assertions — and decompose the work so that every assertion is claimed by exactly one feature. The coverage gate refuses to start work until every assertion is claimed exactly once and no feature references an unknown assertion. An uncovered assertion means the plan is incomplete, not that the gate is wrong.`;\n\n/**\n * Build the orchestrator system prompt for a swarm mission.\n */\nexport function buildSwarmOrchestratorPrompt(\n\toptions: SwarmOrchestratorPromptOptions = {},\n): string {\n\tconst validationSection = options.mocksAllowed\n\t\t? MOCKS_ALLOWED_NOTE\n\t\t: VALIDATION_DEFAULT;\n\treturn [\n\t\tARCHITECT_MINDSET,\n\t\tREQUIREMENT_TRACKING,\n\t\tvalidationSection,\n\t\tCOVERAGE_GATE_CONTRACT,\n\t].join(\"\\n\\n\");\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-parser.d.ts","sourceRoot":"","sources":["../../../src/agent/swarm/plan-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAcxD;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAG1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA+H5D;AA2ID;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAc1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,EAAE,GAC1B,MAAM,CAWR"}
1
+ {"version":3,"file":"plan-parser.d.ts","sourceRoot":"","sources":["../../../src/agent/swarm/plan-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAmBxD;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAG1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA+H5D;AAuKD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAc1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,EAAE,GAC1B,MAAM,CAWR"}
@@ -8,6 +8,8 @@ import { randomUUID } from "node:crypto";
8
8
  import { readFileSync } from "node:fs";
9
9
  import { createLogger } from "../../utils/logger.js";
10
10
  const logger = createLogger("agent:swarm:plan-parser");
11
+ const MOCKS_ALLOWED_MARKER = /\s*\[(?:mocks\s+allowed|allow(?:ed)?\s+mocks|allow-mocks|mocksAllowed\s*=\s*true|mocks\s*=\s*true)\]/giu;
12
+ const MOCKS_STRICT_MARKER = /\s*\[(?:mocks\s+disallowed|no\s+mocks|mocksAllowed\s*=\s*false|mocks\s*=\s*false)\]/giu;
11
13
  /**
12
14
  * Parse a plan file into structured tasks.
13
15
  */
@@ -170,18 +172,41 @@ function isLikelyTask(text) {
170
172
  * Convert a raw task to a SwarmTask.
171
173
  */
172
174
  function convertToSwarmTask(raw, index, allTasks) {
175
+ const metadata = extractTaskMetadata(raw.text);
173
176
  const task = {
174
177
  id: `task-${index + 1}-${randomUUID().slice(0, 8)}`,
175
- prompt: raw.text,
178
+ prompt: metadata.text,
176
179
  priority: allTasks.length - index, // Earlier tasks have higher priority
177
180
  };
181
+ if (metadata.mocksAllowed !== undefined) {
182
+ task.mocksAllowed = metadata.mocksAllowed;
183
+ }
178
184
  // Extract file references from the task text
179
- const files = extractFileReferences(raw.text);
185
+ const files = extractFileReferences(metadata.text);
180
186
  if (files.length > 0) {
181
187
  task.files = files;
182
188
  }
183
189
  return task;
184
190
  }
191
+ function extractTaskMetadata(text) {
192
+ const allowsMocks = MOCKS_ALLOWED_MARKER.test(text);
193
+ MOCKS_ALLOWED_MARKER.lastIndex = 0;
194
+ const explicitlyStrict = MOCKS_STRICT_MARKER.test(text);
195
+ MOCKS_STRICT_MARKER.lastIndex = 0;
196
+ const cleanedText = text
197
+ .replace(MOCKS_ALLOWED_MARKER, "")
198
+ .replace(MOCKS_STRICT_MARKER, "")
199
+ .replace(/\s{2,}/gu, " ")
200
+ .trim();
201
+ return {
202
+ text: cleanedText,
203
+ ...(explicitlyStrict
204
+ ? { mocksAllowed: false }
205
+ : allowsMocks
206
+ ? { mocksAllowed: true }
207
+ : {}),
208
+ };
209
+ }
185
210
  /**
186
211
  * Extract file path references from task text.
187
212
  */
@@ -1 +1 @@
1
- {"version":3,"file":"plan-parser.js","sourceRoot":"","sources":["../../../src/agent/swarm/plan-parser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plan Parser\n *\n * Parses markdown plan files into structured tasks for swarm execution.\n * Supports various markdown formats for task lists.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { createLogger } from \"../../utils/logger.js\";\nimport type { ParsedPlan, SwarmTask } from \"./types.js\";\n\nconst logger = createLogger(\"agent:swarm:plan-parser\");\n\n/**\n * Task item extracted from markdown.\n */\ninterface RawTask {\n\ttext: string;\n\tcompleted: boolean;\n\tindent: number;\n\tlineNumber: number;\n}\n\n/**\n * Parse a plan file into structured tasks.\n */\nexport function parsePlanFile(filePath: string): ParsedPlan {\n\tconst content = readFileSync(filePath, \"utf-8\");\n\treturn parsePlanContent(content);\n}\n\n/**\n * Parse plan content (markdown string) into structured tasks.\n */\nexport function parsePlanContent(content: string): ParsedPlan {\n\tconst lines = content.split(\"\\n\");\n\tconst rawTasks: RawTask[] = [];\n\tlet title = \"Implementation Plan\";\n\n\t// Extract title from first H1\n\tfor (const line of lines) {\n\t\tconst h1Match = line.match(/^#\\s+(?:Plan:\\s*)?(.+)$/);\n\t\tif (h1Match?.[1]) {\n\t\t\ttitle = h1Match[1].trim();\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Extract tasks from checkbox items and numbered lists\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tconst line = lines[i];\n\t\tif (!line) continue;\n\n\t\t// Match checkbox items: - [ ] task or - [x] task\n\t\tconst checkboxMatch = line.match(/^(\\s*)[-*]\\s*\\[([ xX])\\]\\s*(.+)$/);\n\t\tif (\n\t\t\tcheckboxMatch?.[1] !== undefined &&\n\t\t\tcheckboxMatch[2] &&\n\t\t\tcheckboxMatch[3]\n\t\t) {\n\t\t\trawTasks.push({\n\t\t\t\ttext: checkboxMatch[3].trim(),\n\t\t\t\tcompleted: checkboxMatch[2].toLowerCase() === \"x\",\n\t\t\t\tindent: checkboxMatch[1].length,\n\t\t\t\tlineNumber: i + 1,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Match numbered list items: 1. task or 1) task\n\t\tconst numberedMatch = line.match(/^(\\s*)\\d+[.)]\\s+(.+)$/);\n\t\tif (numberedMatch?.[1] !== undefined && numberedMatch[2]) {\n\t\t\t// Skip if it's a sub-item description\n\t\t\tconst text = numberedMatch[2].trim();\n\t\t\tif (\n\t\t\t\t!text.startsWith(\"**\") &&\n\t\t\t\t!text.match(/^[A-Z].*:$/) &&\n\t\t\t\ttext.length > 10\n\t\t\t) {\n\t\t\t\trawTasks.push({\n\t\t\t\t\ttext,\n\t\t\t\t\tcompleted: false,\n\t\t\t\t\tindent: numberedMatch[1].length,\n\t\t\t\t\tlineNumber: i + 1,\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Match bullet items that look like tasks (starts with verb or \"Add/Create/Implement\")\n\t\tconst bulletMatch = line.match(/^(\\s*)[-*]\\s+(.+)$/);\n\t\tif (bulletMatch?.[1] !== undefined && bulletMatch[2]) {\n\t\t\tconst text = bulletMatch[2].trim();\n\t\t\tconst isTask = isLikelyTask(text);\n\t\t\tif (isTask && !text.startsWith(\"[\") && text.length > 10) {\n\t\t\t\trawTasks.push({\n\t\t\t\t\ttext,\n\t\t\t\t\tcompleted: false,\n\t\t\t\t\tindent: bulletMatch[1].length,\n\t\t\t\t\tlineNumber: i + 1,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Convert raw tasks to SwarmTasks (incomplete only)\n\tconst incompleteTasks = rawTasks.filter((t) => !t.completed);\n\tconst tasks = incompleteTasks.map((raw, index) =>\n\t\tconvertToSwarmTask(raw, index, rawTasks),\n\t);\n\n\t// Build mapping from raw task index -> full task ID (only for incomplete tasks).\n\tconst rawIndexByLine = new Map<number, number>();\n\tfor (const [rawIndex, raw] of rawTasks.entries()) {\n\t\trawIndexByLine.set(raw.lineNumber, rawIndex);\n\t}\n\n\tconst rawIndexToFullId = new Map<number, string>();\n\tfor (const [incompleteIndex, raw] of incompleteTasks.entries()) {\n\t\tconst rawIndex =\n\t\t\trawIndexByLine.get(raw.lineNumber) ?? rawTasks.indexOf(raw);\n\t\tconst task = tasks[incompleteIndex];\n\t\tif (task) {\n\t\t\trawIndexToFullId.set(rawIndex, task.id);\n\t\t}\n\t}\n\n\t// Resolve dependencies to full IDs so executor checks work.\n\t// Dependencies refer to task numbers in the full raw list; if a dependency\n\t// points to a completed task, it's considered already satisfied and skipped.\n\tfor (const [incompleteIndex, raw] of incompleteTasks.entries()) {\n\t\tconst currentRawIndex =\n\t\t\trawIndexByLine.get(raw.lineNumber) ?? rawTasks.indexOf(raw);\n\t\tconst baseDeps = extractDependencies(raw.text, currentRawIndex, rawTasks);\n\t\tif (baseDeps.length === 0) continue;\n\n\t\tconst depRawIndices = baseDeps\n\t\t\t.map((dep) => Number.parseInt(dep.replace(/^task-/, \"\"), 10) - 1)\n\t\t\t.filter((idx) => idx >= 0);\n\n\t\tconst fullDeps = depRawIndices\n\t\t\t.map((idx) => rawIndexToFullId.get(idx))\n\t\t\t.filter((dep): dep is string => Boolean(dep));\n\n\t\tconst task = tasks[incompleteIndex];\n\t\tif (fullDeps.length > 0 && task) {\n\t\t\ttask.dependsOn = fullDeps;\n\t\t}\n\t}\n\n\tlogger.debug(\"Parsed plan\", {\n\t\ttitle,\n\t\ttotalRawTasks: rawTasks.length,\n\t\tincompleteTasks: tasks.length,\n\t});\n\n\treturn {\n\t\ttitle,\n\t\ttasks,\n\t\tcontent,\n\t};\n}\n\n/**\n * Check if text looks like a task (starts with action verb).\n */\nfunction isLikelyTask(text: string): boolean {\n\tconst actionVerbs = [\n\t\t\"add\",\n\t\t\"create\",\n\t\t\"implement\",\n\t\t\"update\",\n\t\t\"modify\",\n\t\t\"change\",\n\t\t\"fix\",\n\t\t\"remove\",\n\t\t\"delete\",\n\t\t\"refactor\",\n\t\t\"extract\",\n\t\t\"move\",\n\t\t\"rename\",\n\t\t\"write\",\n\t\t\"build\",\n\t\t\"configure\",\n\t\t\"setup\",\n\t\t\"set up\",\n\t\t\"install\",\n\t\t\"integrate\",\n\t\t\"connect\",\n\t\t\"test\",\n\t\t\"verify\",\n\t\t\"validate\",\n\t\t\"check\",\n\t\t\"ensure\",\n\t\t\"make\",\n\t\t\"define\",\n\t\t\"declare\",\n\t\t\"export\",\n\t\t\"import\",\n\t];\n\n\tconst lowerText = text.toLowerCase();\n\treturn actionVerbs.some(\n\t\t(verb) => lowerText.startsWith(verb) || lowerText.startsWith(`${verb} `),\n\t);\n}\n\n/**\n * Convert a raw task to a SwarmTask.\n */\nfunction convertToSwarmTask(\n\traw: RawTask,\n\tindex: number,\n\tallTasks: RawTask[],\n): SwarmTask {\n\tconst task: SwarmTask = {\n\t\tid: `task-${index + 1}-${randomUUID().slice(0, 8)}`,\n\t\tprompt: raw.text,\n\t\tpriority: allTasks.length - index, // Earlier tasks have higher priority\n\t};\n\n\t// Extract file references from the task text\n\tconst files = extractFileReferences(raw.text);\n\tif (files.length > 0) {\n\t\ttask.files = files;\n\t}\n\n\treturn task;\n}\n\n/**\n * Extract file path references from task text.\n */\nfunction extractFileReferences(text: string): string[] {\n\tconst files: string[] = [];\n\n\t// Match quoted paths\n\tconst quotedMatches = text.matchAll(/[\"'`]([^\"'`]+\\.[a-z]+)[\"'`]/gi);\n\tfor (const match of quotedMatches) {\n\t\tconst captured = match[1];\n\t\tif (captured) {\n\t\t\tfiles.push(captured);\n\t\t}\n\t}\n\n\t// Match backtick code spans with paths\n\tconst codeMatches = text.matchAll(/`([^`]+\\.[a-z]+)`/gi);\n\tfor (const match of codeMatches) {\n\t\tconst captured = match[1];\n\t\tif (captured && !files.includes(captured)) {\n\t\t\tfiles.push(captured);\n\t\t}\n\t}\n\n\t// Match common file patterns\n\tconst pathMatches = text.matchAll(\n\t\t/\\b((?:src|lib|test|tests|packages?)\\/[^\\s,)]+\\.[a-z]+)\\b/gi,\n\t);\n\tfor (const match of pathMatches) {\n\t\tconst captured = match[1];\n\t\tif (captured && !files.includes(captured)) {\n\t\t\tfiles.push(captured);\n\t\t}\n\t}\n\n\treturn files;\n}\n\n/**\n * Extract task dependencies from text.\n */\nfunction extractDependencies(\n\ttext: string,\n\tcurrentIndex: number,\n\tallTasks: RawTask[],\n): string[] {\n\tconst deps: string[] = [];\n\tconst lowerText = text.toLowerCase();\n\n\t// Check for \"after\" references\n\tconst afterMatch = lowerText.match(/after\\s+(?:task\\s+)?(\\d+)/);\n\tif (afterMatch?.[1]) {\n\t\tconst depIndex = Number.parseInt(afterMatch[1], 10) - 1;\n\t\tif (depIndex >= 0 && depIndex < currentIndex) {\n\t\t\tdeps.push(`task-${depIndex + 1}`);\n\t\t}\n\t}\n\n\t// Check for \"depends on\" references\n\tconst dependsMatch = lowerText.match(/depends\\s+on\\s+(?:task\\s+)?(\\d+)/);\n\tif (dependsMatch?.[1]) {\n\t\tconst depIndex = Number.parseInt(dependsMatch[1], 10) - 1;\n\t\tif (depIndex >= 0 && depIndex < currentIndex) {\n\t\t\tdeps.push(`task-${depIndex + 1}`);\n\t\t}\n\t}\n\n\treturn deps;\n}\n\n/**\n * Generate a plan markdown template.\n */\nexport function generatePlanTemplate(name: string, tasks: string[]): string {\n\tconst timestamp = new Date().toISOString();\n\tlet content = `# Plan: ${name}\\n\\n`;\n\tcontent += `Created: ${timestamp}\\n\\n`;\n\tcontent += \"## Tasks\\n\\n\";\n\n\tfor (let i = 0; i < tasks.length; i++) {\n\t\tcontent += `- [ ] ${tasks[i]}\\n`;\n\t}\n\n\tcontent += \"\\n## Notes\\n\\n\";\n\tcontent += \"<!-- Add any additional notes or context here -->\\n\";\n\n\treturn content;\n}\n\n/**\n * Update a plan file by marking tasks as complete.\n */\nexport function markTasksComplete(\n\tcontent: string,\n\tcompletedTaskTexts: string[],\n): string {\n\tlet updated = content;\n\n\tfor (const taskText of completedTaskTexts) {\n\t\t// Escape special regex characters in task text\n\t\tconst escaped = taskText.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\t\tconst pattern = new RegExp(`^(\\\\s*[-*]\\\\s*)\\\\[ \\\\](\\\\s*${escaped})`, \"gm\");\n\t\tupdated = updated.replace(pattern, \"$1[x]$2\");\n\t}\n\n\treturn updated;\n}\n"]}
1
+ {"version":3,"file":"plan-parser.js","sourceRoot":"","sources":["../../../src/agent/swarm/plan-parser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plan Parser\n *\n * Parses markdown plan files into structured tasks for swarm execution.\n * Supports various markdown formats for task lists.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { createLogger } from \"../../utils/logger.js\";\nimport type { ParsedPlan, SwarmTask } from \"./types.js\";\n\nconst logger = createLogger(\"agent:swarm:plan-parser\");\n\n/**\n * Task item extracted from markdown.\n */\ninterface RawTask {\n\ttext: string;\n\tcompleted: boolean;\n\tindent: number;\n\tlineNumber: number;\n}\n\nconst MOCKS_ALLOWED_MARKER =\n\t/\\s*\\[(?:mocks\\s+allowed|allow(?:ed)?\\s+mocks|allow-mocks|mocksAllowed\\s*=\\s*true|mocks\\s*=\\s*true)\\]/giu;\nconst MOCKS_STRICT_MARKER =\n\t/\\s*\\[(?:mocks\\s+disallowed|no\\s+mocks|mocksAllowed\\s*=\\s*false|mocks\\s*=\\s*false)\\]/giu;\n\n/**\n * Parse a plan file into structured tasks.\n */\nexport function parsePlanFile(filePath: string): ParsedPlan {\n\tconst content = readFileSync(filePath, \"utf-8\");\n\treturn parsePlanContent(content);\n}\n\n/**\n * Parse plan content (markdown string) into structured tasks.\n */\nexport function parsePlanContent(content: string): ParsedPlan {\n\tconst lines = content.split(\"\\n\");\n\tconst rawTasks: RawTask[] = [];\n\tlet title = \"Implementation Plan\";\n\n\t// Extract title from first H1\n\tfor (const line of lines) {\n\t\tconst h1Match = line.match(/^#\\s+(?:Plan:\\s*)?(.+)$/);\n\t\tif (h1Match?.[1]) {\n\t\t\ttitle = h1Match[1].trim();\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Extract tasks from checkbox items and numbered lists\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tconst line = lines[i];\n\t\tif (!line) continue;\n\n\t\t// Match checkbox items: - [ ] task or - [x] task\n\t\tconst checkboxMatch = line.match(/^(\\s*)[-*]\\s*\\[([ xX])\\]\\s*(.+)$/);\n\t\tif (\n\t\t\tcheckboxMatch?.[1] !== undefined &&\n\t\t\tcheckboxMatch[2] &&\n\t\t\tcheckboxMatch[3]\n\t\t) {\n\t\t\trawTasks.push({\n\t\t\t\ttext: checkboxMatch[3].trim(),\n\t\t\t\tcompleted: checkboxMatch[2].toLowerCase() === \"x\",\n\t\t\t\tindent: checkboxMatch[1].length,\n\t\t\t\tlineNumber: i + 1,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Match numbered list items: 1. task or 1) task\n\t\tconst numberedMatch = line.match(/^(\\s*)\\d+[.)]\\s+(.+)$/);\n\t\tif (numberedMatch?.[1] !== undefined && numberedMatch[2]) {\n\t\t\t// Skip if it's a sub-item description\n\t\t\tconst text = numberedMatch[2].trim();\n\t\t\tif (\n\t\t\t\t!text.startsWith(\"**\") &&\n\t\t\t\t!text.match(/^[A-Z].*:$/) &&\n\t\t\t\ttext.length > 10\n\t\t\t) {\n\t\t\t\trawTasks.push({\n\t\t\t\t\ttext,\n\t\t\t\t\tcompleted: false,\n\t\t\t\t\tindent: numberedMatch[1].length,\n\t\t\t\t\tlineNumber: i + 1,\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Match bullet items that look like tasks (starts with verb or \"Add/Create/Implement\")\n\t\tconst bulletMatch = line.match(/^(\\s*)[-*]\\s+(.+)$/);\n\t\tif (bulletMatch?.[1] !== undefined && bulletMatch[2]) {\n\t\t\tconst text = bulletMatch[2].trim();\n\t\t\tconst isTask = isLikelyTask(text);\n\t\t\tif (isTask && !text.startsWith(\"[\") && text.length > 10) {\n\t\t\t\trawTasks.push({\n\t\t\t\t\ttext,\n\t\t\t\t\tcompleted: false,\n\t\t\t\t\tindent: bulletMatch[1].length,\n\t\t\t\t\tlineNumber: i + 1,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Convert raw tasks to SwarmTasks (incomplete only)\n\tconst incompleteTasks = rawTasks.filter((t) => !t.completed);\n\tconst tasks = incompleteTasks.map((raw, index) =>\n\t\tconvertToSwarmTask(raw, index, rawTasks),\n\t);\n\n\t// Build mapping from raw task index -> full task ID (only for incomplete tasks).\n\tconst rawIndexByLine = new Map<number, number>();\n\tfor (const [rawIndex, raw] of rawTasks.entries()) {\n\t\trawIndexByLine.set(raw.lineNumber, rawIndex);\n\t}\n\n\tconst rawIndexToFullId = new Map<number, string>();\n\tfor (const [incompleteIndex, raw] of incompleteTasks.entries()) {\n\t\tconst rawIndex =\n\t\t\trawIndexByLine.get(raw.lineNumber) ?? rawTasks.indexOf(raw);\n\t\tconst task = tasks[incompleteIndex];\n\t\tif (task) {\n\t\t\trawIndexToFullId.set(rawIndex, task.id);\n\t\t}\n\t}\n\n\t// Resolve dependencies to full IDs so executor checks work.\n\t// Dependencies refer to task numbers in the full raw list; if a dependency\n\t// points to a completed task, it's considered already satisfied and skipped.\n\tfor (const [incompleteIndex, raw] of incompleteTasks.entries()) {\n\t\tconst currentRawIndex =\n\t\t\trawIndexByLine.get(raw.lineNumber) ?? rawTasks.indexOf(raw);\n\t\tconst baseDeps = extractDependencies(raw.text, currentRawIndex, rawTasks);\n\t\tif (baseDeps.length === 0) continue;\n\n\t\tconst depRawIndices = baseDeps\n\t\t\t.map((dep) => Number.parseInt(dep.replace(/^task-/, \"\"), 10) - 1)\n\t\t\t.filter((idx) => idx >= 0);\n\n\t\tconst fullDeps = depRawIndices\n\t\t\t.map((idx) => rawIndexToFullId.get(idx))\n\t\t\t.filter((dep): dep is string => Boolean(dep));\n\n\t\tconst task = tasks[incompleteIndex];\n\t\tif (fullDeps.length > 0 && task) {\n\t\t\ttask.dependsOn = fullDeps;\n\t\t}\n\t}\n\n\tlogger.debug(\"Parsed plan\", {\n\t\ttitle,\n\t\ttotalRawTasks: rawTasks.length,\n\t\tincompleteTasks: tasks.length,\n\t});\n\n\treturn {\n\t\ttitle,\n\t\ttasks,\n\t\tcontent,\n\t};\n}\n\n/**\n * Check if text looks like a task (starts with action verb).\n */\nfunction isLikelyTask(text: string): boolean {\n\tconst actionVerbs = [\n\t\t\"add\",\n\t\t\"create\",\n\t\t\"implement\",\n\t\t\"update\",\n\t\t\"modify\",\n\t\t\"change\",\n\t\t\"fix\",\n\t\t\"remove\",\n\t\t\"delete\",\n\t\t\"refactor\",\n\t\t\"extract\",\n\t\t\"move\",\n\t\t\"rename\",\n\t\t\"write\",\n\t\t\"build\",\n\t\t\"configure\",\n\t\t\"setup\",\n\t\t\"set up\",\n\t\t\"install\",\n\t\t\"integrate\",\n\t\t\"connect\",\n\t\t\"test\",\n\t\t\"verify\",\n\t\t\"validate\",\n\t\t\"check\",\n\t\t\"ensure\",\n\t\t\"make\",\n\t\t\"define\",\n\t\t\"declare\",\n\t\t\"export\",\n\t\t\"import\",\n\t];\n\n\tconst lowerText = text.toLowerCase();\n\treturn actionVerbs.some(\n\t\t(verb) => lowerText.startsWith(verb) || lowerText.startsWith(`${verb} `),\n\t);\n}\n\n/**\n * Convert a raw task to a SwarmTask.\n */\nfunction convertToSwarmTask(\n\traw: RawTask,\n\tindex: number,\n\tallTasks: RawTask[],\n): SwarmTask {\n\tconst metadata = extractTaskMetadata(raw.text);\n\tconst task: SwarmTask = {\n\t\tid: `task-${index + 1}-${randomUUID().slice(0, 8)}`,\n\t\tprompt: metadata.text,\n\t\tpriority: allTasks.length - index, // Earlier tasks have higher priority\n\t};\n\tif (metadata.mocksAllowed !== undefined) {\n\t\ttask.mocksAllowed = metadata.mocksAllowed;\n\t}\n\n\t// Extract file references from the task text\n\tconst files = extractFileReferences(metadata.text);\n\tif (files.length > 0) {\n\t\ttask.files = files;\n\t}\n\n\treturn task;\n}\n\nfunction extractTaskMetadata(text: string): {\n\ttext: string;\n\tmocksAllowed?: boolean;\n} {\n\tconst allowsMocks = MOCKS_ALLOWED_MARKER.test(text);\n\tMOCKS_ALLOWED_MARKER.lastIndex = 0;\n\tconst explicitlyStrict = MOCKS_STRICT_MARKER.test(text);\n\tMOCKS_STRICT_MARKER.lastIndex = 0;\n\tconst cleanedText = text\n\t\t.replace(MOCKS_ALLOWED_MARKER, \"\")\n\t\t.replace(MOCKS_STRICT_MARKER, \"\")\n\t\t.replace(/\\s{2,}/gu, \" \")\n\t\t.trim();\n\n\treturn {\n\t\ttext: cleanedText,\n\t\t...(explicitlyStrict\n\t\t\t? { mocksAllowed: false }\n\t\t\t: allowsMocks\n\t\t\t\t? { mocksAllowed: true }\n\t\t\t\t: {}),\n\t};\n}\n\n/**\n * Extract file path references from task text.\n */\nfunction extractFileReferences(text: string): string[] {\n\tconst files: string[] = [];\n\n\t// Match quoted paths\n\tconst quotedMatches = text.matchAll(/[\"'`]([^\"'`]+\\.[a-z]+)[\"'`]/gi);\n\tfor (const match of quotedMatches) {\n\t\tconst captured = match[1];\n\t\tif (captured) {\n\t\t\tfiles.push(captured);\n\t\t}\n\t}\n\n\t// Match backtick code spans with paths\n\tconst codeMatches = text.matchAll(/`([^`]+\\.[a-z]+)`/gi);\n\tfor (const match of codeMatches) {\n\t\tconst captured = match[1];\n\t\tif (captured && !files.includes(captured)) {\n\t\t\tfiles.push(captured);\n\t\t}\n\t}\n\n\t// Match common file patterns\n\tconst pathMatches = text.matchAll(\n\t\t/\\b((?:src|lib|test|tests|packages?)\\/[^\\s,)]+\\.[a-z]+)\\b/gi,\n\t);\n\tfor (const match of pathMatches) {\n\t\tconst captured = match[1];\n\t\tif (captured && !files.includes(captured)) {\n\t\t\tfiles.push(captured);\n\t\t}\n\t}\n\n\treturn files;\n}\n\n/**\n * Extract task dependencies from text.\n */\nfunction extractDependencies(\n\ttext: string,\n\tcurrentIndex: number,\n\tallTasks: RawTask[],\n): string[] {\n\tconst deps: string[] = [];\n\tconst lowerText = text.toLowerCase();\n\n\t// Check for \"after\" references\n\tconst afterMatch = lowerText.match(/after\\s+(?:task\\s+)?(\\d+)/);\n\tif (afterMatch?.[1]) {\n\t\tconst depIndex = Number.parseInt(afterMatch[1], 10) - 1;\n\t\tif (depIndex >= 0 && depIndex < currentIndex) {\n\t\t\tdeps.push(`task-${depIndex + 1}`);\n\t\t}\n\t}\n\n\t// Check for \"depends on\" references\n\tconst dependsMatch = lowerText.match(/depends\\s+on\\s+(?:task\\s+)?(\\d+)/);\n\tif (dependsMatch?.[1]) {\n\t\tconst depIndex = Number.parseInt(dependsMatch[1], 10) - 1;\n\t\tif (depIndex >= 0 && depIndex < currentIndex) {\n\t\t\tdeps.push(`task-${depIndex + 1}`);\n\t\t}\n\t}\n\n\treturn deps;\n}\n\n/**\n * Generate a plan markdown template.\n */\nexport function generatePlanTemplate(name: string, tasks: string[]): string {\n\tconst timestamp = new Date().toISOString();\n\tlet content = `# Plan: ${name}\\n\\n`;\n\tcontent += `Created: ${timestamp}\\n\\n`;\n\tcontent += \"## Tasks\\n\\n\";\n\n\tfor (let i = 0; i < tasks.length; i++) {\n\t\tcontent += `- [ ] ${tasks[i]}\\n`;\n\t}\n\n\tcontent += \"\\n## Notes\\n\\n\";\n\tcontent += \"<!-- Add any additional notes or context here -->\\n\";\n\n\treturn content;\n}\n\n/**\n * Update a plan file by marking tasks as complete.\n */\nexport function markTasksComplete(\n\tcontent: string,\n\tcompletedTaskTexts: string[],\n): string {\n\tlet updated = content;\n\n\tfor (const taskText of completedTaskTexts) {\n\t\t// Escape special regex characters in task text\n\t\tconst escaped = taskText.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\t\tconst pattern = new RegExp(`^(\\\\s*[-*]\\\\s*)\\\\[ \\\\](\\\\s*${escaped})`, \"gm\");\n\t\tupdated = updated.replace(pattern, \"$1[x]$2\");\n\t}\n\n\treturn updated;\n}\n"]}
@@ -7,6 +7,7 @@
7
7
  import type { A2ATaskPushNotificationConfig } from "../../platform/a2a-client.js";
8
8
  import type { AgentMode, ModelProvider, ReasoningEffort } from "../modes.js";
9
9
  import type { SubagentType } from "../subagent-specs.js";
10
+ import type { FeatureClaim, ValidationContract } from "../validation-contract.js";
10
11
  /**
11
12
  * Status of a swarm teammate.
12
13
  */
@@ -31,6 +32,14 @@ export interface SwarmTask {
31
32
  a2aPeer?: string;
32
33
  /** Optional A2A skill override when the task maps to a remote Maestro lane */
33
34
  a2aSkillId?: string;
35
+ /** Optional durable specialist profile to prepend to the teammate prompt. */
36
+ specialistProfile?: string;
37
+ /**
38
+ * Explicit opt-out of the end-to-end validation default. When true, the
39
+ * teammate may use mocks/stubs for unavailable integrations; otherwise the
40
+ * worker must validate against real integrations before reporting done.
41
+ */
42
+ mocksAllowed?: boolean;
34
43
  /** Priority (higher = earlier execution when no dependencies) */
35
44
  priority?: number;
36
45
  }
@@ -95,6 +104,14 @@ export interface SwarmConfig {
95
104
  continueOnFailure?: boolean;
96
105
  /** Git branch to work on (creates if doesn't exist) */
97
106
  gitBranch?: string;
107
+ /**
108
+ * Optional mission validation contract. When present, the coverage gate
109
+ * refuses to start the swarm until every assertion is claimed exactly once
110
+ * by the feature claims below.
111
+ */
112
+ validationContract?: ValidationContract;
113
+ /** Feature claims evaluated against validationContract by the coverage gate. */
114
+ featureClaims?: FeatureClaim[];
98
115
  }
99
116
  /**
100
117
  * Configuration for remote A2A-backed swarm teammates.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/swarm/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,cAAc,GACvB,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,uCAAuC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,GAAG,CAAC,EAAE,yBAAyB,CAAC;IAChC,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,sEAAsE;IACtE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gDAAgD;IAChD,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC5B,4EAA4E;IAC5E,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6FAA6F;IAC7F,sBAAsB,CAAC,EAAE,6BAA6B,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,MAAM,EAAE,UAAU,GAAG,yBAAyB,CAAC;IAC/C,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACpB,cAAc,GACd,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,mCAAmC;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,iCAAiC;IACjC,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,+BAA+B;IAC/B,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,sCAAsC;IACtC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,yBAAyB;IACzB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,sBAAsB;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GACnB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,GACpE;IACA,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;CACf,GACD;IACA,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CACd,GACD;IACA,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACb,GACD;IACA,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/swarm/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent/swarm/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\n * Swarm Mode Types\n *\n * Type definitions for the swarm execution system that enables\n * parallel agent execution for implementing plans.\n */\n\nimport type { A2ATaskPushNotificationConfig } from \"../../platform/a2a-client.js\";\nimport type { AgentMode, ModelProvider, ReasoningEffort } from \"../modes.js\";\nimport type { SubagentType } from \"../subagent-specs.js\";\n\n/**\n * Status of a swarm teammate.\n */\nexport type TeammateStatus =\n\t| \"pending\"\n\t| \"running\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\n/**\n * A single task assigned to a teammate in the swarm.\n */\nexport interface SwarmTask {\n\t/** Unique task identifier */\n\tid: string;\n\t/** Task description/prompt for the teammate */\n\tprompt: string;\n\t/** Files relevant to this task */\n\tfiles?: string[];\n\t/** Dependencies on other task IDs (must complete first) */\n\tdependsOn?: string[];\n\t/** Optional model override for this task */\n\tmodel?: string;\n\t/** Optional subagent type used for mode-level model dispatch */\n\tsubagentType?: SubagentType;\n\t/** Optional A2A peer override when the swarm uses remote transport */\n\ta2aPeer?: string;\n\t/** Optional A2A skill override when the task maps to a remote Maestro lane */\n\ta2aSkillId?: string;\n\t/** Priority (higher = earlier execution when no dependencies) */\n\tpriority?: number;\n}\n\n/**\n * A teammate in the swarm - an individual agent working on tasks.\n */\nexport interface SwarmTeammate {\n\t/** Unique teammate identifier */\n\tid: string;\n\t/** Display name for the teammate */\n\tname: string;\n\t/** Current status */\n\tstatus: TeammateStatus;\n\t/** Currently assigned task */\n\tcurrentTask?: SwarmTask;\n\t/** Tasks completed by this teammate */\n\tcompletedTasks: string[];\n\t/** Process ID if running as subprocess */\n\tpid?: number;\n\t/** Remote A2A task correlation when this teammate runs on a peer */\n\ta2a?: SwarmA2ATeammateExecution;\n\t/** Start timestamp */\n\tstartedAt?: number;\n\t/** Completion timestamp */\n\tcompletedAt?: number;\n\t/** Error message if failed */\n\terror?: string;\n\t/** Output/results from the teammate */\n\toutput?: string;\n}\n\n/**\n * Configuration for launching a swarm.\n */\nexport interface SwarmConfig {\n\t/** Number of teammates to spawn (1-10) */\n\tteammateCount: number;\n\t/** Plan file path to implement */\n\tplanFile: string;\n\t/** Tasks to distribute among teammates */\n\ttasks: SwarmTask[];\n\t/** Working directory for all teammates */\n\tcwd: string;\n\t/** Session ID of the parent session */\n\tparentSessionId?: string;\n\t/** Model to use for teammates (defaults to parent's model) */\n\tmodel?: string;\n\t/** Agent mode used to resolve subagent model dispatch */\n\tmode?: AgentMode;\n\t/** Parent model provider used when dispatch falls back to a model tier */\n\tmodelProvider?: ModelProvider;\n\t/** Default subagent type for teammate tasks without their own type */\n\tsubagentType?: SubagentType;\n\t/** Default reasoning hint for teammate tasks */\n\treasoningEffort?: ReasoningEffort;\n\t/** Execution transport for teammates; local preserves subprocess behavior. */\n\ttransport?: \"local\" | \"a2a\";\n\t/** Remote A2A routing options for Platform-discovered or registry peers. */\n\ta2a?: SwarmA2AConfig;\n\t/** Maximum time per task in milliseconds */\n\ttaskTimeout?: number;\n\t/** Whether to continue on individual task failures */\n\tcontinueOnFailure?: boolean;\n\t/** Git branch to work on (creates if doesn't exist) */\n\tgitBranch?: string;\n}\n\n/**\n * Configuration for remote A2A-backed swarm teammates.\n */\nexport interface SwarmA2AConfig {\n\t/** Named peers from the local A2A registry, used round-robin. */\n\tpeers?: string[];\n\t/** Override for the local A2A peer registry path. */\n\tregistryPath?: string;\n\t/** Override for the local A2A task ledger path. */\n\ttasksPath?: string;\n\t/** Default remote A2A skill id. */\n\tskillId?: string;\n\t/** Optional delegation role shown in task ledger metadata. */\n\trole?: string;\n\t/** Discover remote peers from Platform Agent Registry instead of local peers. */\n\tdiscover?: boolean;\n\t/** Platform workspace id for discovery. */\n\tworkspaceId?: string;\n\t/** Capability filter for Platform discovery. */\n\tcapability?: string;\n\t/** Surface filter for Platform discovery. Defaults to a2a. */\n\tsurface?: string;\n\t/** Prefer internal endpoints returned by Platform Agent Registry. */\n\tpreferInternalEndpoint?: boolean;\n\t/** Maximum Platform candidates to consider. */\n\tlimit?: number;\n\t/** Timeout for individual A2A HTTP calls. */\n\ttimeoutMs?: number;\n\t/** Max attempts for individual A2A HTTP calls. */\n\tmaxAttempts?: number;\n\t/** Max time to wait for a remote task to reach terminal state. */\n\tmaxWaitMs?: number;\n\t/** Poll interval while waiting for remote task state. */\n\tpollIntervalMs?: number;\n\t/** Optional push callback config sent to remote peers for task progress/artifact updates. */\n\tpushNotificationConfig?: A2ATaskPushNotificationConfig;\n}\n\n/**\n * Public, non-secret correlation metadata for a remote A2A swarm teammate.\n */\nexport interface SwarmA2ATeammateExecution {\n\t/** Peer selected for this teammate task. */\n\tpeer: string;\n\t/** Optional human-readable peer label. */\n\tpeerDisplayName?: string;\n\t/** Peer source used by the router. */\n\tsource: \"registry\" | \"platform-agent-registry\";\n\t/** Parent swarm task id used to derive telemetry lane ids. */\n\tparentTaskId?: string;\n\t/** A2A task id returned by the peer. */\n\ttaskId: string;\n\t/** A2A context id used for resume/reply. */\n\tcontextId?: string;\n\t/** A2A message id sent by the coordinator. */\n\tmessageId: string;\n\t/** A2A skill id used for remote routing. */\n\tskillId?: string;\n\t/** Delegation role recorded for the remote task. */\n\trole?: string;\n}\n\n/**\n * Status of the overall swarm execution.\n */\nexport type SwarmStatus =\n\t| \"initializing\"\n\t| \"running\"\n\t| \"completing\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\n/**\n * State of the swarm execution.\n */\nexport interface SwarmState {\n\t/** Unique swarm execution ID */\n\tid: string;\n\t/** Current status */\n\tstatus: SwarmStatus;\n\t/** Configuration used to launch */\n\tconfig: SwarmConfig;\n\t/** All teammates in the swarm */\n\tteammates: SwarmTeammate[];\n\t/** Tasks pending assignment */\n\tpendingTasks: SwarmTask[];\n\t/** Tasks currently being worked on */\n\tactiveTasks: Map<string, string>; // taskId -> teammateId\n\t/** Completed task IDs */\n\tcompletedTasks: Set<string>;\n\t/** Failed task IDs */\n\tfailedTasks: Set<string>;\n\t/** Start timestamp */\n\tstartedAt: number;\n\t/** Completion timestamp */\n\tcompletedAt?: number;\n\t/** Error message if swarm failed */\n\terror?: string;\n}\n\n/**\n * Event emitted during swarm execution.\n */\nexport type SwarmEvent =\n\t| { type: \"swarm_start\"; swarmId: string; config: SwarmConfig }\n\t| { type: \"teammate_spawn\"; swarmId: string; teammate: SwarmTeammate }\n\t| {\n\t\t\ttype: \"task_start\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttask: SwarmTask;\n\t }\n\t| {\n\t\t\ttype: \"task_complete\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttaskId: string;\n\t\t\toutput: string;\n\t }\n\t| {\n\t\t\ttype: \"task_fail\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttaskId: string;\n\t\t\terror: string;\n\t }\n\t| {\n\t\t\ttype: \"teammate_complete\";\n\t\t\tswarmId: string;\n\t\t\tteammate: SwarmTeammate;\n\t }\n\t| { type: \"swarm_complete\"; swarmId: string; state: SwarmState }\n\t| { type: \"swarm_fail\"; swarmId: string; error: string };\n\n/**\n * Callback for swarm events.\n */\nexport type SwarmEventHandler = (event: SwarmEvent) => void;\n\n/**\n * Result of parsing a plan file into tasks.\n */\nexport interface ParsedPlan {\n\t/** Plan title/name */\n\ttitle: string;\n\t/** Extracted tasks */\n\ttasks: SwarmTask[];\n\t/** Raw plan content */\n\tcontent: string;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent/swarm/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\n * Swarm Mode Types\n *\n * Type definitions for the swarm execution system that enables\n * parallel agent execution for implementing plans.\n */\n\nimport type { A2ATaskPushNotificationConfig } from \"../../platform/a2a-client.js\";\nimport type { AgentMode, ModelProvider, ReasoningEffort } from \"../modes.js\";\nimport type { SubagentType } from \"../subagent-specs.js\";\nimport type {\n\tFeatureClaim,\n\tValidationContract,\n} from \"../validation-contract.js\";\n\n/**\n * Status of a swarm teammate.\n */\nexport type TeammateStatus =\n\t| \"pending\"\n\t| \"running\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\n/**\n * A single task assigned to a teammate in the swarm.\n */\nexport interface SwarmTask {\n\t/** Unique task identifier */\n\tid: string;\n\t/** Task description/prompt for the teammate */\n\tprompt: string;\n\t/** Files relevant to this task */\n\tfiles?: string[];\n\t/** Dependencies on other task IDs (must complete first) */\n\tdependsOn?: string[];\n\t/** Optional model override for this task */\n\tmodel?: string;\n\t/** Optional subagent type used for mode-level model dispatch */\n\tsubagentType?: SubagentType;\n\t/** Optional A2A peer override when the swarm uses remote transport */\n\ta2aPeer?: string;\n\t/** Optional A2A skill override when the task maps to a remote Maestro lane */\n\ta2aSkillId?: string;\n\t/** Optional durable specialist profile to prepend to the teammate prompt. */\n\tspecialistProfile?: string;\n\t/**\n\t * Explicit opt-out of the end-to-end validation default. When true, the\n\t * teammate may use mocks/stubs for unavailable integrations; otherwise the\n\t * worker must validate against real integrations before reporting done.\n\t */\n\tmocksAllowed?: boolean;\n\t/** Priority (higher = earlier execution when no dependencies) */\n\tpriority?: number;\n}\n\n/**\n * A teammate in the swarm - an individual agent working on tasks.\n */\nexport interface SwarmTeammate {\n\t/** Unique teammate identifier */\n\tid: string;\n\t/** Display name for the teammate */\n\tname: string;\n\t/** Current status */\n\tstatus: TeammateStatus;\n\t/** Currently assigned task */\n\tcurrentTask?: SwarmTask;\n\t/** Tasks completed by this teammate */\n\tcompletedTasks: string[];\n\t/** Process ID if running as subprocess */\n\tpid?: number;\n\t/** Remote A2A task correlation when this teammate runs on a peer */\n\ta2a?: SwarmA2ATeammateExecution;\n\t/** Start timestamp */\n\tstartedAt?: number;\n\t/** Completion timestamp */\n\tcompletedAt?: number;\n\t/** Error message if failed */\n\terror?: string;\n\t/** Output/results from the teammate */\n\toutput?: string;\n}\n\n/**\n * Configuration for launching a swarm.\n */\nexport interface SwarmConfig {\n\t/** Number of teammates to spawn (1-10) */\n\tteammateCount: number;\n\t/** Plan file path to implement */\n\tplanFile: string;\n\t/** Tasks to distribute among teammates */\n\ttasks: SwarmTask[];\n\t/** Working directory for all teammates */\n\tcwd: string;\n\t/** Session ID of the parent session */\n\tparentSessionId?: string;\n\t/** Model to use for teammates (defaults to parent's model) */\n\tmodel?: string;\n\t/** Agent mode used to resolve subagent model dispatch */\n\tmode?: AgentMode;\n\t/** Parent model provider used when dispatch falls back to a model tier */\n\tmodelProvider?: ModelProvider;\n\t/** Default subagent type for teammate tasks without their own type */\n\tsubagentType?: SubagentType;\n\t/** Default reasoning hint for teammate tasks */\n\treasoningEffort?: ReasoningEffort;\n\t/** Execution transport for teammates; local preserves subprocess behavior. */\n\ttransport?: \"local\" | \"a2a\";\n\t/** Remote A2A routing options for Platform-discovered or registry peers. */\n\ta2a?: SwarmA2AConfig;\n\t/** Maximum time per task in milliseconds */\n\ttaskTimeout?: number;\n\t/** Whether to continue on individual task failures */\n\tcontinueOnFailure?: boolean;\n\t/** Git branch to work on (creates if doesn't exist) */\n\tgitBranch?: string;\n\t/**\n\t * Optional mission validation contract. When present, the coverage gate\n\t * refuses to start the swarm until every assertion is claimed exactly once\n\t * by the feature claims below.\n\t */\n\tvalidationContract?: ValidationContract;\n\t/** Feature claims evaluated against validationContract by the coverage gate. */\n\tfeatureClaims?: FeatureClaim[];\n}\n\n/**\n * Configuration for remote A2A-backed swarm teammates.\n */\nexport interface SwarmA2AConfig {\n\t/** Named peers from the local A2A registry, used round-robin. */\n\tpeers?: string[];\n\t/** Override for the local A2A peer registry path. */\n\tregistryPath?: string;\n\t/** Override for the local A2A task ledger path. */\n\ttasksPath?: string;\n\t/** Default remote A2A skill id. */\n\tskillId?: string;\n\t/** Optional delegation role shown in task ledger metadata. */\n\trole?: string;\n\t/** Discover remote peers from Platform Agent Registry instead of local peers. */\n\tdiscover?: boolean;\n\t/** Platform workspace id for discovery. */\n\tworkspaceId?: string;\n\t/** Capability filter for Platform discovery. */\n\tcapability?: string;\n\t/** Surface filter for Platform discovery. Defaults to a2a. */\n\tsurface?: string;\n\t/** Prefer internal endpoints returned by Platform Agent Registry. */\n\tpreferInternalEndpoint?: boolean;\n\t/** Maximum Platform candidates to consider. */\n\tlimit?: number;\n\t/** Timeout for individual A2A HTTP calls. */\n\ttimeoutMs?: number;\n\t/** Max attempts for individual A2A HTTP calls. */\n\tmaxAttempts?: number;\n\t/** Max time to wait for a remote task to reach terminal state. */\n\tmaxWaitMs?: number;\n\t/** Poll interval while waiting for remote task state. */\n\tpollIntervalMs?: number;\n\t/** Optional push callback config sent to remote peers for task progress/artifact updates. */\n\tpushNotificationConfig?: A2ATaskPushNotificationConfig;\n}\n\n/**\n * Public, non-secret correlation metadata for a remote A2A swarm teammate.\n */\nexport interface SwarmA2ATeammateExecution {\n\t/** Peer selected for this teammate task. */\n\tpeer: string;\n\t/** Optional human-readable peer label. */\n\tpeerDisplayName?: string;\n\t/** Peer source used by the router. */\n\tsource: \"registry\" | \"platform-agent-registry\";\n\t/** Parent swarm task id used to derive telemetry lane ids. */\n\tparentTaskId?: string;\n\t/** A2A task id returned by the peer. */\n\ttaskId: string;\n\t/** A2A context id used for resume/reply. */\n\tcontextId?: string;\n\t/** A2A message id sent by the coordinator. */\n\tmessageId: string;\n\t/** A2A skill id used for remote routing. */\n\tskillId?: string;\n\t/** Delegation role recorded for the remote task. */\n\trole?: string;\n}\n\n/**\n * Status of the overall swarm execution.\n */\nexport type SwarmStatus =\n\t| \"initializing\"\n\t| \"running\"\n\t| \"completing\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\n/**\n * State of the swarm execution.\n */\nexport interface SwarmState {\n\t/** Unique swarm execution ID */\n\tid: string;\n\t/** Current status */\n\tstatus: SwarmStatus;\n\t/** Configuration used to launch */\n\tconfig: SwarmConfig;\n\t/** All teammates in the swarm */\n\tteammates: SwarmTeammate[];\n\t/** Tasks pending assignment */\n\tpendingTasks: SwarmTask[];\n\t/** Tasks currently being worked on */\n\tactiveTasks: Map<string, string>; // taskId -> teammateId\n\t/** Completed task IDs */\n\tcompletedTasks: Set<string>;\n\t/** Failed task IDs */\n\tfailedTasks: Set<string>;\n\t/** Start timestamp */\n\tstartedAt: number;\n\t/** Completion timestamp */\n\tcompletedAt?: number;\n\t/** Error message if swarm failed */\n\terror?: string;\n}\n\n/**\n * Event emitted during swarm execution.\n */\nexport type SwarmEvent =\n\t| { type: \"swarm_start\"; swarmId: string; config: SwarmConfig }\n\t| { type: \"teammate_spawn\"; swarmId: string; teammate: SwarmTeammate }\n\t| {\n\t\t\ttype: \"task_start\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttask: SwarmTask;\n\t }\n\t| {\n\t\t\ttype: \"task_complete\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttaskId: string;\n\t\t\toutput: string;\n\t }\n\t| {\n\t\t\ttype: \"task_fail\";\n\t\t\tswarmId: string;\n\t\t\tteammateId: string;\n\t\t\ttaskId: string;\n\t\t\terror: string;\n\t }\n\t| {\n\t\t\ttype: \"teammate_complete\";\n\t\t\tswarmId: string;\n\t\t\tteammate: SwarmTeammate;\n\t }\n\t| { type: \"swarm_complete\"; swarmId: string; state: SwarmState }\n\t| { type: \"swarm_fail\"; swarmId: string; error: string };\n\n/**\n * Callback for swarm events.\n */\nexport type SwarmEventHandler = (event: SwarmEvent) => void;\n\n/**\n * Result of parsing a plan file into tasks.\n */\nexport interface ParsedPlan {\n\t/** Plan title/name */\n\ttitle: string;\n\t/** Extracted tasks */\n\ttasks: SwarmTask[];\n\t/** Raw plan content */\n\tcontent: string;\n}\n"]}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Swarm validation directive
3
+ *
4
+ * Builds the "## Validation" section handed to every swarm teammate. The
5
+ * default posture is end-to-end validation against real integrations: a worker
6
+ * may not declare a task done on the strength of a mocked path. Mocks/stubs are
7
+ * an explicit per-task opt-out (`SwarmTask.mocksAllowed`), not the baseline.
8
+ *
9
+ * This mirrors the orchestrator discipline that high-end coding agents apply at
10
+ * the mission level, pushed down to the per-worker delegation prompt so the
11
+ * default holds even for a single delegated task.
12
+ */
13
+ /**
14
+ * Returns the validation directive for a swarm task.
15
+ *
16
+ * @param mocksAllowed When true, the task has explicitly opted out of the
17
+ * real-integration default and may use mocks/stubs for unavailable
18
+ * dependencies.
19
+ */
20
+ export declare function buildSwarmValidationDirective(mocksAllowed?: boolean): string;
21
+ //# sourceMappingURL=validation-directive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-directive.d.ts","sourceRoot":"","sources":["../../../src/agent/swarm/validation-directive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAE5E"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Swarm validation directive
3
+ *
4
+ * Builds the "## Validation" section handed to every swarm teammate. The
5
+ * default posture is end-to-end validation against real integrations: a worker
6
+ * may not declare a task done on the strength of a mocked path. Mocks/stubs are
7
+ * an explicit per-task opt-out (`SwarmTask.mocksAllowed`), not the baseline.
8
+ *
9
+ * This mirrors the orchestrator discipline that high-end coding agents apply at
10
+ * the mission level, pushed down to the per-worker delegation prompt so the
11
+ * default holds even for a single delegated task.
12
+ */
13
+ const REAL_INTEGRATION_DIRECTIVE = "Validate end-to-end against real integrations. The default is that every change is exercised through its real execution path — real services, real data, real auth — before you finish. Do not introduce mocks or stubs to make a check pass. Add or update focused tests when behavior changes, and run the relevant verification (build, lint, the touched tests, and the real end-to-end path) before reporting completion. If an integration genuinely cannot be exercised in this environment, stop and report it as a blocker rather than claiming success — never report that something works on the strength of a mocked path alone.";
14
+ const MOCKS_ALLOWED_DIRECTIVE = "This task is explicitly approved to use mocks or stubs where a real integration is unavailable. Prefer the real execution path wherever it exists; where you fall back to a mock, say so explicitly and name exactly what was not exercised for real. Add or update focused tests when behavior changes, and run the relevant verification before reporting completion.";
15
+ /**
16
+ * Returns the validation directive for a swarm task.
17
+ *
18
+ * @param mocksAllowed When true, the task has explicitly opted out of the
19
+ * real-integration default and may use mocks/stubs for unavailable
20
+ * dependencies.
21
+ */
22
+ export function buildSwarmValidationDirective(mocksAllowed) {
23
+ return mocksAllowed ? MOCKS_ALLOWED_DIRECTIVE : REAL_INTEGRATION_DIRECTIVE;
24
+ }
25
+ //# sourceMappingURL=validation-directive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-directive.js","sourceRoot":"","sources":["../../../src/agent/swarm/validation-directive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,0BAA0B,GAC/B,8mBAA8mB,CAAC;AAEhnB,MAAM,uBAAuB,GAC5B,yWAAyW,CAAC;AAE3W;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,YAAsB;IACnE,OAAO,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,0BAA0B,CAAC;AAC5E,CAAC","sourcesContent":["/**\n * Swarm validation directive\n *\n * Builds the \"## Validation\" section handed to every swarm teammate. The\n * default posture is end-to-end validation against real integrations: a worker\n * may not declare a task done on the strength of a mocked path. Mocks/stubs are\n * an explicit per-task opt-out (`SwarmTask.mocksAllowed`), not the baseline.\n *\n * This mirrors the orchestrator discipline that high-end coding agents apply at\n * the mission level, pushed down to the per-worker delegation prompt so the\n * default holds even for a single delegated task.\n */\n\nconst REAL_INTEGRATION_DIRECTIVE =\n\t\"Validate end-to-end against real integrations. The default is that every change is exercised through its real execution path — real services, real data, real auth — before you finish. Do not introduce mocks or stubs to make a check pass. Add or update focused tests when behavior changes, and run the relevant verification (build, lint, the touched tests, and the real end-to-end path) before reporting completion. If an integration genuinely cannot be exercised in this environment, stop and report it as a blocker rather than claiming success — never report that something works on the strength of a mocked path alone.\";\n\nconst MOCKS_ALLOWED_DIRECTIVE =\n\t\"This task is explicitly approved to use mocks or stubs where a real integration is unavailable. Prefer the real execution path wherever it exists; where you fall back to a mock, say so explicitly and name exactly what was not exercised for real. Add or update focused tests when behavior changes, and run the relevant verification before reporting completion.\";\n\n/**\n * Returns the validation directive for a swarm task.\n *\n * @param mocksAllowed When true, the task has explicitly opted out of the\n * real-integration default and may use mocks/stubs for unavailable\n * dependencies.\n */\nexport function buildSwarmValidationDirective(mocksAllowed?: boolean): string {\n\treturn mocksAllowed ? MOCKS_ALLOWED_DIRECTIVE : REAL_INTEGRATION_DIRECTIVE;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution-bridge.d.ts","sourceRoot":"","sources":["../../../src/agent/transport/tool-execution-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-execution-bridge.d.ts","sourceRoot":"","sources":["../../../src/agent/transport/tool-execution-bridge.ts"],"names":[],"mappings":"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"}
@@ -301,7 +301,10 @@ function buildLinkage(cfg, toolCall, organizationId, workspaceId, runtimeLinkage
301
301
  trimString(process.env.npm_package_name) ??
302
302
  "maestro",
303
303
  ...(agentRunId ? { runId: agentRunId } : {}),
304
- objectiveId: getEnvValue(["MAESTRO_OBJECTIVE_ID"]),
304
+ objectiveId: getEnvValue([
305
+ "MAESTRO_OBJECTIVE_ID",
306
+ "MAESTRO_EVALOPS_OBJECTIVE_ID",
307
+ ]),
305
308
  stepId: toolCall.id,
306
309
  actorId: trimString(cfg.user?.id) ?? getEnvValue(["MAESTRO_ACTOR_ID"]),
307
310
  surface: getEnvValue(["MAESTRO_SURFACE"]) ?? "maestro",