@desplega.ai/agent-swarm 1.131.1 → 1.134.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 (360) hide show
  1. package/README.md +3 -3
  2. package/dist/{actions-jgcy477k.js → actions-7kast243.js} +20 -18
  3. package/dist/{anthropic-messages-rjmd2e7n.js → anthropic-messages-706yad38.js} +33 -17
  4. package/dist/app-0g84t8wf.js +28 -0
  5. package/dist/{artifact-jysj3wrg.js → artifact-dje5ke4h.js} +37 -131
  6. package/dist/{assistant-f2vkk1hj.js → assistant-ac4htcky.js} +25 -22
  7. package/dist/{azure-openai-responses-c0yjmbfd.js → azure-openai-responses-be59fbsz.js} +13 -13
  8. package/dist/{boot-reembed-q7mp8hcr.js → boot-reembed-b1rcqn85.js} +13 -11
  9. package/dist/{boot-reembed-xmw8wcx6.js → boot-reembed-kw2541c4.js} +14 -12
  10. package/dist/{boot-scrub-logs-dsqrv79n.js → boot-scrub-logs-ja29t92g.js} +11 -9
  11. package/dist/{claude-adapter-q6x7yspx.js → claude-adapter-5cg1fv8s.js} +33 -29
  12. package/dist/{claude-managed-adapter-wsg37bt8.js → claude-managed-adapter-9z9sdytx.js} +9 -9
  13. package/dist/{claude-managed-setup-52z4mq9w.js → claude-managed-setup-3zqp51cr.js} +5 -5
  14. package/dist/{claude-1ex232fc.js → claude-wqn3dtca.js} +1 -1
  15. package/dist/{cli-4wgngmwv.js → cli-00w4hbam.js} +1 -1
  16. package/dist/{cli-er3a4bb0.js → cli-15429qdw.js} +6 -1
  17. package/dist/{cli-e5dabkx0.js → cli-1cwhyvta.js} +4 -4
  18. package/dist/{cli-zsspvvm2.js → cli-1ybr6vw2.js} +237 -237
  19. package/dist/{cli-xpxde7rm.js → cli-2wv4kj0e.js} +60 -31
  20. package/dist/cli-34w2584r.js +530 -0
  21. package/dist/{cli-se2p6rkb.js → cli-38taxznr.js} +6 -6
  22. package/dist/{cli-9sbhdpvb.js → cli-3cgfyfzm.js} +14 -14
  23. package/dist/{cli-5n6e5yfn.js → cli-3zmdzfjf.js} +79 -74
  24. package/dist/{cli-3ty0t082.js → cli-43x36mty.js} +197 -8
  25. package/dist/{cli-ycrnynpw.js → cli-480nehnh.js} +29 -22
  26. package/dist/{cli-0258203w.js → cli-492e7ap5.js} +140 -20
  27. package/dist/{cli-3fj60etf.js → cli-497b685t.js} +3 -3
  28. package/dist/{cli-pxfxkx5m.js → cli-4bap00k0.js} +1 -1
  29. package/dist/{cli-w2wxd56v.js → cli-4bc8vmhm.js} +848 -770
  30. package/dist/{cli-aca5pz9f.js → cli-589599p9.js} +1 -1
  31. package/dist/{cli-t930g0xh.js → cli-5tnr64pm.js} +1 -1
  32. package/dist/{cli-jxg3s9ey.js → cli-65d93ves.js} +7 -7
  33. package/dist/{cli-6dpytdr2.js → cli-6x363v1z.js} +2 -2
  34. package/dist/{cli-dxak0fqd.js → cli-787ph852.js} +11 -11
  35. package/dist/{cli-793jvbsh.js → cli-7bv8nckk.js} +16 -11
  36. package/dist/{cli-zyxs93y9.js → cli-7jcc9y1r.js} +3 -3
  37. package/dist/{cli-f1am9szv.js → cli-87t2gstf.js} +1 -1
  38. package/dist/{cli-9aryf9tv.js → cli-95m51ztz.js} +1 -1
  39. package/dist/{cli-4w4fmq9x.js → cli-9w49enmh.js} +2 -2
  40. package/dist/{cli-v69vk5h0.js → cli-9y5b02vr.js} +13 -13
  41. package/dist/{cli-x23me2mg.js → cli-a1rrkrb4.js} +1 -1
  42. package/dist/{cli-psrqtw2m.js → cli-a3pkfpqs.js} +2 -2
  43. package/dist/{cli-h0rgxd24.js → cli-a4ajmfvp.js} +6 -6
  44. package/dist/{cli-ygrbmjja.js → cli-aw8bb6sf.js} +6 -6
  45. package/dist/{cli-g74vpjp2.js → cli-brm3et47.js} +55 -22
  46. package/dist/{cli-czkae1fp.js → cli-c5ddbdfj.js} +9 -9
  47. package/dist/{cli-114fvtmj.js → cli-c79a9zrc.js} +1 -1
  48. package/dist/{cli-49n9f49x.js → cli-dx3dz0ms.js} +3 -3
  49. package/dist/{cli-6dp3ydxa.js → cli-e07exmsb.js} +18 -14
  50. package/dist/cli-et1bbwqf.js +13 -0
  51. package/dist/{cli-yazx6hap.js → cli-f3s9dry0.js} +14 -14
  52. package/dist/{cli-t8d349cy.js → cli-f4wj0s3m.js} +3 -3
  53. package/dist/{cli-d6n0thxw.js → cli-f64gdfxc.js} +1 -1
  54. package/dist/{cli-pwfsqc2x.js → cli-fyd58xgb.js} +55 -55
  55. package/dist/{cli-7dm2zqy2.js → cli-g0j14czv.js} +2 -2
  56. package/dist/{cli-b0p7rfnd.js → cli-g2p9bd1z.js} +14 -14
  57. package/dist/{cli-z905tvmm.js → cli-g814jbst.js} +2 -2
  58. package/dist/{cli-5dsbcjjw.js → cli-ghexzd2d.js} +970 -970
  59. package/dist/{cli-jvv0g8bh.js → cli-gpt9kf01.js} +15 -15
  60. package/dist/{cli-rgrfzg8z.js → cli-grt6qv91.js} +380 -380
  61. package/dist/{cli-wz9115x0.js → cli-gtafvdy0.js} +8 -8
  62. package/dist/{cli-q5dzzak0.js → cli-gy07xk4s.js} +2 -2
  63. package/dist/{cli-sy7jk3tx.js → cli-h0djenzm.js} +2 -2
  64. package/dist/{cli-nrkkknat.js → cli-h37gbjbf.js} +2 -281
  65. package/dist/{cli-jevgrb4w.js → cli-h39xxnq6.js} +1200 -491
  66. package/dist/{cli-gz9sbyk3.js → cli-jepmgn7r.js} +1 -1
  67. package/dist/{cli-ccf9vy7q.js → cli-jmvk6et8.js} +7 -7
  68. package/dist/{cli-2rk0cx7s.js → cli-jxj92gkt.js} +51 -41
  69. package/dist/{cli-bqw0mt1n.js → cli-k46t4664.js} +18 -3
  70. package/dist/{cli-50vbt00w.js → cli-m07313tr.js} +1153 -696
  71. package/dist/{cli-4j2mrzag.js → cli-mkq1rk7b.js} +1 -1
  72. package/dist/{cli-1z7048dy.js → cli-mnm7w46e.js} +1 -1
  73. package/dist/{cli-kd1ck4rx.js → cli-mp9sg4cg.js} +14 -8
  74. package/dist/{cli-jbcva0xj.js → cli-mrammd8c.js} +60 -35
  75. package/dist/cli-nanaxrz6.js +27 -0
  76. package/dist/{cli-p9swy5t3.js → cli-pq2ee5ja.js} +8 -6
  77. package/dist/{cli-2wadx7p2.js → cli-pt43pdp1.js} +2 -2
  78. package/dist/{cli-7sgrxg9a.js → cli-q6d0vvey.js} +4 -4
  79. package/dist/{cli-k9qkf1hw.js → cli-qf9kpsve.js} +9 -9
  80. package/dist/cli-qh4sqfws.js +15 -0
  81. package/dist/{cli-e15jhafb.js → cli-qntkxysp.js} +14 -14
  82. package/dist/{cli-sajgpkqg.js → cli-qs9hhsvb.js} +1723 -325
  83. package/dist/{cli-z2zcxes1.js → cli-qt5bt3vk.js} +1 -1
  84. package/dist/{cli-wx82tw1k.js → cli-qtekrty1.js} +3 -3
  85. package/dist/{cli-g1re8r05.js → cli-rh6f3s9n.js} +3 -3
  86. package/dist/{cli-n0krnc6d.js → cli-rzhcrw2p.js} +2 -2
  87. package/dist/{cli-gecy3z2s.js → cli-snw62ze5.js} +4 -4
  88. package/dist/{cli-n6h8qt8n.js → cli-snz3p4yf.js} +15 -10
  89. package/dist/{cli-r6kqqbj0.js → cli-tkf8n6cw.js} +11 -11
  90. package/dist/{cli-4rkfg1wx.js → cli-tkrr24mz.js} +14 -9
  91. package/dist/{cli-9dr5qzc0.js → cli-tv9f1kyb.js} +54 -43
  92. package/dist/{cli-gm9cbhbq.js → cli-vtz6yj3v.js} +28 -9
  93. package/dist/{cli-2f07m0xr.js → cli-wf86d5t7.js} +1 -1
  94. package/dist/{cli-7zd05xb4.js → cli-whrvct19.js} +45 -45
  95. package/dist/{cli-ap1czx8f.js → cli-wrrea8xm.js} +3 -3
  96. package/dist/{cli-57khth04.js → cli-xmyqv00z.js} +120 -4
  97. package/dist/{cli-cwy5hqbq.js → cli-yjmk7tzc.js} +1 -1
  98. package/dist/{cli-6pcz9h15.js → cli-zykjrwcx.js} +180 -394
  99. package/dist/cli.js +45 -45
  100. package/dist/{codex-adapter-htjkn22b.js → codex-adapter-hsq6mz3m.js} +21 -19
  101. package/dist/{codex-hook-hq54t9ft.js → codex-hook-8c500gq8.js} +8 -7
  102. package/dist/{codex-login-z6yhbkmk.js → codex-login-x7603481.js} +3 -3
  103. package/dist/{codex-session-runner-wjfc7smz.js → codex-session-runner-c1x3x143.js} +15 -13
  104. package/dist/{commands-xhrfwqsk.js → commands-rwtddtst.js} +11 -9
  105. package/dist/{db-anvwb22f.js → db-j2b355vz.js} +458 -444
  106. package/dist/{devin-adapter-v1sarqtw.js → devin-adapter-8qmhqpy3.js} +3 -3
  107. package/dist/{devtools-2y1r7yqk.js → devtools-j2rnj8w7.js} +4 -4
  108. package/dist/{e2b-jdkwemv2.js → e2b-znpx78eg.js} +16 -16
  109. package/dist/{es5-vjgtkgp6.js → es5-fmqrjzy3.js} +2 -2
  110. package/dist/{event-bus-axn823e9.js → event-bus-n8sb35pw.js} +4 -4
  111. package/dist/{getMachineId-bsd-6tc9wxdj.js → getMachineId-bsd-wpzbhkm6.js} +4 -4
  112. package/dist/{getMachineId-darwin-sjt9sgnc.js → getMachineId-darwin-45zabjy0.js} +4 -4
  113. package/dist/{getMachineId-linux-v5n18y9p.js → getMachineId-linux-warnp5pd.js} +3 -3
  114. package/dist/{getMachineId-unsupported-yrjyqw3d.js → getMachineId-unsupported-5spent2a.js} +3 -3
  115. package/dist/{getMachineId-win-w3r8063c.js → getMachineId-win-v4bvcw7a.js} +4 -4
  116. package/dist/{google-generative-ai-hysrd8qx.js → google-generative-ai-b0wzss55.js} +17 -14
  117. package/dist/{google-vertex-p5arrga0.js → google-vertex-e8q4dpya.js} +18 -15
  118. package/dist/{handlers-b9kbc621.js → handlers-hchgrxkh.js} +32 -29
  119. package/dist/{hook-xkvn6c5h.js → hook-p49egqc0.js} +66 -52
  120. package/dist/hook-spb00w76.js +34 -0
  121. package/dist/{http-9xh6ta4r.js → http-nh14kkms.js} +663 -181
  122. package/dist/index-1qthq7vc.js +6 -0
  123. package/dist/{index-0g68f0p6.js → index-20xqmn3v.js} +3 -3
  124. package/dist/{index-vdkr5z2w.js → index-3e03k6e4.js} +114 -114
  125. package/dist/{index-ywds4812.js → index-4cbyhq2g.js} +43 -41
  126. package/dist/index-67pzqfrb.js +36 -0
  127. package/dist/{index-bccrkdkn.js → index-7m8yxkw5.js} +16 -16
  128. package/dist/{index-eaxyqcmj.js → index-dvsk64sm.js} +163 -83
  129. package/dist/{index-dqkpnmqm.js → index-e19s2m8k.js} +18 -18
  130. package/dist/{index-j30k5zxn.js → index-emvxcy98.js} +16 -16
  131. package/dist/{index-7ndw6ecy.js → index-gqnmr60d.js} +9 -9
  132. package/dist/{index-9znhar3x.js → index-j02xvjtd.js} +184 -185
  133. package/dist/{index-1s2442yw.js → index-ns5kksc1.js} +7 -7
  134. package/dist/{index-dpy2hth8.js → index-pdxc8kfh.js} +71 -71
  135. package/dist/{index-z1m7pw0v.js → index-ptcqm8bc.js} +107 -107
  136. package/dist/{index-070v4eyb.js → index-pyp7rexm.js} +5 -6
  137. package/dist/{index-86znjz1p.js → index-shne41sd.js} +13 -13
  138. package/dist/{index-2qn2qndv.js → index-t36q2v4t.js} +183 -183
  139. package/dist/index-tcnvv8w6.js +7 -0
  140. package/dist/index-w91qbfv1.js +7 -0
  141. package/dist/{index-fzc0mwvj.js → index-yqweff5n.js} +32 -32
  142. package/dist/index-yrfphye1.js +39 -0
  143. package/dist/{keepalive-vc7s2aa6.js → keepalive-9k51nqhc.js} +21 -15
  144. package/dist/lead-2xq3dxbz.js +88 -0
  145. package/dist/maintenance-0c0g6nym.js +28 -0
  146. package/dist/mistral-conversations-2njwdwhj.js +717 -0
  147. package/dist/{multipart-parser-qaktc7p8.js → multipart-parser-6gftesw0.js} +2 -2
  148. package/dist/{oauth-refresh-sweep-yecgjpk4.js → oauth-refresh-sweep-273a64r2.js} +14 -12
  149. package/dist/{onboard-xj0f73f9.js → onboard-tsv9wwhz.js} +12 -12
  150. package/dist/{openai-codex-responses-5g27pd6f.js → openai-codex-responses-kt84eq86.js} +26 -26
  151. package/dist/{openai-completions-3vkmfz2a.js → openai-completions-mrypq7qp.js} +17 -16
  152. package/dist/{openai-responses-dg4t7j7a.js → openai-responses-qhrk21ez.js} +20 -17
  153. package/dist/{opencode-adapter-1gm38aba.js → opencode-adapter-rar9676j.js} +13 -11
  154. package/dist/{openrouter-images-g3gm8931.js → openrouter-images-684fysx9.js} +5 -5
  155. package/dist/{otel-impl-nxg0n0b3.js → otel-impl-wp1mfzd2.js} +752 -537
  156. package/dist/{photon_rs-ky7dj5qw.js → photon_rs-8dwt2pzy.js} +581 -581
  157. package/dist/{pi-messages-tqj8q6b9.js → pi-messages-txp9f97r.js} +7 -7
  158. package/dist/{pi-mono-adapter-4g5kby31.js → pi-mono-adapter-yz47kk8e.js} +1910 -1180
  159. package/dist/pricing-refresh-jw1yw2fn.js +22 -0
  160. package/dist/rbac-roles-dg964c8p.js +32 -0
  161. package/dist/{rbac-roles-1hcxdtg7.js → rbac-roles-p53cg5cv.js} +19 -17
  162. package/dist/{registry-02cy9z5z.js → registry-mh12y17v.js} +4 -4
  163. package/dist/render-v2-56vn2rk9.js +36 -0
  164. package/dist/seed-pricing-52xx6z63.js +19 -0
  165. package/dist/{setup-46xtgq3c.js → setup-e8gp79sy.js} +7 -7
  166. package/dist/token-util-zy908s1a.js +6 -0
  167. package/dist/{token-fxkn2zf2.js → token-xg5711x5.js} +4 -4
  168. package/dist/worker-s17f1g46.js +88 -0
  169. package/dist/{x-6mg4kfpe.js → x-xkfh0w0v.js} +5 -5
  170. package/openapi.json +566 -22
  171. package/package.json +6 -6
  172. package/src/be/budget-refusal-notify.ts +14 -7
  173. package/src/be/db-queries/task-artifacts.ts +182 -0
  174. package/src/be/db.ts +834 -171
  175. package/src/be/events.ts +5 -0
  176. package/src/be/migrations/131_session_logs_created_at_index.sql +2 -0
  177. package/src/be/migrations/132_multi_runtime_instances.sql +44 -0
  178. package/src/be/migrations/133_workflow_run_trigger_type.sql +12 -0
  179. package/src/be/migrations/135_backfill_task_pull_request_attachments.sql +228 -0
  180. package/src/be/migrations/136_task_requester_provenance.sql +37 -0
  181. package/src/be/migrations/137_memory_retrieval_composite_index.sql +1 -0
  182. package/src/be/migrations/runner.ts +17 -11
  183. package/src/be/multi-runtime.ts +430 -0
  184. package/src/be/scripts/extract-schema.ts +3 -1
  185. package/src/be/scripts/typecheck.ts +6 -2
  186. package/src/be/seed-prompt-templates.ts +25 -2
  187. package/src/be/seed-skills/index.ts +7 -0
  188. package/src/be/steering.ts +1 -1
  189. package/src/be/swarm-config-guard.ts +18 -0
  190. package/src/commands/credential-wait.ts +54 -0
  191. package/src/commands/onboard/steps/core-credentials.tsx +1 -1
  192. package/src/commands/onboard/steps/custom-templates.tsx +1 -1
  193. package/src/commands/onboard/steps/harness-credentials.tsx +1 -1
  194. package/src/commands/onboard/steps/health-check.tsx +1 -1
  195. package/src/commands/onboard/steps/start.tsx +1 -1
  196. package/src/commands/profile-sync-audit.ts +56 -0
  197. package/src/commands/profile-sync.ts +287 -15
  198. package/src/commands/provider-credentials.ts +46 -19
  199. package/src/commands/runner.ts +199 -33
  200. package/src/commands/templates.ts +22 -0
  201. package/src/github/handlers.ts +55 -9
  202. package/src/heartbeat/heartbeat.ts +109 -17
  203. package/src/hooks/hook.ts +49 -33
  204. package/src/http/active-sessions.ts +11 -1
  205. package/src/http/agents.ts +261 -30
  206. package/src/http/all-routes.ts +1 -0
  207. package/src/http/config.ts +13 -2
  208. package/src/http/core.ts +102 -4
  209. package/src/http/db-query-bounded.ts +313 -0
  210. package/src/http/db-query-shared.ts +249 -0
  211. package/src/http/db-query.ts +54 -42
  212. package/src/http/events.ts +2 -0
  213. package/src/http/index.ts +23 -2
  214. package/src/http/mcp-bridge.ts +37 -3
  215. package/src/http/mcp.ts +12 -0
  216. package/src/http/memory.ts +13 -2
  217. package/src/http/openapi.ts +1 -0
  218. package/src/http/poll.ts +70 -27
  219. package/src/http/prompt-templates.ts +36 -13
  220. package/src/http/route-def.ts +43 -9
  221. package/src/http/schedules.ts +2 -2
  222. package/src/http/scripts.ts +10 -1
  223. package/src/http/session-data.ts +44 -0
  224. package/src/http/tasks.ts +2 -2
  225. package/src/http/users.ts +74 -52
  226. package/src/http/webhooks.ts +5 -2
  227. package/src/http/workflows.ts +1 -4
  228. package/src/integrations/kapso/inbound.ts +1 -1
  229. package/src/jira/outbound.ts +39 -8
  230. package/src/jira/webhook-lifecycle.ts +13 -2
  231. package/src/linear/outbound.ts +43 -10
  232. package/src/oauth/keepalive.ts +13 -2
  233. package/src/prompts/base-prompt.ts +1 -1
  234. package/src/prompts/default-drift.ts +21 -0
  235. package/src/prompts/session-templates.ts +56 -7
  236. package/src/providers/claude-adapter.ts +6 -0
  237. package/src/providers/codex-adapter.ts +6 -0
  238. package/src/providers/opencode-adapter.ts +6 -0
  239. package/src/providers/pi-mono-adapter.ts +8 -0
  240. package/src/providers/pricing-sources.md +24 -0
  241. package/src/queue-stall-alarm.ts +216 -0
  242. package/src/rbac/legacy-policy.ts +3 -0
  243. package/src/rbac/permissions.ts +12 -0
  244. package/src/scheduler/scheduler.ts +7 -0
  245. package/src/script-workflows/executor.ts +2 -1
  246. package/src/scripts-runtime/executors/native.ts +2 -1
  247. package/src/scripts-runtime/executors/types.ts +5 -0
  248. package/src/scripts-runtime/loader.ts +5 -0
  249. package/src/scripts-runtime/sdk-allowlist.ts +3 -0
  250. package/src/scripts-runtime/swarm-config.ts +8 -0
  251. package/src/scripts-runtime/swarm-sdk.ts +7 -0
  252. package/src/scripts-runtime/types/stdlib.d.ts +4 -0
  253. package/src/scripts-runtime/types/swarm-sdk.d.ts +4 -0
  254. package/src/server.ts +6 -0
  255. package/src/slack/channel-join.ts +22 -3
  256. package/src/slack/channel-lifecycle.ts +114 -0
  257. package/src/tests/budget-claim-gate.test.ts +20 -0
  258. package/src/tests/claude-adapter.test.ts +32 -0
  259. package/src/tests/codex-adapter.test.ts +30 -0
  260. package/src/tests/create-task-validation.test.ts +128 -0
  261. package/src/tests/credential-wait.test.ts +67 -1
  262. package/src/tests/db-query.test.ts +711 -2
  263. package/src/tests/heartbeat-checklist.test.ts +28 -0
  264. package/src/tests/http-api-integration.test.ts +81 -0
  265. package/src/tests/http-users.test.ts +166 -1
  266. package/src/tests/identity-field-budget.test.ts +176 -0
  267. package/src/tests/mcp-tools-user.test.ts +34 -0
  268. package/src/tests/mcp-user-route.test.ts +17 -0
  269. package/src/tests/metrics-http.test.ts +44 -0
  270. package/src/tests/migration-failure.test.ts +86 -0
  271. package/src/tests/multi-runtime-registration.test.ts +2810 -0
  272. package/src/tests/openapi-response-contract.test.ts +24 -0
  273. package/src/tests/openapi-route-headers.test.ts +83 -0
  274. package/src/tests/opencode-adapter.test.ts +40 -0
  275. package/src/tests/outbound-listener-rejection.test.ts +138 -0
  276. package/src/tests/pi-mono-adapter.test.ts +98 -0
  277. package/src/tests/preload.ts +2 -0
  278. package/src/tests/profile-sync-warning.test.ts +277 -0
  279. package/src/tests/profile-sync.test.ts +232 -6
  280. package/src/tests/prompt-template-resolver.test.ts +177 -6
  281. package/src/tests/prompt-template-session.test.ts +39 -3
  282. package/src/tests/queue-stall-alarm.test.ts +226 -0
  283. package/src/tests/rbac-charact-slack.test.ts +29 -0
  284. package/src/tests/rbac-engine.test.ts +3 -0
  285. package/src/tests/requester-comms.test.ts +32 -0
  286. package/src/tests/runner-requester-profile.test.ts +38 -0
  287. package/src/tests/schedule-target-type.test.ts +38 -0
  288. package/src/tests/script-connections.test.ts +13 -1
  289. package/src/tests/scripts-runtime-identity.test.ts +375 -0
  290. package/src/tests/scripts-runtime.test.ts +4 -3
  291. package/src/tests/sdk-allowlist.test.ts +47 -0
  292. package/src/tests/send-task-requested-by.test.ts +9 -0
  293. package/src/tests/session-costs.test.ts +506 -1
  294. package/src/tests/shutdown-error-scrubbing.test.ts +92 -0
  295. package/src/tests/slack-channel-lifecycle.test.ts +241 -0
  296. package/src/tests/slack-render-v2.test.ts +43 -0
  297. package/src/tests/steering-core.test.ts +28 -0
  298. package/src/tests/swarm-config-reserved-keys.test.ts +22 -0
  299. package/src/tests/task-artifacts.test.ts +386 -0
  300. package/src/tests/task-attachments-schema.test.ts +17 -1
  301. package/src/tests/task-completion-idempotency.test.ts +57 -0
  302. package/src/tests/task-pull-request-backfill-migration.test.ts +321 -0
  303. package/src/tests/tool-annotations.test.ts +4 -0
  304. package/src/tests/update-profile-api.test.ts +67 -39
  305. package/src/tests/update-profile-auth.test.ts +48 -4
  306. package/src/tests/user-attribution-migration.test.ts +54 -0
  307. package/src/tests/user-identity.test.ts +72 -0
  308. package/src/tests/workflow-async-v2.test.ts +39 -1
  309. package/src/tests/workflow-http-v2.test.ts +3 -2
  310. package/src/tests/workflow-mcp-trigger-schema.test.ts +52 -3
  311. package/src/tests/workflow-retry-v2.test.ts +45 -1
  312. package/src/tools/db-query.ts +18 -8
  313. package/src/tools/get-task-details.ts +24 -3
  314. package/src/tools/manage-user.ts +36 -3
  315. package/src/tools/poll-task.ts +93 -14
  316. package/src/tools/script-common.ts +5 -0
  317. package/src/tools/send-task.ts +1 -4
  318. package/src/tools/slack-archive-channel.ts +70 -0
  319. package/src/tools/slack-create-channel.ts +74 -0
  320. package/src/tools/slack-invite-to-channel.ts +78 -0
  321. package/src/tools/store-progress.ts +13 -2
  322. package/src/tools/swarm-config/delete-config.ts +9 -0
  323. package/src/tools/swarm-config/set-config.ts +3 -2
  324. package/src/tools/task-action.ts +30 -0
  325. package/src/tools/task-tool-ctx.ts +8 -1
  326. package/src/tools/tool-config.ts +4 -1
  327. package/src/tools/update-profile.ts +16 -21
  328. package/src/tools/utils.ts +5 -0
  329. package/src/tools/workflows/trigger-workflow.ts +7 -1
  330. package/src/types.ts +165 -1
  331. package/src/utils/github-pull-request.ts +76 -0
  332. package/src/utils/identity-field-budget.ts +73 -0
  333. package/src/utils/multi-runtime.ts +20 -0
  334. package/src/utils/requester-comms.ts +24 -0
  335. package/src/workflows/engine.ts +22 -2
  336. package/src/workflows/resume.ts +19 -11
  337. package/src/workflows/retry-poller.ts +1 -0
  338. package/src/workflows/triggers.ts +4 -0
  339. package/templates/skills/db-query-guidance/config.json +14 -0
  340. package/templates/skills/db-query-guidance/content.md +57 -0
  341. package/dist/app-5da78bd4.js +0 -26
  342. package/dist/cli-3te4jdkm.js +0 -225
  343. package/dist/cli-bmze986d.js +0 -7
  344. package/dist/cli-kh3ba2zf.js +0 -607
  345. package/dist/hook-cgk4wxmx.js +0 -31
  346. package/dist/index-25wjsdv2.js +0 -34
  347. package/dist/index-76at2ymp.js +0 -7
  348. package/dist/index-hase6zbe.js +0 -6
  349. package/dist/index-vg4snay4.js +0 -36
  350. package/dist/index-vy8edt27.js +0 -7
  351. package/dist/lead-r2yqfmx7.js +0 -85
  352. package/dist/maintenance-mw70k468.js +0 -26
  353. package/dist/mistral-conversations-81fwav0j.js +0 -30578
  354. package/dist/otel-nqa12wf3.js +0 -3149
  355. package/dist/pricing-refresh-2cn6effr.js +0 -20
  356. package/dist/rbac-roles-vynday5g.js +0 -30
  357. package/dist/render-v2-tc0bh8kk.js +0 -34
  358. package/dist/seed-pricing-8kceb43f.js +0 -17
  359. package/dist/token-util-pqyc8kng.js +0 -6
  360. package/dist/worker-qrbz6hmv.js +0 -85
