@desplega.ai/agent-swarm 1.173.0 → 2.0.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 (432) hide show
  1. package/README.md +1 -1
  2. package/dist/{acp-adapter-ccm9xrep.js → acp-adapter-sj2g0m84.js} +17 -16
  3. package/dist/{actions-sgeyv08k.js → actions-fegk44gr.js} +39 -34
  4. package/dist/{amp-adapter-gpxp3kc9.js → amp-adapter-ad8ft89x.js} +8 -7
  5. package/dist/{app-km9qnv2f.js → app-kfvgbvzy.js} +18 -14
  6. package/dist/{assistant-5r8tcvvd.js → assistant-z7zdy9ja.js} +40 -35
  7. package/dist/{boot-reembed-swwzdgd7.js → boot-reembed-5c2z0mbe.js} +10 -9
  8. package/dist/{boot-reembed-16rv9843.js → boot-reembed-j8xa181e.js} +10 -9
  9. package/dist/{boot-scrub-sweep-zkr6vkqb.js → boot-scrub-sweep-hnkn3rgt.js} +11 -10
  10. package/dist/{boot-seeds-d8sp49t2.js → boot-seeds-kwjq4d2z.js} +14 -13
  11. package/dist/{claude-adapter-yzzzh8jp.js → claude-adapter-9vmvpvgd.js} +19 -18
  12. package/dist/{claude-managed-adapter-xgxhqrt2.js → claude-managed-adapter-k9qae05j.js} +7 -5
  13. package/dist/{claude-managed-setup-bnmjarjc.js → claude-managed-setup-q54zx5q2.js} +6 -4
  14. package/dist/{claude-sdk-session-4whxere4.js → claude-sdk-session-9jye6cxr.js} +11881 -11472
  15. package/dist/{cli-94b48jhk.js → cli-03gedhng.js} +16 -14
  16. package/dist/{cli-1w0vj3gw.js → cli-1e4b6bzh.js} +7 -7
  17. package/dist/{cli-d603qf86.js → cli-29jc5q7w.js} +10 -8
  18. package/dist/cli-2m1ktfzz.js +17795 -0
  19. package/dist/{cli-x119kdba.js → cli-3dj8k4vy.js} +1 -1
  20. package/dist/{cli-srqq3gc5.js → cli-3fbmmawm.js} +5 -5
  21. package/dist/{cli-gmdajfw5.js → cli-4jxm2qtz.js} +4987 -1708
  22. package/dist/{cli-tadfgd0t.js → cli-5hkm7whv.js} +33 -4
  23. package/dist/{cli-42qhyvwx.js → cli-5t4f29ez.js} +3 -3
  24. package/dist/{cli-7a0sde2x.js → cli-6cagzc96.js} +9 -0
  25. package/dist/cli-6cvfxs8r.js +47 -0
  26. package/dist/{cli-0kxf81jj.js → cli-6jyj59nb.js} +2 -2
  27. package/dist/{cli-w1apjecb.js → cli-6razj6t4.js} +2 -2
  28. package/dist/{cli-anzdk0z4.js → cli-74ahz61x.js} +2 -2
  29. package/dist/{cli-m89t9jdf.js → cli-7x0g4sn1.js} +15416 -16024
  30. package/dist/{cli-yatxqynm.js → cli-9ha6hs2d.js} +1 -290
  31. package/dist/{cli-81r1wjyv.js → cli-9nfx44eh.js} +1 -1
  32. package/dist/cli-9traj3dn.js +638 -0
  33. package/dist/{cli-smcrrmhy.js → cli-agzebbd5.js} +9 -9
  34. package/dist/{cli-na2pxe4f.js → cli-apx87jne.js} +2 -2
  35. package/dist/{cli-rfz2ve55.js → cli-bzszjf2p.js} +2855 -862
  36. package/dist/{cli-c5km5znr.js → cli-c8r3kzzb.js} +1 -1
  37. package/dist/{cli-hsem16hb.js → cli-cgtksawx.js} +7 -4
  38. package/dist/{cli-db3m6zdt.js → cli-d2qr7aj4.js} +1 -1
  39. package/dist/{cli-rfs4vddv.js → cli-d5f9ed5c.js} +5 -5
  40. package/dist/cli-e3g5mbkz.js +776 -0
  41. package/dist/{cli-7jykv7ef.js → cli-e6mpjhed.js} +1 -1
  42. package/dist/{cli-7a93cv8c.js → cli-ee9gtz70.js} +98 -23
  43. package/dist/{cli-3nxdmjrc.js → cli-eejsgvm4.js} +4 -4
  44. package/dist/{cli-fmhj1ehj.js → cli-ef1hg1wv.js} +470 -51
  45. package/dist/cli-f527ce74.js +781 -0
  46. package/dist/{cli-ppy4nnnh.js → cli-f7kr7svz.js} +2 -2
  47. package/dist/cli-hjwmhcg1.js +10622 -0
  48. package/dist/{cli-2bw3w47j.js → cli-hnhtk6cj.js} +1 -1
  49. package/dist/{cli-ywm1azg9.js → cli-hnmhtzvh.js} +6 -4
  50. package/dist/{cli-h7k0xtry.js → cli-hvqbtna4.js} +4 -1256
  51. package/dist/{cli-s8z6x4b4.js → cli-j0pfptdp.js} +218 -102
  52. package/dist/cli-jta2eyzc.js +619 -0
  53. package/dist/{cli-5er5gjbm.js → cli-k382tshb.js} +10 -11
  54. package/dist/{cli-v3zhnxsb.js → cli-k3dp5tpf.js} +2 -2
  55. package/dist/{cli-wd0hz6ah.js → cli-kbrt8gqa.js} +9 -91
  56. package/dist/cli-kceah1eh.js +92 -0
  57. package/dist/{cli-ne7smj1b.js → cli-ke896fcf.js} +10 -10
  58. package/dist/{cli-xc7p7s3g.js → cli-kt6zqg0e.js} +6 -6
  59. package/dist/{cli-wrh08zjd.js → cli-m50t4309.js} +5 -18
  60. package/dist/cli-n2wq4j7m.js +6985 -0
  61. package/dist/{cli-bv2etw2y.js → cli-n3hzg89b.js} +46 -15
  62. package/dist/{cli-tmhsxhb8.js → cli-n5vwg842.js} +23 -6
  63. package/dist/{cli-qm1448f9.js → cli-ne236afy.js} +8 -8
  64. package/dist/{cli-d161g69q.js → cli-p1x85d2t.js} +50 -2
  65. package/dist/{cli-7pz3b7x5.js → cli-przpmdgr.js} +25 -0
  66. package/dist/{cli-0a7mm3zp.js → cli-q0ke1yww.js} +25 -21
  67. package/dist/{cli-e3pmyt39.js → cli-q50942rs.js} +1 -1
  68. package/dist/{cli-r44t9wqc.js → cli-r106725k.js} +2 -2
  69. package/dist/{cli-phcqp1b9.js → cli-r2pnvj8g.js} +2 -2
  70. package/dist/{cli-jpc4r224.js → cli-r62a35ea.js} +19 -3
  71. package/dist/{cli-cd0hv9nh.js → cli-ra0xzggj.js} +2 -2
  72. package/dist/cli-rhs9pz33.js +294 -0
  73. package/dist/{cli-r4fqfpwf.js → cli-s2sp957d.js} +50 -27
  74. package/dist/{cli-1x7da0de.js → cli-s4setq91.js} +8 -8
  75. package/dist/{cli-6thk4jz3.js → cli-se8w6wny.js} +6 -6
  76. package/dist/cli-skxvvpap.js +10140 -0
  77. package/dist/{cli-014vns2y.js → cli-stfs0k5s.js} +208 -525
  78. package/dist/{cli-0p3enk35.js → cli-tqaazemc.js} +9 -1
  79. package/dist/{cli-nwrdx840.js → cli-tr4sxp68.js} +3 -3
  80. package/dist/{cli-r0byd61h.js → cli-tsde1hdr.js} +15 -15
  81. package/dist/{cli-b07hr3bt.js → cli-txqb9s38.js} +2 -2
  82. package/dist/{cli-6r2f7edk.js → cli-v1yb0rqb.js} +6 -6
  83. package/dist/{cli-saqyage0.js → cli-vatyhshy.js} +179 -27
  84. package/dist/{cli-5wpw4rab.js → cli-vdach5a9.js} +5 -5
  85. package/dist/{cli-7avy4v8w.js → cli-w1q7h2r2.js} +5 -3
  86. package/dist/{cli-rcp5aqdw.js → cli-w7m81tb7.js} +1 -1
  87. package/dist/{cli-c3rk1v0x.js → cli-wayw93nt.js} +3 -3
  88. package/dist/cli-wmgrkscj.js +23254 -0
  89. package/dist/{cli-9xf7fdtp.js → cli-z5jjpaxw.js} +29 -6
  90. package/dist/{cli-451ks6aw.js → cli-zkpks3r3.js} +1 -1
  91. package/dist/cli.js +29 -45
  92. package/dist/{codex-adapter-r3dn4fp5.js → codex-adapter-y81sssk0.js} +15 -14
  93. package/dist/{codex-login-841kv5fk.js → codex-login-f2rcfpp9.js} +3 -2
  94. package/dist/{codex-session-runner-fwt793h4.js → codex-session-runner-8vx4j6a9.js} +15 -14
  95. package/dist/{commands-z8fq9qna.js → commands-kcpvpcrr.js} +11 -10
  96. package/dist/{controller-hq5ggpcp.js → controller-ywrmt6yd.js} +5 -4
  97. package/dist/{controllers-connect-3mf2btyj.js → controllers-connect-kwpvj3rf.js} +42 -37
  98. package/dist/{cursor-adapter-q8pgv5qa.js → cursor-adapter-cehv1qns.js} +7 -6
  99. package/dist/{db-yyhqqrbf.js → db-k8ankj20.js} +12 -11
  100. package/dist/{db-qfpq4bt7.js → db-ww5d7jq3.js} +28 -9
  101. package/dist/{devin-adapter-xgtj680j.js → devin-adapter-x1022qb1.js} +3 -2
  102. package/dist/{dispatcher-x0x7qfcq.js → dispatcher-e8gq5m68.js} +38 -33
  103. package/dist/{docker-f503k9p0.js → docker-ff6y1190.js} +3 -2
  104. package/dist/{dsh-adapter-34etvb5m.js → dsh-adapter-3epjm3af.js} +7 -6
  105. package/dist/{e2b-66xra4az.js → e2b-8ygwhg0f.js} +4 -3
  106. package/dist/{e2b-xwhyj8cw.js → e2b-swhnpw3n.js} +4 -3
  107. package/dist/{event-bus-vjtv82gm.js → event-bus-6axnngdj.js} +3 -2
  108. package/dist/{external-channel-h1fjecwe.js → external-channel-h3359cwn.js} +11 -10
  109. package/dist/{google-generative-ai-szdxbpqg.js → google-generative-ai-g8db7x0f.js} +4 -2
  110. package/dist/{google-vertex-qzw3p36d.js → google-vertex-r2692q0r.js} +4 -2
  111. package/dist/{grok-adapter-e7mr287e.js → grok-adapter-0d4x7gkx.js} +18 -17
  112. package/dist/{handlers-znb9n7d4.js → handlers-an1gzv21.js} +41 -36
  113. package/dist/{heartbeat-bm4qkn8d.js → heartbeat-6dakeb61.js} +43 -38
  114. package/dist/{hook-254r4mza.js → hook-6v6cv6d5.js} +11 -23
  115. package/dist/{hook-xaa3q80s.js → hook-sa5xye4y.js} +12 -11
  116. package/dist/{http-3dgrgp8y.js → http-r7f3eky0.js} +1499 -251
  117. package/dist/index-52j1aja4.js +3465 -0
  118. package/dist/{index-fx3jqq1e.js → index-7ep4gzdk.js} +38 -33
  119. package/dist/index-9gw58n4k.js +193 -0
  120. package/dist/index-9j87mcm8.js +56305 -0
  121. package/dist/index-bsmcresk.js +79424 -0
  122. package/dist/index-mh85qhec.js +475 -0
  123. package/dist/{index-g2byveez.js → index-rmpw9a8q.js} +38 -33
  124. package/dist/{index-2ybk7khy.js → index-s2wxgzr0.js} +468 -683
  125. package/dist/{index-bdsqa799.js → index-v1v6n7hg.js} +43 -38
  126. package/dist/index-we27kd31.js +12810 -0
  127. package/dist/{index-jd7sejm2.js → index-zk96aq1k.js} +10 -9
  128. package/dist/{keepalive-6ywhpja1.js → keepalive-be9vwy5h.js} +12 -11
  129. package/dist/{lead-cw45n21s.js → lead-0861cwrf.js} +61 -56
  130. package/dist/{maintenance-ss1a1ge9.js → maintenance-mzzgc8bn.js} +10 -9
  131. package/dist/{node-fkajaq96.js → node-mn1zs7an.js} +2 -1
  132. package/dist/{oauth-refresh-sweep-3c6f8vyy.js → oauth-refresh-sweep-cpdnfwdj.js} +11 -10
  133. package/dist/{onboard-8hzdhc1k.js → onboard-fh8qs4r3.js} +11 -3
  134. package/dist/{opencode-adapter-qbchbcfz.js → opencode-adapter-nm42wwj8.js} +18 -13
  135. package/dist/{otel-impl-e6mnvc4v.js → otel-impl-x6c1c9g4.js} +242 -868
  136. package/dist/{pi-mono-adapter-3c9g9snh.js → pi-mono-adapter-9n2ya240.js} +244 -106
  137. package/dist/{pricing-refresh-gedkjdw0.js → pricing-refresh-qb0rv0ap.js} +12 -11
  138. package/dist/{rbac-roles-dt4vh1yy.js → rbac-roles-1gzdwbh1.js} +11 -10
  139. package/dist/{rbac-roles-eszdg6pm.js → rbac-roles-3mraey52.js} +12 -11
  140. package/dist/{render-v2-907cy6sa.js → render-v2-agpa45zz.js} +18 -14
  141. package/dist/{resume-42stcaz0.js → resume-x0ydy9s9.js} +25 -21
  142. package/dist/{runtime-qfry88v2.js → runtime-sa2vr16g.js} +2 -2
  143. package/dist/{setup-adbc1c10.js → setup-as9ga0d6.js} +2 -2
  144. package/dist/{virtual-modules-rtmt494q.js → virtual-modules-9gkxqrap.js} +6 -5
  145. package/dist/{work-objects-wpj8ck95.js → work-objects-y5g1y7ev.js} +41 -36
  146. package/dist/{worker-bzdra9rf.js → worker-860c3e38.js} +61 -56
  147. package/dist/{x-qfmygqqv.js → x-m477fr0h.js} +3 -2
  148. package/openapi.json +523 -344
  149. package/package.json +10 -11
  150. package/src/be/config-refs.ts +60 -0
  151. package/src/be/db/page-versions.ts +15 -0
  152. package/src/be/db/runtime.ts +35 -8
  153. package/src/be/db/skill-name-resolution.ts +36 -0
  154. package/src/be/db/tasks/read.ts +230 -0
  155. package/src/be/db/tasks/write.ts +7 -0
  156. package/src/be/db.ts +52 -7
  157. package/src/be/migrations/215_swarm_config_export_to_env.sql +34 -0
  158. package/src/be/migrations/216_task_resolved_effort.sql +5 -0
  159. package/src/be/migrations/217_chat_sdk_state.sql +104 -0
  160. package/src/be/model-catalog-store.ts +5 -1
  161. package/src/be/model-tier-resolution.ts +12 -1
  162. package/src/be/model-validation.ts +5 -2
  163. package/src/be/models-catalog.ts +26 -1
  164. package/src/be/modelsdev-cache.json +198 -63
  165. package/src/be/modelsdev-cache.ts +9 -1
  166. package/src/be/script-credential-broker.ts +39 -2
  167. package/src/be/scripts/run-saved.ts +1 -0
  168. package/src/be/scripts/typecheck.ts +10 -8
  169. package/src/be/seed/runner.ts +13 -1
  170. package/src/be/seed/state-db.ts +5 -0
  171. package/src/be/seed/types.ts +6 -0
  172. package/src/be/seed-pricing.ts +19 -2
  173. package/src/be/seed-scripts/catalog/ops-catalog-audit.inline.ts +1 -1
  174. package/src/be/seed-scripts/catalog/ops-catalog-audit.ts +1 -1
  175. package/src/be/seed-skills/bundled-files.generated.json +0 -18
  176. package/src/be/seed-skills/index.ts +104 -3
  177. package/src/be/swarm-config-guard.ts +52 -0
  178. package/src/cli.tsx +0 -16
  179. package/src/commands/onboard/non-interactive.ts +4 -2
  180. package/src/commands/provider-credentials.ts +52 -6
  181. package/src/commands/runner.ts +190 -54
  182. package/src/e2b/env.ts +5 -0
  183. package/src/extensions/contract-types.generated.ts +1 -1
  184. package/src/extensions/contract.ts +45 -0
  185. package/src/extensions/dispatcher.ts +7 -0
  186. package/src/extensions/post-bridge.ts +40 -0
  187. package/src/github/handlers.ts +11 -4
  188. package/src/heartbeat/templates.ts +8 -5
  189. package/src/hooks/hook.ts +0 -26
  190. package/src/http/all-routes.ts +0 -1
  191. package/src/http/config.ts +36 -17
  192. package/src/http/core.ts +4 -0
  193. package/src/http/index.ts +14 -2
  194. package/src/http/integrations.ts +88 -1
  195. package/src/http/mcp.ts +15 -5
  196. package/src/http/page-proxy.ts +2 -4
  197. package/src/http/pages-public.ts +3 -3
  198. package/src/http/pages.ts +3 -13
  199. package/src/http/poll.ts +28 -68
  200. package/src/http/requested-by.ts +54 -0
  201. package/src/http/scripts.ts +1 -0
  202. package/src/http/stats.ts +1 -30
  203. package/src/http/tasks.ts +61 -5
  204. package/src/http/utils.ts +14 -0
  205. package/src/http/webhooks.ts +159 -1
  206. package/src/http/x.ts +1 -0
  207. package/src/integrations/chat-sdk/adapters.ts +129 -0
  208. package/src/integrations/chat-sdk/attachments.ts +232 -0
  209. package/src/integrations/chat-sdk/background.ts +36 -0
  210. package/src/integrations/chat-sdk/commands.ts +194 -0
  211. package/src/integrations/chat-sdk/config.ts +198 -0
  212. package/src/integrations/chat-sdk/discord-api.ts +63 -0
  213. package/src/integrations/chat-sdk/discord-gateway.ts +185 -0
  214. package/src/integrations/chat-sdk/handlers.ts +28 -0
  215. package/src/integrations/chat-sdk/inbound.ts +426 -0
  216. package/src/integrations/chat-sdk/limits.ts +48 -0
  217. package/src/integrations/chat-sdk/logger.ts +81 -0
  218. package/src/integrations/chat-sdk/outbound.ts +123 -0
  219. package/src/integrations/chat-sdk/relay.ts +172 -0
  220. package/src/integrations/chat-sdk/router.ts +169 -0
  221. package/src/integrations/chat-sdk/runtime.ts +351 -0
  222. package/src/integrations/chat-sdk/schema.ts +245 -0
  223. package/src/integrations/chat-sdk/state.ts +243 -0
  224. package/src/integrations/chat-sdk/status.ts +244 -0
  225. package/src/integrations/chat-sdk/steering.ts +58 -0
  226. package/src/integrations/chat-sdk/teams-origin.ts +77 -0
  227. package/src/integrations/chat-sdk/telegram-api.ts +56 -0
  228. package/src/integrations/chat-sdk/templates.ts +16 -0
  229. package/src/integrations/chat-sdk/test-hooks.ts +37 -0
  230. package/src/integrations/chat-sdk/thread-buffer.ts +100 -0
  231. package/src/integrations/chat-sdk/typing.ts +65 -0
  232. package/src/pages/version.ts +4 -5
  233. package/src/prompts/base-prompt.ts +111 -45
  234. package/src/providers/acp-target-catalog.ts +6 -0
  235. package/src/providers/acp-targets.ts +55 -2
  236. package/src/providers/amp-adapter.ts +1 -1
  237. package/src/providers/claude-adapter.ts +1 -1
  238. package/src/providers/claude-flag-settings.ts +17 -5
  239. package/src/providers/claude-managed-adapter.ts +1 -1
  240. package/src/providers/claude-session-events.ts +6 -1
  241. package/src/providers/dsh-adapter.ts +1 -1
  242. package/src/providers/opencode-adapter.ts +243 -26
  243. package/src/providers/opencode-swarm-plugin.ts +31 -0
  244. package/src/providers/pi-mono-adapter.ts +398 -153
  245. package/src/providers/pricing-sources.md +33 -2
  246. package/src/providers/reasoning-effort.ts +27 -0
  247. package/src/providers/types.ts +6 -2
  248. package/src/rbac/legacy-policy.ts +8 -2
  249. package/src/rbac/permissions.ts +21 -0
  250. package/src/scheduler/scheduler.ts +4 -2
  251. package/src/scripts-runtime/loader.ts +19 -7
  252. package/src/scripts-runtime/sdk-allowlist.ts +8 -6
  253. package/src/scripts-runtime/swarm-sdk.ts +0 -11
  254. package/src/scripts-runtime/types/stdlib.d.ts +27 -15
  255. package/src/scripts-runtime/types/swarm-extension.d.ts +63 -1
  256. package/src/scripts-runtime/types/swarm-sdk.d.ts +27 -15
  257. package/src/server.ts +52 -18
  258. package/src/slack/event-dedup.ts +1 -1
  259. package/src/tasks/additive-buffer.ts +4 -2
  260. package/src/tasks/context-key.ts +60 -1
  261. package/src/tasks/model-pin.ts +67 -0
  262. package/src/tasks/worker-follow-up.ts +4 -31
  263. package/src/tests/acp-adapter.test.ts +42 -0
  264. package/src/tests/api-drain-worker-e2e.test.ts +1 -6
  265. package/src/tests/base-prompt.test.ts +58 -54
  266. package/src/tests/chat-sdk-commands.test.ts +191 -0
  267. package/src/tests/chat-sdk-config.test.ts +334 -0
  268. package/src/tests/chat-sdk-discord-api.test.ts +68 -0
  269. package/src/tests/chat-sdk-discord-gateway.test.ts +252 -0
  270. package/src/tests/chat-sdk-discord-webhook.test.ts +126 -0
  271. package/src/tests/chat-sdk-fields-sync.test.ts +50 -0
  272. package/src/tests/chat-sdk-harness.ts +146 -0
  273. package/src/tests/chat-sdk-inbound.test.ts +363 -0
  274. package/src/tests/chat-sdk-relay.test.ts +470 -0
  275. package/src/tests/chat-sdk-reload.test.ts +128 -0
  276. package/src/tests/chat-sdk-shutdown.test.ts +220 -0
  277. package/src/tests/chat-sdk-slack.test.ts +268 -0
  278. package/src/tests/chat-sdk-state.test.ts +163 -0
  279. package/src/tests/chat-sdk-status-route.test.ts +382 -0
  280. package/src/tests/chat-sdk-teams.test.ts +277 -0
  281. package/src/tests/chat-sdk-tools.test.ts +520 -0
  282. package/src/tests/chat-sdk-typing.test.ts +120 -0
  283. package/src/tests/chat-sdk-webhook-telegram.test.ts +200 -0
  284. package/src/tests/claude-adapter-binary.test.ts +9 -4
  285. package/src/tests/claude-flag-settings.test.ts +11 -3
  286. package/src/tests/claude-managed-adapter.test.ts +1 -1
  287. package/src/tests/claude-sdk-lifecycle.test.ts +9 -3
  288. package/src/tests/claude-thinking-tokens.test.ts +57 -0
  289. package/src/tests/claude-worker-parity.test.ts +2 -7
  290. package/src/tests/config-env-export-chat-sdk.test.ts +11 -0
  291. package/src/tests/config-refs.test.ts +66 -0
  292. package/src/tests/context-key.test.ts +19 -0
  293. package/src/tests/cors-allowlist.test.ts +25 -0
  294. package/src/tests/create-page-tool.test.ts +18 -0
  295. package/src/tests/credential-check.test.ts +139 -0
  296. package/src/tests/credentials.test.ts +21 -0
  297. package/src/tests/db-runtime.test.ts +61 -0
  298. package/src/tests/db-task-read-contract.test.ts +20 -0
  299. package/src/tests/db-task-write-contract.test.ts +10 -0
  300. package/src/tests/docs-index-footprint.test.js +3 -3
  301. package/src/tests/dsh-adapter.test.ts +1 -1
  302. package/src/tests/enabled-capabilities.test.ts +20 -0
  303. package/src/tests/entrypoint-api-readiness.test.ts +14 -8
  304. package/src/tests/entrypoint-config-env-export.test.ts +5 -2
  305. package/src/tests/entrypoint-export-to-env.test.ts +78 -0
  306. package/src/tests/explicit-model-validation.test.ts +105 -1
  307. package/src/tests/extensions-example-route-chat-channel.test.ts +154 -0
  308. package/src/tests/extensions-post-bridge.test.ts +51 -0
  309. package/src/tests/fetch-resolved-env.test.ts +128 -0
  310. package/src/tests/fixtures/chat-sdk/telegram-private-text.json +10 -0
  311. package/src/tests/fixtures/extensions/route-chat-channel-to-agent/hooks.ts +27 -0
  312. package/src/tests/fixtures/extensions/route-chat-channel-to-agent/manifest.json +9 -0
  313. package/src/tests/fixtures/openai-compatible-registry-extension.child.ts +146 -0
  314. package/src/tests/fixtures/runner-legacy-resume-prompt.ts +122 -0
  315. package/src/tests/github-handlers.test.ts +35 -0
  316. package/src/tests/harness-provider-resolution.test.ts +12 -0
  317. package/src/tests/heartbeat-checklist.test.ts +3 -2
  318. package/src/tests/hook-runtime-close.test.ts +0 -2
  319. package/src/tests/http-api-integration.test.ts +0 -25
  320. package/src/tests/migration-046-budgets.test.ts +17 -16
  321. package/src/tests/migration-217-chat-sdk-state.test.ts +113 -0
  322. package/src/tests/model-tier-resolution.test.ts +93 -0
  323. package/src/tests/models-catalog.test.ts +42 -1
  324. package/src/tests/openai-compatible-providers.test.ts +134 -0
  325. package/src/tests/openai-compatible-registry-extension.test.ts +42 -0
  326. package/src/tests/opencode-adapter.test.ts +216 -2
  327. package/src/tests/opencode-helmcode-sdk.test.ts +201 -0
  328. package/src/tests/opencode-shell-env.test.ts +145 -0
  329. package/src/tests/openrouter-base-url.test.ts +101 -151
  330. package/src/tests/page-proxy.test.ts +1 -1
  331. package/src/tests/pages-browser-sdk.test.ts +76 -0
  332. package/src/tests/pages-feedback.test.ts +1 -1
  333. package/src/tests/paused-tasks-requested-by.test.ts +102 -0
  334. package/src/tests/pi-custom-provider-fake-server.test.ts +442 -0
  335. package/src/tests/pi-mono-adapter.test.ts +385 -5
  336. package/src/tests/pi-shell-env.test.ts +170 -0
  337. package/src/tests/prompt-template-remaining.test.ts +35 -0
  338. package/src/tests/rbac-engine.test.ts +11 -3
  339. package/src/tests/runner-exit-after-tasks.test.ts +0 -4
  340. package/src/tests/runner-legacy-resume-prompt.test.ts +64 -0
  341. package/src/tests/script-connections.test.ts +2 -0
  342. package/src/tests/scripts-http.test.ts +201 -1
  343. package/src/tests/scripts-only-gating.test.ts +2 -3
  344. package/src/tests/scripts-runtime.test.ts +58 -40
  345. package/src/tests/secret-scrubber.test.ts +86 -0
  346. package/src/tests/seed-skills-bundled-files.test.ts +45 -53
  347. package/src/tests/seed-skills-retire.test.ts +182 -0
  348. package/src/tests/send-task-requester-gate.test.ts +58 -0
  349. package/src/tests/session-cost-recompute-unit.test.ts +46 -0
  350. package/src/tests/skill-get-name-resolution.test.ts +137 -0
  351. package/src/tests/sonnet-5-5-registry.test.ts +9 -1
  352. package/src/tests/swarm-config-export-to-env.test.ts +267 -0
  353. package/src/tests/swarm-config-reserved-keys.test.ts +16 -0
  354. package/src/tests/swarm-diff.test.ts +1 -1
  355. package/src/tests/task-model-effort-rerun.test.ts +164 -0
  356. package/src/tests/task-session-prompts.test.ts +132 -0
  357. package/src/tests/task-tool-manifest.test.ts +14 -0
  358. package/src/tests/task-tools-ctx.test.ts +2 -0
  359. package/src/tests/tool-annotations.test.ts +6 -6
  360. package/src/tests/ui-logs-parser.test.ts +43 -0
  361. package/src/tests/used-by-route.test.ts +6 -0
  362. package/src/tests/vercel-ai-gateway.test.ts +149 -0
  363. package/src/tests/workflow-swarm-script.test.ts +38 -0
  364. package/src/tests/workflow-wait-filter.test.ts +5 -3
  365. package/src/tools/chat-access.ts +41 -0
  366. package/src/tools/chat-open-dm.ts +59 -0
  367. package/src/tools/chat-post.ts +74 -0
  368. package/src/tools/chat-read-thread.ts +100 -0
  369. package/src/tools/chat-reply.ts +75 -0
  370. package/src/tools/create-page.ts +3 -13
  371. package/src/tools/model-catalog/index.ts +2 -1
  372. package/src/tools/register-chat-channel.ts +139 -0
  373. package/src/tools/send-task.ts +24 -0
  374. package/src/tools/skills/skill-get.ts +17 -9
  375. package/src/tools/swarm-config/get-config.ts +2 -1
  376. package/src/tools/swarm-config/list-config.ts +2 -1
  377. package/src/tools/swarm-config/set-config.ts +16 -3
  378. package/src/tools/tool-config.ts +8 -6
  379. package/src/types.ts +12 -2
  380. package/src/utils/config-env-export.ts +74 -0
  381. package/src/utils/credentials.test.ts +92 -0
  382. package/src/utils/credentials.ts +52 -4
  383. package/src/utils/harness-provider.ts +15 -6
  384. package/src/utils/runtime-model-catalog.ts +11 -1
  385. package/src/utils/secret-scrubber.ts +71 -2
  386. package/src/utils/task-tool-manifest.ts +19 -2
  387. package/src/workflows/executors/swarm-script.ts +1 -0
  388. package/templates/skills/agent-browser/SKILL.md +1 -1
  389. package/templates/skills/agent-browser/content.md +1 -1
  390. package/templates/skills/apps/SKILL.md +8 -1
  391. package/templates/skills/apps/content.md +8 -1
  392. package/templates/skills/chat-sdk/config.json +14 -0
  393. package/templates/skills/chat-sdk/content.md +84 -0
  394. package/templates/skills/composio-gmail/content.md +7 -0
  395. package/templates/skills/composio-google-docs/content.md +1 -1
  396. package/templates/skills/email-domain-health/config.json +14 -0
  397. package/templates/skills/email-domain-health/content.md +131 -0
  398. package/templates/skills/kv-storage/content.md +2 -2
  399. package/templates/skills/pages/content.md +8 -10
  400. package/templates/skills/swarm-extensions/content.md +2 -0
  401. package/templates/skills/swarm-scripts/SKILL.md +4 -2
  402. package/templates/skills/swarm-scripts/config.json +1 -1
  403. package/templates/skills/swarm-scripts/content.md +4 -2
  404. package/templates/skills/workflow-iterate/content.md +38 -0
  405. package/dist/artifact-eczsknc3.js +0 -3843
  406. package/dist/cli-bd957dgb.js +0 -153
  407. package/dist/cli-q51yprfq.js +0 -1104
  408. package/dist/cli-t1ze64h3.js +0 -811
  409. package/dist/cli-tcc4wd5d.js +0 -56471
  410. package/dist/index-9ch1n761.js +0 -1102
  411. package/src/artifact-sdk/index.ts +0 -2
  412. package/src/artifact-sdk/localtunnel.d.ts +0 -20
  413. package/src/artifact-sdk/port.ts +0 -12
  414. package/src/artifact-sdk/server.ts +0 -183
  415. package/src/artifact-sdk/tunnel.ts +0 -19
  416. package/src/commands/artifact.ts +0 -249
  417. package/src/http/ecosystem.ts +0 -77
  418. package/src/tests/artifact-commands.test.ts +0 -92
  419. package/src/tests/artifact-sdk.test.ts +0 -793
  420. package/src/tests/register-service-security.test.ts +0 -194
  421. package/src/tools/list-services.ts +0 -107
  422. package/src/tools/register-service.ts +0 -177
  423. package/src/tools/unregister-service.ts +0 -73
  424. package/src/tools/update-service-status.ts +0 -96
  425. package/templates/skills/artifacts/config.json +0 -14
  426. package/templates/skills/artifacts/content.md +0 -344
  427. package/templates/skills/artifacts/files/examples/approval-flow.ts +0 -34
  428. package/templates/skills/artifacts/files/examples/hono-dashboard.ts +0 -31
  429. package/templates/skills/artifacts/files/examples/multi-artifact.ts +0 -20
  430. package/templates/skills/artifacts/files/examples/static-report.sh +0 -17
  431. /package/src/{artifact-sdk → pages}/browser-sdk.ts +0 -0
  432. /package/src/{artifact-sdk → pages}/feedback-overlay.ts +0 -0
