@desplega.ai/agent-swarm 1.172.0 → 2.0.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-fpecx1g1.js → acp-adapter-sj2g0m84.js} +18 -17
- package/dist/{actions-pw87a1a8.js → actions-fegk44gr.js} +65 -35
- package/dist/{amp-adapter-8jem2bc0.js → amp-adapter-ad8ft89x.js} +8 -7
- package/dist/{anthropic-messages-8ee2f22q.js → anthropic-messages-r6czkjv1.js} +7 -7
- package/dist/{app-wmf0m843.js → app-kfvgbvzy.js} +19 -13
- package/dist/{assistant-emp1e108.js → assistant-z7zdy9ja.js} +65 -38
- package/dist/{boot-reembed-1de4f4aj.js → boot-reembed-5c2z0mbe.js} +11 -9
- package/dist/{boot-reembed-4ymn9atn.js → boot-reembed-j8xa181e.js} +11 -9
- package/dist/{boot-scrub-sweep-adhk1s8c.js → boot-scrub-sweep-hnkn3rgt.js} +12 -10
- package/dist/{boot-seeds-8q637aew.js → boot-seeds-kwjq4d2z.js} +15 -13
- package/dist/{claude-adapter-t26cv8a4.js → claude-adapter-9vmvpvgd.js} +20 -19
- package/dist/{claude-managed-adapter-xgxhqrt2.js → claude-managed-adapter-k9qae05j.js} +7 -5
- package/dist/{claude-managed-setup-bnmjarjc.js → claude-managed-setup-q54zx5q2.js} +6 -4
- package/dist/{claude-sdk-session-gsfsh662.js → claude-sdk-session-9jye6cxr.js} +12698 -11995
- package/dist/{cli-k46r9hmk.js → cli-03gedhng.js} +16 -14
- package/dist/{cli-kb4ehzx5.js → cli-1e4b6bzh.js} +7 -7
- package/dist/{cli-d603qf86.js → cli-29jc5q7w.js} +10 -8
- package/dist/cli-2m1ktfzz.js +17795 -0
- package/dist/{cli-8vs9trd4.js → cli-3dj8k4vy.js} +1 -1
- package/dist/{cli-zxm9p3x4.js → cli-3fbmmawm.js} +5 -5
- package/dist/{cli-gmdajfw5.js → cli-4jxm2qtz.js} +4987 -1708
- package/dist/{cli-tadfgd0t.js → cli-5hkm7whv.js} +33 -4
- package/dist/{cli-6jb2rf77.js → cli-5t4f29ez.js} +3 -3
- package/dist/{cli-7a0sde2x.js → cli-6cagzc96.js} +9 -0
- package/dist/cli-6cvfxs8r.js +47 -0
- package/dist/{cli-pj6x9qce.js → cli-6jyj59nb.js} +2 -2
- package/dist/{cli-388egyf6.js → cli-6razj6t4.js} +2 -2
- package/dist/{cli-qsztpfry.js → cli-74ahz61x.js} +2 -2
- package/dist/{cli-4nz8p1p5.js → cli-7x0g4sn1.js} +15474 -16082
- package/dist/{cli-yatxqynm.js → cli-9ha6hs2d.js} +1 -290
- package/dist/{cli-81r1wjyv.js → cli-9nfx44eh.js} +1 -1
- package/dist/cli-9traj3dn.js +638 -0
- package/dist/{cli-smcrrmhy.js → cli-agzebbd5.js} +9 -9
- package/dist/{cli-bf7485pm.js → cli-apx87jne.js} +2 -2
- package/dist/{cli-ztrv9y21.js → cli-bzszjf2p.js} +3689 -1081
- package/dist/{cli-c5km5znr.js → cli-c8r3kzzb.js} +1 -1
- package/dist/{cli-hsem16hb.js → cli-cgtksawx.js} +7 -4
- package/dist/{cli-db3m6zdt.js → cli-d2qr7aj4.js} +1 -1
- package/dist/{cli-1hgat6pa.js → cli-d5f9ed5c.js} +5 -5
- package/dist/cli-e3g5mbkz.js +776 -0
- package/dist/{cli-7jykv7ef.js → cli-e6mpjhed.js} +1 -1
- package/dist/{cli-j6kpj9az.js → cli-ee9gtz70.js} +1553 -68
- package/dist/{cli-e0a9sk00.js → cli-eejsgvm4.js} +4 -4
- package/dist/{cli-tgpfnm6r.js → cli-ef1hg1wv.js} +518 -59
- package/dist/cli-f527ce74.js +781 -0
- package/dist/{cli-ppy4nnnh.js → cli-f7kr7svz.js} +2 -2
- package/dist/cli-hjwmhcg1.js +10622 -0
- package/dist/{cli-2bw3w47j.js → cli-hnhtk6cj.js} +1 -1
- package/dist/{cli-ywm1azg9.js → cli-hnmhtzvh.js} +6 -4
- package/dist/{cli-4fnb6884.js → cli-hvqbtna4.js} +7 -1259
- package/dist/{cli-pstq9888.js → cli-j0pfptdp.js} +220 -103
- package/dist/cli-jta2eyzc.js +619 -0
- package/dist/{cli-esnpehf5.js → cli-k382tshb.js} +12 -13
- package/dist/cli-k3dp5tpf.js +263 -0
- package/dist/{cli-wd0hz6ah.js → cli-kbrt8gqa.js} +9 -91
- package/dist/cli-kceah1eh.js +92 -0
- package/dist/{cli-prrt9fa0.js → cli-ke896fcf.js} +10 -10
- package/dist/{cli-nv4zd0b9.js → cli-kt6zqg0e.js} +6 -6
- package/dist/{cli-g6t9texm.js → cli-m50t4309.js} +5 -18
- package/dist/cli-n2wq4j7m.js +6985 -0
- package/dist/{cli-c2pq2rjb.js → cli-n3hzg89b.js} +46 -15
- package/dist/{cli-tmhsxhb8.js → cli-n5vwg842.js} +23 -6
- package/dist/{cli-5rv1j9ga.js → cli-ne236afy.js} +53 -7
- package/dist/cli-p0sg24zp.js +16 -0
- package/dist/{cli-d161g69q.js → cli-p1x85d2t.js} +50 -2
- package/dist/{cli-7pz3b7x5.js → cli-przpmdgr.js} +25 -0
- package/dist/{cli-g4f5pj26.js → cli-q0ke1yww.js} +111 -25
- package/dist/{cli-e3pmyt39.js → cli-q50942rs.js} +1 -1
- package/dist/{cli-r44t9wqc.js → cli-r106725k.js} +2 -2
- package/dist/{cli-gj81e47t.js → cli-r2pnvj8g.js} +2 -2
- package/dist/{cli-r8smj8b8.js → cli-r62a35ea.js} +19 -3
- package/dist/{cli-cd0hv9nh.js → cli-ra0xzggj.js} +2 -2
- package/dist/cli-rhs9pz33.js +294 -0
- package/dist/{cli-nyhb1r6x.js → cli-s2sp957d.js} +52 -29
- package/dist/{cli-1x7da0de.js → cli-s4setq91.js} +8 -8
- package/dist/{cli-xczpdp9e.js → cli-se8w6wny.js} +6 -6
- package/dist/cli-skxvvpap.js +10140 -0
- package/dist/{cli-014vns2y.js → cli-stfs0k5s.js} +208 -525
- package/dist/{cli-0p3enk35.js → cli-tqaazemc.js} +9 -1
- package/dist/{cli-cf69s3ew.js → cli-tr4sxp68.js} +3 -3
- package/dist/{cli-8hzfb6xz.js → cli-tsde1hdr.js} +15 -15
- package/dist/{cli-cceskcvt.js → cli-txqb9s38.js} +8 -8
- package/dist/{cli-aspcaef3.js → cli-v1yb0rqb.js} +6 -6
- package/dist/{cli-j1pmc07z.js → cli-vatyhshy.js} +268 -40
- package/dist/{cli-04emfe2q.js → cli-vdach5a9.js} +5 -5
- package/dist/{cli-7avy4v8w.js → cli-w1q7h2r2.js} +5 -3
- package/dist/{cli-rcp5aqdw.js → cli-w7m81tb7.js} +1 -1
- package/dist/{cli-hwwvy36w.js → cli-wayw93nt.js} +3 -3
- package/dist/cli-wmgrkscj.js +23254 -0
- package/dist/{cli-gp1rtyvk.js → cli-z5jjpaxw.js} +29 -6
- package/dist/{cli-451ks6aw.js → cli-zkpks3r3.js} +1 -1
- package/dist/cli.js +32 -48
- package/dist/{codex-adapter-m4tgdysy.js → codex-adapter-y81sssk0.js} +16 -15
- package/dist/{codex-login-841kv5fk.js → codex-login-f2rcfpp9.js} +3 -2
- package/dist/{codex-session-runner-ymwzm6ea.js → codex-session-runner-8vx4j6a9.js} +16 -15
- package/dist/{commands-n0hshcvs.js → commands-kcpvpcrr.js} +21 -10
- package/dist/{controller-hq5ggpcp.js → controller-ywrmt6yd.js} +5 -4
- package/dist/{controllers-connect-y07cqcvy.js → controllers-connect-kwpvj3rf.js} +45 -38
- package/dist/{cursor-adapter-q8pgv5qa.js → cursor-adapter-cehv1qns.js} +7 -6
- package/dist/{db-hkqvrdcb.js → db-k8ankj20.js} +13 -11
- package/dist/{db-4w7tmt1g.js → db-ww5d7jq3.js} +29 -9
- package/dist/{devin-adapter-xgtj680j.js → devin-adapter-x1022qb1.js} +3 -2
- package/dist/{dispatcher-5sd69y14.js → dispatcher-e8gq5m68.js} +41 -34
- package/dist/{docker-f503k9p0.js → docker-ff6y1190.js} +3 -2
- package/dist/{dsh-adapter-2h8m4cab.js → dsh-adapter-3epjm3af.js} +7 -6
- package/dist/{e2b-66xra4az.js → e2b-8ygwhg0f.js} +4 -3
- package/dist/{e2b-xwhyj8cw.js → e2b-swhnpw3n.js} +4 -3
- package/dist/{event-bus-vjtv82gm.js → event-bus-6axnngdj.js} +3 -2
- package/dist/external-channel-h3359cwn.js +52 -0
- package/dist/{google-generative-ai-7pavrbv7.js → google-generative-ai-g8db7x0f.js} +5 -3
- package/dist/{google-vertex-3f1jk41f.js → google-vertex-r2692q0r.js} +5 -3
- package/dist/{grok-adapter-8m9yqzbq.js → grok-adapter-0d4x7gkx.js} +19 -18
- package/dist/{handlers-s20xr10r.js → handlers-an1gzv21.js} +44 -37
- package/dist/{heartbeat-3k31q4g2.js → heartbeat-6dakeb61.js} +46 -39
- package/dist/{hook-gdn6a2fn.js → hook-6v6cv6d5.js} +12 -24
- package/dist/{hook-ygwerrdh.js → hook-sa5xye4y.js} +13 -12
- package/dist/{http-jdteeg81.js → http-r7f3eky0.js} +1598 -279
- package/dist/index-52j1aja4.js +3465 -0
- package/dist/{index-e0snym4t.js → index-7ep4gzdk.js} +41 -34
- 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-vm3bm9t7.js → index-rmpw9a8q.js} +41 -34
- package/dist/{index-6ksewd5y.js → index-s2wxgzr0.js} +1015 -732
- package/dist/{index-tsszt7g9.js → index-v1v6n7hg.js} +46 -39
- package/dist/index-we27kd31.js +12810 -0
- package/dist/{index-ffqzqgwb.js → index-zk96aq1k.js} +11 -9
- package/dist/{keepalive-jekc896t.js → keepalive-be9vwy5h.js} +13 -11
- package/dist/{lead-4k9s9szx.js → lead-0861cwrf.js} +64 -57
- package/dist/{maintenance-shazch4n.js → maintenance-mzzgc8bn.js} +11 -9
- package/dist/node-c9we95xf.js +1 -1
- package/dist/{node-fkajaq96.js → node-mn1zs7an.js} +2 -1
- package/dist/{oauth-refresh-sweep-5gb36kn8.js → oauth-refresh-sweep-cpdnfwdj.js} +12 -10
- package/dist/{onboard-ydrbnvww.js → onboard-fh8qs4r3.js} +11 -3
- package/dist/{opencode-adapter-5zh0he20.js → opencode-adapter-nm42wwj8.js} +19 -14
- package/dist/{otel-impl-6pf5cv86.js → otel-impl-x6c1c9g4.js} +248 -869
- package/dist/{pi-mono-adapter-ef9wwx9m.js → pi-mono-adapter-9n2ya240.js} +245 -107
- package/dist/{pricing-refresh-s52nsa5q.js → pricing-refresh-qb0rv0ap.js} +13 -11
- package/dist/{rbac-roles-aq3msh4e.js → rbac-roles-1gzdwbh1.js} +12 -10
- package/dist/{rbac-roles-q5gb5e8v.js → rbac-roles-3mraey52.js} +13 -11
- package/dist/{render-v2-pd1rg54q.js → render-v2-agpa45zz.js} +19 -13
- package/dist/{resume-gw4a2c6v.js → resume-x0ydy9s9.js} +27 -21
- package/dist/{runtime-qfry88v2.js → runtime-sa2vr16g.js} +2 -2
- package/dist/{setup-jda1ksdh.js → setup-as9ga0d6.js} +2 -2
- package/dist/{virtual-modules-b3ga2m65.js → virtual-modules-9gkxqrap.js} +7 -6
- package/dist/{work-objects-tb7ycye8.js → work-objects-y5g1y7ev.js} +49 -37
- package/dist/{worker-njjccz5d.js → worker-860c3e38.js} +64 -57
- package/dist/{x-qfmygqqv.js → x-m477fr0h.js} +3 -2
- package/openapi.json +951 -356
- package/package.json +12 -13
- package/src/apps/catalog.generated.json +1309 -53
- package/src/apps/page-validator.ts +93 -31
- package/src/azure-devops/api.ts +94 -18
- package/src/azure-devops/auth.ts +32 -0
- package/src/azure-devops/boards-sync.ts +708 -0
- package/src/azure-devops/handlers.ts +52 -8
- package/src/azure-devops/html.ts +26 -0
- package/src/azure-devops/index.ts +15 -0
- package/src/azure-devops/templates.ts +86 -0
- package/src/azure-devops/types.ts +65 -1
- package/src/be/config-refs.ts +60 -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 +230 -0
- package/src/be/db/tasks/write.ts +7 -0
- package/src/be/db.ts +74 -13
- package/src/be/migrations/213_script_connections_sql.sql +79 -0
- 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/model-catalog-store.ts +5 -1
- package/src/be/model-tier-resolution.ts +12 -1
- package/src/be/model-validation.ts +5 -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-connections.ts +47 -8
- package/src/be/script-credential-broker.ts +39 -2
- package/src/be/scripts/run-saved.ts +1 -0
- package/src/be/scripts/typecheck.ts +10 -8
- 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-pricing.ts +19 -2
- 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-skills/bundled-files.generated.json +10 -18
- package/src/be/seed-skills/index.ts +107 -3
- package/src/be/sql-connections.ts +118 -0
- 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/profile-sync.ts +5 -3
- package/src/commands/provider-credentials.ts +52 -6
- package/src/commands/runner.ts +196 -56
- package/src/e2b/env.ts +5 -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/post-bridge.ts +40 -0
- package/src/github/handlers.ts +11 -4
- package/src/heartbeat/templates.ts +8 -5
- package/src/hooks/hook.ts +0 -26
- package/src/http/all-routes.ts +0 -1
- package/src/http/config.ts +36 -17
- package/src/http/core.ts +4 -0
- package/src/http/index.ts +14 -2
- package/src/http/integrations.ts +88 -1
- package/src/http/mcp-oauth.ts +6 -13
- package/src/http/mcp.ts +15 -5
- package/src/http/page-proxy.ts +2 -4
- package/src/http/pages-public.ts +6 -5
- package/src/http/pages.ts +5 -14
- package/src/http/poll.ts +28 -68
- package/src/http/requested-by.ts +54 -0
- package/src/http/route-def.ts +7 -6
- package/src/http/script-connection-proxy.ts +51 -4
- package/src/http/script-connections.ts +5 -2
- package/src/http/scripts.ts +1 -0
- package/src/http/session-cost-recompute.ts +12 -2
- package/src/http/session-data.ts +4 -0
- package/src/http/stats.ts +1 -30
- package/src/http/tasks.ts +61 -5
- package/src/http/utils.ts +14 -0
- package/src/http/webhooks.ts +183 -2
- 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/jira/adf.ts +3 -1
- package/src/kv-reserved-namespaces.ts +2 -0
- package/src/oauth/mcp-wrapper.ts +10 -6
- package/src/otel-impl.ts +2 -1
- 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 +27 -2
- package/src/providers/claude-flag-settings.ts +133 -0
- package/src/providers/claude-managed-adapter.ts +1 -1
- package/src/providers/claude-sdk-session.ts +7 -0
- package/src/providers/claude-session-events.ts +6 -1
- package/src/providers/dsh-adapter.ts +1 -1
- package/src/providers/opencode-adapter.ts +268 -37
- package/src/providers/opencode-billing.ts +86 -0
- package/src/providers/opencode-swarm-plugin.ts +51 -0
- package/src/providers/pi-mono-adapter.ts +398 -153
- package/src/providers/pricing-sources.md +37 -3
- package/src/providers/reasoning-effort.ts +27 -0
- package/src/providers/types.ts +11 -2
- package/src/rbac/legacy-policy.ts +8 -2
- package/src/rbac/permissions.ts +21 -0
- package/src/scheduler/scheduler.ts +4 -2
- package/src/scripts-runtime/api-client.ts +15 -1
- package/src/scripts-runtime/api-types.ts +9 -1
- package/src/scripts-runtime/ctx.ts +1 -1
- package/src/scripts-runtime/loader.ts +19 -7
- package/src/scripts-runtime/mcp-client.ts +30 -19
- package/src/scripts-runtime/sdk-allowlist.ts +8 -6
- package/src/scripts-runtime/swarm-sdk.ts +0 -11
- package/src/scripts-runtime/types/stdlib.d.ts +27 -15
- package/src/scripts-runtime/types/swarm-extension.d.ts +63 -1
- package/src/scripts-runtime/types/swarm-sdk.d.ts +27 -15
- package/src/server.ts +52 -18
- package/src/slack/actions.ts +29 -1
- package/src/slack/app.ts +14 -2
- package/src/slack/assistant.ts +36 -2
- package/src/slack/channel-join.ts +3 -16
- package/src/slack/commands.ts +9 -1
- package/src/slack/event-dedup.ts +1 -1
- package/src/slack/external-channel-egress.ts +113 -0
- package/src/slack/external-channel.ts +309 -0
- package/src/slack/handlers.ts +61 -0
- package/src/slack/render-v2.ts +40 -47
- package/src/slack/work-objects.ts +5 -0
- package/src/tasks/additive-buffer.ts +4 -2
- package/src/tasks/context-key.ts +94 -2
- package/src/tasks/model-pin.ts +67 -0
- package/src/tasks/worker-follow-up.ts +4 -31
- package/src/telemetry.ts +2 -1
- package/src/tests/acp-adapter.test.ts +42 -0
- package/src/tests/api-drain-worker-e2e.test.ts +1 -6
- package/src/tests/apps-catalog-feedback.test.ts +310 -0
- package/src/tests/apps-catalog-inputs.test.ts +70 -0
- package/src/tests/apps-catalog-table.test.ts +113 -0
- package/src/tests/azure-devops-boards-sync.test.ts +584 -0
- package/src/tests/azure-devops-html.test.ts +13 -0
- package/src/tests/azure-devops-webhook-malformed.test.ts +4 -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 +144 -0
- package/src/tests/claude-flag-settings.test.ts +114 -0
- package/src/tests/claude-managed-adapter.test.ts +1 -1
- package/src/tests/claude-sdk-lifecycle.test.ts +148 -1
- package/src/tests/claude-sdk-process.fixture.ts +7 -0
- 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 +51 -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 +20 -0
- package/src/tests/db-task-write-contract.test.ts +10 -0
- package/src/tests/deferred-task-wake.test.ts +52 -4
- 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/explicit-model-validation.test.ts +105 -1
- package/src/tests/extensions-example-route-chat-channel.test.ts +154 -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/azure-boards/workitem.commented.json +89 -0
- package/src/tests/fixtures/azure-boards/workitem.created.json +81 -0
- package/src/tests/fixtures/azure-boards/workitem.deleted.json +70 -0
- package/src/tests/fixtures/azure-boards/workitem.restored.json +82 -0
- package/src/tests/fixtures/azure-boards/workitem.updated.json +130 -0
- package/src/tests/fixtures/catalog-feedback-definition.json.txt +860 -0
- package/src/tests/fixtures/catalog-inputs-definition.json.txt +910 -0
- package/src/tests/fixtures/catalog-table-definition.json.txt +468 -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-identity-refresh.ts +3 -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/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-tier-resolution.test.ts +93 -0
- package/src/tests/models-catalog.test.ts +42 -1
- package/src/tests/node-env-runtime.test.ts +98 -0
- 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 +348 -3
- package/src/tests/opencode-billing.test.ts +28 -0
- 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.test.ts +1 -1
- package/src/tests/paused-tasks-requested-by.test.ts +102 -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/prompt-template-remaining.test.ts +35 -0
- package/src/tests/rbac-engine.test.ts +11 -3
- package/src/tests/runner-exit-after-tasks.test.ts +0 -4
- package/src/tests/runner-identity-refresh.test.ts +3 -0
- package/src/tests/runner-legacy-resume-prompt.test.ts +64 -0
- package/src/tests/script-connections-sql.test.ts +675 -0
- package/src/tests/script-connections.test.ts +7 -1
- package/src/tests/scripts-http.test.ts +201 -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 +86 -0
- 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 +94 -0
- package/src/tests/skill-get-name-resolution.test.ts +137 -0
- package/src/tests/slack-channel-join.test.ts +4 -1
- package/src/tests/slack-external-channel-config.test.ts +65 -0
- package/src/tests/slack-external-channel-egress.test.ts +237 -0
- package/src/tests/slack-external-channel-guard.test.ts +280 -0
- package/src/tests/slack-external-channel-tools.test.ts +173 -0
- package/src/tests/slack-external-channel.test.ts +370 -0
- package/src/tests/slack-render-v2.test.ts +86 -10
- package/src/tests/sonnet-5-5-registry.test.ts +9 -1
- package/src/tests/spec-base-url.test.ts +16 -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/vendored-openapi.test.ts +16 -1
- package/src/tests/vercel-ai-gateway.test.ts +149 -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/defer-task.ts +17 -0
- package/src/tools/model-catalog/index.ts +2 -1
- package/src/tools/register-chat-channel.ts +139 -0
- package/src/tools/send-task.ts +24 -0
- package/src/tools/skills/skill-get.ts +17 -9
- package/src/tools/slack-post.ts +6 -0
- package/src/tools/slack-read.ts +8 -0
- package/src/tools/slack-reply.ts +6 -0
- package/src/tools/slack-start-thread.ts +6 -0
- package/src/tools/slack-update.ts +6 -0
- package/src/tools/slack-upload-file.ts +6 -0
- 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/tool-config.ts +8 -6
- package/src/types.ts +12 -2
- 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/node-env.ts +24 -0
- package/src/utils/runtime-model-catalog.ts +11 -1
- package/src/utils/secret-scrubber.ts +71 -2
- package/src/utils/task-tool-manifest.ts +19 -2
- package/src/workflows/executors/swarm-script.ts +1 -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 +749 -0
- package/templates/skills/apps/content.md +60 -22
- 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/qa-loom/config.json +14 -0
- package/templates/skills/qa-loom/content.md +187 -0
- package/templates/skills/qa-loom/files/build-loom.mjs +221 -0
- package/templates/skills/qa-loom/files/run-qa.sh +57 -0
- package/templates/skills/slack-interaction/content.md +4 -0
- 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-9xsmdpdt.js +0 -56377
- package/dist/cli-bd957dgb.js +0 -153
- package/dist/cli-q51yprfq.js +0 -1104
- package/dist/cli-t1ze64h3.js +0 -811
- 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/dist/{azure-openai-responses-ap1gwxgr.js → azure-openai-responses-ygfreq4t.js} +5 -5
- package/dist/{cli-5rqrj7q0.js → cli-pw7ebjdt.js} +0 -0
- package/dist/{openai-codex-responses-33qhkkdy.js → openai-codex-responses-3bk0grnr.js} +4 -4
- package/dist/{openai-completions-s88xm3ns.js → openai-completions-5d4jpakc.js} +9 -9
- package/dist/{openai-responses-7xd2f2e2.js → openai-responses-krb51f59.js} +5 -5
- package/dist/{pi-messages-xszk613n.js → pi-messages-x9gzynm1.js} +3 -3
- /package/src/{artifact-sdk → pages}/browser-sdk.ts +0 -0
- /package/src/{artifact-sdk → pages}/feedback-overlay.ts +0 -0
|
@@ -1,467 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
init_src,
|
|
3
|
+
withRegistryCatalogSections
|
|
4
|
+
} from "./cli-e3g5mbkz.js";
|
|
1
5
|
import {
|
|
2
6
|
__esm
|
|
3
7
|
} from "./cli-bc05qbss.js";
|
|
4
8
|
|
|
5
|
-
// packages/model-catalog/src/model-alias.ts
|
|
6
|
-
function buildClaudeAliasMap(models) {
|
|
7
|
-
const best = new Map;
|
|
8
|
-
for (const model of models) {
|
|
9
|
-
const id = model.id.toLowerCase();
|
|
10
|
-
if (!id.startsWith("claude"))
|
|
11
|
-
continue;
|
|
12
|
-
if (DATED_ID_RE.test(id) || id.endsWith("-latest"))
|
|
13
|
-
continue;
|
|
14
|
-
for (const token of id.split("-")) {
|
|
15
|
-
if (token === "claude" || !FAMILY_TOKEN_RE.test(token))
|
|
16
|
-
continue;
|
|
17
|
-
const current = best.get(token);
|
|
18
|
-
if (!current || isNewer(model, current))
|
|
19
|
-
best.set(token, model);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
const out = {};
|
|
23
|
-
for (const [alias, model] of best)
|
|
24
|
-
out[alias] = model.id;
|
|
25
|
-
return out;
|
|
26
|
-
}
|
|
27
|
-
function isNewer(a, b) {
|
|
28
|
-
const ra = a.releaseDate ?? "";
|
|
29
|
-
const rb = b.releaseDate ?? "";
|
|
30
|
-
if (ra !== rb)
|
|
31
|
-
return ra > rb;
|
|
32
|
-
return a.id > b.id;
|
|
33
|
-
}
|
|
34
|
-
var DATED_ID_RE, FAMILY_TOKEN_RE;
|
|
35
|
-
var init_model_alias = __esm(() => {
|
|
36
|
-
DATED_ID_RE = /-\d{8}$/;
|
|
37
|
-
FAMILY_TOKEN_RE = /^[a-z]+$/;
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// packages/model-catalog/src/resolve-alias.ts
|
|
41
|
-
function isAlias(value) {
|
|
42
|
-
return value.trim().toLowerCase().startsWith(LATEST_PREFIX);
|
|
43
|
-
}
|
|
44
|
-
function parseAlias(alias) {
|
|
45
|
-
let value = alias.trim().toLowerCase();
|
|
46
|
-
if (!value.startsWith(LATEST_PREFIX))
|
|
47
|
-
return null;
|
|
48
|
-
let channel = "stable";
|
|
49
|
-
const at = value.lastIndexOf("@");
|
|
50
|
-
if (at >= 0) {
|
|
51
|
-
const suffix = value.slice(at + 1);
|
|
52
|
-
if (suffix !== "stable" && suffix !== "any")
|
|
53
|
-
return null;
|
|
54
|
-
channel = suffix;
|
|
55
|
-
value = value.slice(0, at);
|
|
56
|
-
}
|
|
57
|
-
const rest = value.slice(LATEST_PREFIX.length);
|
|
58
|
-
const slash = rest.indexOf("/");
|
|
59
|
-
if (slash <= 0)
|
|
60
|
-
return null;
|
|
61
|
-
const section = rest.slice(0, slash);
|
|
62
|
-
const target = rest.slice(slash + 1);
|
|
63
|
-
if (target.length === 0)
|
|
64
|
-
return null;
|
|
65
|
-
if (section === "anthropic") {
|
|
66
|
-
return /^[a-z]+$/.test(target) ? { kind: "anthropic", family: target, channel } : null;
|
|
67
|
-
}
|
|
68
|
-
if (section === "openrouter" && !OPENROUTER_VENDOR_RE.test(target))
|
|
69
|
-
return null;
|
|
70
|
-
if (section === "openrouter" || section === "openai") {
|
|
71
|
-
return GLOB_TARGET_RE.test(target) ? { kind: section, glob: target, channel } : null;
|
|
72
|
-
}
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
function globToRegExp(glob) {
|
|
76
|
-
const escaped = glob.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
|
|
77
|
-
return new RegExp(`^${escaped}$`);
|
|
78
|
-
}
|
|
79
|
-
function isNewer2(a, b) {
|
|
80
|
-
if (a.releaseDate !== b.releaseDate)
|
|
81
|
-
return a.releaseDate > b.releaseDate;
|
|
82
|
-
return a.id > b.id;
|
|
83
|
-
}
|
|
84
|
-
function passesPolicy(id, releaseDate, channel, named, policy) {
|
|
85
|
-
if (policy.isSupported && !policy.isSupported(id))
|
|
86
|
-
return false;
|
|
87
|
-
if (channel === "any")
|
|
88
|
-
return true;
|
|
89
|
-
const lower = id.toLowerCase();
|
|
90
|
-
if (!named.includes("preview") && lower.includes("preview"))
|
|
91
|
-
return false;
|
|
92
|
-
if (!named.includes("experimental") && lower.includes("experimental"))
|
|
93
|
-
return false;
|
|
94
|
-
const soakDays = policy.soakDays ?? 0;
|
|
95
|
-
if (soakDays > 0 && releaseDate) {
|
|
96
|
-
const released = Date.parse(releaseDate);
|
|
97
|
-
const now = (policy.now ?? new Date).getTime();
|
|
98
|
-
if (!Number.isNaN(released) && now - released < soakDays * DAY_MS)
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
function resolveAlias(alias, catalog, policy = {}) {
|
|
104
|
-
const parsed = parseAlias(alias);
|
|
105
|
-
if (!parsed)
|
|
106
|
-
return null;
|
|
107
|
-
if (parsed.kind === "anthropic") {
|
|
108
|
-
const models = catalog.anthropic?.models ?? {};
|
|
109
|
-
const map = buildClaudeAliasMap(Object.entries(models).filter(([id, m]) => passesPolicy(id, m.release_date, parsed.channel, "", policy)).map(([id, m]) => ({ id, releaseDate: m.release_date ?? null })));
|
|
110
|
-
return map[parsed.family] ?? null;
|
|
111
|
-
}
|
|
112
|
-
const re = globToRegExp(parsed.glob);
|
|
113
|
-
const allowFree = parsed.glob.includes(":free");
|
|
114
|
-
const allowLatest = parsed.glob.includes("latest");
|
|
115
|
-
const allowPreview = parsed.glob.includes("preview");
|
|
116
|
-
let best = null;
|
|
117
|
-
for (const [id, m] of Object.entries(catalog[parsed.kind]?.models ?? {})) {
|
|
118
|
-
const lower = id.toLowerCase();
|
|
119
|
-
if (!re.test(lower))
|
|
120
|
-
continue;
|
|
121
|
-
if (DATED_ID_RE2.test(lower))
|
|
122
|
-
continue;
|
|
123
|
-
if (!allowLatest && lower.endsWith("-latest"))
|
|
124
|
-
continue;
|
|
125
|
-
if (!allowFree && lower.endsWith(":free"))
|
|
126
|
-
continue;
|
|
127
|
-
if (parsed.channel === "stable" && !allowPreview && lower.includes("preview"))
|
|
128
|
-
continue;
|
|
129
|
-
if (!passesPolicy(id, m.release_date, parsed.channel, parsed.glob, policy))
|
|
130
|
-
continue;
|
|
131
|
-
const candidate = { id, releaseDate: m.release_date ?? "" };
|
|
132
|
-
if (!best || isNewer2(candidate, best))
|
|
133
|
-
best = candidate;
|
|
134
|
-
}
|
|
135
|
-
if (!best)
|
|
136
|
-
return null;
|
|
137
|
-
return parsed.kind === "openrouter" ? `openrouter/${best.id}` : best.id;
|
|
138
|
-
}
|
|
139
|
-
var LATEST_PREFIX = "latest:", DATED_ID_RE2, DAY_MS, GLOB_TARGET_RE, OPENROUTER_VENDOR_RE;
|
|
140
|
-
var init_resolve_alias = __esm(() => {
|
|
141
|
-
init_model_alias();
|
|
142
|
-
DATED_ID_RE2 = /-\d{8}$/;
|
|
143
|
-
DAY_MS = 24 * 60 * 60 * 1000;
|
|
144
|
-
GLOB_TARGET_RE = /^[a-z0-9._:~*/-]+$/;
|
|
145
|
-
OPENROUTER_VENDOR_RE = /^[a-z0-9._~-]+\//;
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
// packages/model-catalog/src/harness-models.ts
|
|
149
|
-
function harnessCatalogSection(harness) {
|
|
150
|
-
return HARNESS_CATALOG_SECTION[harness] ?? null;
|
|
151
|
-
}
|
|
152
|
-
function isHarnessModelJudged(harness) {
|
|
153
|
-
return !!harness && (harnessCatalogSection(harness) !== null || harness === "grok");
|
|
154
|
-
}
|
|
155
|
-
function normalizeGrokModel(model) {
|
|
156
|
-
return model.trim().replace(XAI_PREFIX_RE, "");
|
|
157
|
-
}
|
|
158
|
-
function isHarnessCatalogModel(harness, id, model = {}) {
|
|
159
|
-
const lower = id.toLowerCase();
|
|
160
|
-
if (model.status === "deprecated")
|
|
161
|
-
return false;
|
|
162
|
-
const section = harnessCatalogSection(harness);
|
|
163
|
-
if (section === "anthropic") {
|
|
164
|
-
if (!lower.startsWith("claude-"))
|
|
165
|
-
return false;
|
|
166
|
-
if (DATED_ID_RE3.test(lower) || lower.endsWith("-latest"))
|
|
167
|
-
return false;
|
|
168
|
-
if (/^claude-\d/.test(lower))
|
|
169
|
-
return false;
|
|
170
|
-
return true;
|
|
171
|
-
}
|
|
172
|
-
if (section === "openai") {
|
|
173
|
-
const match = /^gpt-(\d+)/.exec(lower);
|
|
174
|
-
if (!match || Number(match[1]) < CODEX_MIN_GPT_MAJOR)
|
|
175
|
-
return false;
|
|
176
|
-
if (DATED_ID_RE3.test(lower) || ISO_DATED_ID_RE.test(lower))
|
|
177
|
-
return false;
|
|
178
|
-
if (model.reasoning === false)
|
|
179
|
-
return false;
|
|
180
|
-
for (const token of lower.split("-")) {
|
|
181
|
-
if (CODEX_EXCLUDED_TOKENS.has(token))
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
function compareNewestFirst(a, b) {
|
|
189
|
-
const ra = a.release_date ?? "9999";
|
|
190
|
-
const rb = b.release_date ?? "9999";
|
|
191
|
-
if (ra !== rb)
|
|
192
|
-
return ra > rb ? -1 : 1;
|
|
193
|
-
return a.id > b.id ? -1 : a.id < b.id ? 1 : 0;
|
|
194
|
-
}
|
|
195
|
-
function harnessModelIds(harness, models) {
|
|
196
|
-
return Object.entries(models ?? {}).filter(([id, m]) => isHarnessCatalogModel(harness, id, m)).map(([id, m]) => ({ id, release_date: m.release_date ?? null })).sort(compareNewestFirst).map((m) => m.id);
|
|
197
|
-
}
|
|
198
|
-
function modelFamilyKey(id) {
|
|
199
|
-
const slash = id.lastIndexOf("/");
|
|
200
|
-
const tail = (slash >= 0 ? id.slice(slash + 1) : id).toLowerCase();
|
|
201
|
-
return tail.split("-").filter((token) => token !== "" && !/^\d+(\.\d+)*$/.test(token)).join("-");
|
|
202
|
-
}
|
|
203
|
-
function buildClaudeShortnameMap(models) {
|
|
204
|
-
const best = new Map;
|
|
205
|
-
for (const [rawId, m] of Object.entries(models ?? {})) {
|
|
206
|
-
const id = rawId.toLowerCase();
|
|
207
|
-
if (!id.startsWith("claude"))
|
|
208
|
-
continue;
|
|
209
|
-
if (DATED_ID_RE3.test(id) || id.endsWith("-latest"))
|
|
210
|
-
continue;
|
|
211
|
-
if (m.status === "deprecated")
|
|
212
|
-
continue;
|
|
213
|
-
const candidate = { id: rawId, release_date: m.release_date ?? null };
|
|
214
|
-
for (const token of id.split("-")) {
|
|
215
|
-
if (token === "claude" || !/^[a-z]+$/.test(token))
|
|
216
|
-
continue;
|
|
217
|
-
const current = best.get(token);
|
|
218
|
-
if (!current || compareNewestFirst(candidate, current) < 0)
|
|
219
|
-
best.set(token, candidate);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
const out = {};
|
|
223
|
-
for (const [alias, model] of best)
|
|
224
|
-
out[alias] = model.id;
|
|
225
|
-
return out;
|
|
226
|
-
}
|
|
227
|
-
function harnessModelMismatch(model, harness, sections, context = {}) {
|
|
228
|
-
if (harness === "grok")
|
|
229
|
-
return grokModelMismatch(model, sections, context);
|
|
230
|
-
const section = harness ? harnessCatalogSection(harness) : null;
|
|
231
|
-
if (!harness || !section)
|
|
232
|
-
return null;
|
|
233
|
-
const id = model.trim().replace(CONTEXT_SUFFIX_RE, "");
|
|
234
|
-
if (!id)
|
|
235
|
-
return null;
|
|
236
|
-
const own = sections[section]?.models ?? {};
|
|
237
|
-
const fail = () => harnessMismatchMessage(model.trim(), harness, section, own, context);
|
|
238
|
-
if (isAlias(id)) {
|
|
239
|
-
const parsed = parseAlias(id);
|
|
240
|
-
if (!parsed)
|
|
241
|
-
return null;
|
|
242
|
-
return parsed.kind === section ? null : fail();
|
|
243
|
-
}
|
|
244
|
-
let bare = id;
|
|
245
|
-
const slash = id.indexOf("/");
|
|
246
|
-
if (slash > 0) {
|
|
247
|
-
if (id.slice(0, slash) !== section)
|
|
248
|
-
return fail();
|
|
249
|
-
bare = id.slice(slash + 1);
|
|
250
|
-
}
|
|
251
|
-
if (section === "anthropic" && Object.hasOwn(buildClaudeShortnameMap(own), bare))
|
|
252
|
-
return null;
|
|
253
|
-
if (Object.hasOwn(own, bare)) {
|
|
254
|
-
const familyId = section === "anthropic" ? bare.replace(DATED_ID_RE3, "").replace(/-latest$/i, "") : bare;
|
|
255
|
-
return isHarnessCatalogModel(harness, familyId, own[bare]) ? null : fail();
|
|
256
|
-
}
|
|
257
|
-
for (const [name, other] of Object.entries(sections)) {
|
|
258
|
-
if (name === section)
|
|
259
|
-
continue;
|
|
260
|
-
if (other?.models && Object.hasOwn(other.models, bare))
|
|
261
|
-
return fail();
|
|
262
|
-
}
|
|
263
|
-
return null;
|
|
264
|
-
}
|
|
265
|
-
function grokModelMismatch(model, sections, context) {
|
|
266
|
-
const id = model.trim();
|
|
267
|
-
if (!id)
|
|
268
|
-
return null;
|
|
269
|
-
const fail = () => grokMismatchMessage(id, sections, context);
|
|
270
|
-
if (isAlias(id)) {
|
|
271
|
-
const parsed = parseAlias(id);
|
|
272
|
-
if (!parsed)
|
|
273
|
-
return null;
|
|
274
|
-
return parsed.kind === "openrouter" ? null : fail();
|
|
275
|
-
}
|
|
276
|
-
if (/^openrouter\/./i.test(id))
|
|
277
|
-
return null;
|
|
278
|
-
const bare = normalizeGrokModel(id);
|
|
279
|
-
if (!bare || bare.includes("/"))
|
|
280
|
-
return fail();
|
|
281
|
-
if (GROK_ID_RE.test(bare) || Object.hasOwn(sections.xai?.models ?? {}, bare))
|
|
282
|
-
return null;
|
|
283
|
-
for (const [name, other] of Object.entries(sections)) {
|
|
284
|
-
if (name === "xai")
|
|
285
|
-
continue;
|
|
286
|
-
if (other?.models && Object.hasOwn(other.models, bare))
|
|
287
|
-
return fail();
|
|
288
|
-
}
|
|
289
|
-
return null;
|
|
290
|
-
}
|
|
291
|
-
function grokMismatchMessage(model, sections, context) {
|
|
292
|
-
const agent = context.agentId ? ` of agent "${context.agentName ?? context.agentId}" (${context.agentId})` : "";
|
|
293
|
-
const pool = sections.xai?.models ? [sections.xai.models] : Object.values(sections).map((section) => section?.models ?? {});
|
|
294
|
-
const best = new Map;
|
|
295
|
-
for (const models of pool) {
|
|
296
|
-
for (const [id, m] of Object.entries(models)) {
|
|
297
|
-
if (m.status === "deprecated" || !GROK_ID_RE.test(id) || best.has(id))
|
|
298
|
-
continue;
|
|
299
|
-
best.set(id, { id, release_date: m.release_date ?? null });
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
const ids = [...best.values()].sort(compareNewestFirst).map((m) => m.id);
|
|
303
|
-
const extra = ids.length - MAX_EXAMPLE_IDS;
|
|
304
|
-
const examples = ids.length ? ` (for example: ${ids.slice(0, MAX_EXAMPLE_IDS).join(", ")}${extra > 0 ? ` and ${extra} more` : ""})` : "";
|
|
305
|
-
return `Model "${model}" does not run on the grok harness${agent}. The grok harness accepts xai catalog models${examples} and openrouter/<vendor>/<id>. Use modelTier (smol, regular, smart, ultra) for portable intent, or omit model and let the assignee resolve it.`;
|
|
306
|
-
}
|
|
307
|
-
function harnessMismatchMessage(model, harness, section, own, context) {
|
|
308
|
-
const agent = context.agentId ? ` of agent "${context.agentName ?? context.agentId}" (${context.agentId})` : "";
|
|
309
|
-
const ids = harnessModelIds(harness, own);
|
|
310
|
-
const extra = ids.length - MAX_EXAMPLE_IDS;
|
|
311
|
-
const examples = ids.slice(0, MAX_EXAMPLE_IDS).join(", ") + (extra > 0 ? ` and ${extra} more` : "");
|
|
312
|
-
return `Model "${model}" does not run on the ${harness} harness${agent}. The ${harness} harness accepts ${section} catalog models, for example: ${examples}. Use modelTier (smol, regular, smart, ultra) for portable intent, or omit model and let the assignee resolve it.`;
|
|
313
|
-
}
|
|
314
|
-
var HARNESS_CATALOG_SECTION, XAI_PREFIX_RE, GROK_ID_RE, DATED_ID_RE3, ISO_DATED_ID_RE, CODEX_EXCLUDED_TOKENS, CODEX_MIN_GPT_MAJOR = 5, CONTEXT_SUFFIX_RE, MAX_EXAMPLE_IDS = 8;
|
|
315
|
-
var init_harness_models = __esm(() => {
|
|
316
|
-
init_resolve_alias();
|
|
317
|
-
HARNESS_CATALOG_SECTION = {
|
|
318
|
-
claude: "anthropic",
|
|
319
|
-
"claude-managed": "anthropic",
|
|
320
|
-
codex: "openai"
|
|
321
|
-
};
|
|
322
|
-
XAI_PREFIX_RE = /^xai\//i;
|
|
323
|
-
GROK_ID_RE = /^grok-[^/]+$/i;
|
|
324
|
-
DATED_ID_RE3 = /-\d{8}$/;
|
|
325
|
-
ISO_DATED_ID_RE = /-\d{4}-\d{2}-\d{2}$/;
|
|
326
|
-
CODEX_EXCLUDED_TOKENS = new Set([
|
|
327
|
-
"chat",
|
|
328
|
-
"latest",
|
|
329
|
-
"pro",
|
|
330
|
-
"nano",
|
|
331
|
-
"spark",
|
|
332
|
-
"realtime",
|
|
333
|
-
"audio",
|
|
334
|
-
"image",
|
|
335
|
-
"search",
|
|
336
|
-
"transcribe",
|
|
337
|
-
"tts",
|
|
338
|
-
"deep",
|
|
339
|
-
"research",
|
|
340
|
-
"oss"
|
|
341
|
-
]);
|
|
342
|
-
CONTEXT_SUFFIX_RE = /\[1m\]$/i;
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
// packages/model-catalog/src/reasoning.ts
|
|
346
|
-
function dshCatalogRef(model) {
|
|
347
|
-
if (model.startsWith("openrouter/")) {
|
|
348
|
-
return { providerId: "openrouter", modelId: model.slice("openrouter/".length) };
|
|
349
|
-
}
|
|
350
|
-
return { providerId: "deepseek", modelId: model };
|
|
351
|
-
}
|
|
352
|
-
function grokCatalogRef(model) {
|
|
353
|
-
const id = normalizeGrokModel(model);
|
|
354
|
-
if (id.startsWith("openrouter/")) {
|
|
355
|
-
return { providerId: "openrouter", modelId: id.slice("openrouter/".length) };
|
|
356
|
-
}
|
|
357
|
-
return { providerId: "xai", modelId: id };
|
|
358
|
-
}
|
|
359
|
-
function cursorCatalogRef(model) {
|
|
360
|
-
const id = model.trim().toLowerCase();
|
|
361
|
-
if (/^(gpt-|o\d)/.test(id))
|
|
362
|
-
return { providerId: "openai", modelId: id };
|
|
363
|
-
if (id.startsWith("claude-"))
|
|
364
|
-
return { providerId: "anthropic", modelId: id };
|
|
365
|
-
if (id.startsWith("gemini-"))
|
|
366
|
-
return { providerId: "google", modelId: id };
|
|
367
|
-
if (id.startsWith("grok-"))
|
|
368
|
-
return { providerId: "xai", modelId: id };
|
|
369
|
-
return { providerId: "cursor", modelId: id };
|
|
370
|
-
}
|
|
371
|
-
function isDshDirectModel(catalogId) {
|
|
372
|
-
return !catalogId.includes("/");
|
|
373
|
-
}
|
|
374
|
-
function isReasoningHarness(harness) {
|
|
375
|
-
return REASONING_HARNESSES.includes(harness);
|
|
376
|
-
}
|
|
377
|
-
function levelsFromReasoningOptions(options) {
|
|
378
|
-
const effortEntry = options?.find((o) => o.type === "effort");
|
|
379
|
-
if (!effortEntry?.values?.length)
|
|
380
|
-
return [];
|
|
381
|
-
const mapped = new Set(effortEntry.values.map((v) => EFFORT_VALUE_MAP[v]).filter((v) => v !== undefined));
|
|
382
|
-
return REASONING_EFFORT_LEVELS.filter((level) => mapped.has(level));
|
|
383
|
-
}
|
|
384
|
-
function applyHarnessOverrides(harness, modelId, facts, levels) {
|
|
385
|
-
let result = levels;
|
|
386
|
-
if (harness === "claude") {
|
|
387
|
-
if (facts.reasoning_options?.some((o) => o.type === "budget_tokens") && !result.includes("off")) {
|
|
388
|
-
result = ["off", ...result];
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
if (harness === "dsh") {
|
|
392
|
-
const direct = isDshDirectModel(modelId);
|
|
393
|
-
const hasToggle = facts.reasoning_options?.some((o) => o.type === "toggle") ?? false;
|
|
394
|
-
if (direct && hasToggle && !result.includes("off"))
|
|
395
|
-
result = ["off", ...result];
|
|
396
|
-
if (!direct)
|
|
397
|
-
result = result.filter((l) => l !== "off");
|
|
398
|
-
} else if (harness !== "codex" && harness !== "cursor") {
|
|
399
|
-
result = result.filter((l) => l !== "max");
|
|
400
|
-
}
|
|
401
|
-
if (harness === "codex") {
|
|
402
|
-
const isCodexMax = /-codex-max$/.test(modelId);
|
|
403
|
-
const isCodexNonMax = /-codex$/.test(modelId) && !isCodexMax;
|
|
404
|
-
if (isCodexMax && !result.includes("xhigh"))
|
|
405
|
-
result = [...result, "xhigh"];
|
|
406
|
-
if (isCodexNonMax)
|
|
407
|
-
result = result.filter((l) => l !== "xhigh");
|
|
408
|
-
}
|
|
409
|
-
return REASONING_EFFORT_LEVELS.filter((level) => result.includes(level));
|
|
410
|
-
}
|
|
411
|
-
function reasoningLevelsFor(harness, modelId, facts) {
|
|
412
|
-
if (!isReasoningHarness(harness) || !facts || !facts.reasoning)
|
|
413
|
-
return [];
|
|
414
|
-
let levels = levelsFromReasoningOptions(facts.reasoning_options);
|
|
415
|
-
if (levels.length === 0)
|
|
416
|
-
levels = [...FALLBACK_LEVELS];
|
|
417
|
-
return applyHarnessOverrides(harness, modelId, facts, levels);
|
|
418
|
-
}
|
|
419
|
-
function claudeCatalogModelId(modelId, models) {
|
|
420
|
-
if (!modelId || models?.[modelId])
|
|
421
|
-
return modelId;
|
|
422
|
-
return buildClaudeShortnameMap(models)[modelId] ?? modelId;
|
|
423
|
-
}
|
|
424
|
-
var REASONING_EFFORT_LEVELS, REASONING_HARNESSES, FALLBACK_LEVELS, EFFORT_VALUE_MAP;
|
|
425
|
-
var init_reasoning = __esm(() => {
|
|
426
|
-
init_harness_models();
|
|
427
|
-
REASONING_EFFORT_LEVELS = ["off", "low", "medium", "high", "xhigh", "max"];
|
|
428
|
-
REASONING_HARNESSES = [
|
|
429
|
-
"claude",
|
|
430
|
-
"codex",
|
|
431
|
-
"pi",
|
|
432
|
-
"opencode",
|
|
433
|
-
"dsh",
|
|
434
|
-
"cursor",
|
|
435
|
-
"amp",
|
|
436
|
-
"grok"
|
|
437
|
-
];
|
|
438
|
-
FALLBACK_LEVELS = ["low", "medium", "high"];
|
|
439
|
-
EFFORT_VALUE_MAP = {
|
|
440
|
-
none: "off",
|
|
441
|
-
low: "low",
|
|
442
|
-
medium: "medium",
|
|
443
|
-
high: "high",
|
|
444
|
-
xhigh: "xhigh",
|
|
445
|
-
max: "max"
|
|
446
|
-
};
|
|
447
|
-
});
|
|
448
|
-
|
|
449
|
-
// packages/model-catalog/src/display.ts
|
|
450
|
-
var init_display = () => {};
|
|
451
|
-
|
|
452
|
-
// packages/model-catalog/src/merge.ts
|
|
453
|
-
var init_merge = () => {};
|
|
454
|
-
|
|
455
|
-
// packages/model-catalog/src/index.ts
|
|
456
|
-
var init_src = __esm(() => {
|
|
457
|
-
init_display();
|
|
458
|
-
init_harness_models();
|
|
459
|
-
init_merge();
|
|
460
|
-
init_model_alias();
|
|
461
|
-
init_reasoning();
|
|
462
|
-
init_resolve_alias();
|
|
463
|
-
});
|
|
464
|
-
|
|
465
9
|
// src/be/modelsdev-cache.json
|
|
466
10
|
var modelsdev_cache_default;
|
|
467
11
|
var init_modelsdev_cache = __esm(() => {
|
|
@@ -147725,7 +147269,7 @@ var init_modelsdev_cache = __esm(() => {
|
|
|
147725
147269
|
cost: {
|
|
147726
147270
|
input: 2,
|
|
147727
147271
|
output: 10,
|
|
147728
|
-
cache_read: 0.
|
|
147272
|
+
cache_read: 0.1,
|
|
147729
147273
|
cache_write: 2.5
|
|
147730
147274
|
},
|
|
147731
147275
|
limit: {
|
|
@@ -314625,23 +314169,59 @@ var init_modelsdev_cache = __esm(() => {
|
|
|
314625
314169
|
name: "NaN",
|
|
314626
314170
|
doc: "https://nan.builders/docs/models",
|
|
314627
314171
|
models: {
|
|
314628
|
-
"
|
|
314629
|
-
id: "
|
|
314630
|
-
name: "
|
|
314631
|
-
description: "
|
|
314172
|
+
"qwen-image-2.1": {
|
|
314173
|
+
id: "qwen-image-2.1",
|
|
314174
|
+
name: "Qwen-Image-2.1",
|
|
314175
|
+
description: "Unified text-to-image generation and image editing model with native RGBA transparency and reference-image editing",
|
|
314632
314176
|
family: "qwen",
|
|
314177
|
+
attachment: false,
|
|
314178
|
+
reasoning: false,
|
|
314179
|
+
tool_call: false,
|
|
314180
|
+
temperature: true,
|
|
314181
|
+
release_date: "2026-09-14",
|
|
314182
|
+
last_updated: "2026-09-21",
|
|
314183
|
+
modalities: {
|
|
314184
|
+
input: [
|
|
314185
|
+
"text"
|
|
314186
|
+
],
|
|
314187
|
+
output: [
|
|
314188
|
+
"image"
|
|
314189
|
+
]
|
|
314190
|
+
},
|
|
314191
|
+
open_weights: true,
|
|
314192
|
+
limit: {
|
|
314193
|
+
context: 8192,
|
|
314194
|
+
output: 0
|
|
314195
|
+
},
|
|
314196
|
+
cost: {
|
|
314197
|
+
input: 0,
|
|
314198
|
+
output: 0
|
|
314199
|
+
},
|
|
314200
|
+
canonical_model_id: "alibaba/qwen-image-2.1"
|
|
314201
|
+
},
|
|
314202
|
+
"glm5.3-flash": {
|
|
314203
|
+
id: "glm5.3-flash",
|
|
314204
|
+
name: "GLM-5.3-Flash",
|
|
314205
|
+
description: "Native multimodal GLM model for efficient coding and long-horizon agent tasks",
|
|
314206
|
+
family: "glm-flash",
|
|
314633
314207
|
attachment: true,
|
|
314634
314208
|
reasoning: true,
|
|
314635
314209
|
reasoning_options: [
|
|
314636
314210
|
{
|
|
314637
|
-
type: "
|
|
314211
|
+
type: "effort",
|
|
314212
|
+
values: [
|
|
314213
|
+
"low",
|
|
314214
|
+
"medium",
|
|
314215
|
+
"high",
|
|
314216
|
+
"max"
|
|
314217
|
+
]
|
|
314638
314218
|
}
|
|
314639
314219
|
],
|
|
314640
314220
|
tool_call: true,
|
|
314641
314221
|
structured_output: true,
|
|
314642
314222
|
temperature: true,
|
|
314643
|
-
release_date: "2026-
|
|
314644
|
-
last_updated: "2026-
|
|
314223
|
+
release_date: "2026-08-26",
|
|
314224
|
+
last_updated: "2026-08-26",
|
|
314645
314225
|
modalities: {
|
|
314646
314226
|
input: [
|
|
314647
314227
|
"text",
|
|
@@ -314653,31 +314233,43 @@ var init_modelsdev_cache = __esm(() => {
|
|
|
314653
314233
|
},
|
|
314654
314234
|
open_weights: true,
|
|
314655
314235
|
limit: {
|
|
314656
|
-
context:
|
|
314657
|
-
output:
|
|
314236
|
+
context: 1e6,
|
|
314237
|
+
output: 131072
|
|
314658
314238
|
},
|
|
314659
314239
|
cost: {
|
|
314660
314240
|
input: 0,
|
|
314661
314241
|
output: 0
|
|
314662
|
-
}
|
|
314242
|
+
},
|
|
314243
|
+
canonical_model_id: "zhipuai/glm-5.3-flash"
|
|
314663
314244
|
},
|
|
314664
|
-
|
|
314665
|
-
id: "
|
|
314666
|
-
name: "
|
|
314667
|
-
description: "
|
|
314668
|
-
family: "
|
|
314669
|
-
attachment:
|
|
314245
|
+
gemma4: {
|
|
314246
|
+
id: "gemma4",
|
|
314247
|
+
name: "Gemma 4 26B A4B IT",
|
|
314248
|
+
description: "Open Gemma instruction model for efficient chat and self-hosted deployments",
|
|
314249
|
+
family: "gemma",
|
|
314250
|
+
attachment: true,
|
|
314670
314251
|
reasoning: true,
|
|
314671
|
-
reasoning_options: [
|
|
314252
|
+
reasoning_options: [
|
|
314253
|
+
{
|
|
314254
|
+
type: "effort",
|
|
314255
|
+
values: [
|
|
314256
|
+
"none",
|
|
314257
|
+
"low",
|
|
314258
|
+
"medium",
|
|
314259
|
+
"high",
|
|
314260
|
+
"max"
|
|
314261
|
+
]
|
|
314262
|
+
}
|
|
314263
|
+
],
|
|
314672
314264
|
tool_call: true,
|
|
314673
314265
|
structured_output: true,
|
|
314674
314266
|
temperature: true,
|
|
314675
|
-
|
|
314676
|
-
|
|
314677
|
-
last_updated: "2026-04-24",
|
|
314267
|
+
release_date: "2026-04-02",
|
|
314268
|
+
last_updated: "2026-04-02",
|
|
314678
314269
|
modalities: {
|
|
314679
314270
|
input: [
|
|
314680
|
-
"text"
|
|
314271
|
+
"text",
|
|
314272
|
+
"image"
|
|
314681
314273
|
],
|
|
314682
314274
|
output: [
|
|
314683
314275
|
"text"
|
|
@@ -314685,30 +314277,43 @@ var init_modelsdev_cache = __esm(() => {
|
|
|
314685
314277
|
},
|
|
314686
314278
|
open_weights: true,
|
|
314687
314279
|
limit: {
|
|
314688
|
-
context:
|
|
314689
|
-
output:
|
|
314280
|
+
context: 262144,
|
|
314281
|
+
output: 32768
|
|
314690
314282
|
},
|
|
314691
314283
|
cost: {
|
|
314692
314284
|
input: 0,
|
|
314693
314285
|
output: 0
|
|
314694
|
-
}
|
|
314286
|
+
},
|
|
314287
|
+
canonical_model_id: "google/gemma-4-26b-a4b-it"
|
|
314695
314288
|
},
|
|
314696
|
-
"
|
|
314697
|
-
id: "
|
|
314698
|
-
name: "
|
|
314699
|
-
description: "Open
|
|
314700
|
-
family: "
|
|
314701
|
-
attachment:
|
|
314289
|
+
"qwen3.6": {
|
|
314290
|
+
id: "qwen3.6",
|
|
314291
|
+
name: "Qwen3.6 35B-A3B",
|
|
314292
|
+
description: "Open multimodal Qwen MoE for local agents that need vision, audio, and code",
|
|
314293
|
+
family: "qwen",
|
|
314294
|
+
attachment: true,
|
|
314702
314295
|
reasoning: true,
|
|
314703
|
-
reasoning_options: [
|
|
314296
|
+
reasoning_options: [
|
|
314297
|
+
{
|
|
314298
|
+
type: "effort",
|
|
314299
|
+
values: [
|
|
314300
|
+
"none",
|
|
314301
|
+
"low",
|
|
314302
|
+
"medium",
|
|
314303
|
+
"high",
|
|
314304
|
+
"max"
|
|
314305
|
+
]
|
|
314306
|
+
}
|
|
314307
|
+
],
|
|
314704
314308
|
tool_call: true,
|
|
314705
314309
|
structured_output: true,
|
|
314706
314310
|
temperature: true,
|
|
314707
|
-
release_date: "2026-
|
|
314708
|
-
last_updated: "2026-
|
|
314311
|
+
release_date: "2026-04-17",
|
|
314312
|
+
last_updated: "2026-04-17",
|
|
314709
314313
|
modalities: {
|
|
314710
314314
|
input: [
|
|
314711
|
-
"text"
|
|
314315
|
+
"text",
|
|
314316
|
+
"image"
|
|
314712
314317
|
],
|
|
314713
314318
|
output: [
|
|
314714
314319
|
"text"
|
|
@@ -314716,35 +314321,32 @@ var init_modelsdev_cache = __esm(() => {
|
|
|
314716
314321
|
},
|
|
314717
314322
|
open_weights: true,
|
|
314718
314323
|
limit: {
|
|
314719
|
-
context:
|
|
314720
|
-
output:
|
|
314324
|
+
context: 262144,
|
|
314325
|
+
output: 65536
|
|
314721
314326
|
},
|
|
314722
314327
|
cost: {
|
|
314723
314328
|
input: 0,
|
|
314724
314329
|
output: 0
|
|
314725
|
-
}
|
|
314330
|
+
},
|
|
314331
|
+
canonical_model_id: "alibaba/qwen3.6-35b-a3b"
|
|
314726
314332
|
},
|
|
314727
|
-
|
|
314728
|
-
id: "
|
|
314729
|
-
name: "
|
|
314730
|
-
description: "
|
|
314731
|
-
family: "
|
|
314333
|
+
"mimo-v2.6-flash": {
|
|
314334
|
+
id: "mimo-v2.6-flash",
|
|
314335
|
+
name: "MiMo-V2.6-Flash",
|
|
314336
|
+
description: "MiMo Flash model for multimodal coding agents and long-context automation",
|
|
314337
|
+
family: "mimo",
|
|
314732
314338
|
attachment: true,
|
|
314733
314339
|
reasoning: true,
|
|
314734
|
-
reasoning_options: [
|
|
314735
|
-
{
|
|
314736
|
-
type: "toggle"
|
|
314737
|
-
}
|
|
314738
|
-
],
|
|
314340
|
+
reasoning_options: [],
|
|
314739
314341
|
tool_call: true,
|
|
314740
|
-
structured_output: true,
|
|
314741
314342
|
temperature: true,
|
|
314742
|
-
release_date: "2026-
|
|
314743
|
-
last_updated: "2026-
|
|
314343
|
+
release_date: "2026-09-22",
|
|
314344
|
+
last_updated: "2026-09-22",
|
|
314744
314345
|
modalities: {
|
|
314745
314346
|
input: [
|
|
314746
314347
|
"text",
|
|
314747
|
-
"image"
|
|
314348
|
+
"image",
|
|
314349
|
+
"audio"
|
|
314748
314350
|
],
|
|
314749
314351
|
output: [
|
|
314750
314352
|
"text"
|
|
@@ -314752,13 +314354,14 @@ var init_modelsdev_cache = __esm(() => {
|
|
|
314752
314354
|
},
|
|
314753
314355
|
open_weights: true,
|
|
314754
314356
|
limit: {
|
|
314755
|
-
context:
|
|
314756
|
-
output:
|
|
314357
|
+
context: 1048576,
|
|
314358
|
+
output: 131072
|
|
314757
314359
|
},
|
|
314758
314360
|
cost: {
|
|
314759
314361
|
input: 0,
|
|
314760
314362
|
output: 0
|
|
314761
|
-
}
|
|
314363
|
+
},
|
|
314364
|
+
canonical_model_id: "xiaomi/mimo-v2.6-flash"
|
|
314762
314365
|
},
|
|
314763
314366
|
"qwen3.8-flash": {
|
|
314764
314367
|
id: "qwen3.8-flash",
|
|
@@ -314789,21 +314392,65 @@ var init_modelsdev_cache = __esm(() => {
|
|
|
314789
314392
|
cost: {
|
|
314790
314393
|
input: 0,
|
|
314791
314394
|
output: 0
|
|
314792
|
-
}
|
|
314395
|
+
},
|
|
314396
|
+
canonical_model_id: "alibaba/qwen3.8-flash"
|
|
314793
314397
|
},
|
|
314794
|
-
"glm5.3
|
|
314795
|
-
id: "glm5.3
|
|
314796
|
-
name: "GLM-5.3
|
|
314797
|
-
description: "
|
|
314398
|
+
"glm5.3": {
|
|
314399
|
+
id: "glm5.3",
|
|
314400
|
+
name: "GLM-5.3",
|
|
314401
|
+
description: "Flagship GLM model for long-horizon coding, agents, and complex project delivery",
|
|
314798
314402
|
family: "glm",
|
|
314403
|
+
attachment: false,
|
|
314404
|
+
reasoning: true,
|
|
314405
|
+
reasoning_options: [
|
|
314406
|
+
{
|
|
314407
|
+
type: "effort",
|
|
314408
|
+
values: [
|
|
314409
|
+
"low",
|
|
314410
|
+
"medium",
|
|
314411
|
+
"high",
|
|
314412
|
+
"max"
|
|
314413
|
+
]
|
|
314414
|
+
}
|
|
314415
|
+
],
|
|
314416
|
+
tool_call: true,
|
|
314417
|
+
structured_output: true,
|
|
314418
|
+
temperature: true,
|
|
314419
|
+
release_date: "2026-08-14",
|
|
314420
|
+
last_updated: "2026-08-14",
|
|
314421
|
+
modalities: {
|
|
314422
|
+
input: [
|
|
314423
|
+
"text"
|
|
314424
|
+
],
|
|
314425
|
+
output: [
|
|
314426
|
+
"text"
|
|
314427
|
+
]
|
|
314428
|
+
},
|
|
314429
|
+
open_weights: true,
|
|
314430
|
+
limit: {
|
|
314431
|
+
context: 1e6,
|
|
314432
|
+
output: 131072
|
|
314433
|
+
},
|
|
314434
|
+
cost: {
|
|
314435
|
+
input: 0,
|
|
314436
|
+
output: 0
|
|
314437
|
+
},
|
|
314438
|
+
canonical_model_id: "zhipuai/glm-5.3"
|
|
314439
|
+
},
|
|
314440
|
+
"deepseek-v4-flash": {
|
|
314441
|
+
id: "deepseek-v4-flash",
|
|
314442
|
+
name: "DeepSeek V4.1 Flash",
|
|
314443
|
+
description: "DeepSeek V4.1 Flash model for reasoning and agentic coding",
|
|
314444
|
+
family: "deepseek-flash",
|
|
314799
314445
|
attachment: true,
|
|
314800
314446
|
reasoning: true,
|
|
314801
314447
|
reasoning_options: [],
|
|
314802
314448
|
tool_call: true,
|
|
314803
314449
|
structured_output: true,
|
|
314804
314450
|
temperature: true,
|
|
314805
|
-
|
|
314806
|
-
|
|
314451
|
+
knowledge: "2025-05",
|
|
314452
|
+
release_date: "2026-09-10",
|
|
314453
|
+
last_updated: "2026-09-10",
|
|
314807
314454
|
modalities: {
|
|
314808
314455
|
input: [
|
|
314809
314456
|
"text",
|
|
@@ -314813,9 +314460,41 @@ var init_modelsdev_cache = __esm(() => {
|
|
|
314813
314460
|
"text"
|
|
314814
314461
|
]
|
|
314815
314462
|
},
|
|
314816
|
-
open_weights:
|
|
314463
|
+
open_weights: true,
|
|
314817
314464
|
limit: {
|
|
314818
314465
|
context: 1e6,
|
|
314466
|
+
output: 384000
|
|
314467
|
+
},
|
|
314468
|
+
cost: {
|
|
314469
|
+
input: 0,
|
|
314470
|
+
output: 0
|
|
314471
|
+
},
|
|
314472
|
+
canonical_model_id: "deepseek/deepseek-v4.1-flash"
|
|
314473
|
+
},
|
|
314474
|
+
"glm5.2": {
|
|
314475
|
+
id: "glm5.2",
|
|
314476
|
+
name: "GLM-5.2",
|
|
314477
|
+
description: "Open flagship GLM for long-horizon coding agents, served at 500K context on the NaN premium tier",
|
|
314478
|
+
family: "glm",
|
|
314479
|
+
attachment: false,
|
|
314480
|
+
reasoning: true,
|
|
314481
|
+
reasoning_options: [],
|
|
314482
|
+
tool_call: true,
|
|
314483
|
+
structured_output: true,
|
|
314484
|
+
temperature: true,
|
|
314485
|
+
release_date: "2026-06-13",
|
|
314486
|
+
last_updated: "2026-06-13",
|
|
314487
|
+
modalities: {
|
|
314488
|
+
input: [
|
|
314489
|
+
"text"
|
|
314490
|
+
],
|
|
314491
|
+
output: [
|
|
314492
|
+
"text"
|
|
314493
|
+
]
|
|
314494
|
+
},
|
|
314495
|
+
open_weights: true,
|
|
314496
|
+
limit: {
|
|
314497
|
+
context: 500000,
|
|
314819
314498
|
output: 131072
|
|
314820
314499
|
},
|
|
314821
314500
|
cost: {
|
|
@@ -333944,6 +333623,9 @@ var init_modelsdev_cache = __esm(() => {
|
|
|
333944
333623
|
});
|
|
333945
333624
|
|
|
333946
333625
|
// src/utils/runtime-model-catalog.ts
|
|
333626
|
+
function snapshotCatalogRows(provider) {
|
|
333627
|
+
return SNAPSHOT[provider]?.models ?? {};
|
|
333628
|
+
}
|
|
333947
333629
|
function setRuntimeModelCatalog(providers, at = Date.now(), source = "live") {
|
|
333948
333630
|
live = providers;
|
|
333949
333631
|
liveAt = at;
|
|
@@ -334005,10 +333687,11 @@ async function refreshRuntimeModelCatalog(opts) {
|
|
|
334005
333687
|
}
|
|
334006
333688
|
var SNAPSHOT, RUNTIME_CATALOG_TTL_MS, FETCH_TIMEOUT_MS = 5000, live = null, liveAt = 0, liveSource = null, mergedSections, inFlight = null;
|
|
334007
333689
|
var init_runtime_model_catalog = __esm(() => {
|
|
333690
|
+
init_src();
|
|
334008
333691
|
init_modelsdev_cache();
|
|
334009
|
-
SNAPSHOT = modelsdev_cache_default;
|
|
333692
|
+
SNAPSHOT = withRegistryCatalogSections(modelsdev_cache_default);
|
|
334010
333693
|
RUNTIME_CATALOG_TTL_MS = 10 * 60000;
|
|
334011
333694
|
mergedSections = new Map;
|
|
334012
333695
|
});
|
|
334013
333696
|
|
|
334014
|
-
export {
|
|
333697
|
+
export { snapshotCatalogRows, setRuntimeModelCatalog, runtimeCatalogSection, runtimeHarnessSections, runtimeCatalogModel, refreshRuntimeModelCatalog, init_runtime_model_catalog };
|