@desplega.ai/agent-swarm 1.173.0 → 2.1.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 +1 -1
- package/dist/{acp-adapter-ccm9xrep.js → acp-adapter-kr4abrsk.js} +17 -16
- package/dist/{actions-sgeyv08k.js → actions-eh4g6w2r.js} +39 -34
- package/dist/{amp-adapter-gpxp3kc9.js → amp-adapter-7h7wdt8q.js} +8 -7
- package/dist/{app-km9qnv2f.js → app-7k8s9w5p.js} +18 -14
- package/dist/{assistant-5r8tcvvd.js → assistant-wswt2y7p.js} +40 -35
- package/dist/{boot-reembed-16rv9843.js → boot-reembed-9apm9qw6.js} +10 -9
- package/dist/{boot-reembed-swwzdgd7.js → boot-reembed-whzbdthj.js} +10 -9
- package/dist/{boot-scrub-sweep-zkr6vkqb.js → boot-scrub-sweep-ndzmvmgt.js} +11 -10
- package/dist/{boot-seeds-d8sp49t2.js → boot-seeds-e9sta0yt.js} +16 -13
- package/dist/{claude-adapter-yzzzh8jp.js → claude-adapter-4mqd3r6r.js} +19 -18
- package/dist/{claude-managed-adapter-xgxhqrt2.js → claude-managed-adapter-9wswb52m.js} +7 -5
- package/dist/{claude-managed-setup-bnmjarjc.js → claude-managed-setup-tpe1effx.js} +6 -4
- package/dist/{claude-sdk-session-4whxere4.js → claude-sdk-session-q49ghmh9.js} +12402 -11850
- package/dist/{cli-ne7smj1b.js → cli-01xvj1rq.js} +10 -10
- package/dist/{cli-nwrdx840.js → cli-035vekcw.js} +3 -3
- package/dist/{cli-9xf7fdtp.js → cli-0pd8hzhc.js} +29 -6
- package/dist/{cli-tmhsxhb8.js → cli-0veb92a3.js} +28 -6
- package/dist/{cli-c3rk1v0x.js → cli-10jesr25.js} +3 -3
- package/dist/{cli-6thk4jz3.js → cli-1y7yywmj.js} +6 -6
- package/dist/{cli-6r2f7edk.js → cli-20krdhz5.js} +47 -19
- package/dist/{cli-rfs4vddv.js → cli-29rja109.js} +39 -20
- package/dist/cli-2m1ktfzz.js +17795 -0
- package/dist/{cli-na2pxe4f.js → cli-2pwa0q4d.js} +15 -4
- package/dist/{cli-7a93cv8c.js → cli-4mengw46.js} +441 -43
- package/dist/{cli-94b48jhk.js → cli-5twdke5x.js} +16 -14
- package/dist/{cli-7a0sde2x.js → cli-6cagzc96.js} +9 -0
- package/dist/cli-6cvfxs8r.js +47 -0
- package/dist/{cli-w1apjecb.js → cli-711vwbxn.js} +2 -2
- package/dist/{cli-r4fqfpwf.js → cli-78vv7446.js} +50 -27
- package/dist/{cli-srqq3gc5.js → cli-7n6s5man.js} +5 -5
- package/dist/{cli-m89t9jdf.js → cli-7x0g4sn1.js} +15416 -16024
- package/dist/{cli-2bw3w47j.js → cli-8wwxw8a3.js} +1 -1
- package/dist/{cli-yatxqynm.js → cli-9ha6hs2d.js} +1 -290
- package/dist/{cli-ywm1azg9.js → cli-9jzdj90z.js} +8 -4
- package/dist/cli-9traj3dn.js +638 -0
- package/dist/{cli-smcrrmhy.js → cli-agzebbd5.js} +9 -9
- package/dist/{cli-c5km5znr.js → cli-c8r3kzzb.js} +1 -1
- package/dist/cli-cvv9k0hh.js +10143 -0
- package/dist/{cli-anzdk0z4.js → cli-d9286m9h.js} +2 -2
- package/dist/cli-e3g5mbkz.js +776 -0
- package/dist/cli-f527ce74.js +781 -0
- package/dist/{cli-gmdajfw5.js → cli-gxzkg1de.js} +5020 -1729
- package/dist/{cli-451ks6aw.js → cli-h1arqn31.js} +1 -1
- package/dist/cli-hjwmhcg1.js +10622 -0
- package/dist/{cli-jpc4r224.js → cli-hqr88ew6.js} +19 -3
- package/dist/{cli-h7k0xtry.js → cli-hvqbtna4.js} +4 -1256
- package/dist/{cli-cd0hv9nh.js → cli-j67mh2vg.js} +2 -2
- package/dist/cli-jta2eyzc.js +619 -0
- package/dist/{cli-wd0hz6ah.js → cli-kbrt8gqa.js} +9 -91
- package/dist/cli-kceah1eh.js +92 -0
- package/dist/{cli-d603qf86.js → cli-ksphgh48.js} +10 -8
- package/dist/{cli-3nxdmjrc.js → cli-mgz4nbgg.js} +4 -4
- package/dist/{cli-saqyage0.js → cli-mz5as5ha.js} +179 -27
- package/dist/cli-n2wq4j7m.js +6985 -0
- package/dist/{cli-ppy4nnnh.js → cli-n8ndw8j7.js} +2 -2
- package/dist/{cli-1w0vj3gw.js → cli-naqzr17j.js} +7 -7
- package/dist/{cli-0a7mm3zp.js → cli-nm1p8jfr.js} +25 -21
- package/dist/{cli-wrh08zjd.js → cli-p3zbc1rw.js} +5 -18
- package/dist/{cli-hsem16hb.js → cli-pe05f8yk.js} +29 -6
- package/dist/{cli-5wpw4rab.js → cli-qmzsbkvy.js} +5 -5
- package/dist/{cli-bv2etw2y.js → cli-qnm4e9e4.js} +99 -590
- package/dist/{cli-1x7da0de.js → cli-qqy4q48b.js} +8 -8
- package/dist/{cli-r44t9wqc.js → cli-r106725k.js} +2 -2
- package/dist/{cli-5er5gjbm.js → cli-r35rw5de.js} +15 -15
- package/dist/{cli-v3zhnxsb.js → cli-r610p9bs.js} +2 -2
- package/dist/{cli-7jykv7ef.js → cli-rc6pf5kv.js} +1 -1
- package/dist/{cli-x119kdba.js → cli-rdxm77k3.js} +1 -1
- package/dist/cli-rhs9pz33.js +294 -0
- package/dist/{cli-0p3enk35.js → cli-s69nfyeh.js} +9 -1
- package/dist/{cli-0kxf81jj.js → cli-sawv63e8.js} +2 -2
- package/dist/{cli-e3pmyt39.js → cli-sg19gbf0.js} +1 -1
- package/dist/{cli-d161g69q.js → cli-shk7r5cs.js} +57 -6
- package/dist/{cli-7pz3b7x5.js → cli-sksetb2q.js} +36 -1
- package/dist/{cli-014vns2y.js → cli-stfs0k5s.js} +208 -525
- package/dist/{cli-db3m6zdt.js → cli-t02z59f2.js} +1 -1
- package/dist/{cli-b07hr3bt.js → cli-txqb9s38.js} +2 -2
- package/dist/{cli-s8z6x4b4.js → cli-v7g551te.js} +225 -113
- package/dist/{cli-rfz2ve55.js → cli-vgqzp4em.js} +3341 -955
- package/dist/{cli-7avy4v8w.js → cli-w1q7h2r2.js} +5 -3
- package/dist/{cli-rcp5aqdw.js → cli-w7m81tb7.js} +1 -1
- package/dist/cli-wfnemr1t.js +86 -0
- package/dist/cli-wmgrkscj.js +23254 -0
- package/dist/{cli-qm1448f9.js → cli-wms6x9db.js} +8 -8
- package/dist/{cli-tadfgd0t.js → cli-x1r545x8.js} +33 -4
- package/dist/{cli-xc7p7s3g.js → cli-xczsgshn.js} +6 -6
- package/dist/{cli-fmhj1ehj.js → cli-y3167wt1.js} +882 -271
- package/dist/{cli-r0byd61h.js → cli-yjmqpxt3.js} +17 -16
- package/dist/{cli-81r1wjyv.js → cli-z780ec7c.js} +1 -1
- package/dist/{cli-phcqp1b9.js → cli-zm9t2vde.js} +2 -2
- package/dist/cli.js +34 -49
- package/dist/{codex-adapter-r3dn4fp5.js → codex-adapter-4z16v9n0.js} +15 -14
- package/dist/{codex-login-841kv5fk.js → codex-login-pkepy2j1.js} +3 -2
- package/dist/{codex-session-runner-fwt793h4.js → codex-session-runner-rvms9y2x.js} +15 -14
- package/dist/{commands-z8fq9qna.js → commands-2a9rtyat.js} +11 -10
- package/dist/{controller-hq5ggpcp.js → controller-3k3madbn.js} +5 -4
- package/dist/{controllers-connect-3mf2btyj.js → controllers-connect-v9yn8zb9.js} +42 -37
- package/dist/{cursor-adapter-q8pgv5qa.js → cursor-adapter-98gbhyzn.js} +7 -6
- package/dist/{db-qfpq4bt7.js → db-eywwsnjw.js} +30 -9
- package/dist/{db-yyhqqrbf.js → db-ncypk9np.js} +12 -11
- package/dist/{devin-adapter-xgtj680j.js → devin-adapter-zeq8b9gz.js} +3 -2
- package/dist/{dispatcher-x0x7qfcq.js → dispatcher-w94kc575.js} +38 -33
- package/dist/{docker-f503k9p0.js → docker-b1e4cqab.js} +3 -2
- package/dist/{dsh-adapter-34etvb5m.js → dsh-adapter-47ztej36.js} +7 -6
- package/dist/{e2b-66xra4az.js → e2b-bbt8ey45.js} +4 -3
- package/dist/{e2b-xwhyj8cw.js → e2b-dp804sen.js} +4 -3
- package/dist/{event-bus-vjtv82gm.js → event-bus-j2jdg3qb.js} +3 -2
- package/dist/{external-channel-h1fjecwe.js → external-channel-zrkg8ar9.js} +11 -10
- package/dist/{google-generative-ai-szdxbpqg.js → google-generative-ai-g8db7x0f.js} +4 -2
- package/dist/{google-vertex-qzw3p36d.js → google-vertex-r2692q0r.js} +4 -2
- package/dist/{grok-adapter-e7mr287e.js → grok-adapter-s9ncp9vy.js} +18 -17
- package/dist/{handlers-znb9n7d4.js → handlers-kqftvjgw.js} +41 -36
- package/dist/{heartbeat-bm4qkn8d.js → heartbeat-9q96p8v9.js} +43 -38
- package/dist/{hook-254r4mza.js → hook-56qe10dp.js} +11 -23
- package/dist/{hook-xaa3q80s.js → hook-yy6rw42k.js} +12 -11
- package/dist/{http-3dgrgp8y.js → http-r2dnb8f8.js} +2411 -275
- package/dist/{index-fx3jqq1e.js → index-3gtmkhc6.js} +38 -33
- package/dist/{index-bdsqa799.js → index-3k5hkz7r.js} +43 -38
- package/dist/index-52j1aja4.js +3465 -0
- package/dist/{index-g2byveez.js → index-5e101240.js} +38 -33
- package/dist/{index-2ybk7khy.js → index-5wyfjc2c.js} +845 -683
- package/dist/index-9gw58n4k.js +193 -0
- package/dist/index-9j87mcm8.js +56305 -0
- package/dist/index-bsmcresk.js +79424 -0
- package/dist/index-mh85qhec.js +475 -0
- package/dist/{index-jd7sejm2.js → index-vxvhxxbn.js} +10 -9
- package/dist/index-we27kd31.js +12810 -0
- package/dist/{keepalive-6ywhpja1.js → keepalive-psj6j54c.js} +12 -11
- package/dist/{lead-cw45n21s.js → lead-hajz4688.js} +61 -56
- package/dist/{maintenance-ss1a1ge9.js → maintenance-ps02sb5m.js} +10 -9
- package/dist/{node-fkajaq96.js → node-mwb5r697.js} +2 -1
- package/dist/{oauth-refresh-sweep-3c6f8vyy.js → oauth-refresh-sweep-0284h93b.js} +11 -10
- package/dist/{onboard-8hzdhc1k.js → onboard-rbf6bg01.js} +11 -3
- package/dist/{opencode-adapter-qbchbcfz.js → opencode-adapter-13dcatgq.js} +18 -13
- package/dist/{otel-impl-e6mnvc4v.js → otel-impl-zvqcbhp7.js} +242 -868
- package/dist/{pi-mono-adapter-3c9g9snh.js → pi-mono-adapter-xxy47q4v.js} +244 -106
- package/dist/{pricing-refresh-gedkjdw0.js → pricing-refresh-kefx9v3t.js} +12 -11
- package/dist/{rbac-roles-dt4vh1yy.js → rbac-roles-3m36rxm2.js} +11 -10
- package/dist/{rbac-roles-eszdg6pm.js → rbac-roles-z76xv0hq.js} +12 -11
- package/dist/{render-v2-907cy6sa.js → render-v2-wz73bs25.js} +18 -14
- package/dist/{resume-42stcaz0.js → resume-k4wzge8w.js} +25 -21
- package/dist/{runtime-qfry88v2.js → runtime-sa2vr16g.js} +2 -2
- package/dist/{setup-adbc1c10.js → setup-2fp2pypp.js} +2 -2
- package/dist/{virtual-modules-rtmt494q.js → virtual-modules-9gkxqrap.js} +6 -5
- package/dist/{work-objects-wpj8ck95.js → work-objects-6k0ywz3m.js} +41 -36
- package/dist/{worker-bzdra9rf.js → worker-5v3rxsdh.js} +61 -56
- package/dist/{x-qfmygqqv.js → x-4mtdeym1.js} +3 -2
- package/openapi.json +1279 -329
- package/package.json +15 -15
- package/src/agentmail/handlers.ts +21 -11
- package/src/apps/definition.ts +16 -0
- package/src/azure-devops/api.ts +52 -2
- package/src/azure-devops/boards-sync.ts +50 -20
- package/src/azure-devops/index.ts +1 -0
- package/src/azure-devops/outbound.ts +95 -0
- package/src/be/boot-seeds.ts +11 -0
- package/src/be/config-refs.ts +60 -0
- package/src/be/db/model-profiles.ts +315 -0
- package/src/be/db/page-versions.ts +15 -0
- package/src/be/db/runtime.ts +35 -8
- package/src/be/db/skill-name-resolution.ts +36 -0
- package/src/be/db/tasks/read.ts +237 -0
- package/src/be/db/tasks/write.ts +7 -0
- package/src/be/db.ts +87 -36
- package/src/be/migrations/215_swarm_config_export_to_env.sql +34 -0
- package/src/be/migrations/216_task_resolved_effort.sql +5 -0
- package/src/be/migrations/217_chat_sdk_state.sql +104 -0
- package/src/be/migrations/219_relabel_pi_context_compactions.sql +22 -0
- package/src/be/migrations/220_model_profiles.sql +137 -0
- package/src/be/model-catalog-store.ts +5 -1
- package/src/be/model-tier-resolution.ts +155 -10
- package/src/be/model-validation.ts +12 -2
- package/src/be/models-catalog.ts +26 -1
- package/src/be/modelsdev-cache.json +198 -63
- package/src/be/modelsdev-cache.ts +9 -1
- package/src/be/script-credential-broker.ts +39 -2
- package/src/be/scripts/run-saved.ts +1 -0
- package/src/be/scripts/typecheck.ts +22 -8
- package/src/be/secret-registry.ts +6 -2
- package/src/be/seed/runner.ts +13 -1
- package/src/be/seed/state-db.ts +5 -0
- package/src/be/seed/types.ts +6 -0
- package/src/be/seed-model-profiles.ts +41 -0
- package/src/be/seed-pricing.ts +19 -2
- package/src/be/seed-scripts/catalog/heartbeat-jev-gate.ts +368 -0
- package/src/be/seed-scripts/catalog/ops-catalog-audit.inline.ts +1 -1
- package/src/be/seed-scripts/catalog/ops-catalog-audit.ts +1 -1
- package/src/be/seed-scripts/index.ts +9 -0
- package/src/be/seed-skills/bundled-files.generated.json +0 -18
- package/src/be/seed-skills/index.ts +104 -3
- package/src/be/swarm-config-guard.ts +53 -0
- package/src/cli.tsx +0 -16
- package/src/commands/onboard/non-interactive.ts +4 -2
- package/src/commands/provider-credentials.ts +52 -6
- package/src/commands/runner.ts +193 -71
- package/src/e2b/env.ts +5 -0
- package/src/extensions/catalog.generated.json +17 -0
- package/src/extensions/contract-types.generated.ts +1 -1
- package/src/extensions/contract.ts +45 -0
- package/src/extensions/dispatcher.ts +7 -0
- package/src/extensions/loader.ts +10 -5
- package/src/extensions/post-bridge.ts +40 -0
- package/src/github/handlers.ts +11 -4
- package/src/heartbeat/heartbeat.ts +2 -1
- package/src/heartbeat/templates.ts +8 -5
- package/src/hooks/hook.ts +0 -26
- package/src/http/agents.ts +49 -2
- package/src/http/all-routes.ts +1 -1
- package/src/http/apps.ts +30 -3
- package/src/http/config.ts +62 -19
- package/src/http/core.ts +8 -0
- package/src/http/index.ts +25 -3
- package/src/http/integrations.ts +88 -1
- package/src/http/mcp.ts +15 -5
- package/src/http/model-profiles.ts +303 -0
- package/src/http/page-proxy.ts +2 -4
- package/src/http/pages-public.ts +13 -7
- package/src/http/pages.ts +3 -13
- package/src/http/poll.ts +42 -71
- package/src/http/requested-by.ts +54 -0
- package/src/http/script-runs.ts +1 -1
- package/src/http/scripts.ts +26 -2
- package/src/http/stats.ts +1 -30
- package/src/http/tasks.ts +79 -5
- package/src/http/utils.ts +14 -0
- package/src/http/webhooks.ts +160 -3
- package/src/http/x.ts +1 -0
- package/src/integrations/chat-sdk/adapters.ts +129 -0
- package/src/integrations/chat-sdk/attachments.ts +232 -0
- package/src/integrations/chat-sdk/background.ts +36 -0
- package/src/integrations/chat-sdk/commands.ts +194 -0
- package/src/integrations/chat-sdk/config.ts +198 -0
- package/src/integrations/chat-sdk/discord-api.ts +63 -0
- package/src/integrations/chat-sdk/discord-gateway.ts +185 -0
- package/src/integrations/chat-sdk/handlers.ts +28 -0
- package/src/integrations/chat-sdk/inbound.ts +426 -0
- package/src/integrations/chat-sdk/limits.ts +48 -0
- package/src/integrations/chat-sdk/logger.ts +81 -0
- package/src/integrations/chat-sdk/outbound.ts +123 -0
- package/src/integrations/chat-sdk/relay.ts +172 -0
- package/src/integrations/chat-sdk/router.ts +169 -0
- package/src/integrations/chat-sdk/runtime.ts +351 -0
- package/src/integrations/chat-sdk/schema.ts +245 -0
- package/src/integrations/chat-sdk/state.ts +243 -0
- package/src/integrations/chat-sdk/status.ts +244 -0
- package/src/integrations/chat-sdk/steering.ts +58 -0
- package/src/integrations/chat-sdk/teams-origin.ts +77 -0
- package/src/integrations/chat-sdk/telegram-api.ts +56 -0
- package/src/integrations/chat-sdk/templates.ts +16 -0
- package/src/integrations/chat-sdk/test-hooks.ts +37 -0
- package/src/integrations/chat-sdk/thread-buffer.ts +100 -0
- package/src/integrations/chat-sdk/typing.ts +65 -0
- package/src/{artifact-sdk → pages}/feedback-overlay.ts +65 -6
- package/src/pages/version.ts +4 -5
- package/src/prompts/base-prompt.ts +111 -45
- package/src/providers/acp-target-catalog.ts +6 -0
- package/src/providers/acp-targets.ts +56 -3
- package/src/providers/amp-adapter.ts +1 -1
- package/src/providers/claude-adapter.ts +1 -1
- package/src/providers/claude-flag-settings.ts +17 -5
- package/src/providers/claude-managed-adapter.ts +1 -1
- package/src/providers/claude-session-events.ts +6 -1
- package/src/providers/dsh-adapter.ts +1 -1
- package/src/providers/opencode-adapter.ts +243 -26
- package/src/providers/opencode-swarm-plugin.ts +31 -0
- package/src/providers/pi-mono-adapter.ts +398 -153
- package/src/providers/pi-mono-extension.ts +17 -3
- package/src/providers/pricing-sources.md +33 -2
- package/src/providers/reasoning-effort.ts +37 -0
- package/src/providers/types.ts +6 -2
- package/src/rbac/legacy-policy.ts +16 -2
- package/src/rbac/permissions.ts +26 -0
- package/src/scheduler/deferred-task-waits.ts +18 -5
- package/src/scheduler/scheduler.ts +11 -3
- package/src/scripts-runtime/executors/quickjs-prelude.ts +75 -6
- package/src/scripts-runtime/executors/quickjs-runner.ts +85 -8
- package/src/scripts-runtime/executors/quickjs-web-shims.ts +1041 -0
- package/src/scripts-runtime/extract-args-schema.ts +9 -8
- package/src/scripts-runtime/loader.ts +19 -7
- package/src/scripts-runtime/quickjs-compat.ts +464 -0
- package/src/scripts-runtime/sdk-allowlist.ts +12 -6
- package/src/scripts-runtime/swarm-sdk.ts +0 -11
- package/src/scripts-runtime/types/stdlib.d.ts +39 -15
- package/src/scripts-runtime/types/swarm-extension.d.ts +66 -1
- package/src/scripts-runtime/types/swarm-sdk.d.ts +39 -15
- package/src/server.ts +62 -19
- package/src/slack/blocks.ts +4 -2
- package/src/slack/event-dedup.ts +1 -1
- package/src/slack/reaction-shortcode.ts +14 -0
- package/src/slack/render-v2.ts +12 -7
- package/src/slack/responses.ts +5 -4
- package/src/slack/thread-buffer.ts +41 -22
- package/src/tasks/additive-buffer.ts +4 -2
- package/src/tasks/context-key.ts +60 -1
- package/src/tasks/model-pin.ts +67 -0
- package/src/tasks/worker-follow-up.ts +15 -33
- package/src/tests/acp-adapter.test.ts +42 -0
- package/src/tests/agentmail-filters.test.ts +47 -0
- package/src/tests/api-drain-worker-e2e.test.ts +1 -6
- package/src/tests/apps-spike2.test.ts +35 -0
- package/src/tests/azure-devops-outbound.test.ts +420 -0
- package/src/tests/base-prompt.test.ts +58 -54
- package/src/tests/chat-sdk-commands.test.ts +191 -0
- package/src/tests/chat-sdk-config.test.ts +334 -0
- package/src/tests/chat-sdk-discord-api.test.ts +68 -0
- package/src/tests/chat-sdk-discord-gateway.test.ts +252 -0
- package/src/tests/chat-sdk-discord-webhook.test.ts +126 -0
- package/src/tests/chat-sdk-fields-sync.test.ts +50 -0
- package/src/tests/chat-sdk-harness.ts +146 -0
- package/src/tests/chat-sdk-inbound.test.ts +363 -0
- package/src/tests/chat-sdk-relay.test.ts +470 -0
- package/src/tests/chat-sdk-reload.test.ts +128 -0
- package/src/tests/chat-sdk-shutdown.test.ts +220 -0
- package/src/tests/chat-sdk-slack.test.ts +268 -0
- package/src/tests/chat-sdk-state.test.ts +163 -0
- package/src/tests/chat-sdk-status-route.test.ts +382 -0
- package/src/tests/chat-sdk-teams.test.ts +277 -0
- package/src/tests/chat-sdk-tools.test.ts +520 -0
- package/src/tests/chat-sdk-typing.test.ts +120 -0
- package/src/tests/chat-sdk-webhook-telegram.test.ts +200 -0
- package/src/tests/claude-adapter-binary.test.ts +9 -4
- package/src/tests/claude-flag-settings.test.ts +11 -3
- package/src/tests/claude-managed-adapter.test.ts +1 -1
- package/src/tests/claude-sdk-lifecycle.test.ts +9 -3
- package/src/tests/claude-thinking-tokens.test.ts +57 -0
- package/src/tests/claude-worker-parity.test.ts +2 -7
- package/src/tests/config-env-export-chat-sdk.test.ts +11 -0
- package/src/tests/config-refs.test.ts +66 -0
- package/src/tests/context-key.test.ts +19 -0
- package/src/tests/cors-allowlist.test.ts +25 -0
- package/src/tests/create-page-tool.test.ts +18 -0
- package/src/tests/credential-check.test.ts +139 -0
- package/src/tests/credentials.test.ts +21 -0
- package/src/tests/db-runtime.test.ts +61 -0
- package/src/tests/db-task-read-contract.test.ts +22 -0
- package/src/tests/db-task-write-contract.test.ts +11 -0
- package/src/tests/deferred-task-wake.test.ts +78 -1
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/dsh-adapter.test.ts +1 -1
- package/src/tests/enabled-capabilities.test.ts +20 -0
- package/src/tests/entrypoint-api-readiness.test.ts +14 -8
- package/src/tests/entrypoint-config-env-export.test.ts +5 -2
- package/src/tests/entrypoint-export-to-env.test.ts +78 -0
- package/src/tests/env-flag.test.ts +1 -0
- package/src/tests/explicit-model-validation.test.ts +105 -1
- package/src/tests/extensions-catalog.test.ts +1 -0
- package/src/tests/extensions-example-comms-adherence-gate.test.ts +413 -0
- package/src/tests/extensions-example-route-chat-channel.test.ts +154 -0
- package/src/tests/extensions-loader.test.ts +15 -0
- package/src/tests/extensions-post-bridge.test.ts +51 -0
- package/src/tests/fetch-resolved-env.test.ts +128 -0
- package/src/tests/fixtures/chat-sdk/telegram-private-text.json +10 -0
- package/src/tests/fixtures/extensions/route-chat-channel-to-agent/hooks.ts +27 -0
- package/src/tests/fixtures/extensions/route-chat-channel-to-agent/manifest.json +9 -0
- package/src/tests/fixtures/openai-compatible-registry-extension.child.ts +146 -0
- package/src/tests/fixtures/runner-legacy-resume-prompt.ts +122 -0
- package/src/tests/github-handlers.test.ts +35 -0
- package/src/tests/harness-provider-resolution.test.ts +12 -0
- package/src/tests/heartbeat-checklist.test.ts +3 -2
- package/src/tests/heartbeat-jev-gate-credentials.test.ts +168 -0
- package/src/tests/heartbeat-jev-gate.test.ts +385 -0
- package/src/tests/hook-runtime-close.test.ts +0 -2
- package/src/tests/http-api-integration.test.ts +0 -25
- package/src/tests/migration-046-budgets.test.ts +17 -16
- package/src/tests/migration-217-chat-sdk-state.test.ts +113 -0
- package/src/tests/model-profile-backcompat.test.ts +327 -0
- package/src/tests/model-profile-providers.test.ts +302 -0
- package/src/tests/model-profile-runtime-secrets.test.ts +223 -0
- package/src/tests/model-profiles-api.test.ts +614 -0
- package/src/tests/model-tier-resolution.test.ts +93 -0
- package/src/tests/models-catalog.test.ts +42 -1
- package/src/tests/openai-compatible-providers.test.ts +134 -0
- package/src/tests/openai-compatible-registry-extension.test.ts +42 -0
- package/src/tests/opencode-adapter.test.ts +216 -2
- package/src/tests/opencode-helmcode-sdk.test.ts +201 -0
- package/src/tests/opencode-shell-env.test.ts +145 -0
- package/src/tests/openrouter-base-url.test.ts +101 -151
- package/src/tests/page-proxy.test.ts +1 -1
- package/src/tests/pages-browser-sdk.test.ts +76 -0
- package/src/tests/pages-feedback-keys.test.ts +121 -0
- package/src/tests/pages-feedback.test.ts +4 -1
- package/src/tests/paused-tasks-requested-by.test.ts +102 -0
- package/src/tests/pi-context-compaction.test.ts +193 -0
- package/src/tests/pi-custom-provider-fake-server.test.ts +442 -0
- package/src/tests/pi-mono-adapter.test.ts +385 -5
- package/src/tests/pi-shell-env.test.ts +170 -0
- package/src/tests/profile-claim.test.ts +269 -0
- package/src/tests/prompt-template-remaining.test.ts +35 -0
- package/src/tests/quickjs-compat.test.ts +213 -0
- package/src/tests/rbac-engine.test.ts +32 -3
- package/src/tests/runner-exit-after-tasks.test.ts +0 -4
- package/src/tests/runner-legacy-resume-prompt.test.ts +64 -0
- package/src/tests/script-connections.test.ts +6 -0
- package/src/tests/script-executor-conformance.test.ts +252 -1
- package/src/tests/script-executor-quickjs.test.ts +96 -0
- package/src/tests/script-runs-http.test.ts +89 -0
- package/src/tests/scripts-http.test.ts +217 -1
- package/src/tests/scripts-only-gating.test.ts +2 -3
- package/src/tests/scripts-runtime.test.ts +58 -40
- package/src/tests/secret-scrubber.test.ts +96 -0
- package/src/tests/seed-model-profiles.test.ts +174 -0
- package/src/tests/seed-scripts.test.ts +2 -2
- package/src/tests/seed-skills-bundled-files.test.ts +45 -53
- package/src/tests/seed-skills-retire.test.ts +182 -0
- package/src/tests/send-task-requester-gate.test.ts +58 -0
- package/src/tests/session-cost-recompute-unit.test.ts +46 -0
- package/src/tests/skill-get-name-resolution.test.ts +137 -0
- package/src/tests/skill-invocations.test.ts +4 -2
- package/src/tests/slack-blocks.test.ts +36 -0
- package/src/tests/slack-inline-output.test.ts +14 -0
- package/src/tests/slack-reaction-config.test.ts +20 -0
- package/src/tests/slack-render-v2.test.ts +37 -0
- package/src/tests/slack-thread-buffer.test.ts +98 -1
- package/src/tests/sonnet-5-5-registry.test.ts +9 -1
- package/src/tests/swarm-config-export-to-env.test.ts +267 -0
- package/src/tests/swarm-config-reserved-keys.test.ts +16 -0
- package/src/tests/swarm-diff.test.ts +1 -1
- package/src/tests/task-model-effort-rerun.test.ts +164 -0
- package/src/tests/task-session-prompts.test.ts +132 -0
- package/src/tests/task-tool-manifest.test.ts +14 -0
- package/src/tests/task-tools-ctx.test.ts +2 -0
- package/src/tests/tool-annotations.test.ts +6 -6
- package/src/tests/ui-logs-parser.test.ts +43 -0
- package/src/tests/used-by-route.test.ts +6 -0
- package/src/tests/vercel-ai-gateway.test.ts +149 -0
- package/src/tests/workflow-llm.test.ts +61 -0
- package/src/tests/workflow-swarm-script.test.ts +38 -0
- package/src/tests/workflow-wait-filter.test.ts +5 -3
- package/src/tools/chat-access.ts +41 -0
- package/src/tools/chat-open-dm.ts +59 -0
- package/src/tools/chat-post.ts +74 -0
- package/src/tools/chat-read-thread.ts +100 -0
- package/src/tools/chat-reply.ts +75 -0
- package/src/tools/create-page.ts +3 -13
- package/src/tools/model-catalog/index.ts +2 -1
- package/src/tools/model-profiles/list-model-profiles.ts +54 -0
- package/src/tools/register-chat-channel.ts +139 -0
- package/src/tools/request-human-input.ts +11 -3
- package/src/tools/script-apis.ts +5 -1
- package/src/tools/script-upsert.ts +4 -1
- package/src/tools/send-task.ts +48 -1
- package/src/tools/skills/skill-get.ts +17 -9
- package/src/tools/swarm-config/get-config.ts +2 -1
- package/src/tools/swarm-config/list-config.ts +2 -1
- package/src/tools/swarm-config/set-config.ts +16 -3
- package/src/tools/system-one-decide.ts +104 -0
- package/src/tools/task-action.ts +22 -1
- package/src/tools/tool-config.ts +14 -6
- package/src/types.ts +48 -3
- package/src/utils/config-env-export.ts +74 -0
- package/src/utils/credentials.test.ts +92 -0
- package/src/utils/credentials.ts +52 -4
- package/src/utils/harness-provider.ts +15 -6
- package/src/utils/runtime-model-catalog.ts +11 -1
- package/src/utils/secret-scrubber.ts +86 -10
- package/src/utils/task-tool-manifest.ts +19 -2
- package/src/utils/vcs-repo-match.ts +29 -0
- package/src/workflows/executors/raw-llm.ts +8 -3
- package/src/workflows/executors/swarm-script.ts +1 -0
- package/src/workflows/executors/system-one-decision.ts +21 -11
- package/src/workflows/executors/workflow-llm.ts +22 -0
- package/src/workflows/index.ts +21 -12
- package/templates/extensions/README.md +1 -0
- package/templates/extensions/comms-adherence-gate/README.md +88 -0
- package/templates/extensions/comms-adherence-gate/hooks.ts +489 -0
- package/templates/extensions/comms-adherence-gate/manifest.json +8 -0
- package/templates/skills/agent-browser/SKILL.md +1 -1
- package/templates/skills/agent-browser/content.md +1 -1
- package/templates/skills/apps/SKILL.md +8 -1
- package/templates/skills/apps/content.md +8 -1
- package/templates/skills/chat-sdk/config.json +14 -0
- package/templates/skills/chat-sdk/content.md +84 -0
- package/templates/skills/composio-gmail/content.md +7 -0
- package/templates/skills/composio-google-docs/content.md +1 -1
- package/templates/skills/email-domain-health/config.json +14 -0
- package/templates/skills/email-domain-health/content.md +131 -0
- package/templates/skills/kv-storage/content.md +2 -2
- package/templates/skills/pages/content.md +8 -10
- package/templates/skills/swarm-extensions/content.md +2 -0
- package/templates/skills/swarm-scripts/SKILL.md +4 -2
- package/templates/skills/swarm-scripts/config.json +1 -1
- package/templates/skills/swarm-scripts/content.md +4 -2
- package/templates/skills/workflow-iterate/content.md +38 -0
- package/dist/artifact-eczsknc3.js +0 -3843
- package/dist/cli-42qhyvwx.js +0 -33
- package/dist/cli-bd957dgb.js +0 -153
- package/dist/cli-q51yprfq.js +0 -1104
- package/dist/cli-t1ze64h3.js +0 -811
- package/dist/cli-tcc4wd5d.js +0 -56471
- package/dist/index-9ch1n761.js +0 -1102
- package/src/artifact-sdk/index.ts +0 -2
- package/src/artifact-sdk/localtunnel.d.ts +0 -20
- package/src/artifact-sdk/port.ts +0 -12
- package/src/artifact-sdk/server.ts +0 -183
- package/src/artifact-sdk/tunnel.ts +0 -19
- package/src/commands/artifact.ts +0 -249
- package/src/http/ecosystem.ts +0 -77
- package/src/tests/artifact-commands.test.ts +0 -92
- package/src/tests/artifact-sdk.test.ts +0 -793
- package/src/tests/register-service-security.test.ts +0 -194
- package/src/tools/list-services.ts +0 -107
- package/src/tools/register-service.ts +0 -177
- package/src/tools/unregister-service.ts +0 -73
- package/src/tools/update-service-status.ts +0 -96
- package/templates/skills/artifacts/config.json +0 -14
- package/templates/skills/artifacts/content.md +0 -344
- package/templates/skills/artifacts/files/examples/approval-flow.ts +0 -34
- package/templates/skills/artifacts/files/examples/hono-dashboard.ts +0 -31
- package/templates/skills/artifacts/files/examples/multi-artifact.ts +0 -20
- package/templates/skills/artifacts/files/examples/static-report.sh +0 -17
- /package/src/{artifact-sdk → pages}/browser-sdk.ts +0 -0
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
generateRandomCodeVerifier,
|
|
13
13
|
generateRandomState,
|
|
14
14
|
oauthAppRowToProviderConfig
|
|
15
|
-
} from "./cli-
|
|
15
|
+
} from "./cli-711vwbxn.js";
|
|
16
16
|
import {
|
|
17
17
|
CredentialBroker,
|
|
18
18
|
DEFAULT_CREDENTIAL_BINDINGS,
|
|
@@ -36,6 +36,9 @@ import {
|
|
|
36
36
|
init_oauth,
|
|
37
37
|
init_quickjs_pool_config,
|
|
38
38
|
init_secret_registry,
|
|
39
|
+
init_swarm_config_guard,
|
|
40
|
+
isApiOnlyConfigKey,
|
|
41
|
+
isInternalConfigKey,
|
|
39
42
|
normalizeDateRequired,
|
|
40
43
|
oauthSecretName,
|
|
41
44
|
placeholderForConfigKey,
|
|
@@ -46,11 +49,11 @@ import {
|
|
|
46
49
|
updateAuthorizationTokens,
|
|
47
50
|
upsertAuthorization,
|
|
48
51
|
upsertSwarmConfig
|
|
49
|
-
} from "./cli-
|
|
52
|
+
} from "./cli-y3167wt1.js";
|
|
50
53
|
import {
|
|
51
54
|
defaultAssetKey,
|
|
52
55
|
init_key
|
|
53
|
-
} from "./cli-
|
|
56
|
+
} from "./cli-pe05f8yk.js";
|
|
54
57
|
import {
|
|
55
58
|
init_zod
|
|
56
59
|
} from "./cli-sd0mxa3c.js";
|
|
@@ -73,6 +76,10 @@ import {
|
|
|
73
76
|
init_node_env,
|
|
74
77
|
isDevOrTestNodeEnv
|
|
75
78
|
} from "./cli-p0sg24zp.js";
|
|
79
|
+
import {
|
|
80
|
+
getMcpBaseUrl,
|
|
81
|
+
init_constants
|
|
82
|
+
} from "./cli-gd4favx9.js";
|
|
76
83
|
import {
|
|
77
84
|
init_env_flag,
|
|
78
85
|
isEnvFlagEnabled
|
|
@@ -82,12 +89,13 @@ import {
|
|
|
82
89
|
init_api_key
|
|
83
90
|
} from "./cli-a1b9b32n.js";
|
|
84
91
|
import {
|
|
92
|
+
createValueScrubber,
|
|
85
93
|
init_secret_scrubber,
|
|
86
94
|
refreshSecretScrubberCache,
|
|
87
95
|
registerVolatileSecret,
|
|
88
96
|
scrubObject,
|
|
89
97
|
scrubSecrets
|
|
90
|
-
} from "./cli-
|
|
98
|
+
} from "./cli-shk7r5cs.js";
|
|
91
99
|
import {
|
|
92
100
|
__commonJS,
|
|
93
101
|
__require,
|
|
@@ -175188,6 +175196,7 @@ var require_dist = __commonJS(function(exports) {
|
|
|
175188
175196
|
|
|
175189
175197
|
// src/scripts-runtime/loader.ts
|
|
175190
175198
|
init_api_key();
|
|
175199
|
+
init_constants();
|
|
175191
175200
|
init_secret_scrubber();
|
|
175192
175201
|
|
|
175193
175202
|
// src/scripts-runtime/egress-secrets.ts
|
|
@@ -175784,7 +175793,7 @@ async function buildConfigPayload(input) {
|
|
|
175784
175793
|
apiKey: { value: apiKey, isSecret: true },
|
|
175785
175794
|
agentId: { value: input.agentId, isSecret: false },
|
|
175786
175795
|
mcpBaseUrl: {
|
|
175787
|
-
value: input.mcpBaseUrl ??
|
|
175796
|
+
value: input.mcpBaseUrl ?? getMcpBaseUrl(),
|
|
175788
175797
|
isSecret: false
|
|
175789
175798
|
},
|
|
175790
175799
|
...input.runtimeInstanceId ? { runtimeInstanceId: { value: input.runtimeInstanceId, isSecret: false } } : {}
|
|
@@ -175808,12 +175817,13 @@ async function runScript(input) {
|
|
|
175808
175817
|
error: "executor_error"
|
|
175809
175818
|
};
|
|
175810
175819
|
}
|
|
175820
|
+
const runSecrets = createValueScrubber(Object.entries(input.userConfig ?? {}).filter(([, entry]) => entry.isSecret).map(([key, entry]) => ({ value: entry.value, name: `config:${key}` })));
|
|
175811
175821
|
const imports = validateScriptImports(input.source);
|
|
175812
175822
|
if (!imports.ok) {
|
|
175813
175823
|
return {
|
|
175814
175824
|
result: undefined,
|
|
175815
175825
|
stdout: "",
|
|
175816
|
-
stderr: imports.diagnostic,
|
|
175826
|
+
stderr: scrubSecrets(runSecrets.text(imports.diagnostic)),
|
|
175817
175827
|
truncated: { stdout: false, stderr: false },
|
|
175818
175828
|
durationMs: 0,
|
|
175819
175829
|
exitCode: 1,
|
|
@@ -175844,10 +175854,10 @@ async function runScript(input) {
|
|
|
175844
175854
|
}
|
|
175845
175855
|
return {
|
|
175846
175856
|
...output,
|
|
175847
|
-
result: scrubObject(output.result),
|
|
175848
|
-
stdout: scrubSecrets(output.stdout),
|
|
175849
|
-
stderr: scrubSecrets(output.stderr),
|
|
175850
|
-
...output.runtimeError ? { runtimeError: scrubObject(output.runtimeError) } : {}
|
|
175857
|
+
result: scrubObject(runSecrets.object(output.result)),
|
|
175858
|
+
stdout: scrubSecrets(runSecrets.text(output.stdout)),
|
|
175859
|
+
stderr: scrubSecrets(runSecrets.text(output.stderr)),
|
|
175860
|
+
...output.runtimeError ? { runtimeError: scrubObject(runSecrets.object(output.runtimeError)) } : {}
|
|
175851
175861
|
};
|
|
175852
175862
|
}
|
|
175853
175863
|
|
|
@@ -178361,13 +178371,25 @@ async function resolveOAuthBindingToken(oauthAuthorizationId) {
|
|
|
178361
178371
|
}
|
|
178362
178372
|
|
|
178363
178373
|
// src/be/script-credential-broker.ts
|
|
178374
|
+
init_swarm_config_guard();
|
|
178375
|
+
|
|
178364
178376
|
class RelationalCredentialBindingStore {
|
|
178365
178377
|
listActiveBindings(context) {
|
|
178366
178378
|
return listRelationalCredentialBindings(context);
|
|
178367
178379
|
}
|
|
178368
178380
|
}
|
|
178381
|
+
function toScriptUserConfig(configs) {
|
|
178382
|
+
const exposed = configs.filter((config) => !isApiOnlyConfigKey(config.key) && !isInternalConfigKey(config.key));
|
|
178383
|
+
for (const config of exposed) {
|
|
178384
|
+
if (config.isSecret && config.value) {
|
|
178385
|
+
registerVolatileSecret(config.value, `config:${config.key}`);
|
|
178386
|
+
}
|
|
178387
|
+
}
|
|
178388
|
+
return Object.fromEntries(exposed.map((config) => [config.key, { value: config.value, isSecret: config.isSecret }]));
|
|
178389
|
+
}
|
|
178369
178390
|
async function buildScriptCredentialBindingsWithFailures(input) {
|
|
178370
178391
|
const resolvedConfigs = await getResolvedConfig(input.agentId, input.repoId);
|
|
178392
|
+
const userConfig = toScriptUserConfig(resolvedConfigs);
|
|
178371
178393
|
const configMap = new Map(resolvedConfigs.map((config) => [config.key, config.value]));
|
|
178372
178394
|
const broker = new CredentialBroker(new RelationalCredentialBindingStore, (configKey) => configMap.get(configKey) ?? process.env[configKey], DEFAULT_CREDENTIAL_BINDINGS, (oauthAuthorizationId) => resolveOAuthBindingToken(oauthAuthorizationId));
|
|
178373
178395
|
const { resolved, failed } = await broker.resolveBindingsWithFailures({
|
|
@@ -178377,10 +178399,11 @@ async function buildScriptCredentialBindingsWithFailures(input) {
|
|
|
178377
178399
|
for (const binding of resolved) {
|
|
178378
178400
|
registerVolatileSecret(binding.value, binding.configKey);
|
|
178379
178401
|
}
|
|
178380
|
-
return {
|
|
178381
|
-
|
|
178382
|
-
|
|
178383
|
-
|
|
178402
|
+
return {
|
|
178403
|
+
egressSecrets: resolved,
|
|
178404
|
+
failedBindings: failed,
|
|
178405
|
+
userConfig
|
|
178406
|
+
};
|
|
178384
178407
|
}
|
|
178385
178408
|
|
|
178386
178409
|
// src/be/scripts/run-saved.ts
|
|
@@ -178407,6 +178430,7 @@ async function runSavedScriptAsAgent(args, deps = {}) {
|
|
|
178407
178430
|
agentId: args.agentId,
|
|
178408
178431
|
egressSecrets: credentials.egressSecrets,
|
|
178409
178432
|
failedBindings: credentials.failedBindings,
|
|
178433
|
+
userConfig: credentials.userConfig,
|
|
178410
178434
|
apiConnections: getScriptApiConnectionDescriptors({ agentId: args.agentId }),
|
|
178411
178435
|
mcpConnections: getScriptMcpConnectionDescriptors({ agentId: args.agentId }),
|
|
178412
178436
|
...args.timeoutMs ? { timeoutMs: args.timeoutMs } : {},
|
|
@@ -178525,12 +178549,312 @@ async function extractArgsJsonSchema(source) {
|
|
|
178525
178549
|
}
|
|
178526
178550
|
|
|
178527
178551
|
// src/be/scripts/typecheck.ts
|
|
178528
|
-
var
|
|
178552
|
+
var import_typescript4 = __toESM(require_typescript(), 1);
|
|
178529
178553
|
import { fileURLToPath as fileURLToPath3 } from "node:url";
|
|
178530
178554
|
|
|
178531
178555
|
// src/apps/definition.ts
|
|
178532
178556
|
init_zod();
|
|
178533
178557
|
init_db();
|
|
178558
|
+
|
|
178559
|
+
// src/scripts-runtime/quickjs-compat.ts
|
|
178560
|
+
var import_typescript3 = __toESM(require_typescript(), 1);
|
|
178561
|
+
var UNSUPPORTED_GLOBALS = new Set([
|
|
178562
|
+
"AbortController",
|
|
178563
|
+
"AbortSignal",
|
|
178564
|
+
"Blob",
|
|
178565
|
+
"Buffer",
|
|
178566
|
+
"Event",
|
|
178567
|
+
"EventTarget",
|
|
178568
|
+
"File",
|
|
178569
|
+
"FormData",
|
|
178570
|
+
"Intl",
|
|
178571
|
+
"ReadableStream",
|
|
178572
|
+
"Request",
|
|
178573
|
+
"TransformStream",
|
|
178574
|
+
"WebSocket",
|
|
178575
|
+
"WritableStream",
|
|
178576
|
+
"clearImmediate",
|
|
178577
|
+
"navigator",
|
|
178578
|
+
"performance",
|
|
178579
|
+
"queueMicrotask",
|
|
178580
|
+
"setImmediate",
|
|
178581
|
+
"structuredClone"
|
|
178582
|
+
]);
|
|
178583
|
+
var RESPONSE_BODY_METHODS = new Set(["arrayBuffer", "blob", "formData", "bytes"]);
|
|
178584
|
+
var LOCALE_METHODS = new Set(["toLocaleString", "toLocaleDateString", "toLocaleTimeString"]);
|
|
178585
|
+
var FS_STDLIB = new Set(["glob", "grep"]);
|
|
178586
|
+
var HOST_ONLY_CONFIG = new Set(["apiKey", "runtimeInstanceId"]);
|
|
178587
|
+
var MAX_FINDINGS = 20;
|
|
178588
|
+
var SCRIPT_FILE = "user-script.ts";
|
|
178589
|
+
var MAX_CONST_DEPTH = 4;
|
|
178590
|
+
function isAmbient(node) {
|
|
178591
|
+
for (let current = node;current; current = current.parent) {
|
|
178592
|
+
if (import_typescript3.default.canHaveModifiers(current) && import_typescript3.default.getModifiers(current)?.some((modifier) => modifier.kind === import_typescript3.default.SyntaxKind.DeclareKeyword)) {
|
|
178593
|
+
return true;
|
|
178594
|
+
}
|
|
178595
|
+
}
|
|
178596
|
+
return false;
|
|
178597
|
+
}
|
|
178598
|
+
function createScope(source) {
|
|
178599
|
+
const sourceFile = import_typescript3.default.createSourceFile(SCRIPT_FILE, source, import_typescript3.default.ScriptTarget.Latest, true);
|
|
178600
|
+
const host = {
|
|
178601
|
+
getSourceFile: (name) => name === SCRIPT_FILE ? sourceFile : undefined,
|
|
178602
|
+
getDefaultLibFileName: () => "lib.d.ts",
|
|
178603
|
+
writeFile: () => {},
|
|
178604
|
+
getCurrentDirectory: () => "/",
|
|
178605
|
+
getCanonicalFileName: (name) => name,
|
|
178606
|
+
useCaseSensitiveFileNames: () => true,
|
|
178607
|
+
getNewLine: () => `
|
|
178608
|
+
`,
|
|
178609
|
+
fileExists: (name) => name === SCRIPT_FILE,
|
|
178610
|
+
readFile: () => {
|
|
178611
|
+
return;
|
|
178612
|
+
}
|
|
178613
|
+
};
|
|
178614
|
+
const program = import_typescript3.default.createProgram({
|
|
178615
|
+
rootNames: [SCRIPT_FILE],
|
|
178616
|
+
options: { noLib: true, noResolve: true, types: [], target: import_typescript3.default.ScriptTarget.Latest },
|
|
178617
|
+
host
|
|
178618
|
+
});
|
|
178619
|
+
const checker = program.getTypeChecker();
|
|
178620
|
+
const isLocal = (node) => {
|
|
178621
|
+
const symbol = import_typescript3.default.isShorthandPropertyAssignment(node.parent) && node.parent.name === node ? checker.getShorthandAssignmentValueSymbol(node.parent) : checker.getSymbolAtLocation(node);
|
|
178622
|
+
return Boolean(symbol?.declarations?.some((declaration) => declaration.getSourceFile() === sourceFile && !isAmbient(declaration)));
|
|
178623
|
+
};
|
|
178624
|
+
const constInitializer = (node) => {
|
|
178625
|
+
const declaration = checker.getSymbolAtLocation(node)?.valueDeclaration;
|
|
178626
|
+
if (!declaration || !import_typescript3.default.isVariableDeclaration(declaration) || !declaration.initializer) {
|
|
178627
|
+
return null;
|
|
178628
|
+
}
|
|
178629
|
+
return import_typescript3.default.getCombinedNodeFlags(declaration) & import_typescript3.default.NodeFlags.Const ? declaration.initializer : null;
|
|
178630
|
+
};
|
|
178631
|
+
return { sourceFile, isLocal, constInitializer };
|
|
178632
|
+
}
|
|
178633
|
+
function isValueReference(node) {
|
|
178634
|
+
const parent = node.parent;
|
|
178635
|
+
if (import_typescript3.default.isPropertyAccessExpression(parent) && parent.name === node)
|
|
178636
|
+
return false;
|
|
178637
|
+
if (import_typescript3.default.isShorthandPropertyAssignment(parent))
|
|
178638
|
+
return true;
|
|
178639
|
+
if ("name" in parent && parent.name === node)
|
|
178640
|
+
return false;
|
|
178641
|
+
if (import_typescript3.default.isTypeOfExpression(parent))
|
|
178642
|
+
return false;
|
|
178643
|
+
return true;
|
|
178644
|
+
}
|
|
178645
|
+
function isTypeOnly(node) {
|
|
178646
|
+
return import_typescript3.default.isTypeNode(node) || import_typescript3.default.isInterfaceDeclaration(node) || import_typescript3.default.isTypeAliasDeclaration(node) || import_typescript3.default.isImportDeclaration(node) && Boolean(node.importClause?.isTypeOnly);
|
|
178647
|
+
}
|
|
178648
|
+
function stdlibImportNames(node) {
|
|
178649
|
+
if (!import_typescript3.default.isStringLiteral(node.moduleSpecifier) || node.moduleSpecifier.text !== "stdlib")
|
|
178650
|
+
return [];
|
|
178651
|
+
const bindings = node.importClause?.namedBindings;
|
|
178652
|
+
if (!bindings || !import_typescript3.default.isNamedImports(bindings))
|
|
178653
|
+
return [];
|
|
178654
|
+
return bindings.elements.map((element) => (element.propertyName ?? element.name).text).filter((name) => FS_STDLIB.has(name));
|
|
178655
|
+
}
|
|
178656
|
+
function unwrap(node) {
|
|
178657
|
+
let current = node;
|
|
178658
|
+
while (import_typescript3.default.isParenthesizedExpression(current) || import_typescript3.default.isAsExpression(current) || import_typescript3.default.isNonNullExpression(current) || import_typescript3.default.isTypeAssertionExpression(current) || import_typescript3.default.isSatisfiesExpression(current)) {
|
|
178659
|
+
current = current.expression;
|
|
178660
|
+
}
|
|
178661
|
+
return current;
|
|
178662
|
+
}
|
|
178663
|
+
function isGlobalThis(node) {
|
|
178664
|
+
const inner = unwrap(node);
|
|
178665
|
+
return import_typescript3.default.isIdentifier(inner) && inner.text === "globalThis";
|
|
178666
|
+
}
|
|
178667
|
+
function globalName(node, isLocal) {
|
|
178668
|
+
const inner = unwrap(node);
|
|
178669
|
+
if (import_typescript3.default.isIdentifier(inner))
|
|
178670
|
+
return isLocal(inner) ? null : inner.text;
|
|
178671
|
+
if (import_typescript3.default.isPropertyAccessExpression(inner) && isGlobalThis(inner.expression)) {
|
|
178672
|
+
return inner.name.text;
|
|
178673
|
+
}
|
|
178674
|
+
return null;
|
|
178675
|
+
}
|
|
178676
|
+
function isPrivateIPv42([a = 0, b = 0, c = 0]) {
|
|
178677
|
+
return a === 0 || a === 10 || a === 127 || a === 100 && b >= 64 && b <= 127 || a === 169 && b === 254 || a === 172 && b >= 16 && b <= 31 || a === 192 && b === 168 || a === 192 && b === 0 && c === 0 || a === 198 && (b === 18 || b === 19) || a >= 224;
|
|
178678
|
+
}
|
|
178679
|
+
function isPrivateIPv62(text) {
|
|
178680
|
+
const [head = "", tail = ""] = text.split("::");
|
|
178681
|
+
const left = head ? head.split(":") : [];
|
|
178682
|
+
const right = text.includes("::") && tail ? tail.split(":") : [];
|
|
178683
|
+
const fill = text.includes("::") ? 8 - left.length - right.length : 0;
|
|
178684
|
+
const g = [...left, ...Array(fill).fill("0"), ...right].map((part) => parseInt(part, 16));
|
|
178685
|
+
const g0 = g[0] ?? 0;
|
|
178686
|
+
if (g.slice(0, 6).every((part) => part === 0))
|
|
178687
|
+
return true;
|
|
178688
|
+
if (g.slice(0, 5).every((part) => part === 0) && g[5] === 65535) {
|
|
178689
|
+
const [g6 = 0, g7 = 0] = g.slice(6);
|
|
178690
|
+
return isPrivateIPv42([g6 >> 8, g6 & 255, g7 >> 8]);
|
|
178691
|
+
}
|
|
178692
|
+
return (g0 & 65024) === 64512 || (g0 & 65472) === 65152 || (g0 & 65472) === 65216 || (g0 & 65280) === 65280;
|
|
178693
|
+
}
|
|
178694
|
+
function staticHostClass(hostname) {
|
|
178695
|
+
const host = hostname.toLowerCase().replace(/\.$/, "");
|
|
178696
|
+
if (host === "localhost" || host.endsWith(".localhost"))
|
|
178697
|
+
return "private";
|
|
178698
|
+
if (host.startsWith("["))
|
|
178699
|
+
return isPrivateIPv62(host.slice(1, -1)) ? "private" : null;
|
|
178700
|
+
const v4 = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.exec(host);
|
|
178701
|
+
if (v4)
|
|
178702
|
+
return isPrivateIPv42(v4.slice(1).map(Number)) ? "private" : null;
|
|
178703
|
+
return host !== "" && !host.includes(".") ? "single-label" : null;
|
|
178704
|
+
}
|
|
178705
|
+
function fetchCallName(callee) {
|
|
178706
|
+
const inner = unwrap(callee);
|
|
178707
|
+
if (import_typescript3.default.isIdentifier(inner)) {
|
|
178708
|
+
return inner.text === "fetch" || inner.text === "fetchJson" ? inner.text : null;
|
|
178709
|
+
}
|
|
178710
|
+
if (!import_typescript3.default.isPropertyAccessExpression(inner))
|
|
178711
|
+
return null;
|
|
178712
|
+
const method = inner.name.text;
|
|
178713
|
+
if (method !== "fetch" && method !== "fetchJson")
|
|
178714
|
+
return null;
|
|
178715
|
+
const owner = unwrap(inner.expression);
|
|
178716
|
+
if (method === "fetch" && isGlobalThis(owner))
|
|
178717
|
+
return "fetch";
|
|
178718
|
+
const ownerName = import_typescript3.default.isIdentifier(owner) ? owner.text : import_typescript3.default.isPropertyAccessExpression(owner) ? owner.name.text : null;
|
|
178719
|
+
return ownerName === "stdlib" ? `ctx.stdlib.${method}` : null;
|
|
178720
|
+
}
|
|
178721
|
+
function staticPrefix(node, resolve, depth = 0) {
|
|
178722
|
+
const inner = unwrap(node);
|
|
178723
|
+
if (import_typescript3.default.isStringLiteral(inner) || import_typescript3.default.isNoSubstitutionTemplateLiteral(inner)) {
|
|
178724
|
+
return { text: inner.text, cut: false };
|
|
178725
|
+
}
|
|
178726
|
+
if (import_typescript3.default.isIdentifier(inner)) {
|
|
178727
|
+
const initializer = depth < MAX_CONST_DEPTH ? resolve(inner) : null;
|
|
178728
|
+
return initializer ? staticPrefix(initializer, resolve, depth + 1) : null;
|
|
178729
|
+
}
|
|
178730
|
+
if (import_typescript3.default.isTemplateExpression(inner)) {
|
|
178731
|
+
let text = inner.head.text;
|
|
178732
|
+
let boundary = false;
|
|
178733
|
+
for (const span of inner.templateSpans) {
|
|
178734
|
+
const part = staticPrefix(span.expression, resolve, depth);
|
|
178735
|
+
if (part === null)
|
|
178736
|
+
return { text, cut: !boundary || text === "" };
|
|
178737
|
+
if (part.cut)
|
|
178738
|
+
return { text: text + part.text, cut: true };
|
|
178739
|
+
text += part.text + span.literal.text;
|
|
178740
|
+
boundary = span.literal.text === "";
|
|
178741
|
+
}
|
|
178742
|
+
return { text, cut: false };
|
|
178743
|
+
}
|
|
178744
|
+
if (import_typescript3.default.isBinaryExpression(inner) && inner.operatorToken.kind === import_typescript3.default.SyntaxKind.PlusToken) {
|
|
178745
|
+
const left = staticPrefix(inner.left, resolve, depth);
|
|
178746
|
+
if (left === null || left.cut)
|
|
178747
|
+
return left;
|
|
178748
|
+
const right = staticPrefix(inner.right, resolve, depth);
|
|
178749
|
+
if (right === null)
|
|
178750
|
+
return { text: left.text, cut: !import_typescript3.default.isIdentifier(unwrap(inner.left)) };
|
|
178751
|
+
return { text: left.text + right.text, cut: right.cut };
|
|
178752
|
+
}
|
|
178753
|
+
return null;
|
|
178754
|
+
}
|
|
178755
|
+
function literalUrl(arg, resolve) {
|
|
178756
|
+
if (!arg)
|
|
178757
|
+
return null;
|
|
178758
|
+
const prefix = staticPrefix(arg, resolve);
|
|
178759
|
+
if (!prefix)
|
|
178760
|
+
return null;
|
|
178761
|
+
if (prefix.cut && !/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*[/?#]/i.test(prefix.text))
|
|
178762
|
+
return null;
|
|
178763
|
+
try {
|
|
178764
|
+
return new URL(prefix.text);
|
|
178765
|
+
} catch {
|
|
178766
|
+
return null;
|
|
178767
|
+
}
|
|
178768
|
+
}
|
|
178769
|
+
function checkQuickJSCompat(source, options = {}) {
|
|
178770
|
+
const findings = [];
|
|
178771
|
+
const seen = new Set;
|
|
178772
|
+
const { sourceFile, isLocal, constInitializer } = createScope(source);
|
|
178773
|
+
const add = (rule, message, node) => {
|
|
178774
|
+
if (seen.has(`${rule}:${message}`))
|
|
178775
|
+
return;
|
|
178776
|
+
seen.add(`${rule}:${message}`);
|
|
178777
|
+
const line = node ? sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1 : undefined;
|
|
178778
|
+
findings.push(line === undefined ? { rule, message } : { rule, message, line });
|
|
178779
|
+
};
|
|
178780
|
+
if (options.fsMode === "workspace-rw") {
|
|
178781
|
+
add("workspaceRw", "fsMode workspace-rw is not available under quickjs");
|
|
178782
|
+
}
|
|
178783
|
+
const reportGlobal = (name, node) => {
|
|
178784
|
+
if (name === "Bun")
|
|
178785
|
+
add("bunGlobal", "Bun.* is not available under quickjs", node);
|
|
178786
|
+
else if (name === "process")
|
|
178787
|
+
add("process", "process is not available under quickjs", node);
|
|
178788
|
+
else if (UNSUPPORTED_GLOBALS.has(name)) {
|
|
178789
|
+
add("unsupportedGlobal", `${name} is not available under quickjs`, node);
|
|
178790
|
+
}
|
|
178791
|
+
};
|
|
178792
|
+
const visit = (node) => {
|
|
178793
|
+
if (isTypeOnly(node))
|
|
178794
|
+
return;
|
|
178795
|
+
if (import_typescript3.default.isIdentifier(node) && (node.text === "Bun" || node.text === "process" || UNSUPPORTED_GLOBALS.has(node.text)) && isValueReference(node) && !isLocal(node)) {
|
|
178796
|
+
reportGlobal(node.text, node);
|
|
178797
|
+
}
|
|
178798
|
+
if (import_typescript3.default.isPropertyAccessExpression(node)) {
|
|
178799
|
+
const member = node.name.text;
|
|
178800
|
+
const owner = globalName(node.expression, isLocal);
|
|
178801
|
+
if (isGlobalThis(node.expression) && !import_typescript3.default.isTypeOfExpression(node.parent)) {
|
|
178802
|
+
reportGlobal(member, node);
|
|
178803
|
+
}
|
|
178804
|
+
const parent = unwrap(node.expression);
|
|
178805
|
+
if (HOST_ONLY_CONFIG.has(member) && import_typescript3.default.isPropertyAccessExpression(parent) && parent.name.text === "config") {
|
|
178806
|
+
add("hostCredential", `ctx.swarm.config.${member} is host-only under quickjs; ctx.swarm calls use it for you`, node);
|
|
178807
|
+
}
|
|
178808
|
+
if (member === "subtle" && owner === "crypto") {
|
|
178809
|
+
add("cryptoSubtle", "crypto.subtle is not available under quickjs", node);
|
|
178810
|
+
}
|
|
178811
|
+
if (FS_STDLIB.has(member) && import_typescript3.default.isPropertyAccessExpression(unwrap(node.expression)) && unwrap(node.expression).name.text === "stdlib") {
|
|
178812
|
+
add("fsStdlib", `ctx.stdlib.${member} needs filesystem access, which quickjs lacks`, node);
|
|
178813
|
+
}
|
|
178814
|
+
}
|
|
178815
|
+
if (import_typescript3.default.isImportDeclaration(node)) {
|
|
178816
|
+
for (const name of stdlibImportNames(node)) {
|
|
178817
|
+
add("fsStdlib", `stdlib ${name} needs filesystem access, which quickjs lacks`, node);
|
|
178818
|
+
}
|
|
178819
|
+
}
|
|
178820
|
+
if (import_typescript3.default.isVariableDeclaration(node) && import_typescript3.default.isObjectBindingPattern(node.name) && node.initializer && import_typescript3.default.isPropertyAccessExpression(node.initializer) && node.initializer.name.text === "stdlib") {
|
|
178821
|
+
for (const element of node.name.elements) {
|
|
178822
|
+
const name = (element.propertyName ?? element.name).getText(sourceFile);
|
|
178823
|
+
if (FS_STDLIB.has(name)) {
|
|
178824
|
+
add("fsStdlib", `ctx.stdlib.${name} needs filesystem access, which quickjs lacks`, node);
|
|
178825
|
+
}
|
|
178826
|
+
}
|
|
178827
|
+
}
|
|
178828
|
+
if (import_typescript3.default.isCallExpression(node)) {
|
|
178829
|
+
const callee = node.expression;
|
|
178830
|
+
const fetchName = fetchCallName(callee);
|
|
178831
|
+
const url = fetchName ? literalUrl(node.arguments[0], constInitializer) : null;
|
|
178832
|
+
const hostClass = url && (url.protocol === "http:" || url.protocol === "https:") ? staticHostClass(url.hostname) : null;
|
|
178833
|
+
if (url && hostClass) {
|
|
178834
|
+
add("privateHost", `${fetchName} to ${url.host} (${hostClass} host) depends on the egress policy: quickjs refuses private hosts unless the operator allows them`, node);
|
|
178835
|
+
}
|
|
178836
|
+
if (import_typescript3.default.isIdentifier(callee) && callee.text === "require" && !isLocal(callee)) {
|
|
178837
|
+
add("require", "require() is not supported; use an import", node);
|
|
178838
|
+
}
|
|
178839
|
+
if (import_typescript3.default.isPropertyAccessExpression(callee)) {
|
|
178840
|
+
const method = callee.name.text;
|
|
178841
|
+
if (RESPONSE_BODY_METHODS.has(method) && node.arguments.length === 0) {
|
|
178842
|
+
add("responseBody", `.${method}() on a fetch Response is not available under quickjs (text() and json() are)`, node);
|
|
178843
|
+
}
|
|
178844
|
+
if (LOCALE_METHODS.has(method) && node.arguments.length > 0) {
|
|
178845
|
+
add("localeFormat", `${method}(locale, options) ignores its arguments under quickjs (no Intl)`, node);
|
|
178846
|
+
}
|
|
178847
|
+
}
|
|
178848
|
+
}
|
|
178849
|
+
import_typescript3.default.forEachChild(node, visit);
|
|
178850
|
+
};
|
|
178851
|
+
visit(sourceFile);
|
|
178852
|
+
return { compatible: findings.length === 0, findings: findings.slice(0, MAX_FINDINGS) };
|
|
178853
|
+
}
|
|
178854
|
+
function quickJSCompatWarnings(report, label) {
|
|
178855
|
+
const prefix = label ? `${label}: ` : "";
|
|
178856
|
+
return report.findings.map((finding) => `${prefix}quickjs compat (${finding.rule}${finding.line ? `, line ${finding.line}` : ""}): ${finding.message}`);
|
|
178857
|
+
}
|
|
178534
178858
|
// src/apps/catalog.generated.json
|
|
178535
178859
|
var catalog_generated_default = {
|
|
178536
178860
|
$comment: "GENERATED by apps/ui/scripts/generate-catalog-schema.ts — do not hand-edit. Regenerate with `cd apps/ui && bun run generate:catalog-schema`.",
|
|
@@ -182583,6 +182907,17 @@ function collectScriptReferences(definition) {
|
|
|
182583
182907
|
}
|
|
182584
182908
|
return references;
|
|
182585
182909
|
}
|
|
182910
|
+
async function scriptCompatWarnings(definition) {
|
|
182911
|
+
const warnings = [];
|
|
182912
|
+
for (const [scriptId, paths] of collectScriptReferences(definition)) {
|
|
182913
|
+
const script = await getScriptById(scriptId);
|
|
182914
|
+
if (!script)
|
|
182915
|
+
continue;
|
|
182916
|
+
const report = checkQuickJSCompat(script.source, { fsMode: script.fsMode });
|
|
182917
|
+
warnings.push(...quickJSCompatWarnings(report, paths.join(", ")));
|
|
182918
|
+
}
|
|
182919
|
+
return warnings;
|
|
182920
|
+
}
|
|
182586
182921
|
function foreignScriptForWriter(context, script) {
|
|
182587
182922
|
if (script.scope !== "agent")
|
|
182588
182923
|
return false;
|
|
@@ -183514,13 +183849,15 @@ export interface SwarmSdk {
|
|
|
183514
183849
|
// --- config ---
|
|
183515
183850
|
config_get(args?: { agentId?: string; repoId?: string; key?: string; includeSecrets?: boolean }): Promise<unknown>;
|
|
183516
183851
|
config_list(args?: { scope?: "global" | "agent" | "repo"; scopeId?: string; key?: string; includeSecrets?: boolean }): Promise<unknown>;
|
|
183852
|
+
// --- model profiles ---
|
|
183853
|
+
modelProfile_list(args?: { harness?: string }): Promise<unknown>;
|
|
183517
183854
|
// --- slack ---
|
|
183518
183855
|
slack_read(args?: { inboxMessageId?: string; taskId?: string; channelId?: string; threadTs?: string; limit?: number; includeFiles?: boolean }): Promise<unknown>;
|
|
183519
183856
|
slack_listChannels(args?: { types?: Array<"public" | "private" | "dm" | "mpim">; limit?: number }): Promise<unknown>;
|
|
183857
|
+
// --- chat sdk ---
|
|
183858
|
+
chat_readThread(args: { threadId: string; limit?: number }): Promise<unknown>;
|
|
183520
183859
|
// --- messaging ---
|
|
183521
183860
|
message_read(args?: { channel?: string; limit?: number; since?: string; unreadOnly?: boolean; mentionsOnly?: boolean; markAsRead?: boolean }): Promise<unknown>;
|
|
183522
|
-
// --- services ---
|
|
183523
|
-
service_list(args?: { agentId?: string; name?: string; status?: "starting" | "healthy" | "unhealthy" | "stopped"; includeOwn?: boolean }): Promise<unknown>;
|
|
183524
183861
|
// --- context / profiles ---
|
|
183525
183862
|
context_history(args?: { agentId?: string; field?: "soulMd" | "identityMd" | "toolsMd" | "claudeMd" | "setupScript"; limit?: number }): Promise<unknown>;
|
|
183526
183863
|
context_diff(args: { versionId: string; compareToVersionId?: string }): Promise<unknown>;
|
|
@@ -183563,7 +183900,7 @@ export interface SwarmSdk {
|
|
|
183563
183900
|
task_action(args: Record<string, unknown>): Promise<unknown>;
|
|
183564
183901
|
|
|
183565
183902
|
// --- write: config ---
|
|
183566
|
-
config_set(args: { key: string; value: unknown; scope?: "global" | "agent" | "repo"; scopeId?: string; isSecret?: boolean }): Promise<unknown>;
|
|
183903
|
+
config_set(args: { key: string; value: unknown; scope?: "global" | "agent" | "repo"; scopeId?: string; isSecret?: boolean; exportToEnv?: boolean }): Promise<unknown>;
|
|
183567
183904
|
config_delete(args: { id: string }): Promise<unknown>;
|
|
183568
183905
|
|
|
183569
183906
|
// --- write: model catalog ---
|
|
@@ -183593,17 +183930,19 @@ export interface SwarmSdk {
|
|
|
183593
183930
|
slack_delete(args: { channelId: string; messageTs: string }): Promise<unknown>;
|
|
183594
183931
|
slack_update(args: { channelId: string; messageTs: string; message: string }): Promise<unknown>;
|
|
183595
183932
|
|
|
183933
|
+
// --- write: chat sdk ---
|
|
183934
|
+
chat_reply(args: { text: string }): Promise<unknown>;
|
|
183935
|
+
chat_post(args: { adapter: "telegram" | "slack" | "discord" | "teams"; threadId?: string; channelId?: string; text: string }): Promise<unknown>;
|
|
183936
|
+
chat_openDm(args: { adapter: "telegram" | "slack" | "discord" | "teams"; userId: string }): Promise<unknown>;
|
|
183937
|
+
chat_registerChannel(args: { adapter: "telegram" | "slack" | "discord" | "teams"; channelId: string; agentId?: string; workflowId?: string; name?: string }): Promise<unknown>;
|
|
183938
|
+
chat_unregisterChannel(args: { adapter: "telegram" | "slack" | "discord" | "teams"; channelId: string }): Promise<unknown>;
|
|
183939
|
+
|
|
183596
183940
|
// --- write: messaging (internal) ---
|
|
183597
183941
|
message_post(args: { channel?: string; content: string; to?: string }): Promise<unknown>;
|
|
183598
183942
|
|
|
183599
183943
|
// --- write: profiles ---
|
|
183600
183944
|
profile_update(args: Record<string, unknown>): Promise<unknown>;
|
|
183601
183945
|
|
|
183602
|
-
// --- write: services ---
|
|
183603
|
-
service_register(args: Record<string, unknown>): Promise<unknown>;
|
|
183604
|
-
service_unregister(args: { name: string }): Promise<unknown>;
|
|
183605
|
-
service_updateStatus(args: { name: string; status: "starting" | "healthy" | "unhealthy" | "stopped" }): Promise<unknown>;
|
|
183606
|
-
|
|
183607
183946
|
// --- write: schedules ---
|
|
183608
183947
|
schedule_create(args: Record<string, unknown>): Promise<unknown>;
|
|
183609
183948
|
schedule_update(args: Record<string, unknown>): Promise<unknown>;
|
|
@@ -183719,6 +184058,16 @@ export interface SwarmSdk {
|
|
|
183719
184058
|
// --- human input ---
|
|
183720
184059
|
request_humanInput(args: Record<string, unknown>): Promise<unknown>;
|
|
183721
184060
|
approval_cancel(args: { requestId: string; reason?: string }): Promise<unknown>;
|
|
184061
|
+
|
|
184062
|
+
// --- decisions ---
|
|
184063
|
+
systemOne_decide(args: {
|
|
184064
|
+
provider?: "typesafe" | "openrouter" | "laya" | "openai" | "cloudflare";
|
|
184065
|
+
model?: string;
|
|
184066
|
+
state: string | string[] | Record<string, unknown>;
|
|
184067
|
+
questions: Record<string, Record<string, unknown>>;
|
|
184068
|
+
timeoutMs?: number;
|
|
184069
|
+
maxRetries?: number;
|
|
184070
|
+
}): Promise<unknown>;
|
|
183722
184071
|
}
|
|
183723
184072
|
|
|
183724
184073
|
export interface ScriptStdlib {
|
|
@@ -184168,20 +184517,20 @@ function sourceFileCacheKey(fileName, languageVersion) {
|
|
|
184168
184517
|
return `${fileName}\x00${languageVersion.languageVersion}\x00${languageVersion.impliedNodeFormat}\x00${languageVersion.jsDocParsingMode}`;
|
|
184169
184518
|
}
|
|
184170
184519
|
function createCompilerHost(files, options, virtualModules = new Map) {
|
|
184171
|
-
const host =
|
|
184520
|
+
const host = import_typescript4.default.createCompilerHost(options, true);
|
|
184172
184521
|
const originalGetSourceFile = host.getSourceFile.bind(host);
|
|
184173
184522
|
host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
|
|
184174
184523
|
const normalized = fileName.replace(/\\/g, "/");
|
|
184175
184524
|
const source = files.get(normalized);
|
|
184176
184525
|
if (normalized === USER_FILE || normalized === CHECK_FILE) {
|
|
184177
184526
|
if (source !== undefined) {
|
|
184178
|
-
return
|
|
184527
|
+
return import_typescript4.default.createSourceFile(normalized, source, languageVersion, true, import_typescript4.default.ScriptKind.TS);
|
|
184179
184528
|
}
|
|
184180
184529
|
}
|
|
184181
|
-
const text = source ??
|
|
184530
|
+
const text = source ?? import_typescript4.default.sys.readFile(fileName);
|
|
184182
184531
|
if (text === undefined || shouldCreateNewSourceFile) {
|
|
184183
184532
|
if (source !== undefined) {
|
|
184184
|
-
return
|
|
184533
|
+
return import_typescript4.default.createSourceFile(normalized, source, languageVersion, true, import_typescript4.default.ScriptKind.TS);
|
|
184185
184534
|
}
|
|
184186
184535
|
return originalGetSourceFile(fileName, languageVersion, onError, shouldCreateNewSourceFile);
|
|
184187
184536
|
}
|
|
@@ -184189,30 +184538,30 @@ function createCompilerHost(files, options, virtualModules = new Map) {
|
|
|
184189
184538
|
const cached = sharedSourceFiles.get(key);
|
|
184190
184539
|
if (cached && cached.text === text)
|
|
184191
184540
|
return cached.sourceFile;
|
|
184192
|
-
const sourceFile = source !== undefined ?
|
|
184541
|
+
const sourceFile = source !== undefined ? import_typescript4.default.createSourceFile(normalized, source, languageVersion, true, import_typescript4.default.ScriptKind.TS) : originalGetSourceFile(fileName, languageVersion, onError, shouldCreateNewSourceFile);
|
|
184193
184542
|
if (sourceFile)
|
|
184194
184543
|
sharedSourceFiles.set(key, { text, sourceFile });
|
|
184195
184544
|
return sourceFile;
|
|
184196
184545
|
};
|
|
184197
184546
|
host.fileExists = (fileName) => {
|
|
184198
184547
|
const normalized = fileName.replace(/\\/g, "/");
|
|
184199
|
-
return files.has(normalized) ||
|
|
184548
|
+
return files.has(normalized) || import_typescript4.default.sys.fileExists(fileName);
|
|
184200
184549
|
};
|
|
184201
184550
|
host.readFile = (fileName) => {
|
|
184202
184551
|
const normalized = fileName.replace(/\\/g, "/");
|
|
184203
|
-
return files.get(normalized) ??
|
|
184552
|
+
return files.get(normalized) ?? import_typescript4.default.sys.readFile(fileName);
|
|
184204
184553
|
};
|
|
184205
184554
|
const projectBase = scriptTypesBase();
|
|
184206
184555
|
host.resolveModuleNames = (moduleNames, containingFile) => moduleNames.map((moduleName) => {
|
|
184207
184556
|
if (moduleName === "./user-script") {
|
|
184208
|
-
return { resolvedFileName: USER_FILE, extension:
|
|
184557
|
+
return { resolvedFileName: USER_FILE, extension: import_typescript4.default.Extension.Ts };
|
|
184209
184558
|
}
|
|
184210
184559
|
const virtualModule = virtualModules.get(moduleName);
|
|
184211
184560
|
if (virtualModule) {
|
|
184212
|
-
return { resolvedFileName: virtualModule, extension:
|
|
184561
|
+
return { resolvedFileName: virtualModule, extension: import_typescript4.default.Extension.Dts };
|
|
184213
184562
|
}
|
|
184214
184563
|
const base = containingFile.startsWith("/virtual/") ? projectBase : containingFile;
|
|
184215
|
-
return
|
|
184564
|
+
return import_typescript4.default.resolveModuleName(moduleName, base, options, host).resolvedModule;
|
|
184216
184565
|
});
|
|
184217
184566
|
const tsLibDir = process.env.TS_LIB_DIR;
|
|
184218
184567
|
if (tsLibDir) {
|
|
@@ -184221,16 +184570,16 @@ function createCompilerHost(files, options, virtualModules = new Map) {
|
|
|
184221
184570
|
return host;
|
|
184222
184571
|
}
|
|
184223
184572
|
function flattenMessage(messageText) {
|
|
184224
|
-
return
|
|
184573
|
+
return import_typescript4.default.flattenDiagnosticMessageText(messageText, `
|
|
184225
184574
|
`);
|
|
184226
184575
|
}
|
|
184227
184576
|
function diagnosticSeverity(diag) {
|
|
184228
184577
|
switch (diag.category) {
|
|
184229
|
-
case
|
|
184578
|
+
case import_typescript4.default.DiagnosticCategory.Error:
|
|
184230
184579
|
return "error";
|
|
184231
|
-
case
|
|
184580
|
+
case import_typescript4.default.DiagnosticCategory.Warning:
|
|
184232
184581
|
return "warning";
|
|
184233
|
-
case
|
|
184582
|
+
case import_typescript4.default.DiagnosticCategory.Suggestion:
|
|
184234
184583
|
return "suggestion";
|
|
184235
184584
|
default:
|
|
184236
184585
|
return "message";
|
|
@@ -184286,12 +184635,12 @@ async function typecheckWithAmbient(args) {
|
|
|
184286
184635
|
const options = {
|
|
184287
184636
|
allowImportingTsExtensions: true,
|
|
184288
184637
|
lib: ["lib.es2022.d.ts"],
|
|
184289
|
-
module:
|
|
184290
|
-
moduleResolution:
|
|
184638
|
+
module: import_typescript4.default.ModuleKind.ESNext,
|
|
184639
|
+
moduleResolution: import_typescript4.default.ModuleResolutionKind.Bundler,
|
|
184291
184640
|
noEmit: true,
|
|
184292
184641
|
skipLibCheck: true,
|
|
184293
184642
|
strict: true,
|
|
184294
|
-
target:
|
|
184643
|
+
target: import_typescript4.default.ScriptTarget.ES2022,
|
|
184295
184644
|
types: []
|
|
184296
184645
|
};
|
|
184297
184646
|
const files = new Map([
|
|
@@ -184309,7 +184658,7 @@ async function typecheckWithAmbient(args) {
|
|
|
184309
184658
|
files.set(`/virtual/ambient-${name.replace(/[^A-Za-z0-9_.-]/g, "_")}.d.ts`, source);
|
|
184310
184659
|
}
|
|
184311
184660
|
const host = createCompilerHost(files, options, virtualModules);
|
|
184312
|
-
const program =
|
|
184661
|
+
const program = import_typescript4.default.createProgram([...files.keys()], options, host);
|
|
184313
184662
|
const diagnostics = [
|
|
184314
184663
|
...program.getSyntacticDiagnostics(),
|
|
184315
184664
|
...program.getSemanticDiagnostics()
|
|
@@ -184327,7 +184676,7 @@ async function typecheckWithAmbient(args) {
|
|
|
184327
184676
|
};
|
|
184328
184677
|
return {
|
|
184329
184678
|
ok: false,
|
|
184330
|
-
diagnostics: diagnostics.map((diagnostic) =>
|
|
184679
|
+
diagnostics: diagnostics.map((diagnostic) => import_typescript4.default.formatDiagnosticsWithColorAndContext([diagnostic], formatHost).trimEnd()),
|
|
184331
184680
|
structured: diagnostics.map(toStructured)
|
|
184332
184681
|
};
|
|
184333
184682
|
}
|
|
@@ -184349,4 +184698,53 @@ void _scriptMain;
|
|
|
184349
184698
|
});
|
|
184350
184699
|
}
|
|
184351
184700
|
|
|
184352
|
-
|
|
184701
|
+
// src/be/skill-parser.ts
|
|
184702
|
+
function parseSkillContent(content) {
|
|
184703
|
+
const trimmed = content.trim();
|
|
184704
|
+
if (!trimmed.startsWith("---")) {
|
|
184705
|
+
throw new Error("Skill content must start with YAML frontmatter (---). No frontmatter found.");
|
|
184706
|
+
}
|
|
184707
|
+
const secondDelimiter = trimmed.indexOf("---", 3);
|
|
184708
|
+
if (secondDelimiter === -1) {
|
|
184709
|
+
throw new Error("Skill content has unterminated frontmatter. Missing closing ---.");
|
|
184710
|
+
}
|
|
184711
|
+
const frontmatterRaw = trimmed.slice(3, secondDelimiter).trim();
|
|
184712
|
+
const body = trimmed.slice(secondDelimiter + 3).trim();
|
|
184713
|
+
const metadata = {};
|
|
184714
|
+
for (const line of frontmatterRaw.split(`
|
|
184715
|
+
`)) {
|
|
184716
|
+
const colonIdx = line.indexOf(":");
|
|
184717
|
+
if (colonIdx === -1)
|
|
184718
|
+
continue;
|
|
184719
|
+
const key = line.slice(0, colonIdx).trim();
|
|
184720
|
+
let value = line.slice(colonIdx + 1).trim();
|
|
184721
|
+
if (value.length >= 2 && value.startsWith('"') && value.endsWith('"')) {
|
|
184722
|
+
try {
|
|
184723
|
+
value = JSON.parse(value);
|
|
184724
|
+
} catch {}
|
|
184725
|
+
}
|
|
184726
|
+
if (key && value) {
|
|
184727
|
+
metadata[key] = value;
|
|
184728
|
+
}
|
|
184729
|
+
}
|
|
184730
|
+
if (!metadata.name) {
|
|
184731
|
+
throw new Error('Skill frontmatter is missing required field: "name"');
|
|
184732
|
+
}
|
|
184733
|
+
if (!metadata.description) {
|
|
184734
|
+
throw new Error('Skill frontmatter is missing required field: "description"');
|
|
184735
|
+
}
|
|
184736
|
+
return {
|
|
184737
|
+
name: metadata.name,
|
|
184738
|
+
description: metadata.description,
|
|
184739
|
+
allowedTools: metadata["allowed-tools"] || undefined,
|
|
184740
|
+
model: metadata.model || undefined,
|
|
184741
|
+
effort: metadata.effort || undefined,
|
|
184742
|
+
context: metadata.context || undefined,
|
|
184743
|
+
agent: metadata.agent || undefined,
|
|
184744
|
+
disableModelInvocation: metadata["disable-model-invocation"] === "true" ? true : undefined,
|
|
184745
|
+
userInvocable: metadata["user-invocable"] !== undefined ? metadata["user-invocable"] !== "false" : undefined,
|
|
184746
|
+
body
|
|
184747
|
+
};
|
|
184748
|
+
}
|
|
184749
|
+
|
|
184750
|
+
export { require_dist, isInvalidClientError, assertUrlSafe, publicEndpointSsrfOptions, mcpOAuthSsrfOptions, discoverProtectedResourceMetadata, discoverAuthorizationServerMetadata, normalizeTokenEndpointAuthMethod, resolveAdvertisedTokenEndpointAuthMethod, authMethodForStoredClient, selectDcrTokenEndpointAuthMethod, registerClient, buildAuthorizeUrl, exchangeCodeForTokens, refreshMcpToken, revokeMcpToken, computeExpiresAt, getMcpOAuthToken, findReusableMcpOAuthClient, invalidateMcpOAuthClient, upsertMcpOAuthToken, applyMcpOAuthRefresh, markMcpOAuthTokenStatus, deleteMcpOAuthToken, insertMcpOAuthPending, consumeMcpOAuthPending, gcMcpOAuthPending, setMcpServerAuthMethod, ensureMcpToken, callMcpServerTool, resolveSqlDsn, runReadOnlyQuery, listVendoredOpenapiEntries, ConnectionAuthInputSchema, SqlDsnInputSchema, connectionAuthSummary, listRelationalCredentialBindings, getCredentialBindingById, findCredentialBindingByIdentity, upsertCredentialBinding, disableCredentialBinding, listScriptConnections, listScriptConnectionsAsync, getScriptConnectionById, ScriptConnectionConflictError, connectionAuthInputFromFlat, upsertScriptConnection, refreshScriptConnection, setScriptConnectionEnabled, deleteScriptConnection, getScriptApiConnectionDescriptors, getScriptMcpConnectionDescriptors, getScriptApiTypes, getScriptMcpTypes, oauthAppToProviderConfig, getOAuthProviderConfig, getOAuthBindingTokenStatus, buildScriptCredentialBindingsWithFailures, buildSandboxedCommand, sandboxSpawnEnv, createCappedStreamState, snapshotCapped, readStreamCapped, writeBareImportShim, MIN_SCRIPT_WALL_CLOCK_MS, SCRIPT_LONG_TIMEOUT_HINT_MS, MAX_SCRIPT_WALL_CLOCK_MS, DEFAULT_SCRIPT_RESOURCES, require_typescript, checkImportAllowlist, validateScriptImports, runScript, extractScriptSignature, extractArgsJsonSchema, getSavedScriptOwnerAgentId, runSavedScriptAsAgent, checkQuickJSCompat, quickJSCompatWarnings, resolveSyncRunAs, AppNameSchema, ColumnKindSchema, isIso8601Date, SYSTEM_COLUMN_KINDS, SORTABLE_SYSTEM_DATE_COLUMNS, AppElementsSchema, AppDefinitionSchema, collectScriptReferences, scriptCompatWarnings, parseAppDefinition, applyAppDefinitionPatch, upgradeAppDefinition, decodeAppDefinition, appDefinitionNeedsRepair, createApp, getApp, listApps, listAppRecords, updateApp, deleteApp, getScriptAppTypes, SCRIPT_SDK_TYPES, scriptSdkTypesWithGeneratedApis, SCRIPT_STDLIB_MODULE_TYPES, scriptStdlibTypesWithGeneratedApis, typecheckWithAmbient, typecheckScript, parseSkillContent };
|