@@ -3,10 +3,10 @@ import {
3
3
  file_default,
4
4
  init_esm_min,
5
5
  init_from
6
- } from "./cli-e5dabkx0.js";
6
+ } from "./cli-1cwhyvta.js";
7
7
  import {
8
8
  __esm
9
- } from "./cli-p9swy5t3.js";
9
+ } from "./cli-pq2ee5ja.js";
10
10
 
11
11
  // node_modules/gaxios/node_modules/node-fetch/src/utils/multipart-parser.js
12
12
  class MultipartParser {
@@ -2,19 +2,21 @@ import {
2
2
  forceRefreshAuthorizationOrThrow,
3
3
  getAuthorizationById,
4
4
  listAuthorizationSweepRows
5
- } from "./cli-nrkkknat.js";
6
- import"./cli-50vbt00w.js";
7
- import"./cli-xpxde7rm.js";
8
- import"./cli-x23me2mg.js";
9
- import"./cli-z2zcxes1.js";
10
- import"./cli-zsspvvm2.js";
5
+ } from "./cli-h37gbjbf.js";
6
+ import"./cli-m07313tr.js";
7
+ import"./cli-34w2584r.js";
8
+ import"./cli-2wv4kj0e.js";
9
+ import"./cli-a1rrkrb4.js";
10
+ import"./cli-qt5bt3vk.js";
11
+ import"./cli-nanaxrz6.js";
12
+ import"./cli-1ybr6vw2.js";
13
+ import"./cli-jmvk6et8.js";
11
14
  import {
12
15
  init_secret_scrubber,
13
16
  scrubSecrets
14
- } from "./cli-4j2mrzag.js";
15
- import"./cli-ccf9vy7q.js";
16
- import"./cli-5dsbcjjw.js";
17
- import"./cli-p9swy5t3.js";
17
+ } from "./cli-mkq1rk7b.js";
18
+ import"./cli-ghexzd2d.js";
19
+ import"./cli-pq2ee5ja.js";
18
20
 
