@desplega.ai/agent-swarm 2.5.3 → 2.6.0

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 (349) hide show
  1. package/README.md +2 -2
  2. package/dist/{acp-adapter-gr2fcyyj.js → acp-adapter-dgfakfpw.js} +9 -9
  3. package/dist/{actions-wv766ghf.js → actions-fbqma8aa.js} +21 -21
  4. package/dist/{amp-adapter-speb906t.js → amp-adapter-en0jy6hs.js} +4 -4
  5. package/dist/{app-ag29n14f.js → app-k8a5cgpp.js} +3 -3
  6. package/dist/{assistant-3x8bz3eg.js → assistant-a16433gr.js} +30 -26
  7. package/dist/{boot-reembed-jsmfrpzf.js → boot-reembed-6c1sjfnr.js} +1 -1
  8. package/dist/{boot-reembed-5b3d2eea.js → boot-reembed-f4nn561n.js} +1 -1
  9. package/dist/{boot-scrub-sweep-s73gerxy.js → boot-scrub-sweep-d4w9gajf.js} +4 -4
  10. package/dist/{boot-seeds-5zmax2wr.js → boot-seeds-9bmkspyw.js} +4 -4
  11. package/dist/{claude-adapter-hswdnm3t.js → claude-adapter-nys1kjxa.js} +9 -9
  12. package/dist/{claude-managed-adapter-cvbzj1h6.js → claude-managed-adapter-55207973.js} +3 -3
  13. package/dist/{claude-managed-setup-3k8m3hhc.js → claude-managed-setup-3cm35gey.js} +11 -4
  14. package/dist/{claude-sdk-session-fkbyk66x.js → claude-sdk-session-nw5yd8cp.js} +9313 -9260
  15. package/dist/{cli-210xd1f4.js → cli-03gg9pd1.js} +4 -4
  16. package/dist/{cli-kxpfx2xr.js → cli-0z1xjzwa.js} +2 -2
  17. package/dist/cli-1tem6ns9.js +894 -0
  18. package/dist/{cli-25j01dpj.js → cli-24j1jeeb.js} +3 -3
  19. package/dist/{cli-ta8bd7th.js → cli-2sjhpsns.js} +2 -2
  20. package/dist/{cli-p859hcc8.js → cli-39aet655.js} +2 -2
  21. package/dist/{cli-g1cw7xtt.js → cli-39rrw8yp.js} +1 -1
  22. package/dist/{cli-e2ar4bp1.js → cli-3aqd4jaa.js} +121 -47
  23. package/dist/{cli-jjznk3f7.js → cli-3fwqy71j.js} +69 -35
  24. package/dist/{cli-p9rafdrb.js → cli-3gfvmzht.js} +7 -7
  25. package/dist/{cli-03vpq45j.js → cli-3ndmpxxv.js} +2 -2
  26. package/dist/{cli-aecdcr77.js → cli-4hxrf0p4.js} +228 -74
  27. package/dist/{cli-mz9afxxf.js → cli-4rf0f5vg.js} +15 -3
  28. package/dist/{cli-qzme5949.js → cli-5rj83bam.js} +284 -202
  29. package/dist/{cli-fsdprwrg.js → cli-5sckpqcx.js} +2 -2
  30. package/dist/{cli-cz5nmdxt.js → cli-683y0b3a.js} +2 -2
  31. package/dist/{cli-3ngdk5te.js → cli-6y51ryva.js} +2 -2
  32. package/dist/{cli-n4c8e3s5.js → cli-708wdy32.js} +1 -1
  33. package/dist/{cli-pasyvjmm.js → cli-737pyqxr.js} +1 -1
  34. package/dist/{cli-gx4rm0qx.js → cli-7enjwya9.js} +1 -1
  35. package/dist/{cli-6x9ma5w5.js → cli-803188pb.js} +1 -1
  36. package/dist/{cli-avdvgcay.js → cli-9abdgn5t.js} +28 -9
  37. package/dist/{cli-99xgw26r.js → cli-a2rr0fmg.js} +1 -1
  38. package/dist/{cli-e5bxnjps.js → cli-a34pr3w1.js} +7 -7
  39. package/dist/{cli-502eqv93.js → cli-abkm71vr.js} +1 -1
  40. package/dist/{cli-mmhj8vd7.js → cli-ag2yrnt5.js} +11 -2
  41. package/dist/{cli-n45mr7zh.js → cli-aj8djyqt.js} +5 -5
  42. package/dist/{cli-1fc85mvt.js → cli-art7c1zh.js} +5 -5
  43. package/dist/{cli-40jsnrjm.js → cli-az25fn5f.js} +10 -8
  44. package/dist/{cli-9s05422w.js → cli-bqztfyve.js} +1 -1
  45. package/dist/{cli-bn0rewsy.js → cli-c081bj3b.js} +2 -2
  46. package/dist/{cli-svrj71pg.js → cli-c2habvsf.js} +12 -12
  47. package/dist/{cli-s49hpn37.js → cli-ca6banwz.js} +85 -19
  48. package/dist/{cli-hhxjnjzs.js → cli-cz37jqss.js} +12 -10
  49. package/dist/{cli-6n8axjv1.js → cli-d2dpf95n.js} +2 -2
  50. package/dist/{cli-tx00c0h6.js → cli-dqygeeh5.js} +17 -1
  51. package/dist/{cli-z21whrrg.js → cli-emhjcj2y.js} +17 -17
  52. package/dist/{cli-e8jyq7d8.js → cli-esakngh8.js} +7 -3
  53. package/dist/{cli-ha9rmwgq.js → cli-fb8m699c.js} +2 -2
  54. package/dist/{cli-35gtk1p6.js → cli-ffvsj2qw.js} +44 -13
  55. package/dist/{cli-ce0ak9ms.js → cli-g20jjwt4.js} +26 -26
  56. package/dist/{cli-kxawjrxg.js → cli-g8ka5j4j.js} +772 -194
  57. package/dist/{cli-vwn81jbs.js → cli-gf95q3bm.js} +5 -5
  58. package/dist/{cli-s53vp709.js → cli-gnsb1zxa.js} +2 -2
  59. package/dist/{cli-nwyw3zhg.js → cli-gxee0bqa.js} +1 -1
  60. package/dist/{cli-gpv60278.js → cli-hfeb68z4.js} +7 -7
  61. package/dist/{cli-0ebey9hg.js → cli-j6rktc91.js} +1 -1
  62. package/dist/{cli-ewm3pwbq.js → cli-k21gx5ht.js} +46 -23
  63. package/dist/{cli-egjggehm.js → cli-kf4jree9.js} +2 -2
  64. package/dist/{cli-dabehxhp.js → cli-kt907da6.js} +1 -1
  65. package/dist/{cli-p0rzjkya.js → cli-m5a9m0ak.js} +32 -13
  66. package/dist/{cli-fzcn3d87.js → cli-m70bajzr.js} +3 -3
  67. package/dist/{cli-w1zwctj2.js → cli-mtnj4fwa.js} +11 -5
  68. package/dist/{cli-gpsz7g88.js → cli-mvjz5an3.js} +16 -12
  69. package/dist/{cli-hcpj2xqz.js → cli-n7asmce6.js} +225 -3
  70. package/dist/{cli-y561h5a9.js → cli-nn6vx2mq.js} +5 -5
  71. package/dist/cli-nq677csy.js +140 -0
  72. package/dist/{cli-a5ebc95n.js → cli-pfk92eqz.js} +18 -15
  73. package/dist/{cli-p6zs9h4y.js → cli-rr7zx19j.js} +767 -249
  74. package/dist/{cli-qgf8emrn.js → cli-sqma6vw1.js} +10 -7
  75. package/dist/{cli-0xk505e8.js → cli-sxgtf5fw.js} +1 -1
  76. package/dist/{cli-nzfnt2gs.js → cli-tf1n0r0b.js} +1 -1
  77. package/dist/{cli-qqzmjxkf.js → cli-v49fkghp.js} +11 -6
  78. package/dist/{cli-x77gen2p.js → cli-w2656ka1.js} +7 -7
  79. package/dist/{cli-5kqnemen.js → cli-yvy48785.js} +1 -1
  80. package/dist/{cli-8s5wx3nz.js → cli-zqne1qcj.js} +44 -17
  81. package/dist/cli.js +22 -22
  82. package/dist/{codex-adapter-n8ka66vf.js → codex-adapter-d95q4qsn.js} +7 -7
  83. package/dist/{codex-hook-e2he7aca.js → codex-hook-brpnycn5.js} +1 -1
  84. package/dist/{codex-login-rn7c5gxt.js → codex-login-8cg0vhf2.js} +1 -1
  85. package/dist/{codex-session-runner-fsebts37.js → codex-session-runner-gdwd8h0c.js} +8 -8
  86. package/dist/{commands-t04rt2pc.js → commands-jqmgk54b.js} +2 -2
  87. package/dist/{controller-rgna04r2.js → controller-z3jq589f.js} +30 -4
  88. package/dist/{controllers-connect-bqm1rtft.js → controllers-connect-r2za39ef.js} +23 -23
  89. package/dist/{cursor-adapter-swr2k95y.js → cursor-adapter-4mr4jgkw.js} +2 -3
  90. package/dist/{db-a4m7haw0.js → db-ppv2tze7.js} +3 -3
  91. package/dist/{db-24ck09xy.js → db-w36wwb5g.js} +4 -2
  92. package/dist/{devin-adapter-4ycy4vrf.js → devin-adapter-byen2cxt.js} +1 -1
  93. package/dist/{dispatcher-nwf9ss0q.js → dispatcher-pv5h77vf.js} +20 -20
  94. package/dist/{docker-nfy2gc8t.js → docker-fdzyewpz.js} +4 -4
  95. package/dist/{dsh-adapter-kpdnhjst.js → dsh-adapter-d4pdpb3r.js} +2 -3
  96. package/dist/{e2b-9gkdhm3c.js → e2b-222hsajc.js} +2 -2
  97. package/dist/{e2b-cjtf8k1z.js → e2b-fn3zacvt.js} +2 -2
  98. package/dist/{easter-egg-3d-e4qv8dxj.js → easter-egg-3d-4sp4dvmc.js} +1 -1
  99. package/dist/{event-bus-3z78ep5n.js → event-bus-pghg8hqy.js} +1 -1
  100. package/dist/{execute-0xpz8950.js → execute-jev839y1.js} +1 -1
  101. package/dist/{external-channel-j1e2p34p.js → external-channel-y6nkzhnn.js} +2 -2
  102. package/dist/{grok-adapter-qtjz0whk.js → grok-adapter-t08b9ntm.js} +10 -10
  103. package/dist/handlers-eqsnmv95.js +41 -0
  104. package/dist/{heartbeat-vtesda5d.js → heartbeat-vn31xwdk.js} +23 -23
  105. package/dist/{hook-b2hhj6rd.js → hook-6d0zbvvt.js} +6 -5
  106. package/dist/{hook-8wqaszda.js → hook-cpjs8q51.js} +13 -7
  107. package/dist/{http-mxcqhhcs.js → http-9c6medda.js} +1085 -136
  108. package/dist/{index-spwxjgay.js → index-38t35h0n.js} +20 -20
  109. package/dist/{index-1r8wfpzs.js → index-g6k9tctj.js} +1 -1
  110. package/dist/{index-srg522m6.js → index-k0yt1tvq.js} +20 -20
  111. package/dist/{index-31ceyf42.js → index-pkma1yf8.js} +1 -1
  112. package/dist/{index-n1vbvta9.js → index-qhjf2htm.js} +29 -24
  113. package/dist/index-yqgbfgaj.js +43 -0
  114. package/dist/{keepalive-dsd8rtgx.js → keepalive-em0117bp.js} +4 -4
  115. package/dist/lead-23e7z59t.js +79 -0
  116. package/dist/{maintenance-jqmqwnet.js → maintenance-kbme3qy9.js} +1 -1
  117. package/dist/{oauth-refresh-sweep-q2c3bnvm.js → oauth-refresh-sweep-xysj4yse.js} +3 -3
  118. package/dist/{onboard-w4yd7s8t.js → onboard-p6q0vz97.js} +3 -3
  119. package/dist/{opencode-adapter-9tppvxar.js → opencode-adapter-esv3k9yn.js} +7 -7
  120. package/dist/{otel-impl-f36byzbd.js → otel-impl-54qhqh1z.js} +2 -2
  121. package/dist/{pi-mono-adapter-tqsge1ay.js → pi-mono-adapter-mymbwhj0.js} +41 -14
  122. package/dist/{pricing-refresh-xvak5p4v.js → pricing-refresh-yb75wv33.js} +3 -3
  123. package/dist/{rbac-roles-gfn30fb8.js → rbac-roles-1vp2mw4p.js} +2 -2
  124. package/dist/{rbac-roles-682k2mt5.js → rbac-roles-dexhc9x8.js} +1 -1
  125. package/dist/render-v2-tjay5hhf.js +16 -0
  126. package/dist/{resume-2dvq348g.js → resume-8ayf37g5.js} +11 -9
  127. package/dist/{runtime-bt5pkpm1.js → runtime-hqe5cqcd.js} +1 -1
  128. package/dist/{session-access-7f21ekq9.js → session-access-fdhp987s.js} +4 -4
  129. package/dist/session-source-backfill-qgtc86z1.js +110 -0
  130. package/dist/{setup-epffxtbk.js → setup-4rrmqcq3.js} +1 -1
  131. package/dist/{virtual-modules-mnfbh5mr.js → virtual-modules-52km00d6.js} +2 -2
  132. package/dist/{work-objects-xz1a5rqk.js → work-objects-p28fgd70.js} +23 -23
  133. package/dist/worker-e3w7vye1.js +79 -0
  134. package/dist/{x-pbpezr0s.js → x-wxrzvzx8.js} +2 -2
  135. package/openapi.json +1323 -16
  136. package/package.json +5 -5
  137. package/plugin/commands/create-pr.md +2 -2
  138. package/plugin/pi-skills/create-pr/SKILL.md +2 -2
  139. package/src/assets/source-key.ts +95 -0
  140. package/src/be/db/api-keys.ts +80 -0
  141. package/src/be/db/approvals.ts +48 -0
  142. package/src/be/db/session-labels.ts +28 -0
  143. package/src/be/db/session-moves.ts +5 -6
  144. package/src/be/db/session-tree.ts +153 -14
  145. package/src/be/db/tasks/read.ts +11 -0
  146. package/src/be/db/tasks/write.ts +21 -6
  147. package/src/be/db/workflow-idempotency.ts +183 -0
  148. package/src/be/db/workflow-runs.ts +500 -7
  149. package/src/be/db-retention.ts +61 -6
  150. package/src/be/db.ts +126 -131
  151. package/src/be/memory/providers/openai-embedding.ts +5 -1
  152. package/src/be/migrations/242_workflow_idempotency_keys.sql +40 -0
  153. package/src/be/migrations/244_api_key_validation.sql +4 -0
  154. package/src/be/onboarding.ts +4 -0
  155. package/src/be/scripts/typecheck.ts +1 -1
  156. package/src/be/sealed-json.ts +1 -0
  157. package/src/be/seed-scripts/catalog/compound-insights.inline.ts +2 -2
  158. package/src/be/seed-scripts/catalog/compound-insights.ts +2 -2
  159. package/src/be/seed-skills/bundled-files.generated.json +1 -1
  160. package/src/be/session-source-backfill.ts +163 -0
  161. package/src/be/sql-connections.ts +7 -1
  162. package/src/be/swarm-config-guard.ts +3 -0
  163. package/src/be/users.ts +9 -0
  164. package/src/comb/review-batch.ts +28 -1
  165. package/src/comb/templates.ts +7 -2
  166. package/src/commands/claude-managed-setup.ts +7 -1
  167. package/src/commands/controller.ts +33 -0
  168. package/src/commands/credential-refresh.ts +76 -1
  169. package/src/commands/credential-wait.ts +2 -2
  170. package/src/commands/provider-credentials.ts +210 -170
  171. package/src/commands/runner.ts +31 -6
  172. package/src/extensions/apply-task-create.ts +64 -11
  173. package/src/extensions/contract-types.generated.ts +1 -1
  174. package/src/extensions/contract.ts +30 -0
  175. package/src/extensions/dispatcher.ts +4 -0
  176. package/src/extensions/post-bridge.ts +8 -0
  177. package/src/hooks/context-bound-note.ts +196 -0
  178. package/src/hooks/hook.ts +12 -0
  179. package/src/http/all-routes.ts +2 -0
  180. package/src/http/api-keys.ts +53 -0
  181. package/src/http/assets.ts +15 -0
  182. package/src/http/codex-oauth-accounts.ts +191 -0
  183. package/src/http/comb.ts +15 -2
  184. package/src/http/config.ts +49 -17
  185. package/src/http/core.ts +6 -0
  186. package/src/http/fleet-benchmark.ts +5 -2
  187. package/src/http/idempotency-key.ts +117 -0
  188. package/src/http/index.ts +11 -0
  189. package/src/http/integrations.ts +5 -1
  190. package/src/http/kv.ts +8 -3
  191. package/src/http/onboarding.ts +6 -1
  192. package/src/http/pool-keys.ts +354 -0
  193. package/src/http/sessions.ts +37 -12
  194. package/src/http/stats.ts +1 -0
  195. package/src/http/status.ts +26 -12
  196. package/src/http/tasks.ts +3 -0
  197. package/src/http/used-by.ts +7 -2
  198. package/src/http/workflows.ts +207 -33
  199. package/src/integrations/chat-sdk/inbound.ts +27 -0
  200. package/src/kv-reserved-namespaces.ts +19 -0
  201. package/src/prompts/context-bound-note.ts +48 -0
  202. package/src/prompts/session-templates.ts +25 -1
  203. package/src/providers/acp-targets.ts +1 -1
  204. package/src/providers/amp-adapter.ts +30 -8
  205. package/src/providers/claude-adapter.ts +34 -5
  206. package/src/providers/claude-managed-adapter.ts +42 -9
  207. package/src/providers/claude-sdk-session.ts +10 -0
  208. package/src/providers/claude-session-events.ts +13 -0
  209. package/src/providers/codex-adapter.ts +83 -11
  210. package/src/providers/opencode-adapter.ts +18 -0
  211. package/src/providers/pi-mono-adapter.ts +35 -0
  212. package/src/runtime-providers/docker.ts +6 -2
  213. package/src/scheduler/scheduler.ts +3 -2
  214. package/src/scripts-runtime/swarm-sdk.ts +7 -1
  215. package/src/scripts-runtime/types/stdlib.d.ts +1 -1
  216. package/src/scripts-runtime/types/swarm-extension.d.ts +52 -8
  217. package/src/scripts-runtime/types/swarm-sdk.d.ts +1 -1
  218. package/src/slack/assistant.ts +7 -0
  219. package/src/slack/channel-labels.ts +74 -0
  220. package/src/slack/handlers.ts +8 -0
  221. package/src/slack/inbound-files.ts +5 -2
  222. package/src/slack/thread-buffer.ts +4 -0
  223. package/src/tasks/sibling-awareness.ts +12 -3
  224. package/src/telemetry-context.ts +5 -6
  225. package/src/telemetry-identity.ts +3 -3
  226. package/src/tests/amp-adapter.test.ts +97 -0
  227. package/src/tests/api-keys-validation.test.ts +170 -0
  228. package/src/tests/approval-requests.test.ts +10 -7
  229. package/src/tests/approval-sweeps.test.ts +12 -6
  230. package/src/tests/base-prompt.test.ts +1 -1
  231. package/src/tests/claude-hook-output.test.ts +79 -1
  232. package/src/tests/claude-managed-adapter.test.ts +321 -0
  233. package/src/tests/claude-routes-e2e.test.ts +7 -2
  234. package/src/tests/codex-adapter.test.ts +163 -0
  235. package/src/tests/codex-credential-pools.test.ts +120 -0
  236. package/src/tests/codex-gateway-route.test.ts +165 -0
  237. package/src/tests/codex-oauth-accounts.test.ts +357 -0
  238. package/src/tests/comb-review-batch.test.ts +63 -2
  239. package/src/tests/config-pool-keys.test.ts +533 -0
  240. package/src/tests/context-bound-note.test.ts +269 -0
  241. package/src/tests/credential-check.test.ts +290 -2
  242. package/src/tests/credential-refresh.test.ts +172 -1
  243. package/src/tests/db-retention.test.ts +9 -3
  244. package/src/tests/db-task-read-contract.test.ts +1 -0
  245. package/src/tests/db-task-write-contract.test.ts +1 -3
  246. package/src/tests/docs-index-footprint.test.js +3 -3
  247. package/src/tests/extensions-pre-task.test.ts +325 -0
  248. package/src/tests/fetch-resolved-env.test.ts +17 -0
  249. package/src/tests/fixtures/extensions/record-blocks/hooks.ts +10 -0
  250. package/src/tests/fixtures/extensions/record-blocks/manifest.json +7 -0
  251. package/src/tests/fixtures/extensions/record-task-create/hooks.ts +9 -0
  252. package/src/tests/fixtures/extensions/record-task-create/manifest.json +7 -0
  253. package/src/tests/fixtures/fake-amp.ts +22 -8
  254. package/src/tests/fixtures/held-template-render.ts +42 -0
  255. package/src/tests/fixtures/workflow-idempotency-trigger.child.ts +73 -0
  256. package/src/tests/fleet-benchmark.test.ts +8 -0
  257. package/src/tests/get-workflow-run-tool.test.ts +98 -0
  258. package/src/tests/integrations-http.test.ts +32 -2
  259. package/src/tests/internal-ai/complete-structured.test.ts +37 -1
  260. package/src/tests/internal-ai/credentials.test.ts +23 -0
  261. package/src/tests/kv-http.test.ts +32 -0
  262. package/src/tests/kv-tool.test.ts +25 -0
  263. package/src/tests/multi-runtime-registration.test.ts +12 -12
  264. package/src/tests/onboarding.test.ts +108 -1
  265. package/src/tests/openai-embedding-credentials.test.ts +35 -0
  266. package/src/tests/openapi-route-headers.test.ts +2 -0
  267. package/src/tests/opencode-adapter.test.ts +134 -0
  268. package/src/tests/openrouter-attribution-call-sites.test.ts +2 -2
  269. package/src/tests/org-website.test.ts +36 -0
  270. package/src/tests/pi-mono-adapter.test.ts +105 -0
  271. package/src/tests/prompt-template-session.test.ts +4 -3
  272. package/src/tests/provider-key-probes.test.ts +181 -0
  273. package/src/tests/rbac-e2e-helpers.test.ts +88 -1
  274. package/src/tests/rbac-e2e-helpers.ts +36 -11
  275. package/src/tests/runner-push-delivery.test.ts +25 -0
  276. package/src/tests/runtime-controller-liveness.test.ts +133 -0
  277. package/src/tests/runtime-providers-docker.test.ts +2 -0
  278. package/src/tests/script-connections.test.ts +5 -0
  279. package/src/tests/script-run-config-scope.test.ts +91 -3
  280. package/src/tests/script-runs-retention.test.ts +212 -0
  281. package/src/tests/sdk-allowlist.test.ts +39 -0
  282. package/src/tests/session-logs.test.ts +70 -0
  283. package/src/tests/session-source-backfill.test.ts +429 -0
  284. package/src/tests/session-source-keys.test.ts +236 -0
  285. package/src/tests/session-source-labels.test.ts +419 -0
  286. package/src/tests/sessions-detail-batch.test.ts +2 -0
  287. package/src/tests/sessions-move.test.ts +131 -0
  288. package/src/tests/sessions-tree.test.ts +336 -2
  289. package/src/tests/slack-inbound-files.test.ts +103 -23
  290. package/src/tests/status.test.ts +101 -18
  291. package/src/tests/tasks-workflow-run-filter.test.ts +146 -0
  292. package/src/tests/test-net.ts +31 -0
  293. package/src/tests/transcription.test.ts +8 -0
  294. package/src/tests/used-by-route.test.ts +11 -0
  295. package/src/tests/workflow-cascade-cancel.test.ts +1341 -0
  296. package/src/tests/workflow-foreach-supersede-retry.test.ts +488 -0
  297. package/src/tests/workflow-http-v2.test.ts +131 -0
  298. package/src/tests/workflow-idempotency.test.ts +915 -0
  299. package/src/tests/workflow-step-order.test.ts +92 -0
  300. package/src/tests/workflow-sub-workflow.test.ts +30 -0
  301. package/src/tools/get-tasks.ts +8 -0
  302. package/src/tools/kv/kv-read-auth.ts +4 -2
  303. package/src/tools/task-action.ts +1 -1
  304. package/src/tools/workflows/cancel-workflow-run.ts +1 -1
  305. package/src/tools/workflows/get-workflow-run.ts +14 -4
  306. package/src/types.ts +24 -0
  307. package/src/utils/company-profile.ts +51 -1
  308. package/src/utils/context-window.ts +8 -6
  309. package/src/utils/credentials.ts +5 -2
  310. package/src/utils/internal-ai/complete-structured.ts +5 -0
  311. package/src/utils/internal-ai/credentials.ts +4 -3
  312. package/src/utils/provider-key-probes.ts +328 -0
  313. package/src/utils/transcription.ts +4 -1
  314. package/src/workflows/approval-cancel.ts +15 -13
  315. package/src/workflows/approval-notifications.ts +5 -1
  316. package/src/workflows/checkpoint.ts +6 -3
  317. package/src/workflows/engine.ts +30 -8
  318. package/src/workflows/executors/foreach.ts +2 -2
  319. package/src/workflows/executors/sub-workflow.ts +8 -1
  320. package/src/workflows/foreach-driver.ts +10 -3
  321. package/src/workflows/foreach-join.ts +29 -6
  322. package/src/workflows/recovery.ts +6 -1
  323. package/src/workflows/resume.ts +168 -56
  324. package/src/workflows/retry-poller.ts +49 -3
  325. package/src/workflows/task-step-routing.ts +29 -7
  326. package/templates/ai-toolbox.manifest.json +8 -8
  327. package/templates/community/open-prompt-showreel/PLAYBOOK.md +5 -6
  328. package/templates/community/open-prompt-showreel/lead-prompt.md +1 -1
  329. package/templates/community/open-prompt-showreel/skills/open-prompt-showreel/SKILL.md +4 -4
  330. package/templates/skills/agent-browser/SKILL.md +4 -4
  331. package/templates/skills/agent-browser/content.md +4 -4
  332. package/templates/skills/code-quality/config.json +1 -1
  333. package/templates/skills/code-quality/content.md +2 -2
  334. package/templates/skills/delegate-work/content.md +29 -25
  335. package/templates/skills/delegate-work/files/scripts/codex-exec.sh +5 -5
  336. package/templates/skills/qa/content.md +2 -2
  337. package/templates/skills/researching/content.md +4 -0
  338. package/templates/skills/swarm-scripts/SKILL.md +1 -0
  339. package/templates/skills/swarm-scripts/content.md +1 -0
  340. package/templates/skills/work-on-task/SKILL.md +1 -1
  341. package/templates/skills/work-on-task/content.md +1 -1
  342. package/dist/cli-7421jzsw.js +0 -84
  343. package/dist/cli-e45e4m6b.js +0 -413
  344. package/dist/cli-zw88zjba.js +0 -307
  345. package/dist/handlers-19xr6dnz.js +0 -41
  346. package/dist/index-kw2mmat7.js +0 -43
  347. package/dist/lead-zyerk1x2.js +0 -79
  348. package/dist/render-v2-hgytz8nn.js +0 -12
  349. package/dist/worker-42t8emjt.js +0 -79
