@desplega.ai/agent-swarm 2.4.5 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/README.md +4 -2
  2. package/dist/{acp-adapter-2wdkktv6.js → acp-adapter-7g6bpwbk.js} +8 -6
  3. package/dist/{actions-c40ebcm4.js → actions-w8xd014k.js} +23 -21
  4. package/dist/{amp-adapter-wb67m95z.js → amp-adapter-z4qvhacj.js} +2 -2
  5. package/dist/{anthropic-messages-g6pqmqk4.js → anthropic-messages-txs190dd.js} +17 -20
  6. package/dist/{app-353vre8g.js → app-nndcvftq.js} +3 -3
  7. package/dist/{assistant-sj1njh23.js → assistant-hjmqyscx.js} +24 -22
  8. package/dist/{azure-openai-responses-9dbmj346.js → azure-openai-responses-9kfwhmn7.js} +18 -13
  9. package/dist/{boot-reembed-b9c3az3c.js → boot-reembed-r8rhf9h8.js} +1 -1
  10. package/dist/{boot-reembed-qdkvxeem.js → boot-reembed-vwcj2y5d.js} +1 -1
  11. package/dist/{boot-scrub-sweep-m3wh8eks.js → boot-scrub-sweep-fr9q36ne.js} +4 -4
  12. package/dist/{boot-seeds-j2273s54.js → boot-seeds-9jqwnegq.js} +4 -4
  13. package/dist/{claude-adapter-m7q0a085.js → claude-adapter-2f8b85df.js} +8 -6
  14. package/dist/{claude-managed-adapter-5ptb6tzs.js → claude-managed-adapter-gt6pa35d.js} +2 -2
  15. package/dist/{claude-managed-setup-smrqk5j5.js → claude-managed-setup-c3hp36ph.js} +4 -4
  16. package/dist/{claude-sdk-session-38xnz21e.js → claude-sdk-session-05kat8rv.js} +9012 -8928
  17. package/dist/{cli-b9fcxxev.js → cli-007cnhm1.js} +50 -4
  18. package/dist/{cli-j4rqdf2n.js → cli-03vpq45j.js} +2 -2
  19. package/dist/{cli-1sp861s4.js → cli-0jy85zz4.js} +11 -11
  20. package/dist/{cli-j99azg3g.js → cli-1dp1zj04.js} +5 -5
  21. package/dist/{cli-3r8samv3.js → cli-1f0gp9vz.js} +3 -2
  22. package/dist/{cli-94gwyg7m.js → cli-22rmcjkg.js} +9 -9
  23. package/dist/{cli-ms85309d.js → cli-2jg61wab.js} +11 -11
  24. package/dist/{cli-0bqteszy.js → cli-2nf3b08t.js} +328 -25
  25. package/dist/{cli-9yqgm9nd.js → cli-2wba1ac9.js} +161 -63
  26. package/dist/{cli-cxxe61f6.js → cli-3ee5z0q0.js} +2 -2
  27. package/dist/{cli-k8g16gz3.js → cli-3qv8naq8.js} +115 -119
  28. package/dist/{cli-60cgh1rv.js → cli-459fk97x.js} +7 -7
  29. package/dist/{cli-h7gc0b4r.js → cli-5m84zd2k.js} +55 -18
  30. package/dist/{cli-dvkmp9bt.js → cli-6ctwrf1z.js} +20 -10
  31. package/dist/{cli-848hxdwj.js → cli-6rg2jn2y.js} +2 -1
  32. package/dist/{cli-dk44dxec.js → cli-9mm5ade4.js} +1 -1
  33. package/dist/{cli-7c9qs530.js → cli-ajqhxtnz.js} +5 -5
  34. package/dist/{cli-be2161h1.js → cli-cah5detr.js} +6 -6
  35. package/dist/{cli-v8fjakwf.js → cli-cwyafhw1.js} +1 -1
  36. package/dist/{cli-wxbn3yfx.js → cli-cz5nmdxt.js} +2 -2
  37. package/dist/{cli-wt645v7q.js → cli-dabehxhp.js} +1 -1
  38. package/dist/{cli-vfha21c9.js → cli-e5bxnjps.js} +2 -2
  39. package/dist/{cli-37j04k05.js → cli-e9btqw4y.js} +13 -13
  40. package/dist/{cli-1syn2xy1.js → cli-eym3jg7w.js} +32 -18
  41. package/dist/{cli-ftc1g5tj.js → cli-fes51ya2.js} +3 -3
  42. package/dist/{cli-s95dknxh.js → cli-g1cw7xtt.js} +1 -1
  43. package/dist/{cli-74c1wpm0.js → cli-gpv60278.js} +1 -1
  44. package/dist/{cli-1f3qzw6y.js → cli-gwcf52gz.js} +2 -2
  45. package/dist/{cli-pemywhfq.js → cli-ha9rmwgq.js} +2 -1
  46. package/dist/{cli-v0yrfmdh.js → cli-hadv0725.js} +3 -3
  47. package/dist/{cli-g35m2xwm.js → cli-j1eghqfm.js} +2 -2
  48. package/dist/{cli-qfxc84gh.js → cli-jpxsrxcb.js} +1 -1
  49. package/dist/{cli-n72rg53p.js → cli-kcsd1ez8.js} +848 -426
  50. package/dist/{cli-ejs3m1sx.js → cli-kxpfx2xr.js} +1 -1
  51. package/dist/{cli-pnp2j5zg.js → cli-mmhj8vd7.js} +2 -2
  52. package/dist/{cli-st8aw1m6.js → cli-mq7kg1b1.js} +4 -4
  53. package/dist/{cli-bnes4z6b.js → cli-mz2ygeyq.js} +3 -3
  54. package/dist/{cli-xf234ws8.js → cli-n4c8e3s5.js} +2 -0
  55. package/dist/{cli-f01h25yt.js → cli-n6kmqngw.js} +2 -2
  56. package/dist/cli-nj12tn2c.js +1193 -0
  57. package/dist/{cli-1dmcq2eh.js → cli-nzfnt2gs.js} +1 -1
  58. package/dist/{cli-625tb7aq.js → cli-p859hcc8.js} +2 -2
  59. package/dist/{cli-smvcw9z5.js → cli-pasyvjmm.js} +1 -1
  60. package/dist/cli-pkaqk57w.js +128 -0
  61. package/dist/{cli-xpa64rek.js → cli-pyy4c9ch.js} +2362 -159
  62. package/dist/{cli-wt0jf9hm.js → cli-q9pzwxvk.js} +553 -193
  63. package/dist/{cli-z7d29rw9.js → cli-qfjm4gvt.js} +4 -4
  64. package/dist/{cli-p14m2cnp.js → cli-qfm6my86.js} +1 -1
  65. package/dist/{cli-8nyhf7za.js → cli-qqzmjxkf.js} +129 -105
  66. package/dist/{cli-4zfqgjc5.js → cli-r9fy0ddc.js} +2 -2
  67. package/dist/{cli-eww120g8.js → cli-rh5smt8t.js} +18 -4
  68. package/dist/{cli-a92r1127.js → cli-rngde2jv.js} +2 -2
  69. package/dist/{cli-qwkcwjdn.js → cli-rycdaj0a.js} +1 -1
  70. package/dist/{cli-fv5hepyy.js → cli-sn1vbtg2.js} +3 -3
  71. package/dist/{cli-36ckw0wx.js → cli-stxdrqs2.js} +2 -2
  72. package/dist/{cli-1m17dc9d.js → cli-ta8bd7th.js} +2 -2
  73. package/dist/{cli-43x64hv3.js → cli-v2g93k4v.js} +4 -4
  74. package/dist/{cli-d2mb5s8a.js → cli-x77gen2p.js} +680 -440
  75. package/dist/{cli-3a45zcgm.js → cli-xc65x52q.js} +2 -2
  76. package/dist/{cli-f0g3pgvf.js → cli-xd4eqtr2.js} +2 -2
  77. package/dist/{cli-018r4jq6.js → cli-y3zyaee5.js} +8 -8
  78. package/dist/{cli-kpw04va0.js → cli-z2dv25mf.js} +1 -1
  79. package/dist/{cli-qwhy2qma.js → cli-z63a269p.js} +2 -2
  80. package/dist/{cli-sm8rses9.js → cli-zfdp01hn.js} +8 -5
  81. package/dist/{cli-tw4p90jb.js → cli-znvq0k3t.js} +5 -5
  82. package/dist/cli.js +29 -27
  83. package/dist/{cloudflare-workers-ai-system-one-ch2wxfcp.js → cloudflare-workers-ai-system-one-43v9qkjk.js} +7 -2
  84. package/dist/{codex-adapter-tn6k5mkg.js → codex-adapter-p4ptwar5.js} +6 -4
  85. package/dist/{codex-login-m819c41r.js → codex-login-rn7c5gxt.js} +1 -1
  86. package/dist/{codex-session-runner-7vjt7jbw.js → codex-session-runner-964c7dnk.js} +7 -5
  87. package/dist/{commands-t7rz9146.js → commands-mbvhbrcy.js} +2 -2
  88. package/dist/{controller-m2jasma5.js → controller-gnq1k1mf.js} +4 -4
  89. package/dist/{controllers-connect-9ftpex99.js → controllers-connect-6dkm71tg.js} +25 -23
  90. package/dist/{cursor-adapter-mjv79e4z.js → cursor-adapter-yq5xgfcg.js} +1 -1
  91. package/dist/{db-6sfrn9g3.js → db-88wcymxt.js} +14 -2
  92. package/dist/{db-rn673r06.js → db-af9y8nkf.js} +3 -3
  93. package/dist/{devin-adapter-zgqadvnm.js → devin-adapter-4ycy4vrf.js} +1 -1
  94. package/dist/{dispatcher-c155xz0p.js → dispatcher-606ydx5v.js} +22 -20
  95. package/dist/{docker-fkgtr75t.js → docker-nfy2gc8t.js} +2 -2
  96. package/dist/{dsh-adapter-3mmszc1x.js → dsh-adapter-tvhc4k2d.js} +1 -1
  97. package/dist/{e2b-16d6ch39.js → e2b-9gkdhm3c.js} +2 -2
  98. package/dist/{e2b-zn0b4w5w.js → e2b-cjtf8k1z.js} +2 -2
  99. package/dist/{easter-egg-3d-5cgynaja.js → easter-egg-3d-e4qv8dxj.js} +1 -1
  100. package/dist/{event-bus-9vpk8gmq.js → event-bus-3z78ep5n.js} +1 -1
  101. package/dist/{execute-t4e6m3rw.js → execute-0xpz8950.js} +85 -23
  102. package/dist/{external-channel-35k6tkv8.js → external-channel-y8q5z8z2.js} +2 -2
  103. package/dist/{google-generative-ai-bmq8gkf3.js → google-generative-ai-mk9vcpe1.js} +15 -15
  104. package/dist/{google-vertex-b1rvp52s.js → google-vertex-q580kz8k.js} +20 -20
  105. package/dist/{grok-adapter-tfrq7tg1.js → grok-adapter-39aha52t.js} +9 -7
  106. package/dist/handlers-rk9dqech.js +41 -0
  107. package/dist/{heartbeat-dyg4npkp.js → heartbeat-jfe9zfjr.js} +25 -23
  108. package/dist/{hook-drspbwpe.js → hook-b1mez1m8.js} +9 -7
  109. package/dist/{hook-x26b31bg.js → hook-ffevzed1.js} +7 -5
  110. package/dist/{http-pk972xyw.js → http-d5b44f1r.js} +544 -76
  111. package/dist/{index-g6tbb6ve.js → index-31ceyf42.js} +1 -1
  112. package/dist/index-4q3vj1yr.js +46 -0
  113. package/dist/{index-arytgj5q.js → index-5en23s5z.js} +1 -1
  114. package/dist/index-d2qeem97.js +42 -0
  115. package/dist/index-mj46rk9k.js +43 -0
  116. package/dist/{index-jwxkkex2.js → index-nq8hhv28.js} +13 -11
  117. package/dist/{index-g216q6jr.js → index-zsyx51ap.js} +1 -4
  118. package/dist/{keepalive-7yrng7px.js → keepalive-wsby1btq.js} +4 -4
  119. package/dist/lead-paa141j6.js +79 -0
  120. package/dist/{llama-cpp-classify-vv43gswy.js → llama-cpp-classify-ee7vmd7q.js} +4 -1
  121. package/dist/{maintenance-e6cemdqt.js → maintenance-vnshcyv9.js} +1 -1
  122. package/dist/{mistral-conversations-1medfwv7.js → mistral-conversations-sd0xf1tn.js} +13 -13
  123. package/dist/{node-de6akczr.js → node-jzjj7r9x.js} +1 -1
  124. package/dist/{oauth-refresh-sweep-yw3xdbcj.js → oauth-refresh-sweep-d6sqn5np.js} +3 -3
  125. package/dist/{onboard-0a9y5yrc.js → onboard-nr4xhpzy.js} +2 -2
  126. package/dist/{openai-codex-responses-de9pvs4d.js → openai-codex-responses-79s8xnbh.js} +29 -23
  127. package/dist/{openai-completions-mtqge3nf.js → openai-completions-tdbyts0x.js} +21 -20
  128. package/dist/{openai-decisions-ygk4kkxd.js → openai-decisions-bqhnjyfz.js} +2 -1
  129. package/dist/{openai-responses-dkyng71g.js → openai-responses-dm3t5vqp.js} +26 -17
  130. package/dist/{opencode-adapter-x4tqzhkh.js → opencode-adapter-e56086m1.js} +7 -5
  131. package/dist/{openrouter-images-wvv7camj.js → openrouter-images-ssttr1y4.js} +6 -3
  132. package/dist/{otel-impl-trjpkfb7.js → otel-impl-ytn9wyv9.js} +2 -2
  133. package/dist/{pi-messages-nhh1pkz2.js → pi-messages-3nf8bq1a.js} +6 -4
  134. package/dist/{pi-mono-adapter-mcfkn9vf.js → pi-mono-adapter-tzps8f38.js} +9 -37
  135. package/dist/{pricing-refresh-d2b5my0y.js → pricing-refresh-pva04zee.js} +3 -3
  136. package/dist/{rbac-roles-nxh5ahwk.js → rbac-roles-7rc1q3g4.js} +1 -1
  137. package/dist/{rbac-roles-hey3yv9d.js → rbac-roles-ff1ffmec.js} +2 -2
  138. package/dist/{render-v2-rr3p2atg.js → render-v2-pyfsg9zk.js} +3 -3
  139. package/dist/{resume-2efkf1s1.js → resume-phj8xhqr.js} +10 -8
  140. package/dist/{runtime-xe3aqy4x.js → runtime-bt5pkpm1.js} +1 -1
  141. package/dist/{session-access-s2mttxpw.js → session-access-jzx2z9h5.js} +6 -4
  142. package/dist/{setup-vypma5yt.js → setup-rfg0f0sg.js} +1 -1
  143. package/dist/{typesafe-system-one-2hgpayzy.js → typesafe-system-one-bre38hvs.js} +4 -2
  144. package/dist/{virtual-modules-4r3zkc20.js → virtual-modules-mnfbh5mr.js} +8 -2
  145. package/dist/{work-objects-rvhckdkp.js → work-objects-44z2yjg8.js} +25 -23
  146. package/dist/worker-zsfqzxhm.js +79 -0
  147. package/dist/{x-y45mthwn.js → x-pbpezr0s.js} +2 -2
  148. package/openapi.json +785 -5
  149. package/package.json +9 -9
  150. package/src/assets/key.ts +17 -0
  151. package/src/azure-devops/handlers.ts +1 -1
  152. package/src/be/db/approvals.ts +18 -0
  153. package/src/be/db/session-moves.ts +164 -0
  154. package/src/be/db/session-tree.ts +384 -0
  155. package/src/be/db/tasks/read.ts +40 -4
  156. package/src/be/db/workflow-runs.ts +96 -0
  157. package/src/be/db.ts +80 -236
  158. package/src/be/onboarding.ts +3 -0
  159. package/src/be/skill-sync.ts +43 -2
  160. package/src/be/swarm-config-guard.ts +1 -0
  161. package/src/bitbucket/api.ts +81 -0
  162. package/src/bitbucket/auth.ts +64 -0
  163. package/src/bitbucket/handlers.ts +434 -0
  164. package/src/bitbucket/index.ts +28 -0
  165. package/src/bitbucket/templates.ts +134 -0
  166. package/src/bitbucket/types.ts +65 -0
  167. package/src/commands/runner.ts +55 -3
  168. package/src/e2b/env.ts +1 -0
  169. package/src/extensions/contract-types.generated.ts +1 -1
  170. package/src/extensions/contract.ts +2 -2
  171. package/src/extensions/post-bridge.ts +1 -0
  172. package/src/github/handlers.ts +6 -6
  173. package/src/gitlab/auth.ts +8 -2
  174. package/src/gitlab/handlers.ts +63 -15
  175. package/src/gitlab/index.ts +1 -1
  176. package/src/http/assets.ts +14 -2
  177. package/src/http/core.ts +12 -0
  178. package/src/http/index.ts +4 -0
  179. package/src/http/onboarding.ts +1 -0
  180. package/src/http/sessions.ts +366 -12
  181. package/src/http/skills.ts +48 -1
  182. package/src/http/tasks.ts +1 -1
  183. package/src/http/users.ts +1 -0
  184. package/src/http/webhooks.ts +141 -0
  185. package/src/integrations/chat-sdk/adapters.ts +19 -3
  186. package/src/integrations/chat-sdk/facts.ts +30 -12
  187. package/src/integrations/chat-sdk/outbound.ts +38 -1
  188. package/src/providers/acp-targets.ts +1 -1
  189. package/src/providers/amp-adapter.ts +1 -1
  190. package/src/providers/pi-mono-adapter.ts +5 -53
  191. package/src/scripts-runtime/types/swarm-extension.d.ts +6 -4
  192. package/src/slack/handlers.test.ts +158 -0
  193. package/src/slack/handlers.ts +19 -28
  194. package/src/tasks/context-key.ts +61 -1
  195. package/src/tests/bitbucket-auth.test.ts +156 -0
  196. package/src/tests/bitbucket-handlers.test.ts +425 -0
  197. package/src/tests/bitbucket-webhook.test.ts +220 -0
  198. package/src/tests/chat-sdk-inbound.test.ts +39 -0
  199. package/src/tests/chat-sdk-telegram-markdown.test.ts +92 -0
  200. package/src/tests/context-key.test.ts +50 -0
  201. package/src/tests/core-auth.test.ts +5 -0
  202. package/src/tests/db-task-read-contract.test.ts +7 -0
  203. package/src/tests/db-task-write-contract.test.ts +6 -0
  204. package/src/tests/docs-index-footprint.test.js +3 -3
  205. package/src/tests/fixtures/bitbucket/pullrequest-comment-created-inline.json +174 -0
  206. package/src/tests/fixtures/bitbucket/pullrequest-comment-created.json +170 -0
  207. package/src/tests/fixtures/bitbucket/pullrequest-created-mention.json +132 -0
  208. package/src/tests/fixtures/bitbucket/pullrequest-created-reviewer.json +140 -0
  209. package/src/tests/fixtures/bitbucket/pullrequest-fulfilled.json +134 -0
  210. package/src/tests/fixtures/bitbucket/pullrequest-rejected.json +133 -0
  211. package/src/tests/generate-mcp-docs.test.ts +101 -0
  212. package/src/tests/gitlab-auth.test.ts +13 -5
  213. package/src/tests/gitlab-handlers.test.ts +273 -25
  214. package/src/tests/gitlab-vcs-db.test.ts +4 -4
  215. package/src/tests/integration-disable-flags.test.ts +36 -0
  216. package/src/tests/mcp-tools.test.ts +1 -1
  217. package/src/tests/onboarding.test.ts +12 -0
  218. package/src/tests/pi-codemode.test.ts +8 -2
  219. package/src/tests/preload-env.test.ts +57 -0
  220. package/src/tests/preload.ts +21 -0
  221. package/src/tests/prompt-template-remaining.test.ts +38 -0
  222. package/src/tests/run-root-coverage.test.ts +39 -0
  223. package/src/tests/runner-bitbucket-vcs.test.ts +191 -0
  224. package/src/tests/runner-skills-refresh.test.ts +58 -0
  225. package/src/tests/secret-scrubber.test.ts +15 -0
  226. package/src/tests/sessions-move.test.ts +576 -0
  227. package/src/tests/sessions-tree.test.ts +493 -0
  228. package/src/tests/skill-files-http.test.ts +50 -0
  229. package/src/tests/skills-bundle.test.ts +99 -0
  230. package/src/tests/swarm-config-export-to-env.test.ts +2 -1
  231. package/src/tests/vcs-bitbucket.test.ts +91 -0
  232. package/src/tests/vcs-provider-isolation.test.ts +123 -0
  233. package/src/tests/vcs-provider.test.ts +16 -1
  234. package/src/tests/vcs-tracking.test.ts +3 -3
  235. package/src/tests/workflow-foreach-bodies.test.ts +637 -0
  236. package/src/tests/workflow-foreach-concurrency.test.ts +342 -0
  237. package/src/tests/workflow-foreach-retry.test.ts +537 -0
  238. package/src/tests/workflow-foreach.test.ts +44 -23
  239. package/src/tests/workflow-step-claims.test.ts +6 -6
  240. package/src/tests/workflow-tla-races.test.ts +2 -2
  241. package/src/tools/script-delete.ts +1 -1
  242. package/src/tools/workflows/create-workflow.ts +5 -3
  243. package/src/types.ts +3 -2
  244. package/src/utils/config-env-export.ts +1 -0
  245. package/src/utils/secret-scrubber.ts +4 -0
  246. package/src/utils/skills-refresh.ts +83 -43
  247. package/src/vcs/bitbucket.ts +58 -0
  248. package/src/vcs/index.ts +2 -0
  249. package/src/vcs/types.ts +2 -2
  250. package/src/workflows/approval-resolution.ts +4 -1
  251. package/src/workflows/checkpoint.ts +9 -1
  252. package/src/workflows/constants.ts +3 -0
  253. package/src/workflows/definition.ts +48 -17
  254. package/src/workflows/engine.ts +25 -15
  255. package/src/workflows/executors/foreach.ts +45 -99
  256. package/src/workflows/foreach-body.ts +146 -0
  257. package/src/workflows/foreach-driver.ts +552 -0
  258. package/src/workflows/foreach-join.ts +206 -7
  259. package/src/workflows/node-timeout.ts +21 -0
  260. package/src/workflows/recovery.ts +68 -3
  261. package/src/workflows/resume.ts +221 -43
  262. package/src/workflows/retry-poller.ts +39 -24
  263. package/src/workflows/step-input.ts +59 -0
  264. package/src/workflows/task-step-routing.ts +114 -56
  265. package/templates/skills/slack-interaction/content.md +5 -0
  266. package/templates/skills/work-on-task/SKILL.md +1 -1
  267. package/templates/skills/work-on-task/content.md +1 -1
  268. package/dist/cli-9hstj09h.js +0 -2657
  269. package/dist/cli-yw91rnmw.js +0 -13
  270. package/dist/handlers-7gw64dxw.js +0 -39
  271. package/dist/index-bgdyvcnv.js +0 -40
  272. package/dist/index-gabbcdn2.js +0 -43
  273. package/dist/index-tfb26zhy.js +0 -41
  274. package/dist/lead-7e02z839.js +0 -77
  275. package/dist/worker-5snytpbd.js +0 -77
