@desplega.ai/agent-swarm 2.7.4 → 2.7.5

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 (253) hide show
  1. package/README.md +1 -1
  2. package/dist/acp-adapter-g3ads55s.js +15 -0
  3. package/dist/{actions-gfrr9vb7.js → actions-zwfykqqk.js} +18 -18
  4. package/dist/{amp-adapter-0s58gm46.js → amp-adapter-z3s0ssdt.js} +3 -3
  5. package/dist/{app-stvq692g.js → app-vmp4fgep.js} +3 -3
  6. package/dist/{assistant-5s37fr9n.js → assistant-vwde653f.js} +28 -21
  7. package/dist/{boot-reembed-yzy1841n.js → boot-reembed-375t7tbk.js} +1 -1
  8. package/dist/{boot-reembed-cv82gz7y.js → boot-reembed-gq9rcpnj.js} +1 -1
  9. package/dist/{boot-scrub-sweep-8k4q95ap.js → boot-scrub-sweep-nd938kyf.js} +4 -4
  10. package/dist/{boot-seeds-ftt9htah.js → boot-seeds-aykx51v3.js} +4 -4
  11. package/dist/{boxd-515v1t8z.js → boxd-k1j26g3h.js} +1 -1
  12. package/dist/{claude-adapter-t00wrzeh.js → claude-adapter-8j4hm099.js} +7 -7
  13. package/dist/{claude-managed-adapter-g6vmjccb.js → claude-managed-adapter-dvs2xw5n.js} +2 -2
  14. package/dist/{claude-managed-setup-afpa82f7.js → claude-managed-setup-0wyynpn1.js} +3 -3
  15. package/dist/{claude-sdk-session-vj0c2azx.js → claude-sdk-session-q6wj5hmy.js} +9 -9
  16. package/dist/{cli-wndv9p7g.js → cli-0731hvbw.js} +6 -6
  17. package/dist/{cli-d2pzqej1.js → cli-0bxqnvq9.js} +719 -7
  18. package/dist/{cli-jkt52mgt.js → cli-0gey5fzy.js} +2 -2
  19. package/dist/{cli-1yekbyqm.js → cli-1338796d.js} +205 -48
  20. package/dist/{cli-1s1dqn1j.js → cli-1ayk1eas.js} +171 -123
  21. package/dist/{cli-a4btqqft.js → cli-1b7btd38.js} +1 -1
  22. package/dist/{cli-a2jw6ee5.js → cli-1p89xny0.js} +1 -1
  23. package/dist/{cli-v726afdm.js → cli-2pnswgh8.js} +1 -1
  24. package/dist/{cli-kvtc7aez.js → cli-3h4nhjn8.js} +42 -14
  25. package/dist/{cli-655xm9ms.js → cli-583frbyr.js} +1 -1
  26. package/dist/{cli-4r12t6w6.js → cli-5c4hjzne.js} +101 -4
  27. package/dist/{cli-az0bpf8p.js → cli-5pag6rmn.js} +3 -3
  28. package/dist/{cli-36g23z21.js → cli-6s7vdcta.js} +4 -4
  29. package/dist/{cli-rtk9g7av.js → cli-73jzwksr.js} +6 -2
  30. package/dist/{cli-jg0nfda6.js → cli-75gkpjvw.js} +52 -21
  31. package/dist/{cli-a81qevyg.js → cli-7a42nfy0.js} +20 -36
  32. package/dist/{cli-0sbkss7h.js → cli-7wcyk2s5.js} +2 -2
  33. package/dist/{cli-41z8xwj0.js → cli-7wspm5gm.js} +14 -4
  34. package/dist/{cli-byqfbnjw.js → cli-82ae98pz.js} +9 -9
  35. package/dist/{cli-bq2pcphn.js → cli-8hs41zy2.js} +1 -1
  36. package/dist/{cli-vqgnyh76.js → cli-98rw5dt5.js} +15 -3
  37. package/dist/{cli-9cctx1tn.js → cli-a22h291q.js} +1 -1
  38. package/dist/{cli-j4kt1mpb.js → cli-a47xy8eq.js} +3 -3
  39. package/dist/{cli-ycm6180s.js → cli-a7v854rf.js} +5 -3
  40. package/dist/{cli-98pke4vk.js → cli-ae7mrdf9.js} +2 -2
  41. package/dist/{cli-ahd90bwt.js → cli-afrrppsw.js} +6 -6
  42. package/dist/{cli-8yy525ad.js → cli-bhjt02p8.js} +2 -2
  43. package/dist/{cli-v1yw3wha.js → cli-bnz7a7qf.js} +4 -4
  44. package/dist/{cli-j4kw3rsx.js → cli-cm5yqn35.js} +18 -0
  45. package/dist/{cli-h55y2bjc.js → cli-dhar9qay.js} +2 -2
  46. package/dist/{cli-5gr1g711.js → cli-fqzx7gwa.js} +2 -2
  47. package/dist/{cli-tzrpv5sc.js → cli-ftyxyspd.js} +1 -1
  48. package/dist/cli-fw2w0kva.js +47 -0
  49. package/dist/{cli-2dfbv8qr.js → cli-fy6x31ps.js} +1 -0
  50. package/dist/{cli-mvckssyq.js → cli-g61qxmge.js} +5 -5
  51. package/dist/{cli-aq58fk5m.js → cli-g83s9ewh.js} +7 -1
  52. package/dist/{cli-224epwwf.js → cli-hn9hxmz9.js} +3 -3
  53. package/dist/{cli-5hjced2v.js → cli-j3jvnpe8.js} +6 -6
  54. package/dist/{cli-dae4sbgy.js → cli-jm2vfpfd.js} +2 -2
  55. package/dist/{cli-zn15c46z.js → cli-mjzynrse.js} +1 -1
  56. package/dist/{cli-a1fhj4n9.js → cli-mmwm7zbf.js} +2 -2
  57. package/dist/{cli-cq1pf336.js → cli-mry0qzym.js} +5 -5
  58. package/dist/{cli-bwty35gx.js → cli-mthwvjre.js} +1 -1
  59. package/dist/{cli-s0exq74r.js → cli-nmbmy64z.js} +3 -3
  60. package/dist/{cli-wcmnan2g.js → cli-nn4d8dne.js} +5 -5
  61. package/dist/{cli-jg4p5t36.js → cli-nzxr556s.js} +121 -51
  62. package/dist/{cli-bcz074zx.js → cli-p599f1qm.js} +1 -1
  63. package/dist/{cli-k76tgq03.js → cli-pywf3eh5.js} +2 -2
  64. package/dist/{cli-wk9md5px.js → cli-qxnf8z2z.js} +2 -2
  65. package/dist/{cli-je8yeyc5.js → cli-rhw40jgb.js} +5 -5
  66. package/dist/{cli-avgcz4ra.js → cli-rm6hqj3z.js} +406 -35
  67. package/dist/{cli-0fgr1w9b.js → cli-rpm2sgv0.js} +2 -2
  68. package/dist/{cli-t282jgab.js → cli-rqkxrmgw.js} +12 -12
  69. package/dist/{cli-2qpvmmkw.js → cli-s0qnd4wv.js} +1 -1
  70. package/dist/{cli-pwyevs29.js → cli-spknvxbq.js} +22 -21
  71. package/dist/{cli-9y354g3j.js → cli-srye3vdt.js} +1 -1
  72. package/dist/{cli-pe09p6dv.js → cli-tqgg40ek.js} +1 -1
  73. package/dist/{cli-f255yaqn.js → cli-vbyfwh92.js} +3 -3
  74. package/dist/{cli-gcbdjt47.js → cli-vfym7wmz.js} +6 -6
  75. package/dist/{cli-edmm9d9y.js → cli-vqypxzh4.js} +7 -7
  76. package/dist/{cli-1gm8jcyr.js → cli-wvaawacd.js} +13 -13
  77. package/dist/{cli-eny54typ.js → cli-wx3rhnm0.js} +1 -1
  78. package/dist/{cli-b1afgtj3.js → cli-xbkdm710.js} +3 -3
  79. package/dist/{cli-mc97xy2s.js → cli-xtjhfmpc.js} +16 -4
  80. package/dist/{cli-eqx6k993.js → cli-y24sc29k.js} +25 -13
  81. package/dist/{cli-ktmvb20s.js → cli-z6jkx23q.js} +12 -12
  82. package/dist/{cli-7n5sbw0z.js → cli-z8eh3ex8.js} +5 -5
  83. package/dist/cli-zh3fp8v2.js +151 -0
  84. package/dist/{cli-13jvmew3.js → cli-zppwg9p9.js} +7 -7
  85. package/dist/cli.js +18 -18
  86. package/dist/{codex-adapter-g0gctw29.js → codex-adapter-q6k3gnyg.js} +5 -5
  87. package/dist/{codex-hook-vrzz2xhr.js → codex-hook-9efm2x1m.js} +1 -1
  88. package/dist/{codex-login-0gg46ygn.js → codex-login-y0pmff1c.js} +1 -1
  89. package/dist/{codex-session-runner-dr2cxe1c.js → codex-session-runner-3mwmk3d9.js} +6 -6
  90. package/dist/{commands-1p07cvff.js → commands-evrenjn9.js} +2 -2
  91. package/dist/{controller-z0s7sv6r.js → controller-xjp8vswh.js} +4 -4
  92. package/dist/{controllers-connect-x9kvvhyk.js → controllers-connect-pp5jnxvc.js} +20 -20
  93. package/dist/{cursor-adapter-m5b98pvk.js → cursor-adapter-yf47w4t0.js} +2 -2
  94. package/dist/{db-rsh04kh3.js → db-rgfsh91f.js} +2 -2
  95. package/dist/{db-capk2raj.js → db-zxpw6aht.js} +3 -3
  96. package/dist/{devin-adapter-yxm87fe9.js → devin-adapter-r9phbnc9.js} +1 -1
  97. package/dist/{dispatcher-304q6fwa.js → dispatcher-smasgws7.js} +17 -17
  98. package/dist/{docker-7rxt0rry.js → docker-rrjhaqt9.js} +2 -2
  99. package/dist/{dsh-adapter-btewem0y.js → dsh-adapter-ftyy8dnp.js} +2 -2
  100. package/dist/{e2b-renc0k8q.js → e2b-qcaj675y.js} +2 -2
  101. package/dist/{e2b-7fc9b9bd.js → e2b-w1p0bnpm.js} +2 -2
  102. package/dist/{easter-egg-3d-fm1p3n4d.js → easter-egg-3d-yyts7p16.js} +1 -1
  103. package/dist/{embedding-space-s68v49ct.js → embedding-space-1z0mbg95.js} +6 -6
  104. package/dist/{embeddings-4ms3604w.js → embeddings-ygeg7tm7.js} +1 -1
  105. package/dist/{event-bus-dfjx2qdh.js → event-bus-g0ka3pbw.js} +1 -1
  106. package/dist/{execute-mcdgccjs.js → execute-14qhqp4d.js} +1 -1
  107. package/dist/{external-channel-9dxwfztn.js → external-channel-ttgrs3sx.js} +2 -2
  108. package/dist/fx-adapter-gt6pncj2.js +18 -0
  109. package/dist/{grok-adapter-05ecv4h0.js → grok-adapter-sm4m5k4g.js} +8 -8
  110. package/dist/handlers-vwmba1m2.js +31 -0
  111. package/dist/{heartbeat-3n94heh3.js → heartbeat-qahz4p62.js} +20 -20
  112. package/dist/{hook-zxwje86c.js → hook-4fd5wq5w.js} +4 -4
  113. package/dist/{hook-aadrn69x.js → hook-kj3d398m.js} +6 -6
  114. package/dist/{http-xzxk9mst.js → http-1ted0j1k.js} +100 -64
  115. package/dist/index-5r71rf98.js +32 -0
  116. package/dist/{index-d34f6r87.js → index-6rq3r5zb.js} +1 -1
  117. package/dist/{index-9j4zwcht.js → index-7v51awbn.js} +158 -672
  118. package/dist/index-anmwxs87.js +29 -0
  119. package/dist/{index-qeb82z37.js → index-q4b917zs.js} +1 -1
  120. package/dist/index-spp0ra5c.js +36 -0
  121. package/dist/{keepalive-w4aakbyk.js → keepalive-6cf311t5.js} +4 -4
  122. package/dist/lead-fjy418cw.js +69 -0
  123. package/dist/{maintenance-hbptpk6p.js → maintenance-a4bm1bmt.js} +1 -1
  124. package/dist/{oauth-refresh-sweep-217semrv.js → oauth-refresh-sweep-3h0dfw1k.js} +3 -3
  125. package/dist/{onboard-vz2s5df3.js → onboard-myn5hraa.js} +3 -3
  126. package/dist/{opencode-adapter-gtfd7d7v.js → opencode-adapter-p2nkb5am.js} +5 -5
  127. package/dist/{otel-impl-aefave37.js → otel-impl-a1a0ef6b.js} +2 -2
  128. package/dist/{pi-mono-adapter-f8h5yseh.js → pi-mono-adapter-rzmpb72a.js} +117 -23
  129. package/dist/{pricing-refresh-m1yhh9ya.js → pricing-refresh-83drrnxj.js} +3 -3
  130. package/dist/{rbac-roles-svj72cdf.js → rbac-roles-0fb6e7pj.js} +2 -2
  131. package/dist/{rbac-roles-rrw8twdz.js → rbac-roles-s8y6ecb5.js} +1 -1
  132. package/dist/{render-v2-amwbnfxh.js → render-v2-twmbgrz4.js} +3 -3
  133. package/dist/{resume-9cd6wf6z.js → resume-zfqc36xj.js} +7 -7
  134. package/dist/{runtime-fp4vrx7m.js → runtime-qwggdpqr.js} +1 -1
  135. package/dist/{session-access-21t6yjyg.js → session-access-sc9pn9da.js} +4 -4
  136. package/dist/{session-source-backfill-pxbzcsc6.js → session-source-backfill-qh07xr8g.js} +3 -3
  137. package/dist/{setup-4592tqz4.js → setup-4fr0m7a1.js} +1 -1
  138. package/dist/{virtual-modules-gzfnpmnz.js → virtual-modules-fh4ha15b.js} +2 -2
  139. package/dist/{work-objects-t9tcf174.js → work-objects-0wr8zxct.js} +20 -20
  140. package/dist/worker-0c5tyzqe.js +69 -0
  141. package/dist/{worker-follow-up-q32jh4yk.js → worker-follow-up-ktyyazyp.js} +17 -17
  142. package/dist/{x-b6wxntdt.js → x-vmmye1kb.js} +2 -2
  143. package/openapi.json +97 -32
  144. package/package.json +1 -1
  145. package/src/be/db/session-summaries.ts +8 -2
  146. package/src/be/db/session-tree.ts +174 -61
  147. package/src/be/db/session-visibility.ts +5 -4
  148. package/src/be/db.ts +8 -4
  149. package/src/be/migrations/259_session_summaries_open_tasks.sql +111 -0
  150. package/src/be/model-validation.ts +5 -1
  151. package/src/be/pricing-normalize.ts +7 -2
  152. package/src/be/scripts/typecheck.ts +1 -0
  153. package/src/be/seed/schedules-seeder.ts +135 -9
  154. package/src/be/seed/workflows-seeder.ts +65 -1
  155. package/src/be/seed-pricing.ts +23 -0
  156. package/src/be/steering.ts +50 -3
  157. package/src/be/swarm-config-guard.ts +1 -0
  158. package/src/commands/provider-credentials.ts +29 -2
  159. package/src/commands/runner.ts +86 -5
  160. package/src/extensions/contract-types.generated.ts +1 -1
  161. package/src/extensions/contract.ts +27 -1
  162. package/src/extensions/dispatcher.ts +4 -0
  163. package/src/http/agents.ts +1 -0
  164. package/src/http/mcp-bridge.ts +4 -0
  165. package/src/integrations/chat-sdk/inbound.ts +15 -5
  166. package/src/integrations/chat-sdk/steering.ts +3 -1
  167. package/src/kv-reserved-namespaces.ts +2 -0
  168. package/src/prompts/base-prompt.ts +4 -1
  169. package/src/prompts/session-templates.ts +26 -0
  170. package/src/providers/acp-adapter.ts +190 -26
  171. package/src/providers/acp-targets.ts +306 -6
  172. package/src/providers/amp-adapter.ts +1 -1
  173. package/src/providers/codex-adapter.ts +9 -44
  174. package/src/providers/codex-oauth/flow.ts +24 -3
  175. package/src/providers/codex-oauth/storage.ts +56 -17
  176. package/src/providers/codex-oauth/subscription.ts +67 -0
  177. package/src/providers/fx-adapter.ts +211 -0
  178. package/src/providers/index.ts +5 -1
  179. package/src/providers/mcp-loopback-proxy.ts +94 -0
  180. package/src/providers/pi-mono-adapter.ts +98 -13
  181. package/src/providers/pricing-sources.md +8 -0
  182. package/src/providers/reasoning-effort.ts +17 -1
  183. package/src/providers/types.ts +2 -1
  184. package/src/scheduler/scheduler.ts +36 -3
  185. package/src/scripts-runtime/sdk-allowlist.ts +1 -0
  186. package/src/scripts-runtime/types/stdlib.d.ts +5 -0
  187. package/src/scripts-runtime/types/swarm-extension.d.ts +33 -0
  188. package/src/scripts-runtime/types/swarm-sdk.d.ts +5 -0
  189. package/src/server.ts +7 -0
  190. package/src/slack/assistant.ts +17 -1
  191. package/src/slack/handlers.ts +18 -5
  192. package/src/slack/left-threads.ts +65 -0
  193. package/src/slack/steering.ts +3 -0
  194. package/src/slack/thread-buffer.ts +40 -16
  195. package/src/tests/acp-adapter.test.ts +79 -0
  196. package/src/tests/base-prompt.test.ts +12 -0
  197. package/src/tests/chat-sdk-inbound.test.ts +30 -0
  198. package/src/tests/chatgpt-subscription-model-groups.test.ts +62 -0
  199. package/src/tests/chatgpt-subscription-pi.test.ts +170 -0
  200. package/src/tests/chatgpt-subscription-session-bench.test.ts +198 -0
  201. package/src/tests/codex-oauth-credential-info.test.ts +40 -0
  202. package/src/tests/codex-oauth-refresh-egress.test.ts +194 -0
  203. package/src/tests/context-window.test.ts +7 -0
  204. package/src/tests/explicit-model-validation.test.ts +99 -0
  205. package/src/tests/extensions-run-context.test.ts +11 -0
  206. package/src/tests/extensions-steering.test.ts +353 -0
  207. package/src/tests/extensions-validate.test.ts +5 -0
  208. package/src/tests/fixtures/extensions/steering-policy/hooks.ts +39 -0
  209. package/src/tests/fixtures/extensions/steering-policy/manifest.json +7 -0
  210. package/src/tests/fixtures/fake-fx.ts +167 -0
  211. package/src/tests/fixtures/fx/acp-responses-recorded.json +157 -0
  212. package/src/tests/fixtures/fx/acp-updates-recorded.jsonl +15 -0
  213. package/src/tests/fx-adapter.test.ts +771 -0
  214. package/src/tests/grok-adapter.test.ts +36 -0
  215. package/src/tests/mcp-loopback-proxy.test.ts +193 -0
  216. package/src/tests/model-tier-resolution.test.ts +3 -3
  217. package/src/tests/pricing-refresh.test.ts +5 -5
  218. package/src/tests/prompt-template-session.test.ts +5 -3
  219. package/src/tests/provider-registration.test.ts +2 -1
  220. package/src/tests/query-audit-plans.test.ts +3 -2
  221. package/src/tests/script-connections.test.ts +2 -0
  222. package/src/tests/seed-model-profiles.test.ts +2 -2
  223. package/src/tests/seed-schedules.test.ts +138 -0
  224. package/src/tests/session-cost-recompute-unit.test.ts +39 -0
  225. package/src/tests/session-costs-golden.test.ts +26 -0
  226. package/src/tests/session-summaries-plans.test.ts +120 -0
  227. package/src/tests/session-summaries.test.ts +72 -12
  228. package/src/tests/sessions-tree.test.ts +11 -3
  229. package/src/tests/slack-leave-thread.test.ts +431 -0
  230. package/src/tests/tool-annotations.test.ts +2 -1
  231. package/src/tests/workflow-engine-v2.test.ts +42 -0
  232. package/src/tests/workflow-script-principal.test.ts +207 -7
  233. package/src/tools/slack-leave-thread.ts +104 -0
  234. package/src/tools/steer-task.ts +3 -2
  235. package/src/tools/tool-config.ts +2 -1
  236. package/src/types.ts +19 -0
  237. package/src/utils/codex-auth-failure.ts +30 -0
  238. package/src/utils/context-window.ts +4 -1
  239. package/src/utils/credentials.ts +7 -0
  240. package/src/utils/fx-models.ts +43 -0
  241. package/src/workflows/cooldown.ts +3 -2
  242. package/src/workflows/engine.ts +24 -9
  243. package/templates/schedules/dreaming-daily/config.json +1 -1
  244. package/templates/schedules/dreaming-daily/content.md +6 -14
  245. package/templates/skills/swarm-docs/content.md +1 -0
  246. package/templates/workflows/dreaming/content.md +5 -1
  247. package/dist/acp-adapter-96dc64m2.js +0 -15
  248. package/dist/handlers-jg7v74ty.js +0 -31
  249. package/dist/index-8c1zbz59.js +0 -29
  250. package/dist/index-8k8tmfxd.js +0 -32
  251. package/dist/index-hq617xdj.js +0 -36
  252. package/dist/lead-567kw7x3.js +0 -68
  253. package/dist/worker-fjdqra6q.js +0 -68
