@desplega.ai/agent-swarm 1.165.0 → 1.167.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 (296) hide show
  1. package/dist/acp-adapter-zpvy6321.js +34 -0
  2. package/dist/{actions-jna0b3wm.js → actions-fq2zrwtf.js} +30 -34
  3. package/dist/{amp-adapter-0eve81pz.js → amp-adapter-5gbk7501.js} +7 -7
  4. package/dist/{anthropic-messages-hst62ws9.js → anthropic-messages-13yn502s.js} +4 -4
  5. package/dist/{app-75hm5cfa.js → app-nctetn1e.js} +11 -11
  6. package/dist/{assistant-yzd51j33.js → assistant-0aq8gjvj.js} +31 -35
  7. package/dist/{azure-openai-responses-mh8tvf78.js → azure-openai-responses-9st34pfz.js} +5 -5
  8. package/dist/{boot-reembed-z158xq32.js → boot-reembed-1ze5853n.js} +14 -16
  9. package/dist/{boot-reembed-2ex2mcsh.js → boot-reembed-fmp5ww69.js} +15 -16
  10. package/dist/boot-scrub-sweep-cbp8xd4e.js +212 -0
  11. package/dist/{boot-seeds-2bmnh18p.js → boot-seeds-22tx8a53.js} +13 -12
  12. package/dist/{claude-adapter-jbj1mycz.js → claude-adapter-0jhgeh1d.js} +25 -25
  13. package/dist/{claude-managed-adapter-17ggz09t.js → claude-managed-adapter-tzwxy803.js} +5 -5
  14. package/dist/{claude-managed-setup-ptm1nzm2.js → claude-managed-setup-nrhfx5b0.js} +5 -5
  15. package/dist/{claude-sdk-session-9re1g7r2.js → claude-sdk-session-wh77rh83.js} +2632 -2614
  16. package/dist/{cli-zsh093hk.js → cli-014vns2y.js} +63 -1
  17. package/dist/{cli-qvfk83fy.js → cli-13xwcqvj.js} +2 -2
  18. package/dist/{cli-8gpbwy09.js → cli-1yrcfa5s.js} +5 -5
  19. package/dist/{cli-xtgtyafv.js → cli-577bxkf6.js} +212 -451
  20. package/dist/{cli-ma3zvh39.js → cli-5qkcdv8c.js} +6118 -5874
  21. package/dist/{cli-cwxhbf43.js → cli-5t5my0h8.js} +85 -2
  22. package/dist/{cli-zvckv750.js → cli-69egj654.js} +2 -2
  23. package/dist/{cli-9xb89xca.js → cli-6bpvv8h4.js} +9 -9
  24. package/dist/{cli-90v942q1.js → cli-6qxmjpem.js} +8 -8
  25. package/dist/{cli-9866bd07.js → cli-6vfz44sr.js} +1 -1
  26. package/dist/{cli-32bca7nr.js → cli-7avy4v8w.js} +1 -1
  27. package/dist/{cli-xb3c6aat.js → cli-7mhy3ths.js} +21 -18
  28. package/dist/{cli-q38n4bq0.js → cli-95zs84qw.js} +3 -3
  29. package/dist/cli-a35hzdve.js +33 -0
  30. package/dist/{cli-x3x0qwky.js → cli-bxqez1p0.js} +51 -23
  31. package/dist/{cli-prt9emct.js → cli-c2tpw9ck.js} +3 -3
  32. package/dist/{cli-0n4fasz0.js → cli-c8r99akr.js} +16 -16
  33. package/dist/{cli-5anb0ev3.js → cli-cexctgn5.js} +89 -26
  34. package/dist/{cli-bns5c8k9.js → cli-cf2vgn9d.js} +105 -91
  35. package/dist/{cli-ng97fjq7.js → cli-cmxkbzzs.js} +33 -7
  36. package/dist/{cli-nexwh8zg.js → cli-g7k7zbcz.js} +12 -5
  37. package/dist/{cli-mmzwwptd.js → cli-hf5s9pgf.js} +1 -1
  38. package/dist/{cli-nvvfd8bq.js → cli-jbzbr36n.js} +4091 -3793
  39. package/dist/{cli-zn2v3t8v.js → cli-jvmtxqtc.js} +27 -15
  40. package/dist/{cli-pkke6geq.js → cli-km4x66j0.js} +83 -65
  41. package/dist/cli-kw0jcfje.js +516 -0
  42. package/dist/{cli-28smfvbn.js → cli-m7vmeepg.js} +32 -19
  43. package/dist/{cli-hpryr6em.js → cli-mb75wpxf.js} +1 -1
  44. package/dist/{cli-qdv8kgz7.js → cli-mkdsy1nq.js} +14018 -3333
  45. package/dist/{cli-b0f70z24.js → cli-mn8qkd8v.js} +1 -1
  46. package/dist/{cli-420bdgw0.js → cli-mv2520nm.js} +1 -1
  47. package/dist/{cli-n9ehc28t.js → cli-mxry91sa.js} +31 -10
  48. package/dist/{cli-wfajtmf7.js → cli-mxvnnv5q.js} +596 -13
  49. package/dist/cli-nkqjj42q.js +104 -0
  50. package/dist/{cli-e7t4snpa.js → cli-p8rt8spp.js} +5 -5
  51. package/dist/{cli-gh5yqzpe.js → cli-pkj1w46r.js} +12 -7
  52. package/dist/cli-q1vnz8wv.js +96 -0
  53. package/dist/{cli-fj86xr3c.js → cli-qd97v6z2.js} +2 -2
  54. package/dist/{cli-ba66wyhy.js → cli-qzmzwegq.js} +60 -20
  55. package/dist/{cli-5b2fjjzh.js → cli-r7eeddkq.js} +14 -9
  56. package/dist/{cli-8ssjez7e.js → cli-rhy7z1rp.js} +22 -11
  57. package/dist/{cli-4mevd1hf.js → cli-s9y81s7j.js} +5 -5
  58. package/dist/{cli-59jn5twa.js → cli-tc5zec7v.js} +7 -7
  59. package/dist/{cli-ttbsse3f.js → cli-tmhsxhb8.js} +1 -1
  60. package/dist/{cli-k6xx3pve.js → cli-tx2zvn23.js} +4 -4
  61. package/dist/{cli-pjxnr1jn.js → cli-ty4bzkqr.js} +5 -5
  62. package/dist/{cli-nfygw434.js → cli-v1pwxreq.js} +55 -52
  63. package/dist/{cli-ftry7975.js → cli-v1w7pbd8.js} +3 -2
  64. package/dist/{cli-10zmp1p7.js → cli-vr5avem2.js} +27 -32
  65. package/dist/{cli-bzr0ftht.js → cli-wnb9b2g3.js} +19 -0
  66. package/dist/cli-wt7ccy4r.js +2654 -0
  67. package/dist/{cli-50eg13rj.js → cli-wydz3feg.js} +549 -321
  68. package/dist/{cli-krqm5f11.js → cli-xezn9nkh.js} +16 -13
  69. package/dist/{cli-8kt0bmgx.js → cli-xf713zz0.js} +2 -2
  70. package/dist/{cli-x7afk5wm.js → cli-xvc3q9br.js} +1 -1
  71. package/dist/{cli-9s3h836g.js → cli-xvdgasgy.js} +1 -1
  72. package/dist/{cli-j0pdrmwg.js → cli-y0kjpfm9.js} +3 -3
  73. package/dist/{cli-6zcfw0x7.js → cli-y195hv1a.js} +1 -1
  74. package/dist/{cli-amwhs8h2.js → cli-ykt8f7va.js} +22 -9
  75. package/dist/{cli-1kzfvd1z.js → cli-ymmc1zxg.js} +15 -11
  76. package/dist/{cli-xnzrzets.js → cli-ypgba1a8.js} +2 -2
  77. package/dist/{cli-bdv39kgj.js → cli-z1dqhc9y.js} +31 -20
  78. package/dist/{cli-fw6vdcq5.js → cli-zp67qg5x.js} +34 -1
  79. package/dist/{cli-qbksc292.js → cli-zy39d433.js} +2 -0
  80. package/dist/cli.js +36 -32
  81. package/dist/{cloudflare-workers-ai-system-one-tt484t61.js → cloudflare-workers-ai-system-one-sta45jf9.js} +7 -5
  82. package/dist/{codex-adapter-3qnxshje.js → codex-adapter-cgesnjkr.js} +20 -20
  83. package/dist/{codex-login-brkxhhdg.js → codex-login-g1cyt5zm.js} +2 -2
  84. package/dist/{codex-session-runner-612wnapp.js → codex-session-runner-8kd7ddhr.js} +20 -20
  85. package/dist/{commands-2ybfcxkj.js → commands-h6zaaxym.js} +11 -10
  86. package/dist/{cursor-adapter-p3jgdehv.js → cursor-adapter-v8mm6bp5.js} +7 -7
  87. package/dist/{db-f4ans0jj.js → db-qg3myn53.js} +13 -10
  88. package/dist/{devin-adapter-dhzt01ff.js → devin-adapter-bffjj5n4.js} +2 -2
  89. package/dist/{dispatcher-pk182apd.js → dispatcher-7vnwj9qw.js} +28 -32
  90. package/dist/{dsh-adapter-7twaeps1.js → dsh-adapter-tz6hfp5r.js} +7 -7
  91. package/dist/{e2b-y8t3jzyz.js → e2b-nd50eccg.js} +1 -1
  92. package/dist/{easter-egg-3d-mtpnw06s.js → easter-egg-3d-66zxervv.js} +2 -2
  93. package/dist/{event-bus-w7ac4n3c.js → event-bus-vnfthafg.js} +2 -2
  94. package/dist/{execute-s4ccjq3n.js → execute-h4jgevyw.js} +61 -11
  95. package/dist/{google-generative-ai-d6nphg3q.js → google-generative-ai-b8zxrpax.js} +5 -5
  96. package/dist/{google-vertex-cpshkref.js → google-vertex-nrdd697t.js} +5 -5
  97. package/dist/grok-adapter-jdt2dz2s.js +39 -0
  98. package/dist/{handlers-g2wnr4t9.js → handlers-2qtkpncr.js} +31 -35
  99. package/dist/{hook-f7jt9vnm.js → hook-51yfcgsv.js} +48 -39
  100. package/dist/{hook-bbdpnkb4.js → hook-qnbdgwvd.js} +15 -17
  101. package/dist/{http-w40q4w94.js → http-jsmtag08.js} +536 -231
  102. package/dist/{index-056j5kzn.js → index-2t9kesn1.js} +13 -12
  103. package/dist/{index-cj1r9q83.js → index-bt8wkv1w.js} +29 -33
  104. package/dist/{index-7n70jwbb.js → index-cx1sb9bq.js} +42 -35
  105. package/dist/{index-9bfssf54.js → index-ekywyv2v.js} +28 -32
  106. package/dist/{index-fdk1t4d6.js → index-n0rxa4ca.js} +11962 -9900
  107. package/dist/{index-k8xc083e.js → index-t4g06w93.js} +28 -32
  108. package/dist/{keepalive-1tj10tf4.js → keepalive-4aezx4bj.js} +16 -12
  109. package/dist/{lead-st0bg7v4.js → lead-r44bkpm5.js} +52 -56
  110. package/dist/{llama-cpp-classify-tgj35k8d.js → llama-cpp-classify-6erb7wwv.js} +3 -1
  111. package/dist/{maintenance-nz71zats.js → maintenance-grz5jrzh.js} +12 -13
  112. package/dist/{mistral-conversations-8445ddjn.js → mistral-conversations-059y51zt.js} +4 -4
  113. package/dist/{node-f0ykebbv.js → node-qm9eb6z0.js} +25 -7
  114. package/dist/{oauth-refresh-sweep-aefzwvvq.js → oauth-refresh-sweep-wm4ctjfj.js} +15 -11
  115. package/dist/{onboard-kgpr9mbn.js → onboard-v60zgqf0.js} +2 -2
  116. package/dist/{openai-codex-responses-9ynm88zy.js → openai-codex-responses-jzxkta9b.js} +8 -7
  117. package/dist/{openai-completions-nhqwjmaw.js → openai-completions-663yncfq.js} +4 -4
  118. package/dist/openai-decisions-vj9nkpf8.js +162 -0
  119. package/dist/{openai-responses-xx1c4kgm.js → openai-responses-m3g43rrt.js} +5 -5
  120. package/dist/{opencode-adapter-0c8e70dk.js → opencode-adapter-yjyqynzf.js} +8 -8
  121. package/dist/{openrouter-images-8yx3487g.js → openrouter-images-kr60n6b9.js} +1 -1
  122. package/dist/{otel-impl-x8zp4y5a.js → otel-impl-ghh4dyf8.js} +2 -2
  123. package/dist/{pi-messages-vxdt8v7j.js → pi-messages-xszk613n.js} +1 -1
  124. package/dist/{pi-mono-adapter-t280ah5c.js → pi-mono-adapter-0eg8kw2c.js} +69 -52
  125. package/dist/{pricing-refresh-9e0q7cwk.js → pricing-refresh-mjrqvnvw.js} +12 -11
  126. package/dist/{rbac-roles-790j3ga8.js → rbac-roles-axv4d74x.js} +11 -10
  127. package/dist/{rbac-roles-kcp6zge2.js → rbac-roles-fd5tskj9.js} +11 -10
  128. package/dist/{render-v2-tch4nefj.js → render-v2-k50j33qd.js} +11 -11
  129. package/dist/{runtime-v2t1r79e.js → runtime-h9ha1mq6.js} +4 -4
  130. package/dist/{setup-rcm303ns.js → setup-4syh0pd2.js} +2 -2
  131. package/dist/{typesafe-system-one-datfr82p.js → typesafe-system-one-e988vty7.js} +7 -5
  132. package/dist/{virtual-modules-wm8mxdxx.js → virtual-modules-ftr9kwe8.js} +11 -11
  133. package/dist/{work-objects-ctg7t70w.js → work-objects-jcdbg8rr.js} +32 -36
  134. package/dist/{worker-5dp0xm55.js → worker-x8j8c9sx.js} +52 -56
  135. package/dist/{x-v3yw66zs.js → x-ma4gnfgy.js} +2 -2
  136. package/openapi.json +5 -2
  137. package/package.json +15 -11
  138. package/src/be/automation-preflight.ts +9 -4
  139. package/src/be/boot-scrub-sweep.ts +302 -0
  140. package/src/be/crypto/key-bootstrap.ts +1 -1
  141. package/src/be/db/approvals.ts +15 -1
  142. package/src/be/db/codex-oauth-device-flows.ts +40 -0
  143. package/src/be/db/config-secrets.ts +31 -0
  144. package/src/be/db/runtime.ts +4 -0
  145. package/src/be/db/script-runs.ts +15 -0
  146. package/src/be/db/tasks/write.ts +1 -1
  147. package/src/be/db-queries/mcp-oauth.ts +5 -0
  148. package/src/be/db-queries/oauth.ts +77 -0
  149. package/src/be/db.ts +162 -59
  150. package/src/be/events.ts +17 -1
  151. package/src/be/memory/index-content.ts +2 -2
  152. package/src/be/memory/providers/openai-embedding.ts +7 -2
  153. package/src/be/memory/providers/sqlite-store.ts +63 -11
  154. package/src/be/memory/raters/llm-summarizer.ts +7 -2
  155. package/src/be/memory/types.ts +14 -0
  156. package/src/be/migrations/201_workflow_replay_columns.sql +10 -0
  157. package/src/be/migrations/202_codex_oauth_device_flows.sql +24 -0
  158. package/src/be/modelsdev-cache.json +61 -0
  159. package/src/be/scripts/db.ts +28 -4
  160. package/src/be/scripts/source-secrets.ts +37 -0
  161. package/src/be/scrub-json.ts +32 -0
  162. package/src/be/sealed-json.ts +59 -0
  163. package/src/be/secret-registry.ts +131 -0
  164. package/src/be/seed-pricing.ts +84 -53
  165. package/src/be/swarm-config-guard.ts +13 -0
  166. package/src/be/workflow-replay.ts +77 -0
  167. package/src/commands/provider-credentials.ts +28 -5
  168. package/src/commands/runner.ts +7 -12
  169. package/src/heartbeat/heartbeat.ts +91 -19
  170. package/src/hooks/hook.ts +72 -27
  171. package/src/http/codex-oauth-device.ts +8 -10
  172. package/src/http/db-query-bounded.ts +3 -0
  173. package/src/http/db-query-shared.ts +107 -15
  174. package/src/http/db-query.ts +10 -2
  175. package/src/http/index.ts +23 -6
  176. package/src/http/mcp.ts +5 -0
  177. package/src/http/onboarding.ts +2 -0
  178. package/src/http/script-runs.ts +9 -1
  179. package/src/http/scripts.ts +15 -0
  180. package/src/http/workflows.ts +3 -2
  181. package/src/oauth/mcp-wrapper.ts +1 -1
  182. package/src/providers/acp-adapter.ts +25 -11
  183. package/src/providers/acp-target-catalog.ts +35 -1
  184. package/src/providers/acp-targets.ts +78 -7
  185. package/src/providers/amp-adapter.ts +1 -1
  186. package/src/providers/claude-adapter.ts +26 -0
  187. package/src/providers/codex-adapter.ts +30 -3
  188. package/src/providers/codex-oauth/auth-json.ts +21 -4
  189. package/src/providers/codex-oauth/types.ts +2 -0
  190. package/src/providers/cursor-adapter.ts +1 -1
  191. package/src/providers/dsh-adapter.ts +10 -1
  192. package/src/providers/grok-adapter.ts +18 -2
  193. package/src/providers/opencode-adapter.ts +21 -5
  194. package/src/providers/pi-mono-extension.ts +56 -25
  195. package/src/providers/pricing-sources.md +2 -0
  196. package/src/script-workflows/supervisor.ts +11 -2
  197. package/src/scripts-runtime/eval-harness.ts +2 -12
  198. package/src/scripts-runtime/executors/quickjs-bundle.ts +152 -0
  199. package/src/scripts-runtime/executors/quickjs-prelude.ts +285 -0
  200. package/src/scripts-runtime/executors/quickjs-runner.ts +580 -0
  201. package/src/scripts-runtime/executors/quickjs-worker.ts +81 -0
  202. package/src/scripts-runtime/executors/quickjs.ts +196 -0
  203. package/src/scripts-runtime/executors/registry.ts +2 -0
  204. package/src/scripts-runtime/executors/sourcemap.ts +79 -0
  205. package/src/scripts-runtime/script-error-hints.ts +14 -0
  206. package/src/server.ts +66 -4
  207. package/src/tests/acp-adapter.test.ts +277 -12
  208. package/src/tests/boot-scrub-sweep.test.ts +390 -0
  209. package/src/tests/check-text-columns.test.ts +145 -0
  210. package/src/tests/ci-unit-test-report.test.ts +73 -0
  211. package/src/tests/claude-default-route.test.ts +75 -0
  212. package/src/tests/claude-hook-output.test.ts +233 -0
  213. package/src/tests/claude-sdk-process.fixture.ts +13 -2
  214. package/src/tests/codex-adapter-pool-auth-revalidate.test.ts +4 -2
  215. package/src/tests/codex-adapter.test.ts +166 -26
  216. package/src/tests/codex-oauth-auth-timestamps.test.ts +76 -0
  217. package/src/tests/codex-oauth-device.test.ts +23 -37
  218. package/src/tests/codex-oauth.test.ts +4 -1
  219. package/src/tests/context-window.test.ts +2 -2
  220. package/src/tests/credential-check.test.ts +51 -1
  221. package/src/tests/db-query-denylist.test.ts +202 -0
  222. package/src/tests/db-task-read-contract.test.ts +1 -0
  223. package/src/tests/db-task-write-contract.test.ts +1 -0
  224. package/src/tests/dsh-adapter.test.ts +23 -1
  225. package/src/tests/enabled-tools.test.ts +269 -0
  226. package/src/tests/entrypoint-acp-target-binary.test.ts +31 -1
  227. package/src/tests/entrypoint-codex-oauth-seed.test.ts +12 -0
  228. package/src/tests/events-scrub.test.ts +88 -0
  229. package/src/tests/fixtures/secret-corpus.ts +320 -0
  230. package/src/tests/grok-adapter.test.ts +13 -0
  231. package/src/tests/haiku-5-5-pricing.test.ts +38 -0
  232. package/src/tests/heartbeat-checklist.test.ts +158 -1
  233. package/src/tests/onboarding.test.ts +44 -0
  234. package/src/tests/opencode-adapter.test.ts +66 -3
  235. package/src/tests/opencode-plugin.test.ts +37 -0
  236. package/src/tests/openrouter-attribution-call-sites.test.ts +204 -0
  237. package/src/tests/openrouter-base-url.test.ts +30 -39
  238. package/src/tests/pi-mono-extension.test.ts +161 -2
  239. package/src/tests/pricing-refresh.test.ts +70 -1
  240. package/src/tests/reasoning-effort.test.ts +3 -1
  241. package/src/tests/script-connections.test.ts +5 -0
  242. package/src/tests/script-executor-conformance.test.ts +3 -0
  243. package/src/tests/script-executor-quickjs.test.ts +442 -0
  244. package/src/tests/script-executor-registry.test.ts +6 -1
  245. package/src/tests/script-runs-http.test.ts +88 -1
  246. package/src/tests/script-runs-scrub.test.ts +275 -0
  247. package/src/tests/scripts-http.test.ts +82 -1
  248. package/src/tests/scrubbed-text-12e.test.ts +289 -0
  249. package/src/tests/sealed-key-guard.test.ts +166 -0
  250. package/src/tests/secret-canary-sweep.test.ts +958 -0
  251. package/src/tests/secret-registry.test.ts +355 -0
  252. package/src/tests/secret-rules.test.ts +230 -0
  253. package/src/tests/secret-scrubber.test.ts +3 -2
  254. package/src/tests/telemetry-trigger.test.ts +12 -1
  255. package/src/tests/workflow-llm.test.ts +14 -0
  256. package/src/tests/workflow-replay.test.ts +518 -0
  257. package/src/tests/workflow-scrub.test.ts +242 -0
  258. package/src/tests/workflow-system-one-decision-providers.test.ts +33 -0
  259. package/src/tools/db-query.ts +1 -1
  260. package/src/tools/inject-learning.ts +1 -1
  261. package/src/tools/request-human-input.ts +7 -2
  262. package/src/tools/workflows/get-workflow-run.ts +3 -2
  263. package/src/types.ts +1 -1
  264. package/src/utils/enabled-tools.ts +27 -0
  265. package/src/utils/internal-ai/complete-structured.ts +11 -3
  266. package/src/utils/openrouter-base-url.ts +23 -0
  267. package/src/utils/secret-rules.generated.ts +2055 -0
  268. package/src/utils/secret-scrubber.ts +363 -29
  269. package/src/workflows/engine.ts +39 -4
  270. package/src/workflows/executors/raw-llm.ts +1 -0
  271. package/src/workflows/executors/system-one-decision.ts +2 -0
  272. package/src/workflows/executors/validate.ts +1 -0
  273. package/src/workflows/executors/workflow-llm.ts +9 -2
  274. package/src/workflows/recovery.ts +10 -1
  275. package/src/workflows/resume.ts +62 -3
  276. package/src/workflows/retry-poller.ts +3 -0
  277. package/templates/skills/agent-browser/SKILL.md +2 -0
  278. package/templates/skills/agent-browser/content.md +2 -0
  279. package/templates/skills/code-quality/content.md +1 -0
  280. package/templates/skills/heartbeat-runbook/content.md +1 -1
  281. package/templates/skills/work-on-task/SKILL.md +4 -0
  282. package/templates/skills/work-on-task/content.md +4 -0
  283. package/templates/skills/workflow-iterate/content.md +9 -0
  284. package/dist/acp-adapter-w6zws6me.js +0 -23
  285. package/dist/boot-scrub-logs-246yn076.js +0 -99
  286. package/dist/cli-3a4m1aws.js +0 -572
  287. package/dist/cli-3dpj7atn.js +0 -11
  288. package/dist/cli-a87b04k8.js +0 -951
  289. package/dist/cli-cvk6yzw5.js +0 -40
  290. package/dist/cli-gvcgmx69.js +0 -183
  291. package/dist/cli-h1spv8v4.js +0 -427
  292. package/dist/cli-jqt9hrnz.js +0 -168
  293. package/dist/cli-yhmwmv0g.js +0 -9281
  294. package/dist/grok-adapter-yt9pab3k.js +0 -29
  295. package/src/be/boot-scrub-logs.ts +0 -132
  296. package/dist/{codex-hook-d2rkvf39.js → codex-hook-15dgc4cb.js} +1 -1
