@oh-my-pi/pi-catalog 16.2.7 → 16.2.9

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/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [16.2.9] - 2026-06-30
6
+
7
+ ### Added
8
+
9
+ - Added full capability support for Claude Sonnet 5, aligning it with Claude Opus 4.8 and Fable 5. This includes adaptive thinking display, mid-conversation system messages, sampling parameter and thinking omission API restrictions, and 5-tier adaptive reasoning effort mapping (including xhigh and max levels) across direct APIs, OpenRouter, and Bedrock Converse.
10
+
11
+ ### Changed
12
+
13
+ - Updated input and output costs for models in the catalog.
14
+
5
15
  ## [16.2.7] - 2026-06-30
6
16
 
7
17
  ### Fixed
@@ -56,6 +56,13 @@ export declare const parseOpenAIModel: (modelId: string) => OpenAIModel | null;
56
56
  */
57
57
  export declare const parseGlmModel: (modelId: string) => GlmModel | null;
58
58
  export declare function isFableOrMythos(kind: AnthropicKind): boolean;
59
+ /**
60
+ * Returns true if the parsed Anthropic model is part of the adaptive-thinking
61
+ * Claude generation at or above a specific capability threshold.
62
+ * - Opus has a configurable minimum version floor (e.g. "4.6", "4.7", "4.8").
63
+ * - Sonnet, Fable, and Mythos all require version 5 or higher.
64
+ */
65
+ export declare function isAnthropicAdaptiveGenAtLeast(parsed: AnthropicModel, opusMin: "4.6" | "4.7" | "4.8"): boolean;
59
66
  export declare function parseSemVer(version: string): SemVer | null;
60
67
  export declare function semverGte(left: SemVer | string, right: SemVer | string): boolean;
61
68
  export declare function semverEqual(left: SemVer | string, right: SemVer | string): boolean;
@@ -85,15 +85,16 @@ export declare const isGlmVisionModelId: (modelId: string) => boolean;
85
85
  */
86
86
  export declare const modelFamilyToken: (modelId: string) => string;
87
87
  /**
88
- * Adaptive thinking `display` is supported starting with Claude Opus 4.7 and
89
- * the Claude Fable/Mythos 5 generation. Older adaptive-thinking models
90
- * (Opus 4.6, Sonnet 4.6+) reject the field. Classifier-based, so dotted and
91
- * dashed version forms both match while bare dated ids
88
+ * Adaptive thinking `display` is supported starting with Claude Opus 4.7+,
89
+ * Sonnet 5+, and the Claude Fable/Mythos 5 generation. Older adaptive-thinking
90
+ * models (Opus 4.6, Sonnet 4.6) reject the field. Classifier-based, so dotted
91
+ * and dashed version forms both match while bare dated ids
92
92
  * (`claude-opus-4-20250514` = Opus 4.0) stay excluded.
93
93
  */
94
94
  export declare const supportsAdaptiveThinkingDisplay: (modelId: string) => boolean;
95
95
  /**
96
- * Returns true for Anthropic models with Opus 4.7+/Fable/Mythos API restrictions:
96
+ * Returns true for Anthropic models with Opus 4.7+, Sonnet 5+, and Fable/Mythos 5+
97
+ * API restrictions:
97
98
  * - Sampling parameters (temperature/top_p/top_k) return 400 error
98
99
  * - Thinking content is omitted by default (needs display: "summarized")
99
100
  */
@@ -101,8 +102,8 @@ export declare const hasOpus47ApiRestrictions: (modelId: string) => boolean;
101
102
  /**
102
103
  * Mid-conversation `role: "system"` messages (system instructions appended at
103
104
  * non-first positions in the `messages` array) are supported starting with
104
- * Claude Opus 4.8 and the Claude Fable/Mythos 5 generation. Earlier Claude
105
- * models reject the role.
105
+ * Claude Opus 4.8+, Sonnet 5+, and the Claude Fable/Mythos 5 generation.
106
+ * Earlier Claude models reject the role.
106
107
  * @see https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages
107
108
  */
108
109
  export declare const supportsMidConversationSystemMessages: (modelId: string) => boolean;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/pi-catalog",
