@oh-my-pi/pi-catalog 17.2.12 → 17.2.14

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,17 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [17.2.13] - 2026-08-11
6
+
7
+ ### Changed
8
+
9
+ - Standardized catalog discovery User-Agent headers on `omp/<version>` via the shared `USER_AGENT` utility.
10
+
11
+ ### Fixed
12
+
13
+ - Marked `meta/muse-spark-1.2` and `muse-spark-1.2-contributor` as image-capable (`input: ["text", "image"]`) with the same Responses reasoning, thinking, and cost metadata as `muse-spark-1.1` (contributor uses its discounted 0.1/0.2 pricing), so `omp models` no longer lists them as text-only.
14
+ - Fixed GLM-5.2 thinking levels across Baseten, CoreWeave, HuggingFace, and other uppercase-ID resellers, which were getting the generic `xhigh` effort ladder instead of the GLM-5.2-specific tiers. Also added Baseten `zai-org/GLM-5.2-Fast` and Fireworks `glm-5.2-fast` as reasoning models ([#8200](https://github.com/can1357/oh-my-pi/pull/8200) by [@jcfrancisco](https://github.com/jcfrancisco)).
15
+
5
16
  ## [17.2.12] - 2026-08-08
6
17
 
7
18
  ### Fixed
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/pi-catalog",
4
- "version": "17.2.12",
4
+ "version": "17.2.14",
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",
@@ -35,11 +35,11 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@bufbuild/protobuf": "^2.12.1",
38
- "@oh-my-pi/omptype": "17.2.12",
39
- "@oh-my-pi/pi-utils": "17.2.12"
38
+ "@oh-my-pi/omptype": "17.2.14",
39
+ "@oh-my-pi/pi-utils": "17.2.14"
40
40
  },
41
41
  "devDependencies": {
42
- "@oh-my-pi/pi-ai": "17.2.12",
42
+ "@oh-my-pi/pi-ai": "17.2.14",
43
43
  "@types/bun": "^1.3.14"
44
44
  },
45
45
  "engines": {
@@ -143,7 +143,7 @@ export const parseOpenAIModel = parser((modelId): OpenAIModel | null => {
143
143
  * `parseKnownModel`.
144
144
  */
145
145
  export const parseGlmModel = parser((modelId): GlmModel | null => {
146
- const match = /glm-(\d{1,2}(?:\.\d+)?)(v)?(?:-(air|turbo|flashx|flash|preview))?\b/.exec(modelId);
146
+ const match = /glm-(\d{1,2}(?:\.\d+)?)(v)?(?:-(air|turbo|flashx|flash|preview))?\b/i.exec(modelId);
147
147
  if (!match) {
148
148
  return null;
149
149
  }
@@ -153,8 +153,8 @@ export const parseGlmModel = parser((modelId): GlmModel | null => {
153
153
  }
154
154
  return {
155
155
  family: "glm",
156
- variant: (match[3] as GlmVariant | undefined) ?? "base",
157
- vision: match[2] === "v",
156
+ variant: (match[3]?.toLowerCase() as GlmVariant | undefined) ?? "base",
157
+ vision: match[2]?.toLowerCase() === "v",
158
158
  version,
159
159
  };
160
160
  });
package/src/models.json CHANGED
@@ -13793,11 +13793,8 @@
13793
13793
  "thinking": {
13794
13794
  "mode": "effort",
13795
13795
  "efforts": [
13796
- "minimal",
13797
- "low",
13798
- "medium",
13799
13796
  "high",
13800
- "xhigh"
13797
+ "max"
13801
13798
  ]
13802
13799
  },
13803
13800
  "supportsComputerUse": false,
@@ -13809,7 +13806,7 @@
13809
13806
  "api": "openai-completions",
13810
13807
  "provider": "baseten",
13811
13808
  "baseUrl": "https://inference.baseten.co/v1",
13812
- "reasoning": false,
13809
+ "reasoning": true,
13813
13810
  "input": [
13814
13811
  "text"
13815
13812
  ],
@@ -13822,7 +13819,14 @@
13822
13819
  "contextWindow": 1048576,
13823
13820
  "maxTokens": 262144,
13824
13821
  "supportsComputerUse": false,
13825
- "supportsComputerUseConfig": false
13822
+ "supportsComputerUseConfig": false,
13823
+ "thinking": {
13824
+ "mode": "effort",
13825
+ "efforts": [
13826
+ "high",
13827
+ "max"
13828
+ ]
13829
+ }
13826
13830
  }
13827
13831
  },
13828
13832
  "bedrock-mantle": {
@@ -16247,7 +16251,7 @@
16247
16251
  "low",
16248
16252
  "medium",
16249
16253
  "high",
16250
- "xhigh"
16254
+ "max"
16251
16255
  ]
16252
16256
  }
16253
16257
  }
@@ -21875,6 +21879,40 @@
21875
21879
  }
