@desplega.ai/agent-swarm 2.4.0 → 2.4.1

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 (222) hide show
  1. package/README.md +1 -1
  2. package/dist/{acp-adapter-kedstxx6.js → acp-adapter-zvzr538d.js} +9 -9
  3. package/dist/{actions-vget6r1k.js → actions-jhtqdw69.js} +21 -21
  4. package/dist/{amp-adapter-xeb5mktv.js → amp-adapter-bd84rhs2.js} +4 -4
  5. package/dist/{app-mqap8t8m.js → app-kreq1gwg.js} +3 -3
  6. package/dist/{assistant-h0gv97mv.js → assistant-3k22sbsq.js} +22 -22
  7. package/dist/{boot-reembed-qr8a894z.js → boot-reembed-e53x6b9v.js} +1 -1
  8. package/dist/{boot-reembed-rj85jjhw.js → boot-reembed-f6z923ny.js} +1 -1
  9. package/dist/{boot-scrub-sweep-eyfvn6v9.js → boot-scrub-sweep-0538vsb7.js} +4 -4
  10. package/dist/{boot-seeds-xs9a8dx1.js → boot-seeds-6wxqkfk2.js} +4 -4
  11. package/dist/{claude-adapter-bm23cye7.js → claude-adapter-gfts5044.js} +9 -9
  12. package/dist/{claude-managed-adapter-1mwrsm9d.js → claude-managed-adapter-h2y889ge.js} +2 -2
  13. package/dist/{claude-managed-setup-gkfgks4j.js → claude-managed-setup-h00hsgtz.js} +2 -2
  14. package/dist/{claude-sdk-session-apb4ypz3.js → claude-sdk-session-56besmfz.js} +13 -13
  15. package/dist/{cli-nrrg0fvy.js → cli-0bh477zn.js} +18 -5
  16. package/dist/{cli-7gh7020n.js → cli-1dmcq2eh.js} +1 -1
  17. package/dist/{cli-7ayprxp7.js → cli-2dfbv8qr.js} +8 -0
  18. package/dist/{cli-1cevz46c.js → cli-3kh4kpqy.js} +6 -6
  19. package/dist/{cli-tg9ksbn8.js → cli-3p8fqcnh.js} +2 -2
  20. package/dist/{cli-x1p5dhq2.js → cli-3r448dqn.js} +3 -3
  21. package/dist/{cli-ecshf504.js → cli-3tnpj2bh.js} +7 -7
  22. package/dist/{cli-ffbrkh1r.js → cli-471qk6s2.js} +46 -38
  23. package/dist/{cli-a49vpbf3.js → cli-5kqnemen.js} +1 -1
  24. package/dist/{cli-zvze9rbm.js → cli-6ncjvx55.js} +3 -3
  25. package/dist/{cli-fb6t92v8.js → cli-6x9ma5w5.js} +1 -1
  26. package/dist/{cli-c8fwpgqb.js → cli-7225gwj7.js} +2 -2
  27. package/dist/{cli-bn26xbcs.js → cli-8nyhf7za.js} +1 -1
  28. package/dist/{cli-y83zk5sb.js → cli-a0kcty51.js} +4 -4
  29. package/dist/{cli-8b9wvjps.js → cli-a4gvwttf.js} +4 -4
  30. package/dist/{cli-jhp7w1fy.js → cli-a5ebc95n.js} +2 -2
  31. package/dist/{cli-mz1ezzzh.js → cli-ash6xxk7.js} +2 -2
  32. package/dist/{cli-rsd7ga7v.js → cli-axh29tyr.js} +11 -11
  33. package/dist/{cli-p22zdvnt.js → cli-bn0rewsy.js} +3 -3
  34. package/dist/{cli-6ftrrwm1.js → cli-bn5kevnf.js} +5 -5
  35. package/dist/{cli-p1m2b6gc.js → cli-d2mb5s8a.js} +7 -7
  36. package/dist/{cli-c5sbmw1v.js → cli-d82btycs.js} +94 -15
  37. package/dist/{cli-vjfpshn3.js → cli-ejs3m1sx.js} +1 -1
  38. package/dist/{cli-a1esmmee.js → cli-fpmsqq59.js} +7 -2
  39. package/dist/{cli-8cxkw1f5.js → cli-fz9kewbh.js} +2 -2
  40. package/dist/{cli-8rwvksbc.js → cli-g0hgtz4p.js} +5 -5
  41. package/dist/{cli-kz116kvw.js → cli-gf0kfg81.js} +7 -7
  42. package/dist/{cli-eqgfs202.js → cli-hqhzg1qq.js} +2 -2
  43. package/dist/{cli-3wjs22x3.js → cli-j4rqdf2n.js} +2 -2
  44. package/dist/{cli-ywyrffff.js → cli-jh0qcrga.js} +1 -1
  45. package/dist/{cli-ttaz6c7m.js → cli-k9z4zd4p.js} +6 -5
  46. package/dist/{cli-nme7wery.js → cli-kmqgmcnb.js} +46 -13
  47. package/dist/{cli-x719j3vs.js → cli-kr2pmfqx.js} +392 -168
  48. package/dist/{cli-wrv09v7q.js → cli-m2qgh5sv.js} +1 -1
  49. package/dist/{cli-xfe63zx3.js → cli-mfe7f7b5.js} +2 -2
  50. package/dist/{cli-x3en6ct3.js → cli-nwyw3zhg.js} +1 -1
  51. package/dist/{cli-5s5hx57y.js → cli-nx462e4v.js} +1 -1
  52. package/dist/{cli-bfc3k1x5.js → cli-p0rakbrk.js} +9 -9
  53. package/dist/{cli-avmqhatn.js → cli-p6argxh9.js} +8 -8
  54. package/dist/{cli-3avfh5az.js → cli-pemywhfq.js} +2 -2
  55. package/dist/{cli-sppc0cmw.js → cli-pnp2j5zg.js} +2 -2
  56. package/dist/{cli-wk8ccrz6.js → cli-pw7v69vp.js} +2 -2
  57. package/dist/{cli-bhwa8rzc.js → cli-rdq7tzwm.js} +13 -12
  58. package/dist/{cli-rg7ntypm.js → cli-rqqsfz30.js} +379 -87
  59. package/dist/{cli-kk2r80n5.js → cli-s48yvzb8.js} +4 -4
  60. package/dist/{cli-zv4vy2b0.js → cli-s95dknxh.js} +1 -1
  61. package/dist/{cli-b80a1100.js → cli-sjyetj21.js} +2 -2
  62. package/dist/{cli-rdr166ht.js → cli-smvcw9z5.js} +1 -1
  63. package/dist/{cli-2rwet3r7.js → cli-sv5gb0yb.js} +1 -1
  64. package/dist/{cli-5ff2sjyt.js → cli-syhq378v.js} +2 -2
  65. package/dist/{cli-tj4j2ts4.js → cli-tbhwrxpt.js} +8 -8
  66. package/dist/{cli-4fhyq711.js → cli-vy0fay6k.js} +13 -13
  67. package/dist/{cli-ptkpaqfy.js → cli-wt645v7q.js} +1 -1
  68. package/dist/{cli-f3nx1h8z.js → cli-wxbn3yfx.js} +2 -2
  69. package/dist/{cli-wyrr38xm.js → cli-x5mq1fyq.js} +1 -1
  70. package/dist/{cli-ccn0eybf.js → cli-xbzvet96.js} +6 -6
  71. package/dist/{cli-4mkvwgzr.js → cli-xf234ws8.js} +1 -1
  72. package/dist/{cli-tgvpmnwz.js → cli-xftrvxag.js} +5 -5
  73. package/dist/{cli-02vhhssk.js → cli-z071fb95.js} +5 -5
  74. package/dist/{cli-mvg2hf8p.js → cli-z1ew8vbq.js} +14 -7
  75. package/dist/{cli-dsgj3e7a.js → cli-zfg9enh9.js} +2 -2
  76. package/dist/{cli-yxqag76b.js → cli-zw88zjba.js} +1 -1
  77. package/dist/cli.js +19 -19
  78. package/dist/{codex-adapter-pp2gq8gr.js → codex-adapter-p6rmm7vv.js} +6 -6
  79. package/dist/{codex-hook-qwzccd64.js → codex-hook-x7nejyrr.js} +7 -4
  80. package/dist/{codex-login-35p4sk85.js → codex-login-m819c41r.js} +1 -1
  81. package/dist/{codex-session-runner-0vzn09t8.js → codex-session-runner-8vd5t9t0.js} +7 -7
  82. package/dist/{commands-psqhkttb.js → commands-7ems2p13.js} +2 -2
  83. package/dist/{controller-t20vz2k8.js → controller-m263fg43.js} +4 -4
  84. package/dist/{controllers-connect-gkxmqw9d.js → controllers-connect-bg33ae53.js} +23 -23
  85. package/dist/{cursor-adapter-3v542qe5.js → cursor-adapter-cz6nm6mj.js} +3 -3
  86. package/dist/{db-2xbyenjr.js → db-w505dwa8.js} +2 -2
  87. package/dist/{db-nc1rd869.js → db-ys2rbdft.js} +3 -3
  88. package/dist/{devin-adapter-7egzmt0k.js → devin-adapter-zgqadvnm.js} +1 -1
  89. package/dist/{dispatcher-ewceb8ts.js → dispatcher-0s0mckqr.js} +20 -20
  90. package/dist/{docker-njavd3fb.js → docker-fkgtr75t.js} +2 -2
  91. package/dist/{dsh-adapter-75xwh78t.js → dsh-adapter-3n3net33.js} +3 -3
  92. package/dist/{e2b-5r6a5jeb.js → e2b-7am6tmq6.js} +2 -2
  93. package/dist/{e2b-pw1nvtmh.js → e2b-thdcxtjd.js} +2 -2
  94. package/dist/{easter-egg-3d-xsc47jwf.js → easter-egg-3d-5cgynaja.js} +1 -1
  95. package/dist/{event-bus-101fenkh.js → event-bus-9vpk8gmq.js} +1 -1
  96. package/dist/{execute-gzmw1mnw.js → execute-t4e6m3rw.js} +1 -1
  97. package/dist/{external-channel-a5dsmxn4.js → external-channel-5b23fv8z.js} +2 -2
  98. package/dist/{grok-adapter-vj88xr23.js → grok-adapter-q9fghe5q.js} +10 -10
  99. package/dist/handlers-mqrym347.js +39 -0
  100. package/dist/{heartbeat-t2m9r3wa.js → heartbeat-tww6yx1w.js} +23 -23
  101. package/dist/{hook-xa677f8r.js → hook-dx0pkvar.js} +16 -9
  102. package/dist/{hook-8femx1bg.js → hook-pvmh9b6m.js} +6 -6
  103. package/dist/{http-xpmmq028.js → http-k2ejbt05.js} +199 -131
  104. package/dist/{index-s7ckdajq.js → index-2z710v4x.js} +10 -10
  105. package/dist/{index-dg2tmj99.js → index-dgz61nff.js} +20 -20
  106. package/dist/{index-syztqdt6.js → index-g6tbb6ve.js} +1 -1
  107. package/dist/index-h2ek08d6.js +40 -0
  108. package/dist/index-pqfwh9nn.js +41 -0
  109. package/dist/{index-cdzyfrsp.js → index-x5aktmp8.js} +1 -1
  110. package/dist/{keepalive-3nr4st3r.js → keepalive-nhvpw10z.js} +4 -4
  111. package/dist/lead-jb6sf69z.js +78 -0
  112. package/dist/{maintenance-verwpe2c.js → maintenance-agakc519.js} +1 -1
  113. package/dist/{oauth-refresh-sweep-9q2t0y3q.js → oauth-refresh-sweep-4dcbhtn0.js} +3 -3
  114. package/dist/{onboard-aytqedmq.js → onboard-4n2kwa4v.js} +3 -3
  115. package/dist/{opencode-adapter-f4hryjny.js → opencode-adapter-3s7ax02e.js} +7 -7
  116. package/dist/{otel-impl-hckw4wt1.js → otel-impl-tfa12080.js} +2 -2
  117. package/dist/{pi-mono-adapter-hxby0ce1.js → pi-mono-adapter-ytp7gz8b.js} +22 -11
  118. package/dist/{pricing-refresh-5nvme3sm.js → pricing-refresh-3cqx3f3x.js} +3 -3
  119. package/dist/{rbac-roles-pd8c26m1.js → rbac-roles-9fae5rnv.js} +1 -1
  120. package/dist/{rbac-roles-vbpy21mg.js → rbac-roles-y6zbfzve.js} +2 -2
  121. package/dist/{render-v2-7nqgvk2q.js → render-v2-emawjvc4.js} +3 -3
  122. package/dist/{resume-b6djcj3c.js → resume-zhgts7h7.js} +10 -8
  123. package/dist/{runtime-txrxc9za.js → runtime-xe3aqy4x.js} +1 -1
  124. package/dist/{session-access-fc3f9y12.js → session-access-cm823e06.js} +4 -4
  125. package/dist/{setup-n39szm6b.js → setup-tkp99w1e.js} +1 -1
  126. package/dist/{virtual-modules-wyp2k6z3.js → virtual-modules-4r3zkc20.js} +2 -2
  127. package/dist/{work-objects-jem2fre0.js → work-objects-f722h263.js} +23 -23
  128. package/dist/worker-p7f336rq.js +78 -0
  129. package/dist/{x-8ewt8gxn.js → x-y45mthwn.js} +2 -2
  130. package/openapi.json +99 -52
  131. package/package.json +2 -2
  132. package/src/apps/action-runner.ts +146 -0
  133. package/src/apps/row-store.ts +4 -2
  134. package/src/apps/script-types.ts +1 -1
  135. package/src/be/db.ts +14 -4
  136. package/src/be/fleet-benchmark-stats.ts +10 -5
  137. package/src/be/models-catalog.ts +4 -0
  138. package/src/be/onboarding.ts +6 -0
  139. package/src/be/scripts/typecheck.ts +13 -0
  140. package/src/be/swarm-config-guard.ts +10 -1
  141. package/src/be/telemetry-enable.ts +1 -1
  142. package/src/commands/provider-credentials.ts +12 -2
  143. package/src/commands/runner.ts +3 -0
  144. package/src/heartbeat/heartbeat.ts +2 -2
  145. package/src/hooks/codex-hook.ts +6 -2
  146. package/src/hooks/hook.ts +7 -0
  147. package/src/hooks/pr-body-guard.ts +38 -11
  148. package/src/hooks/pr-room-guard.ts +88 -0
  149. package/src/http/agents.ts +1 -0
  150. package/src/http/apps.ts +84 -181
  151. package/src/http/fleet-benchmark.ts +79 -30
  152. package/src/http/global-config.ts +7 -0
  153. package/src/http/ranking.ts +24 -40
  154. package/src/http/tasks.ts +2 -1
  155. package/src/http/telemetry-ui.ts +1 -1
  156. package/src/http/used-by.ts +55 -19
  157. package/src/http/users.ts +2 -2
  158. package/src/providers/amp-adapter.ts +1 -1
  159. package/src/providers/pi-mono-adapter.ts +15 -0
  160. package/src/providers/reasoning-effort.ts +2 -1
  161. package/src/providers/types.ts +2 -0
  162. package/src/ranking/telemetry-ranking.ts +5 -33
  163. package/src/scripts-runtime/sdk-allowlist.ts +7 -0
  164. package/src/scripts-runtime/types/stdlib.d.ts +31 -0
  165. package/src/scripts-runtime/types/swarm-sdk.d.ts +31 -0
  166. package/src/server.ts +4 -0
  167. package/src/telemetry-context.ts +19 -1
  168. package/src/telemetry-contract/EVENTS.md +42 -8
  169. package/src/telemetry-contract/SOURCE.json +6 -5
  170. package/src/telemetry-contract/catalog.json +225 -5
  171. package/src/telemetry-contract/ranking/fixtures/valid/no-claim.json +10 -0
  172. package/src/telemetry-contract/ranking/listing.v1.schema.json +2 -2
  173. package/src/telemetry-contract/types.gen.ts +225 -27
  174. package/src/telemetry-identity.ts +47 -9
  175. package/src/telemetry-snapshot.ts +9 -1
  176. package/src/telemetry-ui-events.ts +9 -2
  177. package/src/telemetry.ts +14 -3
  178. package/src/tests/app-action-run-tool.test.ts +178 -0
  179. package/src/tests/app-row-tools.test.ts +360 -0
  180. package/src/tests/check-pr-body.test.ts +0 -23
  181. package/src/tests/credential-check.test.ts +38 -0
  182. package/src/tests/fleet-benchmark.test.ts +122 -2
  183. package/src/tests/http-users.test.ts +62 -1
  184. package/src/tests/model-catalog-table.test.ts +63 -0
  185. package/src/tests/model-profiles-api.test.ts +19 -7
  186. package/src/tests/models-catalog.test.ts +50 -0
  187. package/src/tests/onboarding.test.ts +21 -0
  188. package/src/tests/org-website.test.ts +62 -0
  189. package/src/tests/pi-mono-adapter.test.ts +23 -0
  190. package/src/tests/pr-body-leaks.test.ts +4 -0
  191. package/src/tests/pr-room-guard.test.ts +242 -0
  192. package/src/tests/ranking-listing.test.ts +8 -23
  193. package/src/tests/ranking-route.test.ts +49 -47
  194. package/src/tests/reasoning-effort.test.ts +39 -3
  195. package/src/tests/runner-harness-telemetry-env.test.ts +56 -1
  196. package/src/tests/swarm-tool-result-gate.test.ts +2 -4
  197. package/src/tests/telemetry-context.test.ts +128 -2
  198. package/src/tests/telemetry-ui-route.test.ts +123 -0
  199. package/src/tests/tool-annotations.test.ts +3 -2
  200. package/src/tests/used-by-route.test.ts +144 -10
  201. package/src/tests/workflow-agent-task-retry.test.ts +130 -4
  202. package/src/tests/workflow-wait-recovery.test.ts +116 -4
  203. package/src/tools/app-action-run.ts +63 -0
  204. package/src/tools/app-rows.ts +234 -0
  205. package/src/tools/model-catalog/index.ts +1 -1
  206. package/src/tools/tool-config.ts +8 -0
  207. package/src/tools/utils.ts +1 -1
  208. package/src/tools/workflows/retry-workflow-run.ts +1 -1
  209. package/src/types.ts +17 -0
  210. package/src/utils/company-profile.ts +24 -0
  211. package/src/utils/org-website.ts +58 -21
  212. package/src/workflows/recovery.ts +10 -22
  213. package/src/workflows/resume.ts +16 -0
  214. package/src/workflows/task-step-routing.ts +47 -7
  215. package/templates/skills/apps/SKILL.md +41 -2
  216. package/templates/skills/apps/content.md +41 -2
  217. package/dist/handlers-zbs90bny.js +0 -39
  218. package/dist/index-8pwc1jc8.js +0 -40
  219. package/dist/index-nxa6me0q.js +0 -41
  220. package/dist/lead-td8h2sfn.js +0 -78
  221. package/dist/worker-wr6xgfr2.js +0 -78
  222. package/src/tests/check-ranking-entry.test.ts +0 -146