@@ -7,7 +7,7 @@ import {
7
7
  replaceTabs,
8
8
  truncateMiddle,
9
9
  writeOutputFile
10
- } from "./cli-8ssjez7e.js";
10
+ } from "./cli-rhy7z1rp.js";
11
11
  import {
12
12
  Container,
13
13
  Spacer,
@@ -17,7 +17,7 @@ import {
17
17
  keyHint,
18
18
  normalizePath,
19
19
  stripBom
20
- } from "./cli-cwxhbf43.js";
20
+ } from "./cli-5t5my0h8.js";
21
21
  import {
22
22
  require_cross_spawn
23
23
  } from "./cli-5bfdm1ah.js";
@@ -2647,6 +2647,7 @@ class StreamableHttpTransport extends TransportEvents {
2647
2647
  sessionIdValue;
2648
2648
  protocolVersion;
2649
2649
  getStreamStarted = false;
2650
+ lastToken;
2650
2651
  constructor(options) {
2651
2652
  super();
2652
2653
  this.options = Object.freeze({ ...options, headers: options.headers ? { ...options.headers } : undefined });
@@ -2705,16 +2706,14 @@ class StreamableHttpTransport extends TransportEvents {
2705
2706
  this.closed = true;
2706
2707
  this.controller.abort();
2707
2708
  if (this.started && this.sessionIdValue) {
2708
- const controller = new AbortController;
2709
- const timeout = setTimeout(() => controller.abort(), 1000);
2710
2709
  try {
2711
- const { headers } = await this.headers();
2712
- await this.fetch(this.url, { method: "DELETE", headers, signal: controller.signal }).then(discard).catch(() => {
2713
- return;
2710
+ const response = await this.fetch(this.url, {
2711
+ method: "DELETE",
2712
+ headers: this.buildHeaders({}, this.lastToken),
2713
+ signal: AbortSignal.timeout(1000)
2714
2714
  });
2715
- } catch {} finally {
2716
- clearTimeout(timeout);
2717
- }
2715
+ await discard(response);
2716
+ } catch {}
2718
2717
  }
2719
2718
  this.emitClose();
2720
2719
  }
@@ -2738,6 +2737,11 @@ class StreamableHttpTransport extends TransportEvents {
2738
2737
  }
2739
2738
  }
2740
2739
  async headers(extra = {}) {
2740
+ const token = await this.options.authProvider?.token();
2741
+ this.lastToken = token;
2742
+ return { headers: this.buildHeaders(extra, token), ...token ? { token } : {} };
2743
+ }
2744
+ buildHeaders(extra, token) {
2741
2745
  const headers = new Headers(this.options.headers);
2742
2746
  for (const [name, value] of Object.entries(extra))
2743
2747
  headers.set(name, value);
@@ -2745,10 +2749,9 @@ class StreamableHttpTransport extends TransportEvents {
2745
2749
  headers.set("Mcp-Session-Id", this.sessionIdValue);
2746
2750
  if (this.protocolVersion)
2747
2751
  headers.set("MCP-Protocol-Version", this.protocolVersion);
2748
- const token = await this.options.authProvider?.token();
2749
2752
  if (token)
2750
2753
  headers.set("Authorization", `Bearer ${token}`);
2751
- return { headers, ...token ? { token } : {} };
2754
+ return headers;
2752
2755
  }
2753
2756
  captureSession(response) {
2754
2757
  const sessionId = response.headers.get("mcp-session-id");
@@ -3829,4 +3832,4 @@ function readStoredCredential(providerId, authPath = join(getAgentDir(), "auth.j
3829
3832
  }
3830
3833
  }
3831
3834
 
3832
- export { createToolNameMatcher, LIST_MCP_RESOURCES_TOOL, LIST_MCP_RESOURCE_TEMPLATES_TOOL, READ_MCP_RESOURCE_TOOL, isMcpToolName, mcpNamespace, getMcpToolExposure, validateMcpServerConfig, McpServerRegistry, getConfigValueEnvVarNames, isCommandConfigValue, isConfigValueConfigured, resolveConfigValueOrThrow, resolveHeadersOrThrow, require_proper_lockfile, operationSignal, raceWithAbortSignal, FileAuthStorageBackend, ReadOnlyAuthStorage, AuthStorage, readStoredCredential, JSON_RPC_ERROR_CODES, McpError, isObject, LATEST_PROTOCOL_VERSION, McpClient, StdioTransport, McpHttpError, McpAuthRequiredError, McpSessionExpiredError, StreamableHttpTransport, createMcpToolName, createMcpToolDefinition, createMcpToolRenderers, isMcpAppResource, createMcpResourceToolDefinitions };
3835
+ export { require_proper_lockfile, createToolNameMatcher, LIST_MCP_RESOURCES_TOOL, LIST_MCP_RESOURCE_TEMPLATES_TOOL, READ_MCP_RESOURCE_TOOL, isMcpToolName, mcpNamespace, getMcpToolExposure, validateMcpServerConfig, McpServerRegistry, getConfigValueEnvVarNames, isCommandConfigValue, isConfigValueConfigured, resolveConfigValueOrThrow, resolveHeadersOrThrow, operationSignal, raceWithAbortSignal, FileAuthStorageBackend, ReadOnlyAuthStorage, AuthStorage, readStoredCredential, JSON_RPC_ERROR_CODES, McpError, isObject, LATEST_PROTOCOL_VERSION, McpClient, StdioTransport, McpHttpError, McpAuthRequiredError, McpSessionExpiredError, StreamableHttpTransport, createMcpToolName, createMcpToolDefinition, createMcpToolRenderers, isMcpAppResource, createMcpResourceToolDefinitions };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clampThinkingLevel,
3
3
  getSystemMessageText
4
- } from "./cli-nexwh8zg.js";
4
+ } from "./cli-g7k7zbcz.js";
5
5
 
6
6
  // node_modules/@earendil-works/pi-ai/dist/api/constrained-sampling.js
7
7
  class UnsupportedStrictJsonSchemaError extends Error {
@@ -227,7 +227,7 @@ function createGrammarToolInputProperties(tools, supportsOpenAIGrammarTools) {
227
227
  }
228
228
 
229
229
  // node_modules/@earendil-works/pi-ai/dist/utils/estimate.js
230
- var CHARS_PER_TOKEN = 4;
230
+ var CHARS_PER_TOKEN = 3.5;
231
231
  var ESTIMATED_IMAGE_CHARS = 4800;
232
232
  function calculateContextTokens(usage) {
233
233
  return usage.totalTokens || usage.input + usage.output + usage.cacheRead + usage.cacheWrite;
@@ -3,7 +3,7 @@ import {
3
3
  registerVolatileSecret,
4
4
  scrubObject,
5
5
  scrubSecrets
6
- } from "./cli-h1spv8v4.js";
6
+ } from "./cli-wt7ccy4r.js";
7
7
 
8
8
  // src/x/composio.ts
9
9
  init_secret_scrubber();
@@ -2243,7 +2243,7 @@ var init_types = __esm(() => {
2243
2243
  })
2244
2244
  ]);
2245
2245
  AgentAcpStatusSchema = exports_zod.object({
2246
- target: exports_zod.enum(["opencode", "custom"]),
2246
+ target: exports_zod.enum(["opencode", "gemini", "copilot", "custom"]),
2247
2247
  configOptions: exports_zod.array(AcpSessionConfigOptionSchema),
2248
2248
  reportedAt: exports_zod.number()
2249
2249
  }).openapi("AgentAcpStatus");
@@ -4,12 +4,12 @@ import {
4
4
  linkIdentity,
5
5
  recordUnmappedIdentity,
6
6
  resolveIdentity
7
- } from "./cli-50eg13rj.js";
7
+ } from "./cli-wydz3feg.js";
8
8
  import {
9
9
  getKv,
10
- init_db,
10
+ init_db1 as init_db,
11
11
  upsertKv
12
- } from "./cli-qdv8kgz7.js";
12
+ } from "./cli-mkdsy1nq.js";
13
13
 