21876
21880
  },
21877
21881
  "supportsComputerUse": false
21882
+ },
21883
+ "glm-5.2-fast": {
21884
+ "id": "glm-5.2-fast",
21885
+ "name": "GLM-5.2 Fast",
21886
+ "api": "openai-completions",
21887
+ "provider": "fireworks",
21888
+ "baseUrl": "https://api.fireworks.ai/inference/v1",
21889
+ "reasoning": true,
21890
+ "input": [
21891
+ "text"
21892
+ ],
21893
+ "cost": {
21894
+ "input": 2.1,
21895
+ "output": 6.6,
21896
+ "cacheRead": 0.21,
21897
+ "cacheWrite": 0
21898
+ },
21899
+ "contextWindow": 1048576,
21900
+ "maxTokens": 131072,
21901
+ "thinking": {
21902
+ "mode": "effort",
21903
+ "efforts": [
21904
+ "minimal",
21905
+ "low",
21906
+ "medium",
21907
+ "high",
21908
+ "max"
21909
+ ],
21910
+ "effortMap": {
21911
+ "minimal": "none"
21912
+ }
21913
+ },
21914
+ "supportsComputerUse": false,
21915
+ "supportsComputerUseConfig": false
21878
21916
  }
21879
21917
  },
21880
21918
  "github-copilot": {
@@ -28443,7 +28481,7 @@
28443
28481
  "low",
28444
28482
  "medium",
28445
28483
  "high",
28446
- "xhigh"
28484
+ "max"
28447
28485
  ]
28448
28486
  }
28449
28487
  }
@@ -41098,6 +41136,74 @@
41098
41136
  "supportsReasoningEffort": true,
41099
41137
  "includeEncryptedReasoning": true
41100
41138
  }
41139
+ },
41140
+ "muse-spark-1.2": {
41141
+ "id": "muse-spark-1.2",
41142
+ "name": "Muse Spark 1.2",
41143
+ "api": "openai-responses",
41144
+ "provider": "meta",
41145
+ "baseUrl": "https://api.meta.ai/v1",
41146
+ "reasoning": true,
41147
+ "input": [
41148
+ "text",
41149
+ "image"
41150
+ ],
41151
+ "cost": {
41152
+ "input": 1.25,
41153
+ "output": 4.25,
41154
+ "cacheRead": 0.15,
41155
+ "cacheWrite": 0
41156
+ },
41157
+ "contextWindow": 1048576,
41158
+ "maxTokens": 131072,
41159
+ "thinking": {
41160
+ "mode": "effort",
41161
+ "efforts": [
41162
+ "minimal",
41163
+ "low",
41164
+ "medium",
41165
+ "high",
41166
+ "xhigh"
41167
+ ]
41168
+ },
41169
+ "compat": {
41170
+ "supportsReasoningEffort": true,
41171
+ "includeEncryptedReasoning": true
41172
+ }
41173
+ },
41174
+ "muse-spark-1.2-contributor": {
41175
+ "id": "muse-spark-1.2-contributor",
41176
+ "name": "Muse Spark 1.2 Contributor (Data Used for Training)",
41177
+ "api": "openai-responses",
41178
+ "provider": "meta",
41179
+ "baseUrl": "https://api.meta.ai/v1",
41180
+ "reasoning": true,
41181
+ "input": [
41182
+ "text",
41183
+ "image"
41184
+ ],
41185
+ "cost": {
41186
+ "input": 0.1,
41187
+ "output": 0.2,
41188
+ "cacheRead": 0.002,
41189
+ "cacheWrite": 0
41190
+ },
41191
+ "contextWindow": 1048576,
41192
+ "maxTokens": 131072,
41193
+ "thinking": {
41194
+ "mode": "effort",
41195
+ "efforts": [
41196
+ "minimal",
41197
+ "low",
41198
+ "medium",
41199
+ "high",
41200
+ "xhigh"
41201
+ ]
41202
+ },
41203
+ "compat": {
41204
+ "supportsReasoningEffort": true,
41205
+ "includeEncryptedReasoning": true
41206
+ }
41101
41207
  }
