@desplega.ai/agent-swarm 2.4.5 → 2.5.1

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 (275) hide show
  1. package/README.md +4 -2
  2. package/dist/{acp-adapter-2wdkktv6.js → acp-adapter-7g6bpwbk.js} +8 -6
  3. package/dist/{actions-c40ebcm4.js → actions-w8xd014k.js} +23 -21
  4. package/dist/{amp-adapter-wb67m95z.js → amp-adapter-z4qvhacj.js} +2 -2
  5. package/dist/{anthropic-messages-g6pqmqk4.js → anthropic-messages-txs190dd.js} +17 -20
  6. package/dist/{app-353vre8g.js → app-nndcvftq.js} +3 -3
  7. package/dist/{assistant-sj1njh23.js → assistant-hjmqyscx.js} +24 -22
  8. package/dist/{azure-openai-responses-9dbmj346.js → azure-openai-responses-9kfwhmn7.js} +18 -13
  9. package/dist/{boot-reembed-b9c3az3c.js → boot-reembed-r8rhf9h8.js} +1 -1
  10. package/dist/{boot-reembed-qdkvxeem.js → boot-reembed-vwcj2y5d.js} +1 -1
  11. package/dist/{boot-scrub-sweep-m3wh8eks.js → boot-scrub-sweep-fr9q36ne.js} +4 -4
  12. package/dist/{boot-seeds-j2273s54.js → boot-seeds-9jqwnegq.js} +4 -4
  13. package/dist/{claude-adapter-m7q0a085.js → claude-adapter-2f8b85df.js} +8 -6
  14. package/dist/{claude-managed-adapter-5ptb6tzs.js → claude-managed-adapter-gt6pa35d.js} +2 -2
  15. package/dist/{claude-managed-setup-smrqk5j5.js → claude-managed-setup-c3hp36ph.js} +4 -4
  16. package/dist/{claude-sdk-session-38xnz21e.js → claude-sdk-session-05kat8rv.js} +9012 -8928
  17. package/dist/{cli-b9fcxxev.js → cli-007cnhm1.js} +50 -4
  18. package/dist/{cli-j4rqdf2n.js → cli-03vpq45j.js} +2 -2
  19. package/dist/{cli-1sp861s4.js → cli-0jy85zz4.js} +11 -11
  20. package/dist/{cli-j99azg3g.js → cli-1dp1zj04.js} +5 -5
  21. package/dist/{cli-3r8samv3.js → cli-1f0gp9vz.js} +3 -2
  22. package/dist/{cli-94gwyg7m.js → cli-22rmcjkg.js} +9 -9
  23. package/dist/{cli-ms85309d.js → cli-2jg61wab.js} +11 -11
  24. package/dist/{cli-0bqteszy.js → cli-2nf3b08t.js} +328 -25
  25. package/dist/{cli-9yqgm9nd.js → cli-2wba1ac9.js} +161 -63
  26. package/dist/{cli-cxxe61f6.js → cli-3ee5z0q0.js} +2 -2
  27. package/dist/{cli-k8g16gz3.js → cli-3qv8naq8.js} +115 -119
  28. package/dist/{cli-60cgh1rv.js → cli-459fk97x.js} +7 -7
  29. package/dist/{cli-h7gc0b4r.js → cli-5m84zd2k.js} +55 -18
  30. package/dist/{cli-dvkmp9bt.js → cli-6ctwrf1z.js} +20 -10
  31. package/dist/{cli-848hxdwj.js → cli-6rg2jn2y.js} +2 -1
  32. package/dist/{cli-dk44dxec.js → cli-9mm5ade4.js} +1 -1
  33. package/dist/{cli-7c9qs530.js → cli-ajqhxtnz.js} +5 -5
  34. package/dist/{cli-be2161h1.js → cli-cah5detr.js} +6 -6
  35. package/dist/{cli-v8fjakwf.js → cli-cwyafhw1.js} +1 -1
  36. package/dist/{cli-wxbn3yfx.js → cli-cz5nmdxt.js} +2 -2
  37. package/dist/{cli-wt645v7q.js → cli-dabehxhp.js} +1 -1
  38. package/dist/{cli-vfha21c9.js → cli-e5bxnjps.js} +2 -2
  39. package/dist/{cli-37j04k05.js → cli-e9btqw4y.js} +13 -13
  40. package/dist/{cli-1syn2xy1.js → cli-eym3jg7w.js} +32 -18
  41. package/dist/{cli-ftc1g5tj.js → cli-fes51ya2.js} +3 -3
  42. package/dist/{cli-s95dknxh.js → cli-g1cw7xtt.js} +1 -1
  43. package/dist/{cli-74c1wpm0.js → cli-gpv60278.js} +1 -1
  44. package/dist/{cli-1f3qzw6y.js → cli-gwcf52gz.js} +2 -2
  45. package/dist/{cli-pemywhfq.js → cli-ha9rmwgq.js} +2 -1
  46. package/dist/{cli-v0yrfmdh.js → cli-hadv0725.js} +3 -3
  47. package/dist/{cli-g35m2xwm.js → cli-j1eghqfm.js} +2 -2
  48. package/dist/{cli-qfxc84gh.js → cli-jpxsrxcb.js} +1 -1
  49. package/dist/{cli-n72rg53p.js → cli-kcsd1ez8.js} +848 -426
  50. package/dist/{cli-ejs3m1sx.js → cli-kxpfx2xr.js} +1 -1
  51. package/dist/{cli-pnp2j5zg.js → cli-mmhj8vd7.js} +2 -2
  52. package/dist/{cli-st8aw1m6.js → cli-mq7kg1b1.js} +4 -4
  53. package/dist/{cli-bnes4z6b.js → cli-mz2ygeyq.js} +3 -3
  54. package/dist/{cli-xf234ws8.js → cli-n4c8e3s5.js} +2 -0
  55. package/dist/{cli-f01h25yt.js → cli-n6kmqngw.js} +2 -2
  56. package/dist/cli-nj12tn2c.js +1193 -0
  57. package/dist/{cli-1dmcq2eh.js → cli-nzfnt2gs.js} +1 -1
  58. package/dist/{cli-625tb7aq.js → cli-p859hcc8.js} +2 -2
  59. package/dist/{cli-smvcw9z5.js → cli-pasyvjmm.js} +1 -1
  60. package/dist/cli-pkaqk57w.js +128 -0
  61. package/dist/{cli-xpa64rek.js → cli-pyy4c9ch.js} +2362 -159
  62. package/dist/{cli-wt0jf9hm.js → cli-q9pzwxvk.js} +553 -193
  63. package/dist/{cli-z7d29rw9.js → cli-qfjm4gvt.js} +4 -4
  64. package/dist/{cli-p14m2cnp.js → cli-qfm6my86.js} +1 -1
  65. package/dist/{cli-8nyhf7za.js → cli-qqzmjxkf.js} +129 -105
  66. package/dist/{cli-4zfqgjc5.js → cli-r9fy0ddc.js} +2 -2
  67. package/dist/{cli-eww120g8.js → cli-rh5smt8t.js} +18 -4
  68. package/dist/{cli-a92r1127.js → cli-rngde2jv.js} +2 -2
  69. package/dist/{cli-qwkcwjdn.js → cli-rycdaj0a.js} +1 -1
  70. package/dist/{cli-fv5hepyy.js → cli-sn1vbtg2.js} +3 -3
  71. package/dist/{cli-36ckw0wx.js → cli-stxdrqs2.js} +2 -2
  72. package/dist/{cli-1m17dc9d.js → cli-ta8bd7th.js} +2 -2
  73. package/dist/{cli-43x64hv3.js → cli-v2g93k4v.js} +4 -4
  74. package/dist/{cli-d2mb5s8a.js → cli-x77gen2p.js} +680 -440
  75. package/dist/{cli-3a45zcgm.js → cli-xc65x52q.js} +2 -2
  76. package/dist/{cli-f0g3pgvf.js → cli-xd4eqtr2.js} +2 -2
  77. package/dist/{cli-018r4jq6.js → cli-y3zyaee5.js} +8 -8
  78. package/dist/{cli-kpw04va0.js → cli-z2dv25mf.js} +1 -1
  79. package/dist/{cli-qwhy2qma.js → cli-z63a269p.js} +2 -2
  80. package/dist/{cli-sm8rses9.js → cli-zfdp01hn.js} +8 -5
  81. package/dist/{cli-tw4p90jb.js → cli-znvq0k3t.js} +5 -5
  82. package/dist/cli.js +29 -27
  83. package/dist/{cloudflare-workers-ai-system-one-ch2wxfcp.js → cloudflare-workers-ai-system-one-43v9qkjk.js} +7 -2
  84. package/dist/{codex-adapter-tn6k5mkg.js → codex-adapter-p4ptwar5.js} +6 -4
  85. package/dist/{codex-login-m819c41r.js → codex-login-rn7c5gxt.js} +1 -1
  86. package/dist/{codex-session-runner-7vjt7jbw.js → codex-session-runner-964c7dnk.js} +7 -5
  87. package/dist/{commands-t7rz9146.js → commands-mbvhbrcy.js} +2 -2
  88. package/dist/{controller-m2jasma5.js → controller-gnq1k1mf.js} +4 -4
  89. package/dist/{controllers-connect-9ftpex99.js → controllers-connect-6dkm71tg.js} +25 -23
  90. package/dist/{cursor-adapter-mjv79e4z.js → cursor-adapter-yq5xgfcg.js} +1 -1
  91. package/dist/{db-6sfrn9g3.js → db-88wcymxt.js} +14 -2
  92. package/dist/{db-rn673r06.js → db-af9y8nkf.js} +3 -3
  93. package/dist/{devin-adapter-zgqadvnm.js → devin-adapter-4ycy4vrf.js} +1 -1
  94. package/dist/{dispatcher-c155xz0p.js → dispatcher-606ydx5v.js} +22 -20
  95. package/dist/{docker-fkgtr75t.js → docker-nfy2gc8t.js} +2 -2
  96. package/dist/{dsh-adapter-3mmszc1x.js → dsh-adapter-tvhc4k2d.js} +1 -1
  97. package/dist/{e2b-16d6ch39.js → e2b-9gkdhm3c.js} +2 -2
  98. package/dist/{e2b-zn0b4w5w.js → e2b-cjtf8k1z.js} +2 -2
  99. package/dist/{easter-egg-3d-5cgynaja.js → easter-egg-3d-e4qv8dxj.js} +1 -1
  100. package/dist/{event-bus-9vpk8gmq.js → event-bus-3z78ep5n.js} +1 -1
  101. package/dist/{execute-t4e6m3rw.js → execute-0xpz8950.js} +85 -23
  102. package/dist/{external-channel-35k6tkv8.js → external-channel-y8q5z8z2.js} +2 -2
  103. package/dist/{google-generative-ai-bmq8gkf3.js → google-generative-ai-mk9vcpe1.js} +15 -15
  104. package/dist/{google-vertex-b1rvp52s.js → google-vertex-q580kz8k.js} +20 -20
  105. package/dist/{grok-adapter-tfrq7tg1.js → grok-adapter-39aha52t.js} +9 -7
  106. package/dist/handlers-rk9dqech.js +41 -0
  107. package/dist/{heartbeat-dyg4npkp.js → heartbeat-jfe9zfjr.js} +25 -23
  108. package/dist/{hook-drspbwpe.js → hook-b1mez1m8.js} +9 -7
  109. package/dist/{hook-x26b31bg.js → hook-ffevzed1.js} +7 -5
  110. package/dist/{http-pk972xyw.js → http-d5b44f1r.js} +544 -76
  111. package/dist/{index-g6tbb6ve.js → index-31ceyf42.js} +1 -1
  112. package/dist/index-4q3vj1yr.js +46 -0
  113. package/dist/{index-arytgj5q.js → index-5en23s5z.js} +1 -1
  114. package/dist/index-d2qeem97.js +42 -0
  115. package/dist/index-mj46rk9k.js +43 -0
  116. package/dist/{index-jwxkkex2.js → index-nq8hhv28.js} +13 -11
  117. package/dist/{index-g216q6jr.js → index-zsyx51ap.js} +1 -4
  118. package/dist/{keepalive-7yrng7px.js → keepalive-wsby1btq.js} +4 -4
  119. package/dist/lead-paa141j6.js +79 -0
  120. package/dist/{llama-cpp-classify-vv43gswy.js → llama-cpp-classify-ee7vmd7q.js} +4 -1
  121. package/dist/{maintenance-e6cemdqt.js → maintenance-vnshcyv9.js} +1 -1
  122. package/dist/{mistral-conversations-1medfwv7.js → mistral-conversations-sd0xf1tn.js} +13 -13
  123. package/dist/{node-de6akczr.js → node-jzjj7r9x.js} +1 -1
  124. package/dist/{oauth-refresh-sweep-yw3xdbcj.js → oauth-refresh-sweep-d6sqn5np.js} +3 -3
  125. package/dist/{onboard-0a9y5yrc.js → onboard-nr4xhpzy.js} +2 -2
  126. package/dist/{openai-codex-responses-de9pvs4d.js → openai-codex-responses-79s8xnbh.js} +29 -23
  127. package/dist/{openai-completions-mtqge3nf.js → openai-completions-tdbyts0x.js} +21 -20
  128. package/dist/{openai-decisions-ygk4kkxd.js → openai-decisions-bqhnjyfz.js} +2 -1
  129. package/dist/{openai-responses-dkyng71g.js → openai-responses-dm3t5vqp.js} +26 -17
  130. package/dist/{opencode-adapter-x4tqzhkh.js → opencode-adapter-e56086m1.js} +7 -5
  131. package/dist/{openrouter-images-wvv7camj.js → openrouter-images-ssttr1y4.js} +6 -3
  132. package/dist/{otel-impl-trjpkfb7.js → otel-impl-ytn9wyv9.js} +2 -2
  133. package/dist/{pi-messages-nhh1pkz2.js → pi-messages-3nf8bq1a.js} +6 -4
  134. package/dist/{pi-mono-adapter-mcfkn9vf.js → pi-mono-adapter-tzps8f38.js} +9 -37
  135. package/dist/{pricing-refresh-d2b5my0y.js → pricing-refresh-pva04zee.js} +3 -3
  136. package/dist/{rbac-roles-nxh5ahwk.js → rbac-roles-7rc1q3g4.js} +1 -1
  137. package/dist/{rbac-roles-hey3yv9d.js → rbac-roles-ff1ffmec.js} +2 -2
  138. package/dist/{render-v2-rr3p2atg.js → render-v2-pyfsg9zk.js} +3 -3
  139. package/dist/{resume-2efkf1s1.js → resume-phj8xhqr.js} +10 -8
  140. package/dist/{runtime-xe3aqy4x.js → runtime-bt5pkpm1.js} +1 -1
  141. package/dist/{session-access-s2mttxpw.js → session-access-jzx2z9h5.js} +6 -4
  142. package/dist/{setup-vypma5yt.js → setup-rfg0f0sg.js} +1 -1
  143. package/dist/{typesafe-system-one-2hgpayzy.js → typesafe-system-one-bre38hvs.js} +4 -2
  144. package/dist/{virtual-modules-4r3zkc20.js → virtual-modules-mnfbh5mr.js} +8 -2
  145. package/dist/{work-objects-rvhckdkp.js → work-objects-44z2yjg8.js} +25 -23
  146. package/dist/worker-zsfqzxhm.js +79 -0
  147. package/dist/{x-y45mthwn.js → x-pbpezr0s.js} +2 -2
  148. package/openapi.json +785 -5
  149. package/package.json +9 -9
  150. package/src/assets/key.ts +17 -0
  151. package/src/azure-devops/handlers.ts +1 -1
  152. package/src/be/db/approvals.ts +18 -0
  153. package/src/be/db/session-moves.ts +164 -0
  154. package/src/be/db/session-tree.ts +384 -0
  155. package/src/be/db/tasks/read.ts +40 -4
  156. package/src/be/db/workflow-runs.ts +96 -0
  157. package/src/be/db.ts +80 -236
  158. package/src/be/onboarding.ts +3 -0
  159. package/src/be/skill-sync.ts +43 -2
  160. package/src/be/swarm-config-guard.ts +1 -0
  161. package/src/bitbucket/api.ts +81 -0
  162. package/src/bitbucket/auth.ts +64 -0
  163. package/src/bitbucket/handlers.ts +434 -0
  164. package/src/bitbucket/index.ts +28 -0
  165. package/src/bitbucket/templates.ts +134 -0
  166. package/src/bitbucket/types.ts +65 -0
  167. package/src/commands/runner.ts +55 -3
  168. package/src/e2b/env.ts +1 -0
  169. package/src/extensions/contract-types.generated.ts +1 -1
  170. package/src/extensions/contract.ts +2 -2
  171. package/src/extensions/post-bridge.ts +1 -0
  172. package/src/github/handlers.ts +6 -6
  173. package/src/gitlab/auth.ts +8 -2
  174. package/src/gitlab/handlers.ts +63 -15
  175. package/src/gitlab/index.ts +1 -1
  176. package/src/http/assets.ts +14 -2
  177. package/src/http/core.ts +12 -0
  178. package/src/http/index.ts +4 -0
  179. package/src/http/onboarding.ts +1 -0
  180. package/src/http/sessions.ts +366 -12
  181. package/src/http/skills.ts +48 -1
  182. package/src/http/tasks.ts +1 -1
  183. package/src/http/users.ts +1 -0
  184. package/src/http/webhooks.ts +141 -0
  185. package/src/integrations/chat-sdk/adapters.ts +19 -3
  186. package/src/integrations/chat-sdk/facts.ts +30 -12
  187. package/src/integrations/chat-sdk/outbound.ts +38 -1
  188. package/src/providers/acp-targets.ts +1 -1
  189. package/src/providers/amp-adapter.ts +1 -1
  190. package/src/providers/pi-mono-adapter.ts +5 -53
  191. package/src/scripts-runtime/types/swarm-extension.d.ts +6 -4
  192. package/src/slack/handlers.test.ts +158 -0
  193. package/src/slack/handlers.ts +19 -28
  194. package/src/tasks/context-key.ts +61 -1
  195. package/src/tests/bitbucket-auth.test.ts +156 -0
  196. package/src/tests/bitbucket-handlers.test.ts +425 -0
  197. package/src/tests/bitbucket-webhook.test.ts +220 -0
  198. package/src/tests/chat-sdk-inbound.test.ts +39 -0
  199. package/src/tests/chat-sdk-telegram-markdown.test.ts +92 -0
  200. package/src/tests/context-key.test.ts +50 -0
  201. package/src/tests/core-auth.test.ts +5 -0
  202. package/src/tests/db-task-read-contract.test.ts +7 -0
  203. package/src/tests/db-task-write-contract.test.ts +6 -0
  204. package/src/tests/docs-index-footprint.test.js +3 -3
  205. package/src/tests/fixtures/bitbucket/pullrequest-comment-created-inline.json +174 -0
  206. package/src/tests/fixtures/bitbucket/pullrequest-comment-created.json +170 -0
  207. package/src/tests/fixtures/bitbucket/pullrequest-created-mention.json +132 -0
  208. package/src/tests/fixtures/bitbucket/pullrequest-created-reviewer.json +140 -0
  209. package/src/tests/fixtures/bitbucket/pullrequest-fulfilled.json +134 -0
  210. package/src/tests/fixtures/bitbucket/pullrequest-rejected.json +133 -0
  211. package/src/tests/generate-mcp-docs.test.ts +101 -0
  212. package/src/tests/gitlab-auth.test.ts +13 -5
  213. package/src/tests/gitlab-handlers.test.ts +273 -25
  214. package/src/tests/gitlab-vcs-db.test.ts +4 -4
  215. package/src/tests/integration-disable-flags.test.ts +36 -0
  216. package/src/tests/mcp-tools.test.ts +1 -1
  217. package/src/tests/onboarding.test.ts +12 -0
  218. package/src/tests/pi-codemode.test.ts +8 -2
  219. package/src/tests/preload-env.test.ts +57 -0
  220. package/src/tests/preload.ts +21 -0
  221. package/src/tests/prompt-template-remaining.test.ts +38 -0
  222. package/src/tests/run-root-coverage.test.ts +39 -0
  223. package/src/tests/runner-bitbucket-vcs.test.ts +191 -0
  224. package/src/tests/runner-skills-refresh.test.ts +58 -0
  225. package/src/tests/secret-scrubber.test.ts +15 -0
  226. package/src/tests/sessions-move.test.ts +576 -0
  227. package/src/tests/sessions-tree.test.ts +493 -0
  228. package/src/tests/skill-files-http.test.ts +50 -0
  229. package/src/tests/skills-bundle.test.ts +99 -0
  230. package/src/tests/swarm-config-export-to-env.test.ts +2 -1
  231. package/src/tests/vcs-bitbucket.test.ts +91 -0
  232. package/src/tests/vcs-provider-isolation.test.ts +123 -0
  233. package/src/tests/vcs-provider.test.ts +16 -1
  234. package/src/tests/vcs-tracking.test.ts +3 -3
  235. package/src/tests/workflow-foreach-bodies.test.ts +637 -0
  236. package/src/tests/workflow-foreach-concurrency.test.ts +342 -0
  237. package/src/tests/workflow-foreach-retry.test.ts +537 -0
  238. package/src/tests/workflow-foreach.test.ts +44 -23
  239. package/src/tests/workflow-step-claims.test.ts +6 -6
  240. package/src/tests/workflow-tla-races.test.ts +2 -2
  241. package/src/tools/script-delete.ts +1 -1
  242. package/src/tools/workflows/create-workflow.ts +5 -3
  243. package/src/types.ts +3 -2
  244. package/src/utils/config-env-export.ts +1 -0
  245. package/src/utils/secret-scrubber.ts +4 -0
  246. package/src/utils/skills-refresh.ts +83 -43
  247. package/src/vcs/bitbucket.ts +58 -0
  248. package/src/vcs/index.ts +2 -0
  249. package/src/vcs/types.ts +2 -2
  250. package/src/workflows/approval-resolution.ts +4 -1
  251. package/src/workflows/checkpoint.ts +9 -1
  252. package/src/workflows/constants.ts +3 -0
  253. package/src/workflows/definition.ts +48 -17
  254. package/src/workflows/engine.ts +25 -15
  255. package/src/workflows/executors/foreach.ts +45 -99
  256. package/src/workflows/foreach-body.ts +146 -0
  257. package/src/workflows/foreach-driver.ts +552 -0
  258. package/src/workflows/foreach-join.ts +206 -7
  259. package/src/workflows/node-timeout.ts +21 -0
  260. package/src/workflows/recovery.ts +68 -3
  261. package/src/workflows/resume.ts +221 -43
  262. package/src/workflows/retry-poller.ts +39 -24
  263. package/src/workflows/step-input.ts +59 -0
  264. package/src/workflows/task-step-routing.ts +114 -56
  265. package/templates/skills/slack-interaction/content.md +5 -0
  266. package/templates/skills/work-on-task/SKILL.md +1 -1
  267. package/templates/skills/work-on-task/content.md +1 -1
  268. package/dist/cli-9hstj09h.js +0 -2657
  269. package/dist/cli-yw91rnmw.js +0 -13
  270. package/dist/handlers-7gw64dxw.js +0 -39
  271. package/dist/index-bgdyvcnv.js +0 -40
  272. package/dist/index-gabbcdn2.js +0 -43
  273. package/dist/index-tfb26zhy.js +0 -41
  274. package/dist/lead-7e02z839.js +0 -77
  275. package/dist/worker-5snytpbd.js +0 -77