@@ -1,30 +1,27 @@
1
1
  import {
2
- applyOpenRouterBaseUrlOverride
3
- } from "./cli-saqyage0.js";
4
- import {
5
- ACP_TARGET_IDS,
6
- getAcpTargetCatalogEntry,
7
- isAcpTarget
8
- } from "./cli-7a0sde2x.js";
2
+ applyOpenRouterBaseUrlOverride,
3
+ buildOpenAICompatibleProviderBlock
4
+ } from "./cli-vatyhshy.js";
9
5
  import {
10
6
  fetchInstalledMcpServers
11
7
  } from "./cli-tng3131n.js";
12
8
  import {
13
9
  clampContextPercent,
14
10
  getContextWindowSize
15
- } from "./cli-7avy4v8w.js";
11
+ } from "./cli-w1q7h2r2.js";
12
+ import {
13
+ ACP_TARGET_IDS,
14
+ getAcpTargetCatalogEntry,
15
+ isAcpTarget
16
+ } from "./cli-6cagzc96.js";
16
17
  import {
17
18
  applyReasoningEffort
18
- } from "./cli-tmhsxhb8.js";
19
+ } from "./cli-n5vwg842.js";
19
20
  import {
20
21
  detachedProcessGroup,
21
22
  registerProcessGroup,
22
23
  terminateProcessGroup
23
24
  } from "./cli-zt3w1cn1.js";
