@desplega.ai/agent-swarm 2.7.2 → 2.7.3

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 (220) hide show
  1. package/README.md +6 -0
  2. package/dist/{acp-adapter-624yge7a.js → acp-adapter-pdzw76ja.js} +1 -1
  3. package/dist/{actions-rd9xn281.js → actions-a90cfpca.js} +21 -21
  4. package/dist/{amp-adapter-k27hc00p.js → amp-adapter-4vtywcjk.js} +2 -2
  5. package/dist/{app-sjm3xc7g.js → app-8k68gygk.js} +3 -3
  6. package/dist/{assistant-6jbzs8wa.js → assistant-ck01q2yg.js} +32 -21
  7. package/dist/{boot-reembed-e2348eqc.js → boot-reembed-33spavpd.js} +1 -1
  8. package/dist/{boot-reembed-w53pd5xt.js → boot-reembed-xzge83a2.js} +1 -1
  9. package/dist/{boot-scrub-sweep-cpy4yg97.js → boot-scrub-sweep-mxvb8dr3.js} +3 -3
  10. package/dist/{boot-seeds-f6j4t6k6.js → boot-seeds-rpm8bb5r.js} +4 -4
  11. package/dist/{claude-adapter-v3ac8esd.js → claude-adapter-q12bcfj9.js} +3 -3
  12. package/dist/{claude-managed-setup-yyrkqvtm.js → claude-managed-setup-11vb6q89.js} +1 -1
  13. package/dist/{claude-sdk-session-85j69v6d.js → claude-sdk-session-gkv1107j.js} +10325 -10243
  14. package/dist/{cli-rs59z1qx.js → cli-07pcqwaj.js} +1 -1
  15. package/dist/{cli-6vq3ymqm.js → cli-0tkm519n.js} +1 -1
  16. package/dist/{cli-s7cm1927.js → cli-0xzbk52h.js} +4 -4
  17. package/dist/{cli-g0zc1b40.js → cli-0zae6bs6.js} +2 -2
  18. package/dist/{cli-p8yrsmfn.js → cli-10kjx0dm.js} +1 -1
  19. package/dist/{cli-7xsq63pe.js → cli-157ykn37.js} +10 -9
  20. package/dist/{cli-vjcj9k2p.js → cli-2h0rfmqk.js} +1 -1
  21. package/dist/{cli-9wasax9f.js → cli-35nzvqaf.js} +1 -1
  22. package/dist/{cli-e1p7dqe1.js → cli-4aydmmdy.js} +24 -3
  23. package/dist/{cli-942pp3bc.js → cli-54ax65rn.js} +3 -3
  24. package/dist/{cli-10cp92df.js → cli-5ke7gxwr.js} +6 -6
  25. package/dist/{cli-femw4q81.js → cli-6151a7dr.js} +2 -2
  26. package/dist/{cli-3cywb44q.js → cli-77eq8txs.js} +85 -3
  27. package/dist/{cli-atpfk4yd.js → cli-7cwrwb5x.js} +5 -5
  28. package/dist/{cli-bfbpvccx.js → cli-8a1k6mat.js} +61 -49
  29. package/dist/{cli-c18941tx.js → cli-8ch3b2r7.js} +3 -3
  30. package/dist/{cli-rs2s1t05.js → cli-9fk56y8c.js} +4 -4
  31. package/dist/{cli-0wx63vvw.js → cli-9km88w11.js} +1 -1
  32. package/dist/{cli-qy0z3mfj.js → cli-9vttw9nz.js} +56 -46
  33. package/dist/{cli-mzgppb7q.js → cli-a0w50zw9.js} +4 -4
  34. package/dist/{cli-z8a4mfz1.js → cli-aqp59jmv.js} +4 -4
  35. package/dist/{cli-5d8wd50e.js → cli-bs0fwb23.js} +1 -1
  36. package/dist/{cli-fa4kxxx3.js → cli-ct5920jb.js} +2 -2
  37. package/dist/{cli-0awbtmv2.js → cli-dek8hqjc.js} +10 -10
  38. package/dist/{cli-qp6adcmw.js → cli-e24w2mvk.js} +1 -1
  39. package/dist/{cli-t3npd8hm.js → cli-ghfhn1qc.js} +1 -1
  40. package/dist/{cli-jmcf8cnz.js → cli-ja369zab.js} +1 -1
  41. package/dist/{cli-wtjg6je3.js → cli-jhh7tbx6.js} +1 -1
  42. package/dist/{cli-e19bgatr.js → cli-jmk31131.js} +2 -2
  43. package/dist/{cli-2cj8fqv1.js → cli-kjcdzea8.js} +1 -1
  44. package/dist/{cli-1xpr5992.js → cli-kjha1q9k.js} +3 -3
  45. package/dist/{cli-9jfty8px.js → cli-ktcdczth.js} +538 -30
  46. package/dist/{cli-exd52qn4.js → cli-mcmpbpcc.js} +2 -2
  47. package/dist/{cli-2m2p3snc.js → cli-mmf43vcp.js} +6 -6
  48. package/dist/{cli-b2rhbaty.js → cli-pnm99spe.js} +10 -10
  49. package/dist/{cli-9jn9cj0q.js → cli-v9jk2k63.js} +1 -1
  50. package/dist/{cli-mt7bxjfd.js → cli-vhgcwppn.js} +1 -1
  51. package/dist/{cli-qa4hgda3.js → cli-vvz64zc5.js} +14 -13
  52. package/dist/{cli-txr0z97c.js → cli-wmhajw68.js} +171 -32
  53. package/dist/{cli-hzrmv8pg.js → cli-x38rmhap.js} +3 -3
  54. package/dist/{cli-hq9hd4hp.js → cli-xz6qjdqj.js} +1 -1
  55. package/dist/{cli-g9ypd5en.js → cli-z52gq55b.js} +4 -0
  56. package/dist/{cli-2qbmjfta.js → cli-z6219sd3.js} +4 -4
  57. package/dist/cli.js +19 -19
  58. package/dist/{codex-adapter-zm1bkdde.js → codex-adapter-46kbvvkx.js} +1 -1
  59. package/dist/{codex-hook-tkag7fxq.js → codex-hook-tm9ecrd5.js} +1 -1
  60. package/dist/{codex-session-runner-8k02mqw2.js → codex-session-runner-qy93hdrv.js} +1 -1
  61. package/dist/{commands-nw1dn4av.js → commands-hwdhacfx.js} +2 -2
  62. package/dist/{controller-3kkkmps0.js → controller-hjza5p1f.js} +3 -3
  63. package/dist/{controllers-connect-n2c4167r.js → controllers-connect-7m25cay2.js} +20 -20
  64. package/dist/{cursor-adapter-h5028emw.js → cursor-adapter-1qh7ps8w.js} +1 -1
  65. package/dist/{db-76y2msnf.js → db-w23k9301.js} +2 -2
  66. package/dist/{db-8rk0p8j1.js → db-wm8by383.js} +3 -3
  67. package/dist/{dispatcher-xp4wsx30.js → dispatcher-en25ebgc.js} +18 -18
  68. package/dist/{dsh-adapter-vyrr31bn.js → dsh-adapter-zkme32vd.js} +1 -1
  69. package/dist/{e2b-eesfj689.js → e2b-9z9mvt2p.js} +1 -1
  70. package/dist/{e2b-03nha1wz.js → e2b-yhvn70es.js} +1 -1
  71. package/dist/{embedding-space-ejefyep1.js → embedding-space-rgf4aypt.js} +6 -6
  72. package/dist/{embeddings-w297xaw0.js → embeddings-z9cmxhx1.js} +1 -1
  73. package/dist/{external-channel-mf9vp1fe.js → external-channel-g6vv85zv.js} +2 -2
  74. package/dist/{grok-adapter-mpzyyprz.js → grok-adapter-f6n1tpq3.js} +2 -2
  75. package/dist/handlers-ss5948rq.js +42 -0
  76. package/dist/{heartbeat-qnaycjzs.js → heartbeat-5xcdzz45.js} +21 -21
  77. package/dist/{hook-h6sqfzxr.js → hook-6423rme3.js} +2 -2
  78. package/dist/{hook-4zqdgea4.js → hook-8dk1csdd.js} +4 -4
  79. package/dist/{http-65ts210h.js → http-6mfh2ww9.js} +255 -60
  80. package/dist/{index-sqe7f6mj.js → index-0js6bgff.js} +1 -1
  81. package/dist/{index-farm1zsn.js → index-0ng1dd1t.js} +10937 -9527
  82. package/dist/{index-k3ewf1jg.js → index-5eyn1wc5.js} +18 -18
  83. package/dist/{index-vp4wa3qn.js → index-71gnebsn.js} +18 -18
  84. package/dist/{index-hdfad00b.js → index-q5gzpjdd.js} +12 -10
  85. package/dist/index-z3b1vfjx.js +44 -0
  86. package/dist/{keepalive-52k6skha.js → keepalive-cymckeg6.js} +3 -3
  87. package/dist/{lead-y9rj0gr1.js → lead-baknj2dh.js} +29 -29
  88. package/dist/{maintenance-f86wqfq6.js → maintenance-dfrnsx3n.js} +1 -1
  89. package/dist/{oauth-refresh-sweep-vddv9ky7.js → oauth-refresh-sweep-5dztk8x6.js} +2 -2
  90. package/dist/{onboard-8z2qk6gq.js → onboard-h36vja6y.js} +11 -6
  91. package/dist/{otel-impl-epet9j18.js → otel-impl-jerq8vz8.js} +1 -1
  92. package/dist/{pricing-refresh-6wm42a51.js → pricing-refresh-t3nx5krn.js} +3 -3
  93. package/dist/{rbac-roles-2kfcs1sc.js → rbac-roles-dw1awawd.js} +2 -2
  94. package/dist/{rbac-roles-13a0vj6d.js → rbac-roles-km0fc3e8.js} +1 -1
  95. package/dist/{registry-ajhexe44.js → registry-hzfh268v.js} +1 -1
  96. package/dist/{render-v2-cy8zsfsf.js → render-v2-65x4ayj8.js} +3 -3
  97. package/dist/{resume-c783qe6b.js → resume-61znk3hj.js} +6 -6
  98. package/dist/{session-access-s4tv0az8.js → session-access-4yc9htrg.js} +4 -4
  99. package/dist/{session-source-backfill-qzapz0ne.js → session-source-backfill-kr5bdjtp.js} +2 -2
  100. package/dist/{setup-st7htx1k.js → setup-9h61yr2p.js} +1 -1
  101. package/dist/{work-objects-ftj4zw70.js → work-objects-x7rb53qn.js} +27 -22
  102. package/dist/{worker-859fk25k.js → worker-7f3khgn0.js} +29 -29
  103. package/openapi.json +134 -3
  104. package/package.json +5 -5
  105. package/src/be/db/agents.ts +16 -1
  106. package/src/be/db/runtime.ts +25 -15
  107. package/src/be/db/session-summaries.ts +120 -0
  108. package/src/be/db/tasks/read.ts +7 -4
  109. package/src/be/db/tasks/search-index.ts +159 -0
  110. package/src/be/db/tasks/write.ts +3 -0
  111. package/src/be/db-queries/slack-inbound.ts +77 -0
  112. package/src/be/db.ts +27 -8
  113. package/src/be/mcp-overflow-sweep.ts +39 -0
  114. package/src/be/migrations/253_session_summaries.sql +300 -0
  115. package/src/be/migrations/254_query_audit_indexes.sql +25 -0
  116. package/src/be/migrations/256_agent_slack_icon.sql +2 -0
  117. package/src/be/migrations/257_agent_tasks_fts.sql +55 -0
  118. package/src/comb/config.ts +6 -2
  119. package/src/comb/requester.ts +69 -0
  120. package/src/comb/review-batch.ts +24 -2
  121. package/src/commands/onboard/agent-fs-version.ts +1 -1
  122. package/src/commands/onboard/compose-generator.ts +7 -2
  123. package/src/commands/onboard/env-generator.ts +8 -3
  124. package/src/commands/runner.ts +41 -24
  125. package/src/fs/agent-fs-provider.ts +9 -0
  126. package/src/heartbeat/heartbeat.ts +13 -6
  127. package/src/http/agents.ts +10 -2
  128. package/src/http/index.ts +15 -0
  129. package/src/http/integrations.ts +20 -0
  130. package/src/http/list-total-cache.ts +62 -0
  131. package/src/http/sessions.ts +9 -2
  132. package/src/http/slack-inbound.ts +1 -0
  133. package/src/http/status.ts +4 -1
  134. package/src/http/tasks.ts +12 -2
  135. package/src/providers/amp-adapter.ts +1 -1
  136. package/src/providers/cursor-adapter.ts +1 -1
  137. package/src/providers/dsh-adapter.ts +1 -1
  138. package/src/queue-stall-alarm.ts +4 -1
  139. package/src/slack/actions.ts +2 -2
  140. package/src/slack/app-icon.ts +50 -0
  141. package/src/slack/app.ts +13 -1
  142. package/src/slack/assistant.ts +22 -1
  143. package/src/slack/event-dedup.test.ts +11 -0
  144. package/src/slack/event-dedup.ts +8 -4
  145. package/src/slack/inbound-dispatch.ts +58 -0
  146. package/src/slack/render-v2.ts +7 -8
  147. package/src/slack/responses.ts +21 -8
  148. package/src/slack/socket-ack.ts +237 -0
  149. package/src/slack/thread-buffer.ts +3 -5
  150. package/src/slack/watcher.ts +2 -2
  151. package/src/slack/work-objects.ts +5 -1
  152. package/src/tests/agent-fs-release-notes.test.ts +40 -0
  153. package/src/tests/agent-slack-icon.test.ts +85 -0
  154. package/src/tests/approval-cancellation-migration.test.ts +2 -0
  155. package/src/tests/asset-key-migration.test.ts +26 -0
  156. package/src/tests/comb-default.test.ts +159 -0
  157. package/src/tests/comb-review-batch.test.ts +192 -4
  158. package/src/tests/comb-status.test.ts +65 -2
  159. package/src/tests/db-agents.test.ts +13 -0
  160. package/src/tests/db-tasks-read.test.ts +10 -15
  161. package/src/tests/deploy-one-box.test.ts +161 -0
  162. package/src/tests/deploy-stubs.ts +68 -0
  163. package/src/tests/docs-index-footprint.test.js +3 -3
  164. package/src/tests/dsh-adapter.test.ts +1 -1
  165. package/src/tests/e2e-codex-auth-chain.test.ts +18 -1
  166. package/src/tests/fixtures/deploy-stubs/bun +3 -0
  167. package/src/tests/fixtures/deploy-stubs/bunx +27 -0
  168. package/src/tests/fixtures/deploy-stubs/curl +26 -0
  169. package/src/tests/fixtures/deploy-stubs/docker +122 -0
  170. package/src/tests/fixtures/onboard/content.compose.yml.txt +5 -5
  171. package/src/tests/fixtures/onboard/dev.compose.yml.txt +4 -4
  172. package/src/tests/fixtures/onboard/full-all.compose.yml.txt +12 -12
  173. package/src/tests/fixtures/onboard/full.compose.yml.txt +12 -12
  174. package/src/tests/fixtures/onboard/research.compose.yml.txt +4 -4
  175. package/src/tests/fixtures/onboard/solo.compose.yml.txt +2 -2
  176. package/src/tests/heartbeat-expiry.test.ts +151 -25
  177. package/src/tests/http-api-integration.test.ts +31 -0
  178. package/src/tests/human-free-reclassify.test.ts +6 -0
  179. package/src/tests/install-sh-bind.test.ts +242 -0
  180. package/src/tests/install-sh-tunnel.test.ts +89 -0
  181. package/src/tests/kv-storage.test.ts +28 -0
  182. package/src/tests/list-endpoint-slimming.test.ts +3 -0
  183. package/src/tests/list-total-cache.test.ts +63 -0
  184. package/src/tests/mcp-overflow-sweep.test.ts +84 -0
  185. package/src/tests/onboard-compose.test.ts +17 -3
  186. package/src/tests/onboard-env.test.ts +13 -0
  187. package/src/tests/onboarding.test.ts +1 -1
  188. package/src/tests/preload.ts +1 -0
  189. package/src/tests/query-audit-plans.test.ts +314 -0
  190. package/src/tests/script-connections.test.ts +6 -0
  191. package/src/tests/session-summaries.test.ts +384 -0
  192. package/src/tests/sessions-tree.test.ts +5 -1
  193. package/src/tests/slack-app-icon.test.ts +90 -0
  194. package/src/tests/slack-external-channel-egress.test.ts +1 -1
  195. package/src/tests/slack-inbound-receipts.test.ts +34 -0
  196. package/src/tests/slack-inline-output.test.ts +29 -2
  197. package/src/tests/slack-render-v2-query-plans.test.ts +3 -2
  198. package/src/tests/slack-render-v2.test.ts +35 -0
  199. package/src/tests/slack-socket-ack.test.ts +553 -0
  200. package/src/tests/task-lineage.test.ts +3 -0
  201. package/src/tests/task-search-filter.test.ts +4 -4
  202. package/src/tests/task-search-fts.test.ts +320 -0
  203. package/src/tests/update-profile-auth.test.ts +28 -0
  204. package/src/tools/get-swarm.ts +1 -0
  205. package/src/tools/get-tasks.ts +6 -1
  206. package/src/tools/join-swarm.ts +1 -0
  207. package/src/tools/my-agent-info.ts +1 -0
  208. package/src/tools/slack-post.ts +2 -2
  209. package/src/tools/slack-reply.ts +2 -2
  210. package/src/tools/slack-start-thread.ts +2 -2
  211. package/src/tools/slack-update.ts +1 -1
  212. package/src/tools/update-profile.ts +20 -4
  213. package/src/tools/utils.ts +3 -4
  214. package/src/types.ts +47 -0
  215. package/src/utils/constants.ts +127 -5
  216. package/templates/official/lead/HEARTBEAT.md +4 -2
  217. package/templates/official/lead/config.json +2 -2
  218. package/templates/skills/swarm-docs/content.md +2 -0
  219. package/dist/handlers-7x8sywgr.js +0 -42
  220. package/dist/index-mc30r1hs.js +0 -44