@@ -3,13 +3,14 @@ import {
3
3
  requiredNumber,
4
4
  postClassifierRequest,
5
5
  parseClassifierUsage
6
- } from "./cli-sm8rses9.js";
6
+ } from "./cli-zfdp01hn.js";
7
7
  import {
8
8
  normalizeProviderError,
9
9
  formatProviderError
10
10
  } from "./cli-bh87e0rh.js";
11
11
 
12
12
  // node_modules/@earendil-works/pi-ai/dist/api/system-one-shared.js
13
+ var IMAGE_OPT_IN_HEADERS = { "TypeSafe-Danger-Zone-Images": "true" };
13
14
  function probabilities(label, value, id) {
14
15
  if (!isRecord(value))
15
16
  throw new Error(`${label} returned invalid probabilities for ${id}`);
@@ -64,6 +65,40 @@ function parseAnswers(label, value, context) {
64
65
  }
65
66
  return Object.fromEntries(answers);
66
67
  }
68
+ var ASSET_FORMATS = { "image/png": "png", "image/jpeg": "jpeg" };
69
+ var DATA_URL_TYPES = new Set(["image/png", "image/jpeg", "image/webp"]);
70
+ var MAX_DATA_URL_IMAGES = 4;
71
+ function addImages(label, model, input, images, request) {
72
+ if (input === "images") {
73
+ if (images.length > MAX_DATA_URL_IMAGES) {
74
+ throw new Error(`${label} accepts at most ${MAX_DATA_URL_IMAGES} images for ${model.id}, got ${images.length}`);
75
+ }
76
+ request.images = images.map((image) => {
77
+ if (!DATA_URL_TYPES.has(image.mimeType)) {
78
+ throw new Error(`${label} accepts PNG, JPEG, and WebP images for ${model.id}, got ${image.mimeType}`);
79
+ }
80
+ return `data:${image.mimeType};base64,${image.data}`;
81
+ });
82
+ return;
83
+ }
84
+ if (input === "state-image-urls") {
85
+ const parts = images.map((image) => ({
86
+ type: "image_url",
87
+ image_url: { url: `data:${image.mimeType};base64,${image.data}` }
88
+ }));
89
+ request.state = [...parts, request.state];
90
+ return;
91
+ }
92
+ const assets = {};
93
+ images.forEach((image, index) => {
94
+ const format = ASSET_FORMATS[image.mimeType];
95
+ if (!format)
96
+ throw new Error(`${label} accepts PNG and JPEG images for ${model.id}, got ${image.mimeType}`);
97
+ assets[`<image-${index + 1}>`] = { type: "image", format, data_base64: image.data };
98
+ });
99
+ request.assets = assets;
100
+ request.state = [...Object.keys(assets), request.state];
101
+ }
67
102
  function wireRequest(context) {
68
103
  return {
69
104
  state: context.state,
@@ -85,9 +120,20 @@ async function classifySystemOne(transport, model, context, options) {
85
120
  try {
86
121
  if (model.api !== transport.api)
87
122
  throw new Error(`Unsupported classifier API: ${model.api}`);
88
- if (context.images?.length)
89
- throw new Error(`${transport.label} does not support image input`);
90
- const body = await postClassifierRequest(transport.label, transport.url(model), model, transport.payload(model, wireRequest(context)), options);
123
+ const request = wireRequest(context);
124
+ let requestOptions = options;
125
+ if (context.images?.length) {
126
+ if (!model.input.includes("image")) {
127
+ throw new Error(`${transport.label} does not support image input for ${model.id}`);
128
+ }
129
+ const detected = transport.detectCompat(model);
130
+ const imageInput = model.compat?.imageInput ?? detected.imageInput;
131
+ addImages(transport.label, model, imageInput, context.images, request);
132
+ if (model.compat?.sendImageOptInHeader ?? detected.sendImageOptInHeader) {
133
+ requestOptions = { ...options, headers: { ...IMAGE_OPT_IN_HEADERS, ...options?.headers } };
134
+ }
135
+ }
136
+ const body = await postClassifierRequest(transport.label, transport.url(model), model, transport.payload(model, request), requestOptions);
91
137
  const result = transport.output(body);
92
138
  const usage = parseClassifierUsage(result.usage, model);
93
139
  if (usage)
@@ -9,7 +9,7 @@ import {
9
9
  loadMcpConfig,
10
10
  addMcpServerConfig,
11
11
  removeMcpServerConfig
12
- } from "./cli-d2mb5s8a.js";
12
+ } from "./cli-x77gen2p.js";
13
13
  import {
14
14
  McpOAuthCredentialStore2,
15
15
  McpSignInCancelledError2,
@@ -17,7 +17,7 @@ import {
17
17
  McpServerLog2,
18
18
  createDefaultTransport2,
19
19
  McpServerConnection2
20
- } from "./cli-wxbn3yfx.js";
20
+ } from "./cli-cz5nmdxt.js";
21
21
 
22
22
  // node_modules/@earendil-works/pi-coding-agent/dist/extensions/mcp/cli.js
23
23
  import { existsSync } from "node:fs";
@@ -4,7 +4,7 @@ import {
4
4
  CONTROLLER_COMMAND_TIMEOUT_MS,
5
5
  RuntimeHandleSchema,
6
6
  ControllerStatusResultSchema
7
- } from "./cli-f0g3pgvf.js";
7
+ } from "./cli-xd4eqtr2.js";
8
8
  import {
9
9
  getDbClient2,
10
10
  isRuntimePoolsEnabled,
@@ -21,7 +21,7 @@ import {
21
21
  upsertSwarmConfig2,
22
22
  getResolvedConfig2,
23
23
  init_db3
24
- } from "./cli-wt0jf9hm.js";
24
+ } from "./cli-q9pzwxvk.js";
25
25
  import {
26
26
  runtimeStaleThresholdMinutes,
27
27
  getRuntimeInstanceById,
@@ -31,7 +31,7 @@ import {
31
31
  listRuntimeInstancesForPool,
32
32
  createWorkerTaskFollowUp,
33
33
  canClaim
34
- } from "./cli-n72rg53p.js";
34
+ } from "./cli-kcsd1ez8.js";
35
35
  import {
36
36
  getRuntimeController2,
37
37
  getRuntimeControllerTarget2,
@@ -42,11 +42,11 @@ import {
42
42
  getPoolForAgent2,
43
43
  resolvePoolDelivery2,
44
44
  init_db
45
- } from "./cli-j99azg3g.js";
45
+ } from "./cli-1dp1zj04.js";
46
46
  import {
47
47
  workflowEventBus2,
48
48
  init_event_bus
49
- } from "./cli-wt645v7q.js";
49
+ } from "./cli-dabehxhp.js";
50
50
  import {
51
51
  isMultiRuntimeEnabled
52
52
  } from "./cli-e8xyjvfc.js";
@@ -57,16 +57,16 @@ import {
57
57
  canProvisionKind,
58
58
  createRuntimeProvider,
59
59
  init_runtime_providers
60
- } from "./cli-625tb7aq.js";
60
+ } from "./cli-p859hcc8.js";
61
61
  import {
62
62
  mintRuntimeToken,
63
63
  init_users
64
- } from "./cli-1f3qzw6y.js";
64
+ } from "./cli-gwcf52gz.js";
65
65
  import {
66
66
  TERMINAL_TASK_STATUSES,
67
67
  isTerminalTaskStatus,
68
68
  init_types
69
- } from "./cli-eww120g8.js";
69
+ } from "./cli-rh5smt8t.js";
70
70
  import {
71
71
  init_zod
72
72
  } from "./cli-4chz1hye.js";