19
21
  // src/be/oauth-refresh-sweep.ts
20
22
  init_secret_scrubber();
@@ -114,7 +116,7 @@ async function stopOAuthRefreshSweep() {
114
116
  await inflightSweep;
115
117
  }
116
118
  export {
117
- sweepOAuthTokenRefresh,
119
+ startOAuthRefreshSweep,
118
120
  stopOAuthRefreshSweep,
119
- startOAuthRefreshSweep
121
+ sweepOAuthTokenRefresh
120
122
  };
@@ -3,17 +3,17 @@ import {
3
3
  createDefaultMcpJson,
4
4
  createDefaultSettingsLocal,
5
5
  createHooksConfig
6
- } from "./cli-pxfxkx5m.js";
6
+ } from "./cli-4bap00k0.js";
7
7
  import {
8
8
  require_jsx_dev_runtime
9
- } from "./cli-wx82tw1k.js";
9
+ } from "./cli-qtekrty1.js";
10
10
  import {
11
11
  getApiKey
12
12
  } from "./cli-f14fvzag.js";
13
13
  import {
14
14
  init_package,
15
15
  package_default
16
- } from "./cli-ccf9vy7q.js";
16
+ } from "./cli-jmvk6et8.js";
17
17
  import {
18
18
  Box_default,
19
19
  Select,
@@ -23,12 +23,12 @@ import {
23
23
  require_react,
24
24
  use_app_default,
25
25
  use_input_default
26
- } from "./cli-pwfsqc2x.js";
27
- import"./cli-ap1czx8f.js";
28
- import"./cli-v69vk5h0.js";
26
+ } from "./cli-fyd58xgb.js";
27
+ import"./cli-wrrea8xm.js";
28
+ import"./cli-9y5b02vr.js";
29
29
  import {
30
30
  __toESM
31
- } from "./cli-p9swy5t3.js";
31
+ } from "./cli-pq2ee5ja.js";
32
32
 
