@desplega.ai/agent-swarm 2.4.5 → 2.5.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 (272) hide show
  1. package/README.md +4 -2
  2. package/dist/{acp-adapter-2wdkktv6.js → acp-adapter-11gp67nr.js} +8 -6
  3. package/dist/{actions-c40ebcm4.js → actions-8p2kze8j.js} +23 -21
  4. package/dist/{amp-adapter-wb67m95z.js → amp-adapter-z4qvhacj.js} +2 -2
  5. package/dist/{anthropic-messages-g6pqmqk4.js → anthropic-messages-txs190dd.js} +17 -20
  6. package/dist/{app-353vre8g.js → app-0qp0a2gk.js} +3 -3
  7. package/dist/{assistant-sj1njh23.js → assistant-jedd3ktm.js} +24 -22
  8. package/dist/{azure-openai-responses-9dbmj346.js → azure-openai-responses-9kfwhmn7.js} +18 -13
  9. package/dist/{boot-reembed-qdkvxeem.js → boot-reembed-4xwq5tg0.js} +1 -1
  10. package/dist/{boot-reembed-b9c3az3c.js → boot-reembed-n4wq5dd2.js} +1 -1
  11. package/dist/{boot-scrub-sweep-m3wh8eks.js → boot-scrub-sweep-69h90xcq.js} +4 -4
  12. package/dist/{boot-seeds-j2273s54.js → boot-seeds-3vn0m9sg.js} +4 -4
  13. package/dist/{claude-adapter-m7q0a085.js → claude-adapter-221mvad5.js} +8 -6
  14. package/dist/{claude-managed-adapter-5ptb6tzs.js → claude-managed-adapter-gt6pa35d.js} +2 -2
  15. package/dist/{claude-managed-setup-smrqk5j5.js → claude-managed-setup-c3hp36ph.js} +4 -4
  16. package/dist/{claude-sdk-session-38xnz21e.js → claude-sdk-session-8thjsk5e.js} +9012 -8928
  17. package/dist/{cli-b9fcxxev.js → cli-007cnhm1.js} +50 -4
  18. package/dist/{cli-j4rqdf2n.js → cli-03vpq45j.js} +2 -2
  19. package/dist/{cli-dk44dxec.js → cli-0y6f0ckq.js} +1 -1
  20. package/dist/{cli-kpw04va0.js → cli-0z3vjrpm.js} +1 -1
  21. package/dist/{cli-94gwyg7m.js → cli-179xcyky.js} +9 -9
  22. package/dist/{cli-3r8samv3.js → cli-1f0gp9vz.js} +3 -2
  23. package/dist/{cli-4zfqgjc5.js → cli-1pr672hz.js} +2 -2
  24. package/dist/{cli-0bqteszy.js → cli-2nf3b08t.js} +328 -25
  25. package/dist/{cli-43x64hv3.js → cli-36j4jnk3.js} +4 -4
  26. package/dist/{cli-k8g16gz3.js → cli-3qv8naq8.js} +115 -119
  27. package/dist/cli-3zwye9sn.js +1193 -0
  28. package/dist/{cli-60cgh1rv.js → cli-459fk97x.js} +7 -7
  29. package/dist/{cli-v8fjakwf.js → cli-4w24f7z3.js} +1 -1
  30. package/dist/{cli-n72rg53p.js → cli-5kzk3472.js} +812 -418
  31. package/dist/{cli-h7gc0b4r.js → cli-5m84zd2k.js} +55 -18
  32. package/dist/{cli-j99azg3g.js → cli-5rvg1ddk.js} +5 -5
  33. package/dist/{cli-dvkmp9bt.js → cli-6ctwrf1z.js} +20 -10
  34. package/dist/{cli-848hxdwj.js → cli-6rg2jn2y.js} +2 -1
  35. package/dist/{cli-fv5hepyy.js → cli-7bwtc6yx.js} +3 -3
  36. package/dist/{cli-ms85309d.js → cli-7g40g8hq.js} +11 -11
  37. package/dist/{cli-xpa64rek.js → cli-92mqenkc.js} +2362 -159
  38. package/dist/{cli-018r4jq6.js → cli-9ce2xw98.js} +8 -8
  39. package/dist/{cli-1syn2xy1.js → cli-bgdtv62r.js} +32 -18
  40. package/dist/{cli-wxbn3yfx.js → cli-cz5nmdxt.js} +2 -2
  41. package/dist/{cli-wt645v7q.js → cli-dabehxhp.js} +1 -1
  42. package/dist/{cli-vfha21c9.js → cli-e5bxnjps.js} +2 -2
  43. package/dist/{cli-wt0jf9hm.js → cli-fcc5qe3f.js} +553 -193
  44. package/dist/{cli-ftc1g5tj.js → cli-fes51ya2.js} +3 -3
  45. package/dist/{cli-3a45zcgm.js → cli-ftmq4nvk.js} +2 -2
  46. package/dist/{cli-37j04k05.js → cli-fy1jyyym.js} +13 -13
  47. package/dist/{cli-s95dknxh.js → cli-g1cw7xtt.js} +1 -1
  48. package/dist/{cli-74c1wpm0.js → cli-gpv60278.js} +1 -1
  49. package/dist/{cli-pemywhfq.js → cli-ha9rmwgq.js} +2 -1
  50. package/dist/{cli-g35m2xwm.js → cli-j1eghqfm.js} +2 -2
  51. package/dist/{cli-qfxc84gh.js → cli-jpxsrxcb.js} +1 -1
  52. package/dist/{cli-ejs3m1sx.js → cli-kxpfx2xr.js} +1 -1
  53. package/dist/{cli-p14m2cnp.js → cli-mbfj11fq.js} +1 -1
  54. package/dist/{cli-pnp2j5zg.js → cli-mmhj8vd7.js} +2 -2
  55. package/dist/{cli-xf234ws8.js → cli-n4c8e3s5.js} +2 -0
  56. package/dist/{cli-f01h25yt.js → cli-n6kmqngw.js} +2 -2
  57. package/dist/{cli-v0yrfmdh.js → cli-nnvjb17s.js} +3 -3
  58. package/dist/{cli-1dmcq2eh.js → cli-nzfnt2gs.js} +1 -1
  59. package/dist/{cli-625tb7aq.js → cli-p859hcc8.js} +2 -2
  60. package/dist/{cli-smvcw9z5.js → cli-pasyvjmm.js} +1 -1
  61. package/dist/cli-pkaqk57w.js +128 -0
  62. package/dist/{cli-8nyhf7za.js → cli-qqzmjxkf.js} +129 -105
  63. package/dist/{cli-9yqgm9nd.js → cli-r25qpaxt.js} +161 -63
  64. package/dist/{cli-eww120g8.js → cli-rh5smt8t.js} +18 -4
  65. package/dist/{cli-qwkcwjdn.js → cli-rycdaj0a.js} +1 -1
  66. package/dist/{cli-a92r1127.js → cli-s4sntwt4.js} +2 -2
  67. package/dist/{cli-be2161h1.js → cli-segs7hx9.js} +6 -6
  68. package/dist/{cli-36ckw0wx.js → cli-stxdrqs2.js} +2 -2
  69. package/dist/{cli-z7d29rw9.js → cli-sy8f9705.js} +4 -4
  70. package/dist/{cli-1m17dc9d.js → cli-ta8bd7th.js} +2 -2
  71. package/dist/{cli-st8aw1m6.js → cli-we0ra057.js} +4 -4
  72. package/dist/{cli-7c9qs530.js → cli-x21dqn18.js} +5 -5
  73. package/dist/{cli-1sp861s4.js → cli-x6vf4sad.js} +11 -11
  74. package/dist/{cli-d2mb5s8a.js → cli-x77gen2p.js} +680 -440
  75. package/dist/{cli-tw4p90jb.js → cli-xawhpgc9.js} +5 -5
  76. package/dist/{cli-f0g3pgvf.js → cli-xd4eqtr2.js} +2 -2
  77. package/dist/{cli-1f3qzw6y.js → cli-xt768r5m.js} +2 -2
  78. package/dist/{cli-cxxe61f6.js → cli-y4x8ww6s.js} +2 -2
  79. package/dist/{cli-bnes4z6b.js → cli-y9jvxfhk.js} +3 -3
  80. package/dist/{cli-qwhy2qma.js → cli-z63a269p.js} +2 -2
  81. package/dist/{cli-sm8rses9.js → cli-zfdp01hn.js} +8 -5
  82. package/dist/cli.js +29 -27
  83. package/dist/{cloudflare-workers-ai-system-one-ch2wxfcp.js → cloudflare-workers-ai-system-one-43v9qkjk.js} +7 -2
  84. package/dist/{codex-adapter-tn6k5mkg.js → codex-adapter-tcg1q3jk.js} +6 -4
  85. package/dist/{codex-login-m819c41r.js → codex-login-rn7c5gxt.js} +1 -1
  86. package/dist/{codex-session-runner-7vjt7jbw.js → codex-session-runner-xfx4wd9x.js} +7 -5
  87. package/dist/{commands-t7rz9146.js → commands-ew83nj70.js} +2 -2
  88. package/dist/{controller-m2jasma5.js → controller-gnq1k1mf.js} +4 -4
  89. package/dist/{controllers-connect-9ftpex99.js → controllers-connect-tw1dan9r.js} +25 -23
  90. package/dist/{cursor-adapter-mjv79e4z.js → cursor-adapter-yq5xgfcg.js} +1 -1
  91. package/dist/{db-6sfrn9g3.js → db-7gbc53fd.js} +14 -2
  92. package/dist/{db-rn673r06.js → db-t86xrnes.js} +3 -3
  93. package/dist/{devin-adapter-zgqadvnm.js → devin-adapter-4ycy4vrf.js} +1 -1
  94. package/dist/{dispatcher-c155xz0p.js → dispatcher-64bdyhps.js} +22 -20
  95. package/dist/{docker-fkgtr75t.js → docker-nfy2gc8t.js} +2 -2
  96. package/dist/{dsh-adapter-3mmszc1x.js → dsh-adapter-tvhc4k2d.js} +1 -1
  97. package/dist/{e2b-16d6ch39.js → e2b-9gkdhm3c.js} +2 -2
  98. package/dist/{e2b-zn0b4w5w.js → e2b-cjtf8k1z.js} +2 -2
  99. package/dist/{easter-egg-3d-5cgynaja.js → easter-egg-3d-e4qv8dxj.js} +1 -1
  100. package/dist/{event-bus-9vpk8gmq.js → event-bus-3z78ep5n.js} +1 -1
  101. package/dist/{execute-t4e6m3rw.js → execute-0xpz8950.js} +85 -23
  102. package/dist/{external-channel-35k6tkv8.js → external-channel-e9nw24zv.js} +2 -2
  103. package/dist/{google-generative-ai-bmq8gkf3.js → google-generative-ai-mk9vcpe1.js} +15 -15
  104. package/dist/{google-vertex-b1rvp52s.js → google-vertex-q580kz8k.js} +20 -20
  105. package/dist/{grok-adapter-tfrq7tg1.js → grok-adapter-v82srhrx.js} +9 -7
  106. package/dist/handlers-c9ajzhbn.js +41 -0
  107. package/dist/{heartbeat-dyg4npkp.js → heartbeat-2vqs1319.js} +25 -23
  108. package/dist/{hook-x26b31bg.js → hook-01nk13wx.js} +7 -5
  109. package/dist/{hook-drspbwpe.js → hook-jzpheegg.js} +9 -7
  110. package/dist/{http-pk972xyw.js → http-fc1k6ec8.js} +544 -76
  111. package/dist/index-07ef7nkm.js +42 -0
  112. package/dist/{index-g6tbb6ve.js → index-31ceyf42.js} +1 -1
  113. package/dist/index-7yts8n9s.js +43 -0
  114. package/dist/index-q3t40ryv.js +46 -0
  115. package/dist/{index-arytgj5q.js → index-sepja052.js} +1 -1
  116. package/dist/{index-jwxkkex2.js → index-zdycv3ja.js} +13 -11
  117. package/dist/{index-g216q6jr.js → index-zsyx51ap.js} +1 -4
  118. package/dist/{keepalive-7yrng7px.js → keepalive-5nh2rhmr.js} +4 -4
  119. package/dist/lead-aayq64jn.js +79 -0
  120. package/dist/{llama-cpp-classify-vv43gswy.js → llama-cpp-classify-ee7vmd7q.js} +4 -1
  121. package/dist/{maintenance-e6cemdqt.js → maintenance-hjhzdt3k.js} +1 -1
  122. package/dist/{mistral-conversations-1medfwv7.js → mistral-conversations-sd0xf1tn.js} +13 -13
  123. package/dist/{node-de6akczr.js → node-jzjj7r9x.js} +1 -1
  124. package/dist/{oauth-refresh-sweep-yw3xdbcj.js → oauth-refresh-sweep-y3n1knmd.js} +3 -3
  125. package/dist/{onboard-0a9y5yrc.js → onboard-1zq3m7db.js} +2 -2
  126. package/dist/{openai-codex-responses-de9pvs4d.js → openai-codex-responses-79s8xnbh.js} +29 -23
  127. package/dist/{openai-completions-mtqge3nf.js → openai-completions-tdbyts0x.js} +21 -20
  128. package/dist/{openai-decisions-ygk4kkxd.js → openai-decisions-bqhnjyfz.js} +2 -1
  129. package/dist/{openai-responses-dkyng71g.js → openai-responses-dm3t5vqp.js} +26 -17
  130. package/dist/{opencode-adapter-x4tqzhkh.js → opencode-adapter-e56086m1.js} +7 -5
  131. package/dist/{openrouter-images-wvv7camj.js → openrouter-images-ssttr1y4.js} +6 -3
  132. package/dist/{otel-impl-trjpkfb7.js → otel-impl-h9yyza47.js} +2 -2
  133. package/dist/{pi-messages-nhh1pkz2.js → pi-messages-3nf8bq1a.js} +6 -4
  134. package/dist/{pi-mono-adapter-mcfkn9vf.js → pi-mono-adapter-tzps8f38.js} +9 -37
  135. package/dist/{pricing-refresh-d2b5my0y.js → pricing-refresh-nevhat8h.js} +3 -3
  136. package/dist/{rbac-roles-nxh5ahwk.js → rbac-roles-4y6ngvzq.js} +1 -1
  137. package/dist/{rbac-roles-hey3yv9d.js → rbac-roles-exbg8xb6.js} +2 -2
  138. package/dist/{render-v2-rr3p2atg.js → render-v2-cfsh13z3.js} +3 -3
  139. package/dist/{resume-2efkf1s1.js → resume-5s2t0dbs.js} +10 -8
  140. package/dist/{runtime-xe3aqy4x.js → runtime-bt5pkpm1.js} +1 -1
  141. package/dist/{session-access-s2mttxpw.js → session-access-dnbyp3cn.js} +6 -4
  142. package/dist/{setup-vypma5yt.js → setup-1wj1y77j.js} +1 -1
  143. package/dist/{typesafe-system-one-2hgpayzy.js → typesafe-system-one-bre38hvs.js} +4 -2
  144. package/dist/{virtual-modules-4r3zkc20.js → virtual-modules-mnfbh5mr.js} +8 -2
  145. package/dist/{work-objects-rvhckdkp.js → work-objects-7mg6216g.js} +25 -23
  146. package/dist/worker-nwb789mg.js +79 -0
  147. package/dist/{x-y45mthwn.js → x-pbpezr0s.js} +2 -2
  148. package/openapi.json +785 -5
  149. package/package.json +9 -9
  150. package/src/assets/key.ts +17 -0
  151. package/src/azure-devops/handlers.ts +1 -1
  152. package/src/be/db/approvals.ts +18 -0
  153. package/src/be/db/session-moves.ts +164 -0
  154. package/src/be/db/session-tree.ts +384 -0
  155. package/src/be/db/tasks/read.ts +40 -4
  156. package/src/be/db/workflow-runs.ts +96 -0
  157. package/src/be/db.ts +80 -236
  158. package/src/be/onboarding.ts +3 -0
  159. package/src/be/skill-sync.ts +43 -2
  160. package/src/be/swarm-config-guard.ts +1 -0
  161. package/src/bitbucket/api.ts +81 -0
  162. package/src/bitbucket/auth.ts +64 -0
  163. package/src/bitbucket/handlers.ts +434 -0
  164. package/src/bitbucket/index.ts +28 -0
  165. package/src/bitbucket/templates.ts +134 -0
  166. package/src/bitbucket/types.ts +65 -0
  167. package/src/commands/runner.ts +55 -3
  168. package/src/e2b/env.ts +1 -0
  169. package/src/extensions/contract-types.generated.ts +1 -1
  170. package/src/extensions/contract.ts +2 -2
  171. package/src/extensions/post-bridge.ts +1 -0
  172. package/src/github/handlers.ts +6 -6
  173. package/src/gitlab/handlers.ts +5 -5
  174. package/src/http/assets.ts +14 -2
  175. package/src/http/core.ts +12 -0
  176. package/src/http/index.ts +4 -0
  177. package/src/http/onboarding.ts +1 -0
  178. package/src/http/sessions.ts +366 -12
  179. package/src/http/skills.ts +48 -1
  180. package/src/http/tasks.ts +1 -1
  181. package/src/http/users.ts +1 -0
  182. package/src/http/webhooks.ts +141 -0
  183. package/src/integrations/chat-sdk/adapters.ts +19 -3
  184. package/src/integrations/chat-sdk/facts.ts +30 -12
  185. package/src/integrations/chat-sdk/outbound.ts +38 -1
  186. package/src/providers/acp-targets.ts +1 -1
  187. package/src/providers/amp-adapter.ts +1 -1
  188. package/src/providers/pi-mono-adapter.ts +5 -53
  189. package/src/scripts-runtime/types/swarm-extension.d.ts +6 -4
  190. package/src/slack/handlers.test.ts +158 -0
  191. package/src/slack/handlers.ts +19 -28
  192. package/src/tasks/context-key.ts +61 -1
  193. package/src/tests/bitbucket-auth.test.ts +156 -0
  194. package/src/tests/bitbucket-handlers.test.ts +425 -0
  195. package/src/tests/bitbucket-webhook.test.ts +220 -0
  196. package/src/tests/chat-sdk-inbound.test.ts +39 -0
  197. package/src/tests/chat-sdk-telegram-markdown.test.ts +92 -0
  198. package/src/tests/context-key.test.ts +50 -0
  199. package/src/tests/core-auth.test.ts +5 -0
  200. package/src/tests/db-task-read-contract.test.ts +7 -0
  201. package/src/tests/db-task-write-contract.test.ts +6 -0
  202. package/src/tests/docs-index-footprint.test.js +3 -3
  203. package/src/tests/fixtures/bitbucket/pullrequest-comment-created-inline.json +174 -0
  204. package/src/tests/fixtures/bitbucket/pullrequest-comment-created.json +170 -0
  205. package/src/tests/fixtures/bitbucket/pullrequest-created-mention.json +132 -0
  206. package/src/tests/fixtures/bitbucket/pullrequest-created-reviewer.json +140 -0
  207. package/src/tests/fixtures/bitbucket/pullrequest-fulfilled.json +134 -0
  208. package/src/tests/fixtures/bitbucket/pullrequest-rejected.json +133 -0
  209. package/src/tests/generate-mcp-docs.test.ts +101 -0
  210. package/src/tests/gitlab-handlers.test.ts +3 -3
  211. package/src/tests/gitlab-vcs-db.test.ts +4 -4
  212. package/src/tests/integration-disable-flags.test.ts +36 -0
  213. package/src/tests/mcp-tools.test.ts +1 -1
  214. package/src/tests/onboarding.test.ts +12 -0
  215. package/src/tests/pi-codemode.test.ts +8 -2
  216. package/src/tests/preload-env.test.ts +57 -0
  217. package/src/tests/preload.ts +21 -0
  218. package/src/tests/prompt-template-remaining.test.ts +38 -0
  219. package/src/tests/run-root-coverage.test.ts +39 -0
  220. package/src/tests/runner-bitbucket-vcs.test.ts +191 -0
  221. package/src/tests/runner-skills-refresh.test.ts +58 -0
  222. package/src/tests/secret-scrubber.test.ts +15 -0
  223. package/src/tests/sessions-move.test.ts +576 -0
  224. package/src/tests/sessions-tree.test.ts +493 -0
  225. package/src/tests/skill-files-http.test.ts +50 -0
  226. package/src/tests/skills-bundle.test.ts +99 -0
  227. package/src/tests/swarm-config-export-to-env.test.ts +2 -1
  228. package/src/tests/vcs-bitbucket.test.ts +91 -0
  229. package/src/tests/vcs-provider-isolation.test.ts +123 -0
  230. package/src/tests/vcs-provider.test.ts +16 -1
  231. package/src/tests/vcs-tracking.test.ts +3 -3
  232. package/src/tests/workflow-foreach-bodies.test.ts +637 -0
  233. package/src/tests/workflow-foreach-concurrency.test.ts +342 -0
  234. package/src/tests/workflow-foreach-retry.test.ts +537 -0
  235. package/src/tests/workflow-foreach.test.ts +44 -23
  236. package/src/tests/workflow-step-claims.test.ts +6 -6
  237. package/src/tests/workflow-tla-races.test.ts +2 -2
  238. package/src/tools/script-delete.ts +1 -1
  239. package/src/tools/workflows/create-workflow.ts +5 -3
  240. package/src/types.ts +3 -2
  241. package/src/utils/config-env-export.ts +1 -0
  242. package/src/utils/secret-scrubber.ts +4 -0
  243. package/src/utils/skills-refresh.ts +83 -43
  244. package/src/vcs/bitbucket.ts +58 -0
  245. package/src/vcs/index.ts +2 -0
  246. package/src/vcs/types.ts +2 -2
  247. package/src/workflows/approval-resolution.ts +4 -1
  248. package/src/workflows/checkpoint.ts +9 -1
  249. package/src/workflows/constants.ts +3 -0
  250. package/src/workflows/definition.ts +48 -17
  251. package/src/workflows/engine.ts +25 -15
  252. package/src/workflows/executors/foreach.ts +45 -99
  253. package/src/workflows/foreach-body.ts +146 -0
  254. package/src/workflows/foreach-driver.ts +552 -0
  255. package/src/workflows/foreach-join.ts +206 -7
  256. package/src/workflows/node-timeout.ts +21 -0
  257. package/src/workflows/recovery.ts +68 -3
  258. package/src/workflows/resume.ts +221 -43
  259. package/src/workflows/retry-poller.ts +39 -24
  260. package/src/workflows/step-input.ts +59 -0
  261. package/src/workflows/task-step-routing.ts +114 -56
  262. package/templates/skills/slack-interaction/content.md +5 -0
  263. package/templates/skills/work-on-task/SKILL.md +1 -1
  264. package/templates/skills/work-on-task/content.md +1 -1
  265. package/dist/cli-9hstj09h.js +0 -2657
  266. package/dist/cli-yw91rnmw.js +0 -13
  267. package/dist/handlers-7gw64dxw.js +0 -39
  268. package/dist/index-bgdyvcnv.js +0 -40
  269. package/dist/index-gabbcdn2.js +0 -43
  270. package/dist/index-tfb26zhy.js +0 -41
  271. package/dist/lead-7e02z839.js +0 -77
  272. package/dist/worker-5snytpbd.js +0 -77
