@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
package/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "Agent Swarm API",
5
- "version": "2.4.5",
5
+ "version": "2.5.0",
6
6
  "description": "Multi-agent orchestration API for Claude Code, Codex, and Gemini CLI. Enables task distribution, agent communication, and service discovery.\n\nMCP tools are documented separately in [MCP.md](./MCP.md)."
7
7
  },
8
8
  "servers": [
@@ -166,6 +166,7 @@
166
166
  "github",
167
167
  "gitlab",
168
168
  "azure-devops",
169
+ "bitbucket",
169
170
  "agentmail",
170
171
  "system",
171
172
  "schedule",
@@ -292,7 +293,8 @@
292
293
  "enum": [
293
294
  "github",
294
295
  "gitlab",
295
- "azure-devops"
296
+ "azure-devops",
297
+ "bitbucket"
296
298
  ]
297
299
  },
298
300
  "vcsRepo": {
@@ -29806,6 +29808,7 @@
29806
29808
  "slack",
29807
29809
  "github",
29808
29810
  "gitlab",
29811
+ "bitbucket",
29809
29812
  "linear_oauth",
29810
29813
  "jira_oauth",
29811
29814
  null
@@ -29994,6 +29997,9 @@
29994
29997
  "gitlab": {
29995
29998
  "type": "boolean"
29996
29999
  },
30000
+ "bitbucket": {
30001
+ "type": "boolean"
30002
+ },
29997
30003
  "linear": {
29998
30004
  "type": "boolean"
29999
30005
  },
@@ -30005,6 +30011,7 @@
30005
30011
  "slack",
30006
30012
  "github",
30007
30013
  "gitlab",
30014
+ "bitbucket",
30008
30015
  "linear",
30009
30016
  "jira"
30010
30017
  ]
@@ -30255,6 +30262,7 @@
30255
30262
  "slack",
30256
30263
  "github",
30257
30264
  "gitlab",
30265
+ "bitbucket",
30258
30266
  "linear_oauth",
30259
30267
  "jira_oauth"
30260
30268
  ]
@@ -30800,6 +30808,7 @@
30800
30808
  "slack",
30801
30809
  "github",
30802
30810
  "gitlab",
30811
+ "bitbucket",
30803
30812
  "linear_oauth",
30804
30813
  "jira_oauth",
30805
30814
  null
@@ -30988,6 +30997,9 @@
30988
30997
  "gitlab": {
30989
30998
  "type": "boolean"
30990
30999
  },
31000
+ "bitbucket": {
31001
+ "type": "boolean"
31002
+ },
30991
31003
  "linear": {
30992
31004
  "type": "boolean"
30993
31005
  },
@@ -30999,6 +31011,7 @@
30999
31011
  "slack",
31000
31012
  "github",
31001
31013
  "gitlab",
31014
+ "bitbucket",
31002
31015
  "linear",
31003
31016
  "jira"
31004
31017
  ]
@@ -31560,6 +31573,7 @@
31560
31573
  "github",
31561
31574
  "gitlab",
31562
31575
  "azure-devops",
31576
+ "bitbucket",
31563
31577
  "agentmail",
31564
31578
  "system",
31565
31579
  "schedule",
@@ -31886,6 +31900,7 @@
31886
31900
  "github",
31887
31901
  "gitlab",
31888
31902
  "azure-devops",
31903
+ "bitbucket",
31889
31904
  "agentmail",
31890
31905
  "system",
31891
31906
  "schedule",
@@ -33127,6 +33142,7 @@
33127
33142
  "github",
33128
33143
  "gitlab",
33129
33144
  "azure-devops",
33145
+ "bitbucket",
33130
33146
  "agentmail",
33131
33147
  "system",
33132
33148
  "schedule",
@@ -33998,7 +34014,8 @@
33998
34014
  "enum": [
33999
34015
  "github",
34000
34016
  "gitlab",
34001
- "azure-devops"
34017
+ "azure-devops",
34018
+ "bitbucket"
34002
34019
  ]