33
33
  // src/commands/onboard.tsx
34
34
  import crypto2 from "node:crypto";
@@ -171,7 +171,7 @@ function CoreCredentialsStep({ state, goToNext, addLog }) {
171
171
  addLog(`API port: ${port}${port !== 3013 ? " (3013 was in use)" : ""}`);
172
172
  setTimeout(() => setReady(true), 1000);
173
173
  };
174
- generate();
174
+ generate().catch((err) => addLog(`Credential generation failed: ${err}`));
175
175
  }, [state.services, addLog]);
176
176
  import_react.useEffect(() => {
177
177
  if (!ready)
@@ -308,7 +308,7 @@ function CustomTemplatesStep({
308
308
  goToError(err instanceof Error ? err.message : String(err));
309
309
  }
310
310
  };
311
- load();
311
+ load().catch((err) => addLog(`Template load failed: ${err}`));
312
312
  }, [addLog, goToError]);
313
313
  if (subStep === "loading") {
314
314
  return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Box_default, {
@@ -897,7 +897,7 @@ function HarnessCredentialsStep({ goToNext, addLog }) {
897
897
  setCliError(msg);
898
898
  setSubStep("manual_oauth");
899
899
  }
900
- })();
900
+ })().catch((err) => addLog(`Harness credential setup failed: ${err}`));
901
901
  return () => {
902
902
  cancelled = true;
903
903
  };
