@desplega.ai/agent-swarm 1.150.0 → 1.151.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/{acp-adapter-d5mzggyk.js → acp-adapter-ex8hzjfc.js} +5 -5
- package/dist/{actions-wn6ew0p7.js → actions-2bgpyhww.js} +38 -11
- package/dist/{anthropic-messages-ec35ktvx.js → anthropic-messages-2y8nktar.js} +16 -16
- package/dist/{app-dty7p9hg.js → app-1706zhr1.js} +7 -7
- package/dist/{assistant-q4vhgjtx.js → assistant-bavke5p7.js} +41 -16
- package/dist/{azure-openai-responses-g85jv7m8.js → azure-openai-responses-f38x2avq.js} +13 -13
- package/dist/{boot-reembed-92292pgf.js → boot-reembed-3cmrrmpa.js} +8 -8
- package/dist/{boot-reembed-n15q6s9x.js → boot-reembed-nafcmmmc.js} +13 -15
- package/dist/{boot-scrub-logs-44pc955m.js → boot-scrub-logs-cd6a2sq0.js} +5 -5
- package/dist/{claude-adapter-cjegjbje.js → claude-adapter-wfp2gzvz.js} +12 -13
- package/dist/{claude-managed-adapter-p3ts5m9m.js → claude-managed-adapter-dsmkcrjy.js} +3 -3
- package/dist/{claude-sdk-session-7ywbn12v.js → claude-sdk-session-bht9jjak.js} +12 -13
- package/dist/{cli-ceb5y160.js → cli-0qb1z6s2.js} +1 -1
- package/dist/{cli-ryz8q8p1.js → cli-2tbvf1z1.js} +40 -40
- package/dist/{cli-zthatyrx.js → cli-3v9xhjcn.js} +5 -5
- package/dist/{cli-mzb0n642.js → cli-4wppfkcm.js} +350 -20
- package/dist/{cli-3ckzxdt1.js → cli-5jd2z7av.js} +90 -81
- package/dist/{cli-3mh119qv.js → cli-5tpgq60f.js} +9726 -693
- package/dist/{cli-ck1vqzdj.js → cli-7tgcstn2.js} +9 -4
- package/dist/{cli-ttje5a4z.js → cli-9004vfdf.js} +105 -56
- package/dist/{cli-asvrh7kj.js → cli-9xvdm3bx.js} +1 -1
- package/dist/{cli-9gqddmxs.js → cli-a1z3h107.js} +8 -8
- package/dist/{cli-72xdszyx.js → cli-czjtgfys.js} +2 -2
- package/dist/{cli-5my3bjsd.js → cli-d3p82erb.js} +7 -7
- package/dist/{cli-kyysm7m3.js → cli-f1wky6zp.js} +1 -1
- package/dist/{cli-a45d5v9b.js → cli-fm4ytsdk.js} +2 -2
- package/dist/{cli-111ey3ra.js → cli-frcta2w4.js} +5 -5
- package/dist/{cli-h505yhex.js → cli-g69fdc9g.js} +2 -2
- package/dist/{cli-cmp8g3sw.js → cli-gbfwcd3k.js} +44 -9
- package/dist/{cli-hbagregr.js → cli-gjyvhmmh.js} +88 -13
- package/dist/{cli-hmyynq9b.js → cli-ht5rs63n.js} +1 -1
- package/dist/{cli-dyx0237s.js → cli-j4nv2wqy.js} +2 -4
- package/dist/{cli-vr6qj104.js → cli-j9xczhaq.js} +1 -1
- package/dist/cli-pf9q3696.js +172 -0
- package/dist/{cli-7fesa1ky.js → cli-pgj4a5fb.js} +1 -1
- package/dist/{cli-7kwmt3r5.js → cli-ppm4975n.js} +9 -3
- package/dist/{cli-8chp8xab.js → cli-q88st9aj.js} +2 -2
- package/dist/{cli-kt7wevqh.js → cli-r2q6pevn.js} +132 -46
- package/dist/{cli-07jd68a1.js → cli-re8z5p8p.js} +1 -1
- package/dist/{cli-qp69dd5d.js → cli-s14agm5s.js} +105 -12
- package/dist/{cli-zd21jrrc.js → cli-sjaae6ff.js} +9872 -424
- package/dist/{cli-taym3dmg.js → cli-vwm416m6.js} +13 -13
- package/dist/{cli-1mx65de9.js → cli-wbyk465z.js} +1 -1
- package/dist/{cli-n75jt793.js → cli-z61ykvam.js} +6 -5
- package/dist/{cli-gm0fhz13.js → cli-zkxymas5.js} +2 -1
- package/dist/cli.js +22 -21
- package/dist/{codex-adapter-rn3aq7jm.js → codex-adapter-jjjk8w4m.js} +8 -9
- package/dist/{codex-hook-gthcmm0g.js → codex-hook-8jexc34x.js} +2 -2
- package/dist/{codex-session-runner-bge0cbsw.js → codex-session-runner-nd6ayxkx.js} +8 -9
- package/dist/{commands-26phw0pc.js → commands-9v4psyq1.js} +5 -5
- package/dist/{db-jxjx6s1b.js → db-wnt58tpe.js} +5 -5
- package/dist/dispatcher-05jh1aqk.js +74 -0
- package/dist/{google-generative-ai-tsskx7te.js → google-generative-ai-ndjmj5fa.js} +7 -7
- package/dist/{google-vertex-pkhpkbq9.js → google-vertex-fr665tqs.js} +10 -10
- package/dist/handlers-tw90pkh5.js +65 -0
- package/dist/{hook-t6fqsggw.js → hook-123e2scb.js} +9 -10
- package/dist/{hook-jw0ztn96.js → hook-sxe3r349.js} +9 -10
- package/dist/{http-hyc7s57s.js → http-ecsar8ez.js} +1431 -579
- package/dist/{index-sfhaq59d.js → index-16js521z.js} +119 -101
- package/dist/{index-wtwpthe1.js → index-hw26vj40.js} +25 -19
- package/dist/{index-bcyx5djw.js → index-nnrbpcjp.js} +25 -17
- package/dist/index-ymn7em0p.js +25 -0
- package/dist/{index-1d9r6a74.js → index-zj518gf9.js} +26 -20
- package/dist/{keepalive-fbsak4ya.js → keepalive-asqtcm4y.js} +7 -7
- package/dist/{lead-rdzdm627.js → lead-xbfr7fvt.js} +41 -49
- package/dist/{maintenance-25z1c1vf.js → maintenance-qma55qvw.js} +8 -8
- package/dist/{node-209sxmg3.js → node-x1g4v0pq.js} +9 -9
- package/dist/{oauth-refresh-sweep-j3d7gtse.js → oauth-refresh-sweep-3s04c6qw.js} +6 -6
- package/dist/{onboard-dkcwrc75.js → onboard-drskd386.js} +13 -4
- package/dist/{openai-codex-responses-pm5gnyfa.js → openai-codex-responses-wy6a43wd.js} +11 -11
- package/dist/{openai-responses-vwvk1taj.js → openai-responses-6xwf7bzg.js} +13 -13
- package/dist/{opencode-adapter-dce4wskd.js → opencode-adapter-28axqa09.js} +4 -4
- package/dist/{otel-impl-8rgyy3j8.js → otel-impl-943c96er.js} +1 -1
- package/dist/{pi-mono-adapter-4s2bbkgq.js → pi-mono-adapter-jcqt71cg.js} +14 -16
- package/dist/{pricing-refresh-9cek71nq.js → pricing-refresh-mx51az05.js} +7 -7
- package/dist/{rbac-roles-z98s2ypy.js → rbac-roles-78baecqd.js} +13 -9
- package/dist/{rbac-roles-vk8mqp9v.js → rbac-roles-wcmrg6sv.js} +7 -7
- package/dist/{render-v2-3j26g0qh.js → render-v2-8zjntgf5.js} +7 -7
- package/dist/{seed-pricing-7rxhcnzm.js → seed-pricing-jqjs6cws.js} +6 -6
- package/dist/{setup-e2t7vz0c.js → setup-4pks0vfk.js} +2 -2
- package/dist/{work-objects-8d3nd3x2.js → work-objects-wangt792.js} +38 -14
- package/dist/{worker-0x9fn7nq.js → worker-p2mr422x.js} +41 -49
- package/openapi.json +1351 -265
- package/package.json +2 -1
- package/src/agentmail/handlers.ts +95 -71
- package/src/be/db-client.ts +5 -0
- package/src/be/db.ts +11 -3
- package/src/be/extensions/db.ts +461 -0
- package/src/be/extensions/validate.ts +107 -0
- package/src/be/memory/boot-reembed.ts +17 -12
- package/src/be/memory/index.ts +12 -0
- package/src/be/memory/providers/openai-embedding.ts +4 -0
- package/src/be/memory/types.ts +2 -0
- package/src/be/migrations/155_extensions.sql +66 -0
- package/src/be/migrations/156_inbox_item_state_read_at.sql +7 -0
- package/src/be/rbac-roles.ts +3 -2
- package/src/be/scripts/typecheck.ts +52 -38
- package/src/be/seed-skills/index.ts +7 -0
- package/src/be/swarm-config-guard.ts +3 -1
- package/src/commands/onboard/compose-generator.ts +14 -2
- package/src/commands/onboard/env-generator.ts +7 -0
- package/src/commands/runner.ts +1 -1
- package/src/extensions/apply-task-create.ts +135 -0
- package/src/extensions/bundle-path.ts +10 -0
- package/src/extensions/contract-runtime.ts +7 -0
- package/src/extensions/contract-types.generated.ts +4 -0
- package/src/extensions/contract.ts +270 -0
- package/src/extensions/ctx.ts +186 -0
- package/src/extensions/dispatcher.ts +479 -0
- package/src/extensions/identity.ts +44 -0
- package/src/extensions/lifecycle.ts +281 -0
- package/src/extensions/loader.ts +207 -0
- package/src/extensions/post-bridge.ts +161 -0
- package/src/github/handlers.ts +185 -149
- package/src/gitlab/handlers.ts +97 -81
- package/src/heartbeat/heartbeat.ts +152 -83
- package/src/http/agents.ts +1 -1
- package/src/http/all-routes.ts +1 -0
- package/src/http/apps.ts +14 -10
- package/src/http/core.ts +34 -0
- package/src/http/extensions.ts +547 -0
- package/src/http/inbox-state.ts +2 -0
- package/src/http/index.ts +25 -0
- package/src/http/mcp-bridge.ts +96 -62
- package/src/http/mcp.ts +1 -1
- package/src/http/status.ts +6 -4
- package/src/http/tasks.ts +51 -35
- package/src/integrations/kapso/inbound.ts +15 -11
- package/src/jira/sync.ts +26 -18
- package/src/linear/sync.ts +26 -18
- package/src/prompts/session-templates.ts +5 -4
- package/src/rbac/admission.ts +1 -1
- package/src/rbac/elevated-agents.ts +24 -0
- package/src/rbac/legacy-policy.ts +35 -6
- package/src/rbac/permissions.ts +8 -0
- package/src/scheduler/deferred-task-waits.ts +133 -51
- package/src/scheduler/schedule-task.ts +50 -24
- package/src/scheduler/scheduler.ts +4 -2
- package/src/scripts-runtime/executors/native.ts +5 -1
- package/src/scripts-runtime/executors/types.ts +5 -0
- package/src/scripts-runtime/import-allowlist.ts +79 -19
- package/src/scripts-runtime/sdk-allowlist.ts +4 -0
- package/src/scripts-runtime/swarm-config.ts +8 -0
- package/src/scripts-runtime/swarm-sdk.ts +3 -0
- package/src/scripts-runtime/types/stdlib.d.ts +9 -0
- package/src/scripts-runtime/types/swarm-extension.d.ts +562 -0
- package/src/scripts-runtime/types/swarm-sdk.d.ts +9 -0
- package/src/server.ts +6 -0
- package/src/slack/HEURISTICS.md +1 -1
- package/src/slack/actions.ts +21 -17
- package/src/slack/blocks.ts +1 -1
- package/src/slack/handlers.ts +98 -5
- package/src/slack/inbound-files.ts +6 -2
- package/src/slack/render-v2.ts +171 -35
- package/src/slack/router.ts +13 -3
- package/src/slack/steering.ts +3 -3
- package/src/tasks/errors.ts +9 -0
- package/src/tasks/sibling-awareness.ts +35 -1
- package/src/tasks/worker-follow-up.ts +64 -12
- package/src/tests/base-prompt.test.ts +1 -0
- package/src/tests/deferred-task-wake.test.ts +161 -9
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/env-flag.test.ts +1 -0
- package/src/tests/extensions-db.test.ts +216 -0
- package/src/tests/extensions-dispatcher.test.ts +275 -0
- package/src/tests/extensions-example-heartbeat-remediate.test.ts +69 -0
- package/src/tests/extensions-example-mcp-install.test.ts +63 -0
- package/src/tests/extensions-example-no-exclamation-marks.test.ts +72 -0
- package/src/tests/extensions-example-rewrite-and-suppress.test.ts +70 -0
- package/src/tests/extensions-example-route-slack-channel.test.ts +217 -0
- package/src/tests/extensions-heartbeat.test.ts +291 -0
- package/src/tests/extensions-http.test.ts +431 -0
- package/src/tests/extensions-lead-equivalence.test.ts +49 -0
- package/src/tests/extensions-lifecycle.test.ts +209 -0
- package/src/tests/extensions-loader.test.ts +95 -0
- package/src/tests/extensions-mcp-tools.test.ts +245 -0
- package/src/tests/extensions-pre-task.test.ts +487 -0
- package/src/tests/extensions-run-context.test.ts +41 -0
- package/src/tests/extensions-tool-call.test.ts +288 -0
- package/src/tests/extensions-validate.test.ts +196 -0
- package/src/tests/fixtures/extensions/bad-import/hooks.ts +8 -0
- package/src/tests/fixtures/extensions/bad-import/manifest.json +9 -0
- package/src/tests/fixtures/extensions/bad-return-shape/hooks.ts +10 -0
- package/src/tests/fixtures/extensions/bad-return-shape/manifest.json +9 -0
- package/src/tests/fixtures/extensions/block-tasks-from-source/hooks.ts +22 -0
- package/src/tests/fixtures/extensions/block-tasks-from-source/manifest.json +9 -0
- package/src/tests/fixtures/extensions/ignore-channel/hooks.ts +22 -0
- package/src/tests/fixtures/extensions/ignore-channel/manifest.json +9 -0
- package/src/tests/fixtures/extensions/load.ts +10 -0
- package/src/tests/fixtures/extensions/minimal/hooks.ts +7 -0
- package/src/tests/fixtures/extensions/minimal/manifest.json +9 -0
- package/src/tests/fixtures/extensions/never-fail-long-tasks/hooks.ts +11 -0
- package/src/tests/fixtures/extensions/never-fail-long-tasks/manifest.json +9 -0
- package/src/tests/fixtures/extensions/no-exclamation-marks/hooks.ts +23 -0
- package/src/tests/fixtures/extensions/no-exclamation-marks/manifest.json +9 -0
- package/src/tests/fixtures/extensions/post-logger/hooks.ts +9 -0
- package/src/tests/fixtures/extensions/post-logger/manifest.json +9 -0
- package/src/tests/fixtures/extensions/priority-a/hooks.ts +7 -0
- package/src/tests/fixtures/extensions/priority-a/manifest.json +9 -0
- package/src/tests/fixtures/extensions/priority-b/hooks.ts +7 -0
- package/src/tests/fixtures/extensions/priority-b/manifest.json +9 -0
- package/src/tests/fixtures/extensions/record-only-on-tag/hooks.ts +16 -0
- package/src/tests/fixtures/extensions/record-only-on-tag/manifest.json +9 -0
- package/src/tests/fixtures/extensions/reserved-assets/hooks.ts +5 -0
- package/src/tests/fixtures/extensions/reserved-assets/manifest.json +10 -0
- package/src/tests/fixtures/extensions/rewrite-progress-prefix/hooks.ts +22 -0
- package/src/tests/fixtures/extensions/rewrite-progress-prefix/manifest.json +9 -0
- package/src/tests/fixtures/extensions/rewrite-task-priority/hooks.ts +7 -0
- package/src/tests/fixtures/extensions/rewrite-task-priority/manifest.json +9 -0
- package/src/tests/fixtures/extensions/route-channel-to-agent/hooks.ts +26 -0
- package/src/tests/fixtures/extensions/route-channel-to-agent/manifest.json +9 -0
- package/src/tests/fixtures/extensions/slow/hooks.ts +10 -0
- package/src/tests/fixtures/extensions/slow/manifest.json +9 -0
- package/src/tests/fixtures/extensions/suppress-lead-follow-up/hooks.ts +12 -0
- package/src/tests/fixtures/extensions/suppress-lead-follow-up/manifest.json +9 -0
- package/src/tests/fixtures/extensions/throws/hooks.ts +12 -0
- package/src/tests/fixtures/extensions/throws/manifest.json +9 -0
- package/src/tests/fixtures/extensions/worker-runtime/hooks.ts +5 -0
- package/src/tests/fixtures/extensions/worker-runtime/manifest.json +9 -0
- package/src/tests/memory-edit-authorization.test.ts +32 -0
- package/src/tests/multi-runtime-enabled-stats.test.ts +2 -2
- package/src/tests/multi-runtime-registration.test.ts +14 -14
- package/src/tests/onboard-compose.test.ts +44 -0
- package/src/tests/preload.ts +5 -0
- package/src/tests/rbac-admission.test.ts +18 -3
- package/src/tests/rbac-engine.test.ts +39 -0
- package/src/tests/realtime-room-auth.test.ts +1 -1
- package/src/tests/reload-config.test.ts +44 -0
- package/src/tests/routing-affinity-inventory.test.ts +1 -1
- package/src/tests/script-connections.test.ts +2 -0
- package/src/tests/scripts-boot-reembed.test.ts +4 -0
- package/src/tests/scripts-embeddings.test.ts +4 -0
- package/src/tests/scripts-import-allowlist.test.ts +44 -1
- package/src/tests/scripts-mcp-e2e.test.ts +80 -0
- package/src/tests/scripts-only-gating.test.ts +2 -0
- package/src/tests/scripts-runtime-identity.test.ts +1 -1
- package/src/tests/slack-blocks.test.ts +12 -1
- package/src/tests/slack-render-v2.test.ts +76 -3
- package/src/tests/slack-router.test.ts +17 -2
- package/src/tests/slack-steering.test.ts +19 -0
- package/src/tests/status.test.ts +12 -0
- package/src/tests/steering-enabled.test.ts +6 -8
- package/src/tests/task-tool-preload-mcp.test.ts +4 -1
- package/src/tests/tool-annotations.test.ts +1 -1
- package/src/tests/tool-registrar-no-input.test.ts +42 -1
- package/src/tools/defer-task.ts +1 -1
- package/src/tools/extension-common.ts +84 -0
- package/src/tools/extension-install.ts +65 -0
- package/src/tools/extension-list.ts +66 -0
- package/src/tools/script-common.ts +43 -18
- package/src/tools/send-task.ts +69 -107
- package/src/tools/task-action.ts +43 -22
- package/src/tools/task-tool-ctx.ts +2 -0
- package/src/tools/tool-config.ts +3 -1
- package/src/tools/utils.ts +140 -16
- package/src/types.ts +133 -0
- package/src/utils/multi-runtime.ts +2 -2
- package/src/utils/steering-enabled.ts +4 -4
- package/src/workflows/executors/agent-task.ts +13 -3
- package/templates/extensions/README.md +17 -0
- package/templates/extensions/notify-on-complete/README.md +11 -0
- package/templates/extensions/notify-on-complete/hooks.ts +61 -0
- package/templates/extensions/notify-on-complete/manifest.json +7 -0
- package/templates/extensions/require-ticket-ref/README.md +11 -0
- package/templates/extensions/require-ticket-ref/hooks.ts +30 -0
- package/templates/extensions/require-ticket-ref/manifest.json +7 -0
- package/templates/extensions/require-verification-note/README.md +11 -0
- package/templates/extensions/require-verification-note/hooks.ts +32 -0
- package/templates/extensions/require-verification-note/manifest.json +7 -0
- package/templates/skills/scheduling/content.md +2 -0
- package/templates/skills/swarm-extensions/config.json +14 -0
- package/templates/skills/swarm-extensions/content.md +120 -0
- package/dist/cli-b8x19vbh.js +0 -823
- package/dist/cli-n1yj5fd5.js +0 -164
- package/dist/cli-q04q68be.js +0 -3066
- package/dist/cli-qgm2pfpq.js +0 -6377
- package/dist/cli-rnsr8asm.js +0 -4323
- package/dist/cli-rwp3ksm7.js +0 -545
- package/dist/cli-xjb9wghj.js +0 -668
- package/dist/cli-xvkmedgn.js +0 -332
- package/dist/cli-ydk0wjj8.js +0 -338
- package/dist/handlers-vr1djg4n.js +0 -41
- package/dist/{claude-managed-setup-f5pmsyrp.js → claude-managed-setup-48dwg9bv.js} +3 -3
- package/dist/{cli-81r683bv.js → cli-ch38q5z4.js} +0 -0
- package/dist/{cli-wk0gjrn3.js → cli-kj76p1ez.js} +6 -6
- package/dist/{cli-c71mg51n.js → cli-r2fpe7cx.js} +5 -5
- package/dist/{cli-8qx7jnrk.js → cli-y6x0gqtg.js} +16 -16
- package/dist/{index-aa3sa6s8.js → index-2wsdsnmm.js} +1 -1
- package/dist/{mistral-conversations-4ryk7h83.js → mistral-conversations-qhr84ph3.js} +9 -9
- package/dist/{openai-completions-qdcmkfnr.js → openai-completions-32rdwmze.js} +17 -17
- package/dist/{openrouter-images-qx18fyp8.js → openrouter-images-9f9ek4rw.js} +3 -3
- package/dist/{pi-messages-79jvzz1d.js → pi-messages-b1mbr6gp.js} +4 -4
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SYSTEM_COLUMN_KINDS,
|
|
3
|
-
listAppRecords
|
|
4
|
-
} from "./cli-q04q68be.js";
|
|
5
|
-
import {
|
|
6
3
|
getScriptApiTypes,
|
|
7
4
|
getScriptMcpTypes,
|
|
5
|
+
listAppRecords,
|
|
8
6
|
require_typescript
|
|
9
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-sjaae6ff.js";
|
|
10
8
|
import {
|
|
11
9
|
deleteSwarmConfigByKey,
|
|
12
10
|
getAgentById,
|
|
@@ -15,7 +13,7 @@ import {
|
|
|
15
13
|
getSwarmConfigs,
|
|
16
14
|
init_db,
|
|
17
15
|
upsertSwarmConfig
|
|
18
|
-
} from "./cli-
|
|
16
|
+
} from "./cli-s14agm5s.js";
|
|
19
17
|
import {
|
|
20
18
|
init_secret_scrubber,
|
|
21
19
|
scrubSecrets
|
|
@@ -577,52 +575,9 @@ async function getScriptAppTypes(_context = {}) {
|
|
|
577
575
|
}
|
|
578
576
|
}
|
|
579
577
|
|
|
580
|
-
// src/be/scripts/extract-schema.ts
|
|
581
|
-
import { fileURLToPath } from "node:url";
|
|
582
|
-
var TIMEOUT_MS = 5000;
|
|
583
|
-
function extractorPath() {
|
|
584
|
-
return fileURLToPath(new URL("../../scripts-runtime/extract-args-schema.ts", import.meta.url));
|
|
585
|
-
}
|
|
586
|
-
async function extractArgsJsonSchema(source) {
|
|
587
|
-
const tmpdir = `${process.env.TMPDIR ?? "/tmp"}/schema-extract-${crypto.randomUUID()}`;
|
|
588
|
-
try {
|
|
589
|
-
await Bun.$`mkdir -p ${tmpdir}`.quiet();
|
|
590
|
-
const sourceFile = `${tmpdir}/source.ts`;
|
|
591
|
-
const resultFile = `${tmpdir}/result.json`;
|
|
592
|
-
await Bun.write(sourceFile, source);
|
|
593
|
-
const proc = Bun.spawn(["bun", "run", extractorPath()], {
|
|
594
|
-
env: {
|
|
595
|
-
PATH: process.env.PATH ?? "/usr/bin:/bin",
|
|
596
|
-
HOME: process.env.HOME ?? "/tmp",
|
|
597
|
-
TMPDIR: tmpdir,
|
|
598
|
-
SWARM_SCHEMA_SOURCE_FILE: sourceFile,
|
|
599
|
-
SWARM_SCHEMA_RESULT_FILE: resultFile,
|
|
600
|
-
SWARM_SCHEMA_TMPDIR: tmpdir
|
|
601
|
-
},
|
|
602
|
-
cwd: tmpdir,
|
|
603
|
-
stdout: "ignore",
|
|
604
|
-
stderr: "ignore"
|
|
605
|
-
});
|
|
606
|
-
const timeout = setTimeout(() => proc.kill(), TIMEOUT_MS);
|
|
607
|
-
const exitCode = await proc.exited.catch(() => 1);
|
|
608
|
-
clearTimeout(timeout);
|
|
609
|
-
if (exitCode !== 0)
|
|
610
|
-
return null;
|
|
611
|
-
const result = await Bun.file(resultFile).text();
|
|
612
|
-
const parsed = JSON.parse(result);
|
|
613
|
-
if (parsed === null)
|
|
614
|
-
return null;
|
|
615
|
-
return JSON.stringify(parsed);
|
|
616
|
-
} catch {
|
|
617
|
-
return null;
|
|
618
|
-
} finally {
|
|
619
|
-
await Bun.$`rm -rf ${tmpdir}`.quiet().nothrow();
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
|
|
623
578
|
// src/be/scripts/typecheck.ts
|
|
624
579
|
var import_typescript = __toESM(require_typescript(), 1);
|
|
625
|
-
import { fileURLToPath
|
|
580
|
+
import { fileURLToPath } from "node:url";
|
|
626
581
|
var SCRIPT_SDK_TYPES = `
|
|
627
582
|
export type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };
|
|
628
583
|
export type ScriptScope = "agent" | "global";
|
|
@@ -909,6 +864,10 @@ export interface SwarmSdk {
|
|
|
909
864
|
script_getRun(args: { id: string }): Promise<unknown>;
|
|
910
865
|
script_listRuns(args?: { status?: "running" | "paused" | "completed" | "failed" | "cancelled" | "aborted_limit"; agentId?: string; limit?: number; offset?: number }): Promise<unknown>;
|
|
911
866
|
|
|
867
|
+
// --- write: extensions ---
|
|
868
|
+
extension_install(args: { manifest: Record<string, unknown>; files: Record<string, string>; priority?: number; config?: Record<string, unknown> }): Promise<unknown>;
|
|
869
|
+
extension_list(args?: { enabledOnly?: boolean }): Promise<unknown>;
|
|
870
|
+
|
|
912
871
|
// --- write: repos ---
|
|
913
872
|
repo_update(args: Record<string, unknown>): Promise<unknown>;
|
|
914
873
|
|
|
@@ -1057,7 +1016,7 @@ ${mcpTypes}
|
|
|
1057
1016
|
${resolvedAppTypes}
|
|
1058
1017
|
`;
|
|
1059
1018
|
}
|
|
1060
|
-
var
|
|
1019
|
+
var SCRIPT_STDLIB_MODULE_TYPES = `
|
|
1061
1020
|
declare module "stdlib" {
|
|
1062
1021
|
export interface Redacted<T> {
|
|
1063
1022
|
readonly __redactedBrand?: T;
|
|
@@ -1077,7 +1036,7 @@ declare module "stdlib" {
|
|
|
1077
1036
|
}
|
|
1078
1037
|
`;
|
|
1079
1038
|
function stdlibTypesFor(sdkModuleBody) {
|
|
1080
|
-
return `${
|
|
1039
|
+
return `${SCRIPT_STDLIB_MODULE_TYPES}
|
|
1081
1040
|
declare module "swarm-sdk" {
|
|
1082
1041
|
${sdkModuleBody.replace(/^/gm, " ")}
|
|
1083
1042
|
}
|
|
@@ -1411,16 +1370,14 @@ interface Window {
|
|
|
1411
1370
|
`;
|
|
1412
1371
|
var USER_FILE = "/virtual/user-script.ts";
|
|
1413
1372
|
var CHECK_FILE = "/virtual/check.ts";
|
|
1414
|
-
var SDK_FILE = "/virtual/swarm-sdk.d.ts";
|
|
1415
|
-
var STDLIB_FILE = "/virtual/stdlib.d.ts";
|
|
1416
1373
|
var RUNTIME_GLOBALS_FILE = "/virtual/runtime-globals.d.ts";
|
|
1417
1374
|
function scriptTypesBase() {
|
|
1418
1375
|
const dir = process.env.SCRIPT_TYPES_DIR;
|
|
1419
1376
|
if (dir)
|
|
1420
1377
|
return `${dir}/index.ts`;
|
|
1421
|
-
return
|
|
1378
|
+
return fileURLToPath(new URL("../../index.ts", import.meta.url));
|
|
1422
1379
|
}
|
|
1423
|
-
function createCompilerHost(files, options) {
|
|
1380
|
+
function createCompilerHost(files, options, virtualModules = new Map) {
|
|
1424
1381
|
const host = import_typescript.default.createCompilerHost(options, true);
|
|
1425
1382
|
const originalGetSourceFile = host.getSourceFile.bind(host);
|
|
1426
1383
|
host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
|
|
@@ -1444,11 +1401,9 @@ function createCompilerHost(files, options) {
|
|
|
1444
1401
|
if (moduleName === "./user-script") {
|
|
1445
1402
|
return { resolvedFileName: USER_FILE, extension: import_typescript.default.Extension.Ts };
|
|
1446
1403
|
}
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
if (moduleName === "stdlib") {
|
|
1451
|
-
return { resolvedFileName: STDLIB_FILE, extension: import_typescript.default.Extension.Dts };
|
|
1404
|
+
const virtualModule = virtualModules.get(moduleName);
|
|
1405
|
+
if (virtualModule) {
|
|
1406
|
+
return { resolvedFileName: virtualModule, extension: import_typescript.default.Extension.Dts };
|
|
1452
1407
|
}
|
|
1453
1408
|
const base = containingFile.startsWith("/virtual/") ? projectBase : containingFile;
|
|
1454
1409
|
return import_typescript.default.resolveModuleName(moduleName, base, options, host).resolvedModule;
|
|
@@ -1521,7 +1476,7 @@ function toStructured(diag) {
|
|
|
1521
1476
|
suggestion: extractSuggestion(message)
|
|
1522
1477
|
};
|
|
1523
1478
|
}
|
|
1524
|
-
async function
|
|
1479
|
+
async function typecheckWithAmbient(args) {
|
|
1525
1480
|
const options = {
|
|
1526
1481
|
allowImportingTsExtensions: true,
|
|
1527
1482
|
lib: ["lib.es2022.d.ts"],
|
|
@@ -1533,28 +1488,22 @@ async function typecheckScript(source, context = {}) {
|
|
|
1533
1488
|
target: import_typescript.default.ScriptTarget.ES2022,
|
|
1534
1489
|
types: []
|
|
1535
1490
|
};
|
|
1536
|
-
const apiTypes = getScriptApiTypes(context);
|
|
1537
|
-
const mcpTypes = getScriptMcpTypes(context);
|
|
1538
|
-
const appTypes = await getScriptAppTypes(context);
|
|
1539
|
-
const sdkTypes = await scriptSdkTypesWithGeneratedApis(apiTypes, mcpTypes, appTypes);
|
|
1540
|
-
const stdlibTypes = appTypes ? await scriptStdlibTypesWithGeneratedApis(apiTypes, mcpTypes, appTypes) : SCRIPT_STDLIB_TYPES;
|
|
1541
1491
|
const files = new Map([
|
|
1542
|
-
[USER_FILE, source],
|
|
1543
|
-
[SDK_FILE, sdkTypes],
|
|
1544
|
-
[STDLIB_FILE, stdlibTypes],
|
|
1492
|
+
[USER_FILE, args.source],
|
|
1545
1493
|
[RUNTIME_GLOBALS_FILE, SCRIPT_RUNTIME_GLOBALS],
|
|
1546
|
-
[
|
|
1547
|
-
CHECK_FILE,
|
|
1548
|
-
`/// <reference path="./runtime-globals.d.ts" />
|
|
1549
|
-
import run from "./user-script";
|
|
1550
|
-
import type { ScriptMain } from "swarm-sdk";
|
|
1551
|
-
const _scriptMain: ScriptMain = run;
|
|
1552
|
-
void _scriptMain;
|
|
1553
|
-
`
|
|
1554
|
-
]
|
|
1494
|
+
[CHECK_FILE, args.checkFile]
|
|
1555
1495
|
]);
|
|
1556
|
-
const
|
|
1557
|
-
const
|
|
1496
|
+
const virtualModules = new Map;
|
|
1497
|
+
for (const [moduleName, source] of Object.entries(args.modules)) {
|
|
1498
|
+
const fileName = `/virtual/${moduleName.replace(/[^A-Za-z0-9_.-]/g, "_")}.d.ts`;
|
|
1499
|
+
files.set(fileName, source);
|
|
1500
|
+
virtualModules.set(moduleName, fileName);
|
|
1501
|
+
}
|
|
1502
|
+
for (const [name, source] of Object.entries(args.ambient ?? {})) {
|
|
1503
|
+
files.set(`/virtual/ambient-${name.replace(/[^A-Za-z0-9_.-]/g, "_")}.d.ts`, source);
|
|
1504
|
+
}
|
|
1505
|
+
const host = createCompilerHost(files, options, virtualModules);
|
|
1506
|
+
const program = import_typescript.default.createProgram([...files.keys()], options, host);
|
|
1558
1507
|
const diagnostics = [
|
|
1559
1508
|
...program.getSyntacticDiagnostics(),
|
|
1560
1509
|
...program.getSemanticDiagnostics()
|
|
@@ -1576,6 +1525,66 @@ void _scriptMain;
|
|
|
1576
1525
|
structured: diagnostics.map(toStructured)
|
|
1577
1526
|
};
|
|
1578
1527
|
}
|
|
1528
|
+
async function typecheckScript(source, context = {}) {
|
|
1529
|
+
const apiTypes = getScriptApiTypes(context);
|
|
1530
|
+
const mcpTypes = getScriptMcpTypes(context);
|
|
1531
|
+
const appTypes = await getScriptAppTypes(context);
|
|
1532
|
+
const sdkTypes = await scriptSdkTypesWithGeneratedApis(apiTypes, mcpTypes, appTypes);
|
|
1533
|
+
const stdlibTypes = appTypes ? await scriptStdlibTypesWithGeneratedApis(apiTypes, mcpTypes, appTypes) : SCRIPT_STDLIB_TYPES;
|
|
1534
|
+
return typecheckWithAmbient({
|
|
1535
|
+
source,
|
|
1536
|
+
modules: { "swarm-sdk": sdkTypes, stdlib: stdlibTypes },
|
|
1537
|
+
checkFile: `/// <reference path="./runtime-globals.d.ts" />
|
|
1538
|
+
import run from "./user-script";
|
|
1539
|
+
import type { ScriptMain } from "swarm-sdk";
|
|
1540
|
+
const _scriptMain: ScriptMain = run;
|
|
1541
|
+
void _scriptMain;
|
|
1542
|
+
`
|
|
1543
|
+
});
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
// src/be/scripts/extract-schema.ts
|
|
1547
|
+
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
1548
|
+
var TIMEOUT_MS = 5000;
|
|
1549
|
+
function extractorPath() {
|
|
1550
|
+
return fileURLToPath2(new URL("../../scripts-runtime/extract-args-schema.ts", import.meta.url));
|
|
1551
|
+
}
|
|
1552
|
+
async function extractArgsJsonSchema(source) {
|
|
1553
|
+
const tmpdir = `${process.env.TMPDIR ?? "/tmp"}/schema-extract-${crypto.randomUUID()}`;
|
|
1554
|
+
try {
|
|
1555
|
+
await Bun.$`mkdir -p ${tmpdir}`.quiet();
|
|
1556
|
+
const sourceFile = `${tmpdir}/source.ts`;
|
|
1557
|
+
const resultFile = `${tmpdir}/result.json`;
|
|
1558
|
+
await Bun.write(sourceFile, source);
|
|
1559
|
+
const proc = Bun.spawn(["bun", "run", extractorPath()], {
|
|
1560
|
+
env: {
|
|
1561
|
+
PATH: process.env.PATH ?? "/usr/bin:/bin",
|
|
1562
|
+
HOME: process.env.HOME ?? "/tmp",
|
|
1563
|
+
TMPDIR: tmpdir,
|
|
1564
|
+
SWARM_SCHEMA_SOURCE_FILE: sourceFile,
|
|
1565
|
+
SWARM_SCHEMA_RESULT_FILE: resultFile,
|
|
1566
|
+
SWARM_SCHEMA_TMPDIR: tmpdir
|
|
1567
|
+
},
|
|
1568
|
+
cwd: tmpdir,
|
|
1569
|
+
stdout: "ignore",
|
|
1570
|
+
stderr: "ignore"
|
|
1571
|
+
});
|
|
1572
|
+
const timeout = setTimeout(() => proc.kill(), TIMEOUT_MS);
|
|
1573
|
+
const exitCode = await proc.exited.catch(() => 1);
|
|
1574
|
+
clearTimeout(timeout);
|
|
1575
|
+
if (exitCode !== 0)
|
|
1576
|
+
return null;
|
|
1577
|
+
const result = await Bun.file(resultFile).text();
|
|
1578
|
+
const parsed = JSON.parse(result);
|
|
1579
|
+
if (parsed === null)
|
|
1580
|
+
return null;
|
|
1581
|
+
return JSON.stringify(parsed);
|
|
1582
|
+
} catch {
|
|
1583
|
+
return null;
|
|
1584
|
+
} finally {
|
|
1585
|
+
await Bun.$`rm -rf ${tmpdir}`.quiet().nothrow();
|
|
1586
|
+
}
|
|
1587
|
+
}
|
|
1579
1588
|
|
|
1580
1589
|
// src/scripts-runtime/extract-signature.ts
|
|
1581
1590
|
var import_typescript2 = __toESM(require_typescript(), 1);
|
|
@@ -1634,4 +1643,4 @@ function extractScriptSignature(source) {
|
|
|
1634
1643
|
return FALLBACK_SIGNATURE;
|
|
1635
1644
|
}
|
|
1636
1645
|
|
|
1637
|
-
export {
|
|
1646
|
+
export { getScriptAppTypes, SCRIPT_SDK_TYPES, scriptSdkTypesWithGeneratedApis, SCRIPT_STDLIB_MODULE_TYPES, scriptStdlibTypesWithGeneratedApis, typecheckWithAmbient, typecheckScript, agentFsProvisionSeeder, inviteEmailToSharedOrg, ensureAgentFsCredentialsForAgent, extractArgsJsonSchema, extractScriptSignature };
|