4
- "version": "16.2.7",
4
+ "version": "16.2.9",
5
5
  "description": "Model catalog for omp: bundled model database, provider discovery descriptors, model identity, classification, and equivalence",
6
6
  "homepage": "https://omp.sh",
7
7
  "author": "Can Boluk",
@@ -34,12 +34,12 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@bufbuild/protobuf": "^2.12.0",
37
- "@oh-my-pi/pi-utils": "16.2.7",
37
+ "@oh-my-pi/pi-utils": "16.2.9",
38
38
  "arktype": "^2.2.0",
39
39
  "zod": "^4"
40
40
  },
41
41
  "devDependencies": {
42
- "@oh-my-pi/pi-ai": "16.2.7",
42
+ "@oh-my-pi/pi-ai": "16.2.9",
43
43
  "@types/bun": "^1.3.14"
44
44
  },
45
45
  "engines": {
@@ -158,6 +158,20 @@ export function isFableOrMythos(kind: AnthropicKind): boolean {
158
158
  return kind === "fable" || kind === "mythos";
159
159
  }
160
160
 
161
+ /**
162
+ * Returns true if the parsed Anthropic model is part of the adaptive-thinking
163
+ * Claude generation at or above a specific capability threshold.
164
+ * - Opus has a configurable minimum version floor (e.g. "4.6", "4.7", "4.8").
165
+ * - Sonnet, Fable, and Mythos all require version 5 or higher.
166
+ */
167
+ export function isAnthropicAdaptiveGenAtLeast(parsed: AnthropicModel, opusMin: "4.6" | "4.7" | "4.8"): boolean {
168
+ if (parsed.kind === "opus") {
169
+ return semverGte(parsed.version, opusMin);
170
+ }
171
+ // Sonnet 5+, Fable 5+, Mythos 5+, and any future gen-5+ models
172
+ return semverGte(parsed.version, "5");
173
+ }
174
+
161
175
  function createSemVer(major: number, minor: number, patch = 0): SemVer {
162
176
  return { major, minor, patch };
163
177
  }
@@ -9,6 +9,7 @@
9
9
 
10
10
  import {
11
11
  bareModelId,
12
+ isAnthropicAdaptiveGenAtLeast,
12
13
  isFableOrMythos,
13
14
  parseAnthropicModel,
14
15
  parseGlmModel,
@@ -201,41 +202,38 @@ export const modelFamilyToken = memo((modelId: string): string => {
201
202
  });
202
203
 
203
204
  /**
204
- * Adaptive thinking `display` is supported starting with Claude Opus 4.7 and
205
- * the Claude Fable/Mythos 5 generation. Older adaptive-thinking models
206
- * (Opus 4.6, Sonnet 4.6+) reject the field. Classifier-based, so dotted and
207
- * dashed version forms both match while bare dated ids
205
+ * Adaptive thinking `display` is supported starting with Claude Opus 4.7+,
206
+ * Sonnet 5+, and the Claude Fable/Mythos 5 generation. Older adaptive-thinking
207
+ * models (Opus 4.6, Sonnet 4.6) reject the field. Classifier-based, so dotted
208
+ * and dashed version forms both match while bare dated ids
208
209
  * (`claude-opus-4-20250514` = Opus 4.0) stay excluded.
209
210
  */
210
211
  export const supportsAdaptiveThinkingDisplay = memo((modelId: string): boolean => {
211
212
  const parsed = parseAnthropicModel(bareModelId(modelId));
212
- if (!parsed) return false;
213
- if (isFableOrMythos(parsed.kind)) return semverGte(parsed.version, "5");
214
- return parsed.kind === "opus" && semverGte(parsed.version, "4.7");
213
+ return parsed !== null && isAnthropicAdaptiveGenAtLeast(parsed, "4.7");
215
214
  });
216
215
 
217
216
  /**
218
- * Returns true for Anthropic models with Opus 4.7+/Fable/Mythos API restrictions:
217
+ * Returns true for Anthropic models with Opus 4.7+, Sonnet 5+, and Fable/Mythos 5+
218
+ * API restrictions:
219
219
  * - Sampling parameters (temperature/top_p/top_k) return 400 error
220
220
  * - Thinking content is omitted by default (needs display: "summarized")
221
221
  */
222
222
  export const hasOpus47ApiRestrictions = memo((modelId: string): boolean => {
223
223
  const parsed = parseAnthropicModel(bareModelId(modelId));
224
- if (!parsed) return false;
225
- return (parsed.kind === "opus" && semverGte(parsed.version, "4.7")) || isFableOrMythos(parsed.kind);
224
+ return parsed !== null && isAnthropicAdaptiveGenAtLeast(parsed, "4.7");
226
225
  });
227
226
 
228
227
  /**
229
228
  * Mid-conversation `role: "system"` messages (system instructions appended at
230
229
  * non-first positions in the `messages` array) are supported starting with
231
- * Claude Opus 4.8 and the Claude Fable/Mythos 5 generation. Earlier Claude
232
- * models reject the role.
230
+ * Claude Opus 4.8+, Sonnet 5+, and the Claude Fable/Mythos 5 generation.
231
+ * Earlier Claude models reject the role.
233
232
  * @see https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages
234
233
  */
235
234
  export const supportsMidConversationSystemMessages = memo((modelId: string): boolean => {
236
235
  const parsed = parseAnthropicModel(bareModelId(modelId));
237
- if (!parsed) return false;
238
- return (parsed.kind === "opus" && semverGte(parsed.version, "4.8")) || isFableOrMythos(parsed.kind);
236
+ return parsed !== null && isAnthropicAdaptiveGenAtLeast(parsed, "4.8");
239
237
  });
240
238
 
241
239
  export const isAnthropicFableOrMythosModel = memo((modelId: string): boolean => {
@@ -12,7 +12,7 @@ import {
12
12
  type AnthropicModel,
13
13
  bareModelId,
14
14
  type GeminiModel,
15
- isFableOrMythos,
15
+ isAnthropicAdaptiveGenAtLeast,
16
16
  type OpenAIModel,
17
17
  type ParsedModel,
18
18
  parseAnthropicModel,
@@ -441,12 +441,11 @@ function isDeepseekReasoningModel<TApi extends Api>(spec: ModelSpec<TApi>): bool
441
441
  function getOpenRouterAnthropicReasoningEffortMap(modelId: string): EffortMap | undefined {
442
442
  const parsed = parseAnthropicModel(bareModelId(modelId));
443
443
  if (!parsed) return undefined;
444
- // Adaptive efforts on OpenRouter's completions front: Fable/Mythos and
445
- // Opus 4.6+ only — Sonnet stays on the plain effort vocabulary there.
446
- const isOpusAdaptive = parsed.kind === "opus" && semverGte(parsed.version, "4.6");
447
- if (!isFableOrMythos(parsed.kind) && !isOpusAdaptive) return undefined;
444
+ // Adaptive efforts on OpenRouter's completions front: Fable/Mythos, Sonnet 5+,
445
+ // and Opus 4.6+ only — older Sonnet versions stay on the plain effort vocabulary there.
446
+ if (!isAnthropicAdaptiveGenAtLeast(parsed, "4.6")) return undefined;
448
447
 
449
- const hasRealXHigh = isFableOrMythos(parsed.kind) || semverGte(parsed.version, "4.7");
448
+ const hasRealXHigh = isAnthropicAdaptiveGenAtLeast(parsed, "4.7");
450
449
  return hasRealXHigh ? ANTHROPIC_ADAPTIVE_EFFORT_MAP_5_TIER : ANTHROPIC_ADAPTIVE_EFFORT_MAP_4_TIER;
451
450
  }
452
451
 
@@ -521,7 +520,7 @@ function inferAnthropicSupportedEfforts<TApi extends Api>(
521
520
  (spec.api === "anthropic-messages" || spec.api === "bedrock-converse-stream") &&
522
521
  semverGte(parsedModel.version, "4.6")
523
522
  ) {
524
- return parsedModel.kind === "opus" || isFableOrMythos(parsedModel.kind)
523
+ return isAnthropicAdaptiveGenAtLeast(parsedModel, "4.6")
525
524
  ? DEFAULT_REASONING_EFFORTS_WITH_XHIGH
526
525
  : DEFAULT_REASONING_EFFORTS;
527
526
  }
@@ -601,10 +600,7 @@ function inferThinkingControlMode<TApi extends Api>(
601
600
 
602
601
  case "bedrock-converse-stream":
603
602
  if (parsedModel.family === "anthropic") {
604
- if (
605
- semverGte(parsedModel.version, "4.6") &&
606
- (parsedModel.kind === "opus" || isFableOrMythos(parsedModel.kind))
607
- ) {
603
+ if (isAnthropicAdaptiveGenAtLeast(parsedModel, "4.6")) {
608
604
  return "anthropic-adaptive";
609
605
  }
610
606
  // Opus 4.5 on Bedrock metadata mirrors the direct-Anthropic
@@ -627,19 +623,18 @@ function isOpenRouterAnthropicAdaptiveReasoningModel<TApi extends Api>(
627
623
  ): boolean {
628
624
  if (!isOpenAICompatReasoningApi(spec.api)) return false;
629
625
  if (!modelMatchesHost(spec, "openrouter")) return false;
630
- return isFableOrMythos(parsedModel.kind) || (parsedModel.kind === "opus" && semverGte(parsedModel.version, "4.6"));
626
+ return isAnthropicAdaptiveGenAtLeast(parsedModel, "4.6");
631
627
  }
632
628
 
633
629
  /**
634
- * Opus 4.7+ and Fable/Mythos on the Messages API expose the full five-tier
630
+ * Opus 4.7+, Sonnet 5+, and Fable/Mythos 5+ on the Messages API expose the full five-tier
635
631
  * adaptive scale (low/medium/high/xhigh/max). Bedrock Converse stays on the
636
632
  * four-tier scale regardless of model version.
637
633
  */
638
634
  function anthropicModelHasRealXHighEffort<TApi extends Api>(spec: ModelSpec<TApi>, parsedModel: ParsedModel): boolean {
639
635
  if (spec.api !== "anthropic-messages") return false;
640
636
  if (parsedModel.family !== "anthropic") return false;
641
- if (isFableOrMythos(parsedModel.kind)) return true;
642
- return parsedModel.kind === "opus" && semverGte(parsedModel.version, "4.7");
637
+ return isAnthropicAdaptiveGenAtLeast(parsedModel, "4.7");
643
638
  }
644
639
 
645
640
  // ---------------------------------------------------------------------------
package/src/models.json CHANGED
@@ -12299,6 +12299,26 @@
12299
12299
  }
12300
12300
  },
12301
12301
  "cerebras": {
12302
+ "gemma-4-31b": {
12303
+ "id": "gemma-4-31b",
12304
+ "name": "gemma-4-31b",
12305
+ "api": "openai-completions",
12306
+ "provider": "cerebras",
12307
+ "baseUrl": "https://api.cerebras.ai/v1",
12308
+ "reasoning": false,
12309
+ "input": [
12310
+ "text",
12311
+ "image"
12312
+ ],
12313
+ "cost": {
12314
+ "input": 0,
12315
+ "output": 0,
12316
+ "cacheRead": 0,
12317
+ "cacheWrite": 0
12318
+ },
12319
+ "contextWindow": 256000,
12320
+ "maxTokens": 8192
12321
+ },
12302
12322
  "gpt-oss-120b": {
12303
12323
  "id": "gpt-oss-120b",
12304
12324
  "name": "GPT OSS 120B",
@@ -15440,46 +15460,6 @@
15440
15460
  "trustExplicitThinkingOnly": true
15441
15461
  }
15442
15462
  },
15443
- "claude-opus-4-6-fast": {
15444
- "id": "claude-opus-4-6-fast",
15445
- "name": "Claude Opus 4.6 Fast",
15446
- "api": "devin-agent",
15447
- "provider": "devin",
15448
- "baseUrl": "https://server.codeium.com",
15449
- "reasoning": true,
15450
- "input": [
15451
- "text",
15452
- "image"
15453
- ],
15454
- "supportsTools": true,
15455
- "cost": {
15456
- "input": 0,
15457
- "output": 0,
15458
- "cacheRead": 0,
15459
- "cacheWrite": 0
15460
- },
15461
- "contextWindow": 200000,
15462
- "maxTokens": 64000,
15463
- "thinking": {
15464
- "mode": "budget",
15465
- "efforts": [
15466
- "minimal",
15467
- "low",
15468
- "medium",
15469
- "high"
15470
- ],
15471
- "effortRouting": {
15472
- "off": "claude-opus-4-6-fast",
15473
- "minimal": "claude-opus-4-6-thinking-fast",
15474
- "low": "claude-opus-4-6-thinking-fast",
15475
- "medium": "claude-opus-4-6-thinking-fast",
15476
- "high": "claude-opus-4-6-thinking-fast"
15477
- }
15478
- },
15479
- "compat": {
15480
- "trustExplicitThinkingOnly": true
15481
- }
15482
- },
15483
15463
  "claude-opus-4-7": {
15484
15464
  "id": "claude-opus-4-7",
15485
15465
  "name": "Claude Opus 4.7",
@@ -50475,7 +50455,7 @@
50475
50455
  "api": "openai-completions",
50476
50456
  "provider": "nanogpt",
50477
50457
  "baseUrl": "https://nano-gpt.com/api/v1",
50478
- "reasoning": false,
50458
+ "reasoning": true,
50479
50459
  "input": [
50480
50460
  "text"
50481
50461
  ],
@@ -50486,7 +50466,20 @@
50486
50466
  "cacheWrite": 0
50487
50467
  },
50488
50468
  "contextWindow": 1048576,
50489
- "maxTokens": 131072
50469
+ "maxTokens": 131072,
50470
+ "thinking": {
50471
+ "mode": "effort",
50472
+ "efforts": [
50473
+ "minimal",
50474
+ "low",
50475
+ "medium",
50476
+ "high",
50477
+ "xhigh"
50478
+ ],
50479
+ "effortMap": {
50480
+ "xhigh": "max"
50481
+ }
50482
+ }
50490
50483
  },
50491
50484
  "TEE/gpt-oss-120b": {
50492
50485
  "id": "TEE/gpt-oss-120b",
@@ -69337,8 +69330,8 @@
69337
69330
  "image"
69338
69331
  ],
69339
69332
  "cost": {
69340
- "input": 0.2596,
69341
- "output": 2.3850000000000002,
69333
+ "input": 0.28500000000000003,
69334
+ "output": 2.4,
69342
69335
  "cacheRead": 0.15,
69343
69336
  "cacheWrite": 0
69344
69337
  },
@@ -71086,7 +71079,7 @@
71086
71079
  "synthetic": {
71087
71080
  "hf:MiniMaxAI/MiniMax-M3": {
71088
71081
  "id": "hf:MiniMaxAI/MiniMax-M3",
71089
- "name": "MiniMax-M3",
71082
+ "name": "MiniMaxAI/MiniMax-M3",
71090
71083
  "api": "openai-completions",
71091
71084
  "provider": "synthetic",
71092
71085
  "baseUrl": "https://api.synthetic.new/openai/v1",
@@ -71101,7 +71094,7 @@
71101
71094
  "cacheRead": 0.6,
71102
71095
  "cacheWrite": 0
71103
71096
  },
71104
- "contextWindow": 524288,
71097
+ "contextWindow": 262144,
71105
71098
  "maxTokens": 65536,
71106
71099
  "thinking": {
71107
71100
  "mode": "effort",
@@ -71116,7 +71109,7 @@
71116
71109
  },
71117
71110
  "hf:moonshotai/Kimi-K2.6": {
71118
71111
  "id": "hf:moonshotai/Kimi-K2.6",
71119
- "name": "Kimi K2.6",
71112
+ "name": "moonshotai/Kimi-K2.6",
71120
71113
  "api": "openai-completions",
71121
71114
  "provider": "synthetic",
71122
71115
  "baseUrl": "https://api.synthetic.new/openai/v1",
@@ -71144,9 +71137,28 @@
71144
71137
  ]
71145
71138
  }
71146
71139
  },
71140
+ "hf:moonshotai/Kimi-K2.7-Code": {
71141
+ "id": "hf:moonshotai/Kimi-K2.7-Code",
71142
+ "name": "moonshotai/Kimi-K2.7-Code",
71143
+ "api": "openai-completions",
71144
+ "provider": "synthetic",
71145
+ "baseUrl": "https://api.synthetic.new/openai/v1",
71146
+ "reasoning": false,
71147
+ "input": [
71148
+ "text"
71149
+ ],
71150
+ "cost": {
71151
+ "input": 0,
71152
+ "output": 0,
71153
+ "cacheRead": 0,
71154
+ "cacheWrite": 0
71155
+ },
71156
+ "contextWindow": 262144,
71157
+ "maxTokens": 8192
71158
+ },
71147
71159
  "hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4": {
71148
71160
  "id": "hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4",
71149
- "name": "Nemotron 3 Super 120B A12B",
71161
+ "name": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4",
71150
71162
  "api": "openai-completions",
71151
71163
  "provider": "synthetic",
71152
71164
  "baseUrl": "https://api.synthetic.new/openai/v1",
@@ -71175,7 +71187,7 @@
71175
71187
  },
71176
71188
  "hf:openai/gpt-oss-120b": {
71177
71189
  "id": "hf:openai/gpt-oss-120b",
71178
- "name": "GPT OSS 120B",
71190
+ "name": "openai/gpt-oss-120b",
71179
71191
  "api": "openai-completions",
71180
71192
  "provider": "synthetic",
71181
71193
  "baseUrl": "https://api.synthetic.new/openai/v1",
@@ -71200,38 +71212,9 @@
71200
71212
  ]
71201
71213
  }
71202
71214
  },
71203
- "hf:Qwen/Qwen3.5-397B-A17B": {
71204
- "id": "hf:Qwen/Qwen3.5-397B-A17B",
71205
- "name": "Qwen3.5 397B-A17B",
71206
- "api": "openai-completions",
71207
- "provider": "synthetic",
71208
- "baseUrl": "https://api.synthetic.new/openai/v1",
71209
- "reasoning": true,
71210
- "input": [
71211
- "text",
71212
- "image"
71213
- ],
71214
- "cost": {
71215
- "input": 0.6,
71216
- "output": 3.6,
71217
- "cacheRead": 0.6,
71218
- "cacheWrite": 0
71219
- },
71220
- "contextWindow": 262144,
71221
- "maxTokens": 65536,
71222
- "thinking": {
71223
- "mode": "effort",
71224
- "efforts": [
71225
- "minimal",
71226
- "low",
71227
- "medium",
71228
- "high"
71229
- ]
71230
- }
71231
- },
71232
71215
  "hf:Qwen/Qwen3.6-27B": {
71233
71216
  "id": "hf:Qwen/Qwen3.6-27B",
71234
- "name": "Qwen3.6 27B",
71217
+ "name": "Qwen/Qwen3.6-27B",
71235
71218
  "api": "openai-completions",
71236
71219
  "provider": "synthetic",
71237
71220
  "baseUrl": "https://api.synthetic.new/openai/v1",
@@ -71258,38 +71241,9 @@
71258
71241
  ]
71259
71242
  }
71260
71243
  },
