@oh-my-pi/pi-catalog 18.6.0 → 18.6.3

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.
@@ -87,3 +87,105 @@ class "openai" {
87
87
  }
88
88
  }
89
89
  }
90
+
91
+ // GPT-5.2+ bills images in 32px patches × 1.2, sized per `detail` level:
92
+ // https://developers.openai.com/api/docs/guides/images-vision#calculating-costs
93
+ // Older lines carry no lineage rule and bill at their wire API's fallback
94
+ // (providers/image-tokenization.kdl).
95
+ class "openai" {
96
+ // gpt-5.6 sizing, shared by later lines. `<10` keeps separator-collapsed
97
+ // revisions (`openai-gpt-52-codex` parses as 52) off the 5.6+ sizing.
98
+ revision ">=5.6 <10" {
99
+ image-tokenization {
100
+ regime "openai-patch"
101
+ multiplier 1.2
102
+ auto "original"
103
+ low {
104
+ max-edge 512
105
+ }
106
+ high {
107
+ max-edge 2048
108
+ patch-budget 2500
109
+ }
110
+ original {
111
+ max-edge 65535
112
+ }
113
+ }
114
+ }
115
+ revision "=5.5" {
116
+ image-tokenization {
117
+ regime "openai-patch"
118
+ multiplier 1.2
119
+ auto "original"
120
+ low {
121
+ max-edge 512
122
+ }
123
+ high {
124
+ max-edge 2048
125
+ patch-budget 2500
126
+ }
127
+ original {
128
+ max-edge 6000
129
+ patch-budget 10000
130
+ }
131
+ }
132
+ }
133
+ // gpt-5.4: `auto` sizes like `high`, and `low` keeps a 6,144-patch budget.
134
+ revision "=5.4" {
135
+ image-tokenization {
136
+ regime "openai-patch"
137
+ multiplier 1.2
138
+ auto "high"
139
+ low {
140
+ max-edge 2048
141
+ patch-budget 6144
142
+ }
143
+ high {
144
+ max-edge 2048
145
+ patch-budget 2500
146
+ }
147
+ original {
148
+ max-edge 6000
149
+ patch-budget 10000
150
+ }
151
+ }
152
+ }
153
+ // gpt-5.2 (and the 5.3 Codex SKU) size every level the same way.
154
+ revision ">=5.2 <5.4" {
155
+ image-tokenization {
156
+ regime "openai-patch"
157
+ multiplier 1.2
158
+ auto "high"
159
+ low {
160
+ max-edge 2048
161
+ patch-budget 6144
162
+ }
163
+ high {
164
+ max-edge 2048
165
+ patch-budget 6144
166
+ }
167
+ original {
168
+ max-edge 2048
169
+ patch-budget 6144
170
+ }
171
+ }
172
+ }
173
+ // residue: astra's limits differ from the rest of its revision.
174
+ models "*gpt-6-astra*" {
175
+ image-tokenization {
176
+ regime "openai-patch"
177
+ multiplier 1.2
178
+ auto "original"
179
+ low {
180
+ max-edge 512
181
+ }
182
+ high {
183
+ max-edge 65535
184
+ patch-budget 2500
185
+ }
186
+ original {
187
+ max-edge 65535
188
+ }
189
+ }
190
+ }
191
+ }
@@ -2,6 +2,9 @@
2
2
 