24
- import {
25
- init_src,
26
- normalizeGrokModel
27
- } from "./cli-014vns2y.js";
28
25
  import {
29
26
  _null,
30
27
  array,
@@ -45,11 +42,18 @@ import {
45
42
  import {
46
43
  init_package,
47
44
  package_default
48
- } from "./cli-5er5gjbm.js";
45
+ } from "./cli-k382tshb.js";
49
46
  import {
50
47
  init_secret_scrubber,
51
48
  scrubSecrets
52
- } from "./cli-d161g69q.js";
49
+ } from "./cli-p1x85d2t.js";
50
+ import {
51
+ baseUrlOverride,
52
+ init_src,
53
+ normalizeGrokModel,
54
+ providerBaseUrl,
55
+ providerForModel
56
+ } from "./cli-e3g5mbkz.js";
53
57
 
54
58
  // node_modules/@agentclientprotocol/sdk/dist/schema/index.js
55
59
  var AGENT_METHODS = {
@@ -4886,9 +4890,36 @@ function withOpencodeConfig(env, model) {
4886
4890
  }
4887
4891
  if (model.trim())
4888
4892
  value.model = model.trim();
4893
+ withCustomProviderBlock(value, model.trim(), env);
4889
4894
  applyOpenRouterBaseUrlOverride(value, env);
4890
4895
  env[key] = JSON.stringify(value);
4891
4896
  }