@@ -1150,7 +1150,7 @@ function HealthCheckStep({ state, addLog, goToNext }) {
1150
1150
  await new Promise((r) => setTimeout(r, pollInterval));
1151
1151
  }
1152
1152
  };
1153
- poll();
1153
+ poll().catch((err) => addLog(`Health poll failed: ${err}`));
1154
1154
  return () => {
1155
1155
  cancelled = true;
1156
1156
  };
@@ -2603,7 +2603,7 @@ function StartStep({ state, addLog, goToNext }) {
2603
2603
  setStatus("failed");
2604
2604
  }
2605
2605
  };
2606
- run();
2606
+ run().catch((err) => addLog(`Start failed: ${err}`));
2607
2607
  }, [state.outputDir, addLog]);
2608
2608
  import_react14.useEffect(() => {
2609
2609
  if (status === "success") {
@@ -6,31 +6,34 @@ import {
6
6
  convertResponsesMessages,
7
7
  convertResponsesTools,
8
8
  processResponsesStream
9
- } from "./cli-gm9cbhbq.js";
9
+ } from "./cli-vtz6yj3v.js";
10
10
  import {
11
11
  clampOpenAIPromptCacheKey
12
12
  } from "./cli-mrptpp86.js";
13
13
  import"./cli-5m9j2spm.js";
14
+ import {
15
+ getPiUserAgent
16
+ } from "./cli-et1bbwqf.js";
14
17
  import {
15
18
  splitDeferredTools
16
19
  } from "./cli-vfcth11k.js";
17
20
  import {
18
21
  resolveHttpProxyUrlForTarget
19
- } from "./cli-cwy5hqbq.js";
22
+ } from "./cli-yjmk7tzc.js";
20
23
  import {
21
24
  formatProviderError,
22
25
  normalizeProviderError
23
26
  } from "./cli-6map995v.js";
24
- import"./cli-4wgngmwv.js";
25
- import {
26
- headersToRecord
27
- } from "./cli-vapyk8sw.js";
28
- import"./cli-zyxs93y9.js";
27
+ import"./cli-00w4hbam.js";
28
+ import"./cli-7jcc9y1r.js";
29
29
  import {
30
30
  buildBaseOptions,
31
31
  createGrammarToolInputProperties
32
- } from "./cli-57khth04.js";
32
+ } from "./cli-xmyqv00z.js";
33
33
  import"./cli-y2apkfe2.js";