41102
41208
  },
41103
41209
  "minimax": {
@@ -89008,7 +89114,7 @@
89008
89114
  "low",
89009
89115
  "medium",
89010
89116
  "high",
89011
- "xhigh"
89117
+ "max"
89012
89118
  ]
89013
89119
  },
89014
89120
  "supportsComputerUse": false,
@@ -90026,7 +90132,7 @@
90026
90132
  "low",
90027
90133
  "medium",
90028
90134
  "high",
90029
- "xhigh"
90135
+ "max"
90030
90136
  ]
90031
90137
  }
90032
90138
  }
@@ -100924,10 +101030,8 @@
100924
101030
  "thinking": {
100925
101031
  "mode": "effort",
100926
101032
  "efforts": [
100927
- "minimal",
100928
- "low",
100929
- "medium",
100930
- "high"
101033
+ "high",
101034
+ "max"
100931
101035
  ]
100932
101036
  },
100933
101037
  "supportsComputerUse": false,
@@ -109356,4 +109460,4 @@
109356
109460
  }
109357
109461
  }
109358
109462
  }
109359
- }
109463
+ }
@@ -1,4 +1,4 @@
1
- import { VERSION } from "@oh-my-pi/pi-utils";
1
+ import { USER_AGENT } from "@oh-my-pi/pi-utils";
2
2
  import * as logger from "@oh-my-pi/pi-utils/logger";