@@ -2,17 +2,17 @@ import {
2
2
  getKv2,
3
3
  upsertKv2,
4
4
  init_db3
5
- } from "./cli-kxawjrxg.js";
5
+ } from "./cli-g8ka5j4j.js";
6
6
  import {
7
7
  resolveIdentity,
8
8
  recordUnmappedIdentity
9
- } from "./cli-aecdcr77.js";
9
+ } from "./cli-4hxrf0p4.js";
10
10
  import {
11
11
  findUserByExternalId,
12
12
  findOrCreateUserByEmail,
13
13
  linkIdentity,
14
14
  init_users
15
- } from "./cli-e8jyq7d8.js";
15
+ } from "./cli-esakngh8.js";
16
16
 
17
17
  // src/slack/enrich.ts
18
18
  init_db3();
@@ -13,11 +13,11 @@ import {
13
13
  claudeMdLineageOf,
14
14
  planClaudeMdSync,
15
15
  init_profile_sync
16
- } from "./cli-gpv60278.js";
16
+ } from "./cli-hfeb68z4.js";
17
17
  import {
18
18
  scrubSecrets,
19
19
  init_secret_scrubber
20
- } from "./cli-n4c8e3s5.js";
20
+ } from "./cli-708wdy32.js";
21
21
 
22
22
  // src/commands/claude-md-session.ts
