@desplega.ai/agent-swarm 1.151.0 → 1.152.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.
- package/README.md +3 -1
- package/dist/{acp-adapter-ex8hzjfc.js → acp-adapter-4s7q25ft.js} +1 -1
- package/dist/{actions-2bgpyhww.js → actions-cs6rhmvc.js} +13 -13
- package/dist/{app-1706zhr1.js → app-j54aq0dj.js} +3 -3
- package/dist/{assistant-bavke5p7.js → assistant-w1pgn7vf.js} +14 -14
- package/dist/{boot-reembed-3cmrrmpa.js → boot-reembed-42vgkrrj.js} +4 -4
- package/dist/{boot-reembed-nafcmmmc.js → boot-reembed-smy30z32.js} +3 -3
- package/dist/{boot-scrub-logs-cd6a2sq0.js → boot-scrub-logs-b6s72fsw.js} +2 -2
- package/dist/{claude-adapter-wfp2gzvz.js → claude-adapter-fh7rmcj9.js} +3 -3
- package/dist/{claude-sdk-session-bht9jjak.js → claude-sdk-session-xhynatn9.js} +3 -3
- package/dist/{cli-f1wky6zp.js → cli-3g61md6v.js} +1 -1
- package/dist/{cli-a1z3h107.js → cli-3pft2z6r.js} +4 -4
- package/dist/{cli-5tpgq60f.js → cli-72tgtzr1.js} +152 -23
- package/dist/{cli-0qb1z6s2.js → cli-7bwaerjt.js} +1 -1
- package/dist/{cli-czjtgfys.js → cli-b4dyetqt.js} +2 -2
- package/dist/{cli-s14agm5s.js → cli-bdt7w021.js} +12 -3
- package/dist/{cli-sjaae6ff.js → cli-dsyg66vt.js} +3 -3
- package/dist/{cli-2tbvf1z1.js → cli-ftdjz1mk.js} +8 -8
- package/dist/{cli-zkxymas5.js → cli-gfez0qmk.js} +1 -1
- package/dist/{cli-q88st9aj.js → cli-gxf2ebyz.js} +2 -2
- package/dist/{cli-ppm4975n.js → cli-jtvs5m8q.js} +1 -1
- package/dist/{cli-7tgcstn2.js → cli-jytf5mw9.js} +2 -2
- package/dist/{cli-g69fdc9g.js → cli-kf8qp2vf.js} +2 -2
- package/dist/{cli-5jd2z7av.js → cli-ks8a1cgq.js} +6 -2
- package/dist/{cli-gjyvhmmh.js → cli-ng4q6a9t.js} +5 -5
- package/dist/{cli-3v9xhjcn.js → cli-sakxd2rg.js} +2 -2
- package/dist/{cli-frcta2w4.js → cli-sqmh7jj1.js} +1 -1
- package/dist/{cli-vwm416m6.js → cli-v9sk4dzw.js} +1 -1
- package/dist/{cli-j9xczhaq.js → cli-vbk025fm.js} +1 -1
- package/dist/{cli-r2q6pevn.js → cli-wfve107r.js} +43 -21
- package/dist/{cli-9004vfdf.js → cli-y8tayczk.js} +2 -2
- package/dist/{cli-gbfwcd3k.js → cli-zfzznn7c.js} +7 -6
- package/dist/cli.js +11 -11
- package/dist/{codex-adapter-jjjk8w4m.js → codex-adapter-k6yq95sn.js} +2 -2
- package/dist/{codex-session-runner-nd6ayxkx.js → codex-session-runner-3rp84pk8.js} +2 -2
- package/dist/{commands-9v4psyq1.js → commands-pbr5jzy5.js} +2 -2
- package/dist/{db-wnt58tpe.js → db-z0xaa59a.js} +2 -2
- package/dist/{dispatcher-05jh1aqk.js → dispatcher-pwpgsj0x.js} +12 -12
- package/dist/{handlers-tw90pkh5.js → handlers-5mzk4mbg.js} +15 -15
- package/dist/{hook-sxe3r349.js → hook-8bz33zee.js} +1 -1
- package/dist/{hook-123e2scb.js → hook-kbh84zb1.js} +2 -2
- package/dist/{http-ecsar8ez.js → http-pppxg5vr.js} +100 -36
- package/dist/{index-hw26vj40.js → index-68bd9b5f.js} +12 -12
- package/dist/{index-16js521z.js → index-k1hq1qt6.js} +8 -8
- package/dist/{index-zj518gf9.js → index-mjpxsr6k.js} +13 -13
- package/dist/{index-ymn7em0p.js → index-y0te09pn.js} +3 -3
- package/dist/{index-nnrbpcjp.js → index-z0zwjtkn.js} +12 -12
- package/dist/{keepalive-asqtcm4y.js → keepalive-xvmwnh1d.js} +4 -4
- package/dist/{lead-xbfr7fvt.js → lead-pf8nvxt8.js} +16 -16
- package/dist/{maintenance-qma55qvw.js → maintenance-jk4q0wgg.js} +4 -4
- package/dist/{oauth-refresh-sweep-3s04c6qw.js → oauth-refresh-sweep-6207x9sj.js} +3 -3
- package/dist/{onboard-drskd386.js → onboard-b0csgm0q.js} +2 -2
- package/dist/{otel-impl-943c96er.js → otel-impl-b6rfehth.js} +1 -1
- package/dist/{pricing-refresh-mx51az05.js → pricing-refresh-4e201wtd.js} +4 -4
- package/dist/{rbac-roles-wcmrg6sv.js → rbac-roles-mkc5n5qa.js} +4 -4
- package/dist/{rbac-roles-78baecqd.js → rbac-roles-zp6e4geh.js} +3 -3
- package/dist/{render-v2-8zjntgf5.js → render-v2-4fazz9tf.js} +3 -3
- package/dist/{seed-pricing-jqjs6cws.js → seed-pricing-thxpn9vn.js} +3 -3
- package/dist/{setup-4pks0vfk.js → setup-wb0z8cat.js} +2 -2
- package/dist/{work-objects-wangt792.js → work-objects-h3498kwe.js} +18 -17
- package/dist/{worker-p2mr422x.js → worker-2m2tzxp3.js} +16 -16
- package/openapi.json +5 -5
- package/package.json +1 -1
- package/src/agentmail/inbound-archive.ts +71 -0
- package/src/agentmail/types.ts +2 -0
- package/src/be/db.ts +1 -1
- package/src/be/scripts/typecheck.ts +4 -0
- package/src/be/swarm-config-guard.ts +7 -1
- package/src/extensions/lifecycle.ts +26 -4
- package/src/http/extensions.ts +8 -3
- package/src/http/webhooks.ts +13 -5
- package/src/rbac/legacy-policy.ts +13 -1
- package/src/scripts-runtime/sdk-allowlist.ts +4 -0
- package/src/scripts-runtime/types/stdlib.d.ts +4 -0
- package/src/scripts-runtime/types/swarm-sdk.d.ts +4 -0
- package/src/server.ts +12 -0
- package/src/slack/render-v2.ts +10 -4
- package/src/slack/responses.ts +7 -4
- package/src/slack/task-output.ts +21 -0
- package/src/slack/watcher.ts +3 -2
- package/src/slack/work-objects.ts +2 -1
- package/src/tests/agentmail-inbound-archive.test.ts +418 -0
- package/src/tests/extensions-example-mcp-install.test.ts +2 -2
- package/src/tests/extensions-http.test.ts +84 -3
- package/src/tests/extensions-lead-equivalence.test.ts +21 -0
- package/src/tests/extensions-mcp-tools.test.ts +111 -3
- package/src/tests/fixtures/store-progress-malformed-output.json +4 -0
- package/src/tests/rbac-admission-e2e.test.ts +35 -4
- package/src/tests/rbac-e2e-helpers.ts +18 -0
- package/src/tests/rbac-engine.test.ts +2 -2
- package/src/tests/rbac-mcp-admission-e2e.test.ts +22 -4
- package/src/tests/reload-config.test.ts +17 -0
- package/src/tests/scripts-only-gating.test.ts +4 -0
- package/src/tests/slack-render-v2.test.ts +24 -2
- package/src/tests/slack-task-output.test.ts +36 -0
- package/src/tests/store-progress-attachments-handler.test.ts +100 -1
- package/src/tests/swarm-config-reserved-keys.test.ts +6 -1
- package/src/tests/tool-annotations.test.ts +1 -1
- package/src/tools/extension-activate-version.ts +38 -0
- package/src/tools/extension-common.ts +2 -1
- package/src/tools/extension-delete.ts +29 -0
- package/src/tools/extension-disable.ts +36 -0
- package/src/tools/extension-enable.ts +36 -0
- package/src/tools/extension-install.ts +2 -2
- package/src/tools/store-progress.ts +30 -0
- package/src/tools/tool-config.ts +5 -1
- package/templates/skills/agent-browser/SKILL.md +84 -0
- package/templates/skills/agent-browser/content.md +21 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runAgent
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-ftdjz1mk.js";
|
|
4
4
|
import"./cli-pgj4a5fb.js";
|
|
5
5
|
import"./cli-kj76p1ez.js";
|
|
6
6
|
import"./cli-9b13ggd1.js";
|
|
7
7
|
import"./cli-d3p82erb.js";
|
|
8
|
-
import"./cli-
|
|
9
|
-
import"./cli-
|
|
8
|
+
import"./cli-sakxd2rg.js";
|
|
9
|
+
import"./cli-sqmh7jj1.js";
|
|
10
10
|
import"./cli-wbyk465z.js";
|
|
11
11
|
import"./cli-tng3131n.js";
|
|
12
12
|
import"./cli-5bfdm1ah.js";
|
|
13
|
-
import"./cli-
|
|
13
|
+
import"./cli-v9sk4dzw.js";
|
|
14
14
|
import"./cli-hsxj0yar.js";
|
|
15
15
|
import"./cli-r94z9p1z.js";
|
|
16
16
|
import"./cli-b5b30yzk.js";
|
|
@@ -25,34 +25,34 @@ import"./cli-eree7rnv.js";
|
|
|
25
25
|
import"./cli-4yc5d8fk.js";
|
|
26
26
|
import {
|
|
27
27
|
getEnabledCapabilities
|
|
28
|
-
} from "./cli-
|
|
28
|
+
} from "./cli-72tgtzr1.js";
|
|
29
29
|
import"./cli-0z2v4nhw.js";
|
|
30
30
|
import"./cli-4wppfkcm.js";
|
|
31
31
|
import"./cli-e7d20cty.js";
|
|
32
32
|
import"./cli-re8z5p8p.js";
|
|
33
33
|
import"./cli-3dpj7atn.js";
|
|
34
|
-
import"./cli-
|
|
35
|
-
import"./cli-
|
|
36
|
-
import"./cli-
|
|
37
|
-
import"./cli-
|
|
34
|
+
import"./cli-kf8qp2vf.js";
|
|
35
|
+
import"./cli-jytf5mw9.js";
|
|
36
|
+
import"./cli-zfzznn7c.js";
|
|
37
|
+
import"./cli-dsyg66vt.js";
|
|
38
38
|
import"./cli-epan13p1.js";
|
|
39
39
|
import"./cli-y89t4nca.js";
|
|
40
40
|
import"./cli-f14fvzag.js";
|
|
41
41
|
import"./cli-fad8m16k.js";
|
|
42
|
-
import"./cli-
|
|
43
|
-
import"./cli-
|
|
42
|
+
import"./cli-vbk025fm.js";
|
|
43
|
+
import"./cli-7bwaerjt.js";
|
|
44
44
|
import"./cli-bsakbbkm.js";
|
|
45
|
-
import"./cli-
|
|
45
|
+
import"./cli-gxf2ebyz.js";
|
|
46
46
|
import"./cli-51tf7ac3.js";
|
|
47
|
-
import"./cli-
|
|
47
|
+
import"./cli-wfve107r.js";
|
|
48
48
|
import"./cli-q51yprfq.js";
|
|
49
49
|
import"./cli-yatxqynm.js";
|
|
50
|
-
import"./cli-
|
|
50
|
+
import"./cli-jtvs5m8q.js";
|
|
51
51
|
import"./cli-fm4ytsdk.js";
|
|
52
52
|
import"./cli-aehm1rbq.js";
|
|
53
53
|
import"./cli-2658f6at.js";
|
|
54
54
|
import"./cli-jsp14b6c.js";
|
|
55
|
-
import"./cli-
|
|
55
|
+
import"./cli-bdt7w021.js";
|
|
56
56
|
import"./cli-ht5rs63n.js";
|
|
57
57
|
import"./cli-z61ykvam.js";
|
|
58
58
|
import"./cli-dv6cdjs2.js";
|
|
@@ -60,7 +60,7 @@ import"./cli-c2mk1kgf.js";
|
|
|
60
60
|
import"./cli-ej6gbxfb.js";
|
|
61
61
|
import"./cli-sd0mxa3c.js";
|
|
62
62
|
import"./cli-w5e1d1vv.js";
|
|
63
|
-
import"./cli-
|
|
63
|
+
import"./cli-gfez0qmk.js";
|
|
64
64
|
import"./cli-r2ap2czm.js";
|
|
65
65
|
import"./cli-pzxba7gw.js";
|
|
66
66
|
import"./cli-f7kvq46p.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
reembedAllScripts
|
|
3
|
-
} from "./cli-
|
|
4
|
-
import"./cli-
|
|
3
|
+
} from "./cli-gxf2ebyz.js";
|
|
4
|
+
import"./cli-jtvs5m8q.js";
|
|
5
5
|
import"./cli-fm4ytsdk.js";
|
|
6
6
|
import"./cli-aehm1rbq.js";
|
|
7
7
|
import"./cli-2658f6at.js";
|
|
8
|
-
import"./cli-
|
|
8
|
+
import"./cli-bdt7w021.js";
|
|
9
9
|
import"./cli-ht5rs63n.js";
|
|
10
10
|
import"./cli-z61ykvam.js";
|
|
11
11
|
import"./cli-dv6cdjs2.js";
|
|
@@ -13,7 +13,7 @@ import"./cli-c2mk1kgf.js";
|
|
|
13
13
|
import"./cli-ej6gbxfb.js";
|
|
14
14
|
import"./cli-sd0mxa3c.js";
|
|
15
15
|
import"./cli-w5e1d1vv.js";
|
|
16
|
-
import"./cli-
|
|
16
|
+
import"./cli-gfez0qmk.js";
|
|
17
17
|
import"./cli-r2ap2czm.js";
|
|
18
18
|
import"./cli-zf8jjwex.js";
|
|
19
19
|
import"./cli-bc05qbss.js";
|
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
forceRefreshAuthorizationOrThrow,
|
|
3
3
|
getAuthorizationById,
|
|
4
4
|
listAuthorizationSweepRows
|
|
5
|
-
} from "./cli-
|
|
6
|
-
import"./cli-
|
|
5
|
+
} from "./cli-vbk025fm.js";
|
|
6
|
+
import"./cli-bdt7w021.js";
|
|
7
7
|
import"./cli-ht5rs63n.js";
|
|
8
8
|
import"./cli-z61ykvam.js";
|
|
9
9
|
import"./cli-dv6cdjs2.js";
|
|
@@ -11,7 +11,7 @@ import"./cli-c2mk1kgf.js";
|
|
|
11
11
|
import"./cli-ej6gbxfb.js";
|
|
12
12
|
import"./cli-sd0mxa3c.js";
|
|
13
13
|
import"./cli-w5e1d1vv.js";
|
|
14
|
-
import"./cli-
|
|
14
|
+
import"./cli-gfez0qmk.js";
|
|
15
15
|
import {
|
|
16
16
|
init_secret_scrubber,
|
|
17
17
|
scrubSecrets
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
createDefaultMcpJson,
|
|
4
4
|
createDefaultSettingsLocal,
|
|
5
5
|
createHooksConfig
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-3g61md6v.js";
|
|
7
7
|
import {
|
|
8
8
|
require_jsx_dev_runtime
|
|
9
9
|
} from "./cli-s2qjdd6z.js";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
import {
|
|
14
14
|
init_package,
|
|
15
15
|
package_default
|
|
16
|
-
} from "./cli-
|
|
16
|
+
} from "./cli-gfez0qmk.js";
|
|
17
17
|
import {
|
|
18
18
|
Box_default,
|
|
19
19
|
Select,
|
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
PRICING_REFRESH_INTERVAL_MS,
|
|
3
3
|
refreshPricingFromModelsDev,
|
|
4
4
|
startPricingRefreshLoop
|
|
5
|
-
} from "./cli-
|
|
6
|
-
import"./cli-
|
|
7
|
-
import"./cli-
|
|
5
|
+
} from "./cli-kf8qp2vf.js";
|
|
6
|
+
import"./cli-7bwaerjt.js";
|
|
7
|
+
import"./cli-bdt7w021.js";
|
|
8
8
|
import"./cli-ht5rs63n.js";
|
|
9
9
|
import"./cli-z61ykvam.js";
|
|
10
10
|
import"./cli-dv6cdjs2.js";
|
|
@@ -12,7 +12,7 @@ import"./cli-c2mk1kgf.js";
|
|
|
12
12
|
import"./cli-ej6gbxfb.js";
|
|
13
13
|
import"./cli-sd0mxa3c.js";
|
|
14
14
|
import"./cli-w5e1d1vv.js";
|
|
15
|
-
import"./cli-
|
|
15
|
+
import"./cli-gfez0qmk.js";
|
|
16
16
|
import"./cli-r2ap2czm.js";
|
|
17
17
|
import"./cli-zf8jjwex.js";
|
|
18
18
|
import"./cli-bc05qbss.js";
|
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
getUserGrant,
|
|
8
8
|
listUserRoles,
|
|
9
9
|
runRbacCliCommand
|
|
10
|
-
} from "./cli-
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
10
|
+
} from "./cli-jytf5mw9.js";
|
|
11
|
+
import"./cli-zfzznn7c.js";
|
|
12
|
+
import"./cli-bdt7w021.js";
|
|
13
13
|
import"./cli-ht5rs63n.js";
|
|
14
14
|
import"./cli-z61ykvam.js";
|
|
15
15
|
import"./cli-dv6cdjs2.js";
|
|
@@ -17,7 +17,7 @@ import"./cli-c2mk1kgf.js";
|
|
|
17
17
|
import"./cli-ej6gbxfb.js";
|
|
18
18
|
import"./cli-sd0mxa3c.js";
|
|
19
19
|
import"./cli-w5e1d1vv.js";
|
|
20
|
-
import"./cli-
|
|
20
|
+
import"./cli-gfez0qmk.js";
|
|
21
21
|
import"./cli-r2ap2czm.js";
|
|
22
22
|
import"./cli-zf8jjwex.js";
|
|
23
23
|
import"./cli-bc05qbss.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PermissionVerbSchema
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-zfzznn7c.js";
|
|
4
4
|
import {
|
|
5
5
|
getDb,
|
|
6
6
|
getDbClient,
|
|
7
7
|
init_db
|
|
8
|
-
} from "./cli-
|
|
8
|
+
} from "./cli-bdt7w021.js";
|
|
9
9
|
import"./cli-ht5rs63n.js";
|
|
10
10
|
import"./cli-z61ykvam.js";
|
|
11
11
|
import"./cli-dv6cdjs2.js";
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
} from "./cli-ej6gbxfb.js";
|
|
17
17
|
import"./cli-sd0mxa3c.js";
|
|
18
18
|
import"./cli-w5e1d1vv.js";
|
|
19
|
-
import"./cli-
|
|
19
|
+
import"./cli-gfez0qmk.js";
|
|
20
20
|
import"./cli-r2ap2czm.js";
|
|
21
21
|
import"./cli-zf8jjwex.js";
|
|
22
22
|
import"./cli-bc05qbss.js";
|
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
processSlackRenderV2,
|
|
10
10
|
renderThreadTree,
|
|
11
11
|
streamOutcomeCard
|
|
12
|
-
} from "./cli-
|
|
12
|
+
} from "./cli-wfve107r.js";
|
|
13
13
|
import"./cli-q51yprfq.js";
|
|
14
14
|
import"./cli-yatxqynm.js";
|
|
15
15
|
import"./cli-2658f6at.js";
|
|
16
|
-
import"./cli-
|
|
16
|
+
import"./cli-bdt7w021.js";
|
|
17
17
|
import"./cli-ht5rs63n.js";
|
|
18
18
|
import"./cli-z61ykvam.js";
|
|
19
19
|
import"./cli-dv6cdjs2.js";
|
|
@@ -21,7 +21,7 @@ import"./cli-c2mk1kgf.js";
|
|
|
21
21
|
import"./cli-ej6gbxfb.js";
|
|
22
22
|
import"./cli-sd0mxa3c.js";
|
|
23
23
|
import"./cli-w5e1d1vv.js";
|
|
24
|
-
import"./cli-
|
|
24
|
+
import"./cli-gfez0qmk.js";
|
|
25
25
|
import"./cli-r2ap2czm.js";
|
|
26
26
|
import"./cli-pzxba7gw.js";
|
|
27
27
|
import"./cli-zf8jjwex.js";
|
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
buildModelsDevSeedRows,
|
|
3
3
|
buildPricingSeedRows,
|
|
4
4
|
seedPricingFromModelsDev
|
|
5
|
-
} from "./cli-
|
|
6
|
-
import"./cli-
|
|
5
|
+
} from "./cli-7bwaerjt.js";
|
|
6
|
+
import"./cli-bdt7w021.js";
|
|
7
7
|
import"./cli-ht5rs63n.js";
|
|
8
8
|
import"./cli-z61ykvam.js";
|
|
9
9
|
import"./cli-dv6cdjs2.js";
|
|
@@ -11,7 +11,7 @@ import"./cli-c2mk1kgf.js";
|
|
|
11
11
|
import"./cli-ej6gbxfb.js";
|
|
12
12
|
import"./cli-sd0mxa3c.js";
|
|
13
13
|
import"./cli-w5e1d1vv.js";
|
|
14
|
-
import"./cli-
|
|
14
|
+
import"./cli-gfez0qmk.js";
|
|
15
15
|
import"./cli-r2ap2czm.js";
|
|
16
16
|
import"./cli-zf8jjwex.js";
|
|
17
17
|
import"./cli-bc05qbss.js";
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
createDefaultMcpJson,
|
|
5
5
|
createDefaultSettingsLocal,
|
|
6
6
|
createHooksConfig
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-3g61md6v.js";
|
|
8
8
|
import {
|
|
9
9
|
require_jsx_dev_runtime
|
|
10
10
|
} from "./cli-s2qjdd6z.js";
|
|
11
11
|
import {
|
|
12
12
|
getApiKey
|
|
13
13
|
} from "./cli-f14fvzag.js";
|
|
14
|
-
import"./cli-
|
|
14
|
+
import"./cli-gfez0qmk.js";
|
|
15
15
|
import {
|
|
16
16
|
Box_default,
|
|
17
17
|
Spinner,
|
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isUserAllowed
|
|
3
|
-
} from "./cli-
|
|
4
|
-
import"./cli-
|
|
5
|
-
import"./cli-
|
|
6
|
-
import"./cli-
|
|
3
|
+
} from "./cli-ng4q6a9t.js";
|
|
4
|
+
import"./cli-3pft2z6r.js";
|
|
5
|
+
import"./cli-b4dyetqt.js";
|
|
6
|
+
import"./cli-72tgtzr1.js";
|
|
7
7
|
import"./cli-0z2v4nhw.js";
|
|
8
8
|
import"./cli-4wppfkcm.js";
|
|
9
9
|
import"./cli-e7d20cty.js";
|
|
10
10
|
import"./cli-re8z5p8p.js";
|
|
11
11
|
import"./cli-3dpj7atn.js";
|
|
12
|
-
import"./cli-
|
|
13
|
-
import"./cli-
|
|
14
|
-
import"./cli-
|
|
15
|
-
import"./cli-
|
|
12
|
+
import"./cli-kf8qp2vf.js";
|
|
13
|
+
import"./cli-jytf5mw9.js";
|
|
14
|
+
import"./cli-zfzznn7c.js";
|
|
15
|
+
import"./cli-dsyg66vt.js";
|
|
16
16
|
import"./cli-epan13p1.js";
|
|
17
17
|
import"./cli-y89t4nca.js";
|
|
18
18
|
import"./cli-f14fvzag.js";
|
|
19
19
|
import"./cli-fad8m16k.js";
|
|
20
|
-
import"./cli-
|
|
21
|
-
import"./cli-
|
|
20
|
+
import"./cli-vbk025fm.js";
|
|
21
|
+
import"./cli-7bwaerjt.js";
|
|
22
22
|
import"./cli-bsakbbkm.js";
|
|
23
|
-
import"./cli-
|
|
23
|
+
import"./cli-gxf2ebyz.js";
|
|
24
24
|
import"./cli-51tf7ac3.js";
|
|
25
25
|
import {
|
|
26
|
-
getTaskUrl
|
|
27
|
-
|
|
26
|
+
getTaskUrl,
|
|
27
|
+
slackTaskOutput
|
|
28
|
+
} from "./cli-wfve107r.js";
|
|
28
29
|
import"./cli-q51yprfq.js";
|
|
29
30
|
import"./cli-yatxqynm.js";
|
|
30
|
-
import"./cli-
|
|
31
|
+
import"./cli-jtvs5m8q.js";
|
|
31
32
|
import"./cli-fm4ytsdk.js";
|
|
32
33
|
import"./cli-aehm1rbq.js";
|
|
33
34
|
import"./cli-2658f6at.js";
|
|
@@ -36,7 +37,7 @@ import {
|
|
|
36
37
|
getAgentById,
|
|
37
38
|
getTaskById,
|
|
38
39
|
init_db
|
|
39
|
-
} from "./cli-
|
|
40
|
+
} from "./cli-bdt7w021.js";
|
|
40
41
|
import"./cli-ht5rs63n.js";
|
|
41
42
|
import"./cli-z61ykvam.js";
|
|
42
43
|
import"./cli-dv6cdjs2.js";
|
|
@@ -47,7 +48,7 @@ import {
|
|
|
47
48
|
} from "./cli-ej6gbxfb.js";
|
|
48
49
|
import"./cli-sd0mxa3c.js";
|
|
49
50
|
import"./cli-w5e1d1vv.js";
|
|
50
|
-
import"./cli-
|
|
51
|
+
import"./cli-gfez0qmk.js";
|
|
51
52
|
import"./cli-r2ap2czm.js";
|
|
52
53
|
import"./cli-pzxba7gw.js";
|
|
53
54
|
import"./cli-f7kvq46p.js";
|
|
@@ -86,7 +87,7 @@ async function getDetails(event, client) {
|
|
|
86
87
|
if (task.slackChannelId !== event.channel)
|
|
87
88
|
return { error: { status: "restricted" } };
|
|
88
89
|
const agent = task.agentId ? await getAgentById(task.agentId) : null;
|
|
89
|
-
const result = task
|
|
90
|
+
const result = slackTaskOutput(task) || task.failureReason || task.progress;
|
|
90
91
|
return {
|
|
91
92
|
metadata: {
|
|
92
93
|
entity_type: "slack#/entities/task",
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runAgent
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-ftdjz1mk.js";
|
|
4
4
|
import"./cli-pgj4a5fb.js";
|
|
5
5
|
import"./cli-kj76p1ez.js";
|
|
6
6
|
import"./cli-9b13ggd1.js";
|
|
7
7
|
import"./cli-d3p82erb.js";
|
|
8
|
-
import"./cli-
|
|
9
|
-
import"./cli-
|
|
8
|
+
import"./cli-sakxd2rg.js";
|
|
9
|
+
import"./cli-sqmh7jj1.js";
|
|
10
10
|
import"./cli-wbyk465z.js";
|
|
11
11
|
import"./cli-tng3131n.js";
|
|
12
12
|
import"./cli-5bfdm1ah.js";
|
|
13
|
-
import"./cli-
|
|
13
|
+
import"./cli-v9sk4dzw.js";
|
|
14
14
|
import"./cli-hsxj0yar.js";
|
|
15
15
|
import"./cli-r94z9p1z.js";
|
|
16
16
|
import"./cli-b5b30yzk.js";
|
|
@@ -25,34 +25,34 @@ import"./cli-eree7rnv.js";
|
|
|
25
25
|
import"./cli-4yc5d8fk.js";
|
|
26
26
|
import {
|
|
27
27
|
getEnabledCapabilities
|
|
28
|
-
} from "./cli-
|
|
28
|
+
} from "./cli-72tgtzr1.js";
|
|
29
29
|
import"./cli-0z2v4nhw.js";
|
|
30
30
|
import"./cli-4wppfkcm.js";
|
|
31
31
|
import"./cli-e7d20cty.js";
|
|
32
32
|
import"./cli-re8z5p8p.js";
|
|
33
33
|
import"./cli-3dpj7atn.js";
|
|
34
|
-
import"./cli-
|
|
35
|
-
import"./cli-
|
|
36
|
-
import"./cli-
|
|
37
|
-
import"./cli-
|
|
34
|
+
import"./cli-kf8qp2vf.js";
|
|
35
|
+
import"./cli-jytf5mw9.js";
|
|
36
|
+
import"./cli-zfzznn7c.js";
|
|
37
|
+
import"./cli-dsyg66vt.js";
|
|
38
38
|
import"./cli-epan13p1.js";
|
|
39
39
|
import"./cli-y89t4nca.js";
|
|
40
40
|
import"./cli-f14fvzag.js";
|
|
41
41
|
import"./cli-fad8m16k.js";
|
|
42
|
-
import"./cli-
|
|
43
|
-
import"./cli-
|
|
42
|
+
import"./cli-vbk025fm.js";
|
|
43
|
+
import"./cli-7bwaerjt.js";
|
|
44
44
|
import"./cli-bsakbbkm.js";
|
|
45
|
-
import"./cli-
|
|
45
|
+
import"./cli-gxf2ebyz.js";
|
|
46
46
|
import"./cli-51tf7ac3.js";
|
|
47
|
-
import"./cli-
|
|
47
|
+
import"./cli-wfve107r.js";
|
|
48
48
|
import"./cli-q51yprfq.js";
|
|
49
49
|
import"./cli-yatxqynm.js";
|
|
50
|
-
import"./cli-
|
|
50
|
+
import"./cli-jtvs5m8q.js";
|
|
51
51
|
import"./cli-fm4ytsdk.js";
|
|
52
52
|
import"./cli-aehm1rbq.js";
|
|
53
53
|
import"./cli-2658f6at.js";
|
|
54
54
|
import"./cli-jsp14b6c.js";
|
|
55
|
-
import"./cli-
|
|
55
|
+
import"./cli-bdt7w021.js";
|
|
56
56
|
import"./cli-ht5rs63n.js";
|
|
57
57
|
import"./cli-z61ykvam.js";
|
|
58
58
|
import"./cli-dv6cdjs2.js";
|
|
@@ -60,7 +60,7 @@ import"./cli-c2mk1kgf.js";
|
|
|
60
60
|
import"./cli-ej6gbxfb.js";
|
|
61
61
|
import"./cli-sd0mxa3c.js";
|
|
62
62
|
import"./cli-w5e1d1vv.js";
|
|
63
|
-
import"./cli-
|
|
63
|
+
import"./cli-gfez0qmk.js";
|
|
64
64
|
import"./cli-r2ap2czm.js";
|
|
65
65
|
import"./cli-pzxba7gw.js";
|
|
66
66
|
import"./cli-f7kvq46p.js";
|
package/openapi.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Agent Swarm API",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.152.1",
|
|
6
6
|
"description": "Multi-agent orchestration API for Claude Code, Codex, and Gemini CLI. Enables task distribution, agent communication, and service discovery.\n\nMCP tools are documented separately in [MCP.md](./MCP.md)."
|
|
7
7
|
},
|
|
8
8
|
"servers": [
|
|
@@ -16466,7 +16466,7 @@
|
|
|
16466
16466
|
"post": {
|
|
16467
16467
|
"operationId": "extensions_enable",
|
|
16468
16468
|
"summary": "Enable an extension",
|
|
16469
|
-
"description": "Loads and enables an extension.
|
|
16469
|
+
"description": "Loads and enables an extension. Available to leads, operators, and dashboard users.",
|
|
16470
16470
|
"tags": [
|
|
16471
16471
|
"Extensions"
|
|
16472
16472
|
],
|
|
@@ -16542,7 +16542,7 @@
|
|
|
16542
16542
|
"post": {
|
|
16543
16543
|
"operationId": "extensions_disable",
|
|
16544
16544
|
"summary": "Disable an extension",
|
|
16545
|
-
"description": "Unloads and disables an extension.
|
|
16545
|
+
"description": "Unloads and disables an extension. Available to leads, operators, and dashboard users.",
|
|
16546
16546
|
"tags": [
|
|
16547
16547
|
"Extensions"
|
|
16548
16548
|
],
|
|
@@ -16608,7 +16608,7 @@
|
|
|
16608
16608
|
"post": {
|
|
16609
16609
|
"operationId": "extensions_activate_version",
|
|
16610
16610
|
"summary": "Activate an extension version",
|
|
16611
|
-
"description": "Activates a stored version.
|
|
16611
|
+
"description": "Activates a stored version. Available to leads, operators, and dashboard users.",
|
|
16612
16612
|
"tags": [
|
|
16613
16613
|
"Extensions"
|
|
16614
16614
|
],
|
|
@@ -46581,7 +46581,7 @@
|
|
|
46581
46581
|
}
|
|
46582
46582
|
},
|
|
46583
46583
|
"503": {
|
|
46584
|
-
"description": "AgentMail integration not configured",
|
|
46584
|
+
"description": "AgentMail integration not configured or inbound archive unavailable",
|
|
46585
46585
|
"content": {
|
|
46586
46586
|
"application/json": {
|
|
46587
46587
|
"schema": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@desplega.ai/agent-swarm",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.152.1",
|
|
4
4
|
"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.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-swarm.dev",
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { claimKv, sweepExpiredKv } from "../be/db";
|
|
3
|
+
import { scrubSecrets } from "../utils/secret-scrubber";
|
|
4
|
+
import type { AgentMailWebhookPayload } from "./types";
|
|
5
|
+
|
|
6
|
+
export const INBOUND_ARCHIVE_NAMESPACE = "agentmail-inbound";
|
|
7
|
+
export const INBOUND_ARCHIVE_TTL_MS = 30 * 24 * 60 * 60 * 1000;
|
|
8
|
+
const text = (value: unknown, limit: number) =>
|
|
9
|
+
typeof value === "string" ? scrubSecrets(value).slice(0, limit) : "";
|
|
10
|
+
|
|
11
|
+
export const inboundArchiveKey = (inboxId: string, messageId: string) =>
|
|
12
|
+
createHash("sha256")
|
|
13
|
+
.update(JSON.stringify([inboxId, messageId]))
|
|
14
|
+
.digest("hex");
|
|
15
|
+
|
|
16
|
+
/** Persist verified deliveries before ACK, independent of task-routing filters.
|
|
17
|
+
* One minimized entry per message for 30 days from capture. Live retries preserve
|
|
18
|
+
* the first delivery and its expiry; a replay after expiry starts a new window.
|
|
19
|
+
* This is a delivery archive, not proof of historical completeness.
|
|
20
|
+
*/
|
|
21
|
+
export async function archiveInboundMessage(payload: AgentMailWebhookPayload): Promise<void> {
|
|
22
|
+
if (
|
|
23
|
+
![
|
|
24
|
+
"message.received",
|
|
25
|
+
"message.received.unauthenticated",
|
|
26
|
+
"message.received.blocked",
|
|
27
|
+
"message.received.spam",
|
|
28
|
+
].includes(payload.event_type)
|
|
29
|
+
)
|
|
30
|
+
return;
|
|
31
|
+
const message = payload.message;
|
|
32
|
+
if (!message?.inbox_id || !message.message_id || !message.thread_id) {
|
|
33
|
+
throw new Error("Inbound webhook missing inbox, message or thread ID");
|
|
34
|
+
}
|
|
35
|
+
const now = Date.now();
|
|
36
|
+
// Remove expired payloads on traffic as well as the KV point-read lazy sweep.
|
|
37
|
+
await sweepExpiredKv(INBOUND_ARCHIVE_NAMESPACE, now);
|
|
38
|
+
const minimized = {
|
|
39
|
+
event_type: payload.event_type,
|
|
40
|
+
message: {
|
|
41
|
+
inbox_id: message.inbox_id,
|
|
42
|
+
message_id: message.message_id,
|
|
43
|
+
thread_id: message.thread_id,
|
|
44
|
+
from_: text(Array.isArray(message.from_) ? message.from_.join(", ") : message.from_, 1500),
|
|
45
|
+
reply_to: Array.isArray(message.reply_to)
|
|
46
|
+
? message.reply_to.slice(0, 20).map((value) => text(value, 1500))
|
|
47
|
+
: undefined,
|
|
48
|
+
subject: text(message.subject, 300),
|
|
49
|
+
text: text(message.text, 16000),
|
|
50
|
+
html: text(message.html, 16000),
|
|
51
|
+
timestamp: text(message.timestamp || message.created_at, 100),
|
|
52
|
+
labels: Array.isArray(message.labels)
|
|
53
|
+
? message.labels.filter((label) => label === "unauthenticated")
|
|
54
|
+
: [],
|
|
55
|
+
attachments: Array.isArray(message.attachments)
|
|
56
|
+
? message.attachments.map((attachment) => ({
|
|
57
|
+
filename: text(attachment.filename, 1500),
|
|
58
|
+
content_type: text(attachment.content_type, 200),
|
|
59
|
+
size: typeof attachment.size === "number" ? attachment.size : null,
|
|
60
|
+
}))
|
|
61
|
+
: undefined,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
await claimKv({
|
|
65
|
+
namespace: INBOUND_ARCHIVE_NAMESPACE,
|
|
66
|
+
key: inboundArchiveKey(message.inbox_id, message.message_id),
|
|
67
|
+
value: { version: 1, capturedAt: new Date(now).toISOString(), payload: minimized },
|
|
68
|
+
expiresAt: now + INBOUND_ARCHIVE_TTL_MS,
|
|
69
|
+
valueType: "json",
|
|
70
|
+
});
|
|
71
|
+
}
|
package/src/agentmail/types.ts
CHANGED
|
@@ -44,6 +44,8 @@ export interface AgentMailWebhookPayload {
|
|
|
44
44
|
export type AgentMailEventType =
|
|
45
45
|
| "message.received"
|
|
46
46
|
| "message.received.unauthenticated"
|
|
47
|
+
| "message.received.blocked"
|
|
48
|
+
| "message.received.spam"
|
|
47
49
|
| "message.sent"
|
|
48
50
|
| "message.delivered"
|
|
49
51
|
| "message.bounced"
|
package/src/be/db.ts
CHANGED
|
@@ -6154,7 +6154,7 @@ export async function getInjectableGlobalConfigs(): Promise<SwarmConfig[]> {
|
|
|
6154
6154
|
const rows = await getDbClient().query<SwarmConfigRow>(
|
|
6155
6155
|
`SELECT * FROM swarm_config
|
|
6156
6156
|
WHERE scope = 'global'
|
|
6157
|
-
AND UPPER(key) NOT IN ('API_KEY', 'SECRETS_ENCRYPTION_KEY', 'CORS_ALLOW_ANY_ORIGIN')
|
|
6157
|
+
AND UPPER(key) NOT IN ('API_KEY', 'SECRETS_ENCRYPTION_KEY', 'CORS_ALLOW_ANY_ORIGIN', 'EXTENSION_ALLOW_LEAD_ACTIVATION')
|
|
6158
6158
|
ORDER BY key ASC`,
|
|
6159
6159
|
);
|
|
6160
6160
|
return rows.map(rowToSwarmConfig);
|
|
@@ -318,6 +318,10 @@ export interface SwarmSdk {
|
|
|
318
318
|
// --- write: extensions ---
|
|
319
319
|
extension_install(args: { manifest: Record<string, unknown>; files: Record<string, string>; priority?: number; config?: Record<string, unknown> }): Promise<unknown>;
|
|
320
320
|
extension_list(args?: { enabledOnly?: boolean }): Promise<unknown>;
|
|
321
|
+
extension_delete(args: { id: string }): Promise<unknown>;
|
|
322
|
+
extension_enable(args: { id: string }): Promise<unknown>;
|
|
323
|
+
extension_disable(args: { id: string }): Promise<unknown>;
|
|
324
|
+
extension_activate_version(args: { id: string; version: number }): Promise<unknown>;
|
|
321
325
|
|
|
322
326
|
// --- write: repos ---
|
|
323
327
|
repo_update(args: Record<string, unknown>): Promise<unknown>;
|
|
@@ -18,7 +18,13 @@ import { parseTaskToolManifest } from "../utils/task-tool-manifest";
|
|
|
18
18
|
* Matching is case-insensitive so `api_key`, `Api_Key`, etc. are all
|
|
19
19
|
* rejected at every write path (DB helpers, HTTP routes, MCP tools).
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
// Lead activation is also deployment-only: leads can write ordinary global config.
|
|
22
|
+
const RESERVED_KEYS = new Set([
|
|
23
|
+
"API_KEY",
|
|
24
|
+
"SECRETS_ENCRYPTION_KEY",
|
|
25
|
+
"CORS_ALLOW_ANY_ORIGIN",
|
|
26
|
+
"EXTENSION_ALLOW_LEAD_ACTIVATION",
|
|
27
|
+
]);
|
|
22
28
|
|
|
23
29
|
export function isReservedConfigKey(key: string): boolean {
|
|
24
30
|
return RESERVED_KEYS.has(key.toUpperCase());
|