@@ -7,20 +7,20 @@ import {
7
7
  tierConfigKey,
8
8
  init_model_tier_keys,
9
9
  init_db3
10
- } from "./cli-rg7ntypm.js";
10
+ } from "./cli-rqqsfz30.js";
11
11
  import {
12
12
  ensureRbacSeedsSynced2,
13
13
  init_rbac_roles
14
- } from "./cli-5s5hx57y.js";
14
+ } from "./cli-nx462e4v.js";
15
15
  import {
16
16
  seedPricingFromModelsDev
17
- } from "./cli-tg9ksbn8.js";
17
+ } from "./cli-3p8fqcnh.js";
18
18
  import {
19
19
  MODEL_TIERS,
20
20
  DEFAULT_MODEL_TIER_MAP,
21
21
  ProviderNameSchema,
22
22
  init_types
23
- } from "./cli-a1esmmee.js";
23
+ } from "./cli-fpmsqq59.js";
24
24
 
25
25
  // src/be/boot-seeds.ts
26
26
  init_db3();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  scrubSecrets,
3
3
  init_secret_scrubber
4
- } from "./cli-4mkvwgzr.js";
4
+ } from "./cli-xf234ws8.js";
5
5
 
6
6
  // src/providers/devin-adapter.ts
7
7
  init_secret_scrubber();
