@desplega.ai/agent-swarm 1.152.2 → 1.154.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 (284) hide show
  1. package/README.md +2 -2
  2. package/dist/{acp-adapter-pfeje2v5.js → acp-adapter-eb2aj8xy.js} +4 -4
  3. package/dist/{actions-0sttc7f5.js → actions-kpnwp1kz.js} +31 -27
  4. package/dist/{anthropic-messages-2y8nktar.js → anthropic-messages-9vqsbznt.js} +112 -84
  5. package/dist/{app-p8teva95.js → app-zk1apkf6.js} +10 -7
  6. package/dist/{assistant-r45jnsrt.js → assistant-kwq4y50q.js} +32 -28
  7. package/dist/{azure-openai-responses-f38x2avq.js → azure-openai-responses-04qwdwfq.js} +27 -13
  8. package/dist/{boot-reembed-je26h5y7.js → boot-reembed-22hd3jjn.js} +9 -7
  9. package/dist/{boot-reembed-1qmybsd4.js → boot-reembed-qe168424.js} +10 -8
  10. package/dist/{boot-scrub-logs-gte3h1mm.js → boot-scrub-logs-pkdpsrjd.js} +7 -5
  11. package/dist/{claude-adapter-csc1mzka.js → claude-adapter-3fx90nww.js} +18 -16
  12. package/dist/{claude-managed-adapter-dsmkcrjy.js → claude-managed-adapter-ea2aga6w.js} +3 -3
  13. package/dist/{claude-sdk-session-fcd6f078.js → claude-sdk-session-z7fahf1k.js} +18 -16
  14. package/dist/{cli-r2fpe7cx.js → cli-00w2c66p.js} +61 -55
  15. package/dist/{cli-wbyk465z.js → cli-09y3tjxz.js} +1 -1
  16. package/dist/{cli-ht5rs63n.js → cli-0e31nm4n.js} +16 -7
  17. package/dist/cli-0x5qzvkg.js +4279 -0
  18. package/dist/{cli-d3p82erb.js → cli-18amys3y.js} +9 -9
  19. package/dist/{cli-4ahpr4sw.js → cli-1jpjafw4.js} +5 -5
  20. package/dist/{cli-jbmc0r7r.js → cli-243tzws8.js} +1 -1
  21. package/dist/{cli-ch38q5z4.js → cli-24k806sc.js} +6789 -2542
  22. package/dist/cli-3bkz2p7j.js +2828 -0
  23. package/dist/cli-3er6gcsn.js +1849 -0
  24. package/dist/cli-4k7jazkq.js +3339 -0
  25. package/dist/{cli-c4eeb5q2.js → cli-5b6b62tz.js} +1 -1
  26. package/dist/{cli-qd65dvr6.js → cli-5vs0nh43.js} +65 -44
  27. package/dist/{cli-z3wkng35.js → cli-6r3cgpk2.js} +224 -156
  28. package/dist/{cli-pgj4a5fb.js → cli-71cj99hx.js} +4 -3
  29. package/dist/cli-8sea27q4.js +14075 -0
  30. package/dist/{cli-jvy9qgjs.js → cli-913yakhv.js} +22 -7
  31. package/dist/{cli-pf9q3696.js → cli-927erqqt.js} +5 -2
  32. package/dist/cli-95jnpnqg.js +230 -0
  33. package/dist/{cli-wpv5rgg2.js → cli-abp3g4ax.js} +15 -2
  34. package/dist/{cli-ckz5t2hb.js → cli-acy6bfhr.js} +10 -7
  35. package/dist/{cli-4yc5d8fk.js → cli-avkd6mqv.js} +50 -0
  36. package/dist/{cli-8wrympd7.js → cli-bzr0ftht.js} +26 -7
  37. package/dist/{cli-qn042eh7.js → cli-c1v10xb2.js} +194 -1913
  38. package/dist/cli-cgj4hc12.js +18902 -0
  39. package/dist/{cli-2nnd56zt.js → cli-e0pg4zeh.js} +3 -2
  40. package/dist/{cli-r84ctdxn.js → cli-e31ehqwy.js} +2 -2
  41. package/dist/{cli-gphgnvpf.js → cli-e3229na9.js} +3 -3
  42. package/dist/{cli-gpqcs935.js → cli-e3cyf59d.js} +2 -2
  43. package/dist/{cli-s25avqg9.js → cli-e781c6f9.js} +1 -0
  44. package/dist/{cli-s2qjdd6z.js → cli-eetrvv91.js} +1 -1
  45. package/dist/{cli-j4nv2wqy.js → cli-fdzg6jhf.js} +10 -4
  46. package/dist/{cli-fm4ytsdk.js → cli-g2h29qar.js} +2 -2
  47. package/dist/{cli-zvgj5zg8.js → cli-ge67p080.js} +302 -3497
  48. package/dist/cli-h38x0qhg.js +6912 -0
  49. package/dist/{cli-9xvdm3bx.js → cli-h60qfasa.js} +742 -278
  50. package/dist/{cli-jew3jda5.js → cli-hws0vn86.js} +2 -2
  51. package/dist/{cli-j8dggbcr.js → cli-k0g1sjzm.js} +23 -31
  52. package/dist/{cli-xw7vak96.js → cli-kp3qs53m.js} +5 -5
  53. package/dist/{cli-rgvp6r2x.js → cli-mcnhgnn1.js} +193 -4
  54. package/dist/{cli-zvkq5csn.js → cli-myaxtgh8.js} +7 -6
  55. package/dist/{cli-56h18ng2.js → cli-n62atwh9.js} +1 -1
  56. package/dist/cli-n7h1kqpf.js +29 -0
  57. package/dist/{cli-fmy65jdn.js → cli-pf1v8xhb.js} +7 -5
  58. package/dist/{cli-xy1cchaf.js → cli-q85qhckh.js} +238 -11
  59. package/dist/{cli-3bpzj8me.js → cli-r1d3dzt6.js} +2 -2
  60. package/dist/{pi-mono-adapter-jcqt71cg.js → cli-rxkqvngf.js} +67343 -101083
  61. package/dist/{cli-kj76p1ez.js → cli-scwq51gn.js} +13 -7
  62. package/dist/{cli-b9dd0h3k.js → cli-stwsmd6k.js} +3 -2
  63. package/dist/{cli-c2mk1kgf.js → cli-v4en75c5.js} +8 -1
  64. package/dist/{cli-z61ykvam.js → cli-wg04s9kr.js} +4 -3
  65. package/dist/cli-yn0a417a.js +4069 -0
  66. package/dist/{cli-zfzznn7c.js → cli-ytxs7mn1.js} +26 -2
  67. package/dist/{cli-4j8k1m4w.js → cli-zt1227k1.js} +1162 -192
  68. package/dist/cli.js +28 -35
  69. package/dist/{codex-adapter-fxmpsabw.js → codex-adapter-ttdm995v.js} +12 -11
  70. package/dist/{codex-hook-8jexc34x.js → codex-hook-8gx7bcz0.js} +3 -3
  71. package/dist/{codex-session-runner-rr1e47ea.js → codex-session-runner-3v8nh4c8.js} +12 -11
  72. package/dist/{commands-0f5rxz51.js → commands-1cxwbhhq.js} +7 -5
  73. package/dist/{db-r3jxf3wy.js → db-y9zwsr79.js} +25 -5
  74. package/dist/{dispatcher-06vph6q4.js → dispatcher-9m9zss36.js} +30 -26
  75. package/dist/dsh-adapter-gsb2qqf9.js +19 -0
  76. package/dist/{e2b-413b8t4v.js → e2b-93x1k0j5.js} +6 -7
  77. package/dist/{google-generative-ai-ndjmj5fa.js → google-generative-ai-gwwrnzqn.js} +33 -73
  78. package/dist/{google-vertex-fr665tqs.js → google-vertex-5wfawpwz.js} +38 -68
  79. package/dist/{handlers-0hgtc910.js → handlers-36fm1bwn.js} +33 -29
  80. package/dist/{hook-9kvrv1er.js → hook-pntw4r8h.js} +12 -10
  81. package/dist/{hook-fbfhkat3.js → hook-vwq8y26p.js} +13 -11
  82. package/dist/{http-xbyx8k5j.js → http-20jesakk.js} +357 -261
  83. package/dist/{index-jsw3aynb.js → index-6artrehg.js} +30 -26
  84. package/dist/{cli-pdz9qde4.js → index-9ch1n761.js} +10 -11
  85. package/dist/{index-rnyahfn5.js → index-9n5z2492.js} +30 -26
  86. package/dist/{index-66xz5e9j.js → index-h5gs261z.js} +521 -9
  87. package/dist/{index-tfsdxyv6.js → index-j5wrf1yw.js} +40 -25
  88. package/dist/{index-2sp0384z.js → index-kkeftv5h.js} +738 -21
  89. package/dist/{index-sgk50mbg.js → index-m2xqpz5r.js} +31 -27
  90. package/dist/{index-gpfn1741.js → index-m9ks8a7t.js} +9 -7
  91. package/dist/index-w097eg0x.js +5 -0
  92. package/dist/jiti-loader-b4837mtm.js +34 -0
  93. package/dist/jiti-static-loader-q2g5ds0y.js +31267 -0
  94. package/dist/{keepalive-s3xpr7sw.js → keepalive-pwxvxd2c.js} +9 -7
  95. package/dist/{lead-rq4n5r16.js → lead-m789wqa3.js} +46 -41
  96. package/dist/{maintenance-f0atj1ab.js → maintenance-bvg6w7e2.js} +10 -8
  97. package/dist/{mistral-conversations-qhr84ph3.js → mistral-conversations-zx0kn554.js} +24 -18
  98. package/dist/{node-x1g4v0pq.js → node-5qtycf6a.js} +16 -11
  99. package/dist/{oauth-refresh-sweep-q0t3bxre.js → oauth-refresh-sweep-6v4bd737.js} +8 -6
  100. package/dist/{onboard-br5j1kch.js → onboard-snckpcj1.js} +115 -35
  101. package/dist/{openai-codex-responses-wy6a43wd.js → openai-codex-responses-4vjqzvjp.js} +33 -27
  102. package/dist/{openai-completions-32rdwmze.js → openai-completions-pxsmym7g.js} +52 -64
  103. package/dist/{openai-responses-6xwf7bzg.js → openai-responses-tmn0rqp0.js} +23 -24
  104. package/dist/{opencode-adapter-28axqa09.js → opencode-adapter-qbmv4tpy.js} +6 -6
  105. package/dist/{otel-impl-vdqge2nt.js → otel-impl-e0ytens5.js} +4 -4
  106. package/dist/{pi-messages-b1mbr6gp.js → pi-messages-txpjj39q.js} +3 -3
  107. package/dist/pi-mono-adapter-c4ggemhz.js +1316 -0
  108. package/dist/{pricing-refresh-hb3691fd.js → pricing-refresh-52g2ywrw.js} +9 -7
  109. package/dist/{rbac-roles-t78xt39b.js → rbac-roles-5455kfdn.js} +8 -6
  110. package/dist/{rbac-roles-jh280k9g.js → rbac-roles-hbf0xa52.js} +9 -7
  111. package/dist/{render-v2-7p8r2ymg.js → render-v2-npm8xdzh.js} +16 -9
  112. package/dist/{seed-pricing-hf889enh.js → seed-pricing-650wbr1n.js} +8 -6
  113. package/dist/{setup-w6mb03jv.js → setup-k1mew5rf.js} +4 -5
  114. package/dist/virtual-modules-2q5b2pk4.js +54 -0
  115. package/dist/{work-objects-nt8gy1kj.js → work-objects-2ea3kvwg.js} +33 -29
  116. package/dist/{worker-dwy617t0.js → worker-ec6hvc4m.js} +46 -41
  117. package/openapi.json +109 -16
  118. package/package.json +7 -6
  119. package/plugin/opencode-plugins/lib/memory-raters.ts +7 -0
  120. package/src/be/automation-preflight.ts +6 -4
  121. package/src/be/db/agents.ts +75 -2
  122. package/src/be/db/tasks/read.ts +2 -0
  123. package/src/be/db/tasks/write.ts +7 -1
  124. package/src/be/db.ts +140 -18
  125. package/src/be/extensions/db.ts +35 -4
  126. package/src/be/memory/raters/llm.ts +2 -6
  127. package/src/be/memory/raters/noop.ts +2 -3
  128. package/src/be/memory/raters/registry.ts +4 -10
  129. package/src/be/migrations/157_defer_provenance_and_marker.sql +27 -0
  130. package/src/be/models-catalog.ts +2 -0
  131. package/src/be/modelsdev-cache.json +213 -0
  132. package/src/be/rbac-audit.ts +2 -0
  133. package/src/be/seed/agent-fs-provision.ts +23 -0
  134. package/src/be/seed-pricing.ts +3 -1
  135. package/src/be/swarm-config-guard.ts +1 -0
  136. package/src/commands/onboard/compose-generator.ts +16 -1
  137. package/src/commands/onboard/env-generator.ts +14 -1
  138. package/src/commands/onboard/manifest.ts +1 -0
  139. package/src/commands/onboard/steps/integration-slack.tsx +56 -16
  140. package/src/commands/onboard/steps/review.tsx +5 -0
  141. package/src/commands/onboard/types.ts +6 -0
  142. package/src/commands/onboard.tsx +5 -1
  143. package/src/commands/provider-credentials.ts +14 -2
  144. package/src/commands/runner.ts +18 -2
  145. package/src/extensions/identity.ts +15 -7
  146. package/src/extensions/lifecycle.ts +15 -21
  147. package/src/hooks/codex-hook.ts +7 -1
  148. package/src/http/agents.ts +12 -4
  149. package/src/http/config.ts +1 -1
  150. package/src/http/core.ts +5 -3
  151. package/src/http/extensions.ts +108 -34
  152. package/src/http/poll.ts +7 -0
  153. package/src/http/schedules.ts +10 -0
  154. package/src/http/script-runs.ts +35 -26
  155. package/src/http/status.ts +24 -11
  156. package/src/http/tasks.ts +6 -1
  157. package/src/prompts/base-prompt.ts +15 -7
  158. package/src/prompts/memories.ts +5 -7
  159. package/src/prompts/session-templates.ts +3 -2
  160. package/src/prompts/steering-delivery.ts +2 -0
  161. package/src/providers/claude-managed-models.ts +8 -0
  162. package/src/providers/codex-adapter.ts +3 -6
  163. package/src/providers/codex-models.ts +15 -1
  164. package/src/providers/dsh-adapter.ts +248 -0
  165. package/src/providers/index.ts +5 -1
  166. package/src/providers/modelsdev-reasoning.json +50 -0
  167. package/src/providers/pi-mono-extension.ts +2 -5
  168. package/src/rbac/legacy-policy.ts +15 -1
  169. package/src/rbac/types.ts +2 -0
  170. package/src/server.ts +7 -1
  171. package/src/slack/ack.ts +43 -8
  172. package/src/slack/app.ts +32 -10
  173. package/src/slack/config.ts +29 -0
  174. package/src/slack/handlers.ts +7 -1
  175. package/src/slack/render-v2.ts +186 -17
  176. package/src/slack/responses.ts +1 -3
  177. package/src/slack/task-output.ts +66 -8
  178. package/src/slack/thread-buffer.ts +27 -3
  179. package/src/telemetry.ts +2 -3
  180. package/src/tests/agent-fs-provision-seeder.test.ts +56 -2
  181. package/src/tests/agents-harness-provider.test.ts +19 -0
  182. package/src/tests/agents-list-model-display.test.ts +60 -1
  183. package/src/tests/base-prompt.test.ts +25 -0
  184. package/src/tests/claude-managed-adapter.test.ts +6 -0
  185. package/src/tests/codex-gpt6-release.test.ts +97 -0
  186. package/src/tests/codex-steering-hook.test.ts +2 -2
  187. package/src/tests/config-api-only-keys.test.ts +9 -0
  188. package/src/tests/context-window.test.ts +1 -0
  189. package/src/tests/db-task-read-contract.test.ts +9 -0
  190. package/src/tests/db-task-write-contract.test.ts +9 -0
  191. package/src/tests/defer-task.test.ts +115 -16
  192. package/src/tests/dsh-adapter.test.ts +276 -0
  193. package/src/tests/e2e-nightly-report.test.ts +3 -3
  194. package/src/tests/e2e-redact.test.ts +2 -0
  195. package/src/tests/env-flag.test.ts +6 -0
  196. package/src/tests/extension-agent-visibility.test.ts +474 -0
  197. package/src/tests/extensions-db.test.ts +41 -0
  198. package/src/tests/extensions-http.test.ts +148 -4
  199. package/src/tests/extensions-lifecycle.test.ts +21 -1
  200. package/src/tests/extensions-mcp-tools.test.ts +9 -5
  201. package/src/tests/fetch-resolved-env.test.ts +43 -0
  202. package/src/tests/internal-ai/complete-structured.test.ts +32 -9
  203. package/src/tests/internal-ai/credentials.test.ts +4 -4
  204. package/src/tests/internal-ai/models.test.ts +20 -0
  205. package/src/tests/memory-rate-tool.test.ts +7 -10
  206. package/src/tests/memory-rater-defaults.test.ts +23 -0
  207. package/src/tests/memory-rater-e2e.test.ts +2 -3
  208. package/src/tests/migration-046-budgets.test.ts +2 -0
  209. package/src/tests/model-control.test.ts +2 -2
  210. package/src/tests/onboard-compose.test.ts +14 -0
  211. package/src/tests/onboard-env.test.ts +17 -0
  212. package/src/tests/onboard-manifest.test.ts +12 -0
  213. package/src/tests/opus-5-5-registry.test.ts +48 -0
  214. package/src/tests/pricing-refresh.test.ts +1 -1
  215. package/src/tests/pricing-routes.test.ts +15 -3
  216. package/src/tests/provider-registration.test.ts +5 -2
  217. package/src/tests/rbac-admission-e2e.test.ts +54 -0
  218. package/src/tests/rbac-e2e-helpers.ts +2 -0
  219. package/src/tests/rbac-engine.test.ts +32 -0
  220. package/src/tests/rbac-wire-e2e.test.ts +33 -0
  221. package/src/tests/reasoning-effort.test.ts +8 -0
  222. package/src/tests/reload-config.test.ts +33 -0
  223. package/src/tests/script-connections.test.ts +3 -0
  224. package/src/tests/session-costs-model-key-normalize.test.ts +1 -0
  225. package/src/tests/slack-config.test.ts +136 -0
  226. package/src/tests/slack-mode-lifecycle.test.ts +69 -0
  227. package/src/tests/slack-render-v2.test.ts +446 -16
  228. package/src/tests/slack-steering.test.ts +69 -1
  229. package/src/tests/slack-task-output.test.ts +33 -12
  230. package/src/tests/status.test.ts +22 -2
  231. package/src/tests/steering-core.test.ts +35 -0
  232. package/src/tests/steering-delivery.test.ts +39 -0
  233. package/src/tests/steering-transport.test.ts +2 -2
  234. package/src/tests/task-tool-preload-mcp.test.ts +3 -1
  235. package/src/tests/telemetry-init.test.ts +18 -0
  236. package/src/tests/workflow-live-recovery.test.ts +126 -0
  237. package/src/tests/workflow-llm.test.ts +3 -3
  238. package/src/tools/defer-task.ts +64 -26
  239. package/src/tools/extension-common.ts +4 -0
  240. package/src/tools/extension-install.ts +1 -1
  241. package/src/tools/extension-list.ts +4 -3
  242. package/src/tools/join-swarm.ts +1 -1
  243. package/src/tools/schedules/create-schedule.ts +11 -1
  244. package/src/tools/schedules/patch-schedule.ts +5 -0
  245. package/src/tools/schedules/update-schedule.ts +5 -0
  246. package/src/tools/send-task.ts +6 -0
  247. package/src/tools/utils.ts +1 -1
  248. package/src/types.ts +30 -8
  249. package/src/utils/context-window.ts +1 -0
  250. package/src/utils/credentials.ts +8 -0
  251. package/src/utils/internal-ai/complete-structured.ts +8 -0
  252. package/src/utils/internal-ai/models.ts +5 -5
  253. package/src/utils/memory-raters.ts +3 -0
  254. package/src/workflows/engine.ts +28 -0
  255. package/src/workflows/recovery.ts +7 -4
  256. package/templates/schedules/daily-status-report/content.md +25 -12
  257. package/templates/schedules/daily-workflow-health-audit/content.md +1 -1
  258. package/templates/skills/swarm-extensions/content.md +9 -5
  259. package/dist/cli-4wppfkcm.js +0 -16384
  260. package/dist/cli-55qrx3q8.js +0 -6041
  261. package/dist/cli-cg4vnyh4.js +0 -305
  262. package/dist/cli-jyetr64j.js +0 -52
  263. package/dist/cli-pp9ax9pa.js +0 -520
  264. package/dist/cli-qa66qaf0.js +0 -6076
  265. package/dist/cli-qghpvca2.js +0 -590
  266. package/dist/cli-rembwgt8.js +0 -861
  267. package/dist/cli-tcvj7j2r.js +0 -1971
  268. package/dist/cli-vfcth11k.js +0 -36
  269. package/dist/cli-w1d1bgkk.js +0 -1422
  270. package/dist/cli-y6x0gqtg.js +0 -5977
  271. package/dist/es5-tj3tn4jj.js +0 -844
  272. package/dist/index-1kq5hw2p.js +0 -467
  273. package/dist/index-1p8wdstt.js +0 -7
  274. package/dist/index-8fdjzb2f.js +0 -100
  275. package/dist/index-bxmwzbgw.js +0 -365
  276. package/dist/index-nzerxd5z.js +0 -7
  277. package/dist/index-pyymnzat.js +0 -1168
  278. package/dist/index-qv6atbab.js +0 -619
  279. package/dist/index-rja32qa7.js +0 -801
  280. package/dist/index-tzg5srfp.js +0 -211
  281. package/dist/index-vhncw983.js +0 -90
  282. package/dist/index-xk036zsk.js +0 -859
  283. package/dist/index-zyazbzcb.js +0 -6
  284. package/dist/{claude-managed-setup-48dwg9bv.js → claude-managed-setup-f5pmsyrp.js} +3 -3
