@oh-my-pi/pi-catalog 18.0.7 → 18.0.8

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,13 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [18.0.8] - 2026-08-27
6
+
7
+ ### Fixed
8
+
9
+ - Fixed the thinking control mode for OpenAI models served over Bedrock Converse (`global.openai.gpt-5.6-luna`, `-sol`, `-terra`), which are now classified as `effort` rather than `budget` so requests use OpenAI's reasoning schema.
10
+ - Fixed LiteLLM discovery leaking a colliding bundled model's provider-specific transport onto custom endpoints: a discovered alias (e.g. `kimi-k3`) matching a bundled Fireworks model no longer inherits that model's wire-id transform, which had caused requests to POST a model id the endpoint never advertised and return HTTP 400 ([#9938](https://github.com/can1357/oh-my-pi/issues/9938)).
11
+
5
12
  ## [18.0.7] - 2026-08-26
6
13
 
7
14
  ### Added
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/pi-catalog",
4
- "version": "18.0.7",
4
+ "version": "18.0.8",
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": "Stencil Labs, Inc.",
@@ -34,11 +34,11 @@
34
34
  "gen:proto": "bun scripts/generate-protocols.ts"
35
35
  },
36
36
  "dependencies": {
37
- "@oh-my-pi/omptype": "18.0.7",
38
- "@oh-my-pi/pi-utils": "18.0.7"
37
+ "@oh-my-pi/omptype": "18.0.8",
38
+ "@oh-my-pi/pi-utils": "18.0.8"
39
39
  },
40
40
  "devDependencies": {
41
- "@oh-my-pi/pi-ai": "18.0.7",
41
+ "@oh-my-pi/pi-ai": "18.0.8",
42
42
  "@types/bun": "^1.3.14"
43
43
  },
44
44
  "engines": {
@@ -777,6 +777,14 @@ function inferThinkingControlMode<TApi extends Api>(
777
777
  return "anthropic-budget-effort";
778
778
  }
779
779
  }
780
+ // Bedrock serves the GPT-5.x models through OpenAI's own request
781
+ // schema, which rejects Anthropic's budget block outright:
782
+ // `unknown_parameter: 'thinking'`. It takes `reasoning.effort`
783
+ // instead. gpt-oss parses as `unknown` (no `gpt-<digits>`), so it
784
+ // keeps the budget path it ships with today.
785
+ if (parsedModel.family === "openai") {
786
+ return "effort";
787
+ }
780
788
  return "budget";
781
789
 
782
790
  default:
package/src/models.json CHANGED
@@ -28688,7 +28688,7 @@
28688
28688
  "contextWindow": 1050000,
28689
28689
  "maxTokens": 128000,
28690
28690
  "thinking": {
28691
- "mode": "budget",
28691
+ "mode": "effort",
28692
28692
  "efforts": [
28693
28693
  "low",
28694
28694
  "medium",
@@ -28727,7 +28727,7 @@
28727
28727
  "contextWindow": 1050000,
28728
28728
  "maxTokens": 128000,
28729
28729
  "thinking": {
28730
- "mode": "budget",
28730
+ "mode": "effort",
28731
28731
  "efforts": [
28732
28732
  "low",
28733
28733
  "medium",
@@ -28766,7 +28766,7 @@
28766
28766
  "contextWindow": 1050000,
28767
28767
  "maxTokens": 128000,
28768
28768
  "thinking": {
28769
- "mode": "budget",
28769
+ "mode": "effort",
28770
28770
  "efforts": [
28771
28771
  "low",
28772
28772
  "medium",
@@ -60,7 +60,10 @@ export function resolveModelCacheProviderId(providerId: string, options: ModelCa
60
60
  return "cursor:default-effort-v4";
61
61
  case "litellm": {
62
62
  const baseUrl = options.baseUrl ?? getDefaultModelDiscoveryBaseUrl(providerId)!;
63
- return `litellm:rich-v7:${Bun.hash(baseUrl).toString(36)}`;
63
+ // rich-v8 invalidates rows whose `compatConfig` retained a colliding
64
+ // bundled model's provider-specific transport (e.g. Fireworks
65
+ // `wireModelIdMode`) before that leak was fixed (issue #9938).
66
+ return `litellm:rich-v8:${Bun.hash(baseUrl).toString(36)}`;
64
67
  }
65
68
  case "opencode-go":
66
69
  case "opencode-zen": {
@@ -5397,12 +5397,29 @@ function mapLiteLLMRichEntry<TApi extends Api>(
5397
5397
  ["tools", "tool_choice", "functions", "function_call"].includes(param),
5398
5398
  )
5399
5399
  : reference?.supportsTools;
5400
+ // Enrich from the bundled reference with provider-INDEPENDENT reasoning
5401
+ // hints only. The reference is resolved against the global bundled catalog,
5402
+ // so a custom endpoint exposing an alias that collides with a bundled model
5403
+ // (a LiteLLM proxy serving `kimi-k3`, which matches Fireworks' bundled
5404
+ // `kimi-k3`) must not inherit that provider's transport compat. Spreading
5405
+ // the resolved `reference.compat` wholesale leaked `wireModelIdMode`,
5406
+ // `toolSchemaFlavor`, `thinkingFormat`, etc. across the provider boundary —
5407
+ // rewriting the wire id to `accounts/fireworks/models/kimi-k3` for a
5408
+ // non-Fireworks endpoint (issue #9938). `buildModel` re-derives every
5409
+ // transport field from the discovered provider and model id, so only the
5410
+ // effort vocabulary flows through here. Mirrors `discoverOpenAIModelsList`.
5411
+ const referenceCompat = reference?.compat as OpenAICompat | undefined;
5400
5412
  const compat: OpenAICompat = {
5401
- ...(reference?.compat ?? {}),
5402
5413
  supportsStore: false,
5403
5414
  supportsDeveloperRole: false,
5404
5415
  ...(supportedOpenAIParams !== undefined
5405
5416
  ? { supportsReasoningEffort: supportedOpenAIParams.includes("reasoning_effort") }
5417
+ : referenceCompat?.supportsReasoningEffort !== undefined
5418
+ ? { supportsReasoningEffort: referenceCompat.supportsReasoningEffort }
5419
+ : {}),
5420
+ ...(referenceCompat?.reasoningEffortMap ? { reasoningEffortMap: referenceCompat.reasoningEffortMap } : {}),
5421
+ ...(referenceCompat?.omitReasoningEffort !== undefined
5422
+ ? { omitReasoningEffort: referenceCompat.omitReasoningEffort }
5406
5423
  : {}),
5407
5424
  };
5408
5425
  return {
@@ -5628,12 +5645,14 @@ export function litellmModelManagerOptions(config?: LiteLLMModelManagerConfig):
5628
5645
  const baseUrl = config?.baseUrl ?? getDefaultModelDiscoveryBaseUrl("litellm")!;
5629
5646
  return {
5630
5647
  providerId: "litellm",
5631
- // rich-v7 invalidates rows cached before discovery continued past endpoints
5632
- // that omitted cache pricing. Earlier versions added bundled reference fallback,
5633
- // moved OpenAI models to Responses, continued past incomplete vision and API
5634
- // metadata, stripped reseller usage suffixes, filtered placeholder rows, and
5635
- // mapped rich pricing. Bump the version whenever these mappers change, or warm
5636
- // authoritative caches keep serving pre-change rows for the full TTL.
5648
+ // rich-v8 invalidates rows whose `compatConfig` retained a colliding
5649
+ // bundled model's provider-specific transport (e.g. Fireworks
5650
+ // `wireModelIdMode`) before that leak was fixed. Earlier versions added
5651
+ // bundled reference fallback, moved OpenAI models to Responses, continued
5652
+ // past incomplete vision/API metadata and endpoints omitting cache
5653
+ // pricing, stripped reseller usage suffixes, filtered placeholder rows,
5654
+ // and mapped rich pricing. Bump the version whenever these mappers change,
5655
+ // or warm authoritative caches keep serving pre-change rows for the full TTL.
5637
5656
  cacheProviderId: resolveModelCacheProviderId("litellm", { baseUrl }),
5638
5657
  // litellm is a local-only proxy and is never bundled in models.json (that
5639
5658
  // would leak the machine's localhost catalog). Prefer the proxy's richer