23
23
  init_file_lock();
@@ -13,11 +13,11 @@ async function createRuntimeProvider(kind, target = {}) {
13
13
  return new StaticRuntimeProvider;
14
14
  }
15
15
  case "docker": {
16
- const { DockerRuntimeProvider } = await import("./docker-nfy2gc8t.js");
16
+ const { DockerRuntimeProvider } = await import("./docker-fdzyewpz.js");
17
17
  return new DockerRuntimeProvider;
18
18
  }
19
19
  case "e2b": {
20
- const { E2BRuntimeProvider } = await import("./e2b-cjtf8k1z.js");
20
+ const { E2BRuntimeProvider } = await import("./e2b-fn3zacvt.js");
21
21
  return new E2BRuntimeProvider(target);
22
22
  }
23
23
  case "k8s":
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  scrubSecrets,
3
3
  init_secret_scrubber
4
- } from "./cli-n4c8e3s5.js";
4
+ } from "./cli-708wdy32.js";
5
5
 
6
6
  // src/providers/devin-adapter.ts
7
7
  init_secret_scrubber();
@@ -1,7 +1,18 @@
1
1
  import {
2
2
  getDbClient2,
3
+ listUndeliveredCancelledApprovalRequestIds,
4
+ init_approvals,
3
5
  getTaskById2,
4
6
  cancelTask2,
7
+ getRunLineageBlock,
8
+ getWorkflowRunTreeIds,
9
+ getWorkflowRunStatus,
10
+ getOpenWorkflowTreeTaskIds,
11
+ getTaskIdsWithDependents,
12
+ workflowRunTreeHasOpenWork,
13
+ cancelOpenWorkflowTreeSteps,
14
+ disarmWorkflowTreeRetries,
15
+ cancelLiveWorkflowTreeRuns,
5
16
  getChildWorkflowRunId,
6
17
  getWorkflowRunLineage,
7
18
  createForeachAttemptSteps,
@@ -15,14 +26,14 @@ import {
15
26
  getCompletedStepNodeIds2,
16
27
  getTaskByWorkflowRunStepId2,
17
28
  detachTaskFromWorkflowRunStep2,
29
+ getApprovalRequestById2,
18
30
  cancelPendingApprovalRequestsForRun2,
19
- listCancelledApprovalRequestsForRun2,
20
31
  getWaitStateById2,
21
32
  getPendingEventWaitNames2,
22
33
  getPendingWaitsByEvent2,
23
34
  resolveWaitState2,
24
35
  init_db3
25
- } from "./cli-kxawjrxg.js";
36
+ } from "./cli-g8ka5j4j.js";
26
37
  import {
27
38
  BaseExecutor,
28
39
  postApprovalCancellationUpdates,
@@ -42,6 +53,7 @@ import {
42
53
  findReadyNodes,
43
54
  startForeachDrive,
44
55
  FOREACH_TERMINAL_STEP_STATUSES,
56
+ isRetryPending,
45
57
  parseSyntheticNodeId,
46
58
  resolveForeachParent,
47
59
  settleForeachChild,
@@ -49,16 +61,16 @@ import {
49
61
  stepFailureMode,
50
62
  getNextTargets,
51
63
  getSuccessors
52
- } from "./cli-jjznk3f7.js";
64
+ } from "./cli-3fwqy71j.js";
53
65
  import {
54
66
  workflowEventBus2,
55
67
  init_event_bus
56
- } from "./cli-dabehxhp.js";
68
+ } from "./cli-kt907da6.js";
57
69
  import {
58
70
  RetryPolicySchema,
59
71
  SUPERSEDED_WORKFLOW_TASK_REASON,
60
72
  init_types
61
- } from "./cli-mz9afxxf.js";
73
+ } from "./cli-4rf0f5vg.js";
62
74
  import {
63
75
  init_zod
64
76
  } from "./cli-4chz1hye.js";