@@ -9,12 +9,12 @@ import {
9
9
  acquireOAuthRefreshLock,
10
10
  releaseOAuthRefreshLock,
11
11
  init_oauth
12
- } from "./cli-rg7ntypm.js";
12
+ } from "./cli-rqqsfz30.js";
13
13
  import {
14
14
  scrubSecrets,
15
15
  registerVolatileSecret,
16
16
  init_secret_scrubber
17
- } from "./cli-4mkvwgzr.js";
17
+ } from "./cli-xf234ws8.js";
18
18
 
19
19
  // node_modules/oauth4webapi/build/index.js
20
20
  var USER_AGENT;
@@ -3,7 +3,7 @@ import {
3
3
  scrubObject,
4
4
  registerVolatileSecret,
5
5
  init_secret_scrubber
6
- } from "./cli-4mkvwgzr.js";
6
+ } from "./cli-xf234ws8.js";
7
7
 
8
8
  // src/x/composio.ts
9
9
  init_secret_scrubber();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_MODEL_TIER_MAP,
3
3
  init_types
4
- } from "./cli-a1esmmee.js";
4
+ } from "./cli-fpmsqq59.js";
5
5
 
6
6
  // src/utils/amp-models.ts
7
7
  init_types();
@@ -6,11 +6,11 @@ import {
6
6
  getResolvedConfig2,
7
7
  getAllUsers2,
8
8
  init_db3
9
- } from "./cli-rg7ntypm.js";
9
+ } from "./cli-rqqsfz30.js";
10
10
  import {
11
11
  scrubSecrets,
12
12
  init_secret_scrubber
13
- } from "./cli-4mkvwgzr.js";
13
+ } from "./cli-xf234ws8.js";
14
14
 
