@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
|
@@ -147258,7 +147258,7 @@
|
|
|
147258
147258
|
"cost": {
|
|
147259
147259
|
"input": 2,
|
|
147260
147260
|
"output": 10,
|
|
147261
|
-
"cache_read": 0.
|
|
147261
|
+
"cache_read": 0.1,
|
|
147262
147262
|
"cache_write": 2.5
|
|
147263
147263
|
},
|
|
147264
147264
|
"limit": {
|
|
@@ -314158,23 +314158,59 @@
|
|
|
314158
314158
|
"name": "NaN",
|
|
314159
314159
|
"doc": "https://nan.builders/docs/models",
|
|
314160
314160
|
"models": {
|
|
314161
|
-
"
|
|
314162
|
-
"id": "
|
|
314163
|
-
"name": "
|
|
314164
|
-
"description": "
|
|
314161
|
+
"qwen-image-2.1": {
|
|
314162
|
+
"id": "qwen-image-2.1",
|
|
314163
|
+
"name": "Qwen-Image-2.1",
|
|
314164
|
+
"description": "Unified text-to-image generation and image editing model with native RGBA transparency and reference-image editing",
|
|
314165
314165
|
"family": "qwen",
|
|
314166
|
+
"attachment": false,
|
|
314167
|
+
"reasoning": false,
|
|
314168
|
+
"tool_call": false,
|
|
314169
|
+
"temperature": true,
|
|
314170
|
+
"release_date": "2026-09-14",
|
|
314171
|
+
"last_updated": "2026-09-21",
|
|
314172
|
+
"modalities": {
|
|
314173
|
+
"input": [
|
|
314174
|
+
"text"
|
|
314175
|
+
],
|
|
314176
|
+
"output": [
|
|
314177
|
+
"image"
|
|
314178
|
+
]
|
|
314179
|
+
},
|
|
314180
|
+
"open_weights": true,
|
|
314181
|
+
"limit": {
|
|
314182
|
+
"context": 8192,
|
|
314183
|
+
"output": 0
|
|
314184
|
+
},
|
|
314185
|
+
"cost": {
|
|
314186
|
+
"input": 0,
|
|
314187
|
+
"output": 0
|
|
314188
|
+
},
|
|
314189
|
+
"canonical_model_id": "alibaba/qwen-image-2.1"
|
|
314190
|
+
},
|
|
314191
|
+
"glm5.3-flash": {
|
|
314192
|
+
"id": "glm5.3-flash",
|
|
314193
|
+
"name": "GLM-5.3-Flash",
|
|
314194
|
+
"description": "Native multimodal GLM model for efficient coding and long-horizon agent tasks",
|
|
314195
|
+
"family": "glm-flash",
|
|
314166
314196
|
"attachment": true,
|
|
314167
314197
|
"reasoning": true,
|
|
314168
314198
|
"reasoning_options": [
|
|
314169
314199
|
{
|
|
314170
|
-
"type": "
|
|
314200
|
+
"type": "effort",
|
|
314201
|
+
"values": [
|
|
314202
|
+
"low",
|
|
314203
|
+
"medium",
|
|
314204
|
+
"high",
|
|
314205
|
+
"max"
|
|
314206
|
+
]
|
|
314171
314207
|
}
|
|
314172
314208
|
],
|
|
314173
314209
|
"tool_call": true,
|
|
314174
314210
|
"structured_output": true,
|
|
314175
314211
|
"temperature": true,
|
|
314176
|
-
"release_date": "2026-
|
|
314177
|
-
"last_updated": "2026-
|
|
314212
|
+
"release_date": "2026-08-26",
|
|
314213
|
+
"last_updated": "2026-08-26",
|
|
314178
314214
|
"modalities": {
|
|
314179
314215
|
"input": [
|
|
314180
314216
|
"text",
|
|
@@ -314186,31 +314222,43 @@
|
|
|
314186
314222
|
},
|
|
314187
314223
|
"open_weights": true,
|
|
314188
314224
|
"limit": {
|
|
314189
|
-
"context":
|
|
314190
|
-
"output":
|
|
314225
|
+
"context": 1000000,
|
|
314226
|
+
"output": 131072
|
|
314191
314227
|
},
|
|
314192
314228
|
"cost": {
|
|
314193
314229
|
"input": 0,
|
|
314194
314230
|
"output": 0
|
|
314195
|
-
}
|
|
314231
|
+
},
|
|
314232
|
+
"canonical_model_id": "zhipuai/glm-5.3-flash"
|
|
314196
314233
|
},
|
|
314197
|
-
"
|
|
314198
|
-
"id": "
|
|
314199
|
-
"name": "
|
|
314200
|
-
"description": "
|
|
314201
|
-
"family": "
|
|
314202
|
-
"attachment":
|
|
314234
|
+
"gemma4": {
|
|
314235
|
+
"id": "gemma4",
|
|
314236
|
+
"name": "Gemma 4 26B A4B IT",
|
|
314237
|
+
"description": "Open Gemma instruction model for efficient chat and self-hosted deployments",
|
|
314238
|
+
"family": "gemma",
|
|
314239
|
+
"attachment": true,
|
|
314203
314240
|
"reasoning": true,
|
|
314204
|
-
"reasoning_options": [
|
|
314241
|
+
"reasoning_options": [
|
|
314242
|
+
{
|
|
314243
|
+
"type": "effort",
|
|
314244
|
+
"values": [
|
|
314245
|
+
"none",
|
|
314246
|
+
"low",
|
|
314247
|
+
"medium",
|
|
314248
|
+
"high",
|
|
314249
|
+
"max"
|
|
314250
|
+
]
|
|
314251
|
+
}
|
|
314252
|
+
],
|
|
314205
314253
|
"tool_call": true,
|
|
314206
314254
|
"structured_output": true,
|
|
314207
314255
|
"temperature": true,
|
|
314208
|
-
"
|
|
314209
|
-
"
|
|
314210
|
-
"last_updated": "2026-04-24",
|
|
314256
|
+
"release_date": "2026-04-02",
|
|
314257
|
+
"last_updated": "2026-04-02",
|
|
314211
314258
|
"modalities": {
|
|
314212
314259
|
"input": [
|
|
314213
|
-
"text"
|
|
314260
|
+
"text",
|
|
314261
|
+
"image"
|
|
314214
314262
|
],
|
|
314215
314263
|
"output": [
|
|
314216
314264
|
"text"
|
|
@@ -314218,30 +314266,43 @@
|
|
|
314218
314266
|
},
|
|
314219
314267
|
"open_weights": true,
|
|
314220
314268
|
"limit": {
|
|
314221
|
-
"context":
|
|
314222
|
-
"output":
|
|
314269
|
+
"context": 262144,
|
|
314270
|
+
"output": 32768
|
|
314223
314271
|
},
|
|
314224
314272
|
"cost": {
|
|
314225
314273
|
"input": 0,
|
|
314226
314274
|
"output": 0
|
|
314227
|
-
}
|
|
314275
|
+
},
|
|
314276
|
+
"canonical_model_id": "google/gemma-4-26b-a4b-it"
|
|
314228
314277
|
},
|
|
314229
|
-
"
|
|
314230
|
-
"id": "
|
|
314231
|
-
"name": "
|
|
314232
|
-
"description": "Open
|
|
314233
|
-
"family": "
|
|
314234
|
-
"attachment":
|
|
314278
|
+
"qwen3.6": {
|
|
314279
|
+
"id": "qwen3.6",
|
|
314280
|
+
"name": "Qwen3.6 35B-A3B",
|
|
314281
|
+
"description": "Open multimodal Qwen MoE for local agents that need vision, audio, and code",
|
|
314282
|
+
"family": "qwen",
|
|
314283
|
+
"attachment": true,
|
|
314235
314284
|
"reasoning": true,
|
|
314236
|
-
"reasoning_options": [
|
|
314285
|
+
"reasoning_options": [
|
|
314286
|
+
{
|
|
314287
|
+
"type": "effort",
|
|
314288
|
+
"values": [
|
|
314289
|
+
"none",
|
|
314290
|
+
"low",
|
|
314291
|
+
"medium",
|
|
314292
|
+
"high",
|
|
314293
|
+
"max"
|
|
314294
|
+
]
|
|
314295
|
+
}
|
|
314296
|
+
],
|
|
314237
314297
|
"tool_call": true,
|
|
314238
314298
|
"structured_output": true,
|
|
314239
314299
|
"temperature": true,
|
|
314240
|
-
"release_date": "2026-
|
|
314241
|
-
"last_updated": "2026-
|
|
314300
|
+
"release_date": "2026-04-17",
|
|
314301
|
+
"last_updated": "2026-04-17",
|
|
314242
314302
|
"modalities": {
|
|
314243
314303
|
"input": [
|
|
314244
|
-
"text"
|
|
314304
|
+
"text",
|
|
314305
|
+
"image"
|
|
314245
314306
|
],
|
|
314246
314307
|
"output": [
|
|
314247
314308
|
"text"
|
|
@@ -314249,35 +314310,32 @@
|
|
|
314249
314310
|
},
|
|
314250
314311
|
"open_weights": true,
|
|
314251
314312
|
"limit": {
|
|
314252
|
-
"context":
|
|
314253
|
-
"output":
|
|
314313
|
+
"context": 262144,
|
|
314314
|
+
"output": 65536
|
|
314254
314315
|
},
|
|
314255
314316
|
"cost": {
|
|
314256
314317
|
"input": 0,
|
|
314257
314318
|
"output": 0
|
|
314258
|
-
}
|
|
314319
|
+
},
|
|
314320
|
+
"canonical_model_id": "alibaba/qwen3.6-35b-a3b"
|
|
314259
314321
|
},
|
|
314260
|
-
"
|
|
314261
|
-
"id": "
|
|
314262
|
-
"name": "
|
|
314263
|
-
"description": "
|
|
314264
|
-
"family": "
|
|
314322
|
+
"mimo-v2.6-flash": {
|
|
314323
|
+
"id": "mimo-v2.6-flash",
|
|
314324
|
+
"name": "MiMo-V2.6-Flash",
|
|
314325
|
+
"description": "MiMo Flash model for multimodal coding agents and long-context automation",
|
|
314326
|
+
"family": "mimo",
|
|
314265
314327
|
"attachment": true,
|
|
314266
314328
|
"reasoning": true,
|
|
314267
|
-
"reasoning_options": [
|
|
314268
|
-
{
|
|
314269
|
-
"type": "toggle"
|
|
314270
|
-
}
|
|
314271
|
-
],
|
|
314329
|
+
"reasoning_options": [],
|
|
314272
314330
|
"tool_call": true,
|
|
314273
|
-
"structured_output": true,
|
|
314274
314331
|
"temperature": true,
|
|
314275
|
-
"release_date": "2026-
|
|
314276
|
-
"last_updated": "2026-
|
|
314332
|
+
"release_date": "2026-09-22",
|
|
314333
|
+
"last_updated": "2026-09-22",
|
|
314277
314334
|
"modalities": {
|
|
314278
314335
|
"input": [
|
|
314279
314336
|
"text",
|
|
314280
|
-
"image"
|
|
314337
|
+
"image",
|
|
314338
|
+
"audio"
|
|
314281
314339
|
],
|
|
314282
314340
|
"output": [
|
|
314283
314341
|
"text"
|
|
@@ -314285,13 +314343,14 @@
|
|
|
314285
314343
|
},
|
|
314286
314344
|
"open_weights": true,
|
|
314287
314345
|
"limit": {
|
|
314288
|
-
"context":
|
|
314289
|
-
"output":
|
|
314346
|
+
"context": 1048576,
|
|
314347
|
+
"output": 131072
|
|
314290
314348
|
},
|
|
314291
314349
|
"cost": {
|
|
314292
314350
|
"input": 0,
|
|
314293
314351
|
"output": 0
|
|
314294
|
-
}
|
|
314352
|
+
},
|
|
314353
|
+
"canonical_model_id": "xiaomi/mimo-v2.6-flash"
|
|
314295
314354
|
},
|
|
314296
314355
|
"qwen3.8-flash": {
|
|
314297
314356
|
"id": "qwen3.8-flash",
|
|
@@ -314322,21 +314381,65 @@
|
|
|
314322
314381
|
"cost": {
|
|
314323
314382
|
"input": 0,
|
|
314324
314383
|
"output": 0
|
|
314325
|
-
}
|
|
314384
|
+
},
|
|
314385
|
+
"canonical_model_id": "alibaba/qwen3.8-flash"
|
|
314326
314386
|
},
|
|
314327
|
-
"glm5.3
|
|
314328
|
-
"id": "glm5.3
|
|
314329
|
-
"name": "GLM-5.3
|
|
314330
|
-
"description": "
|
|
314387
|
+
"glm5.3": {
|
|
314388
|
+
"id": "glm5.3",
|
|
314389
|
+
"name": "GLM-5.3",
|
|
314390
|
+
"description": "Flagship GLM model for long-horizon coding, agents, and complex project delivery",
|
|
314331
314391
|
"family": "glm",
|
|
314392
|
+
"attachment": false,
|
|
314393
|
+
"reasoning": true,
|
|
314394
|
+
"reasoning_options": [
|
|
314395
|
+
{
|
|
314396
|
+
"type": "effort",
|
|
314397
|
+
"values": [
|
|
314398
|
+
"low",
|
|
314399
|
+
"medium",
|
|
314400
|
+
"high",
|
|
314401
|
+
"max"
|
|
314402
|
+
]
|
|
314403
|
+
}
|
|
314404
|
+
],
|
|
314405
|
+
"tool_call": true,
|
|
314406
|
+
"structured_output": true,
|
|
314407
|
+
"temperature": true,
|
|
314408
|
+
"release_date": "2026-08-14",
|
|
314409
|
+
"last_updated": "2026-08-14",
|
|
314410
|
+
"modalities": {
|
|
314411
|
+
"input": [
|
|
314412
|
+
"text"
|
|
314413
|
+
],
|
|
314414
|
+
"output": [
|
|
314415
|
+
"text"
|
|
314416
|
+
]
|
|
314417
|
+
},
|
|
314418
|
+
"open_weights": true,
|
|
314419
|
+
"limit": {
|
|
314420
|
+
"context": 1000000,
|
|
314421
|
+
"output": 131072
|
|
314422
|
+
},
|
|
314423
|
+
"cost": {
|
|
314424
|
+
"input": 0,
|
|
314425
|
+
"output": 0
|
|
314426
|
+
},
|
|
314427
|
+
"canonical_model_id": "zhipuai/glm-5.3"
|
|
314428
|
+
},
|
|
314429
|
+
"deepseek-v4-flash": {
|
|
314430
|
+
"id": "deepseek-v4-flash",
|
|
314431
|
+
"name": "DeepSeek V4.1 Flash",
|
|
314432
|
+
"description": "DeepSeek V4.1 Flash model for reasoning and agentic coding",
|
|
314433
|
+
"family": "deepseek-flash",
|
|
314332
314434
|
"attachment": true,
|
|
314333
314435
|
"reasoning": true,
|
|
314334
314436
|
"reasoning_options": [],
|
|
314335
314437
|
"tool_call": true,
|
|
314336
314438
|
"structured_output": true,
|
|
314337
314439
|
"temperature": true,
|
|
314338
|
-
"
|
|
314339
|
-
"
|
|
314440
|
+
"knowledge": "2025-05",
|
|
314441
|
+
"release_date": "2026-09-10",
|
|
314442
|
+
"last_updated": "2026-09-10",
|
|
314340
314443
|
"modalities": {
|
|
314341
314444
|
"input": [
|
|
314342
314445
|
"text",
|
|
@@ -314346,9 +314449,41 @@
|
|
|
314346
314449
|
"text"
|
|
314347
314450
|
]
|
|
314348
314451
|
},
|
|
314349
|
-
"open_weights":
|
|
314452
|
+
"open_weights": true,
|
|
314350
314453
|
"limit": {
|
|
314351
314454
|
"context": 1000000,
|
|
314455
|
+
"output": 384000
|
|
314456
|
+
},
|
|
314457
|
+
"cost": {
|
|
314458
|
+
"input": 0,
|
|
314459
|
+
"output": 0
|
|
314460
|
+
},
|
|
314461
|
+
"canonical_model_id": "deepseek/deepseek-v4.1-flash"
|
|
314462
|
+
},
|
|
314463
|
+
"glm5.2": {
|
|
314464
|
+
"id": "glm5.2",
|
|
314465
|
+
"name": "GLM-5.2",
|
|
314466
|
+
"description": "Open flagship GLM for long-horizon coding agents, served at 500K context on the NaN premium tier",
|
|
314467
|
+
"family": "glm",
|
|
314468
|
+
"attachment": false,
|
|
314469
|
+
"reasoning": true,
|
|
314470
|
+
"reasoning_options": [],
|
|
314471
|
+
"tool_call": true,
|
|
314472
|
+
"structured_output": true,
|
|
314473
|
+
"temperature": true,
|
|
314474
|
+
"release_date": "2026-06-13",
|
|
314475
|
+
"last_updated": "2026-06-13",
|
|
314476
|
+
"modalities": {
|
|
314477
|
+
"input": [
|
|
314478
|
+
"text"
|
|
314479
|
+
],
|
|
314480
|
+
"output": [
|
|
314481
|
+
"text"
|
|
314482
|
+
]
|
|
314483
|
+
},
|
|
314484
|
+
"open_weights": true,
|
|
314485
|
+
"limit": {
|
|
314486
|
+
"context": 500000,
|
|
314352
314487
|
"output": 131072
|
|
314353
314488
|
},
|
|
314354
314489
|
"cost": {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { withRegistryCatalogSections } from "@desplega/model-catalog";
|
|
3
4
|
|
|
4
5
|
export interface ModelsDevCostBlock {
|
|
5
6
|
input?: number;
|
|
@@ -53,6 +54,11 @@ const parsedCaches = new Map<string, WeakRef<ModelsDevCache>>();
|
|
|
53
54
|
* fetches the live catalog from `GET /api/models-catalog`
|
|
54
55
|
* (`src/be/models-catalog.ts`) and only falls back to its bundled copy of
|
|
55
56
|
* this snapshot when that request hasn't resolved.
|
|
57
|
+
*
|
|
58
|
+
* The result also carries the sections of the OpenAI-compatible registry
|
|
59
|
+
* providers models.dev does not list (`helmcode`), synthesized from the
|
|
60
|
+
* registry (`withRegistryCatalogSections`), so every snapshot consumer
|
|
61
|
+
* (catalog, pricing seed, tier resolution) sees them like any other section.
|
|
56
62
|
*/
|
|
57
63
|
export function loadModelsDevCache(): ModelsDevCache | null {
|
|
58
64
|
const explicitPath = process.env.MODELSDEV_CACHE_PATH;
|
|
@@ -67,7 +73,9 @@ export function loadModelsDevCache(): ModelsDevCache | null {
|
|
|
67
73
|
const memoized = parsedCaches.get(candidate)?.deref();
|
|
68
74
|
if (memoized) return memoized;
|
|
69
75
|
try {
|
|
70
|
-
const parsed =
|
|
76
|
+
const parsed = withRegistryCatalogSections(
|
|
77
|
+
JSON.parse(readFileSync(candidate, "utf-8")) as ModelsDevCache,
|
|
78
|
+
);
|
|
71
79
|
parsedCaches.set(candidate, new WeakRef(parsed));
|
|
72
80
|
return parsed;
|
|
73
81
|
} catch {
|
|
@@ -11,6 +11,7 @@ import { registerVolatileSecret } from "@/utils/secret-scrubber";
|
|
|
11
11
|
import { getResolvedConfig } from "./db";
|
|
12
12
|
import { resolveOAuthBindingToken } from "./oauth-credential-bindings";
|
|
13
13
|
import { listRelationalCredentialBindings } from "./script-connections";
|
|
14
|
+
import { isApiOnlyConfigKey, isInternalConfigKey } from "./swarm-config-guard";
|
|
14
15
|
|
|
15
16
|
// Relational-only credential binding store. The legacy SCRIPT_CREDENTIAL_BINDINGS
|
|
16
17
|
// swarm-config JSON blob is retired (migrated to relational rows at boot), so
|
|
@@ -22,6 +23,32 @@ class RelationalCredentialBindingStore implements CredentialBindingStore {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
export type ScriptUserConfig = Record<string, { value: string; isSecret: boolean }>;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The values behind `ctx.swarm.config.get(KEY)`: the invoking agent's resolved
|
|
30
|
+
* config (agent over global, plus repo when given), minus the keys the
|
|
31
|
+
* `/api/config/resolved` route never hands out. A script's own SDK bearer
|
|
32
|
+
* already reads every one of these through `ctx.swarm.config_get`, so this
|
|
33
|
+
* widens nothing; it only makes the documented accessor return them. Secret
|
|
34
|
+
* values are registered with the scrubber so they never leave in run output.
|
|
35
|
+
*/
|
|
36
|
+
function toScriptUserConfig(configs: Awaited<ReturnType<typeof getResolvedConfig>>) {
|
|
37
|
+
const exposed = configs.filter(
|
|
38
|
+
(config) => !isApiOnlyConfigKey(config.key) && !isInternalConfigKey(config.key),
|
|
39
|
+
);
|
|
40
|
+
for (const config of exposed) {
|
|
41
|
+
if (config.isSecret && config.value) {
|
|
42
|
+
registerVolatileSecret(config.value, `config:${config.key}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// fromEntries defines own properties, so a `__proto__` key survives
|
|
46
|
+
// (assigning it into `{}` would hit the prototype setter instead).
|
|
47
|
+
return Object.fromEntries(
|
|
48
|
+
exposed.map((config) => [config.key, { value: config.value, isSecret: config.isSecret }]),
|
|
49
|
+
) as ScriptUserConfig;
|
|
50
|
+
}
|
|
51
|
+
|
|
25
52
|
/**
|
|
26
53
|
* Resolve credential bindings for a script run, partitioning OAuth bindings
|
|
27
54
|
* whose refresh failed into `failedBindings` (surfaced to the sandbox so the
|
|
@@ -32,8 +59,14 @@ class RelationalCredentialBindingStore implements CredentialBindingStore {
|
|
|
32
59
|
export async function buildScriptCredentialBindingsWithFailures(input: {
|
|
33
60
|
agentId?: string;
|
|
34
61
|
repoId?: string;
|
|
35
|
-
}): Promise<{
|
|
62
|
+
}): Promise<{
|
|
63
|
+
egressSecrets: EgressSecretEntry[];
|
|
64
|
+
failedBindings: FailedCredentialBinding[];
|
|
65
|
+
userConfig: ScriptUserConfig;
|
|
66
|
+
}> {
|
|
36
67
|
const resolvedConfigs = await getResolvedConfig(input.agentId, input.repoId);
|
|
68
|
+
// Before the binding loop below, so a binding's own scrubber label wins.
|
|
69
|
+
const userConfig = toScriptUserConfig(resolvedConfigs);
|
|
37
70
|
const configMap = new Map(resolvedConfigs.map((config) => [config.key, config.value]));
|
|
38
71
|
const broker = new CredentialBroker(
|
|
39
72
|
new RelationalCredentialBindingStore(),
|
|
@@ -49,7 +82,11 @@ export async function buildScriptCredentialBindingsWithFailures(input: {
|
|
|
49
82
|
for (const binding of resolved) {
|
|
50
83
|
registerVolatileSecret(binding.value, binding.configKey);
|
|
51
84
|
}
|
|
52
|
-
return {
|
|
85
|
+
return {
|
|
86
|
+
egressSecrets: resolved,
|
|
87
|
+
failedBindings: failed,
|
|
88
|
+
userConfig,
|
|
89
|
+
};
|
|
53
90
|
}
|
|
54
91
|
|
|
55
92
|
export async function buildScriptCredentialBindings(input: {
|
|
@@ -52,6 +52,7 @@ export async function runSavedScriptAsAgent(
|
|
|
52
52
|
agentId: args.agentId,
|
|
53
53
|
egressSecrets: credentials.egressSecrets,
|
|
54
54
|
failedBindings: credentials.failedBindings,
|
|
55
|
+
userConfig: credentials.userConfig,
|
|
55
56
|
apiConnections: getScriptApiConnectionDescriptors({ agentId: args.agentId }),
|
|
56
57
|
mcpConnections: getScriptMcpConnectionDescriptors({ agentId: args.agentId }),
|
|
57
58
|
...(args.timeoutMs ? { timeoutMs: args.timeoutMs } : {}),
|
|
@@ -232,13 +232,15 @@ export interface SwarmSdk {
|
|
|
232
232
|
// --- config ---
|
|
233
233
|
config_get(args?: { agentId?: string; repoId?: string; key?: string; includeSecrets?: boolean }): Promise<unknown>;
|
|
234
234
|
config_list(args?: { scope?: "global" | "agent" | "repo"; scopeId?: string; key?: string; includeSecrets?: boolean }): Promise<unknown>;
|
|
235
|
+
// --- model profiles ---
|
|
236
|
+
modelProfile_list(args?: { harness?: string }): Promise<unknown>;
|
|
235
237
|
// --- slack ---
|
|
236
238
|
slack_read(args?: { inboxMessageId?: string; taskId?: string; channelId?: string; threadTs?: string; limit?: number; includeFiles?: boolean }): Promise<unknown>;
|
|
237
239
|
slack_listChannels(args?: { types?: Array<"public" | "private" | "dm" | "mpim">; limit?: number }): Promise<unknown>;
|
|
240
|
+
// --- chat sdk ---
|
|
241
|
+
chat_readThread(args: { threadId: string; limit?: number }): Promise<unknown>;
|
|
238
242
|
// --- messaging ---
|
|
239
243
|
message_read(args?: { channel?: string; limit?: number; since?: string; unreadOnly?: boolean; mentionsOnly?: boolean; markAsRead?: boolean }): Promise<unknown>;
|
|
240
|
-
// --- services ---
|
|
241
|
-
service_list(args?: { agentId?: string; name?: string; status?: "starting" | "healthy" | "unhealthy" | "stopped"; includeOwn?: boolean }): Promise<unknown>;
|
|
242
244
|
// --- context / profiles ---
|
|
243
245
|
context_history(args?: { agentId?: string; field?: "soulMd" | "identityMd" | "toolsMd" | "claudeMd" | "setupScript"; limit?: number }): Promise<unknown>;
|
|
244
246
|
context_diff(args: { versionId: string; compareToVersionId?: string }): Promise<unknown>;
|
|
@@ -281,7 +283,7 @@ export interface SwarmSdk {
|
|
|
281
283
|
task_action(args: Record<string, unknown>): Promise<unknown>;
|
|
282
284
|
|
|
283
285
|
// --- write: config ---
|
|
284
|
-
config_set(args: { key: string; value: unknown; scope?: "global" | "agent" | "repo"; scopeId?: string; isSecret?: boolean }): Promise<unknown>;
|
|
286
|
+
config_set(args: { key: string; value: unknown; scope?: "global" | "agent" | "repo"; scopeId?: string; isSecret?: boolean; exportToEnv?: boolean }): Promise<unknown>;
|
|
285
287
|
config_delete(args: { id: string }): Promise<unknown>;
|
|
286
288
|
|
|
287
289
|
// --- write: model catalog ---
|
|
@@ -311,17 +313,19 @@ export interface SwarmSdk {
|
|
|
311
313
|
slack_delete(args: { channelId: string; messageTs: string }): Promise<unknown>;
|
|
312
314
|
slack_update(args: { channelId: string; messageTs: string; message: string }): Promise<unknown>;
|
|
313
315
|
|
|
316
|
+
// --- write: chat sdk ---
|
|
317
|
+
chat_reply(args: { text: string }): Promise<unknown>;
|
|
318
|
+
chat_post(args: { adapter: "telegram" | "slack" | "discord" | "teams"; threadId?: string; channelId?: string; text: string }): Promise<unknown>;
|
|
319
|
+
chat_openDm(args: { adapter: "telegram" | "slack" | "discord" | "teams"; userId: string }): Promise<unknown>;
|
|
320
|
+
chat_registerChannel(args: { adapter: "telegram" | "slack" | "discord" | "teams"; channelId: string; agentId?: string; workflowId?: string; name?: string }): Promise<unknown>;
|
|
321
|
+
chat_unregisterChannel(args: { adapter: "telegram" | "slack" | "discord" | "teams"; channelId: string }): Promise<unknown>;
|
|
322
|
+
|
|
314
323
|
// --- write: messaging (internal) ---
|
|
315
324
|
message_post(args: { channel?: string; content: string; to?: string }): Promise<unknown>;
|
|
316
325
|
|
|
317
326
|
// --- write: profiles ---
|
|
318
327
|
profile_update(args: Record<string, unknown>): Promise<unknown>;
|
|
319
328
|
|
|
320
|
-
// --- write: services ---
|
|
321
|
-
service_register(args: Record<string, unknown>): Promise<unknown>;
|
|
322
|
-
service_unregister(args: { name: string }): Promise<unknown>;
|
|
323
|
-
service_updateStatus(args: { name: string; status: "starting" | "healthy" | "unhealthy" | "stopped" }): Promise<unknown>;
|
|
324
|
-
|
|
325
329
|
// --- write: schedules ---
|
|
326
330
|
schedule_create(args: Record<string, unknown>): Promise<unknown>;
|
|
327
331
|
schedule_update(args: Record<string, unknown>): Promise<unknown>;
|
|
@@ -437,6 +441,16 @@ export interface SwarmSdk {
|
|
|
437
441
|
// --- human input ---
|
|
438
442
|
request_humanInput(args: Record<string, unknown>): Promise<unknown>;
|
|
439
443
|
approval_cancel(args: { requestId: string; reason?: string }): Promise<unknown>;
|
|
444
|
+
|
|
445
|
+
// --- decisions ---
|
|
446
|
+
systemOne_decide(args: {
|
|
447
|
+
provider?: "typesafe" | "openrouter" | "laya" | "openai" | "cloudflare";
|
|
448
|
+
model?: string;
|
|
449
|
+
state: string | string[] | Record<string, unknown>;
|
|
450
|
+
questions: Record<string, Record<string, unknown>>;
|
|
451
|
+
timeoutMs?: number;
|
|
452
|
+
maxRetries?: number;
|
|
453
|
+
}): Promise<unknown>;
|
|
440
454
|
}
|
|
441
455
|
|
|
442
456
|
export interface ScriptStdlib {
|
|
@@ -77,8 +77,12 @@ export function encodedForms(value: string): string[] {
|
|
|
77
77
|
/** Register a stored secret value, plus its encoded forms, with the scrubber. */
|
|
78
78
|
export function registerStoredSecret(value: string | null | undefined, name: string): void {
|
|
79
79
|
if (!value) return;
|
|
80
|
-
|
|
81
|
-
for (const
|
|
80
|
+
// Config values are hydrated verbatim but consumed trimmed.
|
|
81
|
+
for (const candidate of new Set([value, value.trim()])) {
|
|
82
|
+
if (!candidate) continue;
|
|
83
|
+
registerVolatileSecret(candidate, name);
|
|
84
|
+
for (const form of encodedForms(candidate)) registerVolatileSecret(form, name);
|
|
85
|
+
}
|
|
82
86
|
}
|
|
83
87
|
|
|
84
88
|
export interface SecretRegistryLoadResult {
|
package/src/be/seed/runner.ts
CHANGED
|
@@ -22,6 +22,7 @@ export async function runSeeder(seeder: Seeder, opts?: SeederRunOptions): Promis
|
|
|
22
22
|
updated: 0,
|
|
23
23
|
skippedUnchanged: 0,
|
|
24
24
|
skippedUserModified: 0,
|
|
25
|
+
retired: 0,
|
|
25
26
|
failed: [],
|
|
26
27
|
};
|
|
27
28
|
|
|
@@ -77,11 +78,22 @@ export async function runSeeder(seeder: Seeder, opts?: SeederRunOptions): Promis
|
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
|
|
81
|
+
if (seeder.retire) {
|
|
82
|
+
try {
|
|
83
|
+
result.retired = (await seeder.retire()).length;
|
|
84
|
+
} catch (err) {
|
|
85
|
+
result.failed.push({
|
|
86
|
+
key: "(retire)",
|
|
87
|
+
error: err instanceof Error ? err.message : String(err),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
80
92
|
if (!opts?.quiet) {
|
|
81
93
|
console.log(
|
|
82
94
|
`[seed:${result.kind}] created=${result.created} updated=${result.updated} ` +
|
|
83
95
|
`unchanged=${result.skippedUnchanged} preserved=${result.skippedUserModified} ` +
|
|
84
|
-
`failed=${result.failed.length}`,
|
|
96
|
+
`retired=${result.retired} failed=${result.failed.length}`,
|
|
85
97
|
);
|
|
86
98
|
for (const f of result.failed) {
|
|
87
99
|
console.error(`[seed:${result.kind}] FAILED ${f.key}: ${f.error}`);
|
package/src/be/seed/state-db.ts
CHANGED
|
@@ -36,3 +36,8 @@ export async function recordSeedState(
|
|
|
36
36
|
[kind, key, seededHash, new Date().toISOString()],
|
|
37
37
|
);
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
/** Forget `(kind, key)`, e.g. after the seeder retires the entity it seeded. */
|
|
41
|
+
export async function deleteSeedState(kind: string, key: string): Promise<void> {
|
|
42
|
+
await getDbClient().run("DELETE FROM seed_state WHERE kind = ? AND key = ?", [kind, key]);
|
|
43
|
+
}
|
package/src/be/seed/types.ts
CHANGED
|
@@ -53,6 +53,11 @@ export interface Seeder<TItem extends SeedItem = SeedItem> {
|
|
|
53
53
|
upstreamHash(item: TItem): string | null | Promise<string | null>;
|
|
54
54
|
/** Create or update the upstream entity so it matches the source definition. */
|
|
55
55
|
apply(item: TItem, action: "create" | "update", opts?: SeederRunOptions): void | Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Optional: remove upstream entities for keys the source no longer ships.
|
|
58
|
+
* Must leave user-modified entities in place. Returns the removed keys.
|
|
59
|
+
*/
|
|
60
|
+
retire?(): Promise<string[]>;
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
export type SeederResult = {
|
|
@@ -61,5 +66,6 @@ export type SeederResult = {
|
|
|
61
66
|
updated: number;
|
|
62
67
|
skippedUnchanged: number;
|
|
63
68
|
skippedUserModified: number;
|
|
69
|
+
retired: number;
|
|
64
70
|
failed: Array<{ key: string; error: string }>;
|
|
65
71
|
};
|