34
+ import {
35
+ headersToRecord
36
+ } from "./cli-vapyk8sw.js";
34
37
  import {
35
38
  clampThinkingLevel
36
39
  } from "./cli-akdvwc9v.js";
@@ -40,7 +43,7 @@ import {
40
43
  createAssistantMessageDiagnostic,
41
44
  formatThrownValue
42
45
  } from "./cli-8wrympd7.js";
43
- import"./cli-p9swy5t3.js";
46
+ import"./cli-pq2ee5ja.js";
44
47
 
45
48
  // node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.js
46
49
  function combineAbortSignals(signals) {
@@ -78,13 +81,6 @@ function combineAbortSignals(signals) {
78
81
  }
79
82
 
80
83
  // node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js
81
- function loadNodeOs() {
82
- if (typeof process === "undefined" || !(process.versions?.node || process.versions?.bun)) {
83
- return null;
84
- }
85
- return process.getBuiltinModule?.("node:os") ?? null;
86
- }
87
- var _os = loadNodeOs();
88
84
  var DEFAULT_CODEX_BASE_URL = "https://chatgpt.com/backend-api";
89
85
  var JWT_CLAIM_PATH = "https://api.openai.com/auth";
90
86
  var DEFAULT_MAX_RETRIES = 0;
@@ -407,11 +403,13 @@ var streamSimple = (model, context, options) => {
407
403
  function buildRequestBody(model, context, options, cacheSessionId, grammarToolInputProperties = createGrammarToolInputProperties(context.tools, model.compat?.supportsOpenAIGrammarTools ?? false)) {
408
404
  const supportsStrictMode = model.compat?.supportsStrictMode ?? true;
409
405
  const supportsOpenAIGrammarTools = model.compat?.supportsOpenAIGrammarTools ?? false;
410
- const toolPlacement = splitDeferredTools(context, model.compat?.supportsToolSearch ?? false);
406
+ const deferredToolsMode = model.compat?.supportsAdditionalTools ? "additional-tools" : model.compat?.supportsToolSearch ? "tool-search" : undefined;
407
+ const toolPlacement = splitDeferredTools(context, deferredToolsMode !== undefined);
411
408
  const messages = convertResponsesMessages(model, context, CODEX_TOOL_CALL_PROVIDERS, {
412
409
  includeSystemPrompt: false,
413
410
  grammarToolInputProperties,
414
411
  deferredTools: toolPlacement.deferred,
412
+ deferredToolsMode,
415
413
  toolOptions: {
416
414
  strict: null,
417
415
  supportsStrictMode,
@@ -498,7 +496,7 @@ function resolveCodexWebSocketUrl(baseUrl) {
498
496
  return url.toString();
499
497
  }
500
498
  async function processStream(response, output, stream2, model, grammarToolInputProperties, options) {
501
- await processResponsesStream(mapCodexEvents(parseSSE(response, options?.signal)), output, stream2, model, {
499
+ await processResponsesStream(mapCodexEvents(parseSSE(response, options?.signal), output), output, stream2, model, {
502
500
  serviceTier: options?.serviceTier,
503
501
  grammarToolInputProperties,
504
502
  resolveServiceTier: resolveCodexServiceTier,
@@ -543,7 +541,7 @@ function extractCodexEventError(event) {
543
541
  message: typeof event.message === "string" ? event.message : typeof nested?.message === "string" ? nested.message : undefined
544
542
  };
545
543
  }
546
- async function* mapCodexEvents(events) {
544
+ async function* mapCodexEvents(events, output) {
547
545
  for await (const event of events) {
548
546
  const type = typeof event.type === "string" ? event.type : undefined;
549
547
  if (!type)
@@ -563,6 +561,9 @@ async function* mapCodexEvents(events) {
563
561
  }
564
562
  if (type === "response.done" || type === "response.completed" || type === "response.incomplete") {
565
563
  const response = event.response;
564
+ if (typeof response?.end_turn === "boolean") {
565
+ output.endTurn = response.end_turn;
566
+ }
566
567
  const normalizedResponse = response ? { ...response, status: normalizeCodexStatus(response.status) } : response;
567
568
  yield { ...event, type: "response.completed", response: normalizedResponse };
568
569
  return;
@@ -1180,7 +1181,7 @@ async function processWebSocketStream(url, body, headers, output, stream2, model
1180
1181
  }
1181
1182
  try {
1182
1183
  socket.send(JSON.stringify({ type: "response.create", ...requestBody }));
1183
- await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal, idleTimeoutMs)), onStart), output, stream2, model, {
1184
+ await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal, idleTimeoutMs), output), onStart), output, stream2, model, {
1184
1185
  serviceTier: options?.serviceTier,
1185
1186
  grammarToolInputProperties,
1186
1187
  resolveServiceTier: resolveCodexServiceTier,
@@ -1255,8 +1256,7 @@ function buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token)
1255
1256
  headers.set("Authorization", `Bearer ${token}`);
1256
1257
  headers.set("chatgpt-account-id", accountId);
1257
1258
  headers.set("originator", "pi");
1258
- const userAgent = _os ? `pi (${_os.platform()} ${_os.release()}; ${_os.arch()})` : "pi (browser)";
1259
- headers.set("User-Agent", userAgent);
1259
+ headers.set("User-Agent", getPiUserAgent());
1260
1260
  return headers;
1261
1261
  }
1262
1262
  function buildSSEHeaders(initHeaders, additionalHeaders, accountId, token, sessionId) {
@@ -1282,9 +1282,9 @@ function buildWebSocketHeaders(initHeaders, additionalHeaders, accountId, token,
1282
1282
  return headers;
1283
1283
  }
1284
1284
  export {
1285
- streamSimple,
1286
- stream,
1287
- resetOpenAICodexWebSocketDebugStats,
1285
+ closeOpenAICodexWebSocketSessions,
1288
1286
  getOpenAICodexWebSocketDebugStats,
1289
- closeOpenAICodexWebSocketSessions
1287
+ resetOpenAICodexWebSocketDebugStats,
1288
+ stream,
1289
+ streamSimple
1290
1290
  };
@@ -1,9 +1,9 @@
1
+ import {
2
+ OpenAI
3
+ } from "./cli-qs9hhsvb.js";
1
4
  import {
2
5
  clampOpenAIPromptCacheKey
3
6
  } from "./cli-mrptpp86.js";
4
- import {
5
- OpenAI
6
- } from "./cli-sajgpkqg.js";
7
7
  import {
8
8
  shortHash
9
9
  } from "./cli-5m9j2spm.js";
@@ -20,13 +20,10 @@ import {
20
20
  } from "./cli-6map995v.js";
21
21
  import {
22
22
  getProviderEnvValue
23
- } from "./cli-4wgngmwv.js";
24
- import {
25
- headersToRecord
26
- } from "./cli-vapyk8sw.js";
23
+ } from "./cli-00w4hbam.js";
27
24
  import {
28
25
  parseStreamingJson
29
- } from "./cli-zyxs93y9.js";
26
+ } from "./cli-7jcc9y1r.js";
30
27
  import {
31
28
  MIN_ANSWER_TOKENS,
32
29
  appendGrammarToolInputJsonDelta,
@@ -34,13 +31,17 @@ import {
34
31
  clampReasoning,
35
32
  createGrammarToolInputProperties,
36
33
  getGrammarToolInput,
34
+ getJsonSchemaToolParameters,
37
35
  resolveGrammarConstrainedSampling,
38
36
  resolveJsonSchemaStrictSampling,
39
37
  transformMessages
40
- } from "./cli-57khth04.js";
38
+ } from "./cli-xmyqv00z.js";
41
39
  import {
42
40
  sanitizeSurrogates
43
41
  } from "./cli-y2apkfe2.js";
42
+ import {
43
+ headersToRecord
44
+ } from "./cli-vapyk8sw.js";
44
45
  import {
45
46
  calculateCost,
46
47
  clampThinkingLevel
@@ -48,7 +49,7 @@ import {
48
49
  import {
49
50
  AssistantMessageEventStream
50
51
  } from "./cli-8wrympd7.js";
51
- import"./cli-p9swy5t3.js";
52
+ import"./cli-pq2ee5ja.js";
52
53
 
53
54
  // node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js
54
55
  function hasHeader(headers, name) {
@@ -1010,7 +1011,7 @@ function convertTools(tools, compat) {
1010
1011
  function: {
1011
1012
  name: tool.name,
1012
1013
  description: tool.description,
1013
- parameters: tool.parameters,
1014
+ parameters: getJsonSchemaToolParameters(tool, strict),
1014
1015
  ...compat.supportsStrictMode !== false && { strict: strict ?? false }
1015
1016
  }
1016
1017
  };
@@ -1068,10 +1069,10 @@ function detectCompat(model) {
1068
1069
  const isCloudflareAiGateway = provider === "cloudflare-ai-gateway" || baseUrl.includes("gateway.ai.cloudflare.com");
1069
1070
  const isNvidia = provider === "nvidia" || baseUrl.includes("integrate.api.nvidia.com");
1070
1071
  const isAntLing = provider === "ant-ling" || baseUrl.includes("api.ant-ling.com");
1071
- const isNonStandard = isNvidia || provider === "cerebras" || baseUrl.includes("cerebras.ai") || provider === "xai" || baseUrl.includes("api.x.ai") || isTogether || baseUrl.includes("chutes.ai") || baseUrl.includes("deepseek.com") || isZai || isMoonshot || provider === "opencode" || baseUrl.includes("opencode.ai") || isCloudflareWorkersAI || isCloudflareAiGateway || isAntLing;
1072
- const useMaxTokens = baseUrl.includes("chutes.ai") || isMoonshot || isCloudflareAiGateway || isTogether || isNvidia || isAntLing || isZai;
1072
+ const isDeepSeek = provider === "deepseek" || baseUrl.toLowerCase().includes("deepseek.com");
1073
+ const isNonStandard = isNvidia || provider === "cerebras" || baseUrl.includes("cerebras.ai") || provider === "xai" || baseUrl.includes("api.x.ai") || isTogether || baseUrl.includes("chutes.ai") || isDeepSeek || isZai || isMoonshot || provider === "opencode" || baseUrl.includes("opencode.ai") || isCloudflareWorkersAI || isCloudflareAiGateway || isAntLing;
1074
+ const useMaxTokens = baseUrl.includes("chutes.ai") || isDeepSeek || isMoonshot || isCloudflareAiGateway || isTogether || isNvidia || isAntLing || isZai;
1073
1075
  const isGrok = provider === "xai" || baseUrl.includes("api.x.ai");
1074
- const isDeepSeek = provider === "deepseek" || baseUrl.includes("deepseek.com");
1075
1076
  const isOpenRouterDeveloperRoleModel = isOpenRouter && (model.id.startsWith("anthropic/") || model.id.startsWith("openai/"));
1076
1077
  const cacheControlFormat = provider === "openrouter" && model.id.startsWith("anthropic/") ? "anthropic" : undefined;
1077
1078
  return {
@@ -1133,7 +1134,7 @@ function getCompat(model) {
1133
1134
  };
1134
1135
  }
1135
1136
  export {
1136
- streamSimple,
1137
+ convertMessages,
1137
1138
  stream,
1138
- convertMessages
1139
+ streamSimple
1139
1140
  };
@@ -1,18 +1,15 @@
1
+ import {
2
+ OpenAI
3
+ } from "./cli-qs9hhsvb.js";
1
4
  import {
2
5
  convertResponsesMessages,
3
6
  convertResponsesTools,
4
7
  processResponsesStream
5
- } from "./cli-gm9cbhbq.js";
8
+ } from "./cli-vtz6yj3v.js";
6
9
  import {
7
10
  clampOpenAIPromptCacheKey
8
11
  } from "./cli-mrptpp86.js";
9
- import {
10
- OpenAI
11
- } from "./cli-sajgpkqg.js";
12
12
  import"./cli-5m9j2spm.js";
13
- import {
14
- splitDeferredTools
15
- } from "./cli-vfcth11k.js";
16
13
  import {
17
14
  buildCopilotDynamicHeaders,
18
15
  hasCopilotVisionInput
@@ -20,29 +17,32 @@ import {
20
17
  import {
21
18
  retryProviderRequest
22
19
  } from "./cli-s8s499xy.js";
20
+ import {
21
+ splitDeferredTools
22
+ } from "./cli-vfcth11k.js";
23
23
  import {
24
24
  formatProviderError,
25
25
  normalizeProviderError
26
26
  } from "./cli-6map995v.js";
27
27
  import {
28
28
  getProviderEnvValue
29
- } from "./cli-4wgngmwv.js";
30
- import {
31
- headersToRecord
32
- } from "./cli-vapyk8sw.js";
33
- import"./cli-zyxs93y9.js";
29
+ } from "./cli-00w4hbam.js";
30
+ import"./cli-7jcc9y1r.js";
34
31
  import {
35
32
  buildBaseOptions,
36
33
  createGrammarToolInputProperties
37
- } from "./cli-57khth04.js";
34
+ } from "./cli-xmyqv00z.js";
38
35
  import"./cli-y2apkfe2.js";
36
+ import {
37
+ headersToRecord
38
+ } from "./cli-vapyk8sw.js";
39
39
  import {
40
40
  clampThinkingLevel
41
41
  } from "./cli-akdvwc9v.js";
42
42
  import {
43
43
  AssistantMessageEventStream
44
44
  } from "./cli-8wrympd7.js";
45
- import"./cli-p9swy5t3.js";
45
+ import"./cli-pq2ee5ja.js";
46
46
 
47
47
  // node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js
48
48
  var OPENAI_TOOL_CALL_PROVIDERS = new Set(["openai", "openai-codex", "opencode"]);
@@ -83,6 +83,7 @@ function getCompat(model) {
83
83
  supportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? true,
84
84
  supportsStrictMode: model.compat?.supportsStrictMode ?? false,
85
85
  supportsOpenAIGrammarTools: model.compat?.supportsOpenAIGrammarTools ?? false,
86
+ supportsAdditionalTools: model.compat?.supportsAdditionalTools ?? false,
86
87
  supportsToolSearch: model.compat?.supportsToolSearch ?? false,
87
88
  supportsExplicitPromptCacheMode: model.compat?.supportsExplicitPromptCacheMode ?? false
88
89
  };
@@ -210,10 +211,12 @@ function createClient(model, context, apiKey, optionsHeaders, fetch, sessionId)
210
211
  });
211
212
  }
212
213
  function buildParams(model, context, options, compat = getCompat(model), grammarToolInputProperties = createGrammarToolInputProperties(context.tools, compat.supportsOpenAIGrammarTools)) {
213
- const toolPlacement = splitDeferredTools(context, compat.supportsToolSearch);
214
+ const deferredToolsMode = compat.supportsAdditionalTools ? "additional-tools" : compat.supportsToolSearch ? "tool-search" : undefined;
215
+ const toolPlacement = splitDeferredTools(context, deferredToolsMode !== undefined);
214
216
  const messages = convertResponsesMessages(model, context, OPENAI_TOOL_CALL_PROVIDERS, {
215
217
  grammarToolInputProperties,
216
218
  deferredTools: toolPlacement.deferred,
219
+ deferredToolsMode,
217
220
  toolOptions: {
218
221
  supportsStrictMode: compat.supportsStrictMode,
219
222
  supportsOpenAIGrammarTools: compat.supportsOpenAIGrammarTools
@@ -290,6 +293,6 @@ function applyServiceTierPricing(usage, serviceTier, model) {
290
293
  usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;
291
294
  }
292
295
  export {
293
- streamSimple,
294
- stream
296
+ stream,
297
+ streamSimple
295
298
  };
@@ -5,23 +5,25 @@ import {
5
5
  applyOpenRouterBaseUrlOverride,
6
6
  checkOpencodeCredentials,
7
7
  resolveContextModePluginPath
8
- } from "./cli-n6h8qt8n.js";
9
- import"./cli-yazx6hap.js";
8
+ } from "./cli-snz3p4yf.js";
10
9
  import"./cli-r94z9p1z.js";
11
- import"./cli-d6n0thxw.js";
12
10
  import"./cli-tng3131n.js";
13
11
  import"./cli-zm7njwzd.js";
14
12
  import"./cli-cw70hymf.js";
13
+ import"./cli-f3s9dry0.js";
14
+ import"./cli-f64gdfxc.js";
15
15
  import"./cli-8whqavk2.js";
16
+ import"./cli-qh4sqfws.js";
16
17
  import"./cli-3dpj7atn.js";
17
- import"./cli-z2zcxes1.js";
18
- import"./cli-4j2mrzag.js";
19
- import"./cli-p9swy5t3.js";
18
+ import"./cli-qt5bt3vk.js";
19
+ import"./cli-nanaxrz6.js";
20
+ import"./cli-mkq1rk7b.js";
21
+ import"./cli-pq2ee5ja.js";
20
22
  export {
21
- resolveContextModePluginPath,
22
- checkOpencodeCredentials,
23
- applyOpenRouterBaseUrlOverride,
24
- _setOpenRouterModelCacheRefreshForTests,
23
+ OpencodeAdapter,
25
24
  OpencodeSession,
26
- OpencodeAdapter
25
+ _setOpenRouterModelCacheRefreshForTests,
26
+ applyOpenRouterBaseUrlOverride,
27
+ checkOpencodeCredentials,
28
+ resolveContextModePluginPath
27
29
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenAI
3
- } from "./cli-sajgpkqg.js";
3
+ } from "./cli-qs9hhsvb.js";
4
4
  import {
5
5
  retryProviderRequest
6
6
  } from "./cli-s8s499xy.js";
@@ -8,14 +8,14 @@ import {
8
8
  formatProviderError,
9
9
  normalizeProviderError
10
10
  } from "./cli-6map995v.js";
11
+ import {
12
+ sanitizeSurrogates
13
+ } from "./cli-y2apkfe2.js";
11
14
  import {
12
15
  headersToRecord,
13
16
  providerHeadersToRecord
14
17
  } from "./cli-vapyk8sw.js";
15
- import {
16
- sanitizeSurrogates
17
- } from "./cli-y2apkfe2.js";
18
- import"./cli-p9swy5t3.js";
18
+ import"./cli-pq2ee5ja.js";
19
19
 
20
20
  // node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js
21
21
  var generateImages = async (model, context, options) => {