@@ -0,0 +1,42 @@
1
+ import {
2
+ calculateNextRun2,
3
+ startScheduler2,
4
+ stopScheduler2,
5
+ runScheduleNow2
6
+ } from "./cli-5kzk3472.js";
7
+ import"./cli-pasyvjmm.js";
8
+ import"./cli-jpxsrxcb.js";
9
+ import"./cli-qz93y3x5.js";
10
+ import"./cli-3h26v7yj.js";
11
+ import"./cli-e8xyjvfc.js";
12
+ import"./cli-y9jvxfhk.js";
13
+ import"./cli-we0ra057.js";
14
+ import"./cli-3ggwdtb0.js";
15
+ import"./cli-s4sntwt4.js";
16
+ import"./cli-36j4jnk3.js";
17
+ import"./cli-0y6f0ckq.js";
18
+ import"./cli-g9ypd5en.js";
19
+ import"./cli-3zwye9sn.js";
20
+ import"./cli-92mqenkc.js";
21
+ import"./cli-qqzmjxkf.js";
22
+ import"./cli-kxpfx2xr.js";
23
+ import"./cli-9ce2xw98.js";
24
+ import"./cli-13p25grh.js";
25
+ import"./cli-0adyhvq2.js";
26
+ import"./cli-fy1jyyym.js";
27
+ import"./cli-ftmq4nvk.js";
28
+ import"./cli-5rvg1ddk.js";
29
+ import"./cli-xt768r5m.js";
30
+ import"./cli-rycdaj0a.js";
31
+ import"./cli-445c1vp7.js";
32
+ import"./cli-kvzgak7c.js";
33
+ import"./cli-2nf3b08t.js";
34
+ import"./cli-0z3vjrpm.js";
35
+ import"./cli-fcc5qe3f.js";
36
+ import"./cli-dabehxhp.js";
37
+ export {
38
+ calculateNextRun2 as calculateNextRun,
39
+ runScheduleNow2 as runScheduleNow,
40
+ startScheduler2 as startScheduler,
41
+ stopScheduler2 as stopScheduler
42
+ };
@@ -21,7 +21,7 @@ import {
21
21
  require_scala,
22
22
  require_swift,
23
23
  require_typescript
24
- } from "./cli-d2mb5s8a.js";
24
+ } from "./cli-x77gen2p.js";
25
25
  import {
26
26
  __commonJS
27
27
  } from "./cli-242037k3.js";