15
15
  // src/be/seed/agent-fs-provision.ts
16
16
  init_secret_scrubber();
@@ -5,22 +5,22 @@ import {
5
5
  completeApprovalCancellationNotificationClaim2,
6
6
  releaseApprovalCancellationNotificationClaim2,
7
7
  init_db3
8
- } from "./cli-rg7ntypm.js";
8
+ } from "./cli-rqqsfz30.js";
9
9
  import {
10
10
  getSlackApp2
11
- } from "./cli-4fhyq711.js";
11
+ } from "./cli-vy0fay6k.js";
12
12
  import {
13
13
  DEFAULT_MODEL,
14
14
  resolveCredential
15
- } from "./cli-bn26xbcs.js";
15
+ } from "./cli-8nyhf7za.js";
16
16
  import {
17
17
  TERMINAL_TASK_STATUSES,
18
18
  init_types
19
- } from "./cli-a1esmmee.js";
19
+ } from "./cli-fpmsqq59.js";
20
20
  import {
21
21
  selectCredential,
22
22
  init_credentials
23
- } from "./cli-yxqag76b.js";
23
+ } from "./cli-zw88zjba.js";
24
24
  import {
25
25
  resolveTemplate,
26
26
  init_resolver
@@ -56,13 +56,13 @@ import {
56
56
  import {
57
57
  scrubSecrets,
58
58
  init_secret_scrubber
59
- } from "./cli-4mkvwgzr.js";
59
+ } from "./cli-xf234ws8.js";
60
60
  import {
61
61
  providerKeyVars,
62
62
  providerBaseUrl,
63
63
  providerForModel,
64
64
  init_src2
65
- } from "./cli-x3en6ct3.js";
65
+ } from "./cli-nwyw3zhg.js";
66
66
 
67
67
  // src/workflows/executors/system-one-decision.ts
68
68
  init_zod();
@@ -454,7 +454,7 @@ class HumanInTheLoopExecutor extends BaseExecutor {
454
454
  }