34003
34020
  },
34004
34021
  "vcsRepo": {
@@ -48406,6 +48423,70 @@
48406
48423
  "name": "contextKeyPrefix",
48407
48424
  "in": "query"
48408
48425
  },
48426
+ {
48427
+ "schema": {
48428
+ "type": "string"
48429
+ },
48430
+ "required": false,
48431
+ "name": "keyPrefix",
48432
+ "in": "query"
48433
+ },
48434
+ {
48435
+ "schema": {
48436
+ "type": "string"
48437
+ },
48438
+ "required": false,
48439
+ "name": "groupKey",
48440
+ "in": "query"
48441
+ },
48442
+ {
48443
+ "schema": {
48444
+ "type": "string",
48445
+ "enum": [
48446
+ "true",
48447
+ "false"
48448
+ ]
48449
+ },
48450
+ "required": false,
48451
+ "name": "noGroup",
48452
+ "in": "query"
48453
+ },
48454
+ {
48455
+ "schema": {
48456
+ "type": "string",
48457
+ "enum": [
48458
+ "inbox",
48459
+ "later",
48460
+ "done",
48461
+ "unread"
48462
+ ]
48463
+ },
48464
+ "required": false,
48465
+ "name": "triage",
48466
+ "in": "query"
48467
+ },
48468
+ {
48469
+ "schema": {
48470
+ "type": "string",
48471
+ "enum": [
48472
+ "running",
48473
+ "failed",
48474
+ "needs"
48475
+ ]
48476
+ },
48477
+ "required": false,
48478
+ "name": "status",
48479
+ "in": "query"
48480
+ },
48481
+ {
48482
+ "schema": {
48483
+ "type": "string",
48484
+ "minLength": 1
48485
+ },
48486
+ "required": false,
48487
+ "name": "withUserId",
48488
+ "in": "query"
48489
+ },
48409
48490
  {
48410
48491
  "schema": {
48411
48492
  "type": "string",
@@ -48423,10 +48504,13 @@
48423
48504
  "type": "string",
48424
48505
  "enum": [
48425
48506
  "mine",
48426
- "shared"
48427
- ]
48507
+ "shared",
48508
+ "tree"
48509
+ ],
48510
+ "description": "mine: owned sessions. shared: sessions shared with me. tree: Sessions that GET /api/session-tree counts: mine plus shared with me, no ownerless roots. A bypass actor sees every root with tree scope."
48428
48511
  },
48429
48512
  "required": false,
48513
+ "description": "mine: owned sessions. shared: sessions shared with me. tree: Sessions that GET /api/session-tree counts: mine plus shared with me, no ownerless roots. A bypass actor sees every root with tree scope.",
48430
48514
  "name": "scope",
48431
48515
  "in": "query"
48432
48516
  }
@@ -48505,6 +48589,7 @@
48505
48589
  "github",
48506
48590
  "gitlab",
48507
48591
  "azure-devops",
48592
+ "bitbucket",
48508
48593
  "agentmail",
48509
48594
  "system",
48510
48595
  "schedule",
@@ -48654,6 +48739,89 @@
48654
48739
  "cancelled",
48655
48740
  "superseded"
48656
48741
  ]