3
3
  import {
4
4
  fetchOpenAICompatibleModels,
@@ -111,7 +111,7 @@ const catalogSession: {
111
111
  hasPayload: boolean;
112
112
  } = { inflight: null, payload: undefined, etag: null, hasPayload: false };
113
113
 
114
- const CATALOG_USER_AGENT = `omp/${VERSION} (+https://omp.sh)`;
114
+ const CATALOG_USER_AGENT = USER_AGENT;
115
115
 
116
116
  /**
117
117
  * Fetches the models.dev catalog via catalog.stencil.so, which serves a
@@ -1812,6 +1812,7 @@ const FIREWORKS_FAST_VARIANT_SPECS: ReadonlyArray<{
1812
1812
  { base: "kimi-k2.7-code", name: "Kimi K2.7 Code Fast", cost: { input: 1.9, output: 8, cacheRead: 0.38 } },
1813
1813
  { base: "kimi-k2.6", name: "Kimi K2.6 Fast", cost: { input: 2, output: 8, cacheRead: 0.3 } },
1814
1814
  { base: "glm-5.1", name: "GLM-5.1 Fast", cost: { input: 2.8, output: 8.8, cacheRead: 0.52 } },
1815
+ { base: "glm-5.2", name: "GLM-5.2 Fast", cost: { input: 2.1, output: 6.6, cacheRead: 0.21 } },
1815
1816
  ];
1816
1817
 
1817
1818
  /**
@@ -3549,10 +3550,13 @@ export function basetenModelManagerOptions(
3549
3550
  const features = Array.isArray(raw.supported_features) ? raw.supported_features : [];
3550
3551
  const modalities = Array.isArray(raw.input_modalities) ? raw.input_modalities : [];
3551
3552
 
3552
- const isBasetenNativeReasoning =
3553
+ // Baseten's reasoning router accepts only the high/max
3554
+ // effort tiers for its GLM-5.2 and gpt-oss routes.
3555
+ const isEffortReasoning =
3553
3556
  defaults.id === "openai/gpt-oss-120b" ||
3554
- defaults.id === "deepseek-ai/DeepSeek-V4-Pro" ||
3555
- defaults.id === "zai-org/GLM-5.2";
3557
+ defaults.id === "zai-org/GLM-5.2" ||
3558
+ defaults.id === "zai-org/GLM-5.2-Fast";
3559
+ const isBasetenNativeReasoning = isEffortReasoning || defaults.id === "deepseek-ai/DeepSeek-V4-Pro";
3556
3560
  const reasoning =
3557
3561
  isBasetenNativeReasoning && (features.includes("reasoning") || features.includes("reasoning_effort"));
3558
3562
  const supportsTools = features.includes("tools") ? undefined : false;
@@ -3570,10 +3574,6 @@ export function basetenModelManagerOptions(
3570
3574
  const maxTokens = toPositiveNumber(raw.max_completion_tokens, reference?.maxTokens ?? defaults.maxTokens);
3571
3575
 
3572
3576
  const baseModel = mapWithBundledReference(entry, defaults, reference);
3573
-
3574
- // Baseten's reasoning router accepts only the high/max
3575
- // effort tiers for its GLM-5.2 and gpt-oss routes.
3576
- const isEffortReasoning = defaults.id === "openai/gpt-oss-120b" || defaults.id === "zai-org/GLM-5.2";
3577
3577
  const thinking = isEffortReasoning
3578
3578
  ? {
3579
3579
  mode: "effort" as const,
@@ -3659,6 +3659,40 @@ export const META_MUSE_STATIC_MODELS: readonly ModelSpec<"openai-responses">[] =
3659
3659
  includeEncryptedReasoning: true,
3660
3660
  },
3661
3661
  },
3662
+ {
3663
+ id: "muse-spark-1.2",
3664
+ name: "Muse Spark 1.2",
3665
+ api: "openai-responses",
3666
+ provider: "meta",
3667
+ baseUrl: META_MODEL_API_BASE_URL,
3668
+ reasoning: true,
3669
+ input: ["text", "image"],
3670
+ cost: META_MUSE_SPARK_COST,
3671
+ contextWindow: 1_048_576,
3672
+ maxTokens: 131_072,
3673
+ thinking: META_MUSE_SPARK_THINKING,
3674
+ compat: {
3675
+ supportsReasoningEffort: true,
3676
+ includeEncryptedReasoning: true,
3677
+ },
3678
+ },
3679
+ {
3680
+ id: "muse-spark-1.2-contributor",
3681
+ name: "Muse Spark 1.2 Contributor (Data Used for Training)",
3682
+ api: "openai-responses",
3683
+ provider: "meta",
3684
+ baseUrl: META_MODEL_API_BASE_URL,
3685
+ reasoning: true,
3686
+ input: ["text", "image"],
3687
+ cost: { input: 0.1, output: 0.2, cacheRead: 0.002, cacheWrite: 0 },
3688
+ contextWindow: 1_048_576,
3689
+ maxTokens: 131_072,
3690
+ thinking: META_MUSE_SPARK_THINKING,
3691
+ compat: {
3692
+ supportsReasoningEffort: true,
3693
+ includeEncryptedReasoning: true,
3694
+ },
3695
+ },
3662
3696
  ];
3663
3697
 
3664
3698
  // ---------------------------------------------------------------------------