@oh-my-pi/pi-catalog 18.10.2 → 18.10.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.
- package/CHANGELOG.md +32 -0
- package/dist/types/compat/image-tokenization.d.ts +9 -1
- package/dist/types/compat/request-size.d.ts +11 -3
- package/dist/types/compat/thinking-replay.d.ts +9 -0
- package/dist/types/model-thinking.d.ts +11 -1
- package/dist/types/types.d.ts +29 -5
- package/dist/types/wire/codex.d.ts +2 -0
- package/package.json +4 -4
- package/src/build.ts +3 -2
- package/src/compat/axes.ts +43 -2
- package/src/compat/cascade.ts +4 -1
- package/src/compat/image-tokenization.ts +28 -10
- package/src/compat/request-size.ts +18 -5
- package/src/compat/resolve.ts +31 -5
- package/src/compat/rules/README.md +10 -2
- package/src/compat/rules/classes/anthropic.kdl +40 -2
- package/src/compat/rules/classes/meta.kdl +5 -0
- package/src/compat/rules/classes/openai.kdl +26 -3
- package/src/compat/rules/classes/xai.kdl +26 -0
- package/src/compat/rules/providers/amazon-bedrock.kdl +1 -0
- package/src/compat/rules/providers/anthropic.kdl +13 -0
- package/src/compat/rules/providers/cursor.kdl +30 -1
- package/src/compat/rules/providers/google-antigravity.kdl +26 -0
- package/src/compat/rules/providers/google-gemini-cli.kdl +1 -0
- package/src/compat/rules/providers/google-vertex.kdl +1 -0
- package/src/compat/rules/providers/google.kdl +1 -0
- package/src/compat/rules/providers/image-tokenization.kdl +2 -1
- package/src/compat/rules/providers/meta.kdl +16 -0
- package/src/compat/rules/providers/muse-code.kdl +9 -0
- package/src/compat/rules/providers/openai-codex.kdl +8 -0
- package/src/compat/rules/providers/openai.kdl +1 -0
- package/src/compat/rules/providers/openrouter.kdl +1 -0
- package/src/compat/rules/providers/umans.kdl +1 -0
- package/src/compat/rules/providers/xai-oauth.kdl +3 -0
- package/src/compat/rules/providers/xai.kdl +3 -0
- package/src/compat/rules/runtime/behavior.kdl +3 -3
- package/src/compat/rules/taxonomy/meta.kdl +3 -0
- package/src/compat/rules.json +1 -1
- package/src/compat/thinking-replay.ts +33 -0
- package/src/model-thinking.ts +13 -1
- package/src/model-tokenizer.ts +7 -1
- package/src/models.json +1 -1
- package/src/provider-models/bundled-references.ts +5 -2
- package/src/provider-models/openai-compat.ts +3 -1
- package/src/types.ts +31 -4
- package/src/wire/codex.ts +17 -0
|
@@ -14,10 +14,22 @@
|
|
|
14
14
|
// consecutive tool_use or tool_result blocks is one position. Warm-cache
|
|
15
15
|
// tool-result pruning keeps its rewrites inside this window.
|
|
16
16
|
// https://platform.claude.com/docs/en/build-with-claude/prompt-caching
|
|
17
|
+
// A replayed signed thinking block bills the full reasoning its signature
|
|
18
|
+
// carries (the server rebuilds it from the signature), at the size its turn
|
|
19
|
+
// billed as output, not the signature's bytes. Thinking a request drops bills
|
|
20
|
+
// nothing (earlier turns on lines that strip it: Opus before 4.5, Sonnet
|
|
21
|
+
// before 4.6, Haiku before 5.5; turns before a compaction or prune on
|
|
22
|
+
// prefix-bound lines; another model's blocks the reader cannot read), so
|
|
23
|
+
// those turns count high.
|
|
24
|
+
// https://platform.claude.com/docs/en/build-with-claude/context-windows#the-context-window-with-thinking
|
|
25
|
+
// https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#switching-models
|
|
17
26
|
class "anthropic" {
|
|
18
27
|
prompt-cache-lookback 20
|
|
28
|
+
thinking-replay-tokens "output"
|
|
29
|
+
// verified: billing matched this formula on Opus 4.7+ and Fable 5.1.
|
|
19
30
|
image-tokenization {
|
|
20
31
|
regime "anthropic-patch"
|
|
32
|
+
verified #true
|
|
21
33
|
max-edge 2576
|
|
22
34
|
max-tokens 4784
|
|
23
35
|
}
|
|
@@ -37,21 +49,39 @@ class "anthropic" {
|
|
|
37
49
|
}
|
|
38
50
|
}
|
|
39
51
|
}
|
|
52
|
+
// Standard tier. verified: billing matched it on Sonnet 4.6 only; older
|
|
53
|
+
// Sonnet lines keep the floor until measured.
|
|
40
54
|
family "sonnet" {
|
|
41
|
-
revision "<4.
|
|
55
|
+
revision "<4.6" {
|
|
42
56
|
image-tokenization {
|
|
43
57
|
regime "anthropic-patch"
|
|
44
58
|
max-edge 1568
|
|
45
59
|
max-tokens 1568
|
|
46
60
|
}
|
|
47
61
|
}
|
|
48
|
-
revision ">=
|
|
62
|
+
revision ">=4.6 <4.7" {
|
|
63
|
+
image-tokenization {
|
|
64
|
+
regime "anthropic-patch"
|
|
65
|
+
verified #true
|
|
66
|
+
max-edge 1568
|
|
67
|
+
max-tokens 1568
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
revision ">=10 <46" {
|
|
49
71
|
image-tokenization {
|
|
50
72
|
regime "anthropic-patch"
|
|
51
73
|
max-edge 1568
|
|
52
74
|
max-tokens 1568
|
|
53
75
|
}
|
|
54
76
|
}
|
|
77
|
+
revision ">=46 <47" {
|
|
78
|
+
image-tokenization {
|
|
79
|
+
regime "anthropic-patch"
|
|
80
|
+
verified #true
|
|
81
|
+
max-edge 1568
|
|
82
|
+
max-tokens 1568
|
|
83
|
+
}
|
|
84
|
+
}
|
|
55
85
|
}
|
|
56
86
|
family "haiku" {
|
|
57
87
|
revision "<4.7" {
|
|
@@ -87,6 +117,14 @@ class "anthropic" {
|
|
|
87
117
|
supports-sampling-params #false
|
|
88
118
|
}
|
|
89
119
|
}
|
|
120
|
+
// Opus 5.5 made every first edit exactly right from `read` results it saw
|
|
121
|
+
// only as snapcompact frames (24/24); Haiku 5.5 lost leading whitespace
|
|
122
|
+
// (22/54), so other lines keep `read` as text until measured.
|
|
123
|
+
family "opus" {
|
|
124
|
+
revision ">=5.5 <10" {
|
|
125
|
+
snapcompact-image-reads #true
|
|
126
|
+
}
|
|
127
|
+
}
|
|
90
128
|
family "sonnet" {
|
|
91
129
|
revision ">=5 <10" {
|
|
92
130
|
supports-sampling-params #false
|
|
@@ -9,6 +9,11 @@ class "meta" {
|
|
|
9
9
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh" "max"
|
|
10
10
|
thinking-mode "effort"
|
|
11
11
|
}
|
|
12
|
+
// Meta documents `max` for Muse Wonder (dev.meta.ai/docs/reasoning).
|
|
13
|
+
models "muse-wonder-1.0" {
|
|
14
|
+
thinking-efforts "minimal" "low" "medium" "high" "xhigh" "max"
|
|
15
|
+
thinking-mode "effort"
|
|
16
|
+
}
|
|
12
17
|
models "muse-spark-1.1" "muse-spark-1.2" "muse-spark-1.2-contributor" {
|
|
13
18
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
14
19
|
thinking-mode "effort"
|
|
@@ -95,11 +95,11 @@ class "openai" {
|
|
|
95
95
|
// Older lines carry no lineage rule and bill at their wire API's fallback
|
|
96
96
|
// (providers/image-tokenization.kdl).
|
|
97
97
|
class "openai" {
|
|
98
|
-
// gpt-5.6 sizing
|
|
99
|
-
|
|
100
|
-
revision ">=5.6 <10" {
|
|
98
|
+
// gpt-5.6 sizing. verified: billing matched this formula on gpt-5.6 through 6.1.
|
|
99
|
+
revision ">=5.6 <6.2" {
|
|
101
100
|
image-tokenization {
|
|
102
101
|
regime "openai-patch"
|
|
102
|
+
verified #true
|
|
103
103
|
multiplier 1.2
|
|
104
104
|
auto "original"
|
|
105
105
|
low {
|
|
@@ -114,9 +114,30 @@ class "openai" {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
+
// Later lines size like gpt-5.6, unverified until measured. `<10` keeps
|
|
118
|
+
// separator-collapsed revisions (`openai-gpt-52-codex` parses as 52) off it.
|
|
119
|
+
revision ">=6.2 <10" {
|
|
120
|
+
image-tokenization {
|
|
121
|
+
regime "openai-patch"
|
|
122
|
+
multiplier 1.2
|
|
123
|
+
auto "original"
|
|
124
|
+
low {
|
|
125
|
+
max-edge 512
|
|
126
|
+
}
|
|
127
|
+
high {
|
|
128
|
+
max-edge 2048
|
|
129
|
+
patch-budget 2500
|
|
130
|
+
}
|
|
131
|
+
original {
|
|
132
|
+
max-edge 65535
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// verified: billing matched this formula on gpt-5.5.
|
|
117
137
|
revision "=5.5" {
|
|
118
138
|
image-tokenization {
|
|
119
139
|
regime "openai-patch"
|
|
140
|
+
verified #true
|
|
120
141
|
multiplier 1.2
|
|
121
142
|
auto "original"
|
|
122
143
|
low {
|
|
@@ -173,9 +194,11 @@ class "openai" {
|
|
|
173
194
|
}
|
|
174
195
|
}
|
|
175
196
|
// residue: astra's limits differ from the rest of its revision.
|
|
197
|
+
// verified: billing matched this formula on gpt-6-astra.
|
|
176
198
|
models "*gpt-6-astra*" {
|
|
177
199
|
image-tokenization {
|
|
178
200
|
regime "openai-patch"
|
|
201
|
+
verified #true
|
|
179
202
|
multiplier 1.2
|
|
180
203
|
auto "original"
|
|
181
204
|
low {
|
|
@@ -41,6 +41,32 @@ class "xai" {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
+
// Grok bills 32px patches plus ~30–40 tokens per image, resizing past
|
|
45
|
+
// 2,401 patches at every detail level; the 1.017 multiplier carries the
|
|
46
|
+
// per-image tokens at full size (small images bill slightly more).
|
|
47
|
+
// verified: billing matched this rule on Grok 4.6, 4.7 and 4.20.
|
|
48
|
+
family "grok" {
|
|
49
|
+
revision ">=4.6 <=4.20" {
|
|
50
|
+
image-tokenization {
|
|
51
|
+
regime "openai-patch"
|
|
52
|
+
verified #true
|
|
53
|
+
multiplier 1.017
|
|
54
|
+
auto "original"
|
|
55
|
+
low {
|
|
56
|
+
max-edge 65535
|
|
57
|
+
patch-budget 2401
|
|
58
|
+
}
|
|
59
|
+
high {
|
|
60
|
+
max-edge 65535
|
|
61
|
+
patch-budget 2401
|
|
62
|
+
}
|
|
63
|
+
original {
|
|
64
|
+
max-edge 65535
|
|
65
|
+
patch-budget 2401
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
44
70
|
thinking-loop-guard "xai"
|
|
45
71
|
}
|
|
46
72
|
|
|
@@ -85,7 +85,20 @@ provider "anthropic" {
|
|
|
85
85
|
on-api "anthropic-messages" {
|
|
86
86
|
inline-image-byte-budget 24000000
|
|
87
87
|
}
|
|
88
|
+
// The official endpoint carries at most 600 images and documents per
|
|
89
|
+
// request, 100 on models with a 200k-token window: every Claude line before
|
|
90
|
+
// 4.6, including separator-collapsed revisions (`claude-opus-45` parses as
|
|
91
|
+
// 45). A custom baseUrl keeps the conservative 90.
|
|
92
|
+
// https://platform.claude.com/docs/en/build-with-claude/vision
|
|
93
|
+
image-count-budget 90
|
|
94
|
+
official-image-count-budget 600
|
|
88
95
|
class "anthropic" {
|
|
96
|
+
revision "<4.6" {
|
|
97
|
+
official-image-count-budget 100
|
|
98
|
+
}
|
|
99
|
+
revision ">=10 <46" {
|
|
100
|
+
official-image-count-budget 100
|
|
101
|
+
}
|
|
89
102
|
revision ">=3.7 <4.6" {
|
|
90
103
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
91
104
|
}
|
|
@@ -8,12 +8,27 @@ provider "cursor" {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
thinking-mode "effort"
|
|
11
|
-
// Cursor's
|
|
11
|
+
// Cursor relays its upstream's image count (Claude 600, GPT 1,500) and took
|
|
12
|
+
// a 64 MB body; 60 images at the 500 KiB resize target stay near 31 MB.
|
|
13
|
+
image-count-budget 60
|
|
14
|
+
// Cursor's default route selects a differently priced backing model per
|
|
15
|
+
// request, Claude and GPT included, so it keeps Claude's image count and
|
|
16
|
+
// their 1024px edge; Gemini and Composer read 1024px pages as well as
|
|
17
|
+
// larger ones.
|
|
12
18
|
models "default" {
|
|
13
19
|
pricing-status "variable"
|
|
20
|
+
image-count-budget 20
|
|
21
|
+
image-max-edge 1024
|
|
14
22
|
}
|
|
15
23
|
|
|
24
|
+
// Cursor re-encodes every image for its Claude and GPT upstreams to fit
|
|
25
|
+
// 1024×1024 before the model reads it; Gemini and Composer read larger
|
|
26
|
+
// images as sent.
|
|
16
27
|
class "anthropic" {
|
|
28
|
+
image-max-edge 1024
|
|
29
|
+
// Past 20 images Claude rejects any image edge over 3,000 px, checked
|
|
30
|
+
// before Cursor downsizes.
|
|
31
|
+
image-count-budget 20
|
|
17
32
|
family "fable" {
|
|
18
33
|
requires-cursor-tool-schema-projection #true
|
|
19
34
|
// Cursor advertised Context window 300k (Max 1M recovered elsewhere).
|
|
@@ -56,6 +71,8 @@ provider "cursor" {
|
|
|
56
71
|
}
|
|
57
72
|
}
|
|
58
73
|
class "openai" {
|
|
74
|
+
// GPT images are fitted to 1024×1024 like Claude's (see above).
|
|
75
|
+
image-max-edge 1024
|
|
59
76
|
revision ">=5.6 <5.7" {
|
|
60
77
|
// Cursor advertised GPT-5.6 Sol/Terra/Luna Context window 272k;
|
|
61
78
|
// raises unlabeled -fast variants from the 200k default.
|
|
@@ -711,3 +728,15 @@ provider "cursor" {
|
|
|
711
728
|
}
|
|
712
729
|
}
|
|
713
730
|
}
|
|
731
|
+
|
|
732
|
+
// The same 1024px edge for targets that name only Cursor's wire (`{ api, id }`,
|
|
733
|
+
// no host). priority=-1: a fallback, so the equally specific provider rule
|
|
734
|
+
// above wins when both match.
|
|
735
|
+
on-api "cursor-agent" {
|
|
736
|
+
class "anthropic" priority=-1 {
|
|
737
|
+
image-max-edge 1024
|
|
738
|
+
}
|
|
739
|
+
class "openai" priority=-1 {
|
|
740
|
+
image-max-edge 1024
|
|
741
|
+
}
|
|
742
|
+
}
|
|
@@ -9,6 +9,9 @@ provider "google-antigravity" {
|
|
|
9
9
|
image "google-gemini-cli"
|
|
10
10
|
}
|
|
11
11
|
web-search "gemini"
|
|
12
|
+
// No size rejection up to a 64 MB body; 60 images at the 500 KiB resize
|
|
13
|
+
// target stay near 41 MB. Gemini counts images only against its context.
|
|
14
|
+
image-count-budget 60
|
|
12
15
|
|
|
13
16
|
seed api="google-gemini-cli" base-url="https://daily-cloudcode-pa.googleapis.com" bundle="always" {
|
|
14
17
|
model "gemini-3-pro-image" name="Gemini 3 Pro Image" {
|
|
@@ -26,6 +29,18 @@ provider "google-antigravity" {
|
|
|
26
29
|
preserves-max-output-tokens #false
|
|
27
30
|
|
|
28
31
|
class "anthropic" {
|
|
32
|
+
// Claude here is Vertex Anthropic: one image whose base64 passes
|
|
33
|
+
// 5,242,880 bytes is a 400 "image exceeds 5 MB maximum" (half the
|
|
34
|
+
// direct API's 10 MiB), and 8001 px is a 400 like on the direct API.
|
|
35
|
+
// Declaring the contract makes the Cloud Code Assist wire clamp images
|
|
36
|
+
// for Claude the way `anthropic-messages` does; Gemini on the same
|
|
37
|
+
// gateway has no such limits and keeps them unset.
|
|
38
|
+
max-image-dimension 8000
|
|
39
|
+
max-image-payload-bytes 5242880
|
|
40
|
+
// The Claude upstream rejects a message over 30 MB and, past 20 images,
|
|
41
|
+
// any image edge over 3,000 px. The clamp above caps each image; with no
|
|
42
|
+
// byte budget on this wire, the count bounds the body.
|
|
43
|
+
image-count-budget 20
|
|
29
44
|
family "opus" {
|
|
30
45
|
thinking-mode "budget"
|
|
31
46
|
}
|
|
@@ -59,6 +74,17 @@ provider "google-antigravity" {
|
|
|
59
74
|
}
|
|
60
75
|
}
|
|
61
76
|
}
|
|
77
|
+
// Cloud Code Assist bills a Gemini 2.5 or 3.x image a fixed 1,089 tokens
|
|
78
|
+
// from 32px to 2048px (extreme strips bill less); priority=1 outranks the
|
|
79
|
+
// lineage's 1,120 at equal specificity. verified: billing matched this rule
|
|
80
|
+
// on Gemini 2.5 Flash Lite, 3.1 Flash Lite and 3.8 Flash.
|
|
81
|
+
class "gemini" priority=1 {
|
|
82
|
+
image-tokenization {
|
|
83
|
+
regime "fixed"
|
|
84
|
+
verified #true
|
|
85
|
+
tokens 1089
|
|
86
|
+
}
|
|
87
|
+
}
|
|
62
88
|
// residue: taxonomy ranks and exact globs do not isolate these models.
|
|
63
89
|
models "claude-opus-4-6" {
|
|
64
90
|
thinking-efforts "minimal" "low" "medium" "high"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Image billing for readers whose lineage has no `image-tokenization` rule in
|
|
2
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.
|
|
3
|
+
// fallbacks, so a class-wide lineage rule (same specificity) always wins. None
|
|
4
|
+
// is `verified`: nobody measured the billing of the readers they price.
|
|
4
5
|
|
|
5
6
|
// OpenAI-compatible wires bill like GPT-5.5: 32px patches × 1.2, `auto` sized
|
|
6
7
|
// like `original`.
|
|
@@ -54,6 +54,19 @@ provider "meta" {
|
|
|
54
54
|
supports-reasoning-effort #true
|
|
55
55
|
include-encrypted-reasoning #true
|
|
56
56
|
}
|
|
57
|
+
// Muse Wonder: dev.meta.ai/docs/models + pricing-rate-limits (2026-10-12).
|
|
58
|
+
// `max` documented; no contributor tier on Model API. Meta publishes no
|
|
59
|
+
// output cap, so it takes the Muse Spark ceiling.
|
|
60
|
+
model "muse-wonder-1.0" name="Muse Wonder" {
|
|
61
|
+
reasoning #true
|
|
62
|
+
input "text" "image"
|
|
63
|
+
cost input=4 output=20 cache-read=0.2 cache-write=0
|
|
64
|
+
limits context=1048576 max-tokens=131072
|
|
65
|
+
thinking-mode "effort"
|
|
66
|
+
thinking-efforts "minimal" "low" "medium" "high" "xhigh" "max"
|
|
67
|
+
supports-reasoning-effort #true
|
|
68
|
+
include-encrypted-reasoning #true
|
|
69
|
+
}
|
|
57
70
|
model "muse-spark-1.3-contributor" name="Muse Spark 1.3 (C)" {
|
|
58
71
|
reasoning #true
|
|
59
72
|
input "text" "image"
|
|
@@ -72,7 +85,10 @@ provider "meta" {
|
|
|
72
85
|
// api.meta.ai/v1 accepts only tool_choice "auto"; "none", "required" and named
|
|
73
86
|
// choices are rejected with 400 (verified 2026-09-10), so omit the field.
|
|
74
87
|
supports-tool-choice #false
|
|
88
|
+
// `/v1/models` carries no capability metadata: an id no seed or taxonomy
|
|
89
|
+
// knows is offered this ladder for the user to opt into.
|
|
75
90
|
class "unknown" {
|
|
91
|
+
thinking-unverified #true
|
|
76
92
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
77
93
|
thinking-mode "effort"
|
|
78
94
|
}
|
|
@@ -27,7 +27,16 @@ provider "muse-code" {
|
|
|
27
27
|
// `custom` tools are rejected with 400 "`custom` tools are not supported
|
|
28
28
|
// on this endpoint", so apply-patch must stay a function tool here.
|
|
29
29
|
edit-prompt-variant "compact"
|
|
30
|
+
on-api "openai-responses" {
|
|
31
|
+
// Spark 1.3 Contributor warmed siblings hit 10/10 vs 0/10 with per-child keys (2026-10-12).
|
|
32
|
+
// Meta documents shared-prefix prompt_cache_key routing; keep the opt-in on these exact Muse Code IDs.
|
|
33
|
+
models "muse-spark-1.3" "muse-spark-1.3-contributor" "muse-wonder-1.0" "muse-wonder-1.0-contributor" "muse-wonder-full-1.0" "muse-wonder-full-1.0-contributor" {
|
|
34
|
+
task-sibling-prompt-cache #true
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Same capability-less `/v1/models` as Meta: unknown ids are opt-in.
|
|
30
38
|
class "unknown" {
|
|
39
|
+
thinking-unverified #true
|
|
31
40
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
32
41
|
thinking-mode "effort"
|
|
33
42
|
}
|
|
@@ -9,6 +9,14 @@ provider "openai-codex" {
|
|
|
9
9
|
}
|
|
10
10
|
web-search "codex"
|
|
11
11
|
|
|
12
|
+
// Policy budgets: the Codex backend documents no request-size or image
|
|
13
|
+
// limit, and requests with several thousand images fail mid-stream at
|
|
14
|
+
// random. Inline images keep Anthropic's 24 MB; the official endpoint's
|
|
15
|
+
// image count stays well below those failures. A custom baseUrl keeps 200.
|
|
16
|
+
inline-image-byte-budget 24000000
|
|
17
|
+
image-count-budget 200
|
|
18
|
+
official-image-count-budget 2000
|
|
19
|
+
|
|
12
20
|
seed api="openai-codex-responses" base-url="https://chatgpt.com/backend-api" bundle="always" {
|
|
13
21
|
// Label only: the Codex backend ignores `tool.model` and runs gpt-image-2-codex.
|
|
14
22
|
model "gpt-image-2" name="GPT Image 2" {
|
|
@@ -13,6 +13,7 @@ provider "openrouter" {
|
|
|
13
13
|
stt "openai-transcriptions"
|
|
14
14
|
}
|
|
15
15
|
web-search "openrouter"
|
|
16
|
+
image-count-budget 90
|
|
16
17
|
|
|
17
18
|
// TypeSafe's Jev answers only through the Decisions API (`/api/alpha/decisions`,
|
|
18
19
|
// System One wire shape); the default `/models` roster omits `text->decisions`
|
|
@@ -5,6 +5,7 @@ provider "umans" {
|
|
|
5
5
|
env "UMANS_AI_CODING_PLAN_API_KEY"
|
|
6
6
|
dynamic-models-authoritative #true
|
|
7
7
|
discovery label="Umans AI Coding Plan" allow-unauthenticated=#true
|
|
8
|
+
image-count-budget 10
|
|
8
9
|
|
|
9
10
|
// Replaces resolve.ts's Umans provider baseline for Anthropic built-in tool names.
|
|
10
11
|
escape-builtin-tool-names #true
|
|
@@ -9,6 +9,9 @@ provider "xai-oauth" {
|
|
|
9
9
|
tts "xai-tts"
|
|
10
10
|
}
|
|
11
11
|
web-search "xai"
|
|
12
|
+
// api.x.ai rejects a body over 50 MiB and counts images only against the
|
|
13
|
+
// context window; 60 images at the 500 KiB resize target stay near 41 MB.
|
|
14
|
+
image-count-budget 60
|
|
12
15
|
|
|
13
16
|
// Source of truth for the xai-oauth chat picker. Declaration order is headline order.
|
|
14
17
|
// Context windows from hermes-agent/agent/model_metadata.py:205-220
|
|
@@ -8,6 +8,9 @@ provider "xai" {
|
|
|
8
8
|
tts "xai-tts"
|
|
9
9
|
}
|
|
10
10
|
web-search "xai"
|
|
11
|
+
// api.x.ai rejects a body over 50 MiB and counts images only against the
|
|
12
|
+
// context window; 60 images at the 500 KiB resize target stay near 41 MB.
|
|
13
|
+
image-count-budget 60
|
|
11
14
|
|
|
12
15
|
seed api="xai-tts" base-url="https://api.x.ai/v1" bundle="always" {
|
|
13
16
|
model "grok-tts" name="Grok TTS" {
|
|
@@ -174,9 +174,9 @@ behavior {
|
|
|
174
174
|
exclude-models provider="xai-oauth" exact="grok-imagine-image-quality" exact="grok-imagine-image-2.0" \
|
|
175
175
|
prefix="grok-imagine-video" prefix="grok-stt-" prefix="grok-voice-"
|
|
176
176
|
// Meta's /v1/models lists image generation and transcription SKUs beside
|
|
177
|
-
// the Muse Spark chat models.
|
|
178
|
-
exclude-models provider="meta" prefix="muse-image-" prefix="muse-voice-"
|
|
179
|
-
exclude-models provider="muse-code" prefix="muse-image-" prefix="muse-voice-"
|
|
177
|
+
// the Muse Spark chat models, and SAM segmentation beside them.
|
|
178
|
+
exclude-models provider="meta" prefix="muse-image-" prefix="muse-voice-" prefix="sam-"
|
|
179
|
+
exclude-models provider="muse-code" prefix="muse-image-" prefix="muse-voice-" prefix="sam-"
|
|
180
180
|
// NanoGPT's roster interleaves non-text SKUs by name token.
|
|
181
181
|
exclude-models provider="nanogpt" substring="embedding" substring="image" substring="vision" \
|
|
182
182
|
substring="audio" substring="speech" substring="transcribe" substring="moderation" \
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
class "meta" {
|
|
2
2
|
bounded "muse-spark"
|
|
3
|
+
bounded "muse-wonder"
|
|
3
4
|
bounded "llama"
|
|
4
5
|
namespace "meta-llama"
|
|
5
6
|
|
|
6
7
|
family "llama" glob="*llama*"
|
|
7
8
|
family "muse-spark" glob="*muse-spark*"
|
|
9
|
+
family "muse-wonder" glob="*muse-wonder*"
|
|
8
10
|
|
|
9
11
|
revision prefix="muse-spark-"
|
|
12
|
+
revision prefix="muse-wonder-"
|
|
10
13
|
}
|