48742
+ },
48743
+ "readState": {
48744
+ "type": "string",
48745
+ "enum": [
48746
+ "unread",
48747
+ "read",
48748
+ "later",
48749
+ "done"
48750
+ ]
48751
+ },
48752
+ "snoozeUntil": {
48753
+ "type": [
48754
+ "string",
48755
+ "null"
48756
+ ]
48757
+ },
48758
+ "needsYou": {
48759
+ "type": "boolean"
48760
+ },
48761
+ "groupKey": {
48762
+ "type": "string"
48763
+ },
48764
+ "shared": {
48765
+ "type": "boolean"
48766
+ },
48767
+ "people": {
48768
+ "type": "array",
48769
+ "items": {
48770
+ "type": "object",
48771
+ "properties": {
48772
+ "id": {
48773
+ "type": "string"
48774
+ },
48775
+ "name": {
48776
+ "type": "string"
48777
+ }
48778
+ },
48779
+ "required": [
48780
+ "id",
48781
+ "name"
48782
+ ]
48783
+ }
48784
+ },
48785
+ "peopleCount": {
48786
+ "type": "integer"
48787
+ },
48788
+ "preview": {
48789
+ "type": [
48790
+ "string",
48791
+ "null"
48792
+ ]
48793
+ },
48794
+ "shares": {
48795
+ "type": "array",
48796
+ "items": {
48797
+ "type": "object",
48798
+ "properties": {
48799
+ "userId": {
48800
+ "type": [
48801
+ "string",
48802
+ "null"
48803
+ ]
48804
+ },
48805
+ "name": {
48806
+ "type": [
48807
+ "string",
48808
+ "null"
48809
+ ]
48810
+ },
48811
+ "access": {
48812
+ "type": "string",
48813
+ "enum": [
48814
+ "read",
48815
+ "write"
48816
+ ]
48817
+ }
48818
+ },
48819
+ "required": [
48820
+ "userId",
48821
+ "name",
48822
+ "access"
48823
+ ]
48824
+ }
48657
48825
  }
48658
48826
  },
48659
48827
  "required": [
@@ -48697,6 +48865,414 @@
48697
48865
  }
48698
48866
  }
48699
48867
  },
