@bitkyc08/opencodex 2.15.0 → 2.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -280,8 +280,30 @@ export type ProviderConfigSeed = Pick<
280
280
  const ANTHROPIC_MODELS = ["claude-fable-5", "claude-sonnet-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-sonnet-4-6", "claude-haiku-4-5"];
281
281
  const ANTHROPIC_MODEL_CONTEXT_WINDOWS: Record<string, number> = { "claude-sonnet-5": 1_000_000, "claude-fable-5": 1_000_000, "claude-opus-5": 1_000_000, "claude-opus-4-8": 1_000_000, "claude-opus-4-7": 1_000_000, "claude-opus-4-6": 1_000_000, "claude-sonnet-4-6": 1_000_000, "claude-haiku-4-5": 200_000 };
282
282
 
283
+ // 260814 GLM-5.3 is registered pre-emptively alongside 5.2 everywhere 5.2 appears. Z.AI's
284
+ // devpack "How to Switch Models" page (docs.z.ai/devpack/latest-model) lists glm-5.3 and
285
+ // glm-5.3[1m] as Coding Plan ids on the unchanged endpoints; the capability and pricing
286
+ // tables were not published yet, so every 5.3 row mirrors its 5.2 sibling until they settle.
287
+ // The non-Z.AI providers below are speculative on purpose: they carry 5.2 today and are
288
+ // expected to pick 5.3 up on their usual lag. Providers whose live /v1/models discovery is
289
+ // enabled self-correct on the next successful fetch; static ones need a follow-up refresh.
290
+ const ZAI_GLM_53_MODELS = ["glm-5.3", "glm-5.3[1m]"];
283
291
  const ZAI_GLM_52_MODELS = ["glm-5.2", "glm-5.2[1m]"];
292
+ const ZAI_GLM_5X_MODELS = [...ZAI_GLM_53_MODELS, ...ZAI_GLM_52_MODELS];
284
293
  const ZAI_GLM_52_REASONING_EFFORTS = ["low", "medium", "high", "xhigh", "max"];
294
+ /**
295
+ * GLM-5.3 does NOT share 5.2's five-tier ladder. docs.z.ai/devpack/latest-model folds every
296
+ * incoming effort into three effective tiers — low/minimal/light -> low, medium/high -> high,
297
+ * xhigh/max/ultra -> max — with max as both the default and the unknown-value fallback.
298
+ * Advertising five levels would publish two picker rows that are indistinguishable on the wire,
299
+ * so only the effective tiers are exposed (same treatment Cursor and Baseten already give GLM).
300
+ */
301
+ const ZAI_GLM_53_REASONING_EFFORTS = ["low", "high", "max"];
302
+ /** Per-model ladders for the Coding Plan rows: 5.3 gets its three effective tiers, 5.2 keeps five. */
303
+ const ZAI_GLM_5X_REASONING_EFFORTS: Record<string, string[]> = {
304
+ ...Object.fromEntries(ZAI_GLM_53_MODELS.map(id => [id, ZAI_GLM_53_REASONING_EFFORTS])),
305
+ ...Object.fromEntries(ZAI_GLM_52_MODELS.map(id => [id, ZAI_GLM_52_REASONING_EFFORTS])),
306
+ };
285
307
  // 260710 MiniMax models and context windows: Tier-2 evidence in
286
308
  // devlog/_plan/260710_provider_hardening/002_research_cn.md.