package/README.md CHANGED
@@ -97,6 +97,12 @@ curl -fsSL https://agent-swarm.dev/install.sh | bash
97
97
 
98
98
  The raw GitHub URL (`https://raw.githubusercontent.com/desplega-ai/agent-swarm/main/install.sh`) serves the same script. The API is public through a tunnel by default, protected by the API key. Add `bash -s -- --no-tunnel` to keep it local.
99
99
 
100
+ No server yet? Deploy the Railway template in one click:
101
+
102
+ [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/agent-swarm)
103
+
104
+ Or [deploy one](https://docs.agent-swarm.dev/docs/guides/one-click-deploy) on any VPS: paste [`deploy/cloud-init.yaml`](./deploy/cloud-init.yaml) as the user data of a new 4 vCPU / 8 GB Ubuntu server (Hetzner, DigitalOcean, Lightsail, Vultr). It installs Docker and Caddy, serves the API over HTTPS on `<ip>.sslip.io` or your domain, and shows the `/setup` link to root at login. To look first, [try it for an hour on E2B](https://docs.agent-swarm.dev/docs/guides/one-click-deploy#try-it-for-an-hour-on-e2b); that trial deletes its data when the sandboxes stop.
105
+
100
106
  Or use the examples directly:
101
107
 
102
108
  ```bash
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ACPAdapter2
3
- } from "./cli-hq9hd4hp.js";
3
+ } from "./cli-xz6qjdqj.js";
4
4
  import"./cli-5z6xz9xs.js";
5
5
  import"./cli-0n39ee9n.js";
6
6
  import"./cli-9cctx1tn.js";
@@ -6,17 +6,17 @@ import {
6
6
  getTaskById2,
7
7
  cancelTask2,
8
8
  init_db3
9
- } from "./cli-txr0z97c.js";
10
- import"./cli-qp6adcmw.js";
11
- import"./cli-p8yrsmfn.js";
12
- import"./cli-e19bgatr.js";
9
+ } from "./cli-wmhajw68.js";
10
+ import"./cli-e24w2mvk.js";
11
+ import"./cli-10kjx0dm.js";
12
+ import"./cli-jmk31131.js";
13
13
  import {
14
14
  createTaskWithSiblingAwareness
15
- } from "./cli-qy0z3mfj.js";
15
+ } from "./cli-9vttw9nz.js";
16
16
  import"./cli-eny54typ.js";
17
- import"./cli-b2rhbaty.js";
18
- import"./cli-10cp92df.js";
19
- import"./cli-t3npd8hm.js";
17
+ import"./cli-pnm99spe.js";
18
+ import"./cli-5ke7gxwr.js";
19
+ import"./cli-ghfhn1qc.js";
20
20
  import"./cli-3ggwdtb0.js";
21
21
  import"./cli-e8xyjvfc.js";
22
22
  import {
@@ -25,36 +25,36 @@ import {
25
25
  getTaskLink,
26
26
  buildCancelledBlocks,
27
27
  getAgentDisplayName,
28
- getAgentEmoji,
28
+ getAgentSlackIcon,
29
29
  isSlackRenderV2Enabled2,
30
30
  ensureSlackThreadTree2
31
- } from "./cli-9jfty8px.js";
31
+ } from "./cli-ktcdczth.js";
32
32
  import {
33
33
  EXTERNAL_CHANNEL_BLOCKED_REPLY2,
34
34
  shouldBlockChannel2
35
- } from "./cli-6vq3ymqm.js";
35
+ } from "./cli-0tkm519n.js";
36
36
  import"./cli-n0ysjjtv.js";
37
37
  import"./cli-2nf3b08t.js";
38
38
  import"./cli-kvzgak7c.js";
39
39
  import"./cli-445c1vp7.js";
40
40
  import"./cli-jbgrwv4y.js";
41
- import"./cli-1xpr5992.js";
41
+ import"./cli-kjha1q9k.js";
42
42
  import"./cli-qz93y3x5.js";
43
- import"./cli-jmcf8cnz.js";
44
- import"./cli-mzgppb7q.js";
45
- import"./cli-g9ypd5en.js";
46
- import"./cli-2qbmjfta.js";
47
- import"./cli-s7cm1927.js";
43
+ import"./cli-ja369zab.js";
44
+ import"./cli-a0w50zw9.js";
45
+ import"./cli-z52gq55b.js";
46
+ import"./cli-z6219sd3.js";
47
+ import"./cli-0xzbk52h.js";
48
48
  import"./cli-3h26v7yj.js";
49
49
  import"./cli-vpq0n13a.js";
50
50
  import {
51
51
  resolveSlackUserId
52
- } from "./cli-942pp3bc.js";
52
+ } from "./cli-54ax65rn.js";
53
53
  import"./cli-13p25grh.js";
54
54
  import"./cli-0adyhvq2.js";
55
- import"./cli-9jn9cj0q.js";
55
+ import"./cli-v9jk2k63.js";
56
56
  import"./cli-rycdaj0a.js";
57
- import"./cli-2cj8fqv1.js";
57
+ import"./cli-kjcdzea8.js";
58
58
 
59
59
  // src/slack/actions.ts
60
60
  init_db3();
@@ -170,7 +170,7 @@ function registerActionHandlers(app) {
170
170
  text: `\uD83D\uDCAC Follow-up sent to *${agentName}* (${taskLink})`,
171
171
  unfurl_links: false,
172
172
  unfurl_media: false,
173
- ...lead ? { username: getAgentDisplayName(lead), icon_emoji: getAgentEmoji(lead) } : {}
173
+ ...lead ? { username: getAgentDisplayName(lead), ...getAgentSlackIcon(lead) } : {}
174
174
  });
175
175
  } catch (error) {
176
176
  console.error("[Slack] Failed to post follow-up confirmation:", error);
@@ -2,11 +2,11 @@ import {
2
2
  checkAmpCredentials2,
3
3
  liveTestAmpCredentials2,
4
4
  AmpAdapter2
5
- } from "./cli-fa4kxxx3.js";
5
+ } from "./cli-ct5920jb.js";
6
6
  import"./cli-cr3k93hd.js";
7
7
  import"./cli-jc1g9ndz.js";
8
8
  import"./cli-vqgnyh76.js";
9
- import"./cli-qp6adcmw.js";
9
+ import"./cli-e24w2mvk.js";
10
10
  import"./cli-3ggwdtb0.js";
11
11
  import"./cli-e8xyjvfc.js";
12
12
  export {
@@ -3,9 +3,9 @@ import {
3
3
  initSlackApp2,
4
4
  startSlackApp2,
5
5
  stopSlackApp2
6
- } from "./cli-9jfty8px.js";
7
- import"./cli-6vq3ymqm.js";
8
- import"./cli-txr0z97c.js";
6
+ } from "./cli-ktcdczth.js";
7
+ import"./cli-0tkm519n.js";
8
+ import"./cli-wmhajw68.js";
9
9
  export {
10
10
  getSlackApp2 as getSlackApp,
11
11
  initSlackApp2 as initSlackApp,
@@ -6,7 +6,7 @@ import {
6
6
  getMostRecentTaskInThread2,
7
7
  reactionName,
8
8
  init_db3
9
- } from "./cli-txr0z97c.js";
9
+ } from "./cli-wmhajw68.js";
10
10
  import {
11
11
  require_dist4,
12
12
  noteSlackInboundSideEffect,
@@ -17,34 +17,34 @@ import {
17
17
  markSlackSessionProcessing,
18
18
  isSlackRenderV2Enabled2,
19
19
  ensureSlackThreadTree2
20
- } from "./cli-9jfty8px.js";
20
+ } from "./cli-ktcdczth.js";
21
21
  import {
22
22
  shouldBlockChannel2
23
- } from "./cli-6vq3ymqm.js";
23
+ } from "./cli-0tkm519n.js";
24
24
  import {
25
25
  buildEffectiveText,
26
26
  fetchSlackFiles,
27
27
  createSlackTaskWithFiles,
28
28
  notifySlackFileFailures,
29
29
  hasOtherUserMention
30
- } from "./cli-qy0z3mfj.js";
30
+ } from "./cli-9vttw9nz.js";
31
31
  import {
32
32
  resolveSlackUserId,
33
33
  rewriteSlackMentions
34
- } from "./cli-942pp3bc.js";
34
+ } from "./cli-54ax65rn.js";
35
35
  import {
36
36
  wasEventSeen,
37
37
  bufferThreadMessage,
38
38
  getBufferMessageCount
39
- } from "./cli-7xsq63pe.js";
40
- import"./cli-g9ypd5en.js";
41
- import"./cli-qp6adcmw.js";
42
- import"./cli-p8yrsmfn.js";
43
- import"./cli-e19bgatr.js";
39
+ } from "./cli-157ykn37.js";
40
+ import"./cli-z52gq55b.js";
41
+ import"./cli-e24w2mvk.js";
42
+ import"./cli-10kjx0dm.js";
43
+ import"./cli-jmk31131.js";
44
44
  import"./cli-eny54typ.js";
45
- import"./cli-b2rhbaty.js";
46
- import"./cli-10cp92df.js";
47
- import"./cli-t3npd8hm.js";
45
+ import"./cli-pnm99spe.js";
46
+ import"./cli-5ke7gxwr.js";
47
+ import"./cli-ghfhn1qc.js";
48
48
  import"./cli-3ggwdtb0.js";
49
49
  import"./cli-e8xyjvfc.js";
50
50
  import"./cli-n0ysjjtv.js";
@@ -52,19 +52,19 @@ import"./cli-2nf3b08t.js";
52
52
  import"./cli-kvzgak7c.js";
53
53
  import"./cli-445c1vp7.js";
54
54
  import"./cli-jbgrwv4y.js";
55
- import"./cli-1xpr5992.js";
55
+ import"./cli-kjha1q9k.js";
56
56
  import"./cli-qz93y3x5.js";
57
- import"./cli-jmcf8cnz.js";
58
- import"./cli-mzgppb7q.js";
59
- import"./cli-2qbmjfta.js";
60
- import"./cli-s7cm1927.js";
57
+ import"./cli-ja369zab.js";
58
+ import"./cli-a0w50zw9.js";
59
+ import"./cli-z6219sd3.js";
60
+ import"./cli-0xzbk52h.js";
61
61
  import"./cli-3h26v7yj.js";
62
62
  import"./cli-vpq0n13a.js";
63
63
  import"./cli-13p25grh.js";
64
64
  import"./cli-0adyhvq2.js";
65
- import"./cli-9jn9cj0q.js";
65
+ import"./cli-v9jk2k63.js";
66
66
  import"./cli-rycdaj0a.js";
67
- import"./cli-2cj8fqv1.js";
67
+ import"./cli-kjcdzea8.js";
68
68
  import {
69
69
  resolveTemplate,
70
70
  init_resolver
@@ -94,9 +94,15 @@ async function isExternalAssistantThread(client, channelId, body) {
94
94
  console.log(`[Slack] Ignoring assistant thread event in external channel ${channelId}`);
95
95
  return true;
96
96
  }
97
- function createAssistant() {
97
+ function createAssistant(options = {}) {
98
98
  return new import_bolt.Assistant({
99
+ ...options.threadContextStore ? { threadContextStore: options.threadContextStore } : {},
99
100
  threadStarted: async ({ event, body, client, say, setSuggestedPrompts, saveThreadContext }) => {
101
+ const eventId = body?.event_id;
102
+ if (!isAdmittedSlackDelivery() && wasEventSeen(eventId)) {
103
+ console.log(`[Slack] dropping Slack retry: event_id=${eventId}`);
104
+ return ignoreSlackInbound("duplicate_event");
105
+ }
100
106
  if (await isExternalAssistantThread(client, event.assistant_thread.channel_id, body)) {
101
107
  return ignoreSlackInbound("external_channel");
102
108
  }
@@ -120,6 +126,11 @@ function createAssistant() {
120
126
  }
121
127
  },
122
128
  threadContextChanged: async ({ event, body, client, saveThreadContext }) => {
129
+ const eventId = body?.event_id;
130
+ if (!isAdmittedSlackDelivery() && wasEventSeen(eventId)) {
131
+ console.log(`[Slack] dropping Slack retry: event_id=${eventId}`);
132
+ return ignoreSlackInbound("duplicate_event");
133
+ }
123
134
  if (await isExternalAssistantThread(client, event.assistant_thread.channel_id, body)) {
124
135
  return ignoreSlackInbound("external_channel");
125
136
  }
@@ -6,7 +6,7 @@ import {
6
6
  getMemoryStore2,
7
7
  init_memory,
8
8
  init_db3
9
- } from "./cli-txr0z97c.js";
9
+ } from "./cli-wmhajw68.js";
10
10
  import {
11
11
  __esm
12
12
  } from "./cli-242037k3.js";
@@ -4,7 +4,7 @@ import {
4
4
  embedScript2,
5
5
  init_embeddings,
6
6
  init_db3
7
- } from "./cli-txr0z97c.js";
7
+ } from "./cli-wmhajw68.js";
8
8
  import {
9
9
  __esm
10
10
  } from "./cli-242037k3.js";
@@ -8,11 +8,11 @@ import {
8
8
  getMemoryStore2,
9
9
  init_memory,
10
10
  init_db3
11
- } from "./cli-txr0z97c.js";
11
+ } from "./cli-wmhajw68.js";
12
12
  import {
13
13
  contentSha256,
14
14
  init_profile_sync
15
- } from "./cli-0wx63vvw.js";
15
+ } from "./cli-9km88w11.js";
16
16
  import {
17
17
  SCRUBBER_RULES_VERSION,
18
18
  scrubSecrets,
@@ -87,7 +87,7 @@ async function runBootScrubSweep(opts = {}) {
87
87
  console.log(`[${tag}] complete`);
88
88
  const memoryChanged = stats.find((s) => s.table === "agent_memory")?.changed ?? 0;
89
89
  if (memoryChanged > 0 && opts.reembed !== false) {
90
- const { runBootReembed } = await import("./boot-reembed-e2348eqc.js");
90
+ const { runBootReembed } = await import("./boot-reembed-33spavpd.js");
91
91
  await runBootReembed();
92
92
  }
93
93
  return stats;
@@ -2,10 +2,10 @@ import {
2
2
  ensurePricingSeeded2,
3
3
  ensureRbacSeeded2,
4
4
  ensureModelProfilesSeeded2
5
- } from "./cli-mzgppb7q.js";
6
- import"./cli-p8yrsmfn.js";
7
- import"./cli-jmcf8cnz.js";
8
- import"./cli-txr0z97c.js";
5
+ } from "./cli-a0w50zw9.js";
6
+ import"./cli-10kjx0dm.js";
7
+ import"./cli-ja369zab.js";
8
+ import"./cli-wmhajw68.js";
9
9
  export {
10
10
  ensureModelProfilesSeeded2 as ensureModelProfilesSeeded,
11
11
  ensurePricingSeeded2 as ensurePricingSeeded,
@@ -4,9 +4,9 @@ import {
4
4
  buildClaudeSessionEnvironment2,
5
5
  runClaudeSessionSummary2,
6
6
  ClaudeAdapter2
7
- } from "./cli-c18941tx.js";
8
- import"./cli-z8a4mfz1.js";
9
- import"./cli-vjcj9k2p.js";
7
+ } from "./cli-8ch3b2r7.js";
8
+ import"./cli-aqp59jmv.js";
9
+ import"./cli-2h0rfmqk.js";
10
10
  import"./cli-d82btycs.js";
11
11
  import"./cli-h3e7bhvn.js";
12
12
  import"./cli-4bd1rck6.js";
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  DEFAULT_MODEL_TIER_MAP,
18
18
  init_types2
19
- } from "./cli-e1p7dqe1.js";
19
+ } from "./cli-4aydmmdy.js";
20
20
  import {
21
21
  selectCredential,
22
22
  init_credentials