@@ -0,0 +1,43 @@
1
+ import"./cli-ns59dc6r.js";
2
+ import {
3
+ startHeartbeat2,
4
+ stopHeartbeat2
5
+ } from "./cli-7g40g8hq.js";
6
+ import"./cli-x6vf4sad.js";
7
+ import"./cli-xd4eqtr2.js";
8
+ import"./cli-5kzk3472.js";
9
+ import"./cli-pasyvjmm.js";
10
+ import"./cli-jpxsrxcb.js";
11
+ import"./cli-qz93y3x5.js";
12
+ import"./cli-3h26v7yj.js";
13
+ import"./cli-e8xyjvfc.js";
14
+ import"./cli-y9jvxfhk.js";
15
+ import"./cli-we0ra057.js";
16
+ import"./cli-3ggwdtb0.js";
17
+ import"./cli-s4sntwt4.js";
18
+ import"./cli-36j4jnk3.js";
19
+ import"./cli-0y6f0ckq.js";
20
+ import"./cli-g9ypd5en.js";
21
+ import"./cli-3zwye9sn.js";
22
+ import"./cli-92mqenkc.js";
23
+ import"./cli-qqzmjxkf.js";
24
+ import"./cli-kxpfx2xr.js";
25
+ import"./cli-9ce2xw98.js";
26
+ import"./cli-13p25grh.js";
27
+ import"./cli-0adyhvq2.js";
28
+ import"./cli-fy1jyyym.js";
29
+ import"./cli-ftmq4nvk.js";
30
+ import"./cli-5rvg1ddk.js";
31
+ import"./cli-xt768r5m.js";
32
+ import"./cli-rycdaj0a.js";
33
+ import"./cli-445c1vp7.js";
34
+ import"./cli-kvzgak7c.js";
35
+ import"./cli-2nf3b08t.js";
36
+ import"./cli-b2mz5mjc.js";
37
+ import"./cli-0z3vjrpm.js";
38
+ import"./cli-fcc5qe3f.js";
39
+ import"./cli-dabehxhp.js";
40
+ export {
41
+ startHeartbeat2 as startHeartbeat,
42
+ stopHeartbeat2 as stopHeartbeat
43
+ };
@@ -0,0 +1,46 @@
1
+ import {
2
+ getExecutorRegistry2,
3
+ initWorkflows2
4
+ } from "./cli-5kzk3472.js";
5
+ import"./cli-pasyvjmm.js";
6
+ import"./cli-jpxsrxcb.js";
7
+ import"./cli-qz93y3x5.js";
8
+ import"./cli-3h26v7yj.js";
9
+ import"./cli-e8xyjvfc.js";
10
+ import"./cli-y9jvxfhk.js";
11
+ import"./cli-we0ra057.js";
12
+ import"./cli-3ggwdtb0.js";
13
+ import"./cli-s4sntwt4.js";
14
+ import"./cli-36j4jnk3.js";
15
+ import"./cli-0y6f0ckq.js";
16
+ import"./cli-g9ypd5en.js";
17
+ import {
18
+ retryFailedRun2,
19
+ cancelWorkflowRun2
20
+ } from "./cli-3zwye9sn.js";
21
+ import {
22
+ startWorkflowExecution2
23
+ } from "./cli-92mqenkc.js";
24
+ import"./cli-qqzmjxkf.js";
25
+ import"./cli-kxpfx2xr.js";
26
+ import"./cli-9ce2xw98.js";
27
+ import"./cli-13p25grh.js";
28
+ import"./cli-0adyhvq2.js";
29
+ import"./cli-fy1jyyym.js";
30
+ import"./cli-ftmq4nvk.js";
31
+ import"./cli-5rvg1ddk.js";
32
+ import"./cli-xt768r5m.js";
33
+ import"./cli-rycdaj0a.js";
34
+ import"./cli-445c1vp7.js";
35
+ import"./cli-kvzgak7c.js";
36
+ import"./cli-2nf3b08t.js";
37
+ import"./cli-0z3vjrpm.js";
38
+ import"./cli-fcc5qe3f.js";
39
+ import"./cli-dabehxhp.js";
40
+ export {
41
+ cancelWorkflowRun2 as cancelWorkflowRun,
42
+ getExecutorRegistry2 as getExecutorRegistry,
43
+ initWorkflows2 as initWorkflows,
44
+ retryFailedRun2 as retryFailedRun,
45
+ startWorkflowExecution2 as startWorkflowExecution
46
+ };
@@ -3,7 +3,7 @@ import {
3
3
  resetEmbeddingProvider2,
4
4
  getMemoryStore2,
5
5
  init_memory
6
- } from "./cli-wt0jf9hm.js";
6
+ } from "./cli-fcc5qe3f.js";
7
7
  init_memory();
