@desplega.ai/agent-swarm 1.158.0 → 1.160.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 (378) hide show
  1. package/README.md +1 -1
  2. package/dist/{acp-adapter-xaq4n6pc.js → acp-adapter-2mjwcsfh.js} +124 -27
  3. package/dist/{actions-p9hz5yat.js → actions-e43rxskr.js} +35 -30
  4. package/dist/{anthropic-messages-51pz26qe.js → anthropic-messages-5qx80j9k.js} +106 -16
  5. package/dist/{app-g26wdcz6.js → app-mc7xfagn.js} +12 -10
  6. package/dist/{assistant-wydfqkb3.js → assistant-sedkzv3b.js} +42 -31
  7. package/dist/{azure-openai-responses-8gksqtmz.js → azure-openai-responses-nfb21z9a.js} +13 -14
  8. package/dist/{boot-reembed-se8zmdcp.js → boot-reembed-cqz9swn5.js} +13 -12
  9. package/dist/{boot-reembed-g5ckg9yb.js → boot-reembed-m3656j2n.js} +14 -13
  10. package/dist/{boot-scrub-logs-wfxqan61.js → boot-scrub-logs-xbxf5d7w.js} +11 -9
  11. package/dist/boot-seeds-gsetbs5y.js +28 -0
  12. package/dist/{claude-adapter-tv2x4f36.js → claude-adapter-dc6289mc.js} +28 -23
  13. package/dist/{claude-managed-adapter-41b2s7fd.js → claude-managed-adapter-naaw51me.js} +4 -3
  14. package/dist/{claude-managed-setup-60g8aazx.js → claude-managed-setup-eacvchx0.js} +12 -3
  15. package/dist/claude-sdk-session-bqp2xvym.js +29722 -0
  16. package/dist/{cli-987hg0aa.js → cli-0jwe9034.js} +2 -2
  17. package/dist/{cli-vj6h9kc2.js → cli-0m7wct0d.js} +59 -1
  18. package/dist/{cli-c07r9a2m.js → cli-0q3avq3s.js} +12 -11
  19. package/dist/{cli-19jenss3.js → cli-0wgxmwf6.js} +31 -10
  20. package/dist/cli-0x01kwrd.js +491 -0
  21. package/dist/cli-0xqde53b.js +176 -0
  22. package/dist/cli-10nhj6xq.js +8355 -0
  23. package/dist/{cli-tt9k8r35.js → cli-12tszpk9.js} +479 -910
  24. package/dist/{cli-5b6b62tz.js → cli-13hw4z91.js} +1 -1
  25. package/dist/{cli-cqt19wg6.js → cli-1a2j50m0.js} +11 -2
  26. package/dist/{cli-xberxa1r.js → cli-25fcq4b4.js} +2 -2
  27. package/dist/{cli-npssxgaz.js → cli-2pdaysab.js} +52 -2
  28. package/dist/cli-3qhyh31j.js +166 -0
  29. package/dist/cli-447dt1h3.js +3828 -0
  30. package/dist/cli-4derpgyk.js +115 -0
  31. package/dist/{cli-00w2c66p.js → cli-523679eh.js} +13 -2
  32. package/dist/{cli-y95wp3tg.js → cli-58e8yr0d.js} +1 -1
  33. package/dist/{cli-24k806sc.js → cli-5nbmpy8w.js} +3 -3
  34. package/dist/{cli-53sz8gkz.js → cli-6cs6wzxt.js} +1 -1
  35. package/dist/cli-741yb0xx.js +1027 -0
  36. package/dist/cli-74h9hscv.js +69 -0
  37. package/dist/cli-7cxw8b60.js +14910 -0
  38. package/dist/{cli-xhaeg2nc.js → cli-7e398j1h.js} +1 -1
  39. package/dist/cli-7kyk9jr3.js +22 -0
  40. package/dist/cli-89s4ngw3.js +183 -0
  41. package/dist/{cli-9b13ggd1.js → cli-89v6kyq7.js} +1 -0
  42. package/dist/{cli-ftfvggzx.js → cli-9hsgwz4w.js} +1045 -581
  43. package/dist/{cli-rqz8qbw7.js → cli-a8dvhzrt.js} +59 -20
  44. package/dist/{cli-j57qkrpq.js → cli-azhgzetg.js} +395 -56
  45. package/dist/cli-br0qdrnp.js +2150 -0
  46. package/dist/{cli-rj19hc34.js → cli-btfv8y88.js} +1 -1
  47. package/dist/{cli-8qmme6vd.js → cli-c8a36vcc.js} +2 -2
  48. package/dist/cli-cpvsaqsw.js +333 -0
  49. package/dist/cli-d5czme6m.js +17805 -0
  50. package/dist/{cli-h38x0qhg.js → cli-et8m9xsv.js} +4 -3
  51. package/dist/{cli-x24pshtq.js → cli-evvtk35y.js} +6 -6
  52. package/dist/{cli-7s3syk22.js → cli-f8gy6r2r.js} +5 -5
  53. package/dist/{cli-zt1227k1.js → cli-fkqhbg8g.js} +5 -3
  54. package/dist/{cli-9httdpyq.js → cli-g2whhdrf.js} +1 -1
  55. package/dist/cli-gt4hxb8p.js +99 -0
  56. package/dist/{cli-s8eet254.js → cli-jajnsm8q.js} +37184 -53838
  57. package/dist/{cli-7gtvvpbh.js → cli-jayjpjmb.js} +21 -12
  58. package/dist/{cli-68w09sjw.js → cli-jyk0ynw2.js} +27 -89
  59. package/dist/{cli-aehm1rbq.js → cli-jz4w45qt.js} +1152 -61
  60. package/dist/cli-kmcpfwn2.js +333856 -0
  61. package/dist/{cli-4198qc9v.js → cli-ktmyrtpn.js} +19 -3
  62. package/dist/{cli-j55n64b6.js → cli-mfe5btp9.js} +505 -189
  63. package/dist/{cli-q67y4wzm.js → cli-phsaj4xq.js} +24 -2
  64. package/dist/{cli-1hkrch3k.js → cli-pm1rst0h.js} +46 -7
  65. package/dist/{cli-pw9rj5t9.js → cli-pqetb83f.js} +1 -176
  66. package/dist/{cli-ggm92wcn.js → cli-ptr8h7kp.js} +20 -1
  67. package/dist/{cli-s8s499xy.js → cli-qbksc292.js} +3 -2
  68. package/dist/{cli-47m6dkd3.js → cli-qydf22qq.js} +597 -346
  69. package/dist/{cli-3gmcwfyx.js → cli-r1mxd1xh.js} +13 -6
  70. package/dist/cli-rb9m6rpe.js +4980 -0
  71. package/dist/cli-rykfmgwg.js +102 -0
  72. package/dist/{cli-5d10vd2m.js → cli-shkxm1vn.js} +6 -5
  73. package/dist/{cli-eetrvv91.js → cli-t3p77qk1.js} +1 -1
  74. package/dist/cli-tfky2838.js +756 -0
  75. package/dist/{cli-g8djp6qe.js → cli-tmqt7dpj.js} +40 -0
  76. package/dist/{cli-fgqxwrpv.js → cli-tpq83z89.js} +1631 -127
  77. package/dist/cli-trc24wk2.js +143 -0
  78. package/dist/{cli-aky8tctm.js → cli-tzx2ke1v.js} +3 -3
  79. package/dist/cli-v7fn5gms.js +1425 -0
  80. package/dist/{cli-wscdvcqz.js → cli-vctdqs5h.js} +1 -1
  81. package/dist/{cli-cw9zck8j.js → cli-xjcywfsf.js} +8 -4
  82. package/dist/{cli-k0g1sjzm.js → cli-ybgv4kw2.js} +18 -11
  83. package/dist/{cli-rjehvrts.js → cli-ydmcgve1.js} +8 -8
  84. package/dist/{cli-vhjwh6cz.js → cli-ygwm91nt.js} +1 -1
  85. package/dist/{cli-mcnhgnn1.js → cli-ykk5jaax.js} +184 -26
  86. package/dist/{cli-de1396j2.js → cli-ywybs5as.js} +7 -1
  87. package/dist/cli-zpep9q5e.js +491 -0
  88. package/dist/cli.js +41 -32
  89. package/dist/cloudflare-workers-ai-system-one-k6fbxw9d.js +46 -0
  90. package/dist/{codex-adapter-cnm8wk11.js → codex-adapter-nmxcatww.js} +26 -17
  91. package/dist/{codex-hook-9hptmdhj.js → codex-hook-20me6byw.js} +2 -2
  92. package/dist/{codex-login-x3jk4etn.js → codex-login-w6fz4xbz.js} +50 -5
  93. package/dist/{codex-session-runner-gfg547zj.js → codex-session-runner-90aa80ev.js} +24 -17
  94. package/dist/{commands-e3bn0p75.js → commands-8wcq1kn7.js} +11 -9
  95. package/dist/{db-03v9kzr2.js → db-j40kc4se.js} +25 -11
  96. package/dist/{devin-adapter-8vgkwh29.js → devin-adapter-dpsv6hd9.js} +1 -1
  97. package/dist/{dispatcher-nrmg8yht.js → dispatcher-4zqy768d.js} +34 -29
  98. package/dist/{dsh-adapter-k03nfqa6.js → dsh-adapter-mpnzgztj.js} +3 -3
  99. package/dist/{e2b-93x1k0j5.js → e2b-ez07znam.js} +4 -3
  100. package/dist/execute-6e7qeyk4.js +1017 -0
  101. package/dist/{google-generative-ai-bxmv50nc.js → google-generative-ai-k6n5nbpp.js} +6 -5
  102. package/dist/{google-vertex-809af514.js → google-vertex-44xxtcvp.js} +6 -5
  103. package/dist/{handlers-aqcedbyb.js → handlers-kjdce1w5.js} +37 -32
  104. package/dist/{hook-ybvmrmhq.js → hook-czx13n12.js} +19 -15
  105. package/dist/{hook-7vkskkre.js → hook-r2t4bqfg.js} +18 -14
  106. package/dist/{http-2eqa8t24.js → http-3bbb19be.js} +900 -145
  107. package/dist/{index-f6cryxwe.js → index-4a5njnm1.js} +2 -59
  108. package/dist/{index-x71bvq0p.js → index-668me3f0.js} +35 -30
  109. package/dist/{index-c6zsv1bd.js → index-7aj368tw.js} +13 -12
  110. package/dist/{index-1yks3qcr.js → index-fg0dsp6c.js} +34 -29
  111. package/dist/{index-chgdkq36.js → index-kkv84jq9.js} +34 -29
  112. package/dist/{index-a3vn96n8.js → index-zg7vp46x.js} +198 -54
  113. package/dist/{keepalive-vtkf5n99.js → keepalive-yra8dy57.js} +13 -11
  114. package/dist/{lead-h3sp357x.js → lead-va0pad2c.js} +54 -49
  115. package/dist/llama-cpp-classify-tgj35k8d.js +335 -0
  116. package/dist/{maintenance-jzeqtk3q.js → maintenance-hqewtmyg.js} +14 -13
  117. package/dist/{mistral-conversations-zx0kn554.js → mistral-conversations-pc3ntnxt.js} +14 -17
  118. package/dist/{oauth-refresh-sweep-qp3dzmdp.js → oauth-refresh-sweep-7rdt1m9n.js} +12 -10
  119. package/dist/{onboard-tmsp0qbz.js → onboard-j6ms6d0x.js} +6 -5
  120. package/dist/{openai-codex-responses-4vjqzvjp.js → openai-codex-responses-bbancrr0.js} +21 -8
  121. package/dist/{openai-completions-9hjrqbw8.js → openai-completions-jpaj5g2b.js} +9 -12
  122. package/dist/{openai-responses-7b1pn0xt.js → openai-responses-200k1wx4.js} +23 -18
  123. package/dist/{opencode-adapter-x6x2da1z.js → opencode-adapter-89rabkw2.js} +8 -7
  124. package/dist/{openrouter-images-9f9ek4rw.js → openrouter-images-8yx3487g.js} +5 -7
  125. package/dist/{otel-impl-9mz73q65.js → otel-impl-a792rjz0.js} +1 -1
  126. package/dist/{pi-messages-txpjj39q.js → pi-messages-vxdt8v7j.js} +2 -1
  127. package/dist/{pi-mono-adapter-m6dvv0dz.js → pi-mono-adapter-g7qzvr3v.js} +295 -70
  128. package/dist/pricing-refresh-wx0tp7cb.js +39 -0
  129. package/dist/quickjs-r1pq2107.wasm +0 -0
  130. package/dist/{rbac-roles-c9wqz83x.js → rbac-roles-8tzawacv.js} +12 -10
  131. package/dist/{render-v2-gryrh9h8.js → render-v2-mm7zswb8.js} +12 -10
  132. package/dist/runtime-zyssgse0.js +24 -0
  133. package/dist/{setup-q9720bt6.js → setup-8y70ys6t.js} +6 -5
  134. package/dist/typesafe-system-one-2ef30pec.js +27 -0
  135. package/dist/{virtual-modules-3htpgn8x.js → virtual-modules-6nmk7h3n.js} +22 -13
  136. package/dist/{work-objects-b76x7deb.js → work-objects-fg6xkb0n.js} +37 -32
  137. package/dist/{worker-6vrxbv41.js → worker-wmwhxsph.js} +54 -49
  138. package/openapi.json +1314 -91
  139. package/package.json +12 -11
  140. package/src/be/db/agents.ts +20 -0
  141. package/src/be/db/api-keys.ts +70 -0
  142. package/src/be/db/tasks/human-free.ts +442 -0
  143. package/src/be/db/tasks/read.ts +56 -1
  144. package/src/be/db/tasks/write.ts +107 -11
  145. package/src/be/db.ts +274 -188
  146. package/src/be/harness-model-support.ts +182 -0
  147. package/src/be/human-free-drain.ts +67 -0
  148. package/src/be/memory/providers/sqlite-store.ts +51 -15
  149. package/src/be/migrations/182_task_human_free_flag.sql +63 -0
  150. package/src/be/migrations/183_human_free_reclassify_queue.sql +25 -0
  151. package/src/be/migrations/184_model_catalog.sql +120 -0
  152. package/src/be/migrations/185_api_key_auth_failures.sql +6 -0
  153. package/src/be/migrations/186_api_key_seat_mismatch.sql +8 -0
  154. package/src/be/model-catalog-store.ts +644 -0
  155. package/src/be/model-tier-keys.ts +46 -0
  156. package/src/be/model-tier-resolution.ts +534 -0
  157. package/src/be/model-validation.ts +188 -0
  158. package/src/be/models-catalog.ts +61 -7
  159. package/src/be/modelsdev-cache.json +82 -0
  160. package/src/be/modelsdev-cache.ts +2 -0
  161. package/src/be/pricing-refresh.ts +154 -12
  162. package/src/be/scripts/typecheck.ts +15 -0
  163. package/src/be/seed/runner.ts +18 -12
  164. package/src/be/seed/types.ts +1 -0
  165. package/src/be/seed-scripts/catalog/task-failure-audit.ts +61 -9
  166. package/src/be/swarm-config-guard.ts +8 -0
  167. package/src/cli.tsx +10 -0
  168. package/src/commands/claude-managed-setup.ts +3 -1
  169. package/src/commands/codex-login.ts +67 -0
  170. package/src/commands/credential-outcome-report.ts +191 -0
  171. package/src/commands/rate-limit-outcome.ts +34 -4
  172. package/src/commands/runner.ts +357 -186
  173. package/src/commands/seat-mismatch-report.ts +46 -0
  174. package/src/extensions/apply-task-create.ts +27 -1
  175. package/src/extensions/contract-types.generated.ts +1 -1
  176. package/src/heartbeat/heartbeat.ts +79 -17
  177. package/src/heartbeat/templates.ts +2 -2
  178. package/src/http/agents.ts +62 -1
  179. package/src/http/api-keys.ts +140 -2
  180. package/src/http/codex-oauth-keep-warm.ts +3 -5
  181. package/src/http/index.ts +8 -0
  182. package/src/http/memory.ts +12 -5
  183. package/src/http/models-catalog.ts +357 -8
  184. package/src/http/poll.ts +54 -3
  185. package/src/http/schedules.ts +51 -6
  186. package/src/http/script-runs.ts +12 -0
  187. package/src/http/session-data.ts +2 -5
  188. package/src/http/stats.ts +6 -8
  189. package/src/http/status.ts +15 -1
  190. package/src/http/tasks.ts +90 -7
  191. package/src/http/usage-cache.ts +56 -15
  192. package/src/http/workflows.ts +46 -8
  193. package/src/mcp-client/http-client.ts +5 -0
  194. package/src/memory/recall-query.ts +74 -0
  195. package/src/prompts/base-prompt.ts +15 -4
  196. package/src/prompts/session-templates.ts +23 -1
  197. package/src/providers/acp-adapter.ts +1 -0
  198. package/src/providers/claude-adapter.ts +14 -5
  199. package/src/providers/claude-managed-adapter.ts +1 -0
  200. package/src/providers/claude-managed-models.ts +47 -161
  201. package/src/providers/claude-sdk-session.ts +3 -1
  202. package/src/providers/codex-adapter.ts +14 -14
  203. package/src/providers/codex-models.ts +65 -198
  204. package/src/providers/devin-adapter.ts +1 -0
  205. package/src/providers/dsh-adapter.ts +2 -1
  206. package/src/providers/harness-version.ts +83 -7
  207. package/src/providers/opencode-adapter.ts +53 -1
  208. package/src/providers/pi-binary-root/src/extensions/codemode/worker.ts +11 -0
  209. package/src/providers/pi-codemode-runtime.ts +17 -0
  210. package/src/providers/pi-mono-adapter.ts +361 -83
  211. package/src/providers/pi-mono-extension.ts +16 -1
  212. package/src/providers/reasoning-effort.ts +44 -140
  213. package/src/providers/types.ts +8 -0
  214. package/src/rbac/legacy-policy.ts +43 -0
  215. package/src/rbac/permissions.ts +15 -0
  216. package/src/scripts-runtime/sdk-allowlist.ts +4 -0
  217. package/src/scripts-runtime/types/stdlib.d.ts +15 -0
  218. package/src/scripts-runtime/types/swarm-extension.d.ts +3 -0
  219. package/src/scripts-runtime/types/swarm-sdk.d.ts +15 -0
  220. package/src/server.ts +6 -0
  221. package/src/slack/assistant.ts +13 -0
  222. package/src/slack/message-text.ts +56 -2
  223. package/src/slack/render-v2.ts +87 -37
  224. package/src/slack/session-status.ts +541 -0
  225. package/src/slack/thread-buffer.ts +10 -2
  226. package/src/tasks/sibling-awareness.ts +3 -2
  227. package/src/telemetry.ts +5 -4
  228. package/src/templates.d.ts +6 -0
  229. package/src/tests/agents-list-model-display.test.ts +4 -6
  230. package/src/tests/api-key-auth-failure-route.test.ts +142 -0
  231. package/src/tests/api-key-tracking.test.ts +368 -1
  232. package/src/tests/base-prompt.test.ts +43 -2
  233. package/src/tests/claude-adapter.test.ts +68 -0
  234. package/src/tests/claude-managed-adapter.test.ts +12 -18
  235. package/src/tests/codex-adapter.test.ts +2 -1
  236. package/src/tests/codex-auth-failure.test.ts +52 -0
  237. package/src/tests/codex-gpt6-release.test.ts +66 -5
  238. package/src/tests/codex-login.test.ts +116 -0
  239. package/src/tests/context-window.test.ts +7 -5
  240. package/src/tests/credential-exhaustion-policy.test.ts +118 -3
  241. package/src/tests/credential-outcome-report.test.ts +171 -0
  242. package/src/tests/credential-status-api.test.ts +103 -2
  243. package/src/tests/db-extraction-contract.test.ts +1 -0
  244. package/src/tests/db-task-read-contract.test.ts +10 -1
  245. package/src/tests/db-task-write-contract.test.ts +535 -2
  246. package/src/tests/docs-index-footprint.test.js +3 -3
  247. package/src/tests/dokploy-deploy.test.ts +315 -0
  248. package/src/tests/dsh-adapter.test.ts +1 -1
  249. package/src/tests/explicit-model-validation.test.ts +583 -0
  250. package/src/tests/extensions-pre-task.test.ts +73 -0
  251. package/src/tests/fetch-resolved-env.test.ts +46 -0
  252. package/src/tests/hang-watchdog-worker.ts +47 -0
  253. package/src/tests/hang-watchdog.test.ts +45 -0
  254. package/src/tests/hang-watchdog.ts +30 -0
  255. package/src/tests/harness-model-guard.test.ts +123 -0
  256. package/src/tests/harness-model-support.test.ts +374 -0
  257. package/src/tests/harness-version.test.ts +70 -3
  258. package/src/tests/heartbeat-checklist-config.test.ts +71 -0
  259. package/src/tests/heartbeat-checklist.test.ts +4 -2
  260. package/src/tests/heartbeat-orphan-resume.test.ts +48 -0
  261. package/src/tests/http-task-write-ownership.test.ts +172 -0
  262. package/src/tests/human-free-flag.test.ts +279 -0
  263. package/src/tests/human-free-oracle.ts +57 -0
  264. package/src/tests/human-free-reclassify.test.ts +669 -0
  265. package/src/tests/memory-fts-populate.test.ts +139 -0
  266. package/src/tests/memory-http-recall-gating.test.ts +125 -1
  267. package/src/tests/migration-046-budgets.test.ts +3 -3
  268. package/src/tests/model-catalog-migration.test.ts +134 -0
  269. package/src/tests/model-catalog-table.test.ts +249 -0
  270. package/src/tests/model-catalog-write-access.test.ts +387 -0
  271. package/src/tests/model-rate-limit-windows.test.ts +19 -0
  272. package/src/tests/model-tier-resolution.test.ts +611 -0
  273. package/src/tests/models-catalog.test.ts +1 -1
  274. package/src/tests/multi-runtime-enabled-stats.test.ts +65 -1
  275. package/src/tests/opencode-adapter.test.ts +157 -2
  276. package/src/tests/package-publish.test.ts +137 -36
  277. package/src/tests/pi-codemode.test.ts +246 -0
  278. package/src/tests/pi-mono-adapter.test.ts +3 -0
  279. package/src/tests/pi-native-mcp.test.ts +193 -0
  280. package/src/tests/pi-tool-exposure.test.ts +374 -0
  281. package/src/tests/preload.ts +3 -0
  282. package/src/tests/pricing-routes.test.ts +2 -2
  283. package/src/tests/prompt-template-session.test.ts +5 -3
  284. package/src/tests/rate-limit-event.test.ts +65 -0
  285. package/src/tests/rate-limit-outcome.test.ts +90 -0
  286. package/src/tests/rbac-engine.test.ts +77 -3
  287. package/src/tests/reasoning-effort.test.ts +109 -0
  288. package/src/tests/refresh-modelsdev-carryforward.test.ts +5 -5
  289. package/src/tests/runner-key-completion-outcome.test.ts +112 -0
  290. package/src/tests/runner-key-outcome-late-reset.test.ts +224 -0
  291. package/src/tests/runner-registration-retry.test.ts +149 -0
  292. package/src/tests/runtime-model-catalog.test.ts +86 -0
  293. package/src/tests/script-connections.test.ts +9 -0
  294. package/src/tests/seat-mismatch-report.test.ts +85 -0
  295. package/src/tests/seed-scripts.test.ts +138 -0
  296. package/src/tests/seed.test.ts +25 -0
  297. package/src/tests/session-costs.test.ts +14 -11
  298. package/src/tests/slack-message-text.test.ts +101 -0
  299. package/src/tests/slack-render-v2.test.ts +96 -0
  300. package/src/tests/slack-session-status.test.ts +626 -0
  301. package/src/tests/slack-thread-buffer-context.test.ts +93 -0
  302. package/src/tests/status.test.ts +29 -0
  303. package/src/tests/steering-promotion.test.ts +51 -0
  304. package/src/tests/store-progress-ownership.test.ts +136 -0
  305. package/src/tests/subscription-plans.test.ts +28 -0
  306. package/src/tests/task-cascade-fail.test.ts +148 -2
  307. package/src/tests/task-citations.test.ts +3 -2
  308. package/src/tests/tool-annotations.test.ts +1 -1
  309. package/src/tests/usage-cache.test.ts +166 -0
  310. package/src/tests/workflow-agent-task.test.ts +30 -0
  311. package/src/tests/workflow-executors.test.ts +5 -2
  312. package/src/tests/workflow-system-one-decision-review.test.ts +1021 -0
  313. package/src/tests/workflow-system-one-decision-save-warnings.test.ts +365 -0
  314. package/src/tests/workflow-system-one-decision.test.ts +2063 -0
  315. package/src/tests/workflow-triggers-v2.test.ts +320 -0
  316. package/src/tools/model-catalog/index.ts +137 -0
  317. package/src/tools/schedules/create-schedule.ts +17 -2
  318. package/src/tools/schedules/patch-schedule.ts +31 -1
  319. package/src/tools/schedules/update-schedule.ts +31 -1
  320. package/src/tools/send-task.ts +18 -1
  321. package/src/tools/store-progress.ts +49 -4
  322. package/src/tools/task-action.ts +14 -1
  323. package/src/tools/tool-config.ts +3 -1
  324. package/src/tools/workflows/create-workflow.ts +17 -4
  325. package/src/tools/workflows/patch-workflow-node.ts +17 -7
  326. package/src/tools/workflows/patch-workflow.ts +9 -2
  327. package/src/tools/workflows/update-workflow.ts +17 -4
  328. package/src/types.ts +41 -1
  329. package/src/utils/codex-auth-failure.ts +34 -0
  330. package/src/utils/context-window.ts +47 -53
  331. package/src/utils/credentials.ts +72 -30
  332. package/src/utils/error-tracker.ts +80 -0
  333. package/src/utils/harness-cli-version.ts +115 -0
  334. package/src/utils/harness-model-error.ts +33 -0
  335. package/src/utils/model-rate-limit-windows.ts +12 -0
  336. package/src/utils/runtime-model-catalog.ts +152 -0
  337. package/src/utils/spawn-model-guard.ts +43 -0
  338. package/src/utils/subscription-plans.ts +22 -0
  339. package/src/workflows/approval-resolution.ts +39 -0
  340. package/src/workflows/definition.ts +7 -0
  341. package/src/workflows/engine.ts +69 -1
  342. package/src/workflows/executors/agent-task.ts +16 -6
  343. package/src/workflows/executors/base.ts +53 -0
  344. package/src/workflows/executors/human-in-the-loop.ts +8 -8
  345. package/src/workflows/executors/index.ts +1 -0
  346. package/src/workflows/executors/registry.ts +2 -0
  347. package/src/workflows/executors/system-one-decision.ts +1232 -0
  348. package/src/workflows/executors/system-one-providers.ts +301 -0
  349. package/src/workflows/executors/workflow-llm.ts +13 -1
  350. package/src/workflows/model-validation.ts +45 -0
  351. package/src/workflows/patch-definition.ts +5 -0
  352. package/src/workflows/readiness.ts +86 -0
  353. package/src/workflows/recovery.ts +12 -12
  354. package/src/workflows/resume.ts +23 -9
  355. package/src/workflows/triggers.ts +85 -0
  356. package/templates/schedules/daily-blocker-digest/content.md +4 -5
  357. package/templates/skills/agent-browser/SKILL.md +6 -5
  358. package/templates/skills/agent-browser/content.md +6 -5
  359. package/templates/skills/heartbeat-runbook/config.json +1 -1
  360. package/templates/skills/heartbeat-runbook/content.md +2 -2
  361. package/templates/skills/swarm-scripts/SKILL.md +1 -1
  362. package/templates/skills/swarm-scripts/content.md +1 -1
  363. package/templates/skills/workflow-iterate/content.md +82 -1
  364. package/templates/workflows/claude-code-changelog-watch/content.md +2 -0
  365. package/templates/workflows/pr-review-status-sweep/content.md +2 -0
  366. package/dist/boot-seeds-s3q01xj3.js +0 -26
  367. package/dist/claude-sdk-session-t442qz6f.js +0 -39108
  368. package/dist/cli-0xjkj1j7.js +0 -61
  369. package/dist/cli-20cj37vt.js +0 -335561
  370. package/dist/cli-2djtr51b.js +0 -48
  371. package/dist/cli-65hjmev5.js +0 -1141
  372. package/dist/cli-aw1jwp1r.js +0 -14075
  373. package/dist/cli-h967nb6r.js +0 -6603
  374. package/dist/cli-vapyk8sw.js +0 -20
  375. package/dist/cli-ws6rqycm.js +0 -247
  376. package/dist/pricing-refresh-v1cbr9te.js +0 -27
  377. package/src/providers/modelsdev-reasoning.json +0 -6453
  378. package/dist/{index-f24115ge.js → index-2wsdsnmm.js} +3 -3