@@ -9,8 +9,10 @@ import {
9
9
  getAgentWorkingOnThread2,
10
10
  getMostRecentTaskInThread2,
11
11
  reactionName,
12
+ SteeringBlockedError,
13
+ init_steering2,
12
14
  init_db4
13
- } from "./cli-1s1dqn1j.js";
15
+ } from "./cli-1ayk1eas.js";
14
16
  import {
15
17
  isBlockExternalEnabled2,
16
18
  invalidateChannelExternality2,
@@ -18,7 +20,7 @@ import {
18
20
  shouldBlockChannel2,
19
21
  leaveExternalChannel2,
20
22
  init_external_channel
21
- } from "./cli-a1fhj4n9.js";
23
+ } from "./cli-mmwm7zbf.js";
22
24
  import {
23
25
  noteSlackInboundSideEffect,
24
26
  ignoreSlackInbound,
@@ -34,11 +36,11 @@ import {
34
36
  init_render_v2,
35
37
  registerTreeMessage,
36
38
  init_watcher
37
- } from "./cli-1gm8jcyr.js";
39
+ } from "./cli-wvaawacd.js";
38
40
  import {
39
41
  workflowEventBus2,
40
42
  init_event_bus
41
- } from "./cli-eny54typ.js";
43
+ } from "./cli-wx3rhnm0.js";
42
44
  import {
43
45
  TaskCreationBlockedError,
44
46
  init_errors2,
@@ -53,13 +55,15 @@ import {
53
55
  routeMessage,
54
56
  extractTaskFromMessage,
55
57
  init_router,
58
+ shouldSkipLeftSlackThread,
59
+ init_left_threads,
56
60
  extractSlackMessageText,
57
61
  slackInboundMessageText,
58
62
  collectSlackMessageFiles,
59
63
  init_message_text,
60
64
  dispatchPre2,
61
65
  init_dispatcher
62
- } from "./cli-1yekbyqm.js";
66
+ } from "./cli-1338796d.js";
63
67
  import {
64
68
  wasEventSeen,
65
69
  init_event_dedup,
@@ -70,17 +74,17 @@ import {
70
74
  getBufferMessageCount,
71
75
  instantFlush,
72
76
  init_thread_buffer
73
- } from "./cli-kvtc7aez.js";
77
+ } from "./cli-3h4nhjn8.js";
74
78
  import {
75
79
  enrichSlackUserEmail,
76
80
  resolveSlackUserId,
77
81
  rewriteSlackMentions,
78
82
  init_enrich
79
- } from "./cli-s0exq74r.js";
83
+ } from "./cli-nmbmy64z.js";
80
84
  import {
81
85
  resolveTemplate,
82
86
  init_resolver
83
- } from "./cli-j4kw3rsx.js";
87
+ } from "./cli-cm5yqn35.js";
84
88
  import {
85
89
  init_zod
86
90
  } from "./cli-k5671be5.js";