8
8
 
9
9
  export {
@@ -5,7 +5,7 @@ import {
5
5
  extractArgsJsonSchema,
6
6
  typecheckScript,
7
7
  parseSkillContent
8
- } from "./cli-st8aw1m6.js";
8
+ } from "./cli-we0ra057.js";
9
9
  import {
10
10
  getDbClient2,
11
11
  computeContentHash2,
@@ -26,26 +26,28 @@ import {
26
26
  deleteSkill2,
27
27
  getSkillByName2,
28
28
  init_db3
29
- } from "./cli-wt0jf9hm.js";
29
+ } from "./cli-fcc5qe3f.js";
30
30
  import"./cli-3ggwdtb0.js";
31
- import"./cli-a92r1127.js";
31
+ import"./cli-s4sntwt4.js";
32
32
  import {
33
33
  agentFsProvisionSeeder
34
- } from "./cli-4zfqgjc5.js";
35
- import"./cli-37j04k05.js";
36
- import"./cli-3a45zcgm.js";
34
+ } from "./cli-1pr672hz.js";
35
+ import"./cli-fy1jyyym.js";
36
+ import"./cli-ftmq4nvk.js";
37
37
  import {
38
38
  validateDefinition
39
- } from "./cli-xpa64rek.js";
40
- import"./cli-8nyhf7za.js";
39
+ } from "./cli-92mqenkc.js";
40
+ import"./cli-qqzmjxkf.js";
41
+ import"./cli-2nf3b08t.js";
41
42
  import"./cli-kvzgak7c.js";