455
455
  if (notification.channel === "slack") {
456
456
  try {
457
- const { getSlackApp } = await import("./app-mqap8t8m.js");
457
+ const { getSlackApp } = await import("./app-kreq1gwg.js");
458
458
  const slackApp = getSlackApp();
459
459
  if (!slackApp) {
460
460
  console.warn("[HITL] Slack not initialized — cannot send notification");
@@ -47,10 +47,10 @@ import {
47
47
  checkDependencies2,
48
48
  emitBuiltInIntegrationConnectedOnce2,
49
49
  init_db3
50
- } from "./cli-rg7ntypm.js";
50
+ } from "./cli-rqqsfz30.js";
51
51
  import {
52
52
  getChannelBlockReason2
53
- } from "./cli-xfe63zx3.js";
53
+ } from "./cli-mfe7f7b5.js";
54
54
  import {
55
55
  require_dist5,
56
56
  require_axios,
@@ -67,11 +67,11 @@ import {
67
67
  import {
68
68
  isTerminalTaskStatus,
69
69
  init_types
70
- } from "./cli-a1esmmee.js";
70
+ } from "./cli-fpmsqq59.js";
71
71
  import {
72
72
  taskAttachmentDisplayUrl,
73
73
  init_task_attachment_links
74
- } from "./cli-wyrr38xm.js";
74
+ } from "./cli-x5mq1fyq.js";
75
75
  import {
76
76
  getSlackConfiguration,
77
77
  init_config
@@ -102,7 +102,7 @@ import {
102
102
  scrubSecrets,
103
103
  scrubObject,
104
104
  init_secret_scrubber
105
- } from "./cli-4mkvwgzr.js";
105
+ } from "./cli-xf234ws8.js";
106
106
  import {
107
107
  __toESM,
108
108
  __commonJS,
@@ -6235,7 +6235,7 @@ async function initOtel(serviceRole = process.env.AGENT_ROLE || "api") {
6235
6235
  return;
6236
6236
  initialized = true;
6237
6237
  try {
6238
- const impl = await import("./otel-impl-hckw4wt1.js");
6238
+ const impl = await import("./otel-impl-tfa12080.js");
6239
6239
  await impl.boot(serviceRole, {
6240
6240
  exportConsoleLogs: serviceRole === "api" && isApiLogExportEnabled()
6241
6241
  });
@@ -10080,17 +10080,17 @@ async function initSlackApp2() {
10080
10080
  });
10081
10081
  initialized2 = true;
10082
10082
  app.use(slackInboundOutcomeMiddleware());
10083
- const { registerMessageHandler } = await import("./handlers-zbs90bny.js");
10084
- const { registerCommandHandler } = await import("./commands-psqhkttb.js");
10085
- const { registerActionHandlers } = await import("./actions-vget6r1k.js");
10086
- const { registerWorkObjectHandlers } = await import("./work-objects-jem2fre0.js");
10083
+ const { registerMessageHandler } = await import("./handlers-mqrym347.js");
10084
+ const { registerCommandHandler } = await import("./commands-7ems2p13.js");
10085
+ const { registerActionHandlers } = await import("./actions-jhtqdw69.js");
10086
+ const { registerWorkObjectHandlers } = await import("./work-objects-f722h263.js");
10087
10087
  registerMessageHandler(app);
10088
10088
  registerCommandHandler(app);
10089
10089
  registerActionHandlers(app);
10090
10090
  registerWorkObjectHandlers(app);
10091
- const { createAssistant } = await import("./assistant-h0gv97mv.js");
10091
+ const { createAssistant } = await import("./assistant-3k22sbsq.js");
10092
10092
  app.assistant(createAssistant());
10093
- const { isBlockExternalEnabled, scanExternalChannelsOnBoot } = await import("./external-channel-a5dsmxn4.js");
10093
+ const { isBlockExternalEnabled, scanExternalChannelsOnBoot } = await import("./external-channel-5b23fv8z.js");
10094
10094
  if (isBlockExternalEnabled()) {
10095
10095
  scanExternalChannelsOnBoot(app.client).catch((error) => {
10096
10096
  console.error("[Slack] External channel boot scan failed:", error);
@@ -10103,7 +10103,7 @@ async function startSlackApp2() {
10103
10103
  await initSlackApp2();
10104
10104
  }
10105
10105
  if (app) {
10106
- const { isSlackRenderV2Enabled } = await import("./render-v2-7nqgvk2q.js");
10106
+ const { isSlackRenderV2Enabled } = await import("./render-v2-emawjvc4.js");
10107
10107
  if (isSlackRenderV2Enabled())
10108
10108
  await ensureSlackRenderV2Activation2();
10109
10109
  await app.start();
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  scrubSecrets,
8
8
  init_secret_scrubber
9
- } from "./cli-4mkvwgzr.js";
9
+ } from "./cli-xf234ws8.js";
10
10
  import {
11
11
  __esm
12
12
  } from "./cli-242037k3.js";
@@ -8,11 +8,11 @@ import {
8
8
  resolveConfigValueOrThrow,
9
9
  resolveHeadersOrThrow,
10
10
  FileAuthStorageBackend
11
- } from "./cli-p1m2b6gc.js";
11
+ } from "./cli-d2mb5s8a.js";
12
12
  import {
13
13
  oauthSuccessHtml,
14
14
  oauthErrorHtml
15
- } from "./cli-bn26xbcs.js";
15
+ } from "./cli-8nyhf7za.js";
16
16
  import {
17
17
  __toESM
18
18
  } from "./cli-242037k3.js";
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  scrubSecrets,
26
26
  init_secret_scrubber
27
- } from "./cli-4mkvwgzr.js";
27
+ } from "./cli-xf234ws8.js";
28
28
  import {
29
29
  __esm
30
30
  } from "./cli-242037k3.js";
@@ -2,7 +2,7 @@ import {
2
2
  CONTEXT_FORMULA,
3
3
  getContextWindowSize,
4
4
  clampContextPercent
5
- } from "./cli-jhp7w1fy.js";
5
+ } from "./cli-a5ebc95n.js";
6
6
  import {
7
7
  swarmRuntimeInstanceId
8
8
  } from "./cli-7a91w22y.js";
@@ -23,10 +23,10 @@ import {
23
23
  autoIndexMemoryFile,
24
24
  fetchConcurrentContext,
25
25
  summarizeTranscript
26
- } from "./cli-dsgj3e7a.js";
26
+ } from "./cli-zfg9enh9.js";
27
27
  import {
28
28
  applyReasoningEffort
29
- } from "./cli-p22zdvnt.js";
29
+ } from "./cli-bn0rewsy.js";
30
30
  import {
31
31
  fetchInstalledMcpServers
32
32
  } from "./cli-bst1vp7e.js";
@@ -35,7 +35,7 @@ import {
35
35
  openAICompatibleKeyLabels,
36
36
  validateOpencodeCredentials,
37
37
  init_credentials
38
- } from "./cli-yxqag76b.js";
38
+ } from "./cli-zw88zjba.js";
39
39
  import {
40
40
  DEFAULT_OPENROUTER_BASE_URL,
41
41
  getOpenRouterBaseUrl,
@@ -50,7 +50,7 @@ import {
50
50
  scrubSecrets,
51
51
  registerVolatileSecret,
52
52
  init_secret_scrubber
53
- } from "./cli-4mkvwgzr.js";
53
+ } from "./cli-xf234ws8.js";
54
54
  import {
55
55
  openAICompatibleProviders,
56
56
  providerKeyVars,
@@ -61,7 +61,7 @@ import {
61
61
  openAICompatibleProvider,
62
62
  providerForKeyVar,
63
63
  init_src2
64
- } from "./cli-x3en6ct3.js";
64
+ } from "./cli-nwyw3zhg.js";
65
65
 