@@ -97,7 +101,7 @@ import {
97
101
  import {
98
102
  scrubSecrets,
99
103
  init_secret_scrubber
100
- } from "./cli-a4btqqft.js";
104
+ } from "./cli-1b7btd38.js";
101
105
  import {
102
106
  __esm,
103
107
  __using,
@@ -294,6 +298,11 @@ function registerMessageHandler2(app) {
294
298
  console.log(`[Slack] Ignoring message from unauthorized user ${msg.user}`);
295
299
  return ignoreSlackInbound("unauthorized_user");
296
300
  }
301
+ const botMentioned = !!cachedBotUserId && !!msg.text?.includes(`<@${cachedBotUserId}>`);
302
+ if (await shouldSkipLeftSlackThread(msg.channel, msg.thread_ts, botMentioned)) {
303
+ console.log(`[Slack] Skipping message in left thread ${msg.channel}/${msg.thread_ts}`);
304
+ return ignoreSlackInbound("thread_left");
305
+ }
297
306
  const requestedByUserId = await resolveSlackUserId(client, msg.user, {
298
307
  sampleEventType: "message",
299
308
  sampleContext: msg.text ?? ""
@@ -314,7 +323,6 @@ function registerMessageHandler2(app) {
314
323
  return reportSlackInboundFailure("bot_user_unavailable");
315
324
  }
316
325
  const botUserId = cachedBotUserId;
317
- const botMentioned = !!msg.text?.includes(`<@${botUserId}>`);
318
326
  const isAssistantThread = !!msg.assistant_thread;
319
327
  const isImplicitMention = isAssistantThread && !botMentioned && !isAddressedToOtherUser(effectiveText, botUserId);
320
328
  const additiveSlack = isEnvFlagEnabled("ADDITIVE_SLACK", false);
@@ -520,7 +528,8 @@ ${taskDescription}`;
520
528
  threadTs,
521
529
  message: taskDescription,
522
530
  messageTimestamps: [msg.ts],
523
- requestedByUserId
531
+ requestedByUserId,
532
+ slackUserId: msg.user
524
533
  }) : null;
525
534
  if (steering) {
526
535
  await ackSlackMessage(client, msg.channel, msg.ts, reactionName("steered"), "steered");
@@ -573,12 +582,13 @@ ${taskDescription}`;
573
582
  results.assigned.push({ agentName: agent.name, taskId: task.id });
574
583
  }
575
584
  } catch (error) {
576
- if (!(error instanceof TaskCreationBlockedError)) {
585
+ const blocked = error instanceof TaskCreationBlockedError || error instanceof SteeringBlockedError;
586
+ if (!blocked) {
577
587
  reportSlackInboundFailure("task_creation_error");
578
588
  }
579
589
  results.failed.push({
580
590
  agentName: agent.name,
581
- reason: error instanceof TaskCreationBlockedError ? error.reason : "error"
591
+ reason: blocked ? error.reason : "error"
582
592
  });
583
593
  }
584
594
  }
@@ -711,6 +721,7 @@ var SlackRouteModifySchema, allowedEmailDomains, allowedUserIds, envUserFilterCo
711
721
  var init_handlers = __esm(() => {
712
722
  init_zod();
713
723
  init_db4();
724
+ init_steering2();
714
725
  init_dispatcher();
715
726
  init_resolver();
716
727
  init_context_key();
@@ -727,6 +738,7 @@ var init_handlers = __esm(() => {
727
738
  init_templates();
728
739
  init_env_flag();
729
740
  init_external_channel();
741
+ init_left_threads();
730
742
  init_message_text();
731
743
  init_render_v2();
732
744
  init_steering();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflowEventBus2,
3
3
  init_event_bus
4
- } from "./cli-eny54typ.js";
4
+ } from "./cli-wx3rhnm0.js";
5
5
  import {
6
6
  getDbClient2,
7
7
  isRuntimePoolsEnabled,
@@ -63,14 +63,14 @@ import {
63
63
  getStaleApprovalRequests2,
64
64
  upsertKv2,
65
65
  init_db4
66
- } from "./cli-1s1dqn1j.js";
66
+ } from "./cli-1ayk1eas.js";
67
67
  import {
68
68
  listRuntimePools2,
69
69
  init_db2
70
- } from "./cli-cq1pf336.js";
70
+ } from "./cli-mry0qzym.js";
71
71
  import {
72
72
  remediateStalledRuntime
73
- } from "./cli-t282jgab.js";
73
+ } from "./cli-rqkxrmgw.js";
74
74
  import {
75
75
  repointTrackerSyncBySwarmId,
76
76
  init_tracker,
@@ -100,13 +100,13 @@ import {
100
100
  init_approval_cancel,
101
101
  canClaim,
102
102
  init_budget_admission
103
- } from "./cli-1yekbyqm.js";
103
+ } from "./cli-1338796d.js";
104
104
  import {
105
105
  runScriptWithRunCredential,
106
106
  init_run_credential,
107
107
  runSavedScriptAsAgent,
108
108
  init_run_saved
109
- } from "./cli-d2pzqej1.js";
109
+ } from "./cli-0bxqnvq9.js";
110
110
  import {
111
111
  runtimeStaleThresholdMinutes,
112
112
  countActiveRuntimeInstancesForAgent,
@@ -115,7 +115,7 @@ import {
115
115
  init_multi_runtime,
116
116
  createApprovalFollowUpTask,
117
117
  init_approval_notifications
118
- } from "./cli-pwyevs29.js";
118
+ } from "./cli-spknvxbq.js";
119
119
  import {
120
120
  isMultiRuntimeEnabled,
121
121
  init_multi_runtime2
@@ -124,13 +124,13 @@ import {
124
124
  recordIdentityEvent,
125
125
  mintToken,
126
126
  init_users
127
- } from "./cli-8yy525ad.js";
127
+ } from "./cli-bhjt02p8.js";
128
128
  import {
129
129
  TERMINAL_TASK_STATUSES,
130
130
  OPEN_TASK_STATUSES,
131
131
  SUPERSEDED_WORKFLOW_TASK_REASON,
132
132
  init_types4
133
- } from "./cli-41z8xwj0.js";
133
+ } from "./cli-7wspm5gm.js";
134
134
  import {
135
135
  DEFAULT_OPENROUTER_BASE_URL,
136
136
  getOpenRouterBaseUrl,
@@ -141,11 +141,11 @@ import {
141
141
  init_registry3,
142
142
  resolveTemplate,
143
143
  init_resolver
144
- } from "./cli-j4kw3rsx.js";
144
+ } from "./cli-cm5yqn35.js";
145
145
  import {
146
146
  init_package,
147
147
  package_default
148
- } from "./cli-pe09p6dv.js";
148
+ } from "./cli-tqgg40ek.js";
149
149
  import {
150
150
  isEnvFlagEnabled,
151
151
  init_env_flag
@@ -153,7 +153,7 @@ import {
153
153
  import {
154
154
  scrubSecrets,
155
155
  init_secret_scrubber
156
- } from "./cli-a4btqqft.js";
156
+ } from "./cli-1b7btd38.js";
157
157
 
158
158
  // src/be/runtime-pools/routing.ts
159
159
  init_multi_runtime2();
@@ -11,16 +11,16 @@ import {
11
11
  init_active_sessions,
12
12
  getSteeringMessageById2,
13
13
  init_db4
14
- } from "./cli-1s1dqn1j.js";
14
+ } from "./cli-1ayk1eas.js";
15
15
  import {
16
16
  getUserGrant2,
17
17
  init_rbac_roles
18
- } from "./cli-bq2pcphn.js";
18
+ } from "./cli-8hs41zy2.js";
19
19
  import {
20
20
  findUserById,
21
21
  findUserByExternalId,
22
22
  init_users
23
- } from "./cli-8yy525ad.js";
23
+ } from "./cli-bhjt02p8.js";
24
24
  import {
25
25
  isRbacEnabled,
26
26
  can,
@@ -45,7 +45,7 @@ import {
45
45
  import {
46
46
  scrubSecrets,
47
47
  init_secret_scrubber
48
- } from "./cli-a4btqqft.js";
48
+ } from "./cli-1b7btd38.js";
49
49
  import {
50
50
  __esm
51
51
  } from "./cli-242037k3.js";
@@ -499,7 +499,7 @@ function route(def) {
499
499
  try {
500
500
  const rawBody = def.body ? await parseBody(req, def.maxBodyBytes) : undefined;
501
501
  if (def.session && "bodyTaskIds" in def.session) {
502
- const { bodySessionDenial } = await import("./session-access-21t6yjyg.js");
502
+ const { bodySessionDenial } = await import("./session-access-sc9pn9da.js");
503
503
  const denial = await bodySessionDenial(req, def.session.bodyTaskIds(rawBody));
504
504
  if (denial) {
505
505
  jsonError(res, denial, 403);
@@ -0,0 +1,151 @@
1
+ import {
2
+ FX_ROUTE_KEY_VARS,
3
+ requireFxRoute,
4
+ fxSessionExists,
5
+ fxTargetProfile,
6
+ ACPAdapter2
7
+ } from "./cli-rm6hqj3z.js";
8
+ import {
9
+ getKnownContextWindowSize,
10
+ init_context_window
11
+ } from "./cli-73jzwksr.js";
12
+ import {
13
+ getOpenRouterBaseUrl,
14
+ init_openrouter_base_url
15
+ } from "./cli-dfyv0jdy.js";
16
+ import {
17
+ registerVolatileSecret,
18
+ init_secret_scrubber
19
+ } from "./cli-1b7btd38.js";
20
+
21
+ // src/providers/fx-adapter.ts
22
+ init_context_window();
23
+ import { randomUUID } from "node:crypto";
24
+ import { chmod, mkdir, rename, rm } from "node:fs/promises";
25
+ import { dirname, join } from "node:path";
26
+ init_openrouter_base_url();
27
+ init_secret_scrubber();
28
+ var FX_OPENAI_BASE_URL = "https://api.openai.com/v1";
29
+ function checkFxCredentials2(env) {
30
+ return FX_ROUTE_KEY_VARS.some((name) => env[name]?.trim()) ? { ready: true, missing: [], satisfiedBy: "env" } : {
31
+ ready: false,
32
+ missing: [...FX_ROUTE_KEY_VARS],
33
+ hint: "Set OPENROUTER_API_KEY (openrouter/<vendor>/<id>), OPENAI_API_KEY (bare OpenAI ids) or AI_GATEWAY_API_KEY (vercel/<vendor>/<id>) for fx."
34
+ };
35
+ }
36
+ function isJsonObject(value) {
37
+ return !!value && typeof value === "object" && !Array.isArray(value);
38
+ }
39
+ function connection(baseUrl, keyVar) {
40
+ return {
41
+ protocol: "openai-chat-completions",
42
+ base_url: baseUrl,
43
+ auth: { type: "bearer", env: keyVar }
44
+ };
45
+ }
46
+ function mergeFxSettings(current, input) {
47
+ const next = structuredClone(current);
48
+ const providers = isJsonObject(next.providers) ? next.providers : {};
49
+ const owned = {
50
+ openrouter: connection(input.openRouterBaseUrl, "OPENROUTER_API_KEY"),
51
+ openai: connection(FX_OPENAI_BASE_URL, "OPENAI_API_KEY")
52
+ };
53
+ for (const [name, fields] of Object.entries(owned)) {
54
+ const existing = isJsonObject(providers[name]) ? providers[name] : {};
55
+ providers[name] = { ...existing, ...fields };
56
+ }
57
+ const { fxProvider, fxModel } = input.route;
58
+ const target = fxProvider === "gateway" ? undefined : providers[fxProvider];
59
+ if (target && input.contextWindow && input.contextWindow > 0) {
60
+ const metadata = isJsonObject(target.model_metadata) ? target.model_metadata : {};
61
+ if (!isJsonObject(metadata[fxModel])) {
62
+ metadata[fxModel] = { context_window: input.contextWindow };
63
+ }
64
+ target.model_metadata = metadata;
65
+ }
66
+ next.providers = providers;
67
+ next.auto_upgrade = false;
68
+ next.session_titles = false;
69
+ return next;
70
+ }
71
+ async function ensureFxSettings(input) {
72
+ const path = join(input.home, ".fx", "settings.json");
73
+ const file = Bun.file(path);
74
+ let current = {};
75
+ if (await file.exists()) {
76
+ const text = await file.text();
77
+ if (text.trim()) {
78
+ let parsed;
79
+ try {
80
+ parsed = JSON.parse(text);
81
+ } catch {
82
+ throw new Error(`${path} is not valid JSON; fix or remove it before running fx`);
83
+ }
84
+ if (!isJsonObject(parsed)) {
85
+ throw new Error(`${path} is not a JSON object; fix or remove it before running fx`);
86
+ }
87
+ current = parsed;
88
+ }
89
+ }
90
+ const next = mergeFxSettings(current, input);
91
+ if (JSON.stringify(next) === JSON.stringify(current))
92
+ return { path, changed: false };
93
+ await mkdir(dirname(path), { recursive: true, mode: 448 });
94
+ const tmp = `${path}.swarm-${process.pid}-${randomUUID()}.tmp`;
95
+ try {
96
+ await Bun.write(tmp, `${JSON.stringify(next, null, 2)}
97
+ `);
98
+ await chmod(tmp, 384);
99
+ await rename(tmp, path);
100
+ } catch (error) {
101
+ await rm(tmp, { force: true });
102
+ throw error;
103
+ }
104
+ return { path, changed: true };
105
+ }
106
+
107
+ class FxAdapter2 {
108
+ options;
109
+ name = "fx";
110
+ traits = {
111
+ hasMcp: true,
112
+ hasToolSearch: false,
113
+ nativeSkillDiscovery: true,
114
+ hasLocalEnvironment: true,
115
+ steerModes: ["steer"]
116
+ };
117
+ acp = new ACPAdapter2({ providerName: "fx", target: fxTargetProfile });
118
+ constructor(options = {}) {
119
+ this.options = options;
120
+ }
121
+ async createSession(sessionConfig) {
122
+ const route = requireFxRoute(sessionConfig.model);
123
+ const env = { ...process.env, ...sessionConfig.env };
124
+ const apiKey = env[route.keyVar]?.trim();
125
+ if (!apiKey)
126
+ throw new Error(`fx requires ${route.keyVar} for ${route.model}`);
127
+ registerVolatileSecret(apiKey, route.keyVar);
128
+ const home = this.options.home ?? env.HOME;
129
+ if (!home)
130
+ throw new Error("fx requires HOME: it keeps its settings and sessions in ~/.fx");
131
+ await ensureFxSettings({
132
+ home,
133
+ route,
134
+ contextWindow: route.fxProvider === "gateway" ? undefined : getKnownContextWindowSize(route.model),
135
+ openRouterBaseUrl: getOpenRouterBaseUrl(env)
136
+ });
137
+ return this.acp.createSession({
138
+ ...sessionConfig,
139
+ model: route.model,
140
+ env: { ...sessionConfig.env, [route.keyVar]: apiKey, HOME: home }
141
+ });
142
+ }
143
+ async canResume(sessionId) {
144
+ return fxSessionExists(sessionId, this.options.home ?? process.env.HOME);
145
+ }
146
+ formatCommand(commandName) {
147
+ return `/${commandName}`;
148
+ }
149
+ }
150
+
151
+ export { checkFxCredentials2, FxAdapter2 };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  contextBoundNoteThreshold,
3
3
  createContextBoundNote
4
- } from "./cli-h55y2bjc.js";
4
+ } from "./cli-dhar9qay.js";
5
5
  import {
6
6
  resolveSlashSkillPrompt
7
7
  } from "./cli-jc1g9ndz.js";
@@ -19,10 +19,10 @@ import {
19
19
  autoIndexMemoryFile,
20
20
  fetchConcurrentContext,
21
21
  summarizeTranscript
22
- } from "./cli-224epwwf.js";
22
+ } from "./cli-hn9hxmz9.js";
23
23
  import {
24
24
  applyReasoningEffort
25
- } from "./cli-vqgnyh76.js";
25
+ } from "./cli-98rw5dt5.js";
26
26
  import {
27
27
  fetchInstalledMcpServers
28
28
  } from "./cli-bst1vp7e.js";
@@ -31,7 +31,7 @@ import {
31
31
  getContextWindowSize,
32
32
  clampContextPercent,
33
33
  init_context_window
34
- } from "./cli-rtk9g7av.js";
34
+ } from "./cli-73jzwksr.js";
35
35
  import {
36
36
  swarmRuntimeInstanceId,
37
37
  init_multi_runtime2
@@ -47,7 +47,7 @@ import {
47
47
  openAICompatibleKeyLabels,
48
48
  validateOpencodeCredentials,
49
49
  init_credentials2
50
- } from "./cli-aq58fk5m.js";
50
+ } from "./cli-g83s9ewh.js";
51
51
  import {
52
52
  isEnvFlagEnabled,
53
53
  isSessionSummarySkipped,
@@ -57,7 +57,7 @@ import {
57
57
  scrubSecrets,
58
58
  registerVolatileSecret,
59
59
  init_secret_scrubber
60
- } from "./cli-a4btqqft.js";
60
+ } from "./cli-1b7btd38.js";
61
61
  import {
62
62
  openAICompatibleProviders,
63
63
  providerKeyVars,
@@ -68,7 +68,7 @@ import {
68
68
  openAICompatibleProvider,
69
69
  providerForKeyVar,
70
70
  init_src2
71
- } from "./cli-4r12t6w6.js";
71
+ } from "./cli-5c4hjzne.js";
72
72
 