@@ -5,7 +5,7 @@ import {
5
5
  authJsonToCredentialSelection,
6
6
  credentialsToAuthJson,
7
7
  loadAllCodexOAuthSlots
8
- } from "./cli-ejs3m1sx.js";
8
+ } from "./cli-kxpfx2xr.js";
9
9
  import {
10
10
  effectiveReasoningEffort
11
11
  } from "./cli-bn0rewsy.js";
@@ -20,7 +20,7 @@ import {
20
20
  renderMemoriesPrompt,
21
21
  isUnknownModelError,
22
22
  writeSkillsToFilesystem
23
- } from "./cli-v8fjakwf.js";
23
+ } from "./cli-cwyafhw1.js";
24
24
  import {
25
25
  isPollTracingEnabled,
26
26
  initOtel,
@@ -30,7 +30,7 @@ import {
30
30
  injectTraceContext2,
31
31
  initialize,
32
32
  ensure
33
- } from "./cli-37j04k05.js";
33
+ } from "./cli-e9btqw4y.js";
34
34
  import {
35
35
  getContextWindowSize
36
36
  } from "./cli-a5ebc95n.js";
@@ -51,7 +51,7 @@ import {
51
51
  canonicalAzureDevOpsRepoUrl,
52
52
  parseAzureDevOpsRepoUrl,
53
53
  resolveScriptsOnlyMode
54
- } from "./cli-n72rg53p.js";
54
+ } from "./cli-kcsd1ez8.js";
55
55
  import {
56
56
  ACP_TARGET_IDS,
57
57
  isAcpTarget
@@ -59,32 +59,32 @@ import {
59
59
  import {
60
60
  checkAmpCredentials2,
61
61
  liveTestAmpCredentials2
62
- } from "./cli-ftc1g5tj.js";
62
+ } from "./cli-fes51ya2.js";
63
63
  import {
64
64
  checkClaudeCredentials2
65
- } from "./cli-z7d29rw9.js";
65
+ } from "./cli-qfjm4gvt.js";
66
66
  import {
67
67
  checkClaudeManagedCredentials2
68
- } from "./cli-f01h25yt.js";
68
+ } from "./cli-n6kmqngw.js";
69
69
  import {
70
70
  codexUserHome,
71
71
  checkCodexCredentials2
72
- } from "./cli-tw4p90jb.js";
72
+ } from "./cli-znvq0k3t.js";
73
73
  import {
74
74
  checkCursorCredentials2
75
- } from "./cli-g35m2xwm.js";
75
+ } from "./cli-j1eghqfm.js";
76
76
  import {
77
77
  checkDevinCredentials2
78
- } from "./cli-s95dknxh.js";
78
+ } from "./cli-g1cw7xtt.js";
79
79
  import {
80
80
  checkDshCredentials2
81
- } from "./cli-qwhy2qma.js";
81
+ } from "./cli-z63a269p.js";
82
82
  import {
83
83
  checkOpencodeCredentials2
84
- } from "./cli-36ckw0wx.js";
84
+ } from "./cli-stxdrqs2.js";
85
85
  import {
86
86
  checkGrokCredentials2
87
- } from "./cli-cxxe61f6.js";
87
+ } from "./cli-3ee5z0q0.js";
88
88
  import {
89
89
  CODEX_OAUTH_POOL_SLOTS_ENV,
90
90
  isCodexOAuthConfigKey,
@@ -93,7 +93,7 @@ import {
93
93
  } from "./cli-j4bwnpkm.js";
94
94
  import {
95
95
  validateJsonSchema
96
- } from "./cli-9hstj09h.js";
96
+ } from "./cli-pyy4c9ch.js";
97
97
  import {
98
98
  mapTriggerSurface,
99
99
  init_telemetry_context,
@@ -111,7 +111,7 @@ import {
111
111
  init_vcs_repo_match,
112
112
  isApiDrainingResponse,
113
113
  init_api_drain
114
- } from "./cli-wt0jf9hm.js";
114
+ } from "./cli-q9pzwxvk.js";
115
115
  import {
116
116
  parseWorkerModelTierOverrides,
117
117
  resolveTaskModelSelection,
@@ -119,7 +119,7 @@ import {
119
119
  ProviderNameSchema,
120
120
  WorkerNudgeSchema,
121
121
  init_types
122
- } from "./cli-eww120g8.js";
122
+ } from "./cli-rh5smt8t.js";
123
123
  import {
124
124
  generateDefaultClaudeMd2,
125
125
  generateDefaultSoulMd2,
@@ -143,7 +143,7 @@ import {
143
143
  resolveClaudeMdPath,
144
144
  syncProfileFilesToServer,
145
145
  init_profile_sync
146
- } from "./cli-74c1wpm0.js";
146
+ } from "./cli-gpv60278.js";
147
147
  import {
148
148
  isSteeringEnabled2,
149
149
  init_steering_enabled
@@ -204,7 +204,7 @@ import {
204
204
  registerEnvSecrets,
205
205
  registerSensitiveKeyName,
206
206
  init_secret_scrubber
207
- } from "./cli-xf234ws8.js";
207
+ } from "./cli-n4c8e3s5.js";
208
208
  import {
209
209
  harnessModelMismatch,
210
210
  openAICompatibleProviders,
@@ -246,47 +246,47 @@ async function materializeCodexAuthJson(_slot, creds, deps = {}) {
246
246
  async function createProviderAdapter(provider) {
247
247
  switch (provider) {
248
248
  case "claude": {
249
- const { ClaudeAdapter } = await import("./claude-adapter-m7q0a085.js");
249
+ const { ClaudeAdapter } = await import("./claude-adapter-2f8b85df.js");
250
250
  return new ClaudeAdapter;
251
251
  }
252
252
  case "pi": {
253
- const { PiMonoAdapter } = await import("./pi-mono-adapter-mcfkn9vf.js");
253
+ const { PiMonoAdapter } = await import("./pi-mono-adapter-tzps8f38.js");
254
254
  return new PiMonoAdapter;
255
255
  }
256
256
  case "codex": {
257
- const { CodexAdapter } = await import("./codex-adapter-tn6k5mkg.js");
257
+ const { CodexAdapter } = await import("./codex-adapter-p4ptwar5.js");
258
258
  return new CodexAdapter;
259
259
  }
260
260
  case "claude-managed": {
261
- const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-5ptb6tzs.js");
261
+ const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-gt6pa35d.js");
262
262
  return new ClaudeManagedAdapter;
263
263
  }
264
264
  case "devin": {
265
- const { DevinAdapter } = await import("./devin-adapter-zgqadvnm.js");
265
+ const { DevinAdapter } = await import("./devin-adapter-4ycy4vrf.js");
266
266
  return new DevinAdapter;
267
267
  }
268
268
  case "opencode": {
269
- const { OpencodeAdapter } = await import("./opencode-adapter-x4tqzhkh.js");
269
+ const { OpencodeAdapter } = await import("./opencode-adapter-e56086m1.js");
270
270
  return new OpencodeAdapter;
271
271
  }
272
272
  case "dsh": {
273
- const { DshAdapter } = await import("./dsh-adapter-3mmszc1x.js");
273
+ const { DshAdapter } = await import("./dsh-adapter-tvhc4k2d.js");
274
274
  return new DshAdapter;
275
275
  }
276
276
  case "amp": {
277
- const { AmpAdapter } = await import("./amp-adapter-wb67m95z.js");
277
+ const { AmpAdapter } = await import("./amp-adapter-z4qvhacj.js");
278
278
  return new AmpAdapter;
279
279
  }
280
280
  case "cursor": {
281
- const { CursorAdapter } = await import("./cursor-adapter-mjv79e4z.js");
281
+ const { CursorAdapter } = await import("./cursor-adapter-yq5xgfcg.js");
282
282
  return new CursorAdapter;
283
283
  }
284
284
  case "grok": {
285
- const { GrokAdapter } = await import("./grok-adapter-tfrq7tg1.js");
285
+ const { GrokAdapter } = await import("./grok-adapter-39aha52t.js");
286
286
  return new GrokAdapter;
287
287
  }
288
288
  case "acp": {
289
- const { ACPAdapter } = await import("./acp-adapter-2wdkktv6.js");
289
+ const { ACPAdapter } = await import("./acp-adapter-7g6bpwbk.js");
290
290
  return new ACPAdapter;
291
291
  }
292
292
  default:
@@ -832,21 +832,38 @@ async function refreshSkillsIfChanged(ctx, lastHashRef, homeOverride) {
832
832
  return { changed: false };
833
833
  }
834
834
  let skillRows = [];
835
+ let bundledFiles = null;
835
836
  let newHash = null;
836
837
  let listFetchOk = false;
837
838
  try {
838
- const skillsResp = await fetch(`${apiUrl}/api/agents/${agentId}/skills`, {
839
+ const bundleResp = await fetch(`${apiUrl}/api/agents/${agentId}/skills/bundle`, {
839
840
  headers: authHeaders
840
841
  });
841
- if (skillsResp.ok) {
842
- const skillsData = await skillsResp.json();
843
- skillRows = skillsData.skills;
844
- if (typeof skillsData.signature === "string") {
845
- newHash = skillsData.signature;
842
+ if (bundleResp.ok) {
843
+ const bundle = await bundleResp.json();
844
+ skillRows = bundle.skills;
845
+ bundledFiles = new Map(bundle.skills.map((skill) => [skill.id, skill.files ?? []]));
846
+ if (typeof bundle.signature === "string") {
847
+ newHash = bundle.signature;
846
848
  }
847
849
  listFetchOk = true;
848
850
  }
849
851
  } catch {}
852
+ if (!listFetchOk) {
853
+ try {
854
+ const skillsResp = await fetch(`${apiUrl}/api/agents/${agentId}/skills`, {
855
+ headers: authHeaders
856
+ });
857
+ if (skillsResp.ok) {
858
+ const skillsData = await skillsResp.json();
859
+ skillRows = skillsData.skills;
860
+ if (typeof skillsData.signature === "string") {
861
+ newHash = skillsData.signature;
862
+ }
863
+ listFetchOk = true;
864
+ }
865
+ } catch {}
866
+ }
850
867
  if (!listFetchOk) {
851
868
  return { changed: false };
852
869
  }
@@ -859,32 +876,37 @@ async function refreshSkillsIfChanged(ctx, lastHashRef, homeOverride) {
859
876
  continue;
860
877
  const files = [];
861
878
  if (skill.isComplex) {
862
- try {
863
- const manifestResp = await fetch(`${apiUrl}/api/skills/${skill.id}/files`, {
864
- headers: authHeaders
865
- });
866
- if (manifestResp.ok) {
867
- const manifestData = await manifestResp.json();
868
- for (const manifestEntry of manifestData.files) {
869
- if (manifestEntry.isBinary) {
870
- files.push({ path: manifestEntry.path, content: "", isBinary: true });
871
- continue;
872
- }
873
- try {
874
- const encodedPath = manifestEntry.path.split("/").map(encodeURIComponent).join("/");
875
- const fileResp = await fetch(`${apiUrl}/api/skills/${skill.id}/files/${encodedPath}`, { headers: authHeaders });
876
- if (fileResp.ok) {
877
- const fileData = await fileResp.json();
878
- files.push({
879
- path: fileData.file.path,
880
- content: fileData.file.content,
881
- isBinary: fileData.file.isBinary
882
- });
879
+ const bundled = bundledFiles?.get(skill.id);
880
+ if (bundled) {
881
+ files.push(...bundled);
882
+ } else {
883
+ try {
884
+ const manifestResp = await fetch(`${apiUrl}/api/skills/${skill.id}/files`, {
885
+ headers: authHeaders
886
+ });
887
+ if (manifestResp.ok) {
888
+ const manifestData = await manifestResp.json();
889
+ for (const manifestEntry of manifestData.files) {
890
+ if (manifestEntry.isBinary) {
891
+ files.push({ path: manifestEntry.path, content: "", isBinary: true });
892
+ continue;
883
893
  }
884
- } catch {}
894
+ try {
895
+ const encodedPath = manifestEntry.path.split("/").map(encodeURIComponent).join("/");
896
+ const fileResp = await fetch(`${apiUrl}/api/skills/${skill.id}/files/${encodedPath}`, { headers: authHeaders });
897
+ if (fileResp.ok) {
898
+ const fileData = await fileResp.json();
899
+ files.push({
900
+ path: fileData.file.path,
901
+ content: fileData.file.content,
902
+ isBinary: fileData.file.isBinary
903
+ });
904
+ }
905
+ } catch {}
906
+ }
885
907
  }
886
- }
887
- } catch {}
908
+ } catch {}
909
+ }
888
910
  }
889
911
  entries.push({
890
912
  id: skill.id,
@@ -941,10 +963,50 @@ init_steering_enabled();
941
963
  init_template();
942
964
  init_vcs_repo_match();
943
965
 
966
+ // src/vcs/bitbucket.ts
967
+ function isBitbucketUrl(url) {
968
+ const trimmed = url.trim();
969
+ const scp = trimmed.match(/^[^@/\s:]+@([^:/\s]+):/);
970
+ if (scp)
971
+ return scp[1].toLowerCase() === "bitbucket.org";
972
+ try {
973
+ return new URL(trimmed).hostname.toLowerCase() === "bitbucket.org";
974
+ } catch {
975
+ return /^bitbucket\.org(\/|$)/i.test(trimmed);
976
+ }
977
+ }
978
+ function parseBitbucketRepoUrl(url) {
979
+ const trimmed = url.trim();
980
+ if (!isBitbucketUrl(trimmed))
981
+ return null;
982
+ const scp = trimmed.match(/^[^@/\s]+@bitbucket\.org:([^/]+)\/([^/]+?)(?:\.git)?\/?$/i);
983
+ if (scp)
984
+ return { workspace: scp[1], repoSlug: scp[2] };
985
+ let parsed;
986
+ try {
987
+ parsed = new URL(trimmed);
988
+ } catch {
989
+ return null;
990
+ }
991
+ if (parsed.hostname.toLowerCase() !== "bitbucket.org")
992
+ return null;
993
+ const parts = parsed.pathname.replace(/\.git\/?$/, "").split("/").filter(Boolean);
994
+ const [workspace, repoSlug] = parts;
995
+ if (!workspace || !repoSlug)
996
+ return null;
997
+ return { workspace: decodeURIComponent(workspace), repoSlug: decodeURIComponent(repoSlug) };
998
+ }
999
+ function bitbucketFullName(url) {
1000
+ const parsed = parseBitbucketRepoUrl(url);
1001
+ return parsed ? `${parsed.workspace}/${parsed.repoSlug}` : null;
1002
+ }
1003
+
944
1004
  // src/vcs/index.ts
945
1005
  function detectVcsProvider(url) {
946
1006
  if (isAzureDevOpsUrl(url))
947
1007
  return "azure-devops";
1008
+ if (isBitbucketUrl(url))
1009
+ return "bitbucket";
948
1010
  if (url.includes("gitlab.com") || url.includes("gitlab."))
949
1011
  return "gitlab";
950
1012
  if (url.includes("github.com") || /^[\w.-]+\/[\w.-]+$/.test(url))
@@ -1205,7 +1267,7 @@ var CREDENTIAL_PROVIDER_CHECKERS = {
1205
1267
  devin: (env) => checkDevinCredentials2(env),
1206
1268
  opencode: (env, opts) => checkOpencodeCredentials2(env, opts),
1207
1269
  pi: async (env, opts) => {
1208
- const { checkPiMonoCredentials, listPiOpencodeGoModelIds } = await import("./pi-mono-adapter-mcfkn9vf.js");
1270
+ const { checkPiMonoCredentials, listPiOpencodeGoModelIds } = await import("./pi-mono-adapter-tzps8f38.js");
1209
1271
  return {
1210
1272
  ...await checkPiMonoCredentials(env, opts),
1211
1273
  opencodeGoModels: listPiOpencodeGoModelIds()
@@ -1477,7 +1539,7 @@ async function validateProviderCredentials(provider, env = process.env, presence
1477
1539
  latency_ms: Date.now() - startedAt
1478
1540
  };
1479
1541
  }
1480
- const { liveTestCursorKey } = await import("./cursor-adapter-mjv79e4z.js");
1542
+ const { liveTestCursorKey } = await import("./cursor-adapter-yq5xgfcg.js");
1481
1543
  const result = await liveTestCursorKey(apiKey);
1482
1544
  return result.ok ? { ok: true, latency_ms: Date.now() - startedAt } : { ok: false, error: result.error, latency_ms: Date.now() - startedAt };
1483
1545
  }
@@ -2064,7 +2126,8 @@ var CONTINUATION_TASK_TYPES = new Set([
2064
2126
  "github-review",
2065
2127
  "gitlab-comment",
2066
2128
  "gitlab-ci",
2067
- "azure-devops-comment"
2129
+ "azure-devops-comment",
2130
+ "bitbucket-comment"
2068
2131
  ]);
2069
2132
  var ACTIVE_PARENT_STATUSES = new Set(["pending", "in_progress", "offered", "paused"]);
2070
2133
  async function isFirstKickoffTask(task, fetchParentTaskStatus) {
@@ -3436,6 +3499,33 @@ async function updateHarnessVariantMeta(apiUrl, apiKey, taskId, claudeSessionId,
3436
3499
  var vcsDetectedTasks = new Set;
3437
3500
  var vcsCheckTimestamps = new Map;
3438
3501
  var VCS_CHECK_INTERVAL = 60000;
3502
+ async function findBitbucketOpenPullRequest(remoteUrl, branch, opts = {}) {
3503
+ const token = opts.token ?? process.env.BITBUCKET_TOKEN;
3504
+ if (!token)
3505
+ return null;
3506
+ const repo = parseBitbucketRepoUrl(remoteUrl);
3507
+ if (!repo)
3508
+ return null;
3509
+ const query = `source.branch.name="${branch.replace(/["\\]/g, "\\$&")}" AND state="OPEN"`;
3510
+ const url = `https://api.bitbucket.org/2.0/repositories/${encodeURIComponent(repo.workspace)}` + `/${encodeURIComponent(repo.repoSlug)}/pullrequests?q=${encodeURIComponent(query)}&pagelen=1`;
3511
+ try {
3512
+ const res = await (opts.fetchImpl ?? fetch)(url, {
3513
+ headers: { Authorization: `Bearer ${token}`, Accept: "application/json" },
3514
+ signal: AbortSignal.timeout(15000)
3515
+ });
3516
+ if (!res.ok)
3517
+ return null;
3518
+ const body = await res.json();
3519
+ const pr = body.values?.[0];
3520
+ const href = pr?.links?.html?.href;
3521
+ if (typeof pr?.id !== "number" || pr.id <= 0 || typeof href !== "string" || !href) {
3522
+ return null;
3523
+ }
3524
+ return { number: pr.id, url: href };
3525
+ } catch {
3526
+ return null;
3527
+ }
3528
+ }
3439
3529
  async function detectVcsForTask(apiUrl, apiKey, taskId, workingDir) {
3440
3530
  try {
3441
3531
  const isGit = await Bun.$`git -C ${workingDir} rev-parse --is-inside-work-tree`.quiet().text();
@@ -3448,6 +3538,7 @@ async function detectVcsForTask(apiUrl, apiKey, taskId, workingDir) {
3448
3538
  let vcsProvider;
3449
3539
  let prJson;
3450
3540
  let azureRepo = null;
3541
+ let bitbucketRepo = null;
3451
3542
  if (isAzureDevOpsUrl(remoteUrl)) {
3452
3543
  const parsed = parseAzureDevOpsRepoUrl(remoteUrl);
3453
3544
  if (!parsed)
@@ -3459,6 +3550,13 @@ async function detectVcsForTask(apiUrl, apiKey, taskId, workingDir) {
3459
3550
  number: pr.pullRequestId,
3460
3551
  url: `${azureRepo}/pullrequest/${pr.pullRequestId}`
3461
3552
  })));
3553
+ } else if (isBitbucketUrl(remoteUrl)) {
3554
+ bitbucketRepo = bitbucketFullName(remoteUrl);
3555
+ if (!bitbucketRepo)
3556
+ return;
3557
+ vcsProvider = "bitbucket";
3558
+ const pr = await findBitbucketOpenPullRequest(remoteUrl, branch);
3559
+ prJson = JSON.stringify(pr ? [pr] : []);
3462
3560
  } else if (remoteUrl.includes("github.com") || remoteUrl.includes("github")) {
3463
3561
  vcsProvider = "github";
3464
3562
  prJson = (await Bun.$`gh pr list --head ${branch} --json number,url --limit 1`.quiet().text()).trim();
@@ -3477,7 +3575,7 @@ async function detectVcsForTask(apiUrl, apiKey, taskId, workingDir) {
3477
3575
  if (!vcsNumber || !vcsUrl)
3478
3576
  return;
3479
3577
  const repoMatch = remoteUrl.match(/[:/]([^/]+\/[^/.]+?)(?:\.git)?$/);
3480
- const vcsRepo = azureRepo ?? repoMatch?.[1];
3578
+ const vcsRepo = azureRepo ?? bitbucketRepo ?? repoMatch?.[1];
3481
3579
  if (!vcsRepo)
3482
3580
  return;
3483
3581
  const headers = { "Content-Type": "application/json" };
@@ -2,7 +2,7 @@ import {
2
2
  isGrokOpenRouterModel,
3
3
  grokTargetProfile,
4
4
  ACPAdapter2
5
- } from "./cli-v0yrfmdh.js";
5
+ } from "./cli-hadv0725.js";
6
6
  import {
7
7
  getOpenRouterBaseUrl,
8
8
  getOpenRouterAttributionHeaders,
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  registerVolatileSecret,
13
13
  init_secret_scrubber
14
- } from "./cli-xf234ws8.js";
14
+ } from "./cli-n4c8e3s5.js";
15
15
  import {
16
16
  normalizeGrokModel,
17
17
  init_src2