@@ -7,9 +7,10 @@ import {
7
7
  DEFAULT_MODEL,
8
8
  LlmRater,
9
9
  REFERENCES_SOURCE_MAX_LENGTH,
10
+ getMemoryRaterNames,
10
11
  resolveCredential,
11
12
  sanitizeReferencesSource
12
- } from "./cli-4wppfkcm.js";
13
+ } from "./cli-3bkz2p7j.js";
13
14
  import {
14
15
  isMultiRuntimeEnabled
15
16
  } from "./cli-re8z5p8p.js";
@@ -18,18 +19,21 @@ import {
18
19
  } from "./cli-3dpj7atn.js";
19
20
  import {
20
21
  startPricingRefreshLoop
21
- } from "./cli-b9dd0h3k.js";
22
+ } from "./cli-stwsmd6k.js";
23
+ import {
24
+ seedPricingFromModelsDev
25
+ } from "./cli-e0pg4zeh.js";
22
26
  import {
23
27
  ensureRbacSeedsSynced,
24
28
  getUserGrant
25
- } from "./cli-r84ctdxn.js";
29
+ } from "./cli-e31ehqwy.js";
26
30
  import {
27
31
  can,
28
32
  decideAdmission,
29
33
  grantLeadEquivalence,
30
34
  isRbacEnabled,
31
35
  revokeLeadEquivalence
32
- } from "./cli-zfzznn7c.js";
36
+ } from "./cli-ytxs7mn1.js";
33
37
  import {
34
38
  AppDefinitionSchema,
35
39
  AppElementsSchema,
@@ -93,7 +97,7 @@ import {
93
97
  upsertScriptConnection,
94
98
  validateDefinition,
95
99
  writeBareImportShim
96
- } from "./cli-fmy65jdn.js";
100
+ } from "./cli-pf1v8xhb.js";
97
101
  import {
98
102
  detachedProcessGroup,
99
103
  registerProcessGroup,
@@ -102,10 +106,6 @@ import {
102
106
  import {
103
107
  getApiKey
104
108
  } from "./cli-f14fvzag.js";
105
- import {
106
- ZodFirstPartyTypeKind,
107
- objectType
108
- } from "./cli-fad8m16k.js";
109
109
  import {
110
110
  buildAuthorizationUrl,
111
111
  createOAuthApp,
@@ -120,10 +120,28 @@ import {
120
120
  listAuthorizationsForApp,
121
121
  onAuthorizationRefreshed,
122
122
  upsertOAuthApp
123
- } from "./cli-56h18ng2.js";
123
+ } from "./cli-n62atwh9.js";
124
124
  import {
125
- seedPricingFromModelsDev
126
- } from "./cli-2nnd56zt.js";
125
+ ZodFirstPartyTypeKind,
126
+ objectType
127
+ } from "./cli-fad8m16k.js";
128
+ import {
129
+ AgentFsProvider,
130
+ getFileStorageProvider,
131
+ providerPath
132
+ } from "./cli-jsp14b6c.js";
133
+ import {
134
+ CANDIDATE_SET_MULTIPLIER,
135
+ computeScore,
136
+ getEmbeddingProvider,
137
+ getMemoryStore,
138
+ init_constants as init_constants2,
139
+ init_reranker,
140
+ init_sqlite_store,
141
+ isGraphExpansionEnabled,
142
+ rerank,
143
+ rowToCandidate
144
+ } from "./cli-hws0vn86.js";
127
145
  import {
128
146
  require_dist
129
147
  } from "./cli-51tf7ac3.js";
@@ -137,82 +155,24 @@ import {
137
155
  startSlackApp,
138
156
  stopSlackApp,
139
157
  withSpan
140
- } from "./cli-qn042eh7.js";
141
- import {
142
- CANDIDATE_SET_MULTIPLIER,
143
- computeScore,
144
- getEmbeddingProvider,
145
- getMemoryStore,
146
- init_constants as init_constants2,
147
- init_reranker,
148
- init_sqlite_store,
149
- isGraphExpansionEnabled,
150
- rerank,
151
- rowToCandidate
152
- } from "./cli-jew3jda5.js";
158
+ } from "./cli-c1v10xb2.js";
153
159
  import {
154
160
  init_task_attachment_links,
155
161
  taskAttachmentDisplayUrl,
156
162
  taskAttachmentFetchCommand
157
163
  } from "./cli-2658f6at.js";