3
3
  provider "google-antigravity" {
4
4
  default-model "gemini-3.1-pro"
5
+ // `fetchAvailableModels` is the account's served roster; bundled rows it
6
+ // omits (e.g. Claude 5.5 on plans without it) 404 on every request (#14328).
7
+ dynamic-models-authoritative #true
5
8
  kind-apis {
6
9
  image "google-gemini-cli"
7
10
  }
@@ -0,0 +1,42 @@
1
+ // Image billing for readers whose lineage has no `image-tokenization` rule in
2
+ // classes/*.kdl, by the wire API carrying the request. priority=-1: these are
3
+ // fallbacks, so a class-wide lineage rule (same specificity) always wins.
4
+
5
+ // OpenAI-compatible wires bill like GPT-5.5: 32px patches × 1.2, `auto` sized
6
+ // like `original`.
7
+ on-api "openai-completions" "openai-responses" "openai-codex-responses" "azure-openai-responses" priority=-1 {
8
+ image-tokenization {
9
+ regime "openai-patch"
10
+ multiplier 1.2
11
+ auto "original"
12
+ low {
13
+ max-edge 512
14
+ }
15
+ high {
16
+ max-edge 2048
17
+ patch-budget 2500
18
+ }
19
+ original {
20
+ max-edge 6000
21
+ patch-budget 10000
22
+ }
23
+ }
24
+ }
25
+
26
+ // Google wires bill Gemini 3's fixed `media_resolution` budget per image.
27
+ on-api "google-generative-ai" "google-gemini-cli" "google-vertex" priority=-1 {
28
+ image-tokenization {
29
+ regime "fixed"
30
+ tokens 1120
31
+ }
32
+ }
33
+
34
+ // Anthropic wires and every other adapter bill Claude's high-res tier, the
35
+ // largest per-image bill, so an unpriced reader is never undercounted.
36
+ on-api "anthropic-messages" "bedrock-converse-stream" "openrouter" "ollama-chat" "cursor-agent" "factory-droid-agent" "gitlab-duo-agent" "devin-agent" "apple-foundation-models" priority=-1 {
37
+ image-tokenization {
38
+ regime "anthropic-patch"
39
+ max-edge 2576
40
+ max-tokens 4784
41
+ }
42
+ }
@@ -15,6 +15,13 @@ provider "muse-code" {
15
15
  // api.meta.ai/v1 accepts only tool_choice "auto"; "none", "required" and named
16
16
  // choices are rejected with 400 (verified 2026-09-10), so omit the field.
17
17
  supports-tool-choice #false
18
+ // Results can be stored so a dropped stream is recovered: verified 2026-09-29
19
+ // against api.meta.ai/v1, a stored run keeps generating after the client
20
+ // socket dies and `GET /responses/{id}` returns it once finished (~60s for
21
+ // a high-effort turn), while `store: false` runs 404 forever. Storage is
22
+ // opt-in (privacy: stored runs retain prompts/outputs on Meta's side): omp
23
+ // setting providers.muse-code.storeResponses or PI_MUSE_STORE_RESPONSES=1.
24
+ store-responses #true
18
25
  // Subscription tier bills per request; the compact edit prompt cuts the
19
26
  // recurring tool-schema bytes. Verified 2026-09-05 against api.meta.ai/v1:
20
27
  // `custom` tools are rejected with 400 "`custom` tools are not supported
@@ -3,6 +3,7 @@
3
3
  provider "openai-codex" {
4
4
  default-model "gpt-5.5"
5
5
  env "OPENAI_CODEX_OAUTH_TOKEN"
6
+ dynamic-models-authoritative #true
6
7
  kind-apis {
7
8
  image "openai-codex-responses"
8
9
  }
@@ -0,0 +1,135 @@
1
+ // Documented account-billed Cortex REST API, not verified CoCo-subscription usage.
2
+ // Model IDs and compatibility: https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-rest-api
3
+ // Output is capped at the Cortex REST API's documented 16,384-token maximum (rate-limit table;
4
+ // newer models absent from that table are assumed to share it). Context windows are conservative
5
+ // AI_COMPLETE configured ceilings, not verified REST maxima:
6
+ // https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-rest-api#label-cortex-rest-api-rate-limits
7
+ // https://docs.snowflake.com/en/user-guide/snowflake-cortex/aisql-regional-availability
8
+ // USD per million tokens estimates: Consumption Table 6(b) AI Credits x $2.00
9
+ // (on-demand global routing); regional routing and contract discounts change billing.
10
+ // https://www.snowflake.com/legal-files/CreditConsumptionTable.pdf
11
+ // https://docs.snowflake.com/en/user-guide/snowflake-cortex/pricing
12
+ provider "snowflake" {
13
+ default-model "claude-opus-5-5"
14
+ env "SNOWFLAKE_PAT"
15
+
16
+ // Credential-scoped roster: never fetch during catalog generation. The `.invalid`
17
+ // origin is a placeholder that snowflakeTransport replaces with the account URL.
18
+ seed api="anthropic-messages" base-url="https://snowflake-account.invalid/api/v2/cortex" bundle="always" precedence="seed" {
19
+ model "claude-opus-5-5" name="Claude Opus 5.5" {
20
+ reasoning #true
21
+ input "text" "image"
22
+ cost input=4 output=20 cache-write=5 cache-read=0.2
23
+ limits context=1000000 max-tokens=16384
24
+ }
25
+ model "claude-opus-5" name="Claude Opus 5" {
26
+ reasoning #true
27
+ input "text" "image"
28
+ cost input=5 output=25 cache-write=6.25 cache-read=0.5
29
+ limits context=1000000 max-tokens=16384
30
+ }
31
+ model "claude-opus-4-8" name="Claude Opus 4.8" {
32
+ reasoning #true
33
+ input "text" "image"
34
+ cost input=5 output=25 cache-write=6.25 cache-read=0.5
35
+ limits context=1000000 max-tokens=16384
36
+ }
37
+ model "claude-opus-4-7" name="Claude Opus 4.7" {
38
+ reasoning #true
39
+ input "text" "image"
40
+ cost input=5 output=25 cache-write=6.25 cache-read=0.5
41
+ limits context=1000000 max-tokens=16384
42
+ }
43
+ model "claude-opus-4-6" name="Claude Opus 4.6" {
44
+ reasoning #true
45
+ input "text" "image"
46
+ cost input=5 output=25 cache-write=6.25 cache-read=0.5
47
+ limits context=1000000 max-tokens=16384
48
+ }
49
+ model "claude-opus-4-5" name="Claude Opus 4.5" {
50
+ reasoning #true
51
+ input "text" "image"
52
+ cost input=5 output=25 cache-write=6.25 cache-read=0.5
53
+ limits context=200000 max-tokens=16384
54
+ }
55
+ model "claude-sonnet-5" name="Claude Sonnet 5" {
56
+ reasoning #true
57
+ input "text" "image"
58
+ cost input=2 output=10 cache-write=2.5 cache-read=0.2
59
+ limits context=1000000 max-tokens=16384
60
+ }
61
+ model "claude-sonnet-4-6" name="Claude Sonnet 4.6" {
62
+ reasoning #true
63
+ input "text" "image"
64
+ cost input=3 output=15 cache-write=3.75 cache-read=0.3
65
+ limits context=1000000 max-tokens=16384
66
+ }
67
+ model "claude-sonnet-4-5" name="Claude Sonnet 4.5" {
68
+ reasoning #true
69
+ input "text" "image"
70
+ cost input=3 output=15 cache-write=3.75 cache-read=0.3
71
+ limits context=200000 max-tokens=16384
72
+ }
73
+ model "claude-haiku-4-5" name="Claude Haiku 4.5" {
74
+ reasoning #true
75
+ input "text" "image"
76
+ cost input=1 output=5 cache-write=1.25 cache-read=0.1
77
+ limits context=200000 max-tokens=16384
78
+ }
79
+ model "openai-gpt-5.1" name="GPT-5.1" api="openai-completions" base-url="https://snowflake-account.invalid/api/v2/cortex/v1" {
80
+ reasoning #true
81
+ input "text" "image"
82
+ cost input=1.25 output=10 cache-write=0 cache-read=0.13
83
+ limits context=272000 max-tokens=16384
84
+ }
85
+ model "openai-gpt-5" name="GPT-5" api="openai-completions" base-url="https://snowflake-account.invalid/api/v2/cortex/v1" {
86
+ reasoning #true
87
+ input "text" "image"
88
+ cost input=1.25 output=10 cache-write=0 cache-read=0.13
89
+ limits context=272000 max-tokens=16384
90
+ }
91
+ model "openai-gpt-5-mini" name="GPT-5 Mini" api="openai-completions" base-url="https://snowflake-account.invalid/api/v2/cortex/v1" {
92
+ reasoning #true
93
+ input "text" "image"
94
+ cost input=0.25 output=2 cache-write=0 cache-read=0.03
95
+ limits context=272000 max-tokens=16384
96
+ }
97
+ model "openai-gpt-5-nano" name="GPT-5 Nano" api="openai-completions" base-url="https://snowflake-account.invalid/api/v2/cortex/v1" {
98
+ reasoning #true
99
+ input "text" "image"
100
+ cost input=0.06 output=0.44 cache-write=0 cache-read=0.01
101
+ limits context=272000 max-tokens=16384
102
+ }
103
+ model "openai-gpt-4.1" name="GPT-4.1" api="openai-completions" base-url="https://snowflake-account.invalid/api/v2/cortex/v1" {
104
+ reasoning #false
105
+ input "text" "image"
106
+ cost input=2 output=8 cache-write=0 cache-read=0.5
107
+ limits context=128000 max-tokens=16384
108
+ }
109
+ }
110
+
111
+ // Claude thinking modes and effort ladders come from the Anthropic lineage rules
112
+ // (classes/anthropic.kdl). Live Cortex probes matched them: Opus 4.7+/Sonnet 5
113
+ // accept xhigh and max; Opus 4.6 and Sonnet 4.6 reject xhigh.
114
+ // Cortex compatibility chart: ephemeral 5-minute caching and Bedrock-compatible betas only.
115
+ class "anthropic" {
116
+ supports-eager-tool-input-streaming #false
117
+ supports-long-cache-retention #false
118
+ }
119
+ // Cortex documents reasoning_effort none/minimal/low/medium/high. Prefixed ids
120
+ // (openai-gpt-*) carry no `gpt` family, so the <5.2 lineage ladder is restated
121
+ // here; 5.2+ rows fall through to the unscoped lineage ladders in classes/openai.kdl.
122
+ class "openai" {
123
+ revision ">=5 <5.2" {
124
+ thinking-mode "effort"
125
+ thinking-efforts "minimal" "low" "medium" "high"
126
+ }
127
+ }
128
+ // Cortex compatibility chart: max_tokens/store are hard errors; non-OpenAI backends accept user/assistant/system roles only.
129
+ on-api "openai-completions" {
130
+ max-tokens-field "max_completion_tokens"
131
+ supports-store #false
132
+ supports-developer-role #false
133
+ supports-reasoning-effort #true
134
+ }
135
+ }