42
43
  import"./cli-445c1vp7.js";
43
- import"./cli-ejs3m1sx.js";
44
+ import"./cli-kxpfx2xr.js";
44
45
  import {
45
46
  buildSkillContent
46
47
  } from "./cli-691vz9mk.js";
47
48
  import"./cli-13p25grh.js";
48
49
  import"./cli-0adyhvq2.js";
50
+ import"./cli-rycdaj0a.js";
49
51
  import {
50
52
  __toESM
51
53
  } from "./cli-242037k3.js";
@@ -11022,7 +11024,7 @@ var content_default40 = "Use this skill when a user asks to launch, monitor, ins
11022
11024
  var config_default41 = '{\n "kind": "skill",\n "name": "slack-interaction",\n "displayName": "Slack Interaction",\n "slug": "slack-interaction",\n "title": "Slack Interaction",\n "description": "Slack: reply, post, read, upload, and the thread rules. What the engine already posts, the one-message rule, `slack-reply`, `slack-post`, `slack-start-thread`, `slack-read`, `slack-upload-file`, `slack-download-file`, `slack-list-channels`, `slack-update`, `slack-delete`, unknown-user registration with `manage-user`, and Slack standing orders. Use before any Slack message.",\n "version": "1.0.0",\n "category": "skills",\n "placeholders": [],\n "runAllSeedersCandidate": true,\n "systemDefault": true,\n "tags": ["slack", "communication"]\n}\n';
11023
11025
 
11024
11026
  // templates/skills/slack-interaction/content.md
11025
- var content_default41 = '# Slack interaction\n\n## What the engine posts\n\nFor every task that came from Slack, the engine owns the thread tree and the top-level outcome card. It posts the start, the completion, and the failure. You do not.\n\n## Your one message\n\n- At most one message per task, and only when the outcome card will not carry it: a question, a decision the requester must make, a link to a page or file with one line of context.\n- Progress, receipts, acknowledgments, and relayed worker output stay out of Slack.\n- Concrete content. The length matches what the requester asked for.\n- The "How you write" rules of your system prompt apply. Slack renders mrkdwn: `*bold*`, `_italic_`, `` `code` ``, `<url|text>` for links. Markdown headings and tables do not render.\n\n## Where to post\n\nThe task carries `slackChannelId` and `slackThreadTs` in its metadata. A follow-up task with `parentTaskId` inherits them.\n\n- Reply in the task\'s thread: `slack-reply` with `taskId` and `message`.\n- Reply to an inbox message: `slack-reply` with `inboxMessageId`.\n- New top-level message in a channel (lead): `slack-start-thread` with `channelId`, then `slack-post` with the returned `ts` as `threadTs` for replies under it.\n- Fix your own message: `slack-update` (text) or `slack-delete` (lead). Both work only on messages this bot authored.\n\n## Tools\n\n| Tool | Use |\n|---|---|\n| `slack-reply` | reply in a thread by `taskId` or `inboxMessageId` |\n| `slack-post` | post to a channel, optional `threadTs` (lead) |\n| `slack-start-thread` | post a top-level message and get its `ts` (lead) |\n| `slack-read` | read a thread by `taskId` or `inboxMessageId`, or a channel by `channelId` (lead) |\n| `slack-list-channels` | channels the bot is a member of |\n| `slack-upload-file` | upload a file to a thread or channel, up to 1 GB |\n| `slack-download-file` | attach a Slack file (by ID or URL) to your task; run the `fetchCommand` it returns to get the bytes |\n| `slack-update` | edit your own message |\n| `slack-delete` | delete your own message (lead) |\n| `slack-create-channel`, `slack-invite-to-channel`, `slack-archive-channel` | channel lifecycle (lead) |\n\nFiles attached to your task already come with download commands in the task message. Use those before `slack-download-file`. `slack-read` on your task also attaches the files in the thread and gives each one a `fetchCommand`. Don\'t look for Slack files under `/app/shared` or `/workspace/shared/downloads`: those paths are the API server\'s disk.\n\n## Unknown user\n\nA task without `requestedByUserId` came from a Slack user the swarm does not know. Register them with `manage-user`, using the Slack user ID and display name from the task metadata, then continue. When you learn a requester\'s stable preferences (language, tone, verbosity), the lead stores them in the user\'s `comms` field with `manage-user`.\n\n## Lead standing orders\n\nWhen your heartbeat runbook says so, check for unaddressed requests older than one hour: `slack-list-channels`, then `slack-read` per channel, then create a task for each open request.\n\n## Scripts-only mode\n\nThe named Slack tools are not registered. Use `script-run` with inline source: `ctx.swarm.slack_reply({ taskId, message })`. The task ID carries the thread context.\n\n## Status and blocker questions\n\nAnswer for the scope of the place the question was asked. In a customer or project channel or thread, "current blockers" or "what\'s the status" means that customer\'s or project\'s work: its tracker, its PRs, its open asks. Answer swarm-wide only in a DM or an ops channel, or when the person asks for it. Name the scope you used in the first line.\n';
11027
+ var content_default41 = '# Slack interaction\n\n## What the engine posts\n\nFor every task that came from Slack, the engine owns the thread tree and the top-level outcome card. It posts the start, the completion, and the failure. You do not.\n\n## Your one message\n\n- At most one message per task, and only when the outcome card will not carry it: a question, a decision the requester must make, a link to a page or file with one line of context.\n- Progress, receipts, acknowledgments, and relayed worker output stay out of Slack.\n- Concrete content. The length matches what the requester asked for.\n- The "How you write" rules of your system prompt apply. Slack renders mrkdwn: `*bold*`, `_italic_`, `` `code` ``, `<url|text>` for links. Markdown headings and tables do not render.\n\n## Where to post\n\nThe task carries `slackChannelId` and `slackThreadTs` in its metadata. A follow-up task with `parentTaskId` inherits them.\n\n- Reply in the task\'s thread: `slack-reply` with `taskId` and `message`.\n- Reply to an inbox message: `slack-reply` with `inboxMessageId`.\n- New top-level message in a channel (lead): `slack-start-thread` with `channelId`, then `slack-post` with the returned `ts` as `threadTs` for replies under it.\n- Fix your own message: `slack-update` (text) or `slack-delete` (lead). Both work only on messages this bot authored.\n\n## Tools\n\n| Tool | Use |\n|---|---|\n| `slack-reply` | reply in a thread by `taskId` or `inboxMessageId` |\n| `slack-post` | post to a channel, optional `threadTs` (lead) |\n| `slack-start-thread` | post a top-level message and get its `ts` (lead) |\n| `slack-read` | read a thread by `taskId` or `inboxMessageId`, or a channel by `channelId` (lead) |\n| `slack-list-channels` | channels the bot is a member of |\n| `slack-upload-file` | upload a file to a thread or channel, up to 1 GB |\n| `slack-download-file` | attach a Slack file (by ID or URL) to your task; run the `fetchCommand` it returns to get the bytes |\n| `slack-update` | edit your own message |\n| `slack-delete` | delete your own message (lead) |\n| `slack-create-channel`, `slack-invite-to-channel`, `slack-archive-channel` | channel lifecycle (lead) |\n\nFiles attached to your task already come with download commands in the task message. Use those before `slack-download-file`. `slack-read` on your task also attaches the files in the thread and gives each one a `fetchCommand`. Don\'t look for Slack files under `/app/shared` or `/workspace/shared/downloads`: those paths are the API server\'s disk.\n\n## Message limits\n\n- Text sent without `blocks` is split into sections under Slack\'s 3,000-character section limit for you. With explicit `blocks`, keep each section\'s text at or under 3,000 characters yourself.\n- Truncate user text by code point (`Array.from(s).slice(0, n).join("")`), never with `s.slice(0, n)`: cutting an emoji in half leaves a lone UTF-16 surrogate, and Slack rejects the blocks with `invalid_blocks_format`.\n\n## Unknown user\n\nA task without `requestedByUserId` came from a Slack user the swarm does not know. Register them with `manage-user`, using the Slack user ID and display name from the task metadata, then continue. When you learn a requester\'s stable preferences (language, tone, verbosity), the lead stores them in the user\'s `comms` field with `manage-user`.\n\n## Lead standing orders\n\nWhen your heartbeat runbook says so, check for unaddressed requests older than one hour: `slack-list-channels`, then `slack-read` per channel, then create a task for each open request.\n\n## Scripts-only mode\n\nThe named Slack tools are not registered. Use `script-run` with inline source: `ctx.swarm.slack_reply({ taskId, message })`. The task ID carries the thread context.\n\n## Status and blocker questions\n\nAnswer for the scope of the place the question was asked. In a customer or project channel or thread, "current blockers" or "what\'s the status" means that customer\'s or project\'s work: its tracker, its PRs, its open asks. Answer swarm-wide only in a DM or an ops channel, or when the person asks for it. Name the scope you used in the first line.\n';
11026
11028
 