66
66
  // src/providers/opencode-adapter.ts
67
67
  init_src2();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  openAICompatibleKeyVars,
3
3
  init_src2
4
- } from "./cli-x3en6ct3.js";
4
+ } from "./cli-nwyw3zhg.js";
5
5
  import {
6
6
  __esm
7
7
  } from "./cli-242037k3.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ampBillsCacheWrites,
3
3
  resolveAmpModel
4
- } from "./cli-2rwet3r7.js";
4
+ } from "./cli-sv5gb0yb.js";
5
5
  import {
6
6
  CONTEXT_FORMULA,
7
7
  computeContextUsedUnified,
8
8
  clampContextPercent
9
- } from "./cli-jhp7w1fy.js";
9
+ } from "./cli-a5ebc95n.js";
10
10
  import {
11
11
  swarmRuntimeInstanceId
12
12
  } from "./cli-7a91w22y.js";
@@ -23,12 +23,12 @@ import {
23
23
  } from "./cli-jc1g9ndz.js";
24
24
  import {
25
25
  applyReasoningEffort
26
- } from "./cli-p22zdvnt.js";
26
+ } from "./cli-bn0rewsy.js";
27
27
  import {
28
28
  scrubSecrets,
29
29
  registerVolatileSecret,
30
30
  init_secret_scrubber
31
- } from "./cli-4mkvwgzr.js";
31
+ } from "./cli-xf234ws8.js";
32
32
 
33
33
  // src/providers/amp-adapter.ts
34
34
  import { existsSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
@@ -36,7 +36,7 @@ import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
36
36
  import { tmpdir } from "node:os";
37
37
  import { join } from "node:path";
38
38
  init_secret_scrubber();
39
- var AMP_PACKAGE = "@ampcode/cli@0.0.1792324855-g9c86a5";
39
+ var AMP_PACKAGE = "@ampcode/cli@0.0.1792368068-g91990d";
40
40
  var AMP_MCP_SERVER_NAME = "agent-swarm";
41
41
  var AMP_PLUGIN_MODE_KEY = "agent-swarm";
42
42
  var AMP_LIVE_TEST_TIMEOUT_MS = 5000;
@@ -9,16 +9,16 @@ import {
9
9
  init_active_sessions,
10
10
  getSteeringMessageById2,
11
11
  init_db3
12
- } from "./cli-rg7ntypm.js";
12
+ } from "./cli-rqqsfz30.js";
13
13
  import {
14
14
  getUserGrant2,
15
15
  init_rbac_roles
16
- } from "./cli-5s5hx57y.js";
16
+ } from "./cli-nx462e4v.js";
17
17
  import {
18
18
  findUserById,
19
19
  findUserByExternalId,
20
20
  init_users
21
- } from "./cli-8cxkw1f5.js";
21
+ } from "./cli-fz9kewbh.js";
22
22
  import {
23
23
  isRbacEnabled,
24
24
  init_rbac
@@ -42,7 +42,7 @@ import {
42
42
  import {
43
43
  scrubSecrets,
44
44
  init_secret_scrubber
45
- } from "./cli-4mkvwgzr.js";
45
+ } from "./cli-xf234ws8.js";
46
46
 
47
47
  // src/http/route-def.ts
48
48
  init_zod();
@@ -502,7 +502,7 @@ function route(def) {
502
502
  try {
503
503
  const rawBody = def.body ? await parseBody(req, def.maxBodyBytes) : undefined;
504
504
  if (def.session && "bodyTaskIds" in def.session) {
505
- const { bodySessionDenial } = await import("./session-access-fc3f9y12.js");
505
+ const { bodySessionDenial } = await import("./session-access-cm823e06.js");
506
506
  const denial = await bodySessionDenial(req, def.session.bodyTaskIds(rawBody));
507
507
  if (denial) {
508
508
  jsonError(res, denial, 403);
@@ -8,13 +8,14 @@ import {
8
8
  import {
9
9
  materializeClaudeMd,
10
10
  stopClaudeMd
11
- } from "./cli-c8fwpgqb.js";
11
+ } from "./cli-7225gwj7.js";
12
12
  import {
13
13
  summarizeSession
14
- } from "./cli-sppc0cmw.js";
14
+ } from "./cli-pnp2j5zg.js";
15
15
  import {
16
- guardGhPrBody
17
- } from "./cli-c5sbmw1v.js";
16
+ guardGhPrBody,
17
+ guardGhPrRoom
18
+ } from "./cli-d82btycs.js";
18
19
  import {
19
20
  checkToolLoop,
20
21
  clearToolHistory
@@ -26,11 +27,11 @@ import {
26
27
  warnProfileFileTooLarge,
27
28
  buildIndependentIdentityPayloads,
28
29
  init_profile_sync
29
- } from "./cli-wyrr38xm.js";
30
+ } from "./cli-x5mq1fyq.js";
30
31
  import {
31
32
  init_package,
32
33
  package_default
33
- } from "./cli-mz1ezzzh.js";
34
+ } from "./cli-ash6xxk7.js";
34
35
  import {
35
36
  MAX_PROFILE_FILE_LENGTH,
36
37
  getMcpBaseUrl,
@@ -43,7 +44,7 @@ import {
43
44
  import {
44
45
  scrubSecrets,
45
46
  init_secret_scrubber
46
- } from "./cli-4mkvwgzr.js";
47
+ } from "./cli-xf234ws8.js";
47
48
 
48
49
  // src/hooks/hook.ts
49
50
  init_package();
@@ -732,6 +733,12 @@ You do not have a pre-defined agent ID, you will receive one when you join the s
732
733
  process.exitCode = 2;
733
734
  return;
734
735
  }
736
+ const prRoomBlock = await guardGhPrRoom(msg.tool_input, msg.cwd ?? process.cwd());
737
+ if (prRoomBlock) {
738
+ console.error(prRoomBlock);
739
+ process.exitCode = 2;
740
+ return;
741
+ }
735
742
  }
736
743
  let loopWarning;
737
744
  if (agentInfo && !agentInfo.isLead && agentInfo.status === "busy") {
@@ -10,7 +10,7 @@ import {
10
10
  } from "./cli-0726awxw.js";
11
11
  import {
12
12
  summarizeSession
13
- } from "./cli-sppc0cmw.js";
13
+ } from "./cli-pnp2j5zg.js";
14
14
  import {
15
15
  resolveTemplateFromCode,
16
16
  resolveTemplateAsync,
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  scrubSecrets,
26
26
  init_secret_scrubber
27
- } from "./cli-4mkvwgzr.js";
27
+ } from "./cli-xf234ws8.js";
28
28
 