package/README.md CHANGED
@@ -74,7 +74,7 @@ Or install it as a plugin in your harness:
74
74
  | Harness | Command |
75
75
  |---|---|
76
76
  | Claude Code | `/plugin marketplace add desplega-ai/agent-swarm` then `/plugin install agent-swarm@agent-swarm` |
77
- | Codex | `codex plugin add https://github.com/desplega-ai/agent-swarm` (or use `npx skills` above) |
77
+ | Codex | `codex plugin marketplace add desplega-ai/agent-swarm && codex plugin add agent-swarm@agent-swarm` (or use `npx skills` above) |
78
78
  | Cursor | `/add-plugin desplega-ai/agent-swarm` |
79
79
  | Gemini CLI | `gemini extensions install https://github.com/desplega-ai/agent-swarm` |
80
80
  | Antigravity / Factory Droid | `droid plugin marketplace add https://github.com/desplega-ai/agent-swarm` then `droid plugin install agent-swarm@agent-swarm` |
@@ -29,7 +29,7 @@ import {
29
29
  import {
30
30
  init_package,
31
31
  package_default
32
- } from "./cli-c07r9a2m.js";
32
+ } from "./cli-0q3avq3s.js";
33
33
  import {
34
34
  init_secret_scrubber,
35
35
  scrubSecrets
@@ -1612,6 +1612,22 @@ var zUsageUpdate = object({
1612
1612
  return;
1613
1613
  })
1614
1614
  });