11027
11029
  // templates/skills/step-running/config.json
11028
11030
  var config_default42 = `{
@@ -12297,7 +12299,7 @@ var config_default51 = `{
12297
12299
  `;
12298
12300
 
12299
12301
  // templates/skills/work-on-task/content.md
12300
- var content_default51 = "# Working on a task\n\nThe taskId follows the command. Without one, call `get-tasks` with `mineOnly: true` and take your `pending` or `in_progress` task. If there is none, say so and stop.\n\nThis message carries the task text, its attachments, its output format, and memories from past sessions. If it does not (you invoked this command yourself, or the context was compacted), run the `task-context-gathering` script with the taskId.\n\nWhen the task names a skill (`researching`, `planning`, `implementing`), use it. Otherwise work directly.\n\nFinish the task with one of the four endings in your operating contract: `completed`, `defer-task`, `request-human-input`, or `failed`. Then stop.\n\nResuming (a resume task, or work cut by a graceful shutdown): read the parent's last progress line, then re-read live state once (PR state and head SHA, branch, `git status`) before new work. Re-run controls only if the head moved. Never redo a pushed commit or open a second PR for the same branch. Store a progress line with branch, PR number and head SHA each time you push. A document task has no branch: its live state is the brief's agent-fs output path and the task attachments. Run `agent-fs ls` on that path, download any partial and extend it; never re-run collection steps that already produced artifacts. If your task's `model` differs from the parent's, say so in the output, because the result's provenance changed.\n\nWrite times in replies, outputs and defer notes in the requester's timezone when the Requester Profile names one, never raw UTC.\n\nIf the user interrupts, follow their instructions. To resume, call `/work-on-task <taskId>` again.\n";
12302
+ var content_default51 = "# Working on a task\n\nThe taskId follows the command. Without one, call `get-tasks` with `mineOnly: true` and take your `pending` or `in_progress` task. If there is none, say so and stop.\n\nThis message carries the task text, its attachments, its output format, and memories from past sessions. If it does not (you invoked this command yourself, or the context was compacted), run the `task-context-gathering` script with the taskId.\n\nWhen the task names a skill (`researching`, `planning`, `implementing`), use it. Otherwise work directly.\n\nFinish the task with one of the four endings in your operating contract: `completed`, `defer-task`, `request-human-input`, or `failed`. Then stop.\n\nResuming (a resume task, or work cut by a graceful shutdown): read the parent's last progress line, then re-read live state once (PR state and head SHA, branch, `git status`) before new work. Re-run controls only if the head moved. Never redo a pushed commit or open a second PR for the same branch. Store a progress line with branch, PR number and head SHA each time you push. A document task has no branch: its live state is the brief's agent-fs output path and the task attachments. Run `agent-fs ls` on that path, download any partial and extend it. Then list the task's local work directory: a shutdown can leave the newest draft only there, or leave cache files half-written. Parse every cache file, delete the ones that fail, and re-run only the stages whose output is missing. Never re-run collection steps that already produced artifacts. If your task's `model` differs from the parent's, say so in the output, because the result's provenance changed.\n\nWrite times in replies, outputs and defer notes in the requester's timezone when the Requester Profile names one, never raw UTC.\n\nIf the user interrupts, follow their instructions. To resume, call `/work-on-task <taskId>` again.\n";
12301
12303
 
12302
12304
  // templates/skills/workflow-iterate/config.json
12303
12305
  var config_default52 = `{
@@ -3450,9 +3450,6 @@ var TelegramAdapter = class {
3450
3450
  }
3451
3451
  }
3452
3452
  };
3453
- function createTelegramAdapter(config) {
3454
- return new TelegramAdapter(config ?? {});
3455
- }
3456
3453
  export {
3457
- createTelegramAdapter
3454
+ TelegramAdapter
3458
3455
  };
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  listKeepAliveAuthorizations,
3
3
  init_oauth
4
- } from "./cli-wt0jf9hm.js";
4
+ } from "./cli-fcc5qe3f.js";
5
5
  import {
6
6
  ensureAuthorizationTokenOrThrow
7
- } from "./cli-a92r1127.js";
7
+ } from "./cli-s4sntwt4.js";
8
8
  import {
9
9
  scrubSecrets,
10
10
  init_secret_scrubber
11
- } from "./cli-xf234ws8.js";
11
+ } from "./cli-n4c8e3s5.js";
12
12
 
13
13
  // src/oauth/keepalive.ts
14
14
  init_oauth();
@@ -57,7 +57,7 @@ async function notifySlack(text) {
57
57
  return;
58
58
  }