4897
+ function withCustomProviderBlock(config, model, env) {
4898
+ const provider = providerForModel(model);
4899
+ if (!provider)
4900
+ return;
4901
+ const existing = config.provider?.[provider.id];
4902
+ if (provider.catalog !== "registry") {
4903
+ const baseURL = baseUrlOverride(provider, env);
4904
+ if (!baseURL)
4905
+ return;
4906
+ config.provider = {
4907
+ ...config.provider,
4908
+ [provider.id]: { ...existing, options: { baseURL, ...existing?.options } }
4909
+ };
4910
+ return;
4911
+ }
4912
+ const block = buildOpenAICompatibleProviderBlock(provider, `{env:${provider.envVar}}`, model.slice(provider.id.length + 1), providerBaseUrl(provider, env));
4913
+ config.provider = {
4914
+ ...config.provider,
4915
+ [provider.id]: {
4916
+ ...block,
4917
+ ...existing,
4918
+ options: { ...block.options, ...existing?.options },
4919
+ models: { ...block.models, ...existing?.models }
4920
+ }
4921
+ };
4922
+ }
4892
4923
  function parseCommand(command, args) {
4893
4924
  const trimmed = command.trim();
4894
4925
  if (!trimmed) {
@@ -1,14 +1,16 @@
1
+ import {
2
+ init_runtime_model_catalog,
3
+ runtimeCatalogModel,
4
+ runtimeCatalogSection
5
+ } from "./cli-stfs0k5s.js";
1
6
  import {
2
7
  claudeCatalogModelId,
3
8
  cursorCatalogRef,
4
9
  dshCatalogRef,
5
10
  grokCatalogRef,
6
- init_runtime_model_catalog,
7
11
  init_src,
8
- reasoningLevelsFor,
9
- runtimeCatalogModel,
10
- runtimeCatalogSection
11
- } from "./cli-014vns2y.js";
12
+ reasoningLevelsFor
13
+ } from "./cli-e3g5mbkz.js";
12
14
 
13
15
  // src/providers/reasoning-effort.ts
14
16
  init_src();
@@ -128,5 +130,20 @@ function applyReasoningEffort(harness, model, level) {
128
130
  }
129
131
  }