158
164
  import {
159
- AgentFsProvider,
160
- getFileStorageProvider,
161
- providerPath
162
- } from "./cli-jsp14b6c.js";
163
- import {
164
- $OpenAPIRegistry,
165
- $OpenApiGeneratorV31,
166
- AgentAvatarSchema,
167
- AgentMemoryScopeSchema,
168
- AgentMemorySourceSchema,
169
- AgentStatusSchema,
170
- AgentTaskStatusSchema,
171
- AssetKeySchema,
172
- AttachmentInputSchema,
173
- BudgetRefusalCauseSchema,
174
- ChannelTypeSchema,
175
- CooldownConfigSchema,
176
- CreateTaskOptionsSchema,
177
165
  CredentialBindingSchema,
178
- ExtensionManifestSchema,
179
- FollowUpConfigSchema,
180
- InputValueSchema,
181
- KvKeySchema,
182
- KvNamespaceSchema,
166
+ EXTENSION_AGENT_ROLE,
183
167
  KvTypeCollisionError,
184
- KvValueTypeSchema,
185
168
  MAX_EMPTY_POLLS,
186
- MetricDefinitionSchema,
187
- ModelTierSchema,
188
- OnUnsupportedSchema,
189
- PageAuthModeSchema,
190
- PageContentTypeSchema,
191
- PromptTemplateScopeSchema,
192
- PromptTemplateStateSchema,
193
- ProviderNameSchema,
194
- ReasoningEffortSchema,
195
- RepoGuidelinesInputSchema,
196
- RepoHooksSchema,
197
- RoutingReasonSchema,
198
- ScheduledTaskTargetTypeSchema,
199
- ScriptRunStatusSchema,
200
- ServiceStatusSchema,
201
- SteerModeSchema,
202
- SteerOutcomeSchema,
203
169
  SteeringRequestError,
204
- SwarmConfigScopeSchema,
205
- TriggerConfigSchema,
206
- WorkflowDefinitionSchema,
207
- WorkflowNodePatchSchema,
208
- WorkflowRunStatusSchema,
209
170
  acceptTask,
210
171
  agentContextKey,
211
172
  agentmailContextKey,
212
173
  beginRequestAuthScope,
213
174
  buildJiraContextKey,
214
175
  buildRoutingAffinityFromAgent,
215
- canWriteAssetKey,
216
176
  cancelPendingApprovalRequestsForRun,
217
177
  cancelTask,
218
178
  checkDependencies,
@@ -257,6 +217,7 @@ import {
257
217
  deleteWorkflow,
258
218
  emitMcpServerConnectedTelemetry,
259
219
  exports_db,
220
+ extensionAgentAssignmentError,
260
221
  failTask,
261
222
  findCompletedTaskInThread,
262
223
  findExistingLinearTrackerContextWork,
@@ -365,14 +326,11 @@ import {
365
326
  incrKv,
366
327
  incrementEmptyPollCount,
367
328
  initDb,
368
- init_bundle_path,
369
329
  init_context_key,
370
330
  init_credential_broker,
371
331
  init_date_utils,
372
332
  init_db,
373
333
  init_db_client,
374
- init_dist,
375
- init_key,
376
334
  init_request_auth_context,
377
335
  init_slack_routing,
378
336
  init_steering,
@@ -380,17 +338,14 @@ import {
380
338
  init_task_lifecycle_events,
381
339
  init_telemetry,
382
340
  init_templates,
383
- init_types,
384
- init_zod_openapi,
385
341
  insertTaskAttachment,
386
342
  installMcpServer,
387
343
  installSkill,
388
344
  isAgentEligibleForTask,
345
+ isExtensionAgent,
389
346
  isInTransaction,
390
347
  isReservedConfigKey,
391
- isSafeBundlePath,
392
348
  isSteeringEnabled,
393
- isTerminalTaskStatus,
394
349
  linearContextKey,
395
350
  listCancelledApprovalRequestsForRun,
396
351
  listKv,
@@ -404,12 +359,10 @@ import {
404
359
  maskSecrets,
405
360
  moveTaskFromBacklog,
406
361
  moveTaskToBacklog,
407
- normalizeAssetKey,
408
362
  normalizeDateRequired,
409
363
  onTaskStarted,
410
364
  overwriteTerminalTaskResultText,
411
365
  pageContextKey,
412
- parseAssetKey,
413
366
  placeholderForConfigKey,
414
367
  postMessage,
415
368
  promoteDraftTask,
@@ -433,7 +386,6 @@ import {
433
386
  setBudgetRefusalFollowUpTaskId,
434
387
  setRequestAuth,
435
388
  shouldBlockPolling,
436
- splitLegacyModelAlias,
437
389
  startTask,
438
390
  sweepExpiredKvPrefix,
439
391
  telemetry,
@@ -463,13 +415,67 @@ import {
463
415
  upsertSwarmConfig,
464
416
  validateConfigValue,
465
417
  workflowContextKey
466
- } from "./cli-zvgj5zg8.js";
418
+ } from "./cli-ge67p080.js";
419
+ import {
420
+ $OpenAPIRegistry,
421
+ $OpenApiGeneratorV31,
422
+ AgentAvatarSchema,
423
+ AgentMemoryScopeSchema,
424
+ AgentMemorySourceSchema,
425
+ AgentStatusSchema,
426
+ AgentTaskStatusSchema,
427
+ AssetKeySchema,
428
+ AttachmentInputSchema,
429
+ BudgetRefusalCauseSchema,
430
+ ChannelTypeSchema,
431
+ CooldownConfigSchema,
432
+ CreateTaskOptionsSchema,
433
+ ExtensionManifestSchema,
434
+ FollowUpConfigSchema,
435
+ InputValueSchema,
436
+ KvKeySchema,
437
+ KvNamespaceSchema,
438
+ KvValueTypeSchema,
439
+ MetricDefinitionSchema,
440
+ ModelTierSchema,
441
+ OnUnsupportedSchema,
442
+ PageAuthModeSchema,
443
+ PageContentTypeSchema,
444
+ PromptTemplateScopeSchema,
445
+ PromptTemplateStateSchema,
446
+ ProviderNameSchema,
447
+ ReasoningEffortSchema,
448
+ RepoGuidelinesInputSchema,
449
+ RepoHooksSchema,
450
+ RoutingReasonSchema,
451
+ ScheduledTaskTargetTypeSchema,
452
+ ScriptRunStatusSchema,
453
+ ServiceStatusSchema,
454
+ SteerModeSchema,
455
+ SteerOutcomeSchema,
456
+ SwarmConfigScopeSchema,
457
+ TriggerConfigSchema,
458
+ WorkflowDefinitionSchema,
459
+ WorkflowNodePatchSchema,
460
+ WorkflowRunStatusSchema,
461
+ canWriteAssetKey,
462
+ init_bundle_path,
463
+ init_dist,
464
+ init_key,
465
+ init_types,
466
+ init_zod_openapi,
467
+ isSafeBundlePath,
468
+ isTerminalTaskStatus,
469
+ normalizeAssetKey,
470
+ parseAssetKey,
471
+ splitLegacyModelAlias
472
+ } from "./cli-4k7jazkq.js";
467
473
  import {
468
474
  generateDefaultClaudeMd,
469
475
  generateDefaultIdentityMd,
470
476
  generateDefaultSoulMd,
471
477
  init_defaults
472
- } from "./cli-ht5rs63n.js";
478
+ } from "./cli-0e31nm4n.js";
473
479
  import {
474
480
  deepInterpolate,
475
481
  findInterpolationTokens,
@@ -480,7 +486,7 @@ import {
480
486
  interpolate,
481
487
  registerTemplate,
482
488
  resolveTemplate
483
- } from "./cli-z61ykvam.js";
489
+ } from "./cli-wg04s9kr.js";
484
490
  import {
485
491
  MAX_PROFILE_FILE_LENGTH,
486
492
  getAppUrl,
@@ -488,6 +494,11 @@ import {
488
494
  getPublicMcpBaseUrl,
489
495
  init_constants
490
496
  } from "./cli-dv6cdjs2.js";
497
+ import {
498
+ getSlackConfiguration,
499
+ init_config,
500
+ isSlackConfigured
501
+ } from "./cli-n7h1kqpf.js";
491
502
  import {
492
503
  init_env_flag,
493
504
  isEnvFlagEnabled,
@@ -541,7 +552,7 @@ import {
541
552
  import {
542
553
  init_package,
543
554
  package_default
544
- } from "./cli-zvkq5csn.js";
555
+ } from "./cli-myaxtgh8.js";
545
556
  import {
546
557
  init_secret_scrubber,
547
558
  isSensitiveKey,
@@ -14276,6 +14287,9 @@ init_db_client();
14276
14287
 
14277
14288
  // src/be/extensions/db.ts
14278
14289
  init_db();
14290
+
14291
+ class ExtensionOwnershipError extends Error {
14292
+ }
14279
14293
  function rowToExtension(row) {
14280
14294
  return {
14281
14295
  ...row,
@@ -14302,6 +14316,12 @@ async function installExtension(args) {
14302
14316
  args.manifest.name
14303
14317
  ]);
14304
14318
  const existing = existingRow ? rowToExtension(existingRow) : null;
14319
+ if (existing && args.ownerOnly && existing.createdByAgentId !== args.ownerOnly) {
14320
+ throw new ExtensionOwnershipError("Forbidden: extension belongs to another owner");
14321
+ }
14322
+ if (existing?.enabled && args.ownerOnly && (args.config !== undefined && JSON.stringify(args.config) !== existing.configJson || args.priority !== undefined && args.priority !== existing.priority)) {
14323
+ throw new ExtensionOwnershipError("Forbidden: only a lead or operator may change live extension configuration");
14324
+ }
14305
14325
  const now = new Date().toISOString();
14306
14326
  if (!existing) {
14307
14327
  const id = crypto.randomUUID();
@@ -14499,11 +14519,17 @@ async function updateExtensionMeta(id, args) {
14499
14519
  sets.push("description = ?");
14500
14520
  values.push(args.description);
14501
14521
  }
14502
- if (sets.length === 0)
14522
+ if (sets.length === 0 && !args.ownerOnly)
14503
14523
  return getExtensionById(id);
14504
14524
  sets.push("updated_by = ?", "updatedAt = ?");
14505
14525
  values.push(args.updatedBy ?? null, new Date().toISOString(), id);
14506
- const row = await getDbClient().get(`UPDATE extensions SET ${sets.join(", ")} WHERE id = ? RETURNING *`, values);
14526
+ const ownerCondition = args.ownerOnly ? " AND createdByAgentId = ? AND enabled = 0" : "";
14527
+ if (args.ownerOnly)
14528
+ values.push(args.ownerOnly);
14529
+ const row = await getDbClient().get(`UPDATE extensions SET ${sets.join(", ")} WHERE id = ?${ownerCondition} RETURNING *`, values);
14530
+ if (!row && args.ownerOnly) {
14531
+ throw new ExtensionOwnershipError("Forbidden: extension must be your own disabled draft");
14532
+ }
14507
14533
  return row ? rowToExtension(row) : null;
14508
14534
  }
14509
14535
  async function setExtensionState(id, args) {
@@ -14544,8 +14570,11 @@ async function recordExtensionFailure(id, lastError, maxConsecutiveFailures) {
14544
14570
  RETURNING *`, [lastError, maxConsecutiveFailures, maxConsecutiveFailures, new Date().toISOString(), id]);
14545
14571
  return row ? rowToExtension(row) : null;
14546
14572
  }
14547
- async function deleteExtension(id) {
14548
- const result = await getDbClient().run("DELETE FROM extensions WHERE id = ?", [id]);
14573
+ async function deleteExtension(id, ownerOnly) {
14574
+ const result = await getDbClient().run(`DELETE FROM extensions WHERE id = ?${ownerOnly ? " AND createdByAgentId = ? AND enabled = 0" : ""}`, ownerOnly ? [id, ownerOnly] : [id]);
14575
+ if (result.changes === 0 && ownerOnly) {
14576
+ throw new ExtensionOwnershipError("Forbidden: extension must be your own disabled draft");
14577
+ }
14549
14578
  return result.changes > 0;
14550
14579
  }
14551
14580
  async function insertExtensionRun(args) {
@@ -20757,6 +20786,8 @@ function resourceIdOf(resource) {
20757
20786
  return resource.agentId;
20758
20787
  case "kv-namespace":
20759
20788
  return resource.namespace;
20789
+ case "extension":
20790
+ return resource.extensionId ?? null;
20760
20791
  case "app":
20761
20792
  return resource.appId;
20762
20793
  case "owned":
@@ -23685,7 +23716,7 @@ async function notifySlack(text) {
23685
23716
  return;
23686
23717
  }
23687
23718
  try {
23688
- const { getSlackApp: getSlackApp2 } = await import("./app-p8teva95.js");
23719
+ const { getSlackApp: getSlackApp2 } = await import("./app-zk1apkf6.js");
23689
23720
  const app = getSlackApp2();
23690
23721
  if (!app) {
23691
23722
  console.warn("[Jira webhook keepalive] Slack not available, cannot send notification");
@@ -23756,7 +23787,7 @@ async function deleteJiraWebhook(webhookId) {
23756
23787
  console.log(`[Jira webhook keepalive] Deleted webhook id=${webhookId}`);
23757
23788
  }
23758
23789
  async function overwriteWebhookIds(next) {
23759
- const { getDbClient: getDbClient2 } = await import("./db-r3jxf3wy.js");
23790
+ const { getDbClient: getDbClient2 } = await import("./db-y9zwsr79.js");
23760
23791
  await getDbClient2().transaction(async (tx) => {
23761
23792
  const row = await tx.get("SELECT metadata FROM oauth_apps WHERE provider = 'jira'");
23762
23793
  if (!row) {
@@ -97476,9 +97507,10 @@ async function reloadGlobalConfigsAndIntegrations() {
97476
97507
  return runWithoutRequestAuth(() => reloadGlobalConfigsAndIntegrationsInner());
97477
97508
  }
97478
97509
  async function reloadGlobalConfigsAndIntegrationsInner() {
97479
- const { getEmbeddingProvider: getEmbeddingProvider2, resetEmbeddingProvider } = await import("./index-gpfn1741.js");
97510
+ const { getEmbeddingProvider: getEmbeddingProvider2, resetEmbeddingProvider } = await import("./index-m9ks8a7t.js");
97480
97511
  const wasEmbeddingsConfigured = getEmbeddingProvider2().isConfigured();
97481
97512
  const updated = await loadGlobalConfigsIntoEnv(true);
97513
+ await stopSlackApp();
97482
97514
  const { resetFileStorageProvider } = await import("./registry-v5wytg0s.js");
97483
97515
  resetFileStorageProvider();
97484
97516
  resetEmbeddingProvider();
@@ -97488,10 +97520,10 @@ async function reloadGlobalConfigsAndIntegrationsInner() {
97488
97520
  integrations.push("embeddings");
97489
97521
  }
97490
97522
  if (!wasEmbeddingsConfigured && isEmbeddingsConfigured) {
97491
- import("./boot-reembed-je26h5y7.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
97523
+ import("./boot-reembed-22hd3jjn.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
97492
97524
  console.error("[config-reload] memory backfill failed (non-fatal):", err);
97493
97525
  });
97494
- import("./boot-reembed-1qmybsd4.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
97526
+ import("./boot-reembed-qe168424.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
97495
97527
  console.error("[config-reload] script backfill failed (non-fatal):", err);
97496
97528
  });
97497
97529
  }
@@ -97511,9 +97543,8 @@ async function reloadGlobalConfigsAndIntegrationsInner() {
97511
97543
  resetJira();
97512
97544
  if (await initJira())
97513
97545
  integrations.push("jira");
97514
- await stopSlackApp();
97515
- await startSlackApp();
97516
- integrations.push("slack");
97546
+ if (await startSlackApp())
97547
+ integrations.push("slack");
97517
97548
  return {
97518
97549
  configsLoaded: updated.length,
97519
97550
  keysUpdated: updated,
@@ -97813,6 +97844,7 @@ async function handleCore(req, res, myAgentId, apiKey) {
97813
97844
 
97814
97845
  // src/server.ts
97815
97846
  init_resolver();
97847
+ init_config();
97816
97848
 
97817
97849
  // src/tools/accept-steer.ts
97818
97850
  init_zod();
@@ -97978,7 +98010,7 @@ var storeProgressBlockedWaitingNudge = (r) => {
97978
98010
  const ms = r.data?.blockedWaitingElapsedMs;
97979
98011
  if (typeof ms !== "number")
97980
98012
  return;
97981
- return `That reads as blocked-waiting, ${formatIdleDuration(ms)} since your last update — call defer-task so a wake-up task resumes you instead of polling manually.`;
98013
+ return `That reads as blocked-waiting, ${formatIdleDuration(ms)} since your last update — keep working if you can, and if the wait is genuinely long, defer-task is one way to resume later instead of polling.`;
97982
98014
  };
97983
98015
  var workflowLongScriptTimeoutNudge = (r) => {
97984
98016
  if (!r.ok)
@@ -98304,7 +98336,7 @@ function setPreloadedTools(server, names) {
98304
98336
  async function applyPreToolCall(name, args, requestInfo, inputSchema) {
98305
98337
  if (requestInfo.callOrigin !== "mcp")
98306
98338
  return { args };
98307
- const dispatcher = await import("./dispatcher-06vph6q4.js");
98339
+ const dispatcher = await import("./dispatcher-9m9zss36.js");
98308
98340
  const result = await dispatcher.dispatchPre("pre.tool.call", { tool: name, args, requestInfo }, inputSchema ? {
98309
98341
  validateModify: async (data) => {
98310
98342
  const schema = normalizeObjectSchema(inputSchema) ?? inputSchema;
@@ -104632,11 +104664,7 @@ var FACTORIES = {
104632
104664
  };
104633
104665
  var SERVER_RATERS = new Set(["implicit-citation"]);
104634
104666
  function getRegisteredRaters() {
104635
- const raw = process.env.MEMORY_RATERS;
104636
- if (!raw || raw.trim() === "") {
104637
- return [new NoopRater];
104638
- }
104639
- const names = raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
104667
+ const names = getMemoryRaterNames();
104640
104668
  const raters = [];
104641
104669
  for (const name of names) {
104642
104670
  const factory = FACTORIES[name];
@@ -105491,7 +105519,6 @@ async function guardTerminalTaskResultWrite(task, write) {
105491
105519
 
105492
105520
  // src/tools/defer-task.ts
105493
105521
  init_types();
105494
- init_constants();
105495
105522
 
105496
105523
  class DeferAbortedError extends Error {
105497
105524
  }
@@ -105534,7 +105561,7 @@ function formatDeferralDateTime(target, now, tz) {
105534
105561
  zone = "UTC";
105535
105562
  }
105536
105563
  const t = partsInTz(target, zone);
105537
- const time = `${t.hour}:${t.minute}:${t.second}`;
105564
+ const time = `${t.hour}:${t.minute}`;
105538
105565
  const n = partsInTz(now, zone);
105539
105566
  if (t.year === n.year && t.month === n.month && t.day === n.day)
105540
105567
  return { date: "today", time };
@@ -105552,22 +105579,26 @@ async function resolveRequesterTimezone(requestedByUserId) {
105552
105579
  }
105553
105580
  return { tz: "UTC", isFallback: true };
105554
105581
  }
105555
- function renderShortDesc(note, max = 100) {
105556
- const firstLine = (note.split(`
105557
- `)[0] ?? "").trim().replace(/^pending:\s*/i, "");
105558
- if (firstLine.length <= max)
105559
- return firstLine;
105560
- return `${firstLine.slice(0, max - 1).trimEnd()}…`;
105582
+ function joinNames(names) {
105583
+ if (names.length < 2)
105584
+ return names[0] ?? "";
105585
+ return `${names.slice(0, -1).join(", ")} and ${names[names.length - 1]}`;
105561
105586
  }
105562
- function renderHumanFacingDeferral(note, nextRunAt, scheduleId, tz, isFallbackTz) {
105563
- const now = new Date;
105564
- const target = new Date(nextRunAt);
105565
- const { date: date2, time } = formatDeferralDateTime(target, now, tz);
105587
+ function renderWaitingOn(agentNames, watchedCount) {
105588
+ const named = joinNames([...new Set(agentNames.filter((name) => name.trim()))]);
105589
+ if (named)
105590
+ return named;
105591
+ return `${watchedCount} task${watchedCount === 1 ? "" : "s"}`;
105592
+ }
105593
+ function renderWhen(nextRunAt, tz, isFallbackTz) {
105594
+ const { date: date2, time } = formatDeferralDateTime(new Date(nextRunAt), new Date, tz);
105566
105595
  const timeLabel = isFallbackTz ? `${time} UTC` : time;
105567
- const shortId = scheduleId.slice(0, 8);
105568
- const link = `[${shortId}](${getAppUrl()}/schedules/${scheduleId})`;
105569
- const shortDesc = renderShortDesc(note);
105570
- return `Deferred until ${date2} ${timeLabel} (${link}) -> ${shortDesc}`;
105596
+ const day = date2 === "today" || date2 === "tomorrow" ? date2 : `on ${date2}`;
105597
+ return `${day} at ${timeLabel}`;
105598
+ }
105599
+ function renderHumanFacingDeferral(nextRunAt, tz, isFallbackTz, waitingOn) {
105600
+ const when = renderWhen(nextRunAt, tz, isFallbackTz);
105601
+ return waitingOn ? `Waiting on ${waitingOn} — or ${when} at the latest` : `Checking back ${when}`;
105571
105602
  }
105572
105603
  var registerDeferTaskTool = (server) => {
105573
105604
  createToolRegistrar(server)("defer-task", {
@@ -105650,6 +105681,7 @@ var registerDeferTaskTool = (server) => {
105650
105681
  const { tz: requesterTz, isFallback: isFallbackTz } = await resolveRequesterTimezone(task.requestedByUserId);
105651
105682
  try {
105652
105683
  const committed = await getDbClient().transaction(async () => {
105684
+ const watchedAgentNames = [];
105653
105685
  for (const watchedId of watchedTaskIds) {
105654
105686
  if (watchedId === taskId)
105655
105687
  throw new DeferAbortedError("Cannot wake on the task being deferred.");
@@ -105658,6 +105690,9 @@ var registerDeferTaskTool = (server) => {
105658
105690
  throw new DeferAbortedError(`Watched task ${watchedId} not found.`);
105659
105691
  if (isTerminalTaskStatus(watched.status))
105660
105692
  throw new DeferAbortedError(`Watched task ${watchedId} is already ${watched.status}; read its result instead of deferring.`);
105693
+ const watchedAgent = watched.agentId ? await getAgentById(watched.agentId) : null;
105694
+ if (watchedAgent?.name)
105695
+ watchedAgentNames.push(watchedAgent.name);
105661
105696
  }
105662
105697
  const schedule = await createScheduledTask({
105663
105698
  name: `deferred-${taskId.slice(0, 8)}-${Date.now()}-${crypto.randomUUID()}`,
@@ -105671,6 +105706,8 @@ var registerDeferTaskTool = (server) => {
105671
105706
  taskType: "deferred",
105672
105707
  tags: ["deferred"],
105673
105708
  priority: task.priority,
105709
+ requestedDelayMs: delayMs,
105710
+ requestedRunAt: runAt,
105674
105711
  modelTier: task.modelTier,
105675
105712
  parentTaskId: taskId,
105676
105713
  createdBy
@@ -105689,9 +105726,10 @@ var registerDeferTaskTool = (server) => {
105689
105726
  const deferralDetails = `${summary}
105690
105727
 
105691
105728
  Deferred until ${nextRunAt} (schedule ${schedule.id}). Pending: ${note}${checksBlock}`;
105692
- const terminalOutput = task.outputSchema ? output : renderHumanFacingDeferral(note, nextRunAt, schedule.id, requesterTz, isFallbackTz);
105729
+ const terminalOutput = task.outputSchema ? output : renderHumanFacingDeferral(nextRunAt, requesterTz, isFallbackTz, wakeOn ? renderWaitingOn(watchedAgentNames, watchedTaskIds.length) : undefined);
105693
105730
  const completed = await completeTask(taskId, terminalOutput, {
105694
- addTags: ["deferred"]
105731
+ addTags: ["deferred"],
105732
+ deferredAt: new Date().toISOString()
105695
105733
  });
105696
105734
  if (!completed) {
105697
105735
  throw new DeferAbortedError(`Task ${taskId} reached a terminal state before this deferral committed.`);
@@ -106058,6 +106096,7 @@ var extensionListItemSchema = looseObject({
106058
106096
  name: string().optional(),
106059
106097
  version: number().optional(),
106060
106098
  activeVersion: number().optional(),
106099
+ createdByAgentId: string().nullable().optional(),
106061
106100
  enabled: boolean().optional(),
106062
106101
  status: string().optional(),
106063
106102
  priority: number().optional(),
@@ -106068,6 +106107,7 @@ var extensionToolOutputSchema = swarmToolOutputSchema({
106068
106107
  name: string().optional(),
106069
106108
  version: number().optional(),
106070
106109
  activeVersion: number().optional(),
106110
+ createdByAgentId: string().nullable().optional(),
106071
106111
  enabled: boolean().optional(),
106072
106112
  status: string().optional(),
106073
106113
  priority: number().optional(),
@@ -106083,6 +106123,7 @@ function coerceExtensionSummary(entry) {
106083
106123
  const extension = isRecord2(entry) ? entry : {};
106084
106124
  return {
106085
106125
  id: typeof extension.id === "string" ? extension.id : undefined,
106126
+ createdByAgentId: typeof extension.createdByAgentId === "string" ? extension.createdByAgentId : null,
106086
106127
  name: typeof extension.name === "string" ? extension.name : undefined,
106087
106128
  version: typeof extension.version === "number" ? extension.version : undefined,
106088
106129
  activeVersion: typeof extension.activeVersion === "number" ? extension.activeVersion : undefined,
@@ -106207,7 +106248,7 @@ var registerExtensionEnableTool = (server) => {
106207
106248
  // src/tools/extension-install.ts
106208
106249
  init_zod();
106209
106250
  init_types();
106210
- var EXTENSION_INSTALL_DESCRIPTION = "Validate and store a TypeScript extension bundle (manifest plus a files map with one hooks.ts). Fetch the hook contract first: GET /api/extensions/type-defs returns swarm-extension.d.ts with every event and modify shape. The extension remains disabled until a lead, operator, or dashboard user enables it with extension-enable.";
106251
+ var EXTENSION_INSTALL_DESCRIPTION = "Any authenticated agent may create and install its own TypeScript extension bundle (manifest plus a files map with one hooks.ts). Fetch the hook contract first: GET /api/extensions/type-defs returns swarm-extension.d.ts with every event and modify shape. The installing agent is recorded as createdByAgentId. Workers may install subsequent versions only for their own extensions; those versions remain inactive. A new extension remains disabled until a lead, operator, or dashboard user enables it with extension-enable.";
106211
106252
  function extensionInstallResult(data, fallbackName) {
106212
106253
  const body = data;
106213
106254
  const extension = coerceExtensionSummary(body.extension);
@@ -106254,9 +106295,9 @@ function extensionListItems(data) {
106254
106295
  return data.extensions.map(coerceExtensionSummary);
106255
106296
  }
106256
106297
  function renderExtensionsTable(extensions) {
106257
- const header = "| Name | Version | Active | Enabled | Status | Priority | Failures |";
106258
- const divider = "| --- | ---: | ---: | --- | --- | ---: | ---: |";
106259
- const rows = extensions.map((extension) => `| ${extension.name ?? "?"} | ${extension.version ?? "?"} | ${extension.activeVersion ?? "?"} | ${extension.enabled ?? false} | ${extension.status ?? "unknown"} | ${extension.priority ?? "?"} | ${extension.consecutiveFailures ?? 0} |`);
106298
+ const header = "| Name | Owner agent | Version | Active | Enabled | Status | Priority | Failures |";
106299
+ const divider = "| --- | --- | ---: | ---: | --- | --- | ---: | ---: |";
106300
+ const rows = extensions.map((extension) => `| ${extension.name ?? "?"} | ${extension.createdByAgentId ?? "operator/user"} | ${extension.version ?? "?"} | ${extension.activeVersion ?? "?"} | ${extension.enabled ?? false} | ${extension.status ?? "unknown"} | ${extension.priority ?? "?"} | ${extension.consecutiveFailures ?? 0} |`);
106260
106301
  return [header, divider, ...rows].join(`
106261
106302
  `);
106262
106303
  }
@@ -106661,7 +106702,7 @@ var registerJoinSwarmTool = (server) => {
106661
106702
  const agentId = requestInfo.agentId ?? requestedId ?? "";
106662
106703
  try {
106663
106704
  const agent = await getDbClient().transaction(async () => {
106664
- const agents = await getAllAgents();
106705
+ const agents = await getAllAgents({ includeExtensions: true });
106665
106706
  const existingIdAgent = agents.find((agent3) => agent3.id === agentId);
106666
106707
  if (existingIdAgent) {
106667
106708
  throw new Error(`Agent with ID "${agentId}" already exists.`);
@@ -117032,7 +117073,7 @@ async function notifyAutomationPreflightFailure(preflight) {
117032
117073
  return;
117033
117074
  }
117034
117075
  try {
117035
- const { getSlackApp: getSlackApp2 } = await import("./app-p8teva95.js");
117076
+ const { getSlackApp: getSlackApp2 } = await import("./app-zk1apkf6.js");
117036
117077
  const app = getSlackApp2();
117037
117078
  if (!app) {
117038
117079
  console.warn("[Automation Preflight] Slack not available, cannot send notification");
@@ -117055,6 +117096,7 @@ Fix setup: ${getAppUrl()}${preflight.fixUrl}`),
117055
117096
  }
117056
117097
 
117057
117098
  // src/be/automation-preflight.ts
117099
+ init_config();
117058
117100
  init_db();
117059
117101
  var NEEDS_SETUP_PREFIX = "needs_setup:";
117060
117102
  function hasValue(value) {
@@ -117232,7 +117274,7 @@ async function getAutomationSetupStates() {
117232
117274
  const agentFsOrg = process.env.AGENT_FS_DEFAULT_ORG_ID ?? process.env.AGENT_FS_SHARED_ORG_ID;
117233
117275
  const gscConfigured = present(process.env.GSC_SERVICE_ACCOUNT_BASE64) || present(process.env.GSC_SERVICE_ACCOUNT_JSON);
117234
117276
  return {
117235
- slack: enabled(process.env.SLACK_DISABLE) && present(process.env.SLACK_BOT_TOKEN) && present(process.env.SLACK_APP_TOKEN) ? "verified" : "unverified",
117277
+ slack: getSlackConfiguration().mode === "socket" && isSlackConfigured() ? "configured" : "unverified",
117236
117278
  github: present(process.env.GITHUB_WEBHOOK_SECRET) && present(process.env.GITHUB_APP_ID) && present(process.env.GITHUB_APP_PRIVATE_KEY) ? "verified" : "unverified",
117237
117279
  linear: linearTokens ? "verified" : "unverified",
117238
117280
  jira: jiraTokens && jiraCloudId ? "verified" : "unverified",
@@ -117774,7 +117816,23 @@ async function startWorkflowExecution(workflow, triggerData, registry, options =
117774
117816
  await walkGraph(workflow.definition, runId, ctx, entryNodes, registry, workflow.id, secretKeys, options);
117775
117817
  return runId;
117776
117818
  }
117819
+ var activeWalks = new Map;
117820
+ function isWorkflowRunActive(runId) {
117821
+ return activeWalks.has(runId);
117822
+ }
117777
117823
  async function walkGraph(def, runId, ctx, startNodes, registry, workflowId, secretKeys = new Set, options = {}) {
117824
+ activeWalks.set(runId, (activeWalks.get(runId) ?? 0) + 1);
117825
+ try {
117826
+ await walkGraphOwned(def, runId, ctx, startNodes, registry, workflowId, secretKeys, options);
117827
+ } finally {
117828
+ const remaining = activeWalks.get(runId) - 1;
117829
+ if (remaining === 0)
117830
+ activeWalks.delete(runId);
117831
+ else
117832
+ activeWalks.set(runId, remaining);
117833
+ }
117834
+ }
117835
+ async function walkGraphOwned(def, runId, ctx, startNodes, registry, workflowId, secretKeys = new Set, options = {}) {
117778
117836
  if (!options.requestedByUserId) {
117779
117837
  options = {
117780
117838
  ...options,
@@ -119062,7 +119120,7 @@ async function recoverIncompleteRuns(registry) {
119062
119120
  recovered += await recoverApprovalWaitingRuns(registry);
119063
119121
  recovered += await recoverWaitStates(registry);
119064
119122
  if (recovered > 0) {
119065
- console.log(`[workflows] Recovered ${recovered} incomplete run(s) on startup`);
119123
+ console.log(`[workflows] Recovered ${recovered} incomplete run(s)`);
119066
119124
  }
119067
119125
  return recovered;
119068
119126
  }
@@ -119071,6 +119129,8 @@ async function recoverRunningRuns(registry) {
119071
119129
  let recovered = 0;
119072
119130
  for (const runId of runningRunIds) {
119073
119131
  try {
119132
+ if (isWorkflowRunActive(runId))
119133
+ continue;
119074
119134
  const run = await getWorkflowRun(runId);
119075
119135
  if (!run || run.status !== "running")
119076
119136
  continue;
@@ -119080,6 +119140,8 @@ async function recoverRunningRuns(registry) {
119080
119140
  const completedNodeIds = new Set(await getCompletedStepNodeIds(runId));
119081
119141
  const ctx = run.context ?? {};
119082
119142
  const readyNodes = findReadyNodes(workflow.definition, completedNodeIds);
119143
+ if (isWorkflowRunActive(runId))
119144
+ continue;
119083
119145
  if (readyNodes.length === 0) {
119084
119146
  await updateWorkflowRun(runId, {
119085
119147
  status: "completed",
@@ -120177,7 +120239,7 @@ class HumanInTheLoopExecutor extends BaseExecutor {
120177
120239
  }
120178
120240
  if (notification.channel === "slack") {
120179
120241
  try {
120180
- const { getSlackApp: getSlackApp2 } = await import("./app-p8teva95.js");
120242
+ const { getSlackApp: getSlackApp2 } = await import("./app-zk1apkf6.js");
120181
120243
  const slackApp = getSlackApp2();
120182
120244
  if (!slackApp) {
120183
120245
  console.warn("[HITL] Slack not initialized — cannot send notification");
@@ -120297,7 +120359,7 @@ class NotifyExecutor extends BaseExecutor {
120297
120359
  }
120298
120360
  }
120299
120361
  case "slack": {
120300
- const { getSlackApp: getSlackApp2 } = await import("./app-p8teva95.js");
120362
+ const { getSlackApp: getSlackApp2 } = await import("./app-zk1apkf6.js");
120301
120363
  const app = getSlackApp2();
120302
120364
  if (!app) {
120303
120365
  return {
@@ -121604,6 +121666,9 @@ var registerCreateScheduleTool = (server) => {
121604
121666
  if (!agent) {
121605
121667
  return toolErr(`Target agent not found: ${targetAgentId}`);
121606
121668
  }
121669
+ if (isExtensionAgent(agent)) {
121670
+ return toolErr(extensionAgentAssignmentError(agent));
121671
+ }
121607
121672
  }
121608
121673
  const resolvedTargetType = targetType ?? "agent-task";
121609
121674
  if (resolvedTargetType === "agent-task" && !taskTemplate) {
@@ -122142,6 +122207,9 @@ var registerPatchScheduleTool = (server) => {
122142
122207
  if (!agent) {
122143
122208
  return toolErr(`Target agent not found: ${targetAgentId}`);
122144
122209
  }
122210
+ if (isExtensionAgent(agent)) {
122211
+ return toolErr(extensionAgentAssignmentError(agent));
122212
+ }
122145
122213
  }
122146
122214
  if (newName && newName !== schedule.name) {
122147
122215
  const existing = await getScheduledTaskByName(newName);
@@ -122429,6 +122497,9 @@ var registerUpdateScheduleTool = (server) => {
122429
122497
  if (!agent) {
122430
122498
  return toolErr(`Target agent not found: ${targetAgentId}`);
122431
122499
  }
122500
+ if (isExtensionAgent(agent)) {
122501
+ return toolErr(extensionAgentAssignmentError(agent));
122502
+ }
122432
122503
  }
122433
122504
  if (newName && newName !== schedule.name) {
122434
122505
  const existing = await getScheduledTaskByName(newName);
@@ -123634,6 +123705,9 @@ async function sendTaskHandler(ctx, {
123634
123705
  message: `Agent with ID "${targetAgentId}" not found.`
123635
123706
  };
123636
123707
  }
123708
+ if (isExtensionAgent(agent)) {
123709
+ return { success: false, message: extensionAgentAssignmentError(agent) };
123710
+ }
123637
123711
  if (taskOptions.routingAffinity?.leadOnly && !agent.isLead) {
123638
123712
  return {
123639
123713
  success: false,
@@ -129105,7 +129179,8 @@ function hasCapability(cap) {
129105
129179
  return getCapabilities().has(cap);
129106
129180
  }
129107
129181
  function getEnabledCapabilities() {
129108
- return Array.from(getCapabilities());
129182
+ const capabilities = Array.from(getCapabilities());
129183
+ return getSlackConfiguration().mode === "socket" ? capabilities : capabilities.filter((capability) => capability !== "slack");
129109
129184
  }
129110
129185
  function isScriptsOnlyMcp() {
129111
129186
  return resolveScriptsOnlyMode({ env: process.env.SCRIPTS_ONLY_MCP });
@@ -130228,7 +130303,7 @@ function extensionAgentName(name) {
130228
130303
  async function ensureExtensionAgent(name) {
130229
130304
  const agentName = extensionAgentName(name);
130230
130305
  return await getDbClient().transaction(async () => {
130231
- let agent = (await getAllAgents()).find((candidate) => candidate.name === agentName);
130306
+ let agent = (await getAllAgents({ includeExtensions: true })).find((candidate) => candidate.name === agentName);
130232
130307
  if (!agent) {
130233
130308
  agent = await createAgent({
130234
130309
  name: agentName,
@@ -130244,14 +130319,14 @@ async function ensureExtensionAgent(name) {
130244
130319
  await updateAgentMaxTasks(agent.id, 0);
130245
130320
  await updateAgentProfile(agent.id, {
130246
130321
  description: `System agent for extension ${name}`,
130247
- role: "extension",
130322
+ role: EXTENSION_AGENT_ROLE,
130248
130323
  capabilities: []
130249
- });
130324
+ }, undefined, { allowExtensionRole: true });
130250
130325
  return agent.id;
130251
130326
  });
130252
130327
  }
130253
130328
  async function deactivateExtensionAgent(name) {
130254
- const agent = (await getAllAgents()).find((candidate) => candidate.name === extensionAgentName(name));
130329
+ const agent = (await getAllAgents({ includeExtensions: true })).find((candidate) => candidate.name === extensionAgentName(name));
130255
130330
  if (agent && agent.status !== "offline")
130256
130331
  await updateAgentStatus(agent.id, "offline");
130257
130332
  }
@@ -130540,25 +130615,18 @@ function maxUpdatedAt(extensions) {
130540
130615
  return extensions.reduce((latest, extension) => extension.updatedAt > latest ? extension.updatedAt : latest, "");
130541
130616
  }
130542
130617
  async function loadableExtension(record3) {
130543
- if (record3.activeVersion !== record3.version) {
130544
- const version = await getExtensionVersion(record3.id, record3.activeVersion);
130545
- if (!version) {
130546
- throw new ExtensionLifecycleError(`Extension version ${record3.activeVersion} was not found`, 404);
130547
- }
130548
- return {
130549
- record: {
130550
- ...record3,
130551
- manifestJson: version.manifestJson,
130552
- contentHash: version.contentHash
130553
- },
130554
- manifest: ExtensionManifestSchema.parse(JSON.parse(version.manifestJson)),
130555
- files: JSON.parse(version.filesJson)
130556
- };
130618
+ const version = await getExtensionVersion(record3.id, record3.activeVersion);
130619
+ if (!version) {
130620
+ throw new ExtensionLifecycleError(`Extension version ${record3.activeVersion} was not found`, 404);
130557
130621
  }
130558
130622
  return {
130559
- record: record3,
130560
- manifest: ExtensionManifestSchema.parse(JSON.parse(record3.manifestJson)),
130561
- files: await getExtensionFiles(record3.id)
130623
+ record: {
130624
+ ...record3,
130625
+ manifestJson: version.manifestJson,
130626
+ contentHash: version.contentHash
130627
+ },
130628
+ manifest: ExtensionManifestSchema.parse(JSON.parse(version.manifestJson)),
130629
+ files: JSON.parse(version.filesJson)
130562
130630
  };
130563
130631
  }
130564
130632
  async function removeRegistered(id2) {
@@ -131183,4 +131251,4 @@ async function dispatchPost(event, payload, opts) {
131183
131251
  }
131184
131252
  }
131185
131253
 
131186
- export { DEFAULT_NEGOTIATED_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, isJSONRPCRequest, isJSONRPCResultResponse, isJSONRPCErrorResponse, JSONRPCMessageSchema, isInitializeRequest, McpServer, isGitHubEnabled, initGitHub, verifyWebhookSignature, isAgentMailEnabled, initAgentMail, verifyAgentMailWebhook, findUserById, findUserByExternalId, getUserIdentities, listUserEvents, listUserTokens, recordIdentityEvent, findOrCreateUserByEmail, linkIdentity, unlinkIdentity, mintToken, revokeToken, resolveUserByToken, mintSessionToken, revokeSessionToken, fingerprintApiKey, resolveIdentity, renderIdentity, createAdditiveBuffer, installExtension, getExtensionFiles, getExtensionById, getExtensionByName, listExtensions, listExtensionVersions, updateExtensionMeta, deleteExtension, listExtensionRuns, SDK_ALLOWLIST, mcpToolNameForSdkMethod, mcpOverflowAuthError, toolErr, createToolRegistrar, warnIfCorsAllowsAnyOrigin, isOriginAllowedForCredentials, setCorsHeaders, parseQueryParams, getPathSegments, wireHttpSpanLifecycle, safeRequestUrlForLog, agentWithCapacity, parseBody, BODY_TOO_LARGE, enforceContentLengthCap, json, jsonError, triggerSchemaErrorResponse, deriveApiBaseUrl, httpServerSemconvAttributes, runtimeInstanceHeader, describeRequestRoute, route, handleMcpBridge, Redacted, SCRIPT_SDK_RESPONSE_LIMIT_BYTES, readScriptSdkJsonResponse, ExtensionConfigError, ExtensionLifecycleError, setExtensionLoopbackBaseUrl, enableExtension, disableExtension, activateVersion, reloadExtension, loadEnabledExtensions, stopExtensionRuntime, ExtensionAbortedError, isRegistered, isExtensionAgentId, getExtensionBridgeToken, resolveBridgeCallOrigin, extensionIdForAgent, runContext, registerLoaded, unregister, listRegistered, dispatchPre, dispatchPost, TaskCreationBlockedError, createTaskWithSiblingAwareness, isInboxAllowed, isSenderAllowed, handleMessageReceived, AGENT_MAX_TASKS_CONFIG_KEY, reconcileAgentMaxTasksPolicy, resetAgentMaxTasksMirror, upsertSwarmConfigWithPolicyMirror, runtimeStaleThresholdMinutes, upsertRuntimeInstance, getRuntimeInstanceById, touchRuntimeInstance, countActiveRuntimeInstancesForAgent, listRuntimeInstancesForAgent, setRuntimeCredentialReady, reconcileAgentStatusFromRuntimes, agentsWithLiveRuntime, expireStaleRuntimeInstances, enqueueAuditRow, enqueueAdmissionRow, flushAuditBuffer, startAuditWriter, stopAuditWriter, startAuditGc, stopAuditGc, handlePullRequest, handleIssue, handleComment, handlePullRequestReview, handleCheckRun, handleCheckSuite, handleWorkflowRun, isGitLabEnabled, initGitLab, verifyGitLabWebhook, handleMergeRequest, handleIssue2 as handleIssue1, handleNote, handlePipeline, repointTrackerSyncBySwarmId, getJiraMetadata, updateJiraMetadata, clearJiraMetadata, recordUnmappedIdentity, MAX_TASK_ATTACHMENT_BYTES, recordTaskAttachmentUpload, buildEffectiveText, bufferedFileFailures, fetchSlackFiles, createSlackTaskWithFiles, notifySlackFileFailures, hasOtherUserMention, broadcastMatches, routeMessage, extractTaskFromMessage, extractSlackMessageText, registerJiraWebhook, deleteJiraWebhook, isJiraEnabled, initJira, handleJiraWebhook, handleAgentSessionEvent, handleIssueUpdate, handleIssueDelete, handleAgentSessionPrompted, isLinearEnabled, initLinear, parseCookieHeader, extractAndVerifyCookie, issuePageSessionCookie, resolveHttpRequestAuth, loadGlobalConfigsIntoEnv, reloadGlobalConfigsAndIntegrations, scheduleIntegrationsReload, handleCore, userCtx, resolveTaskAuditUserId, resolveHttpAuditUserId, resolveHttpFavoriteOwner, handleApps, getUserCommsPrefs, getTaskDetailsInputSchema, getTaskDetailsOutputSchema, getTaskDetailsHandler, cancelTaskInputSchema, cancelTaskOutputSchema, cancelTaskHandler, executeReadOnlyQuery, assertSelectOnlyQuery, handleDbQuery, snapshotMetric, AssetKeyAuthorizationError, authorizeAssetKeyWrite, snapshotPage, assertOAuthAppUrlsSafe, assertOAuthEgressUrlSafe, listOAuthPresets, listOAuthPresetIds, getOAuthPreset, hydrateOAuthAppFromPreset, scopedResourceScopeIdSchema, resolveScopedResourceId, dedupeMemoryDocumentIds, recordMemoryAccesses, recordRetrievals, ExplicitSelfDuplicateError, applyRating, shouldPersistAutomaticTaskMemory, REBOOT_RETRY_PIN_TAG, getPinCandidateAgent, resolveLeadOnlyRecoveryAssignment, getResumeGeneration, getNextResumeGeneration, createWorkerTaskFollowUp, createResumeFollowUp, createRerouteDecisionTask, createPoolStarvationDecisionTask, validateJsonSchema, guardTerminalTaskResultWrite, getTasksInputSchema, getTasksOutputSchema, getTasksHandler, reservedNamespaceError, reservedRoomKeyError, refreshLinks, canReadMemory, getLinksForMemory, expandCandidatesWithGraph, indexMemoryContent, markKapsoMessageRead, sendKapsoReaction, getKapsoConfig, getKapsoNumberMapping, markKapsoMessageSeen, resolveRoomNamespace, roomRequestInfo, authorizeRoomNamespace, RoomOperationSchema, removeAwarenessStates, roomTopic, decodeRoomSnapshot, roomView, getRoom, changeRoom, applyRoomUpdate, resetRoom, sweepRooms, closeRooms, removeNamespaceRooms, automationIntegrationFixUrl, preflightAutomation, getAutomationSetupStates, listEnabledAutomationPreflightInputs, TriggerSchemaError, startWorkflowExecution, setupWorkflowResumeListener, retryFailedRun, cancelWorkflowRun, resumeWaitState, initWaitBusSubscriptions, subscribeWaitToBus, recoverIncompleteRuns, startRetryPoller, stopRetryPoller, validateTemplateVariables, instantiateTemplate, handleWebhookTrigger, logOpenWebhookTriggers, handleEventTrigger, handleScheduleTrigger, verifyHmacSignature, WebhookError, snapshotWorkflow, snapshotAndUpdateWorkflow, startWaitPoller, stopWaitPoller, RawLlmConfigSchema, RawLlmOutputSchema, executeRawLlm, getExecutorRegistry, initWorkflows, dispatchScheduleTarget, calculateNextRun, startScheduler, stopScheduler, runScheduleNow, createEvent, createEventsBatch, getEventCountsFiltered, getEventsFiltered, mergeScheduleTiming, validateRecurringTiming, checkOutputSchemaShape, sendTaskOutputSchema, sendTaskHandler, parseSkillContent, steerTaskUserInputSchema, steerTaskOutputSchema, steerTaskHandler, canClaim, emitBudgetRefusalSideEffects, taskActionInputSchema, taskActionOutputSchema, taskActionHandler, patchWorkflowDefinition, resolveScriptsOnlyMode, ALL_CAPABILITIES, hasCapability, getEnabledCapabilities, createServer };
131254
+ export { DEFAULT_NEGOTIATED_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, isJSONRPCRequest, isJSONRPCResultResponse, isJSONRPCErrorResponse, JSONRPCMessageSchema, isInitializeRequest, McpServer, isGitHubEnabled, initGitHub, verifyWebhookSignature, isAgentMailEnabled, initAgentMail, verifyAgentMailWebhook, findUserById, findUserByExternalId, getUserIdentities, listUserEvents, listUserTokens, recordIdentityEvent, findOrCreateUserByEmail, linkIdentity, unlinkIdentity, mintToken, revokeToken, resolveUserByToken, mintSessionToken, revokeSessionToken, fingerprintApiKey, resolveIdentity, renderIdentity, createAdditiveBuffer, ExtensionOwnershipError, installExtension, getExtensionFiles, getExtensionById, getExtensionByName, listExtensions, listExtensionVersions, updateExtensionMeta, deleteExtension, listExtensionRuns, SDK_ALLOWLIST, mcpToolNameForSdkMethod, mcpOverflowAuthError, toolErr, createToolRegistrar, warnIfCorsAllowsAnyOrigin, isOriginAllowedForCredentials, setCorsHeaders, parseQueryParams, getPathSegments, wireHttpSpanLifecycle, safeRequestUrlForLog, agentWithCapacity, parseBody, BODY_TOO_LARGE, enforceContentLengthCap, json, jsonError, triggerSchemaErrorResponse, deriveApiBaseUrl, httpServerSemconvAttributes, runtimeInstanceHeader, describeRequestRoute, route, handleMcpBridge, Redacted, SCRIPT_SDK_RESPONSE_LIMIT_BYTES, readScriptSdkJsonResponse, ExtensionConfigError, ExtensionLifecycleError, setExtensionLoopbackBaseUrl, enableExtension, disableExtension, activateVersion, reloadExtension, loadEnabledExtensions, stopExtensionRuntime, ExtensionAbortedError, isRegistered, isExtensionAgentId, getExtensionBridgeToken, resolveBridgeCallOrigin, extensionIdForAgent, runContext, registerLoaded, unregister, listRegistered, dispatchPre, dispatchPost, TaskCreationBlockedError, createTaskWithSiblingAwareness, isInboxAllowed, isSenderAllowed, handleMessageReceived, AGENT_MAX_TASKS_CONFIG_KEY, reconcileAgentMaxTasksPolicy, resetAgentMaxTasksMirror, upsertSwarmConfigWithPolicyMirror, runtimeStaleThresholdMinutes, upsertRuntimeInstance, getRuntimeInstanceById, touchRuntimeInstance, countActiveRuntimeInstancesForAgent, listRuntimeInstancesForAgent, setRuntimeCredentialReady, reconcileAgentStatusFromRuntimes, agentsWithLiveRuntime, expireStaleRuntimeInstances, enqueueAuditRow, enqueueAdmissionRow, flushAuditBuffer, startAuditWriter, stopAuditWriter, startAuditGc, stopAuditGc, handlePullRequest, handleIssue, handleComment, handlePullRequestReview, handleCheckRun, handleCheckSuite, handleWorkflowRun, isGitLabEnabled, initGitLab, verifyGitLabWebhook, handleMergeRequest, handleIssue2 as handleIssue1, handleNote, handlePipeline, repointTrackerSyncBySwarmId, getJiraMetadata, updateJiraMetadata, clearJiraMetadata, recordUnmappedIdentity, MAX_TASK_ATTACHMENT_BYTES, recordTaskAttachmentUpload, buildEffectiveText, bufferedFileFailures, fetchSlackFiles, createSlackTaskWithFiles, notifySlackFileFailures, hasOtherUserMention, broadcastMatches, routeMessage, extractTaskFromMessage, extractSlackMessageText, registerJiraWebhook, deleteJiraWebhook, isJiraEnabled, initJira, handleJiraWebhook, handleAgentSessionEvent, handleIssueUpdate, handleIssueDelete, handleAgentSessionPrompted, isLinearEnabled, initLinear, parseCookieHeader, extractAndVerifyCookie, issuePageSessionCookie, resolveHttpRequestAuth, loadGlobalConfigsIntoEnv, reloadGlobalConfigsAndIntegrations, scheduleIntegrationsReload, handleCore, userCtx, resolveTaskAuditUserId, resolveHttpAuditUserId, resolveHttpFavoriteOwner, handleApps, getUserCommsPrefs, getTaskDetailsInputSchema, getTaskDetailsOutputSchema, getTaskDetailsHandler, cancelTaskInputSchema, cancelTaskOutputSchema, cancelTaskHandler, executeReadOnlyQuery, assertSelectOnlyQuery, handleDbQuery, snapshotMetric, AssetKeyAuthorizationError, authorizeAssetKeyWrite, snapshotPage, assertOAuthAppUrlsSafe, assertOAuthEgressUrlSafe, listOAuthPresets, listOAuthPresetIds, getOAuthPreset, hydrateOAuthAppFromPreset, scopedResourceScopeIdSchema, resolveScopedResourceId, dedupeMemoryDocumentIds, recordMemoryAccesses, recordRetrievals, ExplicitSelfDuplicateError, applyRating, shouldPersistAutomaticTaskMemory, REBOOT_RETRY_PIN_TAG, getPinCandidateAgent, resolveLeadOnlyRecoveryAssignment, getResumeGeneration, getNextResumeGeneration, createWorkerTaskFollowUp, createResumeFollowUp, createRerouteDecisionTask, createPoolStarvationDecisionTask, validateJsonSchema, guardTerminalTaskResultWrite, getTasksInputSchema, getTasksOutputSchema, getTasksHandler, reservedNamespaceError, reservedRoomKeyError, refreshLinks, canReadMemory, getLinksForMemory, expandCandidatesWithGraph, indexMemoryContent, markKapsoMessageRead, sendKapsoReaction, getKapsoConfig, getKapsoNumberMapping, markKapsoMessageSeen, resolveRoomNamespace, roomRequestInfo, authorizeRoomNamespace, RoomOperationSchema, removeAwarenessStates, roomTopic, decodeRoomSnapshot, roomView, getRoom, changeRoom, applyRoomUpdate, resetRoom, sweepRooms, closeRooms, removeNamespaceRooms, automationIntegrationFixUrl, preflightAutomation, getAutomationSetupStates, listEnabledAutomationPreflightInputs, TriggerSchemaError, startWorkflowExecution, setupWorkflowResumeListener, retryFailedRun, cancelWorkflowRun, resumeWaitState, initWaitBusSubscriptions, subscribeWaitToBus, recoverIncompleteRuns, startRetryPoller, stopRetryPoller, validateTemplateVariables, instantiateTemplate, handleWebhookTrigger, logOpenWebhookTriggers, handleEventTrigger, handleScheduleTrigger, verifyHmacSignature, WebhookError, snapshotWorkflow, snapshotAndUpdateWorkflow, startWaitPoller, stopWaitPoller, RawLlmConfigSchema, RawLlmOutputSchema, executeRawLlm, getExecutorRegistry, initWorkflows, dispatchScheduleTarget, calculateNextRun, startScheduler, stopScheduler, runScheduleNow, createEvent, createEventsBatch, getEventCountsFiltered, getEventsFiltered, mergeScheduleTiming, validateRecurringTiming, checkOutputSchemaShape, sendTaskOutputSchema, sendTaskHandler, parseSkillContent, steerTaskUserInputSchema, steerTaskOutputSchema, steerTaskHandler, canClaim, emitBudgetRefusalSideEffects, taskActionInputSchema, taskActionOutputSchema, taskActionHandler, patchWorkflowDefinition, resolveScriptsOnlyMode, ALL_CAPABILITIES, hasCapability, getEnabledCapabilities, createServer };