71261
- "hf:zai-org/GLM-4.7": {
71262
- "id": "hf:zai-org/GLM-4.7",
71263
- "name": "GLM-4.7",
71264
- "api": "openai-completions",
71265
- "provider": "synthetic",
71266
- "baseUrl": "https://api.synthetic.new/openai/v1",
71267
- "reasoning": true,
71268
- "input": [
71269
- "text"
71270
- ],
71271
- "cost": {
71272
- "input": 0.45,
71273
- "output": 2.19,
71274
- "cacheRead": 0.45,
71275
- "cacheWrite": 0
71276
- },
71277
- "contextWindow": 202752,
71278
- "maxTokens": 65536,
71279
- "thinking": {
71280
- "mode": "effort",
71281
- "efforts": [
71282
- "minimal",
71283
- "low",
71284
- "medium",
71285
- "high",
71286
- "xhigh"
71287
- ]
71288
- }
71289
- },
71290
71244
  "hf:zai-org/GLM-4.7-Flash": {
71291
71245
  "id": "hf:zai-org/GLM-4.7-Flash",
71292
- "name": "GLM-4.7-Flash",
71246
+ "name": "zai-org/GLM-4.7-Flash",
71293
71247
  "api": "openai-completions",
71294
71248
  "provider": "synthetic",
71295
71249
  "baseUrl": "https://api.synthetic.new/openai/v1",
@@ -71318,7 +71272,7 @@
71318
71272
  },