29
29
  // src/prompts/goal-reminder.ts
30
30
  init_session_templates();
@@ -14,7 +14,7 @@ import {
14
14
  providerForModel,
15
15
  providerForKeyVar,
16
16
  init_src2
17
- } from "./cli-x3en6ct3.js";
17
+ } from "./cli-nwyw3zhg.js";
18
18
  import {
19
19
  __esm
20
20
  } from "./cli-242037k3.js";
package/dist/cli.js CHANGED
@@ -22,7 +22,7 @@ import {
22
22
  import {
23
23
  scrubSecrets,
24
24
  init_secret_scrubber
25
- } from "./cli-4mkvwgzr.js";
25
+ } from "./cli-xf234ws8.js";
26
26
  import {
27
27
  __toESM,
28
28
  __commonJS
@@ -51,7 +51,7 @@ var import_react = __toESM(require_react(), 1);
51
51
  // package.json
52
52
  var package_default = {
53
53
  name: "@desplega.ai/agent-swarm",
54
- version: "2.4.0",
54
+ version: "2.4.1",
55
55
  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.",
56
56
  keywords: [
57
57
  "agent-swarm.dev",
@@ -251,7 +251,7 @@ var package_default = {
251
251
  dependencies: {
252
252
  "@agentclientprotocol/sdk": "1.9.0",
253
253
  "@ai-sdk/openai": "^3.0.41",
254
- "@anthropic-ai/claude-agent-sdk": "0.3.302",
254
+ "@anthropic-ai/claude-agent-sdk": "0.3.303",
255
255
  "@anthropic-ai/sdk": "^0.135.0",
256
256
  "@asteasolutions/zod-to-openapi": "^8.0.0",
257
257
  "@aws-sdk/client-bedrock": "3.1048.0",
@@ -812,7 +812,7 @@ function McpServer({ port, apiKey, dbPath }) {
812
812
  if (dbPath) {
813
813
  process.env.DATABASE_PATH = dbPath;
814
814
  }
815
- import("./http-xpmmq028.js").then(() => {
815
+ import("./http-k2ejbt05.js").then(() => {
816
816
  setStatus("running");
817
817
  }).catch((err) => {
818
818
  setStatus("error");
@@ -899,7 +899,7 @@ function WorkerRunner({
899
899
  const { exit } = use_app_default();
900
900
  import_react.useEffect(() => {
901
901
  installConsoleScrub();
902
- import("./worker-wr6xgfr2.js").then(({ runWorker }) => runWorker({
902
+ import("./worker-p7f336rq.js").then(({ runWorker }) => runWorker({
903
903
  prompt: prompt || undefined,
904
904
  yolo,
905
905
  systemPrompt: systemPrompt || undefined,
@@ -917,7 +917,7 @@ function LeadRunner({ prompt, yolo, systemPrompt, systemPromptFile, additionalAr
917
917
  const { exit } = use_app_default();
918
918
  import_react.useEffect(() => {
919
919
  installConsoleScrub();
920
- import("./lead-td8h2sfn.js").then(({ runLead }) => runLead({
920
+ import("./lead-jb6sf69z.js").then(({ runLead }) => runLead({
921
921
  prompt: prompt || undefined,
922
922
  yolo,
923
923
  systemPrompt: systemPrompt || undefined,
@@ -957,8 +957,8 @@ function LazyComponent({
957
957
  }
958
958
  return import_react.createElement(Component, props);
959
959
  }
960
- var loadOnboard = () => import("./onboard-aytqedmq.js").then(({ Onboard }) => Onboard);
961
- var loadConnect = () => import("./setup-n39szm6b.js").then(({ Setup }) => Setup);
960
+ var loadOnboard = () => import("./onboard-4n2kwa4v.js").then(({ Onboard }) => Onboard);
961
+ var loadConnect = () => import("./setup-tkp99w1e.js").then(({ Setup }) => Setup);
962
962
  function UnknownCommand({ command }) {
963
963
  const { exit } = use_app_default();
964
964
  import_react.useEffect(() => {
@@ -1088,19 +1088,19 @@ ${binName} docs \u2014 v${package_default.version}
1088
1088
  }
1089
1089
  process.exit(0);
1090
1090
  } else if (args.command === "hook") {
1091
- const { runHook } = await import("./hook-8femx1bg.js");
1091
+ const { runHook } = await import("./hook-pvmh9b6m.js");
1092
1092
  await runHook();
1093
1093
  } else if (args.command === "codex-hook") {
1094
- const { handleCodexHook } = await import("./codex-hook-qwzccd64.js");
1094
+ const { handleCodexHook } = await import("./codex-hook-x7nejyrr.js");
1095
1095
  await handleCodexHook();
1096
1096
  process.exit(process.exitCode ?? 0);
1097
1097
  } else if (args.command === "session-summary-stdin") {
1098
- const { runSessionSummaryFromStdin } = await import("./hook-xa677f8r.js");
1098
+ const { runSessionSummaryFromStdin } = await import("./hook-dx0pkvar.js");
1099
1099
  await runSessionSummaryFromStdin();
1100
1100
  process.exit(process.exitCode ?? 0);
1101
1101
  } else if (args.command === "x") {
1102
1102
  const xArgs = process.argv.slice(process.argv.indexOf("x") + 1);
1103
- const { runXCommand } = await import("./x-8ewt8gxn.js");
1103
+ const { runXCommand } = await import("./x-y45mthwn.js");
1104
1104
  await runXCommand(xArgs);
1105
1105
  } else if (args.command === "scripts") {
1106
1106
  const scriptsArgs = process.argv.slice(process.argv.indexOf("scripts") + 1);
@@ -1108,7 +1108,7 @@ ${binName} docs \u2014 v${package_default.version}
1108
1108
  printHelp("scripts");
1109
1109
  process.exit(scriptsArgs[0] === "reembed" || args.showHelp ? 0 : 1);
1110
1110
  }
1111
- const { runScriptsMaintenanceCommand } = await import("./maintenance-verwpe2c.js");
1111
+ const { runScriptsMaintenanceCommand } = await import("./maintenance-agakc519.js");
1112
1112
  await runScriptsMaintenanceCommand(scriptsArgs);
1113
1113
  console.log("Scripts re-embedded.");
1114
1114
  } else if (args.command === "rbac") {
@@ -1118,25 +1118,25 @@ ${binName} docs \u2014 v${package_default.version}
1118
1118
  printHelp("rbac");
1119
1119
  process.exit(args.showHelp ? 0 : 1);
1120
1120
  }
1121
- const { runRbacCliCommand } = await import("./rbac-roles-pd8c26m1.js");
1121
+ const { runRbacCliCommand } = await import("./rbac-roles-9fae5rnv.js");
1122
1122
  await runRbacCliCommand(rbacArgs);
1123
1123
  } else if (args.command === "codex-login") {
1124
- const { runCodexLogin } = await import("./codex-login-35p4sk85.js");
1124
+ const { runCodexLogin } = await import("./codex-login-m819c41r.js");
1125
1125
  const codexLoginArgs = process.argv.slice(process.argv.indexOf("codex-login") + 1);
1126
1126
  await runCodexLogin(codexLoginArgs);
1127
1127
  } else if (args.command === "codex-session-runner") {
1128
- const { runCodexSessionRunner } = await import("./codex-session-runner-0vzn09t8.js");
1128
+ const { runCodexSessionRunner } = await import("./codex-session-runner-8vd5t9t0.js");
1129
1129
  await runCodexSessionRunner();
1130
1130
  } else if (args.command === "claude-managed-setup") {
1131
- const { runClaudeManagedSetup } = await import("./claude-managed-setup-gkfgks4j.js");
1131
+ const { runClaudeManagedSetup } = await import("./claude-managed-setup-h00hsgtz.js");
1132
1132
  const setupArgs = process.argv.slice(process.argv.indexOf("claude-managed-setup") + 1);
1133
1133
  await runClaudeManagedSetup(setupArgs);
1134
1134
  } else if (args.command === "e2b") {
1135
- const { runE2BCommand } = await import("./e2b-pw1nvtmh.js");
1135
+ const { runE2BCommand } = await import("./e2b-thdcxtjd.js");
1136
1136
  const e2bArgs = process.argv.slice(process.argv.indexOf("e2b") + 1);
1137
1137
  await runE2BCommand(e2bArgs);
1138
1138
  } else if (args.command === "controller") {
1139
- const { runController } = await import("./controller-t20vz2k8.js");
1139
+ const { runController } = await import("./controller-m263fg43.js");
1140
1140
  await runController(process.argv.slice(process.argv.indexOf("controller") + 1));
1141
1141
  } else {
1142
1142
  render_default(/* @__PURE__ */ jsx_dev_runtime.jsxDEV(App, {
@@ -2,22 +2,22 @@ import {
2
2
  checkCodexCredentials2,
3
3
  createInProcessCodexSession2,
4
4
  CodexAdapter2
5
- } from "./cli-bfc3k1x5.js";
5
+ } from "./cli-p0rakbrk.js";
6
6
  import"./cli-4zsenjhy.js";
7
7
  import"./cli-kr5tjjtz.js";
8
8
  import"./cli-vbhgkw9h.js";
9
9
  import"./cli-4bd1rck6.js";
10
10
  import"./cli-jc1g9ndz.js";
11
- import"./cli-jhp7w1fy.js";
12
- import"./cli-sppc0cmw.js";
11
+ import"./cli-a5ebc95n.js";
12
+ import"./cli-pnp2j5zg.js";
13
13
  import"./cli-0726awxw.js";
14
14
  import"./cli-gx4rm0qx.js";
15
- import"./cli-p22zdvnt.js";
15
+ import"./cli-bn0rewsy.js";
16
16
  import"./cli-3h26v7yj.js";
17
17
  import"./cli-7a91w22y.js";
18
18
  import"./cli-3ggwdtb0.js";
19
- import"./cli-bn26xbcs.js";
20
- import"./cli-vjfpshn3.js";
19
+ import"./cli-8nyhf7za.js";
20
+ import"./cli-ejs3m1sx.js";
21
21
  import"./cli-13p25grh.js";
22
22
  import"./cli-0adyhvq2.js";
23
23
  import"./cli-445c1vp7.js";
@@ -3,8 +3,9 @@ import {
3
3
  renderSteeringDelivery
4
4
  } from "./cli-0xk505e8.js";
5
5
  import {
6
- guardGhPrBody
7
- } from "./cli-c5sbmw1v.js";
6
+ guardGhPrBody,
7
+ guardGhPrRoom
8
+ } from "./cli-d82btycs.js";
8
9
  import {
9
10
  isSteeringEnabled2,
10
11
  init_steering_enabled
@@ -97,10 +98,12 @@ ${additionalContext}`
97
98
  hookSpecificOutput: { hookEventName: event, additionalContext }
98
99
  };
99
100
  }
100
- async function codexPreToolUseBlock(msg, deps) {
101
+ async function codexPreToolUseBlock(msg, deps, roomDeps) {
101
102
  if (msg.hook_event_name !== "PreToolUse")
102
103
  return null;
103
- return guardGhPrBody(msg.tool_input, msg.cwd ?? process.cwd(), deps);
104
+ const cwd = msg.cwd ?? process.cwd();
105
+ const block = await guardGhPrBody(msg.tool_input, cwd, deps);
106
+ return block ?? await guardGhPrRoom(msg.tool_input, cwd, roomDeps);
104
107
  }
105
108
  async function handleCodexHook() {
106
109
  let msg;
@@ -4,7 +4,7 @@ import {
4
4
  MAX_CODEX_OAUTH_SLOT,
5
5
  loadAllCodexOAuthSlots,
6
6
  storeCodexOAuth
7
- } from "./cli-vjfpshn3.js";
7
+ } from "./cli-ejs3m1sx.js";
8
8
  import {
9
9
  getApiKey,
10
10
  init_api_key