59
59
  try {
60
- const { getSlackApp } = await import("./app-353vre8g.js");
60
+ const { getSlackApp } = await import("./app-0qp0a2gk.js");
61
61
  const app = getSlackApp();
62
62
  if (!app) {
63
63
  console.warn("[OAuth Keepalive] Slack not available, cannot send notification");
@@ -0,0 +1,79 @@
1
+ import"./cli-qz93y3x5.js";
2
+ import {
3
+ getEnabledCapabilities
4
+ } from "./cli-5kzk3472.js";
5
+ import"./cli-fcc5qe3f.js";
6
+ import"./cli-0z3vjrpm.js";
7
+ import"./cli-36j4jnk3.js";
8
+ import"./cli-0y6f0ckq.js";
9
+ import"./cli-y9jvxfhk.js";
10
+ import"./cli-jpxsrxcb.js";
11
+ import"./cli-92mqenkc.js";
12
+ import"./cli-we0ra057.js";
13
+ import"./cli-s4sntwt4.js";
14
+ import"./cli-3ggwdtb0.js";
15
+ import"./cli-fy1jyyym.js";
16
+ import"./cli-ftmq4nvk.js";
17
+ import"./cli-qqzmjxkf.js";
18
+ import"./cli-2nf3b08t.js";
19
+ import"./cli-kvzgak7c.js";
20
+ import"./cli-445c1vp7.js";
21
+ import"./cli-kxpfx2xr.js";
22
+ import"./cli-dabehxhp.js";
23
+ import"./cli-3zwye9sn.js";
24
+ import"./cli-9ce2xw98.js";
25
+ import"./cli-e8xyjvfc.js";
26
+ import"./cli-g9ypd5en.js";
27
+ import"./cli-5rvg1ddk.js";
28
+ import"./cli-3h26v7yj.js";
29
+ import"./cli-pasyvjmm.js";
30
+ import"./cli-0xk505e8.js";
31
+ import"./cli-bn0rewsy.js";
32
+ import"./cli-77cd6gy8.js";
33
+ import"./cli-4w24f7z3.js";
34
+ import {
35
+ runAgent
36
+ } from "./cli-r25qpaxt.js";
37
+ import"./cli-a5ebc95n.js";
38
+ import"./cli-gx4rm0qx.js";
39
+ import"./cli-5kqnemen.js";
40
+ import"./cli-jc1g9ndz.js";
41
+ import"./cli-fes51ya2.js";
42
+ import"./cli-ta8bd7th.js";
43
+ import"./cli-mmhj8vd7.js";
44
+ import"./cli-d82btycs.js";
45
+ import"./cli-0726awxw.js";
46
+ import"./cli-x21dqn18.js";
47
+ import"./cli-sy8f9705.js";
48
+ import"./cli-4bd1rck6.js";
49
+ import"./cli-vbhgkw9h.js";
50
+ import"./cli-3qv8naq8.js";
51
+ import"./cli-n6kmqngw.js";
52
+ import"./cli-kr5tjjtz.js";
53
+ import"./cli-xawhpgc9.js";
54
+ import"./cli-j1eghqfm.js";
55
+ import"./cli-g1cw7xtt.js";
56
+ import"./cli-z63a269p.js";
57
+ import"./cli-nnvjb17s.js";
58
+ import"./cli-e5bxnjps.js";
59
+ import"./cli-stxdrqs2.js";
60
+ import"./cli-y4x8ww6s.js";
61
+ import"./cli-4zsenjhy.js";
62
+ import"./cli-13p25grh.js";
63
+ import"./cli-0adyhvq2.js";
64
+ import"./cli-xt768r5m.js";
65
+ import"./cli-rycdaj0a.js";
66
+
67
+ // src/commands/lead.ts
68
+ var leadConfig = {
69
+ role: "lead",
70
+ defaultPrompt: "/start-leader",
71
+ metadataType: "lead_metadata",
72
+ capabilities: getEnabledCapabilities()
73
+ };
74
+ async function runLead(opts) {
75
+ return runAgent(leadConfig, opts);
76
+ }
77
+ export {
78
+ runLead
79
+ };
@@ -9,6 +9,9 @@ import {
9
9
  headersToRecord,
10
10
  providerHeadersToRecord
11
11
  } from "./cli-hf1b007k.js";
12
+ import {
13
+ getIdentityHeaders
14
+ } from "./cli-pkaqk57w.js";
12
15
 
13
16
  // node_modules/@earendil-works/pi-ai/dist/api/llama-cpp-classify.js
14
17
  var LABEL = "llama.cpp";
@@ -161,7 +164,7 @@ async function post(request, path, body, observe) {
161
164
  payload = transformed;
162
165
  }
163
166
  const requestFetch = options?.fetch ?? globalThis.fetch;
164
- const headers = providerHeadersToRecord({
167
+ const headers = providerHeadersToRecord(getIdentityHeaders(model, options?.identity), {
165
168
  "content-type": "application/json",
166
169
  ...options?.apiKey ? { authorization: `Bearer ${options.apiKey}` } : {}
167
170
  }, model.headers, options?.headers) ?? {};
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  reembedAllScripts,
3
3
  init_embeddings
4
- } from "./cli-wt0jf9hm.js";
4
+ } from "./cli-fcc5qe3f.js";
5
5
 
6
6
  // src/be/scripts/maintenance.ts
7
7
  init_embeddings();
@@ -1,3 +1,11 @@
1
+ import {
2
+ getSystemMessageText,
3
+ renderSystemMessageUpdate,
4
+ getCurrentTools,
5
+ resolveTranscript,
6
+ calculateCost,
7
+ clampThinkingLevel
8
+ } from "./cli-2nf3b08t.js";
1
9
  import {
2
10
  parseToolCallArguments,
3
11
  parseStreamingJson
@@ -8,32 +16,24 @@ import {
8
16
  import {
9
17
  shortHash
10
18
  } from "./cli-j3xf15kq.js";
11
- import {
12
- getPiUserAgent
13
- } from "./cli-yw91rnmw.js";
14
19
  import {
15
20
  getJsonSchemaToolParameters,
16
21
  resolveJsonSchemaStrictSampling,
17
22
  buildBaseOptions,
18
23
  transformMessages
19
- } from "./cli-3r8samv3.js";
24
+ } from "./cli-1f0gp9vz.js";
20
25
  import {
21
26
  sanitizeSurrogates
22
27
  } from "./cli-xs8nzjqf.js";
23
28
  import {
24
29
  headersToRecord
25
30
  } from "./cli-hf1b007k.js";
26
- import {
27
- getSystemMessageText,
28
- renderSystemMessageUpdate,
29
- getCurrentTools,
30
- resolveTranscript,
31
- calculateCost,
32
- clampThinkingLevel
33
- } from "./cli-0bqteszy.js";
34
31
  import {
35
32
  AssistantMessageEventStream
36
33
  } from "./cli-m6m1bvtp.js";
34
+ import {
35
+ getIdentityHeaders
36
+ } from "./cli-pkaqk57w.js";
37
37
 
38
38
  // node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js
39
39
  var MISTRAL_TOOL_CALL_ID_LENGTH = 9;
@@ -221,7 +221,7 @@ class MistralHttpError extends Error {
221
221
  }
222
222
  function buildMistralHeaders(model, apiKey, options) {
223
223
  const headers = new Headers({
224
- "User-Agent": getPiUserAgent(),
224
+ ...getIdentityHeaders(model, options?.identity),
225
225
  accept: "text/event-stream",
226
226
  authorization: `Bearer ${apiKey}`,
227
227
  "content-type": "application/json"
@@ -18,7 +18,7 @@ import {
18
18
  DEFAULT_MEMORY_SYNC_INTERVAL_MS,
19
19
  checkMemorySyncInterval,
20
20
  promiseWithResolvers
21
- } from "./cli-848hxdwj.js";
21
+ } from "./cli-6rg2jn2y.js";
22
22
 
23
23
  // node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.mjs
24
24
  import * as fs4 from "node:fs/promises";
@@ -2,14 +2,14 @@ import {
2
2
  getAuthorizationById,
3
3
  listAuthorizationSweepRows,
4
4
  init_oauth
5
- } from "./cli-wt0jf9hm.js";
5
+ } from "./cli-fcc5qe3f.js";
6
6
  import {
7
7
  forceRefreshAuthorizationOrThrow
8
- } from "./cli-a92r1127.js";
8
+ } from "./cli-s4sntwt4.js";
9
9
  import {
10
10
  scrubSecrets,
11
11
  init_secret_scrubber
12
- } from "./cli-xf234ws8.js";
12
+ } from "./cli-n4c8e3s5.js";
13
13
 
14
14
  // src/be/oauth-refresh-sweep.ts
15
15
  init_secret_scrubber();
@@ -16,7 +16,7 @@ import {
16
16
  createDefaultSettingsLocal,
17
17
  createDefaultMcpJson,
18
18
  createHooksConfig
19
- } from "./cli-p14m2cnp.js";
19
+ } from "./cli-mbfj11fq.js";
20
20
  import {
21
21
  getSlackConfiguration,
22
22
  isSlackConfigured,
@@ -25,7 +25,7 @@ import {
25
25
  import {
26
26
  init_package,
27
27
  package_default
28
- } from "./cli-94gwyg7m.js";
28
+ } from "./cli-179xcyky.js";
29
29
  import {
30
30
  getApiKey,
31
31
  init_api_key
@@ -1,19 +1,26 @@
1
+ import {
2
+ getSystemMessageText,
3
+ normalizeContext,
4
+ getInitialSystemMessage,
5
+ resolveTranscript,
6
+ getDeclaredTools,
7
+ resolveTranscriptTools,
8
+ clampThinkingLevel
9
+ } from "./cli-2nf3b08t.js";
1
10
  import"./cli-445c1vp7.js";
2
11
  import"./cli-kvzgak7c.js";
3
12
  import {
13
+ getResponsesToolSupport,
4
14
  convertResponsesMessages,
5
15
  convertResponsesTools,
6
16
  processResponsesStream
7
- } from "./cli-h7gc0b4r.js";
17
+ } from "./cli-5m84zd2k.js";
8
18
  import {
9
19
  clampOpenAIPromptCacheKey
10
20
  } from "./cli-dxqypk0n.js";
11
21
  import {
12
22
  combineAbortSignals
13
23
  } from "./cli-aphet7e8.js";
14
- import {
15
- getPiUserAgent
16
- } from "./cli-yw91rnmw.js";
17
24
  import {
18
25
  registerSessionResourceCleanup,
19
26
  uuidv7
@@ -28,25 +35,19 @@ import {
28
35
  import {
29
36
  createGrammarToolInputProperties,
30
37
  buildBaseOptions
31
- } from "./cli-3r8samv3.js";
38
+ } from "./cli-1f0gp9vz.js";
32
39
  import {
33
40
  headersToRecord
34
41
  } from "./cli-hf1b007k.js";
35
- import {
36
- getSystemMessageText,
37
- normalizeContext,
38
- getInitialSystemMessage,
39
- resolveTranscript,
40
- getDeclaredTools,
41
- resolveTranscriptTools,
42
- clampThinkingLevel
43
- } from "./cli-0bqteszy.js";
44
42
  import {
45
43
  AssistantMessageEventStream,
46
44
  formatThrownValue,
47
45
  createAssistantMessageDiagnostic,
48
46
  appendAssistantMessageDiagnostic
49
47
  } from "./cli-m6m1bvtp.js";
48
+ import {
49
+ getIdentityHeaders
50
+ } from "./cli-pkaqk57w.js";
50
51
 
51
52
  // node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js
52
53
  var DEFAULT_CODEX_BASE_URL = "https://chatgpt.com/backend-api";
@@ -197,8 +198,9 @@ var stream = (model, context, options) => {
197
198
  body = nextBody;
198
199
  }
199
200
  const websocketRequestId = codexSessionId || uuidv7();
200
- const sseHeaders = buildSSEHeaders(model.headers, options?.headers, accountId, apiKey, codexSessionId);
201
- const websocketHeaders = buildWebSocketHeaders(model.headers, options?.headers, accountId, apiKey, websocketRequestId);
201
+ const identityHeaders = { originator: "pi", ...getIdentityHeaders(model, options?.identity) };
202
+ const sseHeaders = buildSSEHeaders(identityHeaders, model.headers, options?.headers, accountId, apiKey, codexSessionId);
203
+ const websocketHeaders = buildWebSocketHeaders(identityHeaders, model.headers, options?.headers, accountId, apiKey, websocketRequestId);
202
204
  const bodyJson = JSON.stringify(body);
203
205
  const httpTimeoutMs = normalizeTimeoutMs(options?.timeoutMs);
204
206
  const websocketConnectTimeoutMs = normalizeTimeoutMs(options?.websocketConnectTimeoutMs);
@@ -377,7 +379,11 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
377
379
  const supportsOpenAIGrammarTools = model.compat?.supportsOpenAIGrammarTools ?? false;
378
380
  const supportsAdditionalTools = model.compat?.supportsAdditionalTools ?? false;
379
381
  const supportsToolSearch = model.compat?.supportsToolSearch ?? false;
380
- const transcriptTools = resolveTranscriptTools(context.messages, supportsAdditionalTools || supportsToolSearch);
382
+ const transcriptTools = resolveTranscriptTools(context.messages, getResponsesToolSupport({
383
+ supportsMidConvoSystemMessages: model.compat?.supportsMidConvoSystemMessages ?? false,
384
+ supportsAdditionalTools,
385
+ supportsToolSearch
386
+ }));
381
387
  const messages = convertResponsesMessages(model, context, CODEX_TOOL_CALL_PROVIDERS, {
382
388
  includeSystemPrompt: false,
383
389
  grammarToolInputProperties,
@@ -1235,8 +1241,8 @@ function extractAccountId(token) {
1235
1241
  throw new Error("Failed to extract accountId from token");
1236
1242
  }
1237
1243
  }
1238
- function buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token) {
1239
- const headers = new Headers({ originator: "pi", "User-Agent": getPiUserAgent() });
1244
+ function buildBaseCodexHeaders(defaultHeaders, initHeaders, additionalHeaders, accountId, token) {
1245
+ const headers = new Headers(defaultHeaders);
1240
1246
  for (const [key, value] of Object.entries(initHeaders || {})) {
1241
1247
  headers.set(key, value);
1242
1248
  }
@@ -1251,8 +1257,8 @@ function buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token)
1251
1257
  headers.set("chatgpt-account-id", accountId);
1252
1258
  return headers;
1253
1259
  }
1254
- function buildSSEHeaders(initHeaders, additionalHeaders, accountId, token, sessionId) {
1255
- const headers = buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token);
1260
+ function buildSSEHeaders(defaultHeaders, initHeaders, additionalHeaders, accountId, token, sessionId) {
1261
+ const headers = buildBaseCodexHeaders(defaultHeaders, initHeaders, additionalHeaders, accountId, token);
1256
1262
  headers.set("OpenAI-Beta", "responses=experimental");
1257
1263
  headers.set("accept", "text/event-stream");
1258
1264
  headers.set("content-type", "application/json");
@@ -1262,8 +1268,8 @@ function buildSSEHeaders(initHeaders, additionalHeaders, accountId, token, sessi
1262
1268
  }
1263
1269
  return headers;
1264
1270
  }
1265
- function buildWebSocketHeaders(initHeaders, additionalHeaders, accountId, token, requestId) {
1266
- const headers = buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token);
1271
+ function buildWebSocketHeaders(defaultHeaders, initHeaders, additionalHeaders, accountId, token, requestId) {
1272
+ const headers = buildBaseCodexHeaders(defaultHeaders, initHeaders, additionalHeaders, accountId, token);
1267
1273
  headers.delete("accept");
1268
1274
  headers.delete("content-type");
1269
1275
  headers.delete("OpenAI-Beta");