1615
+ var zNoticeSeverity = union([
1616
+ literal("info"),
1617
+ literal("warning"),
1618
+ literal("error"),
1619
+ string()
1620
+ ]);
1621
+ var zNotice = object({
1622
+ severity: zNoticeSeverity,
1623
+ title: string().min(1),
1624
+ description: defaultOnError(string().nullish(), () => {
1625
+ return;
1626
+ }),
1627
+ _meta: defaultOnError(record(string(), unknown()).nullish(), () => {
1628
+ return;
1629
+ })
1630
+ });
1615
1631
  var zCompactionId = string();
1616
1632
  var zCompactionStatus = union([
1617
1633
  literal("in_progress"),
@@ -1680,6 +1696,9 @@ var zSessionUpdate = union([
1680
1696
  zUsageUpdate.and(object({
1681
1697
  sessionUpdate: literal("usage_update")
1682
1698
  })),
1699
+ zNotice.and(object({
1700
+ sessionUpdate: literal("notice")
1701
+ })),
1683
1702
  zCompactionUpdate.and(object({
1684
1703
  sessionUpdate: literal("compaction_update")
1685
1704
  })),
@@ -1741,6 +1760,7 @@ var zSessionConfigOptionsCapabilities = object({
1741
1760
  return;
1742
1761
  })
1743
1762
  });
1763
+ var zNoticeCapabilities = record(string(), unknown());
1744
1764
  var zClientSessionCapabilities = object({
1745
1765
  compaction: defaultOnError(zCompactionCapabilities.nullish(), () => {
1746
1766
  return;
@@ -1748,6 +1768,9 @@ var zClientSessionCapabilities = object({
1748
1768
  configOptions: defaultOnError(zSessionConfigOptionsCapabilities.nullish(), () => {
1749
1769
  return;
1750
1770
  }),
1771
+ notices: defaultOnError(zNoticeCapabilities.nullish(), () => {
1772
+ return;
1773
+ }),
1751
1774
  _meta: defaultOnError(record(string(), unknown()).nullish(), () => {
1752
1775
  return;
1753
1776
  })
@@ -3190,53 +3213,124 @@ function protocolErrorResponse(error) {
3190
3213
  };
3191
3214
  }
3192
3215
 
3216
+ // node_modules/@agentclientprotocol/sdk/dist/stream-limits.js
3217
+ var DEFAULT_MAX_MESSAGE_BYTES = 32 * 1024 * 1024;
3218
+
3219
+ class MessageTooLargeError extends Error {
3220
+ maxMessageBytes;
3221
+ constructor(maxMessageBytes) {
3222
+ super(`Incoming ACP data exceeds the configured ${maxMessageBytes} byte limit`);
3223
+ this.maxMessageBytes = maxMessageBytes;
3224
+ this.name = "MessageTooLargeError";
3225
+ }
3226
+ }
3227
+ function resolveMaxMessageBytes(value) {
3228
+ const maxMessageBytes = value ?? DEFAULT_MAX_MESSAGE_BYTES;
3229
+ if (!Number.isSafeInteger(maxMessageBytes) || maxMessageBytes <= 0) {
3230
+ throw new RangeError("maxMessageBytes must be a positive safe integer");
3231
+ }
3232
+ return maxMessageBytes;
3233
+ }
3234
+
3235
+ class MessageBuffer {
3236
+ #buffer = new Uint8Array(0);
3237
+ #length = 0;
3238
+ #maxMessageBytes;
3239
+ constructor(maxMessageBytes) {
3240
+ this.#maxMessageBytes = resolveMaxMessageBytes(maxMessageBytes);
3241
+ }
3242
+ get byteLength() {
3243
+ return this.#length;
3244
+ }
3245
+ get lastByte() {
3246
+ return this.#buffer[this.#length - 1];
3247
+ }
3248
+ #checkAppend(byteLength) {
3249
+ if (byteLength > this.#maxMessageBytes - this.#length) {
3250
+ this.clear();
3251
+ throw new MessageTooLargeError(this.#maxMessageBytes);
3252
+ }
3253
+ }
3254
+ append(bytes) {
3255
+ this.#checkAppend(bytes.byteLength);
3256
+ const length = this.#length + bytes.byteLength;
3257
+ if (length > this.#buffer.byteLength) {
3258
+ const capacity = Math.min(this.#maxMessageBytes, Math.max(length, this.#buffer.byteLength * 2, 1024));
3259
+ const buffer = new Uint8Array(capacity);
3260
+ buffer.set(this.#buffer.subarray(0, this.#length));
3261
+ this.#buffer = buffer;
3262
+ }
3263
+ this.#buffer.set(bytes, this.#length);
3264
+ this.#length = length;
3265
+ }
3266
+ take() {
3267
+ const bytes = this.#buffer.subarray(0, this.#length);
3268
+ this.clear();
3269
+ return bytes;
3270
+ }
3271
+ clear() {
3272
+ this.#buffer = new Uint8Array(0);
3273
+ this.#length = 0;
3274
+ }
3275
+ }
3276
+
3193
3277
  // node_modules/@agentclientprotocol/sdk/dist/line-buffer.js
3194
3278
  var newline = 10;
3195
3279
 
3196
3280
  class LineBuffer {
3197
- #pending = [];
3198
- push(chunk) {
3199
- const lines = [];
3281
+ #pending;
3282
+ #maxMessageBytes;
3283
+ constructor(maxMessageBytes) {
3284
+ this.#maxMessageBytes = resolveMaxMessageBytes(maxMessageBytes);
3285
+ this.#pending = new MessageBuffer(Math.min(Number.MAX_SAFE_INTEGER, this.#maxMessageBytes + 1));
3286
+ }
3287
+ *push(chunk) {
3200
3288
  let start = 0;
3201
3289
  let newlineIndex = chunk.indexOf(newline, start);
3202
3290
  while (newlineIndex !== -1) {
3203
- lines.push(this.#takeLine(chunk.subarray(start, newlineIndex)));
3291
+ yield this.#takeLine(chunk.subarray(start, newlineIndex));
3204
3292
  start = newlineIndex + 1;
3205
3293
  newlineIndex = chunk.indexOf(newline, start);
3206
3294
  }
3207
3295
  if (start < chunk.byteLength) {
3208
- this.#pending.push(start === 0 ? chunk : new Uint8Array(chunk.subarray(start)));
3296
+ const tail = chunk.subarray(start);
3297
+ this.#checkLine(tail);
3298
+ this.#pending.append(tail);
3209
3299
  }
3210
- return lines;
3211
3300
  }
3212
3301
  flush() {
3213
- if (this.#pending.length === 0) {
3302
+ if (this.#pending.byteLength === 0) {
3214
3303
  return;
3215
3304
  }
3216
- return this.#takeLine(new Uint8Array(0));
3305
+ return stripCarriageReturn(this.#pending.take());
3306
+ }
3307
+ clear() {
3308
+ this.#pending.clear();
3217
3309
  }
3218
3310
  #takeLine(tail) {
3219
- if (this.#pending.length === 0) {
3220
- return tail;
3311
+ this.#checkLine(tail);
3312
+ if (this.#pending.byteLength === 0) {
3313
+ return stripCarriageReturn(tail);
3221
3314
  }
3222
- let total = tail.byteLength;
3223
- for (const part of this.#pending) {
3224
- total += part.byteLength;
3315
+ this.#pending.append(tail);
3316
+ return stripCarriageReturn(this.#pending.take());
3317
+ }
3318
+ #checkLine(tail) {
3319
+ const lastByte = tail.byteLength > 0 ? tail[tail.byteLength - 1] : this.#pending.lastByte;
3320
+ const byteLength = this.#pending.byteLength + tail.byteLength - (lastByte === 13 ? 1 : 0);
3321
+ if (byteLength > this.#maxMessageBytes) {
3322
+ this.clear();
3323
+ throw new MessageTooLargeError(this.#maxMessageBytes);
3225
3324
  }
3226
- const line = new Uint8Array(total);
3227
- let offset = 0;
3228
- for (const part of this.#pending) {
3229
- line.set(part, offset);
3230
- offset += part.byteLength;
3231
- }
3232
- line.set(tail, offset);
3233
- this.#pending = [];
3234
- return line;
3235
3325
  }
3236
3326
  }
3327
+ function stripCarriageReturn(line) {
3328
+ return line[line.byteLength - 1] === 13 ? line.subarray(0, -1) : line;
3329
+ }
3237
3330
 
3238
3331
  // node_modules/@agentclientprotocol/sdk/dist/stream.js
3239
- function ndJsonStream(output, input) {
3332
+ function ndJsonStream(output, input, options = {}) {
3333
+ const maxMessageBytes = resolveMaxMessageBytes(options.maxMessageBytes);
3240
3334
  const textEncoder = new TextEncoder;
3241
3335
  const textDecoder = new TextDecoder;
3242
3336
  let cancelled = false;
@@ -3258,7 +3352,7 @@ function ndJsonStream(output, input) {
3258
3352
  };
3259
3353
  const readable = new ReadableStream({
3260
3354
  async start(controller) {
3261
- const lines = new LineBuffer;
3355
+ const lines = new LineBuffer(maxMessageBytes);
3262
3356
  const enqueueLine = async (lineBytes) => {
3263
3357
  const trimmedLine = textDecoder.decode(lineBytes).trim();
3264
3358
  if (!trimmedLine) {
@@ -3310,8 +3404,10 @@ function ndJsonStream(output, input) {
3310
3404
  return;
3311
3405
  }
3312
3406
  controller.error(err);
3407
+ reader.cancel(err).catch(() => {});
3313
3408
  return;
3314
3409
  } finally {
3410
+ lines.clear();
3315
3411
  if (inputReader === reader) {
3316
3412
  inputReader = undefined;
3317
3413
  }
@@ -3353,8 +3449,8 @@ var zGuardCreateElicitationResponseCancel = object({
3353
3449
  action: literal("cancel")
3354
3450
  });
3355
3451
  // node_modules/@agentclientprotocol/sdk/dist/acp.js
3356
- function ndJsonStream2(output, input) {
3357
- return ndJsonStream(output, input);
3452
+ function ndJsonStream2(output, input, options) {
3453
+ return ndJsonStream(output, input, options);
3358
3454
  }
3359
3455
  function emptyObjectResponse(response) {
3360
3456
  return response ?? {};
@@ -4945,6 +5041,7 @@ class ACPAdapter {
4945
5041
  name = "acp";
4946
5042
  traits = {
4947
5043
  hasMcp: true,
5044
+ hasToolSearch: false,
4948
5045
  hasLocalEnvironment: true
4949
5046
  };
4950
5047
  async createSession(config) {
@@ -1,32 +1,35 @@
1
1
  import {
2
2
  resolveSlackUserId
3
- } from "./cli-8qmme6vd.js";
3
+ } from "./cli-c8a36vcc.js";
4
4
  import {
5
5
  createTaskWithSiblingAwareness
6
- } from "./cli-ftfvggzx.js";
6
+ } from "./cli-9hsgwz4w.js";
7
7
  import"./cli-0z2v4nhw.js";
8
- import"./cli-tt9k8r35.js";
9
- import"./cli-vhjwh6cz.js";
8
+ import"./cli-cpvsaqsw.js";
10
9
  import"./cli-re8z5p8p.js";
11
- import"./cli-3dpj7atn.js";
12
- import"./cli-aw1jwp1r.js";
13
- import"./cli-aky8tctm.js";
14
- import"./cli-g8djp6qe.js";
15
- import"./cli-ws6rqycm.js";
16
- import"./cli-wscdvcqz.js";
17
- import"./cli-fgqxwrpv.js";
10
+ import"./cli-jsp14b6c.js";
11
+ import"./cli-tzx2ke1v.js";
12
+ import"./cli-tmqt7dpj.js";
13
+ import"./cli-tfky2838.js";
14
+ import"./cli-vctdqs5h.js";
15
+ import"./cli-tpq83z89.js";
18
16
  import"./cli-epan13p1.js";
19
17
  import"./cli-y89t4nca.js";
20
18
  import"./cli-f14fvzag.js";
21
- import"./cli-987hg0aa.js";
22
- import"./cli-53sz8gkz.js";
23
- import"./cli-jsp14b6c.js";
24
- import"./cli-65hjmev5.js";
25
- import"./cli-xberxa1r.js";
26
- import"./cli-bsakbbkm.js";
19
+ import"./cli-12tszpk9.js";
20
+ import"./cli-ygwm91nt.js";
21
+ import"./cli-3dpj7atn.js";
22
+ import"./cli-10nhj6xq.js";
23
+ import"./cli-rb9m6rpe.js";
24
+ import"./cli-rykfmgwg.js";
25
+ import"./cli-0jwe9034.js";
26
+ import"./cli-6cs6wzxt.js";
27
27
  import"./cli-fad8m16k.js";
28
+ import"./cli-jz4w45qt.js";
29
+ import"./cli-25fcq4b4.js";
30
+ import"./cli-bsakbbkm.js";
31
+ import"./cli-trc24wk2.js";
28
32
  import"./cli-51tf7ac3.js";
29
- import"./cli-aehm1rbq.js";
30
33
  import {
31
34
  buildCancelledBlocks,
32
35
  ensureSlackThreadTree,
@@ -34,7 +37,7 @@ import {
34
37
  getAgentEmoji,
35
38
  getTaskLink,
36
39
  isSlackRenderV2Enabled
37
- } from "./cli-j57qkrpq.js";
40
+ } from "./cli-azhgzetg.js";
38
41
  import"./cli-q51yprfq.js";
39
42
  import"./cli-3er6gcsn.js";
40
43
  import"./cli-2658f6at.js";
@@ -47,24 +50,26 @@ import {
47
50
  init_context_key,
48
51
  init_db,
49
52
  slackContextKey
50
- } from "./cli-47m6dkd3.js";
51
- import"./cli-4198qc9v.js";
52
- import"./cli-3gmcwfyx.js";
53
- import"./cli-ggm92wcn.js";
54
- import"./cli-19jenss3.js";
55
- import"./cli-dv6cdjs2.js";
53
+ } from "./cli-qydf22qq.js";
54
+ import"./cli-3qhyh31j.js";
55
+ import"./cli-ktmyrtpn.js";
56
+ import"./cli-r1mxd1xh.js";
56
57
  import"./cli-n7h1kqpf.js";
57
- import"./cli-de1396j2.js";
58
- import"./cli-cqt19wg6.js";
58
+ import"./cli-ptr8h7kp.js";
59
+ import"./cli-dv6cdjs2.js";
60
+ import"./cli-1a2j50m0.js";
61
+ import"./cli-0wgxmwf6.js";
62
+ import"./cli-ywybs5as.js";
59
63
  import"./cli-ej6gbxfb.js";
64
+ import"./cli-kmcpfwn2.js";
60
65
  import"./cli-sd0mxa3c.js";
61
66
  import"./cli-w5e1d1vv.js";
62
- import"./cli-c07r9a2m.js";
67
+ import"./cli-0q3avq3s.js";
63
68
  import"./cli-r2ap2czm.js";
64
- import"./cli-5b6b62tz.js";
69
+ import"./cli-13hw4z91.js";
65
70
  import"./cli-btbzvq95.js";
66
71
  import"./cli-1m2e086m.js";
67
- import"./cli-mcnhgnn1.js";
72
+ import"./cli-ykk5jaax.js";
68
73
  import"./cli-bzr0ftht.js";
69
74
  import"./cli-bd957dgb.js";
70
75
  import"./cli-pzxba7gw.js";
@@ -10,7 +10,14 @@ import {
10
10
  } from "./cli-et1bbwqf.js";
11
11
  import {
12
12
  retryProviderRequest
13
- } from "./cli-s8s499xy.js";
13
+ } from "./cli-qbksc292.js";
14
+ import {
15
+ ANTHROPIC_FEDERATION_RULE_ID_ENV,
16
+ ANTHROPIC_IDENTITY_TOKEN_FILE_ENV,
17
+ ANTHROPIC_ORGANIZATION_ID_ENV,
18
+ ANTHROPIC_SERVICE_ACCOUNT_ID_ENV,
19
+ ANTHROPIC_WORKSPACE_ID_ENV
20
+ } from "./cli-trc24wk2.js";
14
21
  import"./cli-51tf7ac3.js";
15
22
  import {
16
23
  adjustMaxTokensForThinking,
@@ -19,13 +26,13 @@ import {
19
26
  getJsonSchemaToolParameters,
20
27
  resolveJsonSchemaStrictSampling,
21
28
  transformMessages
22
- } from "./cli-k0g1sjzm.js";
29
+ } from "./cli-ybgv4kw2.js";
23
30
  import {
24
31
  sanitizeSurrogates
25
32
  } from "./cli-y2apkfe2.js";
26
33
  import {
27
34
  headersToRecord
28
- } from "./cli-vapyk8sw.js";
35
+ } from "./cli-7kyk9jr3.js";
29
36
  import {
30
37
  getProviderEnvValue
31
38
  } from "./cli-btbzvq95.js";
@@ -42,7 +49,7 @@ import {
42
49
  hasToolRedefinitions,
43
50
  renderSystemMessageUpdate,
44
51
  resolveTranscript
45
- } from "./cli-mcnhgnn1.js";
52
+ } from "./cli-ykk5jaax.js";
46
53
  import {
47
54
  AssistantMessageEventStream,
48
55
  appendAssistantMessageDiagnostic
@@ -184,14 +191,39 @@ function hasHeader(headers, name) {
184
191
  }
185
192
  return false;
186
193
  }
194
+ function hasRequestAuth(apiKey, headers) {
195
+ return !!apiKey || hasHeader(headers, "authorization") || hasHeader(headers, "x-api-key") || hasHeader(headers, "cf-aig-authorization");
196
+ }
187
197
  function assertRequestAuth(provider, apiKey, headers) {
188
- if (apiKey)
198
+ if (!hasRequestAuth(apiKey, headers))
199
+ throw new Error(`No API key for provider: ${provider}`);
200
+ }
201
+
202
+ class PiAnthropic extends Anthropic {
203
+ _shouldResolveDefaultCredentials() {
204
+ return false;
205
+ }
206
+ }
207
+ function getAnthropicFederation(model, apiKey, headers, env) {
208
+ if (model.provider !== "anthropic" || hasRequestAuth(apiKey, headers))
189
209
  return;
190
- if (hasHeader(headers, "authorization") || hasHeader(headers, "x-api-key") || hasHeader(headers, "cf-aig-authorization")) {
210
+ const federationRuleId = getProviderEnvValue(ANTHROPIC_FEDERATION_RULE_ID_ENV, env);
211
+ const organizationId = getProviderEnvValue(ANTHROPIC_ORGANIZATION_ID_ENV, env);
212
+ const identityTokenFile = getProviderEnvValue(ANTHROPIC_IDENTITY_TOKEN_FILE_ENV, env);
213
+ if (!federationRuleId || !organizationId || !identityTokenFile)
191
214
  return;
192
- }
193
- throw new Error(`No API key for provider: ${provider}`);
215
+ return {
216
+ organization_id: organizationId,
217
+ workspace_id: getProviderEnvValue(ANTHROPIC_WORKSPACE_ID_ENV, env),
218
+ authentication: {
219
+ type: "oidc_federation",
220
+ federation_rule_id: federationRuleId,
221
+ service_account_id: getProviderEnvValue(ANTHROPIC_SERVICE_ACCOUNT_ID_ENV, env),
222
+ identity_token: { source: "file", path: identityTokenFile }
223
+ }
224
+ };
194
225
  }
226
+ var federationClient;
195
227
  var ANTHROPIC_MESSAGE_EVENTS = new Set([
196
228
  "message_start",
197
229
  "message_delta",
@@ -376,7 +408,9 @@ var stream = (model, context, options) => {
376
408
  isOAuth = false;
377
409
  } else {
378
410
  const apiKey = options?.apiKey;
379
- assertRequestAuth(model.provider, apiKey, options?.headers);
411
+ const federation = getAnthropicFederation(model, apiKey, options?.headers, options?.env);
412
+ if (!federation)
413
+ assertRequestAuth(model.provider, apiKey, options?.headers);
380
414
  let copilotDynamicHeaders;
381
415
  if (model.provider === "github-copilot") {
382
416
  const hasImages = hasCopilotVisionInput(normalizedContext.messages);
@@ -387,7 +421,7 @@ var stream = (model, context, options) => {
387
421
  }
388
422
  const cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);
389
423
  const cacheSessionId = cacheRetention === "none" ? undefined : options?.sessionId;
390
- const created = createClient(model, apiKey, options?.headers, options?.fetch, copilotDynamicHeaders, cacheSessionId);
424
+ const created = createClient(model, apiKey, options?.headers, options?.fetch, copilotDynamicHeaders, cacheSessionId, federation);
391
425
  client = created.client;
392
426
  isOAuth = created.isOAuthToken;
393
427
  }
@@ -410,6 +444,7 @@ var stream = (model, context, options) => {
410
444
  stream2.push({ type: "start", partial: output });
411
445
  const blocks = output.content;
412
446
  for await (const event of iterateAnthropicEvents(response, options?.signal)) {
447
+ await options?.onProviderStreamEvent?.(event, model);
413
448
  if (event.type === "message_start") {
414
449
  output.responseId = event.message.id;
415
450
  const transformations = event.message.input_transformations;
@@ -574,6 +609,10 @@ var stream = (model, context, options) => {
574
609
  if (event.usage.cache_creation_input_tokens != null) {
575
610
  output.usage.cacheWrite = event.usage.cache_creation_input_tokens;
576
611
  }
612
+ const cacheCreation = event.usage.cache_creation;
613
+ if (cacheCreation?.ephemeral_1h_input_tokens != null) {
614
+ output.usage.cacheWrite1h = cacheCreation.ephemeral_1h_input_tokens;
615
+ }
577
616
  const thinkingTokens = event.usage.output_tokens_details?.thinking_tokens;
578
617
  if (thinkingTokens != null) {
579
618
  output.usage.reasoning = thinkingTokens;
@@ -637,7 +676,9 @@ function mapThinkingLevelToEffort(model, level) {
637
676
  }
638
677
  }
639
678
  var streamSimple = (model, context, options) => {
640
- assertRequestAuth(model.provider, options?.apiKey, options?.headers);
679
+ if (!getAnthropicFederation(model, options?.apiKey, options?.headers, options?.env)) {
680
+ assertRequestAuth(model.provider, options?.apiKey, options?.headers);
681
+ }
641
682
  const base = {
642
683
  ...buildBaseOptions(model, context, options, options?.apiKey),
643
684
  toolChoice: options?.toolChoice
@@ -668,9 +709,9 @@ var streamSimple = (model, context, options) => {
668
709
  function isOAuthToken(apiKey) {
669
710
  return apiKey.includes("sk-ant-oat");
670
711
  }
671
- function createClient(model, apiKey, optionsHeaders, fetch, dynamicHeaders, sessionId) {
712
+ function createClient(model, apiKey, optionsHeaders, fetch, dynamicHeaders, sessionId, federation) {
672
713
  if (model.provider === "github-copilot") {
673
- const client2 = new Anthropic({
714
+ const client2 = new PiAnthropic({
674
715
  apiKey: null,
675
716
  authToken: apiKey ?? null,
676
717
  baseURL: model.baseUrl,
@@ -684,7 +725,7 @@ function createClient(model, apiKey, optionsHeaders, fetch, dynamicHeaders, sess
684
725
  return { client: client2, isOAuthToken: false };
685
726
  }
686
727
  if (apiKey && isOAuthToken(apiKey)) {
687
- const client2 = new Anthropic({
728
+ const client2 = new PiAnthropic({
688
729
  apiKey: null,
689
730
  authToken: apiKey,
690
731
  baseURL: model.baseUrl,
@@ -709,7 +750,22 @@ function createClient(model, apiKey, optionsHeaders, fetch, dynamicHeaders, sess
709
750
  accept: "application/json",
710
751
  "anthropic-dangerous-direct-browser-access": "true"
711
752
  }, sessionAffinityHeaders, model.headers, optionsHeaders);
712
- const client = new Anthropic({
753
+ if (federation) {
754
+ const key = JSON.stringify([model.baseUrl, federation]);
755
+ if (federationClient?.key !== key || federationClient.fetch !== fetch) {
756
+ const client2 = new PiAnthropic({
757
+ apiKey: null,
758
+ authToken: null,
759
+ config: federation,
760
+ baseURL: model.baseUrl,
761
+ dangerouslyAllowBrowser: true,
762
+ fetch
763
+ });
764
+ federationClient = { key, fetch, client: client2 };
765
+ }
766
+ return { client: federationClient.client.withOptions({ defaultHeaders }), isOAuthToken: false };
767
+ }
768
+ const client = new PiAnthropic({
713
769
  apiKey: apiKey ?? null,
714
770
  authToken: null,
715
771
  baseURL: model.baseUrl,
@@ -1050,11 +1106,45 @@ function insertThinkingLevelMessages(converted, activeEffort) {
1050
1106
  function shouldUseFineGrainedToolStreamingBeta(model, context) {
1051
1107
  return getCurrentTools(context.messages).length > 0 && !getAnthropicCompat(model).supportsEagerToolInputStreaming;
1052
1108
  }
1109
+ var ANTHROPIC_STRICT_UNSUPPORTED_KEYWORDS = new Set([
1110
+ "minimum",
1111
+ "maximum",
1112
+ "exclusiveMinimum",
1113
+ "exclusiveMaximum",
1114
+ "multipleOf",
1115
+ "maxItems",
1116
+ "uniqueItems",
1117
+ "minContains",
1118
+ "maxContains",
1119
+ "minProperties",
1120
+ "maxProperties"
1121
+ ]);
1122
+ var ANTHROPIC_STRICT_STRING_FORMATS = new Set([
1123
+ "date-time",
1124
+ "time",
1125
+ "date",
1126
+ "duration",
1127
+ "email",
1128
+ "hostname",
1129
+ "uri",
1130
+ "ipv4",
1131
+ "ipv6",
1132
+ "uuid"
1133
+ ]);
1134
+ var isAnthropicStrictUnsupportedKeyword = (key, value) => {
1135
+ if (ANTHROPIC_STRICT_UNSUPPORTED_KEYWORDS.has(key))
1136
+ return true;
1137
+ if (key === "minItems")
1138
+ return value !== 0 && value !== 1;
1139
+ if (key === "format")
1140
+ return typeof value !== "string" || !ANTHROPIC_STRICT_STRING_FORMATS.has(value);
1141
+ return false;
1142
+ };
1053
1143
  function convertTools(tools, isOAuthToken2, supportsEagerToolInputStreaming, supportsStrictTools, cacheControl) {
1054
1144
  if (!tools)
1055
1145
  return [];
1056
1146
  return tools.map((tool, index) => {
1057
- const strict = resolveJsonSchemaStrictSampling(tool, supportsStrictTools);
1147
+ const strict = resolveJsonSchemaStrictSampling(tool, supportsStrictTools, isAnthropicStrictUnsupportedKeyword);
1058
1148
  const parameters = getJsonSchemaToolParameters(tool, strict);
1059
1149
  const schema = parameters;
1060
1150
  const legacyInputSchema = {
@@ -3,24 +3,26 @@ import {
3
3
  initSlackApp,
4
4
  startSlackApp,
5
5
  stopSlackApp
6
- } from "./cli-j57qkrpq.js";
6
+ } from "./cli-azhgzetg.js";
7
7
  import"./cli-q51yprfq.js";
8
8
  import"./cli-3er6gcsn.js";
9
9
  import"./cli-2658f6at.js";
10
10
  import"./cli-yatxqynm.js";
11
- import"./cli-47m6dkd3.js";
12
- import"./cli-4198qc9v.js";
13
- import"./cli-3gmcwfyx.js";
14
- import"./cli-ggm92wcn.js";
15
- import"./cli-19jenss3.js";
16
- import"./cli-dv6cdjs2.js";
11
+ import"./cli-qydf22qq.js";
12
+ import"./cli-3qhyh31j.js";
13
+ import"./cli-ktmyrtpn.js";
14
+ import"./cli-r1mxd1xh.js";
17
15
  import"./cli-n7h1kqpf.js";
18
- import"./cli-de1396j2.js";
19
- import"./cli-cqt19wg6.js";
16
+ import"./cli-ptr8h7kp.js";
17
+ import"./cli-dv6cdjs2.js";
18
+ import"./cli-1a2j50m0.js";
19
+ import"./cli-0wgxmwf6.js";
20
+ import"./cli-ywybs5as.js";
20
21
  import"./cli-ej6gbxfb.js";
22
+ import"./cli-kmcpfwn2.js";
21
23
  import"./cli-sd0mxa3c.js";
22
24
  import"./cli-w5e1d1vv.js";
23
- import"./cli-c07r9a2m.js";
25
+ import"./cli-0q3avq3s.js";
24
26
  import"./cli-r2ap2czm.js";
25
27
  import"./cli-bd957dgb.js";
26
28
  import"./cli-pzxba7gw.js";