130
132
  }
133
+ var REASONING_HARNESSES = new Set([
134
+ "claude",
135
+ "codex",
136
+ "pi",
137
+ "opencode",
138
+ "dsh",
139
+ "cursor",
140
+ "amp",
141
+ "grok"
142
+ ]);
143
+ function effectiveReasoningEffort(harness, model, level) {
144
+ if (!level || !REASONING_HARNESSES.has(harness))
145
+ return null;
146
+ return applyReasoningEffort(harness, model, level).kind === "noop" ? null : level;
147
+ }
131
148
 
132
- export { reasoningCapability, applyReasoningEffort };
149
+ export { reasoningCapability, applyReasoningEffort, effectiveReasoningEffort };
@@ -5,12 +5,12 @@ import {
5
5
  instantFlush,
6
6
  requestSlackThreadSteering,
7
7
  wasEventSeen
8
- } from "./cli-rfs4vddv.js";
8
+ } from "./cli-d5f9ed5c.js";
9
9
  import {
10
10
  enrichSlackUserEmail,
11
11
  resolveSlackUserId,
12
12
  rewriteSlackMentions
13
- } from "./cli-c3rk1v0x.js";
13
+ } from "./cli-wayw93nt.js";
14
14
  import {
15
15
  TaskCreationBlockedError,
16
16
  broadcastMatches,
@@ -23,7 +23,7 @@ import {
23
23
  hasOtherUserMention,
24
24
  notifySlackFileFailures,
25
25
  routeMessage
26
- } from "./cli-rfz2ve55.js";
26
+ } from "./cli-bzszjf2p.js";
27
27
  import {
28
28
  ackSlackMessage,
29
29
  buildTreeBlocks,
@@ -34,14 +34,14 @@ import {
34
34
  noteSlackInboundSideEffect,
35
35
  registerTreeMessage,
36
36
  reportSlackInboundFailure
37
- } from "./cli-tcc4wd5d.js";
37
+ } from "./cli-skxvvpap.js";
38
38
  import {
39
39
  getChannelBlockReason,
40
40
  invalidateChannelExternality,
41
41
  isBlockExternalEnabled,
42
42
  leaveExternalChannel,
43
43
  shouldBlockChannel
44
- } from "./cli-v3zhnxsb.js";
44
+ } from "./cli-k3dp5tpf.js";
45
45
  import {
46
46
  getAgentById,
47
47
  getAgentWorkingOnThread,
@@ -54,7 +54,7 @@ import {
54
54
  isExtensionAgent,
55
55
  reactionName,
56
56
  slackContextKey
57
- } from "./cli-fmhj1ehj.js";
57
+ } from "./cli-ef1hg1wv.js";
58
58
  import {
59
59
  init_resolver,
60
60
  resolveTemplate
@@ -68,7 +68,7 @@ import {
68
68
  import {
69
69
  init_event_bus,
70
70
  workflowEventBus
71
- } from "./cli-81r1wjyv.js";
71
+ } from "./cli-9nfx44eh.js";
72
72
  import {
73
73
  init_env_flag,
74
74
  isEnvFlagEnabled
@@ -76,7 +76,7 @@ import {
76
76
  import {
77
77
  init_secret_scrubber,
78
78
  scrubSecrets
79
- } from "./cli-d161g69q.js";
79
+ } from "./cli-p1x85d2t.js";
80
80
  import {
81
81
  __callDispose,
82
82
  __using
@@ -1,3 +1,7 @@
1
+ import {
2
+ init_src,
3
+ openAICompatibleKeyVars
4
+ } from "./cli-e3g5mbkz.js";
1
5
  import {
2
6
  __esm
3
7
  } from "./cli-bc05qbss.js";
@@ -2455,6 +2459,37 @@ function scrubObject(value, seen = new WeakSet) {
2455
2459
  }
2456
2460
  return out;
2457
2461
  }
2462
+ function createValueScrubber(entries) {
2463
+ const names = new Map;
2464
+ for (const { value, name } of entries) {
2465
+ if (!value)
2466
+ continue;
2467
+ for (const form of escapedForms(value))
2468
+ if (!names.has(form))
2469
+ names.set(form, name);
2470
+ }
2471
+ if (names.size === 0)
2472
+ return { text: (text2) => text2, object: (value) => value };
2473
+ const pattern = [...names.keys()].sort((a, b) => b.length - a.length).map(escapeRegExp).join("|");
2474
+ const re = new RegExp(pattern, "g");
2475
+ const text = (input) => input.replace(re, (match) => `[REDACTED:${names.get(match) ?? "secret"}]`);
2476
+ const object = (value, seen = new WeakSet) => {
2477
+ if (typeof value === "string")
2478
+ return text(value);
2479
+ if (value === null || typeof value !== "object")
2480
+ return value;
2481
+ if (seen.has(value))
2482
+ return "[Circular]";
2483
+ seen.add(value);
2484
+ if (Array.isArray(value))
2485
+ return value.map((item) => object(item, seen));
2486
+ return Object.fromEntries(Object.entries(value).map(([key, child]) => [
2487
+ text(key),
2488
+ object(child, seen)
2489
+ ]));
2490
+ };
2491
+ return { text, object: (value) => object(value) };
2492
+ }
2458
2493
  function refreshSecretScrubberCache() {
2459
2494
  cache = null;
2460
2495
  }
@@ -2468,6 +2503,17 @@ function registerVolatileSecret(value, name) {
2468
2503
  volatileGeneration++;
2469
2504
  }
2470
2505
  }
2506
+ function registerEnvSecrets(env) {
2507
+ for (const [key, value] of Object.entries(env)) {
2508
+ if (!value || !isSensitiveKey(key))
2509
+ continue;
2510
+ registerVolatileSecret(value, key);
2511
+ if (!value.includes(","))
2512
+ continue;
2513
+ for (const member of value.split(","))
2514
+ registerVolatileSecret(member.trim(), key);
2515
+ }
2516
+ }
2471
2517
  function unregisterVolatileSecret(name) {
2472
2518
  for (const [value, registeredName] of volatileSecrets) {
2473
2519
  if (registeredName !== name)
@@ -2483,8 +2529,9 @@ function registerSensitiveKeyName(key) {
2483
2529
  sensitiveKeyVerdicts.clear();
2484
2530
  cache = null;
2485
2531
  }
2486
- var SCRUBBER_RULES_VERSION = 6, SENSITIVE_KEY_EXACT, SENSITIVE_KEY_SUFFIXES, NON_SECRET_EXCEPTIONS, MIN_VALUE_LENGTH = 12, QUOTE_EOL, JSON_DQ, RAW_DQ, SQ, BARE, ASSIGNMENT_RE, LINE_START, LINE_END, LINE_VALUE, INI_ASSIGNMENT_RE, YAML_KEY_RE, JSON_KEY, JSON_KEY_RE, ESCAPED_JSON_KEY_RE, TOKEN68, HEADER_SEP, AUTH_HEADER_RE, API_KEY_HEADER_RE, CURL_PASSWORD_RE, CURL_USER_RE, URL_USERINFO_RE, PEM_RE, PEM_MARKER = "[REDACTED:private_key]", TB, TOKEN_REGEXES, gitleaks = null, gitleaksPassEnabled = true, cache = null, matcher = null, volatileSecrets, volatileGeneration = 0, registeredSensitiveKeys, sensitiveKeyVerdicts, MAX_KEY_VERDICTS = 4096;
2532
+ var SCRUBBER_RULES_VERSION = 8, SENSITIVE_KEY_EXACT, SENSITIVE_KEY_SUFFIXES, NON_SECRET_EXCEPTIONS, MIN_VALUE_LENGTH = 12, QUOTE_EOL, JSON_DQ, RAW_DQ, SQ, BARE, ASSIGNMENT_RE, LINE_START, LINE_END, LINE_VALUE, INI_ASSIGNMENT_RE, YAML_KEY_RE, JSON_KEY, JSON_KEY_RE, ESCAPED_JSON_KEY_RE, TOKEN68, HEADER_SEP, AUTH_HEADER_RE, API_KEY_HEADER_RE, CURL_PASSWORD_RE, CURL_USER_RE, URL_USERINFO_RE, PEM_RE, PEM_MARKER = "[REDACTED:private_key]", TB, TOKEN_REGEXES, gitleaks = null, gitleaksPassEnabled = true, cache = null, matcher = null, volatileSecrets, volatileGeneration = 0, registeredSensitiveKeys, sensitiveKeyVerdicts, MAX_KEY_VERDICTS = 4096;
2487
2533
  var init_secret_scrubber = __esm(() => {
2534
+ init_src();
2488
2535
  init_secret_rules_generated();
2489
2536
  SENSITIVE_KEY_EXACT = new Set([
2490
2537
  "API_KEY",
@@ -2497,6 +2544,7 @@ var init_secret_scrubber = __esm(() => {
2497
2544
  "ANTHROPIC_API_KEY",
2498
2545
  "OPENAI_API_KEY",
2499
2546
  "OPENROUTER_API_KEY",
2547
+ ...openAICompatibleKeyVars(),
2500
2548
  "SLACK_BOT_TOKEN",
2501
2549
  "SLACK_SIGNING_SECRET",
2502
2550
  "SLACK_CLIENT_SECRET",
@@ -2659,4 +2707,4 @@ var init_secret_scrubber = __esm(() => {
2659
2707
  sensitiveKeyVerdicts = new Map;
2660
2708
  });
2661
2709
 
2662
- export { SCRUBBER_RULES_VERSION, isSensitiveKey, scrubSecrets, findSecretsIn, scrubObject, refreshSecretScrubberCache, registerVolatileSecret, unregisterVolatileSecret, registerSensitiveKeyName, init_secret_scrubber };
2710
+ export { SCRUBBER_RULES_VERSION, isSensitiveKey, scrubSecrets, findSecretsIn, scrubObject, createValueScrubber, refreshSecretScrubberCache, registerVolatileSecret, registerEnvSecrets, unregisterVolatileSecret, registerSensitiveKeyName, init_secret_scrubber };
@@ -92,6 +92,10 @@ var init_permissions = __esm(() => {
92
92
  description: "Mutate a task's filesystem artifacts and attachments.",
93
93
  namespace: "task"
94
94
  },
95
+ "task.parent.attach": {
96
+ description: "Create a task under an existing parent task. The child inherits the parent's thread context (contextKey, Slack thread, requester).",
97
+ namespace: "task"
98
+ },
95
99
  "task.progress.write": {
96
100
  description: "Write a task's progress, status, or output (its assignee, a lead, a human, or anyone while unassigned).",
97
101
  namespace: "task"
@@ -132,6 +136,22 @@ var init_permissions = __esm(() => {
132
136
  description: "Register or unregister a Kapso inbound number.",
133
137
  namespace: "integration"
134
138
  },
139
+ "integration.chat.manage": {
140
+ description: "Register or unregister a Chat SDK channel route.",
141
+ namespace: "integration"
142
+ },
143
+ "integration.chat.post": {
144
+ description: "Post to a Chat SDK thread or channel other than the thread of the current task.",
145
+ namespace: "integration"
146
+ },
147
+ "integration.chat.read": {
148
+ description: "Read a Chat SDK thread other than the thread of the current task.",
149
+ namespace: "integration"
150
+ },
151
+ "integration.chat.dm": {
152
+ description: "Open a direct-message thread with a user on a Chat SDK adapter.",
153
+ namespace: "integration"
154
+ },
135
155
  "integration.slack.post": {
136
156
  description: "Post to a direct Slack channel.",
137
157
  namespace: "integration"
@@ -564,6 +584,7 @@ var init_legacy_policy = __esm(() => {
564
584
  "task.steer.own": requesterOwnsTask,
565
585
  "task.action.own": requesterOwnsTask,
566
586
  "task.fs.mutate": taskFsMutate,
587
+ "task.parent.attach": taskFsMutate,
567
588
  "task.progress.write": taskProgressWrite,
568
589
  "favorite.write.own": anyAuthenticated,
569
590
  "memory.learning.inject": leadOnly,
@@ -574,6 +595,10 @@ var init_legacy_policy = __esm(() => {
574
595
  "channel.delete": leadOnly,
575
596
  "repo.merge-policy.write": leadOrOperatorOrUser,
576
597
  "integration.kapso.manage": leadOnly,
598
+ "integration.chat.manage": leadOnly,
599
+ "integration.chat.post": leadOnly,
600
+ "integration.chat.read": leadOnly,
601
+ "integration.chat.dm": leadOnly,
577
602
  "integration.slack.post": leadOnly,
578
603
  "integration.slack.read": leadOnly,
579
604
  "integration.slack.thread.start": leadOnly,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  runStopHookSessionSummarySubprocess
3
- } from "./cli-wrh08zjd.js";
3
+ } from "./cli-m50t4309.js";
4
+ import {
5
+ fetchInstalledMcpServers
6
+ } from "./cli-tng3131n.js";
4
7
  import {
5
8
  buildOtelTraceparentEnv,
6
9
  isHarnessOtelEnabled
7
10
  } from "./cli-q2j38vre.js";
8
- import {
9
- fetchInstalledMcpServers
10
- } from "./cli-tng3131n.js";
11
11
  import {
12
12
  CTX_MODE_NUDGE_EVERY
13
13
  } from "./cli-zm7njwzd.js";
@@ -19,7 +19,7 @@ import {
19
19
  clampContextPercent,
20
20
  computeContextUsedUnified,
21
21
  getContextWindowSize
22
- } from "./cli-7avy4v8w.js";
22
+ } from "./cli-w1q7h2r2.js";
23
23
  import {
24
24
  isClaudeBridgeEffective,
25
25
  resolveClaudeTransport
@@ -32,7 +32,7 @@ import {
32
32
  } from "./cli-2pdaysab.js";
33
33
  import {
34
34
  applyReasoningEffort
35
- } from "./cli-tmhsxhb8.js";
35
+ } from "./cli-n5vwg842.js";
36
36
  import {
37
37
  require_src
38
38
  } from "./cli-knd276ed.js";
@@ -47,12 +47,12 @@ import {
47
47
  import {
48
48
  init_file_lock,
49
49
  withFileLock
50
- } from "./cli-r4fqfpwf.js";
50
+ } from "./cli-s2sp957d.js";
51
51
  import {
52
52
  CLAUDE_CREDENTIALS_HINT,
53
53
  init_credentials,
54
54
  validateClaudeCredentials
55
- } from "./cli-tadfgd0t.js";
55
+ } from "./cli-5hkm7whv.js";
56
56
  import {
57
57
  deriveDefaultRoute,
58
58
  init_src,
@@ -70,7 +70,7 @@ import {
70
70
  import {
71
71
  init_secret_scrubber,
72
72
  scrubSecrets
73
- } from "./cli-d161g69q.js";
73
+ } from "./cli-p1x85d2t.js";
74
74
  import {
75
75
  __require,
76
76
  __toESM
@@ -93,8 +93,8 @@ import {
93
93
  utimes,
94
94
  writeFile
95
95
  } from "node:fs/promises";
96
- import { homedir } from "node:os";
97
- import { dirname, join, resolve as resolve2 } from "node:path";
96
+ import { homedir as homedir2 } from "node:os";
97
+ import { dirname, join as join2, resolve as resolve2 } from "node:path";
98
98
  import { promisify } from "node:util";
99
99
  init_credentials();
100
100
  init_env_flag();
@@ -170,10 +170,14 @@ class ClaudeBackgroundKeepalive {
170
170
  // src/providers/claude-flag-settings.ts
171
171
  init_secret_scrubber();
172
172
  import { readFileSync } from "node:fs";
173
- import { resolve } from "node:path";
173
+ import { homedir } from "node:os";
174
+ import { join, resolve } from "node:path";
174
175
  var WORKSPACE_CLAUDE_MD_EXCLUDE = "/workspace/CLAUDE.md";
176
+ function userClaudeMdExclude(home = process.env.HOME ?? homedir()) {
177
+ return join(home, ".claude", "CLAUDE.md");
178
+ }
175
179
  function claudeFlagSettings() {
176
- return { claudeMdExcludes: [WORKSPACE_CLAUDE_MD_EXCLUDE] };
180
+ return { claudeMdExcludes: [WORKSPACE_CLAUDE_MD_EXCLUDE, userClaudeMdExclude()] };
177
181
  }
178
182
  var SETTINGS_FLAG = "--settings";
179
183
 
@@ -286,7 +290,7 @@ function costFromResult(json, state) {
286
290
  cacheWriteTokens: usage?.cache_creation_input_tokens ?? 0,
287
291
  cacheWrite5mTokens: finiteNumber(cacheCreation?.ephemeral_5m_input_tokens),
288
292
  cacheWrite1hTokens: finiteNumber(cacheCreation?.ephemeral_1h_input_tokens),
289
- thinkingTokens: usage?.thinking_input_tokens ?? 0,
293
+ thinkingTokens: tokenCount(usage?.output_tokens_details?.thinking_tokens) ?? tokenCount(usage?.thinking_input_tokens) ?? 0,
290
294
  models,
291
295
  durationMs: json.duration_ms || 0,
292
296
  numTurns: json.num_turns ?? null,
@@ -520,8 +524,8 @@ function withClaudeBridgeAuthArgs(argv, sourceEnv) {
520
524
  return [...argv];
521
525
  }
522
526
  var execFileAsync = promisify(execFile);
523
- async function preseedClaudeTrustDialog(dirs, homeDir = process.env.HOME ?? homedir()) {
524
- const claudeJsonPath = join(homeDir, ".claude.json");
527
+ async function preseedClaudeTrustDialog(dirs, homeDir = process.env.HOME ?? homedir2()) {
528
+ const claudeJsonPath = join2(homeDir, ".claude.json");
525
529
  const seed = async () => {
526
530
  for (let attempt = 1;; attempt++) {
527
531
  await withClaudeJsonLock(claudeJsonPath, () => seedTrustLocked(claudeJsonPath, dirs));
@@ -665,7 +669,7 @@ async function resolveClaudeTrustDirs(cwd) {
665
669
  if (configured)
666
670
  main = resolve2(path, configured);
667
671
  main = await realpath(main);
668
- if (await stat(join(main, ".git")).then(() => true, () => false)) {
672
+ if (await stat(join2(main, ".git")).then(() => true, () => false)) {
669
673
  if (!dirs.includes(main))
670
674
  dirs.push(main);
671
675
  }
@@ -701,7 +705,7 @@ async function createSessionMcpConfig(cwd, taskId, installedServers, contextKey)
701
705
  const mcpJsonPaths = [];
702
706
  let searchDir = cwd;
703
707
  while (true) {
704
- const candidate = join(searchDir, ".mcp.json");
708
+ const candidate = join2(searchDir, ".mcp.json");
705
709
  if (await Bun.file(candidate).exists()) {
706
710
  mcpJsonPaths.push(candidate);
707
711
  }
@@ -832,7 +836,7 @@ function getSystemPromptFilePath(taskId) {
832
836
  async function resolveClaudePrompt(prompt, home, onInline) {
833
837
  const resolved = await resolveSlashSkillPrompt(prompt, {
834
838
  providerLabel: "claude",
835
- skillsDir: join(home, ".claude", "skills"),
839
+ skillsDir: join2(home, ".claude", "skills"),
836
840
  stripFrontmatter: true,
837
841
  emit: (event) => {
838
842
  if (event.type === "raw_stderr")
@@ -1176,7 +1180,7 @@ class ClaudeAdapter {
1176
1180
  const sourceEnv = withClaudeRouteEnv(config.env || process.env);
1177
1181
  const sessionConfig = {
1178
1182
  ...config,
1179
- prompt: await resolveClaudePrompt(config.prompt, process.env.HOME ?? homedir(), config.onPromptSkill)
1183
+ prompt: await resolveClaudePrompt(config.prompt, process.env.HOME ?? homedir2(), config.onPromptSkill)
1180
1184
  };
1181
1185
  const transport = resolveClaudeTransport(sourceEnv);
1182
1186
  const credType = validateClaudeCredentials(sourceEnv);
@@ -1190,7 +1194,7 @@ class ClaudeAdapter {
1190
1194
  if (transport === "sdk" && isClaudeBridgeEffective(sourceEnv)) {
1191
1195
  throw new Error("CLAUDE_TRANSPORT=sdk cannot run with an effective Claude Bridge configuration. Select CLI transport or disable the bridge.");
1192
1196
  }
1193
- const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-4whxere4.js") : undefined;
1197
+ const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-9jye6cxr.js") : undefined;
1194
1198
  claudeSdk?.validateClaudeSdkAdditionalArgs([
1195
1199
  ...claudeBinaryArgv.slice(1),
1196
1200
  ...config.additionalArgs ?? []
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_secret_scrubber,
3
3
  scrubSecrets
4
- } from "./cli-d161g69q.js";
4
+ } from "./cli-p1x85d2t.js";
5
5
 
6
6
  // src/providers/devin-adapter.ts
7
7
  init_secret_scrubber();
@@ -795,7 +795,7 @@ GFS4: `);
795
795
  }
796
796
  });
797
797
 
798
- // node_modules/retry/lib/retry_operation.js
798
+ // node_modules/proper-lockfile/node_modules/retry/lib/retry_operation.js
799
799
  var require_retry_operation = __commonJS(function(exports, module) {
800
800
  function RetryOperation(timeouts, options) {
801
801
  if (typeof options === "boolean") {
@@ -924,7 +924,7 @@ var require_retry_operation = __commonJS(function(exports, module) {
924
924
  };
925
925
  });
926
926
 
927
- // node_modules/retry/lib/retry.js
927
+ // node_modules/proper-lockfile/node_modules/retry/lib/retry.js
928
928
  var require_retry = __commonJS(function(exports) {
929
929
  var RetryOperation = require_retry_operation();
930
930
  exports.operation = function(options) {
@@ -6,11 +6,11 @@ import {
6
6
  getSwarmConfigs,
7
7
  init_db1 as init_db,
8
8
  upsertSwarmConfig
9
- } from "./cli-fmhj1ehj.js";
9
+ } from "./cli-ef1hg1wv.js";
10
10
  import {
11
11
  init_secret_scrubber,
12
12
  scrubSecrets
13
- } from "./cli-d161g69q.js";
13
+ } from "./cli-p1x85d2t.js";
14
14
  import {
15
15
  __require
16
16
  } from "./cli-bc05qbss.js";
@@ -1,12 +1,19 @@
1
1
  import {
2
2
  getDb,
3
3
  init_db1 as init_db
4
- } from "./cli-fmhj1ehj.js";
4
+ } from "./cli-ef1hg1wv.js";
5
+ import {
6
+ init_src,
7
+ openAICompatibleProviderIds,
8
+ withRegistryCatalogSections
9
+ } from "./cli-e3g5mbkz.js";
5
10
 
6
11
  // src/be/seed-pricing.ts
12
+ init_src();
7
13
  init_db();
8
14
 
9
15
  // src/be/modelsdev-cache.ts
16
+ init_src();
10
17
  import { readFileSync } from "node:fs";
11
18
  import path from "node:path";
12
19
  var MODELSDEV_CACHE_PATH = path.join("src", "be", "modelsdev-cache.json");
@@ -24,7 +31,7 @@ function loadModelsDevCache() {
24
31
  if (memoized)
25
32
  return memoized;
26
33
  try {
27
- const parsed = JSON.parse(readFileSync(candidate, "utf-8"));
34
+ const parsed = withRegistryCatalogSections(JSON.parse(readFileSync(candidate, "utf-8")));
28
35
  parsedCaches.set(candidate, new WeakRef(parsed));
29
36
  return parsed;
30
37
  } catch {}
@@ -108,7 +115,7 @@ var ANTHROPIC_SHORTNAME_TO_MODELSDEV = {
108
115
  };
109
116
  var ANTHROPIC_SHORTNAME_PRICING_FALLBACKS = {
110
117
  "claude-opus-5-5": { input: 4, output: 20, cache_read: 0.2, cache_write: 5 },
111
- "claude-sonnet-5-5": { input: 2, output: 10, cache_read: 0.2, cache_write: 2.5 },
118
+ "claude-sonnet-5-5": { input: 2, output: 10, cache_read: 0.1, cache_write: 2.5 },
112
119
  "claude-fable-5-1": { input: 10, output: 50, cache_read: 0.25, cache_write: 12.5 },
113
120
  "claude-mythos-5-1": { input: 10, output: 50, cache_read: 0.25, cache_write: 12.5 }
114
121
  };
@@ -261,6 +268,15 @@ function buildModelsDevSeedRows(cache) {
261
268
  add(id, projectCostBlock("gemini", id, model.cost));
262
269
  }
263
270
  }
271
+ for (const provider of openAICompatibleProviderIds()) {
272
+ for (const [id, model] of Object.entries(cache[provider]?.models ?? {})) {
273
+ if (!model?.cost)
274
+ continue;
275
+ const key = `${provider}/${id}`;
276
+ add(key, projectCostBlock("pi", key, model.cost));
277
+ add(key, projectCostBlock("opencode", key, model.cost));
278
+ }
279
+ }
264
280
  return collapseNormalizedIds(sourced);
265
281
  }
266
282
  function buildPricingSeedRows(cache) {
@@ -14,11 +14,11 @@ async function createRuntimeProvider(kind, target = {}) {
14
14
  return new StaticRuntimeProvider;
15
15
  }
16
16
  case "docker": {
17
- const { DockerRuntimeProvider } = await import("./docker-f503k9p0.js");
17
+ const { DockerRuntimeProvider } = await import("./docker-ff6y1190.js");
18
18
  return new DockerRuntimeProvider;
19
19
  }
20
20
  case "e2b": {
21
- const { E2BRuntimeProvider } = await import("./e2b-66xra4az.js");
21
+ const { E2BRuntimeProvider } = await import("./e2b-8ygwhg0f.js");
22
22
  return new E2BRuntimeProvider(target);
23
23
  }
24
24
  case "k8s":