71319
71273
  "hf:zai-org/GLM-5.1": {
71320
71274
  "id": "hf:zai-org/GLM-5.1",
71321
- "name": "GLM-5.1",
71275
+ "name": "zai-org/GLM-5.1",
71322
71276
  "api": "openai-completions",
71323
71277
  "provider": "synthetic",
71324
71278
  "baseUrl": "https://api.synthetic.new/openai/v1",
@@ -71347,7 +71301,7 @@
71347
71301
  },
71348
71302
  "hf:zai-org/GLM-5.2": {
71349
71303
  "id": "hf:zai-org/GLM-5.2",
71350
- "name": "GLM-5.2",
71304
+ "name": "zai-org/GLM-5.2",
71351
71305
  "api": "openai-completions",
71352
71306
  "provider": "synthetic",
71353
71307
  "baseUrl": "https://api.synthetic.new/openai/v1",
@@ -82095,14 +82049,6 @@
82095
82049
  },
82096
82050
  "contextWindow": 2000000,
82097
82051
  "maxTokens": 2000000,
82098
- "compat": {
82099
- "reasoningEffortMap": {
82100
- "minimal": "low"
82101
- },
82102
- "includeEncryptedReasoning": false,
82103
- "filterReasoningHistory": true,
82104
- "omitReasoningEffort": false
82105
- },
82106
82052
  "thinking": {
82107
82053
  "mode": "effort",
82108
82054
  "efforts": [
@@ -82115,6 +82061,14 @@
82115
82061
  "effortMap": {
82116
82062
  "minimal": "low"
82117
82063
  }
82064
+ },
82065
+ "compat": {
82066
+ "reasoningEffortMap": {
82067
+ "minimal": "low"
82068
+ },
82069
+ "includeEncryptedReasoning": false,
82070
+ "filterReasoningHistory": true,
82071
+ "omitReasoningEffort": false
82118
82072
  }
82119
82073
  },