@@ -76,7 +88,7 @@ import {
76
88
  import {
77
89
  scrubSecrets,
78
90
  init_secret_scrubber
79
- } from "./cli-n4c8e3s5.js";
91
+ } from "./cli-708wdy32.js";
80
92
 
81
93
  // src/workflows/approval-resolution.ts
82
94
  function shapeApprovalResolution(registry, definition, nodeId, parkedOutput, approval) {
@@ -98,6 +110,7 @@ function shapeApprovalResolution(registry, definition, nodeId, parkedOutput, app
98
110
 
99
111
  // src/workflows/resume.ts
100
112
  init_db3();
113
+ init_approvals();
101
114
  init_workflow_runs();
102
115
  init_types();
103
116
  init_secret_scrubber();
@@ -184,8 +197,13 @@ class SubWorkflowExecutor extends BaseExecutor {
184
197
  throw err;
185
198
  }
186
199
  const child = await db.getWorkflowRun(childRunId);
187
- if (!child)
188
- return { status: "failed", error: `Child workflow run ${childRunId} not found` };
200
+ if (!child) {
201
+ return {
202
+ status: "failed",
203
+ error: `Child workflow run ${childRunId} not found`,
204
+ retryable: false
205
+ };
206
+ }
189
207
  return this.settle(child, config.workflowId);
190
208
  }
191
209
  settle(child, workflowId) {
@@ -490,6 +508,7 @@ function computeNextPort(mode, status) {
490
508
 
491
509
  // src/workflows/task-step-routing.ts
492
510
  init_db3();
511
+ init_workflow_runs();
493
512
  init_types();
494
513
  var UNCLAIMED = {
495
514
  claimed: false,
@@ -547,6 +566,8 @@ async function checkpointPortStepAndResolveSuccessors(def, runId, stepId, nodeId
547
566
  if (!run || run.status !== "waiting" && run.status !== "running") {
548
567
  return UNCLAIMED;
549
568
  }
569
+ if (await getRunLineageBlock(runId))
570
+ return UNCLAIMED;
550
571
  if (resolveForeachParent(def, nodeId)) {
551
572
  return toRoutingResult(await settleForeachChild(def, runId, stepId, { status: "completed", output, nextPort }, ctx, {
552
573
  registry
@@ -570,12 +591,14 @@ var SUPERSEDE_RETRY_POLICY = {
570
591
  maxDelayMs: 30000
571
592
  };
572
593
  async function scheduleTaskStepRetry(def, runId, step, taskId, reason) {
573
- const node = def.nodes.find((n) => n.id === step.nodeId);
594
+ const foreachParent = resolveForeachParent(def, step.nodeId);
595
+ const node = resolveStepNode(def, step.nodeId);
574
596
  if (!node || node.type !== "agent-task")
575
597
  return "not-eligible";
598
+ const declaredRetry = foreachParent ? foreachParent.retry : node.retry;
576
599
  let policy;
577
- if (node.retry) {
578
- const parsed = RetryPolicySchema.safeParse(node.retry);
600
+ if (declaredRetry) {
601
+ const parsed = RetryPolicySchema.safeParse(declaredRetry);
579
602
  if (!parsed.success)
580
603
  return "not-eligible";
581
604
  policy = parsed.data;
@@ -590,6 +613,13 @@ async function scheduleTaskStepRetry(def, runId, step, taskId, reason) {
590
613
  return "not-claimed";
591
614
  if (!await isTaskBoundToStep(taskId, step.id))
592
615
  return "not-claimed";
616
+ if (foreachParent) {
617
+ const run = await getWorkflowRun2(runId);
618
+ if (run?.status !== "running" && run?.status !== "waiting")
619
+ return "not-eligible";
620
+ }
621
+ if (await getRunLineageBlock(runId))
622
+ return "not-claimed";
593
623
  if (current.retryCount >= policy.maxRetries)
594
624
  return "not-eligible";
595
625
  await detachTaskFromWorkflowRunStep2(taskId);
@@ -610,6 +640,8 @@ async function completeTaskStepAndResolveSuccessors(def, runId, step, output, ct
610
640
  return UNCLAIMED;
611
641
  if (ownerTaskId && !await isTaskBoundToStep(ownerTaskId, step.id))
612
642
  return UNCLAIMED;
643
+ if (await getRunLineageBlock(runId))
644
+ return UNCLAIMED;
613
645
  if (resolveForeachParent(def, step.nodeId)) {
614
646
  return toRoutingResult(await settleForeachChild(def, runId, step.id, {
615
647
  status: "completed",
@@ -750,10 +782,14 @@ async function resumeFromTaskCompletionUnguarded(event, registry) {
750
782
  }
751
783
  async function finalizeOrWait2(runId) {
752
784
  await getDbClient2().transaction(async () => {
785
+ const status = await getWorkflowRunStatus(runId);
786
+ if (status !== "running" && status !== "waiting")
787
+ return;
788
+ if (await getRunLineageBlock(runId))
789
+ return;
753
790
  const steps = await getWorkflowRunStepsByRunId2(runId);
754
791
  if (hasRunningStep(steps)) {
755
- const run = await getWorkflowRun2(runId);
756
- if (run?.status === "waiting")
792
+ if (status === "waiting")
757
793
  await updateWorkflowRun2(runId, { status: "running" });
758
794
  return;
759
795
  }
@@ -872,6 +908,9 @@ async function retryFailedRun2(runId, registry) {
872
908
  const current = await getWorkflowRun2(runId);
873
909
  if (!current || current.status !== "failed")
874
910
  return null;
911
+ const blocked = await getRunLineageBlock(runId);
912
+ if (blocked)
913
+ throw new Error(`Retry not started, run left failed: ${blocked}`);
875
914
  const currentSteps = await getWorkflowRunStepsByRunId2(runId);
876
915
  const attempts = foreachRetryAttempts(workflow.definition, [
877
916
  ...latestStepPerNode(currentSteps).values()
@@ -879,6 +918,11 @@ async function retryFailedRun2(runId, registry) {
879
918
  const capError = foreachRetryCapError(currentSteps.length, attempts);
880
919
  if (capError)
881
920
  throw new Error(`Retry not started, run left failed: ${capError}`);
921
+ for (const step of currentSteps) {
922
+ if (isRetryPending(step) && resolveForeachParent(workflow.definition, step.nodeId)) {
923
+ await updateWorkflowRunStep2(step.id, { nextRetryAt: null });
924
+ }
925
+ }
882
926
  if (!foreachParent) {
883
927
  await updateWorkflowRunStep2(failedStep.id, {
884
928
  status: shouldRetryFailedNode ? "pending" : "cancelled",
@@ -941,52 +985,80 @@ function foreachRetryCapError(existingSteps, attempts) {
941
985
  return null;
942
986
  return `foreach retry would reach ${maxSteps} total steps (WORKFLOW_MAX_STEPS_PER_RUN): ${existingSteps} existing + ${added} new attempts leaves no room for the retry walk`;
943
987
  }
988
+ var TERMINAL_RUN_STATUSES = new Set(["completed", "failed", "cancelled", "skipped"]);
944
989
  async function cancelWorkflowRunRows2(runId, cancelReason) {
945
- const terminalStatuses = ["completed", "failed", "cancelled", "skipped"];
946
990
  const now = new Date().toISOString();
991
+ const settledTree = await getDbClient2().transaction(async () => {
992
+ if (await getWorkflowRunStatus(runId) !== "cancelled")
993
+ return null;
994
+ const ids = await getWorkflowRunTreeIds(runId);
995
+ return await workflowRunTreeHasOpenWork(ids) ? null : ids;
996
+ }, { readOnly: true });
997
+ if (settledTree)
998
+ return { cancelled: false, runIds: settledTree };
947
999
  return await getDbClient2().transaction(async () => {
948
- const current = await getWorkflowRun2(runId);
949
- if (!current || terminalStatuses.includes(current.status))
950
- return false;
951
- const steps = await getWorkflowRunStepsByRunId2(runId);
952
- for (const step of steps) {
953
- if (terminalStatuses.includes(step.status))
954
- continue;
955
- const task = await getTaskByWorkflowRunStepId2(step.id);
956
- if (task) {
957
- await cancelTask2(task.id, cancelReason);
958
- }
959
- await updateWorkflowRunStep2(step.id, {
960
- status: "cancelled",
961
- error: cancelReason,
962
- finishedAt: now
963
- });
1000
+ const rootStatus = await getWorkflowRunStatus(runId);
1001
+ if (!rootStatus || TERMINAL_RUN_STATUSES.has(rootStatus) && rootStatus !== "cancelled") {
1002
+ return { cancelled: false, runIds: [] };
964
1003
  }
965
- await cancelPendingApprovalRequestsForRun2(runId, cancelReason);
966
- await updateWorkflowRun2(runId, {
967
- status: "cancelled",
968
- error: cancelReason,
969
- finishedAt: now
970
- });
971
- return true;
1004
+ const runIds = await getWorkflowRunTreeIds(runId);
1005
+ const openTaskIds = await getOpenWorkflowTreeTaskIds(runIds);
1006
+ const withDependents = openTaskIds.length > 0 ? await getTaskIdsWithDependents() : new Set;
1007
+ for (const taskId of openTaskIds) {
1008
+ await cancelTask2(taskId, cancelReason, { cascadeDependents: withDependents.has(taskId) });
1009
+ }
1010
+ await cancelOpenWorkflowTreeSteps(runIds, cancelReason, now);
1011
+ await disarmWorkflowTreeRetries(runIds, now);
1012
+ for (const id of runIds)
1013
+ await cancelPendingApprovalRequestsForRun2(id, cancelReason);
1014
+ await cancelLiveWorkflowTreeRuns(runIds.slice(1), cancelReason, now);
1015
+ if (rootStatus !== "cancelled") {
1016
+ await updateWorkflowRun2(runId, { status: "cancelled", error: cancelReason, finishedAt: now });
1017
+ }
1018
+ return { cancelled: rootStatus !== "cancelled", runIds };
972
1019
  });
973
1020
  }
974
- async function cancelWorkflowRun2(runId, reason) {
975
- const run = await getWorkflowRun2(runId);
1021
+ var inFlightCancels = new Map;
1022
+ function cancelWorkflowRun2(runId, reason) {
1023
+ const inFlight = inFlightCancels.get(runId);
1024
+ if (inFlight)
1025
+ return inFlight;
1026
+ const cancel = cancelWorkflowRunOnce(runId, reason).finally(() => {
1027
+ inFlightCancels.delete(runId);
1028
+ });
1029
+ inFlightCancels.set(runId, cancel);
1030
+ return cancel;
1031
+ }
1032
+ async function cancelWorkflowRunOnce(runId, reason) {
1033
+ const run = await getWorkflowRun2(runId, "display");
976
1034
  if (!run)
977
1035
  throw new Error("Workflow run not found");
978
- const terminalStatuses = ["completed", "failed", "cancelled", "skipped"];
979
- if (terminalStatuses.includes(run.status) && run.status !== "cancelled") {
1036
+ if (TERMINAL_RUN_STATUSES.has(run.status) && run.status !== "cancelled") {
980
1037
  throw new Error(`Cannot cancel run in '${run.status}' state`);
981
1038
  }
982
1039
  const cancelReason = reason ?? "Cancelled by user";
983
- const applied = await cancelWorkflowRunRows2(runId, cancelReason);
984
- const cancelledApprovals = await listCancelledApprovalRequestsForRun2(runId);
985
- const latestRun = await getWorkflowRun2(runId);
986
- if (!applied && latestRun?.status !== "cancelled") {
1040
+ const { cancelled, runIds } = await cancelWorkflowRunRows2(runId, cancelReason);
1041
+ const latestRun = await getWorkflowRun2(runId, "display");
1042
+ if (!cancelled && latestRun?.status !== "cancelled") {
987
1043
  throw new Error(`Cannot cancel run in '${latestRun?.status ?? "missing"}' state`);
988
1044
  }
989
- await postApprovalCancellationUpdates(cancelledApprovals, applied ? cancelReason : latestRun?.error ?? cancelReason);
1045
+ await postTreeApprovalCancellations2(runIds, cancelled ? cancelReason : latestRun?.error ?? cancelReason);
1046
+ }
1047
+ async function postTreeApprovalCancellations2(runIds, reason, options = {}) {
1048
+ try {
1049
+ const approvals = [];
1050
+ for (const id of await listUndeliveredCancelledApprovalRequestIds(runIds)) {
1051
+ if (id === options.exceptRequestId)
1052
+ continue;
1053
+ const approval = await getApprovalRequestById2(id);
1054
+ if (approval)
1055
+ approvals.push(approval);
1056
+ }
1057
+ if (approvals.length > 0)
1058
+ await postApprovalCancellationUpdates(approvals, reason);
1059
+ } catch (err) {
1060
+ console.error("[workflows] approval cancellation updates not posted:", scrubSecrets(err instanceof Error ? err.message : String(err)));
1061
+ }
990
1062
  }
991
1063
  async function resumeFromApprovalResolution(event, registry) {
992
1064
  await failClosedOnUnreadableReplay(event.workflowRunId, event.workflowRunStepId, () => resumeFromApprovalResolutionUnguarded(event, registry));
@@ -1084,6 +1156,8 @@ async function resumeFromChildRun2(parentStepId, registry) {
1084
1156
  const current = await getWorkflowRunStep2(step.id);
1085
1157
  if (!current || current.status !== "waiting")
1086
1158
  return null;
1159
+ if (await getRunLineageBlock(run.id))
1160
+ return null;
1087
1161
  const childId = await getChildWorkflowRunId(step.id, current.retryCount);
1088
1162
  const child = childId ? await getWorkflowRun2(childId) : null;
1089
1163
  const outcome = child ? childRunOutcome(child) : { error: `Child workflow run of step ${parentStepId} was deleted`, retryable: false };
@@ -1241,4 +1315,4 @@ function isPayloadInRun(payload, runId) {
1241
1315
  const rec = payload;
1242
1316
  return rec._runId === runId || rec.workflowRunId === runId;
1243
1317
  }
1244
- export { shapeApprovalResolution, SubWorkflowExecutor, WaitExecutor, failStepAndRunIfWaiting, checkpointPortStepAndResolveSuccessors, scheduleTaskStepRetry, completeTaskStepAndResolveSuccessors, setupWorkflowResumeListener2, finalizeOrWait2, retryFailedRun2, cancelWorkflowRunRows2, cancelWorkflowRun2, resumeWaitState2, recoverResolvedWaitState2, resumeFromChildRun2, initWaitBusSubscriptions2, subscribeWaitToBus2 };
1318
+ export { shapeApprovalResolution, SubWorkflowExecutor, WaitExecutor, failStepAndRunIfWaiting, checkpointPortStepAndResolveSuccessors, scheduleTaskStepRetry, completeTaskStepAndResolveSuccessors, setupWorkflowResumeListener2, finalizeOrWait2, retryFailedRun2, cancelWorkflowRunRows2, cancelWorkflowRun2, postTreeApprovalCancellations2, resumeWaitState2, recoverResolvedWaitState2, resumeFromChildRun2, initWaitBusSubscriptions2, subscribeWaitToBus2 };