48868
+ "/api/session-tree": {
48869
+ "get": {
48870
+ "summary": "Get session groups and triage counts",
48871
+ "tags": [
48872
+ "Sessions"
48873
+ ],
48874
+ "security": [
48875
+ {
48876
+ "bearerAuth": []
48877
+ }
48878
+ ],
48879
+ "responses": {
48880
+ "200": {
48881
+ "description": "Visible groups and section counts",
48882
+ "content": {
48883
+ "application/json": {
48884
+ "schema": {
48885
+ "type": "object",
48886
+ "properties": {
48887
+ "groups": {
48888
+ "type": "array",
48889
+ "items": {
48890
+ "type": "object",
48891
+ "properties": {
48892
+ "total": {
48893
+ "type": "integer"
48894
+ },
48895
+ "unread": {
48896
+ "type": "integer"
48897
+ },
48898
+ "running": {
48899
+ "type": "integer"
48900
+ },
48901
+ "needsYou": {
48902
+ "type": "integer"
48903
+ },
48904
+ "key": {
48905
+ "type": "string"
48906
+ },
48907
+ "lastActivityAt": {
48908
+ "type": "string"
48909
+ }
48910
+ },
48911
+ "required": [
48912
+ "total",
48913
+ "unread",
48914
+ "running",
48915
+ "needsYou",
48916
+ "key",
48917
+ "lastActivityAt"
48918
+ ]
48919
+ }
48920
+ },
48921
+ "inbox": {
48922
+ "type": "object",
48923
+ "properties": {
48924
+ "total": {
48925
+ "type": "integer"
48926
+ },
48927
+ "unread": {
48928
+ "type": "integer"
48929
+ },
48930
+ "running": {
48931
+ "type": "integer"
48932
+ },
48933
+ "needsYou": {
48934
+ "type": "integer"
48935
+ }
48936
+ },
48937
+ "required": [
48938
+ "total",
48939
+ "unread",
48940
+ "running",
48941
+ "needsYou"
48942
+ ]
48943
+ },
48944
+ "later": {
48945
+ "type": "object",
48946
+ "properties": {
48947
+ "total": {
48948
+ "type": "integer"
48949
+ },
48950
+ "unread": {
48951
+ "type": "integer"
48952
+ },
48953
+ "running": {
48954
+ "type": "integer"
48955
+ },
48956
+ "needsYou": {
48957
+ "type": "integer"
48958
+ }
48959
+ },
48960
+ "required": [
48961
+ "total",
48962
+ "unread",
48963
+ "running",
48964
+ "needsYou"
48965
+ ]
48966
+ },
48967
+ "done": {
48968
+ "type": "object",
48969
+ "properties": {
48970
+ "total": {
48971
+ "type": "integer"
48972
+ },
48973
+ "unread": {
48974
+ "type": "integer"
48975
+ },
48976
+ "running": {
48977
+ "type": "integer"
48978
+ },
48979
+ "needsYou": {
48980
+ "type": "integer"
48981
+ }
48982
+ },
48983
+ "required": [
48984
+ "total",
48985
+ "unread",
48986
+ "running",
48987
+ "needsYou"
48988
+ ]
48989
+ },
48990
+ "noGroup": {
48991
+ "type": "object",
48992
+ "properties": {
48993
+ "total": {
48994
+ "type": "integer"
48995
+ },
48996
+ "unread": {
48997
+ "type": "integer"
48998
+ },
48999
+ "running": {
49000
+ "type": "integer"
49001
+ },
49002
+ "needsYou": {
49003
+ "type": "integer"
49004
+ }
49005
+ },
49006
+ "required": [
49007
+ "total",
49008
+ "unread",
49009
+ "running",
49010
+ "needsYou"
49011
+ ]
49012
+ }
49013
+ },
49014
+ "required": [
49015
+ "groups",
49016
+ "inbox",
49017
+ "later",
49018
+ "done",
49019
+ "noGroup"
49020
+ ]
49021
+ }
49022
+ }
49023
+ }
49024
+ },
49025
+ "401": {
49026
+ "description": "Unauthorized",
49027
+ "content": {
49028
+ "application/json": {
49029
+ "schema": {
49030
+ "$ref": "#/components/schemas/ErrorResponse"
49031
+ }
49032
+ }
49033
+ }
49034
+ }
49035
+ }
49036
+ }
49037
+ },
49038
+ "/api/session-moves": {
49039
+ "post": {
49040
+ "summary": "Move sessions into a group or reset their keys",
49041
+ "tags": [
49042
+ "Sessions"
49043
+ ],
49044
+ "security": [
49045
+ {
49046
+ "bearerAuth": []
49047
+ }
49048
+ ],
49049
+ "requestBody": {
49050
+ "content": {
49051
+ "application/json": {
49052
+ "schema": {
49053
+ "type": "object",
49054
+ "properties": {
49055
+ "rootTaskIds": {
49056
+ "type": "array",
49057
+ "items": {
49058
+ "type": "string",
49059
+ "minLength": 1
49060
+ },
49061
+ "minItems": 1,
49062
+ "maxItems": 200
49063
+ },
49064
+ "groupKey": {
49065
+ "type": [
49066
+ "string",
49067
+ "null"
49068
+ ],
49069
+ "minLength": 1,
49070
+ "maxLength": 255,
49071
+ "description": "Non-unique asset directory namespace (for example shared/ or personal/<user-id>/drafts/). Runtime write boundaries normalize and validate the canonical form."
49072
+ }
49073
+ },
49074
+ "required": [
49075
+ "rootTaskIds",
49076
+ "groupKey"
49077
+ ]
49078
+ }
49079
+ }
49080
+ }
49081
+ },
49082
+ "responses": {
49083
+ "200": {
49084
+ "description": "Moved and skipped sessions",
49085
+ "content": {
49086
+ "application/json": {
49087
+ "schema": {
49088
+ "type": "object",
49089
+ "properties": {
49090
+ "moved": {
49091
+ "type": "array",
49092
+ "items": {
49093
+ "type": "string"
49094
+ }
49095
+ },
49096
+ "skipped": {
49097
+ "type": "array",
49098
+ "items": {
49099
+ "type": "object",
49100
+ "properties": {
49101
+ "rootTaskId": {
49102
+ "type": "string"
49103
+ },
49104
+ "reason": {
49105
+ "type": "string"
49106
+ }
49107
+ },
49108
+ "required": [
49109
+ "rootTaskId",
49110
+ "reason"
49111
+ ]
49112
+ }
49113
+ }
49114
+ },
49115
+ "required": [
49116
+ "moved",
49117
+ "skipped"
49118
+ ]
49119
+ }
49120
+ }
49121
+ }
49122
+ },
49123
+ "400": {
49124
+ "description": "Invalid namespace or request",
49125
+ "content": {
49126
+ "application/json": {
49127
+ "schema": {
49128
+ "$ref": "#/components/schemas/ErrorResponse"
49129
+ }
49130
+ }
49131
+ }
49132
+ },
49133
+ "403": {
49134
+ "description": "Personal destination not authorized",
49135
+ "content": {
49136
+ "application/json": {
49137
+ "schema": {
49138
+ "$ref": "#/components/schemas/ErrorResponse"
49139
+ }
49140
+ }
49141
+ }
49142
+ },
49143
+ "409": {
49144
+ "description": "Moves blocked until audit warnings are repaired",
49145
+ "content": {
49146
+ "application/json": {
49147
+ "schema": {
49148
+ "$ref": "#/components/schemas/ErrorResponse"
49149
+ }
49150
+ }
49151
+ }
49152
+ }
49153
+ }
49154
+ }
49155
+ },
49156
+ "/api/session-moves/prefix": {
49157
+ "post": {
49158
+ "summary": "Rename or delete a session group",
49159
+ "tags": [
49160
+ "Sessions"
49161
+ ],
49162
+ "security": [
49163
+ {
49164
+ "bearerAuth": []
49165
+ }
49166
+ ],
49167
+ "requestBody": {
49168
+ "content": {
49169
+ "application/json": {
49170
+ "schema": {
49171
+ "type": "object",
49172
+ "properties": {
49173
+ "from": {
49174
+ "type": "string",
49175
+ "minLength": 1,
49176
+ "maxLength": 255,
49177
+ "description": "Non-unique asset directory namespace (for example shared/ or personal/<user-id>/drafts/). Runtime write boundaries normalize and validate the canonical form."
49178
+ },
49179
+ "to": {
49180
+ "type": [
49181
+ "string",
49182
+ "null"
49183
+ ],
49184
+ "minLength": 1,
49185
+ "maxLength": 255,
49186
+ "description": "Non-unique asset directory namespace (for example shared/ or personal/<user-id>/drafts/). Runtime write boundaries normalize and validate the canonical form."
49187
+ }
49188
+ },
49189
+ "required": [
49190
+ "from",
49191
+ "to"
49192
+ ]
49193
+ }
49194
+ }
49195
+ }
49196
+ },
49197
+ "responses": {
49198
+ "200": {
49199
+ "description": "Moved and skipped sessions and remaining movable roots",
49200
+ "content": {
49201
+ "application/json": {
49202
+ "schema": {
49203
+ "type": "object",
49204
+ "properties": {
49205
+ "moved": {
49206
+ "type": "array",
49207
+ "items": {
49208
+ "type": "string"
49209
+ }
49210
+ },
49211
+ "skipped": {
49212
+ "type": "array",
49213
+ "items": {
49214
+ "type": "object",
49215
+ "properties": {
49216
+ "rootTaskId": {
49217
+ "type": "string"
49218
+ },
49219
+ "reason": {
49220
+ "type": "string"
49221
+ }
49222
+ },
49223
+ "required": [
49224
+ "rootTaskId",
49225
+ "reason"
49226
+ ]
49227
+ }
49228
+ },
49229
+ "remaining": {
49230
+ "type": "integer",
49231
+ "minimum": 0
49232
+ }
49233
+ },
49234
+ "required": [
49235
+ "moved",
49236
+ "skipped",
49237
+ "remaining"
49238
+ ]
49239
+ }
49240
+ }
49241
+ }
49242
+ },
49243
+ "400": {
49244
+ "description": "Invalid namespace or request",
49245
+ "content": {
49246
+ "application/json": {
49247
+ "schema": {
49248
+ "$ref": "#/components/schemas/ErrorResponse"
49249
+ }
49250
+ }
49251
+ }
49252
+ },
49253
+ "403": {
49254
+ "description": "Personal destination not authorized",
49255
+ "content": {
49256
+ "application/json": {
49257
+ "schema": {
49258
+ "$ref": "#/components/schemas/ErrorResponse"
49259
+ }
49260
+ }
49261
+ }
49262
+ },
49263
+ "409": {
49264
+ "description": "Moves blocked until audit warnings are repaired",
49265
+ "content": {
49266
+ "application/json": {
49267
+ "schema": {
49268
+ "$ref": "#/components/schemas/ErrorResponse"
49269
+ }
49270
+ }
49271
+ }
49272
+ }
49273
+ }
49274
+ }
49275
+ },
48700
49276
  "/api/sessions/{rootTaskId}": {
48701
49277
  "get": {
48702
49278
  "summary": "Get a session — root task + the entire descendant chain",
@@ -48929,6 +49505,47 @@
48929
49505
  },
48930
49506
  "owner": {
48931
49507
  "$ref": "#/components/schemas/SessionOwner"
49508
+ },
49509
+ "approvals": {
49510
+ "type": "array",
49511
+ "items": {
49512
+ "type": "object",
49513
+ "properties": {
49514
+ "id": {
49515
+ "type": "string"
49516
+ },
49517
+ "status": {
49518
+ "type": "string",
49519
+ "enum": [
49520
+ "pending"
49521
+ ]
49522
+ },
49523
+ "sourceTaskId": {
49524
+ "type": "string"
49525
+ },
49526
+ "title": {
49527
+ "type": "string"
49528
+ }
49529
+ },
49530
+ "required": [
49531
+ "id",
49532
+ "status",
49533
+ "sourceTaskId",
49534
+ "title"
49535
+ ]
49536
+ }
49537
+ },
49538
+ "readState": {
49539
+ "type": "string",
49540
+ "enum": [
49541
+ "unread",
49542
+ "read",
49543
+ "later",
49544
+ "done"
49545
+ ]
49546
+ },
49547
+ "lastActivityAt": {
49548
+ "type": "string"
48932
49549
  }
48933
49550
  },