73
73
  // src/providers/opencode-adapter.ts
74
74
  init_src2();
package/dist/cli.js CHANGED
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  scrubSecrets,
22
22
  init_secret_scrubber
23
- } from "./cli-a4btqqft.js";
23
+ } from "./cli-1b7btd38.js";
24
24
  import {
25
25
  __toESM,
26
26
  __commonJS
@@ -50,7 +50,7 @@ var import_react = __toESM(require_react(), 1);
50
50
  // package.json
51
51
  var package_default = {
52
52
  name: "@desplega.ai/agent-swarm",
53
- version: "2.7.4",
53
+ version: "2.7.5",
54
54
  description: "agent-swarm.dev — an open-source operating system for AI work: a lead agent breaks goals into tasks, routes them to specialized workers such as Claude Code or Codex, runs each worker in an isolated container, and preserves shared memory, tools, schedules, and review gates so delegated work compounds across sessions.",
55
55
  keywords: [
56
56
  "agent-swarm.dev",
@@ -843,7 +843,7 @@ function McpServer({ port, apiKey, dbPath }) {
843
843
  if (dbPath) {
844
844
  process.env.DATABASE_PATH = dbPath;
845
845
  }
846
- import("./http-xzxk9mst.js").then(() => {
846
+ import("./http-1ted0j1k.js").then(() => {
847
847
  setStatus("running");
848
848
  }).catch((err) => {
849
849
  setStatus("error");
@@ -930,7 +930,7 @@ function WorkerRunner({
930
930
  const { exit } = use_app_default();
931
931
  import_react.useEffect(() => {
932
932
  installConsoleScrub();
933
- import("./worker-fjdqra6q.js").then(({ runWorker }) => runWorker({
933
+ import("./worker-0c5tyzqe.js").then(({ runWorker }) => runWorker({
934
934
  prompt: prompt || undefined,
935
935
  yolo,
936
936
  systemPrompt: systemPrompt || undefined,
@@ -948,7 +948,7 @@ function LeadRunner({ prompt, yolo, systemPrompt, systemPromptFile, additionalAr
948
948
  const { exit } = use_app_default();
949
949
  import_react.useEffect(() => {
950
950
  installConsoleScrub();
951
- import("./lead-567kw7x3.js").then(({ runLead }) => runLead({
951
+ import("./lead-fjy418cw.js").then(({ runLead }) => runLead({
952
952
  prompt: prompt || undefined,
953
953
  yolo,
954
954
  systemPrompt: systemPrompt || undefined,
@@ -988,8 +988,8 @@ function LazyComponent({
988
988
  }
989
989
  return import_react.createElement(Component, props);
990
990
  }
991
- var loadOnboard = () => import("./onboard-vz2s5df3.js").then(({ Onboard }) => Onboard);
992
- var loadConnect = () => import("./setup-4592tqz4.js").then(({ Setup }) => Setup);
991
+ var loadOnboard = () => import("./onboard-myn5hraa.js").then(({ Onboard }) => Onboard);
992
+ var loadConnect = () => import("./setup-4fr0m7a1.js").then(({ Setup }) => Setup);
993
993
  function UnknownCommand({ command }) {
994
994
  const { exit } = use_app_default();
995
995
  import_react.useEffect(() => {
@@ -1121,19 +1121,19 @@ ${binName} docs \u2014 v${package_default.version}
1121
1121
  }
1122
1122
  process.exit(0);
1123
1123
  } else if (args.command === "hook") {
1124
- const { runHook } = await import("./hook-zxwje86c.js");
1124
+ const { runHook } = await import("./hook-4fd5wq5w.js");
1125
1125
  await runHook();
1126
1126
  } else if (args.command === "codex-hook") {
1127
- const { handleCodexHook } = await import("./codex-hook-vrzz2xhr.js");
1127
+ const { handleCodexHook } = await import("./codex-hook-9efm2x1m.js");
1128
1128
  await handleCodexHook();
1129
1129
  process.exit(process.exitCode ?? 0);
1130
1130
  } else if (args.command === "session-summary-stdin") {
1131
- const { runSessionSummaryFromStdin } = await import("./hook-aadrn69x.js");
1131
+ const { runSessionSummaryFromStdin } = await import("./hook-kj3d398m.js");
1132
1132
  await runSessionSummaryFromStdin();
1133
1133
  process.exit(process.exitCode ?? 0);
1134
1134
  } else if (args.command === "x") {
1135
1135
  const xArgs = process.argv.slice(process.argv.indexOf("x") + 1);
1136
- const { runXCommand } = await import("./x-b6wxntdt.js");
1136
+ const { runXCommand } = await import("./x-vmmye1kb.js");
1137
1137
  await runXCommand(xArgs);
1138
1138
  } else if (args.command === "scripts") {
1139
1139
  const scriptsArgs = process.argv.slice(process.argv.indexOf("scripts") + 1);
@@ -1141,7 +1141,7 @@ ${binName} docs \u2014 v${package_default.version}
1141
1141
  printHelp("scripts");
1142
1142
  process.exit(scriptsArgs[0] === "reembed" || args.showHelp ? 0 : 1);
1143
1143
  }
1144
- const { runScriptsMaintenanceCommand } = await import("./maintenance-hbptpk6p.js");
1144
+ const { runScriptsMaintenanceCommand } = await import("./maintenance-a4bm1bmt.js");
1145
1145
  await runScriptsMaintenanceCommand(scriptsArgs);
1146
1146
  console.log("Scripts re-embedded.");
1147
1147
  } else if (args.command === "rbac") {
@@ -1151,17 +1151,17 @@ ${binName} docs \u2014 v${package_default.version}
1151
1151
  printHelp("rbac");
1152
1152
  process.exit(args.showHelp ? 0 : 1);
1153
1153
  }
1154
- const { runRbacCliCommand } = await import("./rbac-roles-rrw8twdz.js");
1154
+ const { runRbacCliCommand } = await import("./rbac-roles-s8y6ecb5.js");
1155
1155
  await runRbacCliCommand(rbacArgs);
1156
1156
  } else if (args.command === "codex-login") {
1157
- const { runCodexLogin } = await import("./codex-login-0gg46ygn.js");
1157
+ const { runCodexLogin } = await import("./codex-login-y0pmff1c.js");
1158
1158
  const codexLoginArgs = process.argv.slice(process.argv.indexOf("codex-login") + 1);
1159
1159
  await runCodexLogin(codexLoginArgs);
1160
1160
  } else if (args.command === "codex-session-runner") {
1161
- const { runCodexSessionRunner } = await import("./codex-session-runner-dr2cxe1c.js");
1161
+ const { runCodexSessionRunner } = await import("./codex-session-runner-3mwmk3d9.js");
1162
1162
  await runCodexSessionRunner();
1163
1163
  } else if (args.command === "claude-managed-setup") {
1164
- const { runClaudeManagedSetup } = await import("./claude-managed-setup-afpa82f7.js");
1164
+ const { runClaudeManagedSetup } = await import("./claude-managed-setup-0wyynpn1.js");
1165
1165
  const setupArgs = process.argv.slice(process.argv.indexOf("claude-managed-setup") + 1);
1166
1166
  await runClaudeManagedSetup(setupArgs);
1167
1167
  } else if (args.command === "worker-token") {
@@ -1169,11 +1169,11 @@ ${binName} docs \u2014 v${package_default.version}
1169
1169
  const tokenArgs = process.argv.slice(process.argv.indexOf("worker-token") + 1);
1170
1170
  process.exit(await runWorkerToken(tokenArgs));
1171
1171
  } else if (args.command === "e2b") {
1172
- const { runE2BCommand } = await import("./e2b-renc0k8q.js");
1172
+ const { runE2BCommand } = await import("./e2b-qcaj675y.js");
1173
1173
  const e2bArgs = process.argv.slice(process.argv.indexOf("e2b") + 1);
1174
1174
  await runE2BCommand(e2bArgs);
1175
1175
  } else if (args.command === "controller") {
1176
- const { runController } = await import("./controller-z0s7sv6r.js");
1176
+ const { runController } = await import("./controller-xjp8vswh.js");
1177
1177
  await runController(process.argv.slice(process.argv.indexOf("controller") + 1));
1178
1178
  } else {
1179
1179
  render_default(/* @__PURE__ */ jsx_dev_runtime.jsxDEV(App, {
@@ -2,17 +2,17 @@ import {
2
2
  checkCodexCredentials2,
3
3
  createInProcessCodexSession2,
4
4
  CodexAdapter2
5
- } from "./cli-a81qevyg.js";
5
+ } from "./cli-7a42nfy0.js";
6
6
  import"./cli-4zsenjhy.js";
7
7
  import"./cli-kr5tjjtz.js";
8
8
  import"./cli-98rwmcyc.js";
9
9
  import"./cli-4bd1rck6.js";
10
10
  import"./cli-jc1g9ndz.js";
11
- import"./cli-j4kt1mpb.js";
11
+ import"./cli-a47xy8eq.js";
12
12
  import"./cli-0726awxw.js";
13
- import"./cli-h55y2bjc.js";
14
- import"./cli-bwty35gx.js";
15
- import"./cli-vqgnyh76.js";
13
+ import"./cli-dhar9qay.js";
14
+ import"./cli-mthwvjre.js";
15
+ import"./cli-98rw5dt5.js";
16
16
  export {
17
17
  CodexAdapter2 as CodexAdapter,
18
18
  checkCodexCredentials2 as checkCodexCredentials,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bun
2
2
  import {
3
3
  renderSteeringDelivery
4
- } from "./cli-tzrpv5sc.js";
4
+ } from "./cli-ftyxyspd.js";
5
5
  import {
6
6
  guardGhPrBody,
7
7
  guardGhPrRoom
@@ -8,7 +8,7 @@ import {
8
8
  loadAllCodexOAuthSlots,
9
9
  storeCodexOAuth,
10
10
  init_storage
11
- } from "./cli-jg0nfda6.js";
11
+ } from "./cli-75gkpjvw.js";
12
12
  import {
13
13
  getApiKey,
14
14
  init_api_key
@@ -1,20 +1,20 @@
1
- import"./cli-h55y2bjc.js";
2
- import"./cli-bwty35gx.js";
3
- import"./cli-j4kt1mpb.js";
1
+ import"./cli-dhar9qay.js";
2
+ import"./cli-mthwvjre.js";
3
+ import"./cli-a47xy8eq.js";
4
4
  import {
5
5
  createInProcessCodexSession2
6
- } from "./cli-a81qevyg.js";
6
+ } from "./cli-7a42nfy0.js";
7
7
  import"./cli-jc1g9ndz.js";
8
8
  import"./cli-0726awxw.js";
9
9
  import"./cli-4bd1rck6.js";
10
10
  import"./cli-kr5tjjtz.js";
11
11
  import"./cli-98rwmcyc.js";
12
- import"./cli-vqgnyh76.js";
12
+ import"./cli-98rw5dt5.js";
13
13
  import"./cli-4zsenjhy.js";
14
14
  import {
15
15
  scrubSecrets,
16
16
  init_secret_scrubber
17
- } from "./cli-a4btqqft.js";
17
+ } from "./cli-1b7btd38.js";
18
18
 
19
19
  // src/commands/codex-session-runner.ts
20
20
  init_secret_scrubber();
@@ -2,12 +2,12 @@ import {
2
2
  getAllAgents2,
3
3
  getAllTasks2,
4
4
  init_db4
5
- } from "./cli-1s1dqn1j.js";
5
+ } from "./cli-1ayk1eas.js";
6
6
  import {
7
7
  EXTERNAL_CHANNEL_BLOCKED_REPLY2,
8
8
  shouldBlockChannel2,
9
9
  init_external_channel
10
- } from "./cli-a1fhj4n9.js";
10
+ } from "./cli-mmwm7zbf.js";
11
11
  import {
12
12
  isEnvFlagEnabled,
13
13
  init_env_flag