287
309
  const MINIMAX_MODELS = [
@@ -387,13 +409,13 @@ const OPENCODE_GO_THINKING_TOGGLE_MODELS = [
387
409
  * images through the proxy's vision sidecar (src/codex/catalog/provider-fetch.ts), a claim nobody
388
410
  * has verified for BigModel-hosted GLM.
389
411
  */
390
- const ZHIPU_BIGMODEL_TEXT_MODELS = ["glm-4.6", "glm-4.7", "glm-4.7-flash", "glm-5", "glm-5.1"];
412
+ const ZHIPU_BIGMODEL_TEXT_MODELS = ["glm-4.6", "glm-4.7", "glm-4.7-flash", "glm-5", "glm-5.1", "glm-5.2", "glm-5.3"];
391
413
  const ZHIPU_BIGMODEL_MODELS = [...ZHIPU_BIGMODEL_TEXT_MODELS, "glm-4.6v"];
392
414
  const ZHIPU_BIGMODEL_INPUT_MODALITIES: Record<string, string[]> = {
393
415
  ...Object.fromEntries(ZHIPU_BIGMODEL_TEXT_MODELS.map(id => [id, ["text"]])),
394
416
  "glm-4.6v": ["text", "image"],
395
417
  };
396
- const ZHIPU_BIGMODEL_THINKING_TOGGLE_MODELS = ["glm-4.6", "glm-4.7", "glm-5", "glm-5.1"];
418
+ const ZHIPU_BIGMODEL_THINKING_TOGGLE_MODELS = ["glm-4.6", "glm-4.7", "glm-5", "glm-5.1", "glm-5.2", "glm-5.3"];
397
419
  const THINKING_BUDGET_EFFORTS = ["low", "medium", "high", "xhigh", "max"];
398
420
  // Qwen3.8-Max is the first Qwen3.x model with official direct `reasoning_effort` support.
399
421
  // Evidence: https://qwen.ai/blog?id=qwen3.8
@@ -491,7 +513,7 @@ const deepseekReasoningMapFor = (modelId: string): Record<string, string> =>
491
513
  // https://help.aliyun.com/en/model-studio/token-plan-quickstart
492
514
  const ALIBABA_TOKEN_PLAN_MODELS = [
493
515
  "qwen3.8-max", "qwen3.7-max", "qwen3.7-plus", "qwen3.6-flash",
494
- "glm-5.2", "deepseek-v4-pro",
516
+ "glm-5.3", "glm-5.2", "deepseek-v4-pro",
495
517
  ];
496
518
  const ALIBABA_TOKEN_PLAN_QWEN_MODELS = [
497
519
  "qwen3.8-max", "qwen3.7-max", "qwen3.7-plus", "qwen3.6-flash",
@@ -501,6 +523,7 @@ const ALIBABA_TOKEN_PLAN_INPUT_MODALITIES: Record<string, string[]> = {
501
523
  "qwen3.7-max": ["text", "image"],
502
524
  "qwen3.7-plus": ["text", "image"],
503
525
  "qwen3.6-flash": ["text", "image"],
526
+ "glm-5.3": ["text"],
504
527
  "glm-5.2": ["text"],
505
528
  "deepseek-v4-pro": ["text"],
506
529
  };
@@ -513,7 +536,7 @@ const ALIBABA_INTL_TOKEN_PLAN_MODELS = [
513
536
  "qwen3.8-max", "qwen3.7-max", "qwen3.7-plus", "qwen3.6-plus", "qwen3.6-flash",
514
537
  "deepseek-v4-pro", "deepseek-v4-flash", "deepseek-v3.2",
515
538
  "kimi-k2.7-code", "kimi-k2.6", "kimi-k2.5",
516
- "glm-5.2", "glm-5.1", "glm-5",
539
+ "glm-5.3", "glm-5.2", "glm-5.1", "glm-5",
517
540
  "MiniMax-M2.5",
518
541
  ];
519
542
  const ALIBABA_INTL_TOKEN_PLAN_QWEN_MODELS = [
@@ -547,6 +570,8 @@ const VOLCENGINE_ARK_MODELS = [
547
570
  "deepseek-v4-pro-260425",
548
571
  "deepseek-v4-flash-260425",
549
572
  "deepseek-v3-2-251201",
573
+ // No glm-5-3 row: Ark pins date-stamped snapshot ids (glm-5-2-260617) that cannot be
574
+ // guessed ahead of the vendor publishing them. Add it once /api/v3/models lists one.
550
575
  "glm-5-2-260617",
551
576
  "glm-4-7-251222",
552
577
  ];
@@ -560,6 +585,7 @@ const VOLCENGINE_CODING_PLAN_MODELS = [
560
585
  "doubao-seed-2.0-code",
561
586
  "deepseek-v4-pro",
562
587
  "deepseek-v4-flash",
588
+ "glm-5.3",
563
589
  "glm-5.2",
564
590
  "kimi-k2.6",
565
591
  "minimax-m3",
@@ -567,6 +593,7 @@ const VOLCENGINE_CODING_PLAN_MODELS = [
567
593
  const VOLCENGINE_AGENT_PLAN_MODELS = [
568
594
  "deepseek-v4-pro",
569
595
  "deepseek-v4-flash",
596
+ "glm-5.3",
570
597
  "glm-5.2",
571
598
  "kimi-k2.6",
572
599
  "minimax-m3",
@@ -584,6 +611,7 @@ const VOLCENGINE_PLAN_TEXT_ONLY_MODELS = [
584
611
  "doubao-seed-2.0-code",
585
612
  "deepseek-v4-pro",
586
613
  "deepseek-v4-flash",
614
+ "glm-5.3",
587
615
  "glm-5.2",
588
616
  "doubao-seed-2.0-pro",
589
617
  ];
@@ -599,6 +627,7 @@ const ALIBABA_INTL_TOKEN_PLAN_INPUT_MODALITIES: Record<string, string[]> = {
599
627
  "kimi-k2.7-code": ["text", "image"],
600
628
  "kimi-k2.6": ["text", "image"],
601
629
  "kimi-k2.5": ["text", "image"],
630
+ "glm-5.3": ["text"],
602
631
  "glm-5.2": ["text"],
603
632
  "glm-5.1": ["text"],
604
633
  "glm-5": ["text"],
@@ -722,7 +751,7 @@ const NVIDIA_NIM_NO_VISION_MODELS = [
722
751
  "nvidia/nemotron-3-ultra-550b-a55b", "nvidia/nemotron-mini-4b-instruct",
723
752
  "nvidia/nvidia-nemotron-nano-9b-v2",
724
753
  "openai/gpt-oss-120b", "openai/gpt-oss-20b",
725
- "poolside/laguna-xs-2.1", "z-ai/glm-5.2",
754
+ "poolside/laguna-xs-2.1", "z-ai/glm-5.3", "z-ai/glm-5.2",
726
755
  ];
727
756
  const KIMI_CODING_MODEL_CONTEXT_WINDOWS: Record<string, number> = Object.fromEntries(
728
757
  KIMI_CODING_MODELS.map(id => [id, id === "k3[1m]" ? KIMI_K3_1M_CONTEXT_WINDOW : KIMI_K3_STANDARD_CONTEXT_WINDOW]),
@@ -731,6 +760,7 @@ const KIMI_CODING_MODEL_INPUT_MODALITIES = Object.fromEntries(
731
760
  KIMI_CODING_K3_MODELS.map(id => [id, ["text", "image"]]),
732
761
  );
733
762
  const NEURALWATT_REASONING_HISTORY_MODELS = [
763
+ "glm-5.3", "glm-5.3-short",
734
764
  "glm-5.2", "glm-5.2-short",
735
765
  "kimi-k2.6", "kimi-k2.7-code",
736
766
  "qwen3.5-397b", "qwen3.6-35b",
@@ -749,6 +779,9 @@ const BASETEN_MODEL_REASONING_EFFORTS: Record<string, string[]> = {
749
779
  "thinkingmachines/inkling": BASETEN_FULL_REASONING_EFFORTS,
750
780
  "openai/gpt-oss-120b": BASETEN_FULL_REASONING_EFFORTS,
751
781
  "moonshotai/Kimi-K3": ["low", "high", "max"],
782
+ // 260814: GLM-5.3 honours low/high/max upstream, unlike 5.2's high/max on Baseten.
783
+ "zai-org/GLM-5.3": ["low", "high", "max"],
784
+ "zai-org/GLM-5.3-Fast": ["low", "high", "max"],
752
785
  "zai-org/GLM-5.2": ["high", "max"],
753
786
  "zai-org/GLM-5.2-Fast": ["high", "max"],
754
787
  };
@@ -757,6 +790,8 @@ const BASETEN_MODEL_REASONING_EFFORT_MAP: Record<string, Record<string, string>>
757
790
  "thinkingmachines/inkling": { none: "none", minimal: "minimal" },
758
791
  "openai/gpt-oss-120b": { none: "none", minimal: "minimal" },
759
792
  "moonshotai/Kimi-K3": { none: "none" },
793
+ "zai-org/GLM-5.3": { none: "none" },
794
+ "zai-org/GLM-5.3-Fast": { none: "none" },
760
795
  "zai-org/GLM-5.2": { none: "none" },
761
796
  "zai-org/GLM-5.2-Fast": { none: "none" },
762
797
  };
@@ -805,6 +840,7 @@ const DIGITALOCEAN_CHAT_COMPLETION_MODELS = [
805
840
  "nemotron-3-nano-omni",
806
841
  "nemotron-nano-12b-v2-vl",
807
842
  "mimo-v2.5-pro",
843
+ "glm-5.3",
808
844
  "glm-5.2",
809
845
  "glm-5.1",
810
846
  "glm-5",
@@ -812,6 +848,7 @@ const DIGITALOCEAN_CHAT_COMPLETION_MODELS = [
812
848
  "meta-llama/Meta-Llama-3.1-8B-Instruct",
813
849
  ] as const;
814
850
  const SCALEWAY_SERVERLESS_CHAT_MODELS = [
851
+ "glm-5.3",
815
852
  "glm-5.2",
816
853
  // gpt-oss-120b is intentionally omitted: Scaleway requires Responses API for tool calling,
817
854
  // while this preset routes Codex agent tools through Chat Completions.
@@ -832,17 +869,22 @@ const UMANS_MODELS = [
832
869
  "umans-coder",
833
870
  "umans-kimi-k2.7",
834
871
  "umans-flash",
872
+ "umans-glm-5.3",
835
873
  "umans-glm-5.2",
836
874
  "umans-glm-5.1",
837
875
  "umans-qwen3.6-35b-a3b",
838
876
  ];
839
877
  const UMANS_REASONING_EFFORTS = ["low", "medium", "high", "xhigh", "max"];
840
878
  const UMANS_GLM_REASONING_EFFORTS = ["high", "xhigh", "max"];
841
- const UMANS_TEXT_ONLY_MODELS = ["umans-glm-5.2", "umans-glm-5.1"];
879
+ // 260814: Z.AI folds GLM-5.3 efforts into low/high/max, so `low` is a real tier here and
880
+ // `xhigh` is not distinct from `max` (docs.z.ai/devpack/latest-model).
881
+ const UMANS_GLM_53_REASONING_EFFORTS = ["low", "high", "max"];
882
+ const UMANS_TEXT_ONLY_MODELS = ["umans-glm-5.3", "umans-glm-5.2", "umans-glm-5.1"];
842
883
  const UMANS_MODEL_CONTEXT_WINDOWS: Record<string, number> = {
843
884
  "umans-coder": 262_144,
844
885
  "umans-kimi-k2.7": 262_144,
845
886
  "umans-flash": 262_144,
887
+ "umans-glm-5.3": 405_504,
846
888
  "umans-glm-5.2": 405_504,
847
889
  "umans-glm-5.1": 202_752,
848
890
  "umans-qwen3.6-35b-a3b": 262_144,
@@ -851,6 +893,7 @@ const UMANS_MODEL_INPUT_MODALITIES: Record<string, string[]> = Object.fromEntrie
851
893
  UMANS_MODELS.map(id => [id, UMANS_TEXT_ONLY_MODELS.includes(id) ? ["text"] : ["text", "image"]]),
852
894
  );
853
895
  const CLINE_PASS_MODELS = [
896
+ "cline-pass/glm-5.3",
854
897
  "cline-pass/glm-5.2",
855
898
  "cline-pass/kimi-k3",
856
899
  "cline-pass/kimi-k2.7-code",
@@ -864,6 +907,7 @@ const CLINE_PASS_MODELS = [
864
907
  "cline-pass/qwen3.7-plus",
865
908
  ];
866
909
  const CLINE_PASS_MODEL_CONTEXT_WINDOWS: Record<string, number> = {
910
+ "cline-pass/glm-5.3": 1_048_576,
867
911
  "cline-pass/glm-5.2": 1_048_576,
868
912
  "cline-pass/kimi-k3": 1_048_576,
869
913
  "cline-pass/kimi-k2.7-code": 262_144,
@@ -1177,6 +1221,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1177
1221
  "umans-coder": UMANS_REASONING_EFFORTS,
1178
1222
  "umans-kimi-k2.7": UMANS_REASONING_EFFORTS,
1179
1223
  "umans-flash": UMANS_REASONING_EFFORTS,
1224
+ "umans-glm-5.3": UMANS_GLM_53_REASONING_EFFORTS,
1180
1225
  "umans-glm-5.2": UMANS_GLM_REASONING_EFFORTS,
1181
1226
  "umans-glm-5.1": UMANS_GLM_REASONING_EFFORTS,
1182
1227
  "umans-qwen3.6-35b-a3b": UMANS_REASONING_EFFORTS,
@@ -1200,6 +1245,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1200
1245
  modelContextWindows: { "kimi-k3": KIMI_K3_STANDARD_CONTEXT_WINDOW },
1201
1246
  modelInputModalities: { "kimi-k3": ["text", "image"] },
1202
1247
  modelReasoningEfforts: {
1248
+ "glm-5.3": ZAI_GLM_53_REASONING_EFFORTS,
1203
1249
  "glm-5.2": ZAI_GLM_52_REASONING_EFFORTS,
1204
1250
  "kimi-k3": KIMI_CODING_K3_REASONING_EFFORTS,
1205
1251
  "kimi-k2.7-code": [],
@@ -1217,6 +1263,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1217
1263
  ...Object.fromEntries(DEEPSEEK_THINKING_MODELS.map(id => [id, deepseekReasoningMapFor(id)])),
1218
1264
  },
1219
1265
  modelSupportsReasoningSummaries: {
1266
+ "glm-5.3": true,
1220
1267
  "glm-5.2": true,
1221
1268
  "glm-5.1": true,
1222
1269
  "glm-5": true,
@@ -1229,7 +1276,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1229
1276
  // every model listed here (and the catalog advertises image input on their behalf).
1230
1277
  // Kimi K2.7 Code accepts text+image+video: do NOT list it here.
1231
1278
  noVisionModels: [
1232
- "glm-5.2", "glm-5", "glm-5.1",
1279
+ "glm-5.3", "glm-5.2", "glm-5", "glm-5.1",
1233
1280
  "deepseek-v4-flash", "deepseek-v4-pro",
1234
1281
  "mimo-v2-pro", "mimo-v2.5-pro",
1235
1282
  "minimax-m2.5", "minimax-m2.7",
@@ -1240,7 +1287,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1240
1287
  noPenaltyModels: ["kimi-k3", "kimi-k2.7-code", "kimi-k2.7-code-highspeed"],
1241
1288
  autoToolChoiceOnlyModels: ["kimi-k2.7-code", "kimi-k2.7-code-highspeed"],
1242
1289
  // Issue #78: DeepSeek V4 thinking mode requires reasoning_content replay on tool-call turns.
1243
- preserveReasoningContentModels: ["glm-5.2", "kimi-k3", "kimi-k2.7-code", "kimi-k2.7-code-highspeed", ...DEEPSEEK_THINKING_MODELS],
1290
+ preserveReasoningContentModels: ["glm-5.3", "glm-5.2", "kimi-k3", "kimi-k2.7-code", "kimi-k2.7-code-highspeed", ...DEEPSEEK_THINKING_MODELS],
1244
1291
  },
1245
1292
  {
1246
1293
  id: "neuralwatt",
@@ -1249,10 +1296,13 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1249
1296
  baseUrl: "https://api.neuralwatt.com/v1",
1250
1297
  authKind: "key",
1251
1298
  dashboardUrl: "https://portal.neuralwatt.com",
1252
- defaultModel: "glm-5.2",
1299
+ defaultModel: "glm-5.3",
1253
1300
  // 2026-07-10 live /v1/models: K2.5 rows were removed and GLM-5.2 short variants added.
1301
+ // 260814: the glm-5.3 quartet is speculative; live discovery is authoritative and drops
1302
+ // any id Neuralwatt has not published yet.
1254
1303
  // Evidence: devlog/_plan/260710_provider_hardening/003_research_aggregators.md and https://api.neuralwatt.com/v1/models.
1255
1304
  models: [
1305
+ "glm-5.3", "glm-5.3-fast", "glm-5.3-short", "glm-5.3-short-fast",
1256
1306
  "glm-5.2", "glm-5.2-fast", "glm-5.2-short", "glm-5.2-short-fast",
1257
1307
  "kimi-k2.6", "kimi-k2.6-fast",
1258
1308
  "kimi-k2.7-code",
@@ -1260,6 +1310,10 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1260
1310
  ],
1261
1311
  // Neuralwatt's /v1/models metadata is authoritative; these static hints are the offline fallback.
1262
1312
  modelReasoningEfforts: {
1313
+ "glm-5.3": ZAI_GLM_53_REASONING_EFFORTS,
1314
+ "glm-5.3-fast": [],
1315
+ "glm-5.3-short": ZAI_GLM_53_REASONING_EFFORTS,
1316
+ "glm-5.3-short-fast": [],
1263
1317
  "glm-5.2": ZAI_GLM_52_REASONING_EFFORTS,
1264
1318
  "glm-5.2-fast": [],
1265
1319
  "glm-5.2-short": ZAI_GLM_52_REASONING_EFFORTS,
@@ -1275,8 +1329,8 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1275
1329
  "qwen3.6-35b-fast": [],
1276
1330
  },
1277
1331
  thinkingBudgetModels: THINKING_BUDGET_MODELS,
1278
- noReasoningModels: ["glm-5.2-fast", "glm-5.2-short-fast", "kimi-k2.6-fast", "qwen3.5-397b-fast", "qwen3.6-35b-fast"],
1279
- noVisionModels: ["glm-5.2", "glm-5.2-fast", "glm-5.2-short", "glm-5.2-short-fast", "qwen3.5-397b", "qwen3.5-397b-fast"],
1332
+ noReasoningModels: ["glm-5.3-fast", "glm-5.3-short-fast", "glm-5.2-fast", "glm-5.2-short-fast", "kimi-k2.6-fast", "qwen3.5-397b-fast", "qwen3.6-35b-fast"],
1333
+ noVisionModels: ["glm-5.3", "glm-5.3-fast", "glm-5.3-short", "glm-5.3-short-fast", "glm-5.2", "glm-5.2-fast", "glm-5.2-short", "glm-5.2-short-fast", "qwen3.5-397b", "qwen3.5-397b-fast"],
1280
1334
  noTemperatureModels: ["kimi-k2.7-code"],
1281
1335
  noTopPModels: ["kimi-k2.7-code"],
1282
1336
  noPenaltyModels: ["kimi-k2.7-code"],
@@ -1917,18 +1971,20 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1917
1971
  { id: "venice", label: "Venice", baseUrl: "https://api.venice.ai/api/v1", adapter: "openai-chat", authKind: "key", dashboardUrl: "https://venice.ai/settings/api" },
1918
1972
  // 260710 GLM-5.2 context and path-specific ids: Tier-2 evidence in
1919
1973
  // devlog/_plan/260710_provider_hardening/002_research_cn.md.
1974
+ // 260814: glm-5.3 / glm-5.3[1m] added per docs.z.ai/devpack/latest-model, which lists them as
1975
+ // Coding Plan ids on this same endpoint. Capabilities mirror 5.2 until Z.AI publishes tables.
1920
1976
  {
1921
1977
  id: "zai", label: "Z.AI — GLM Coding Plan", baseUrl: "https://api.z.ai/api/coding/paas/v4", adapter: "openai-chat", authKind: "key",
1922
- dashboardUrl: "https://z.ai/manage-apikey/apikey-list", defaultModel: "glm-5.2",
1923
- note: "GLM-5.2 coding subscription",
1924
- models: ["glm-5.2", "glm-5.2[1m]", "glm-5.1", "glm-5", "glm-4.6"],
1925
- modelContextWindows: { "glm-5.2": 1_000_000, "glm-5.2[1m]": 1_000_000 },
1978
+ dashboardUrl: "https://z.ai/manage-apikey/apikey-list", defaultModel: "glm-5.3",
1979
+ note: "GLM-5.3 coding subscription",
1980
+ models: ["glm-5.3", "glm-5.3[1m]", "glm-5.2", "glm-5.2[1m]", "glm-5.1", "glm-5", "glm-4.6"],
1981
+ modelContextWindows: { "glm-5.3": 1_000_000, "glm-5.3[1m]": 1_000_000, "glm-5.2": 1_000_000, "glm-5.2[1m]": 1_000_000 },
1926
1982
  // Z.AI's OpenAI path returns 400 code 1211 for bracketed model ids.
1927
1983
  modelSuffixBracketStrip: true,
1928
- noVisionModels: ZAI_GLM_52_MODELS,
1929
- modelReasoningEfforts: Object.fromEntries(ZAI_GLM_52_MODELS.map(id => [id, ZAI_GLM_52_REASONING_EFFORTS])),
1930
- modelSupportsReasoningSummaries: Object.fromEntries(ZAI_GLM_52_MODELS.map(id => [id, true])),
1931
- preserveReasoningContentModels: ZAI_GLM_52_MODELS,
1984
+ noVisionModels: ZAI_GLM_5X_MODELS,
1985
+ modelReasoningEfforts: ZAI_GLM_5X_REASONING_EFFORTS,
1986
+ modelSupportsReasoningSummaries: Object.fromEntries(ZAI_GLM_5X_MODELS.map(id => [id, true])),
1987
+ preserveReasoningContentModels: ZAI_GLM_5X_MODELS,
1932
1988
  },
1933
1989
  // Zhipu's domestic BigModel platform: OpenAI-compatible pay-as-you-go on open.bigmodel.cn — a
1934
1990
  // different host and billing product from the `zai` coding-plan subscription above.
@@ -1999,15 +2055,15 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
1999
2055
  adapter: "openai-chat",
2000
2056
  authKind: "key",
2001
2057
  dashboardUrl: "https://bigmodel.cn/console/usercenter/apikeys",
2002
- defaultModel: "glm-5.2",
2003
- models: ["glm-5.2", "glm-5.2[1m]", "glm-5.1", "glm-5", "glm-4.6"],
2058
+ defaultModel: "glm-5.3",
2059
+ models: ["glm-5.3", "glm-5.3[1m]", "glm-5.2", "glm-5.2[1m]", "glm-5.1", "glm-5", "glm-4.6"],
2004
2060
  jawcodeBundle: "zai",
2005
- modelContextWindows: { "glm-5.2": 1_000_000, "glm-5.2[1m]": 1_000_000 },
2061
+ modelContextWindows: { "glm-5.3": 1_000_000, "glm-5.3[1m]": 1_000_000, "glm-5.2": 1_000_000, "glm-5.2[1m]": 1_000_000 },
2006
2062
  modelSuffixBracketStrip: true,
2007
- noVisionModels: ZAI_GLM_52_MODELS,
2008
- modelReasoningEfforts: Object.fromEntries(ZAI_GLM_52_MODELS.map(id => [id, ZAI_GLM_52_REASONING_EFFORTS])),
2009
- modelSupportsReasoningSummaries: Object.fromEntries(ZAI_GLM_52_MODELS.map(id => [id, true])),
2010
- preserveReasoningContentModels: ZAI_GLM_52_MODELS,
2063
+ noVisionModels: ZAI_GLM_5X_MODELS,
2064
+ modelReasoningEfforts: ZAI_GLM_5X_REASONING_EFFORTS,
2065
+ modelSupportsReasoningSummaries: Object.fromEntries(ZAI_GLM_5X_MODELS.map(id => [id, true])),
2066
+ preserveReasoningContentModels: ZAI_GLM_5X_MODELS,
2011
2067
  // No liveModels: the same reasoning as the pay-as-you-go row — an unverified live claim
2012
2068
  // yields an empty picker at runtime.
2013
2069
  note: "Domestic BigModel Coding Plan endpoint (open.bigmodel.cn)",
@@ -2146,11 +2202,12 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
2146
2202
  modelInputModalities: ALIBABA_TOKEN_PLAN_INPUT_MODALITIES,
2147
2203
  modelContextWindows: {
2148
2204
  "qwen3.8-max": 983_616, "qwen3.7-max": 1_000_000, "qwen3.7-plus": 1_000_000,
2149
- "qwen3.6-flash": 1_000_000, "glm-5.2": 1_000_000, "deepseek-v4-pro": 1_000_000,
2205
+ "qwen3.6-flash": 1_000_000, "glm-5.3": 1_000_000, "glm-5.2": 1_000_000, "deepseek-v4-pro": 1_000_000,
2150
2206
  },
2151
2207
  modelReasoningEfforts: {
2152
2208
  ...Object.fromEntries(ALIBABA_TOKEN_PLAN_QWEN_MODELS.map(id => [id, THINKING_BUDGET_EFFORTS])),
2153
2209
  "qwen3.8-max": QWEN38_REASONING_EFFORTS,
2210
+ "glm-5.3": ZAI_GLM_53_REASONING_EFFORTS,
2154
2211
  "glm-5.2": ZAI_GLM_52_REASONING_EFFORTS,
2155
2212
  "deepseek-v4-pro": deepseekThinkingEffortsFor("deepseek-v4-pro"),
2156
2213
  },
@@ -2158,8 +2215,8 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
2158
2215
  modelReasoningEffortMap: { "deepseek-v4-pro": deepseekReasoningMapFor("deepseek-v4-pro") },
2159
2216
  directReasoningEffortModels: ["qwen3.8-max"],
2160
2217
  thinkingBudgetModels: ALIBABA_TOKEN_PLAN_QWEN_MODELS.filter(id => id !== "qwen3.8-max"),
2161
- preserveReasoningContentModels: ["glm-5.2", "deepseek-v4-pro", "qwen3.8-max", "qwen3.7-max", "qwen3.7-plus", "qwen3.6-flash"],
2162
- noVisionModels: ["glm-5.2", "deepseek-v4-pro"],
2218
+ preserveReasoningContentModels: ["glm-5.3", "glm-5.2", "deepseek-v4-pro", "qwen3.8-max", "qwen3.7-max", "qwen3.7-plus", "qwen3.6-flash"],
2219
+ noVisionModels: ["glm-5.3", "glm-5.2", "deepseek-v4-pro"],
2163
2220
  },
2164
2221
  {
2165
2222
  id: "alibaba-token-plan-intl",
@@ -2181,12 +2238,13 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
2181
2238
  "qwen3.7-max": 1_000_000, "qwen3.7-plus": 1_000_000, "qwen3.6-plus": 1_000_000, "qwen3.6-flash": 1_000_000,
2182
2239
  "deepseek-v4-pro": 1_000_000, "deepseek-v4-flash": 1_000_000, "deepseek-v3.2": 131_072,
2183
2240
  "kimi-k2.7-code": 262_144, "kimi-k2.6": 262_144, "kimi-k2.5": 262_144,
2184
- "glm-5.2": 1_000_000, "glm-5.1": 1_000_000, "glm-5": 1_000_000,
2241
+ "glm-5.3": 1_000_000, "glm-5.2": 1_000_000, "glm-5.1": 1_000_000, "glm-5": 1_000_000,
2185
2242
  "MiniMax-M2.5": 204_800,
2186
2243
  },
2187
2244
  modelReasoningEfforts: {
2188
2245
  ...Object.fromEntries(ALIBABA_INTL_TOKEN_PLAN_QWEN_MODELS.map(id => [id, THINKING_BUDGET_EFFORTS])),
2189
2246
  "qwen3.8-max": QWEN38_REASONING_EFFORTS,
2247
+ "glm-5.3": ZAI_GLM_53_REASONING_EFFORTS,
2190
2248
  "glm-5.2": ZAI_GLM_52_REASONING_EFFORTS,
2191
2249
  "deepseek-v4-pro": deepseekThinkingEffortsFor("deepseek-v4-pro"),
2192
2250
  "deepseek-v4-flash": deepseekThinkingEffortsFor("deepseek-v4-flash"),
@@ -2197,8 +2255,8 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
2197
2255
  },
2198
2256
  directReasoningEffortModels: ["qwen3.8-max"],
2199
2257
  thinkingBudgetModels: ALIBABA_INTL_TOKEN_PLAN_QWEN_MODELS.filter(id => id !== "qwen3.8-max"),
2200
- preserveReasoningContentModels: ["glm-5.2", "deepseek-v4-pro", "deepseek-v4-flash", "qwen3.8-max", "qwen3.7-max", "qwen3.7-plus", "qwen3.6-plus", "qwen3.6-flash"],
2201
- noVisionModels: ["deepseek-v4-pro", "deepseek-v4-flash", "deepseek-v3.2", "glm-5.2", "glm-5.1", "glm-5", "MiniMax-M2.5"],
2258
+ preserveReasoningContentModels: ["glm-5.3", "glm-5.2", "deepseek-v4-pro", "deepseek-v4-flash", "qwen3.8-max", "qwen3.7-max", "qwen3.7-plus", "qwen3.6-plus", "qwen3.6-flash"],
2259
+ noVisionModels: ["deepseek-v4-pro", "deepseek-v4-flash", "deepseek-v3.2", "glm-5.3", "glm-5.2", "glm-5.1", "glm-5", "MiniMax-M2.5"],
2202
2260
  noReasoningModels: ["kimi-k2.7-code", "kimi-k2.6", "kimi-k2.5", "deepseek-v3.2", "glm-5.1", "glm-5", "MiniMax-M2.5"],
2203
2261
  modelDefaultReasoningEfforts: { "qwen3.8-max": "xhigh" },
2204
2262
  },
@@ -2230,10 +2288,10 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
2230
2288
  authKind: "key",
2231
2289
  dashboardUrl: "https://ollama.com/settings/keys",
2232
2290
  // Live IDs verified 2026-07-10; qwen3-coder:480b retires 2026-07-15.
2233
- models: ["glm-5.2", "deepseek-v4-pro", "qwen3-coder:480b", "gpt-oss:120b", "kimi-k2.6", "minimax-m3", "qwen3.5:397b", "gemma4:31b"],
2234
- defaultModel: "glm-5.2",
2291
+ models: ["glm-5.3", "glm-5.2", "deepseek-v4-pro", "qwen3-coder:480b", "gpt-oss:120b", "kimi-k2.6", "minimax-m3", "qwen3.5:397b", "gemma4:31b"],
2292
+ defaultModel: "glm-5.3",
2235
2293
  noVisionModels: [
2236
- "glm-5.2", "glm-5.1", "glm-5", "glm-4.7",
2294
+ "glm-5.3", "glm-5.2", "glm-5.1", "glm-5", "glm-4.7",
2237
2295
  "minimax-m2.7", "minimax-m2.5", "minimax-m2.1",
2238
2296
  "nemotron-3-ultra", "nemotron-3-super",
2239
2297
  "deepseek-v4-pro", "deepseek-v4-flash",
@@ -2406,6 +2464,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
2406
2464
  "@cf/qwen/qwq-32b",
2407
2465
  "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",
2408
2466
  "@cf/moonshotai/kimi-k2.7-code",
2467
+ "@cf/zai-org/glm-5.3",
2409
2468
  "@cf/zai-org/glm-5.2",
2410
2469
  "@cf/mistralai/mistral-small-3.1-24b-instruct",
2411
2470
  ],