48934
49551
  "required": [
@@ -51021,6 +51638,87 @@
51021
51638
  }
51022
51639
  }
51023
51640
  },
51641
+ "/api/agents/{id}/skills/bundle": {
51642
+ "get": {
51643
+ "summary": "Get an agent's installed skills together with their bundled files",
51644
+ "description": "Single-request boot payload: every installed-and-enabled skill with the full content of its bundled files, plus the same signature the cheap probe returns. Lets a worker sync its local skill tree without an N+1 file fan-out.",
51645
+ "tags": [
51646
+ "Skills"
51647
+ ],
51648
+ "security": [
51649
+ {
51650
+ "bearerAuth": []
51651
+ }
51652
+ ],
51653
+ "parameters": [
51654
+ {
51655
+ "schema": {
51656
+ "type": "string"
51657
+ },
51658
+ "required": true,
51659
+ "name": "id",
51660
+ "in": "path"
51661
+ }
51662
+ ],
51663
+ "responses": {
51664
+ "200": {
51665
+ "description": "Agent skills bundle",
51666
+ "content": {
51667
+ "application/json": {
51668
+ "schema": {
51669
+ "type": "object",
51670
+ "properties": {
51671
+ "skills": {
51672
+ "type": "array",
51673
+ "items": {
51674
+ "allOf": [
51675
+ {
51676
+ "$ref": "#/components/schemas/Skill"
51677
+ },
51678
+ {
51679
+ "type": "object",
51680
+ "properties": {
51681
+ "isActive": {
51682
+ "type": "boolean"
51683
+ },
51684
+ "installedAt": {
51685
+ "type": "string"
51686
+ },
51687
+ "files": {
51688
+ "type": "array",
51689
+ "items": {
51690
+ "$ref": "#/components/schemas/SkillFile"
51691
+ }
51692
+ }
51693
+ },
51694
+ "required": [
51695
+ "isActive",
51696
+ "installedAt",
51697
+ "files"
51698
+ ]
51699
+ }
51700
+ ]
51701
+ }
51702
+ },
51703
+ "total": {
51704
+ "type": "number"
51705
+ },
51706
+ "signature": {
51707
+ "type": "string"
51708
+ }
51709
+ },
51710
+ "required": [
51711
+ "skills",
51712
+ "total",
51713
+ "signature"
51714
+ ]
51715
+ }
51716
+ }
51717
+ }
51718
+ }
51719
+ }
51720
+ }
51721
+ },
51024
51722
  "/api/slack/inbound/diagnostics": {
51025
51723
  "get": {
51026
51724
  "summary": "Operator-only. Slack inbound delivery diagnostics: transport mode, durable receipt counts by state, uncertain receipts awaiting review, and per-transport outcome counters. Never includes payloads or credentials.",
@@ -58923,6 +59621,88 @@
58923
59621
  }
58924
59622
  }
