@oh-my-pi/pi-catalog 18.1.19 → 18.1.21

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,12 +2,24 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [18.1.20] - 2026-09-13
6
+
7
+ ### Fixed
8
+
9
+ - Fixed DeepSeek V4.1 Flash dropping image attachments on hosts without their own carve-out, so the natively multimodal model is no longer treated as text-only ([#11992](https://github.com/can1357/oh-my-pi/pull/11992) by [@infernix](https://github.com/infernix)).
10
+ - LiteLLM model groups keep the image input their deployment declares, instead of having attachments replaced with the "model does not support vision" placeholder ([#11982](https://github.com/can1357/oh-my-pi/issues/11982), [#11985](https://github.com/can1357/oh-my-pi/pull/11985) by [@lz37](https://github.com/lz37)).
11
+ - Fixed OpenCode Zen/Go Muse Spark models failing every tool-call turn with a 400 "reasoning encrypted_content was not issued to this caller" error: the gateways proxy the Responses lane to Meta but can't round-trip encrypted reasoning, so those SKUs no longer request or replay it ([#11928](https://github.com/can1357/oh-my-pi/issues/11928)).
12
+
5
13
  ## [18.1.19] - 2026-09-12
6
14
 
7
15
  ### Added
8
16
 
9
17
  - Added Charm Hyper as a built-in provider with API-key login, live model discovery, and per-model pricing, effort ladders, and limits read straight from its catalog ([#11656](https://github.com/can1357/oh-my-pi/pull/11656) by [@oldschoola](https://github.com/oldschoola)).
10
18
 
19
+ ### Fixed
20
+
21
+ - `anthropic/claude-fable-5-1` cache reads now cost Anthropic's published $0.25/MTok instead of $1.00, so session cost and usage reports no longer overstate cache-read spend by 4x ([#11862](https://github.com/can1357/oh-my-pi/pull/11862) by [@camjac251](https://github.com/camjac251)).
22
+
11
23
  ## [18.1.18] - 2026-09-11
12
24
 
13
25
  ### 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.1.19",
4
+ "version": "18.1.21",
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.",
@@ -35,12 +35,12 @@
35
35
  "gen:proto": "bun scripts/generate-protocols.ts"
36
36
  },
37
37
  "dependencies": {
38
- "@oh-my-pi/omptype": "18.1.19",
39
- "@oh-my-pi/pi-utils": "18.1.19"
38
+ "@oh-my-pi/omptype": "18.1.21",
39
+ "@oh-my-pi/pi-utils": "18.1.21"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@bgotink/kdl": "0.4.0",
43
- "@oh-my-pi/pi-ai": "18.1.19",
43
+ "@oh-my-pi/pi-ai": "18.1.21",
44
44
  "@types/bun": "^1.3.14"
45
45
  },
46
46
  "engines": {
@@ -169,6 +169,23 @@ class "anthropic" {
169
169
  cache-read 1.0
170
170
  cache-write 12.5
171
171
  }
172
+ // Fable 5.1 cut cache reads to $0.25/MTok, 0.025x input, a 75% rate
173
+ // unique to the 5.1 generation; Fable 5 stays at the 0.1x family
174
+ // default. https://www.anthropic.com/claude/fable
175
+ //
176
+ // `cost-patch` is an object axis, so the winning rule supplies the
177
+ // whole payload rather than merging field-wise over the family
178
+ // patch above. Restate input/output/cache-write, or a
179
+ // discovery-sourced 5.1 row (Anthropic's /v1/models omits pricing)
180
+ // would keep only the cache-read correction.
181
+ revision "=5.1" {
182
+ cost-patch {
183
+ input 10.0
184
+ output 50.0
185
+ cache-read 0.25
186
+ cache-write 12.5
187
+ }
188
+ }
172
189
  limits-patch {
173
190
  context-window 1000000
174
191
  max-tokens 128000
@@ -73,6 +73,17 @@ class "deepseek" {
73
73
  models token="vision" {
74
74
  strip-image-input #false
75
75
  }
76
+ // DeepSeek V4.1 Flash is natively multimodal (image-text-to-text), but its
77
+ // id carries no `vision` token, so the class-wide strip above dropped
78
+ // attachments the model reads on every deployment without its own carve-out.
79
+ // The glob also spans `-vision`/`-ocr` ids, which already set the same value
80
+ // below, so the explicit priority resolves that equal-rank tie instead of
81
+ // throwing AmbiguousOverlapError. Only the strip is disabled; the declared
82
+ // modality stays host-derived, so endpoints whose OpenAI-compatible surface
83
+ // rejects `image_url` keep their text-only contract.
84
+ models "*v4.1-flash*" priority=10 {
85
+ strip-image-input #false
86
+ }
76
87
  on "ollama-cloud" "nvidia" "deepseek" "fireworks" "nanogpt" "opencode-go" "openrouter" {
77
88
  stream-markup-healing-pattern "dsml"
78
89
  }
@@ -45,6 +45,18 @@ provider "opencode-go" {
45
45
  class "kimi" {
46
46
  thinking-mode "effort"
47
47
  }
48
+ // The Go gateway proxies Muse Spark's Responses lane to Meta but cannot
49
+ // round-trip encrypted reasoning: the upstream issues `encrypted_content`
50
+ // bound to the gateway's own caller, so replaying it on a later step 400s
51
+ // with "reasoning `encrypted_content` was not issued to this caller"
52
+ // (#11928). Stop requesting it and drop native reasoning items from replay
53
+ // so multi-step tool-call turns stop failing.
54
+ class "meta" {
55
+ family "muse-spark" {
56
+ include-encrypted-reasoning #false
57
+ filter-reasoning-history #true
58
+ }
59
+ }
48
60
  class "mimo" {
49
61
  family "v2" {
50
62
  thinking-mode "effort"
@@ -26,6 +26,18 @@ provider "opencode-zen" {
26
26
  class "kimi" {
27
27
  thinking-mode "effort"
28
28
  }
29
+ // The Zen gateway proxies Muse Spark's Responses lane to Meta but cannot
30
+ // round-trip encrypted reasoning: the upstream issues `encrypted_content`
31
+ // bound to the gateway's own caller, so replaying it on a later step 400s
32
+ // with "reasoning `encrypted_content` was not issued to this caller"
33
+ // (#11928). Stop requesting it and drop native reasoning items from replay
34
+ // so multi-step tool-call turns stop failing.
35
+ class "meta" {
36
+ family "muse-spark" {
37
+ include-encrypted-reasoning #false
38
+ filter-reasoning-history #true
39
+ }
40
+ }
29
41
  class "mimo" {
30
42
  family "v2" {
31
43
  thinking-mode "effort"
@@ -1,10 +1,6 @@
1
1
  // Provider-wire compat for "openrouter"; regenerated from the frozen census using deployment contract selectors.
2
2
 
3
3
  provider "openrouter" {
4
- // V4.1 Flash accepts images despite its ID lacking a vision suffix.
5
- models "deepseek/deepseek-v4.1-flash" {
6
- strip-image-input #false
7
- }
8
4
  // Replaces the OpenRouter provider wire-model-id dispatch branch.
9
5
  wire-model-id-mode "openrouter"
10
6
  // Replaces the strict-mode provider whitelist entry.