14
14
  // src/slack/enrich.ts
15
15
  init_db();
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  theme
3
- } from "./cli-cwxhbf43.js";
3
+ } from "./cli-5t5my0h8.js";
4
4
 
5
5
  // node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/armin.js
6
6
  var ARMIN_WIDTH = 31;
@@ -2,25 +2,28 @@ import {
2
2
  ACPAdapter,
3
3
  grokTargetProfile,
4
4
  isGrokOpenRouterModel
5
- } from "./cli-5anb0ev3.js";
5
+ } from "./cli-cexctgn5.js";
6
6
  import {
7
- getOpenRouterBaseUrl
8
- } from "./cli-3dpj7atn.js";
7
+ getOpenRouterAttributionHeaders,
8
+ getOpenRouterBaseUrl,
9
+ init_openrouter_base_url
10
+ } from "./cli-a35hzdve.js";
9
11
  import {
10
12
  init_src,
11
13
  normalizeGrokModel
12
- } from "./cli-zsh093hk.js";
14
+ } from "./cli-014vns2y.js";
13
15
  import {
14
16
  init_secret_scrubber,
15
17
  registerVolatileSecret
16
- } from "./cli-h1spv8v4.js";
18
+ } from "./cli-wt7ccy4r.js";
17
19
 
18
20
  // src/providers/grok-adapter.ts