@@ -86,7 +86,7 @@ import {
86
86
  import {
87
87
  buildImageTemplate,
88
88
  init_dispatch
89
- } from "./cli-1dmcq2eh.js";
89
+ } from "./cli-nzfnt2gs.js";
90
90
  import {
91
91
  RUNTIME_LABELS,
92
92
  init_types2
@@ -95,7 +95,7 @@ import {
95
95
  scrubSecrets,
96
96
  registerVolatileSecret,
97
97
  init_secret_scrubber
98
- } from "./cli-xf234ws8.js";
98
+ } from "./cli-n4c8e3s5.js";
99
99
 
100
100
  // src/be/runtime-pools/supervisor.ts
101
101
  init_runtime_providers();
@@ -522,7 +522,7 @@ async function recoverSessions(runtimeId, reason) {
522
522
  }
523
523
  if (!sessions.length)
524
524
  return;
525
- const { remediateTaskForDeadRuntime } = await import("./heartbeat-dyg4npkp.js");
525
+ const { remediateTaskForDeadRuntime } = await import("./heartbeat-jfe9zfjr.js");
526
526
  for (const session of sessions) {
527
527
  try {
528
528
  const task = await getTaskById2(session.taskId);
@@ -15,17 +15,17 @@ import {
15
15
  init_secret_registry,
16
16
  upsertSwarmConfig2,
17
17
  init_db3
18
- } from "./cli-wt0jf9hm.js";
18
+ } from "./cli-q9pzwxvk.js";
19
19
  import {
20
20
  createRuntimeProvider,
21
21
  init_runtime_providers
22
- } from "./cli-625tb7aq.js";
22
+ } from "./cli-p859hcc8.js";
23
23
  import {
24
24
  closeSessionTokenConnections,
25
25
  init_session_token_connections,
26
26
  insertSessionToken,
27
27
  init_users
28
- } from "./cli-1f3qzw6y.js";
28
+ } from "./cli-gwcf52gz.js";
29
29
  import {
30
30
  RuntimeControllerCreateSchema,
31
31
  RuntimeControllerUpdateSchema,
@@ -33,13 +33,13 @@ import {
33
33
  RuntimePoolUpdateSchema,
34
34
  RuntimePoolCreateAgentSchema,
35
35
  init_types
36
- } from "./cli-eww120g8.js";
36
+ } from "./cli-rh5smt8t.js";
37
37
  import {
38
38
  scrubSecrets,
39
39
  registerVolatileSecret,
40
40
  unregisterVolatileSecret,
41
41
  init_secret_scrubber
42
- } from "./cli-xf234ws8.js";
42
+ } from "./cli-n4c8e3s5.js";
43
43
  import {
44
44
  __esm
45
45
  } from "./cli-242037k3.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getSystemMessageText,