58925
59623
  },
59624
+ "/api/bitbucket/webhook": {
59625
+ "post": {
59626
+ "summary": "Handle Bitbucket Cloud webhook events",
59627
+ "tags": [
59628
+ "Webhooks"
59629
+ ],
59630
+ "responses": {
59631
+ "200": {
59632
+ "description": "Event processed",
59633
+ "content": {
59634
+ "application/json": {
59635
+ "schema": {
59636
+ "type": "object",
59637
+ "properties": {
59638
+ "created": {
59639
+ "type": "boolean"
59640
+ },
59641
+ "taskId": {
59642
+ "type": "string"
59643
+ },
59644
+ "skipped": {
59645
+ "type": "boolean"
59646
+ },
59647
+ "reason": {
59648
+ "type": "string"
59649
+ },
59650
+ "extension": {
59651
+ "type": "object",
59652
+ "properties": {
59653
+ "id": {
59654
+ "type": "string"
59655
+ },
59656
+ "name": {
59657
+ "type": "string"
59658
+ }
59659
+ },
59660
+ "required": [
59661
+ "id",
59662
+ "name"
59663
+ ]
59664
+ }
59665
+ },
59666
+ "required": [
59667
+ "created"
59668
+ ]
59669
+ }
59670
+ }
59671
+ }
59672
+ },
59673
+ "401": {
59674
+ "description": "Invalid signature",
59675
+ "content": {
59676
+ "application/json": {
59677
+ "schema": {
59678
+ "$ref": "#/components/schemas/ErrorResponse"
59679
+ }
59680
+ }
59681
+ }
59682
+ },
59683
+ "413": {
59684
+ "description": "Body exceeds 1 MiB",
59685
+ "content": {
59686
+ "application/json": {
59687
+ "schema": {
59688
+ "$ref": "#/components/schemas/ErrorResponse"
59689
+ }
59690
+ }
59691
+ }
59692
+ },
59693
+ "503": {
59694
+ "description": "Bitbucket integration not configured",
59695
+ "content": {
59696
+ "application/json": {
59697
+ "schema": {
59698
+ "$ref": "#/components/schemas/ErrorResponse"
59699
+ }
59700
+ }
59701
+ }
59702
+ }
59703
+ }
59704
+ }
59705
+ },
58926
59706
  "/api/agentmail/webhook": {
58927
59707
  "post": {
58928
59708
  "summary": "Handle AgentMail webhook events",