19
21
  init_src();
22
+ init_openrouter_base_url();
23
+ init_secret_scrubber();
20
24
  import { mkdtemp, rm } from "node:fs/promises";
21
25
  import { tmpdir } from "node:os";
22
26
  import { join } from "node:path";
23
- init_secret_scrubber();
24
27
  function checkGrokCredentials(env) {
25
28
  return env.XAI_API_KEY?.trim() || env.OPENROUTER_API_KEY?.trim() ? { ready: true, missing: [], satisfiedBy: "env" } : {
26
29
  ready: false,
@@ -43,13 +46,22 @@ function grokOpenRouterModel(model, env) {
43
46
  const id = model.trim();
44
47
  if (!isGrokOpenRouterModel(id))
45
48
  return null;
49
+ const baseUrl = getOpenRouterBaseUrl(env);
46
50
  return {
47
51
  id,
48
52
  model: id.slice("openrouter/".length),
49
- baseUrl: getOpenRouterBaseUrl(env),
50
- envKey: "OPENROUTER_API_KEY"
53
+ baseUrl,
54
+ envKey: "OPENROUTER_API_KEY",
55
+ headers: getOpenRouterAttributionHeaders(baseUrl, env)
51
56
  };
52
57
  }
58
+ function tomlInlineTable(key, entries) {
59
+ const pairs = Object.entries(entries ?? {});
60
+ if (pairs.length === 0)
61
+ return [];
62
+ const body = pairs.map(([k, v]) => `${JSON.stringify(k)} = ${JSON.stringify(v)}`).join(", ");
63
+ return [`${key} = { ${body} }`];
64
+ }
53
65
  function buildGrokConfigToml(disabledPlugins, customModel = null) {
54
66
  const list = disabledPlugins.map((name) => JSON.stringify(name)).join(", ");
55
67
  const modelBlock = customModel ? [
@@ -58,7 +70,8 @@ function buildGrokConfigToml(disabledPlugins, customModel = null) {
58
70
  `model = ${JSON.stringify(customModel.model)}`,
59
71
  `base_url = ${JSON.stringify(customModel.baseUrl)}`,
60
72
  `env_key = ${JSON.stringify(customModel.envKey)}`,
61
- `api_backend = "chat_completions"`
73
+ `api_backend = "chat_completions"`,
74
+ ...tomlInlineTable("extra_headers", customModel.headers)
62
75
  ] : [];
63
76
  return [
64
77
  "[cli]",
@@ -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: "1.165.0",
10
+ version: "1.167.0",
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",
@@ -102,6 +102,8 @@ var init_package = __esm(() => {
102
102
  "check:extension-schema": "bun scripts/build-extension-manifest-schema.ts --check",
103
103
  "build:extension-catalog": "bun scripts/build-extension-catalog.ts",
104
104
  "check:extension-catalog": "bun scripts/build-extension-catalog.ts --check",
105
+ "build:secret-rules": "bun scripts/gen-secret-rules.ts",
106
+ "check:secret-rules": "bun scripts/gen-secret-rules.ts --check",
105
107
  "build:cli": "bun run scripts/build-cli.ts",
106
108
  "mono:build": "turbo run build",
107
109
  "mono:test": "turbo run test",
@@ -152,8 +154,8 @@ var init_package = __esm(() => {
152
154
  "start:portless": "portless api.swarm bun --expose-gc src/http.ts",
153
155
  inspector: "bunx @modelcontextprotocol/inspector --transport stdio bun src/stdio.ts",
154
156
  "inspector:http": "bunx @modelcontextprotocol/inspector --transport http https://api.swarm.localhost:1355/mcp",
155
- lint: "biome check src apps/evals packages/ui-e2e packages/model-routing",
156
- "lint:fix": "biome check --write src apps/evals packages/ui-e2e packages/model-routing",
157
+ lint: "biome check src apps/evals packages/ui-e2e packages/model-routing packages/model-catalog",
158
+ "lint:fix": "biome check --write src apps/evals packages/ui-e2e packages/model-routing packages/model-catalog",
157
159
  format: "biome format --write src",
158
160
  "build:binary": "bun build ./src/cli.tsx ./src/providers/pi-binary-root/src/extensions/codemode/worker.ts --root ./src/providers/pi-binary-root --compile --bytecode --format=esm --compile-exec-argv='--expose-gc' --target=bun-linux-x64 --outfile ./dist/agent-swarm",
159
161
  "build:binary:arm64": "bun build ./src/cli.tsx ./src/providers/pi-binary-root/src/extensions/codemode/worker.ts --root ./src/providers/pi-binary-root --compile --bytecode --format=esm --compile-exec-argv='--expose-gc' --target=bun-linux-arm64 --outfile ./dist/agent-swarm",
@@ -207,20 +209,21 @@ var init_package = __esm(() => {
207
209
  dependencies: {
208
210
  "@agentclientprotocol/sdk": "1.7.0",
209
211
  "@ai-sdk/openai": "^3.0.41",
210
- "@anthropic-ai/claude-agent-sdk": "0.3.292",
211
- "@anthropic-ai/sdk": "^0.131.0",
212
+ "@anthropic-ai/claude-agent-sdk": "0.3.293",
213
+ "@anthropic-ai/sdk": "^0.132.1",
212
214
  "@asteasolutions/zod-to-openapi": "^8.0.0",
213
215
  "@aws-sdk/client-bedrock": "3.1048.0",
214
- "@cursor/sdk": "1.0.36",
216
+ "@cursor/sdk": "1.0.37",
215
217
  "@desplega.ai/business-use": "^0.4.2",
216
218
  "@desplega.ai/localtunnel": "^2.2.0",
217
- "@earendil-works/pi-agent-core": "^1.0.4",
218
- "@earendil-works/pi-ai": "^1.0.4",
219
- "@earendil-works/pi-coding-agent": "^1.0.4",
219
+ "@earendil-works/pi-agent-core": "^1.1.0",
220
+ "@earendil-works/pi-ai": "^1.1.0",
221
+ "@earendil-works/pi-coding-agent": "^1.1.0",
220
222
  "@inkjs/ui": "^2.0.0",
223
+ "@jitl/quickjs-singlefile-mjs-release-sync": "0.32.0",
221
224
  "@linear/sdk": "^77.0.0",
222
- "@modelcontextprotocol/sdk": "1.29.0",
223
- "@openai/codex": "0.160.1",
225
+ "@modelcontextprotocol/sdk": "1.31.0",
226
+ "@openai/codex": "0.161.0",
224
227
  "@opencode-ai/sdk": "^1.18.35",
225
228
  "@openfort/openfort-node": "^0.9.1",
226
229
  "@opentelemetry/api": "^1.9.1",
@@ -244,6 +247,7 @@ var init_package = __esm(() => {
244
247
  ink: "^6.5.1",
245
248
  oauth4webapi: "^3.8.5",
246
249
  openai: "^6.22.0",
250
+ "quickjs-emscripten-core": "0.32.0",
247
251
  react: "19.2.3",
248
252
  "react-devtools-core": "^7.0.1",
249
253
  "sqlite-vec": "^0.1.9",
@@ -5,8 +5,8 @@ import {
5
5
  import {
6
6
  getDb,
7
7
  getDbClient,
8
- init_db
9
- } from "./cli-qdv8kgz7.js";
8
+ init_db1 as init_db
9
+ } from "./cli-mkdsy1nq.js";
10
10
  import {
11
11
  init_env_flag,
12
12
  isEnvFlagEnabled
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  materializeClaudeMd,
3
3
  stopClaudeMd
4
- } from "./cli-zvckv750.js";
4
+ } from "./cli-69egj654.js";
5
5
  import {
6
6
  guardGhPrBody
7
7
  } from "./cli-v6vv7dy8.js";
8
8
  import {
9
9
  summarizeSession
10
- } from "./cli-5b2fjjzh.js";
10
+ } from "./cli-r7eeddkq.js";
11
11
  import {
12
12
  checkToolLoop,
13
13
  clearToolHistory
@@ -29,7 +29,7 @@ import {
29
29
  init_profile_sync,
30
30
  readIdentityBaselines,
31
31
  warnProfileFileTooLarge
32
- } from "./cli-wfajtmf7.js";
32
+ } from "./cli-mxvnnv5q.js";
33
33
  import {
34
34
  MAX_PROFILE_FILE_LENGTH,
35
35
  getMcpBaseUrl,
@@ -38,11 +38,11 @@ import {
38
38
  import {
39
39
  init_package,
40
40
  package_default
41
- } from "./cli-1kzfvd1z.js";
41
+ } from "./cli-ymmc1zxg.js";
42
42
  import {
43
43
  init_secret_scrubber,
44
44
  scrubSecrets
45
- } from "./cli-h1spv8v4.js";
45
+ } from "./cli-wt7ccy4r.js";
46
46
 
47
47
  // src/hooks/hook.ts
48
48
  init_package();
@@ -511,9 +511,18 @@ async function handleHook() {
511
511
  }
512
512
  };
513
513
  const outputBlockResponse = (reason) => {
514
+ const response = msg.hook_event_name === "PreToolUse" ? {
515
+ hookSpecificOutput: {
516
+ hookEventName: "PreToolUse",
517
+ permissionDecision: "deny",
518
+ permissionDecisionReason: reason
519
+ }
520
+ } : { decision: "block", reason };
521
+ console.log(JSON.stringify(response));
522
+ };
523
+ const outputToolContext = (hookEventName, additionalContext) => {
514
524
  const response = {
515
- decision: "block",
516
- reason
525
+ hookSpecificOutput: { hookEventName, additionalContext }
517
526
  };
518
527
  console.log(JSON.stringify(response));
519
528
  };
@@ -597,7 +606,13 @@ async function handleHook() {
597
606
  };
598
607
  await ping();
599
608
  const agentInfo = await getAgentInfo();
600
- if (agentInfo) {
609
+ if (msg.hook_event_name === "UserPromptSubmit" && agentInfo && !agentInfo.isLead && agentInfo.status === "busy") {
610
+ if (await checkAndBlockIfCancelled(true)) {
611
+ return;
612
+ }
613
+ }
614
+ const isToolEvent = msg.hook_event_name === "PreToolUse" || msg.hook_event_name === "PostToolUse";
615
+ if (agentInfo && !isToolEvent) {
601
616
  console.log(`You are registered as ${agentInfo.isLead ? "lead" : "worker"} agent "${agentInfo.name}" (ID: ${agentInfo.id}, status: ${agentInfo.status}).`);
602
617
  if (agentInfo.inbox) {
603
618
  const tray = formatSystemTray(agentInfo.inbox);
@@ -606,7 +621,7 @@ async function handleHook() {
606
621
  }
607
622
  }
608
623
  } else if (shouldShowRegistrationNudge({
609
- agentInfoPresent: false,
624
+ agentInfoPresent: Boolean(agentInfo),
610
625
  eventType: msg.hook_event_name,
611
626
  hasAgentIdHeader: hasAgentIdHeader()
612
627
  })) {
@@ -715,6 +730,7 @@ You do not have a pre-defined agent ID, you will receive one when you join the s
715
730
  return;
716
731
  }
717
732
  }
733
+ let loopWarning;
718
734
  if (agentInfo && !agentInfo.isLead && agentInfo.status === "busy") {
719
735
  const loopTaskFile = await readTaskFile();
720
736
  if (loopTaskFile?.taskId && msg.tool_name && msg.tool_input) {
@@ -724,7 +740,7 @@ You do not have a pre-defined agent ID, you will receive one when you join the s
724
740
  return;
725
741
  }
726
742
  if (loopResult.severity === "warning" && loopResult.reason) {
727
- console.log(`Warning: ${loopResult.reason}`);
743
+ loopWarning = `Warning: ${loopResult.reason}`;
728
744
  }
729
745
  }
730
746
  }
@@ -735,6 +751,9 @@ You do not have a pre-defined agent ID, you will receive one when you join the s
735
751
  return;
736
752
  }
737
753
  }
754
+ if (loopWarning) {
755
+ outputToolContext("PreToolUse", loopWarning);
756
+ }
738
757
  break;
739
758
  }
740
759
  case "PostToolUse":
@@ -752,7 +771,7 @@ You do not have a pre-defined agent ID, you will receive one when you join the s
752
771
  method: "PUT",
753
772
  headers: mcpConfig.headers
754
773
  }).catch((e) => {
755
- console.debug("Failed to update agent activity timestamp:", e);
774
+ console.error("Failed to update agent activity timestamp:", e);
756
775
  });
757
776
  }
758
777
  if (agentInfo) {
@@ -797,19 +816,11 @@ You do not have a pre-defined agent ID, you will receive one when you join the s
797
816
  if (agentInfo.isLead) {
798
817
  if (msg.tool_name?.endsWith("send-task")) {
799
818
  const maybeTaskId = msg.tool_response?.task?.id;
800
- console.log(`Task sent successfully.${maybeTaskId ? ` Task ID: ${maybeTaskId}.` : ""} Monitor progress using the get-task-details tool periodically.`);
819
+ outputToolContext("PostToolUse", `Task sent successfully.${maybeTaskId ? ` Task ID: ${maybeTaskId}.` : ""} Monitor progress using the get-task-details tool periodically.`);
801
820
  }
802
821
  }
803
822
  }
804
823
  break;
805
- case "UserPromptSubmit": {
806
- if (agentInfo && !agentInfo.isLead && agentInfo.status === "busy") {
807
- if (await checkAndBlockIfCancelled(true)) {
808
- return;
809
- }
810
- }
811
- break;
812
- }
813
824
  case "Stop":
814
825
  try {
815
826
  const pm2ListOutput = await Bun.$`pm2 jlist 2>/dev/null || echo "[]"`.text();
@@ -1,5 +1,5 @@
1
1
  // src/providers/acp-target-catalog.ts
2
- var ACP_TARGET_IDS = ["opencode", "gemini", "custom"];
2
+ var ACP_TARGET_IDS = ["opencode", "gemini", "copilot", "custom"];
3
3
  var ACP_TARGET_CATALOG = [
4
4
  {
5
5
  id: "opencode",
@@ -41,6 +41,39 @@ var ACP_TARGET_CATALOG = [
41
41
  ],
42
42
  knobs: [{ id: "model", label: "Model", category: "model" }]
43
43
  },
44
+ {
45
+ id: "copilot",
46
+ label: "GitHub Copilot CLI",
47
+ description: "GitHub Copilot CLI's ACP server, launched with `copilot --acp`. Uses a Copilot-entitled COPILOT_GITHUB_TOKEN, or a BYOK provider via COPILOT_PROVIDER_*.",
48
+ command: "copilot",
49
+ args: ["--acp"],
50
+ envKeys: [
51
+ "COPILOT_GITHUB_TOKEN",
52
+ "COPILOT_GH_HOST",
53
+ "GH_HOST",
54
+ "COPILOT_HOME",
55
+ "COPILOT_MODEL",
56
+ "COPILOT_AUTO_TIER",
57
+ "COPILOT_OFFLINE",
58
+ "COPILOT_PROVIDER_BASE_URL",
59
+ "COPILOT_PROVIDER_TYPE",
60
+ "COPILOT_PROVIDER_API_KEY",
61
+ "COPILOT_PROVIDER_API_KEY_COMMAND",
62
+ "COPILOT_PROVIDER_BEARER_TOKEN",
63
+ "COPILOT_PROVIDER_WIRE_API",
64
+ "COPILOT_PROVIDER_TRANSPORT",
65
+ "COPILOT_PROVIDER_AZURE_API_VERSION",
66
+ "COPILOT_PROVIDER_MODEL_ID",
67
+ "COPILOT_PROVIDER_WIRE_MODEL",
68
+ "COPILOT_PROVIDER_MAX_PROMPT_TOKENS",
69
+ "COPILOT_PROVIDER_MAX_OUTPUT_TOKENS",
70
+ "COPILOT_PROVIDER_HEADERS",
71
+ "HTTP_PROXY",
72
+ "HTTPS_PROXY",
73
+ "NO_PROXY"
74
+ ],
75
+ knobs: [{ id: "model", label: "Model", category: "model" }]
76
+ },
44
77
  {
45
78
  id: "custom",
46
79
  label: "Custom",
@@ -72,6 +72,8 @@ async function retryProviderRequest(request, options = {}) {
72
72
  throw createAbortError();
73
73
  if (retriesRemaining <= 0 || !isProviderError(error) || !isRetryableProviderError(error))
74
74
  throw error;
75
+ if (error.status !== undefined && options.noRetryStatuses?.includes(error.status))
76
+ throw error;
75
77
  const retryIndex = maxRetries - retriesRemaining;
76
78
  retriesRemaining--;
77
79
  await abortableSleep(getRetryDelayMs(error, retryIndex, options.maxRetryDelayMs), options.signal);