3
3
  clampThinkingLevel
4
- } from "./cli-0bqteszy.js";
4
+ } from "./cli-2nf3b08t.js";
5
5
 
6
6
  // node_modules/@earendil-works/pi-ai/dist/api/constrained-sampling.js
7
7
  class UnsupportedStrictJsonSchemaError extends Error {
@@ -332,13 +332,14 @@ function buildBaseOptions(model, context, options, apiKey) {
332
332
  samplingParams,
333
333
  maxTokens: clampMaxTokensToContext(model, context, options?.maxTokens ?? model.maxTokens),
334
334
  signal: options?.signal,
335
- telemetryContext: options?.telemetryContext,
335
+ telemetry: options?.telemetry,
336
336
  apiKey: apiKey || options?.apiKey,
337
337
  fetch: options?.fetch,
338
338
  transport: options?.transport,
339
339
  cacheRetention: options?.cacheRetention,
340
340
  sessionId: options?.sessionId,
341
341
  headers: options?.headers,
342
+ identity: options?.identity,
342
343
  onPayload: options?.onPayload,
343
344
  onResponse: options?.onResponse,
344
345
  onProviderStreamEvent: options?.onProviderStreamEvent,
@@ -7,7 +7,7 @@ var package_default;
7
7
  var init_package = __esm(() => {
8
8
  package_default = {
9
9
  name: "@desplega.ai/agent-swarm",
10
- version: "2.4.5",
10
+ version: "2.5.1",
11
11
  description: "agent-swarm.dev — an open-source operating system for AI work: a lead agent breaks goals into tasks, routes them to specialized workers such as Claude Code or Codex, runs each worker in an isolated container, and preserves shared memory, tools, schedules, and review gates so delegated work compounds across sessions.",
12
12
  keywords: [
13
13
  "agent-swarm.dev",
@@ -186,8 +186,8 @@ var init_package = __esm(() => {
186
186
  "@desplega/model-catalog": "workspace:*",
187
187
  "@desplega/model-routing": "workspace:*",
188
188
  "@faker-js/faker": "^10.4.0",
189
- "@opencode/plugin": "2.1.2",
190
- "@opencode/sdk": "2.1.2",
189
+ "@opencode/plugin": "2.1.3",
190
+ "@opencode/sdk": "2.1.3",
191
191
  "@oxlint/plugins": "1.78.0",
192
192
  "@types/bun": "latest",
193
193
  "dependency-cruiser": "^18.0.0",
@@ -205,10 +205,10 @@ var init_package = __esm(() => {
205
205
  bun: ">=1.3.12"
206
206
  },
207
207
  dependencies: {
208
- "@agentclientprotocol/sdk": "2.0.0",
208
+ "@agentclientprotocol/sdk": "2.0.1",
209
209
  "@ai-sdk/openai": "^3.0.41",
210
- "@anthropic-ai/claude-agent-sdk": "0.3.306",
211
- "@anthropic-ai/sdk": "^0.137.0",
210
+ "@anthropic-ai/claude-agent-sdk": "0.3.308",
211
+ "@anthropic-ai/sdk": "^1.1.0",
212
212
  "@asteasolutions/zod-to-openapi": "^8.0.0",
213
213
  "@aws-sdk/client-bedrock": "3.1048.0",
214
214
  "@chat-adapter/discord": "4.41.1",
@@ -218,9 +218,9 @@ var init_package = __esm(() => {
218
218
  "@cursor/sdk": "1.0.40",
219
219
  "@desplega.ai/agent-fs-just-bash": "0.18.5",
220
220
  "@desplega.ai/business-use": "^0.4.2",
221
- "@earendil-works/pi-agent-core": "^1.3.0",
222
- "@earendil-works/pi-ai": "^1.3.0",
223
- "@earendil-works/pi-coding-agent": "^1.3.0",
221
+ "@earendil-works/pi-agent-core": "^1.4.0",
222
+ "@earendil-works/pi-ai": "^1.4.0",
223
+ "@earendil-works/pi-coding-agent": "^1.4.0",
224
224
  "@inkjs/ui": "^2.0.0",
225
225
  "@jitl/quickjs-singlefile-mjs-release-sync": "0.32.0",
226
226
  "@linear/sdk": "^77.0.0",
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  workflowEventBus2,
6
6
  init_event_bus
7
- } from "./cli-wt645v7q.js";
7
+ } from "./cli-dabehxhp.js";
8
8
  import {
9
9
  getDbClient2,
10
10
  isRuntimePoolsEnabled,
@@ -66,7 +66,7 @@ import {
66
66
  getStaleApprovalRequests2,
67
67
  upsertKv2,
68
68
  init_db3
69
- } from "./cli-wt0jf9hm.js";
69
+ } from "./cli-q9pzwxvk.js";
70
70
  import {
71
71
  poolTaskRunsOnHarness,
72
72
  isRuntimePoolWakeable,
@@ -91,29 +91,29 @@ import {
91
91
  createRerouteDecisionTask,
92
92
  createPoolStarvationDecisionTask,
93
93
  canClaim
94
- } from "./cli-n72rg53p.js";
94
+ } from "./cli-kcsd1ez8.js";
95
95
  import {
96
96
  listRuntimePools2,
97
97
  init_db
98
- } from "./cli-j99azg3g.js";
98
+ } from "./cli-1dp1zj04.js";
99
99
  import {
100
100
  createApprovalFollowUpTask
101
- } from "./cli-xpa64rek.js";
101
+ } from "./cli-pyy4c9ch.js";
102
102
  import {
103
103
  remediateStalledRuntime
104
- } from "./cli-1sp861s4.js";
104
+ } from "./cli-0jy85zz4.js";
105
105
  import {
106
106
  runSavedScriptAsAgent
107
- } from "./cli-st8aw1m6.js";
107
+ } from "./cli-mq7kg1b1.js";
108
108
  import {
109
109
  mintToken,
110
110
  init_users
111
- } from "./cli-1f3qzw6y.js";
111
+ } from "./cli-gwcf52gz.js";
112
112
  import {
113
113
  TERMINAL_TASK_STATUSES,
114
114
  SUPERSEDED_WORKFLOW_TASK_REASON,
115
115
  init_types
116
- } from "./cli-eww120g8.js";
116
+ } from "./cli-rh5smt8t.js";
117
117
  import {
118
118
  registerTemplate,
119
119
  init_registry,
@@ -128,7 +128,7 @@ import {
128
128
  import {
129
129
  init_package,
130
130
  package_default
131
- } from "./cli-94gwyg7m.js";
131
+ } from "./cli-22rmcjkg.js";
132
132
  import {
133
133
  isEnvFlagEnabled,
134
134
  init_env_flag
@@ -136,7 +136,7 @@ import {
136
136
  import {
137
137
  scrubSecrets,
138
138
  init_secret_scrubber
139
- } from "./cli-xf234ws8.js";
139
+ } from "./cli-n4c8e3s5.js";
140
140
 
141
141
  // src/be/runtime-pools/routing.ts
142
142
  init_runtime_pools_flag();