82120
82074
  "grok-4.3": {
@@ -82136,14 +82090,6 @@
82136
82090
  },
82137
82091
  "contextWindow": 1000000,
82138
82092
  "maxTokens": 1000000,
82139
- "compat": {
82140
- "reasoningEffortMap": {
82141
- "minimal": "low"
82142
- },
82143
- "includeEncryptedReasoning": false,
82144
- "filterReasoningHistory": true,
82145
- "omitReasoningEffort": false
82146
- },
82147
82093
  "thinking": {
82148
82094
  "mode": "effort",
82149
82095
  "efforts": [
@@ -82156,6 +82102,14 @@
82156
82102
  "effortMap": {
82157
82103
  "minimal": "low"
82158
82104
  }
82105
+ },
82106
+ "compat": {
82107
+ "reasoningEffortMap": {
82108
+ "minimal": "low"
82109
+ },
82110
+ "includeEncryptedReasoning": false,
82111
+ "filterReasoningHistory": true,
82112
+ "omitReasoningEffort": false
82159
82113
  }
82160
82114
  },
82161
82115
  "grok-build": {
@@ -85079,6 +85033,35 @@
85079
85033
  "contextWindow": 256000,
85080
85034
  "maxTokens": 80000
85081
85035
  },
85036
+ "meituan/longcat-2.0": {
85037
+ "id": "meituan/longcat-2.0",
85038
+ "name": "LongCat-2.0",
85039
+ "api": "openai-completions",
85040
+ "provider": "zenmux",
85041
+ "baseUrl": "https://zenmux.ai/api/v1",
85042
+ "reasoning": true,
85043
+ "input": [
85044
+ "text"
85045
+ ],
85046
+ "cost": {
85047
+ "input": 0.3,
85048
+ "output": 1.18,
85049
+ "cacheRead": 0.006,
85050
+ "cacheWrite": 0
85051
+ },
85052
+ "contextWindow": 1000000,
85053
+ "maxTokens": null,
85054
+ "thinking": {
85055
+ "mode": "effort",
85056
+ "efforts": [
85057
+ "minimal",
85058
+ "low",
85059
+ "medium",
85060
+ "high",
85061
+ "xhigh"
85062
+ ]
85063
+ }
85064
+ },
85082
85065
  "meta/llama-3.3-70b-instruct": {
85083
85066
  "id": "meta/llama-3.3-70b-instruct",
85084
85067
  "name": "Llama 3.3 70b Instruct",