@linxiraos/pi-catalog 1.2.1 → 1.3.0
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 +79 -0
- package/README.md +4 -2
- package/THIRD-PARTY-NOTICES.txt +55 -5
- package/dist/types/build.d.ts +3 -2
- package/dist/types/compat/auth-ids.d.ts +2 -2
- package/dist/types/compat/axes.d.ts +1 -1
- package/dist/types/compat/behavior.d.ts +5 -0
- package/dist/types/compat/catalog-endpoint.d.ts +8 -0
- package/dist/types/compat/image-tokenization.d.ts +9 -1
- package/dist/types/compat/judgment-images.d.ts +25 -0
- package/dist/types/compat/provider-ids.d.ts +1 -1
- package/dist/types/compat/request-compression.d.ts +23 -0
- package/dist/types/compat/request-size.d.ts +12 -3
- package/dist/types/compat/thinking-replay.d.ts +9 -0
- package/dist/types/compat/types.d.ts +4 -0
- package/dist/types/discovery/antigravity.d.ts +7 -0
- package/dist/types/model-cache.d.ts +7 -0
- package/dist/types/model-manager.d.ts +6 -0
- package/dist/types/model-thinking.d.ts +11 -1
- package/dist/types/models.d.ts +16 -1
- package/dist/types/pricing.d.ts +37 -1
- package/dist/types/provider-models/openai-compat.d.ts +18 -46
- package/dist/types/types.d.ts +63 -12
- package/dist/types/wire/codex.d.ts +2 -0
- package/package.json +5 -5
- package/src/build.d.ts +3 -2
- package/src/build.ts +159 -80
- package/src/compat/auth-ids.ts +2 -0
- package/src/compat/axes.d.ts +1 -1
- package/src/compat/axes.ts +129 -4
- package/src/compat/behavior.d.ts +5 -0
- package/src/compat/behavior.ts +9 -1
- package/src/compat/cascade.ts +4 -1
- package/src/compat/catalog-endpoint.ts +43 -0
- package/src/compat/image-tokenization.ts +28 -10
- package/src/compat/judgment-images.ts +83 -0
- package/src/compat/provider-ids.d.ts +1 -1
- package/src/compat/provider-ids.ts +1 -0
- package/src/compat/request-compression.ts +43 -0
- package/src/compat/request-size.ts +20 -5
- package/src/compat/resolve.ts +90 -53
- package/src/compat/rules/README.md +32 -3
- package/src/compat/rules/auth/_order.kdl +1 -1
- package/src/compat/rules/auth/google-antigravity.kdl +1 -1
- package/src/compat/rules/auth/sambanova.kdl +9 -0
- package/src/compat/rules/auth/stencil.kdl +1 -1
- package/src/compat/rules/classes/anthropic.kdl +42 -2
- package/src/compat/rules/classes/deepseek.kdl +4 -0
- package/src/compat/rules/classes/gemini.kdl +46 -2
- package/src/compat/rules/classes/meta.kdl +7 -0
- package/src/compat/rules/classes/minimax.kdl +11 -1
- package/src/compat/rules/classes/openai.kdl +34 -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 +23 -0
- package/src/compat/rules/providers/azure.kdl +2 -0
- package/src/compat/rules/providers/cerebras.kdl +3 -0
- package/src/compat/rules/providers/cline-pass.kdl +16 -0
- package/src/compat/rules/providers/commandcode.kdl +10 -0
- package/src/compat/rules/providers/cursor.kdl +50 -1
- package/src/compat/rules/providers/deepinfra.kdl +3 -1
- package/src/compat/rules/providers/devin.kdl +117 -6
- package/src/compat/rules/providers/factory-droid.kdl +6 -0
- package/src/compat/rules/providers/firepass.kdl +15 -0
- package/src/compat/rules/providers/fireworks.kdl +26 -0
- package/src/compat/rules/providers/github-copilot.kdl +24 -0
- package/src/compat/rules/providers/google-antigravity.kdl +37 -0
- package/src/compat/rules/providers/google-gemini-cli.kdl +1 -0
- package/src/compat/rules/providers/google-vertex.kdl +5 -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/local.kdl +8 -1
- package/src/compat/rules/providers/meta.kdl +16 -0
- package/src/compat/rules/providers/moonshot.kdl +2 -0
- package/src/compat/rules/providers/muse-code.kdl +49 -0
- package/src/compat/rules/providers/native-tools.kdl +3 -0
- package/src/compat/rules/providers/ollama-cloud.kdl +10 -0
- package/src/compat/rules/providers/openai-codex.kdl +29 -5
- package/src/compat/rules/providers/openai.kdl +1 -0
- package/src/compat/rules/providers/opencode-go.kdl +35 -0
- package/src/compat/rules/providers/opencode-zen.kdl +4 -0
- package/src/compat/rules/providers/openrouter.kdl +19 -0
- package/src/compat/rules/providers/sambanova.kdl +60 -0
- package/src/compat/rules/providers/tool-call-names.kdl +37 -0
- package/src/compat/rules/providers/typesafe.kdl +11 -0
- package/src/compat/rules/providers/umans.kdl +7 -0
- package/src/compat/rules/providers/venice.kdl +7 -0
- package/src/compat/rules/providers/xai-oauth.kdl +16 -6
- package/src/compat/rules/providers/xai.kdl +3 -0
- package/src/compat/rules/providers/zai.kdl +5 -0
- package/src/compat/rules/runtime/behavior.kdl +128 -8
- package/src/compat/rules/taxonomy/_collapse.kdl +11 -0
- package/src/compat/rules/taxonomy/gemma.kdl +1 -0
- package/src/compat/rules/taxonomy/meta.kdl +7 -0
- package/src/compat/rules/taxonomy/openai.kdl +2 -0
- package/src/compat/rules.json +1 -1
- package/src/compat/thinking-replay.ts +33 -0
- package/src/compat/types.d.ts +4 -0
- package/src/compat/types.ts +4 -0
- package/src/discovery/antigravity.d.ts +7 -0
- package/src/discovery/antigravity.ts +13 -0
- package/src/discovery/codex.ts +0 -4
- package/src/discovery/cursor.ts +28 -20
- package/src/discovery/devin.ts +7 -8
- package/src/model-cache.d.ts +7 -0
- package/src/model-cache.ts +8 -0
- package/src/model-manager.d.ts +6 -0
- package/src/model-manager.ts +41 -21
- package/src/model-thinking.d.ts +80 -0
- package/src/model-thinking.ts +13 -1
- package/src/model-tokenizer.ts +7 -1
- package/src/models.d.ts +16 -1
- package/src/models.json +1 -1
- package/src/models.ts +26 -12
- package/src/pricing.d.ts +37 -1
- package/src/pricing.ts +123 -12
- package/src/provider-models/bundled-references.ts +5 -2
- package/src/provider-models/cache-provider-id.ts +1 -1
- package/src/provider-models/descriptors.ts +2 -0
- package/src/provider-models/google.ts +7 -1
- package/src/provider-models/openai-compat.d.ts +18 -46
- package/src/provider-models/openai-compat.ts +188 -104
- package/src/provider-models/special.ts +1 -0
- package/src/types.d.ts +63 -12
- package/src/types.ts +71 -9
- package/src/wire/codex.d.ts +2 -0
- package/src/wire/codex.ts +17 -0
|
@@ -4,11 +4,27 @@ provider "openai-codex" {
|
|
|
4
4
|
default-model "gpt-5.5"
|
|
5
5
|
env "OPENAI_CODEX_OAUTH_TOKEN"
|
|
6
6
|
dynamic-models-authoritative #true
|
|
7
|
+
// Codex `/models` `display_name` is a title-cased slug (`GPT-6.1-Sol`,
|
|
8
|
+
// `GPT-5.6-Luna`) while the generator names bundled rows from the shared
|
|
9
|
+
// reference (`GPT-6.1 Sol`); without this the composer chip flips spelling
|
|
10
|
+
// once live discovery lands.
|
|
11
|
+
keep-bundled-names #true
|
|
7
12
|
kind-apis {
|
|
8
13
|
image "openai-codex-responses"
|
|
9
14
|
}
|
|
10
15
|
web-search "codex"
|
|
11
16
|
|
|
17
|
+
// Policy budgets: the Codex backend documents no request-size or image
|
|
18
|
+
// limit, and requests with several thousand images fail mid-stream at
|
|
19
|
+
// random. Inline images keep Anthropic's 24 MB; the official endpoint's
|
|
20
|
+
// image count stays well below those failures. A custom baseUrl keeps 200.
|
|
21
|
+
inline-image-byte-budget 24000000
|
|
22
|
+
image-count-budget 200
|
|
23
|
+
official-image-count-budget 2000
|
|
24
|
+
// The backend decodes zstd request bodies, as the official client sends.
|
|
25
|
+
// Its rejection body is undocumented, so any 400/415 re-checks uncompressed.
|
|
26
|
+
request-encodings "zstd"
|
|
27
|
+
|
|
12
28
|
seed api="openai-codex-responses" base-url="https://chatgpt.com/backend-api" bundle="always" {
|
|
13
29
|
// Label only: the Codex backend ignores `tool.model` and runs gpt-image-2-codex.
|
|
14
30
|
model "gpt-image-2" name="GPT Image 2" {
|
|
@@ -91,10 +107,12 @@ provider "openai-codex" {
|
|
|
91
107
|
}
|
|
92
108
|
}
|
|
93
109
|
// GPT-6.1 Sol keeps GPT-6 Sol's $2/$10 list price but halves cached input
|
|
94
|
-
// to $0.10 (OpenAI API docs, 2026-09-29).
|
|
95
|
-
// default
|
|
96
|
-
//
|
|
97
|
-
//
|
|
110
|
+
// to $0.10 (OpenAI API docs, 2026-09-29). OpenAI raised the Codex/Work
|
|
111
|
+
// default window from 272K to 500K at no extra charge (2026-10-11,
|
|
112
|
+
// https://x.com/thsottiaux/status/2109430343346581527). Codex reports an
|
|
113
|
+
// 872K maximum while OpenAI documents 922K max input (1.05M total); the
|
|
114
|
+
// curated maximum applies only with extended context on, and a higher live
|
|
115
|
+
// maximum still wins.
|
|
98
116
|
models "gpt-6.1-sol" "gpt-6.1-sol-wm" {
|
|
99
117
|
cost-patch {
|
|
100
118
|
input 2.0
|
|
@@ -103,7 +121,7 @@ provider "openai-codex" {
|
|
|
103
121
|
cache-write 0
|
|
104
122
|
}
|
|
105
123
|
limits-patch {
|
|
106
|
-
context-window
|
|
124
|
+
context-window 500000
|
|
107
125
|
}
|
|
108
126
|
max-context-window 922000
|
|
109
127
|
}
|
|
@@ -209,3 +227,9 @@ provider "openai-codex" {
|
|
|
209
227
|
context-window-floor 1000000
|
|
210
228
|
}
|
|
211
229
|
}
|
|
230
|
+
|
|
231
|
+
// The Codex backend rejects every sampling control (`temperature`, `top_p`,
|
|
232
|
+
// penalties, stop sequences), whichever model it serves (#3117).
|
|
233
|
+
on-api "openai-codex-responses" {
|
|
234
|
+
supports-sampling-params #false
|
|
235
|
+
}
|
|
@@ -4,6 +4,10 @@ provider "opencode-go" {
|
|
|
4
4
|
default-model "kimi-k2.7-code"
|
|
5
5
|
env "OPENCODE_API_KEY"
|
|
6
6
|
dynamic-models-authoritative #true
|
|
7
|
+
// Replaces the provider check that disabled forced tool choice on Responses.
|
|
8
|
+
on-api "openai-responses" {
|
|
9
|
+
supports-forced-tool-choice #false
|
|
10
|
+
}
|
|
7
11
|
|
|
8
12
|
// The Flash lanes accept images despite their IDs lacking a vision suffix;
|
|
9
13
|
// verified against the gateway (unguessable pixel-rendered text read back
|
|
@@ -15,6 +19,37 @@ provider "opencode-go" {
|
|
|
15
19
|
input-modalities "text" "image"
|
|
16
20
|
strip-image-input #false
|
|
17
21
|
}
|
|
22
|
+
// residue: the ids-only Go roster lists this bare V4.1 Flash alias with no
|
|
23
|
+
// price, limits or reasoning flag, and neither models.dev nor the bundle has
|
|
24
|
+
// a row to hydrate it from (#15357). Mirror the gateway's own
|
|
25
|
+
// `deepseek-v4.1-flash` row; `cost-fallback` yields to any price discovery
|
|
26
|
+
// reports later.
|
|
27
|
+
models "deepseek-flash" {
|
|
28
|
+
thinking-upgrade-neutral #true
|
|
29
|
+
cost-fallback {
|
|
30
|
+
input 0.15
|
|
31
|
+
output 0.6
|
|
32
|
+
cache-read 0.003
|
|
33
|
+
cache-write 0.0
|
|
34
|
+
}
|
|
35
|
+
limits-patch {
|
|
36
|
+
context-window 1000000
|
|
37
|
+
max-tokens 384000
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Live Go discovery lists Argon without capabilities; its native Gemini
|
|
41
|
+
// endpoint requires a thinking level and accepts LOW, MEDIUM, or HIGH.
|
|
42
|
+
models "gemini-4-argon-contributor" {
|
|
43
|
+
thinking-upgrade-neutral #true
|
|
44
|
+
thinking-mode "google-level"
|
|
45
|
+
thinking-efforts "low" "medium" "high"
|
|
46
|
+
thinking-requires-effort #true
|
|
47
|
+
input-modalities "text" "image"
|
|
48
|
+
limits-patch {
|
|
49
|
+
context-window 1048576
|
|
50
|
+
max-tokens 65536
|
|
51
|
+
}
|
|
52
|
+
}
|
|
18
53
|
// Replaces the OpenCode reasoning-model whenThinking fallback object.
|
|
19
54
|
when-thinking {
|
|
20
55
|
requires-reasoning-content-for-tool-calls #true
|
|
@@ -4,6 +4,10 @@ provider "opencode-zen" {
|
|
|
4
4
|
default-model "claude-opus-5"
|
|
5
5
|
env "OPENCODE_API_KEY"
|
|
6
6
|
dynamic-models-authoritative #true
|
|
7
|
+
// Replaces the provider check that disabled forced tool choice on Responses.
|
|
8
|
+
on-api "openai-responses" {
|
|
9
|
+
supports-forced-tool-choice #false
|
|
10
|
+
}
|
|
7
11
|
|
|
8
12
|
// Replaces the OpenCode reasoning-model whenThinking fallback object.
|
|
9
13
|
// Applies to every completions-routed reasoning model, discovered ids
|
|
@@ -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`
|
|
@@ -118,6 +119,17 @@ provider "openrouter" {
|
|
|
118
119
|
models "~typesafe/*" "typesafe/*" {
|
|
119
120
|
kind "judge"
|
|
120
121
|
}
|
|
122
|
+
models "~typesafe/jev-latest" "typesafe/jev-1.13" "typesafe/jev-1.14" {
|
|
123
|
+
input-modalities "text" "image"
|
|
124
|
+
judgment-image-input {
|
|
125
|
+
mime-types "image/png,image/jpeg"
|
|
126
|
+
max-bytes 16777216
|
|
127
|
+
min-pixels 78400
|
|
128
|
+
max-pixels 2458624
|
|
129
|
+
min-side 280
|
|
130
|
+
max-side 1568
|
|
131
|
+
}
|
|
132
|
+
}
|
|
121
133
|
models "cohere/rerank-v3.5" {
|
|
122
134
|
kind "rerank"
|
|
123
135
|
}
|
|
@@ -150,6 +162,13 @@ provider "openrouter" {
|
|
|
150
162
|
allows-synthetic-reasoning-content-for-tool-calls #false
|
|
151
163
|
}
|
|
152
164
|
}
|
|
165
|
+
// OpenRouter forwards these hosted Muse SKUs to Meta's backend, which
|
|
166
|
+
// accepts only tool_choice "auto" and 400s on "none" (see providers/meta.kdl).
|
|
167
|
+
// Other Muse models, including muse-spark-open, retain discovered tool_choice.
|
|
168
|
+
models "meta/muse-spark-1.1" "meta/muse-spark-1.2" "meta/muse-spark-1.2-contributor" \
|
|
169
|
+
"meta/muse-spark-1.3" "meta/muse-spark-1.3-contributor" "meta/muse-wonder" {
|
|
170
|
+
supports-tool-choice #false
|
|
171
|
+
}
|
|
153
172
|
class "minimax" {
|
|
154
173
|
family "m3" {
|
|
155
174
|
thinking-efforts "minimal" "low" "medium" "high"
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Provider-wire compat for "sambanova". SambaNova Cloud is an OpenAI-compatible
|
|
2
|
+
// gateway whose roster changes often (preview models come and go on short
|
|
3
|
+
// notice), so the live `/v1/models` roster is authoritative. Its rows carry
|
|
4
|
+
// pricing and limits but no capability metadata; the selectors below own
|
|
5
|
+
// reasoning, thinking wire format, and image input.
|
|
6
|
+
|
|
7
|
+
provider "sambanova" {
|
|
8
|
+
default-model "gpt-oss-120b"
|
|
9
|
+
env "SAMBANOVA_API_KEY"
|
|
10
|
+
discovery label="SambaNova"
|
|
11
|
+
|
|
12
|
+
dynamic-models-authoritative #true
|
|
13
|
+
skip-cross-provider-reference-fills #true
|
|
14
|
+
|
|
15
|
+
// `/v1/models` requires a key. This row keeps the provider visible in
|
|
16
|
+
// `/model` before login; the first live roster replaces it. Rate card from
|
|
17
|
+
// https://cloud.sambanova.ai/pricing.
|
|
18
|
+
seed api="openai-completions" base-url="https://api.sambanova.ai/v1" bundle="fallback" {
|
|
19
|
+
model "gpt-oss-120b" name="GPT OSS 120B" {
|
|
20
|
+
reasoning #true
|
|
21
|
+
input "text"
|
|
22
|
+
cost input=0.22 output=0.59 cache-read=0 cache-write=0
|
|
23
|
+
limits context=131072
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// `/chat/completions` documents `reasoning_effort` as low/medium/high
|
|
28
|
+
// (https://docs.sambanova.ai/docs/api-reference/chat-completions/create-chat-based-completion).
|
|
29
|
+
thinking-mode "effort"
|
|
30
|
+
thinking-format "openai"
|
|
31
|
+
class "gpt-oss" {
|
|
32
|
+
thinking-efforts "low" "medium" "high"
|
|
33
|
+
thinking-upgrade-neutral #true
|
|
34
|
+
}
|
|
35
|
+
class "minimax" {
|
|
36
|
+
family "m3" {
|
|
37
|
+
thinking-efforts "low" "medium" "high"
|
|
38
|
+
thinking-upgrade-neutral #true
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// DeepSeek V3.x and Gemma 4 think only when the request sets
|
|
42
|
+
// `chat_template_kwargs.enable_thinking`; it is off by default and no
|
|
43
|
+
// effort reaches the template, so the ladder is one on-rung beside off
|
|
44
|
+
// (https://docs.sambanova.ai/docs/en/features/text-generation).
|
|
45
|
+
class "deepseek" {
|
|
46
|
+
revision ">=3.1 <4" {
|
|
47
|
+
thinking-format "qwen-chat-template"
|
|
48
|
+
thinking-efforts "high"
|
|
49
|
+
thinking-upgrade-neutral #true
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
class "gemma" {
|
|
53
|
+
revision ">=4" {
|
|
54
|
+
thinking-format "qwen-chat-template"
|
|
55
|
+
thinking-efforts "high"
|
|
56
|
+
thinking-upgrade-neutral #true
|
|
57
|
+
input-modalities "text" "image"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Tool names in replayed history must meet the target wire's declaration limits.
|
|
2
|
+
// Anthropic tool definitions: https://platform.claude.com/docs/en/agents-and-tools/tool-use/define-tools
|
|
3
|
+
on-api "anthropic-messages" "openai-responses" "azure-openai-responses" "openai-codex-responses" {
|
|
4
|
+
tool-call-name-charset "ascii"
|
|
5
|
+
tool-call-name-max-length 128
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// Bedrock ToolUseBlockStart.name: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolUseBlockStart.html
|
|
9
|
+
on-api "bedrock-converse-stream" {
|
|
10
|
+
tool-call-name-charset "ascii"
|
|
11
|
+
tool-call-name-max-length 64
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Chat Completions uses the shorter tool-name bound; OpenRouter can select it
|
|
15
|
+
// at request time. Factory Droid encodes caller names into this shape.
|
|
16
|
+
on-api "openai-completions" "openrouter" "factory-droid-agent" {
|
|
17
|
+
tool-call-name-charset "ascii"
|
|
18
|
+
tool-call-name-max-length 64
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Google FunctionDeclaration.name: https://googleapis.github.io/js-genai/release_docs/interfaces/types.FunctionDeclaration.html
|
|
22
|
+
on-api "google-generative-ai" {
|
|
23
|
+
tool-call-name-charset "google"
|
|
24
|
+
tool-call-name-max-length 128
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Vertex uses the Google FunctionDeclaration shape, independently of the public Gemini API.
|
|
28
|
+
on-api "google-vertex" {
|
|
29
|
+
tool-call-name-charset "google"
|
|
30
|
+
tool-call-name-max-length 128
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Code Assist's Gemini CLI proxy gets the conservative 64-character wire bound.
|
|
34
|
+
on-api "google-gemini-cli" {
|
|
35
|
+
tool-call-name-charset "google"
|
|
36
|
+
tool-call-name-max-length 64
|
|
37
|
+
}
|
|
@@ -14,6 +14,17 @@ provider "typesafe" {
|
|
|
14
14
|
supports-tools #false
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
models "jev-latest" "jev-preview" "jev-1.13.0" "jev-1.14.0" {
|
|
18
|
+
input-modalities "text" "image"
|
|
19
|
+
judgment-image-input {
|
|
20
|
+
mime-types "image/png,image/jpeg"
|
|
21
|
+
max-bytes 16777216
|
|
22
|
+
min-pixels 78400
|
|
23
|
+
max-pixels 2458624
|
|
24
|
+
min-side 280
|
|
25
|
+
max-side 1568
|
|
26
|
+
}
|
|
27
|
+
}
|
|
17
28
|
|
|
18
29
|
models "*" {
|
|
19
30
|
kind "judge"
|
|
@@ -5,9 +5,16 @@ 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
|
|
12
|
+
// Replaces the GLM 5.2+ Anthropic budget-plus-effort default.
|
|
13
|
+
class "glm" {
|
|
14
|
+
revision ">=5.2" {
|
|
15
|
+
thinking-mode "anthropic-budget-effort"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
11
18
|
// residue: taxonomy ranks and exact globs do not isolate these models.
|
|
12
19
|
models "umans-coder" "umans-kimi-k2.7" {
|
|
13
20
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
@@ -47,4 +47,11 @@ provider "venice" {
|
|
|
47
47
|
models "qwen3-235b" {
|
|
48
48
|
thinking-format "qwen"
|
|
49
49
|
}
|
|
50
|
+
// Kimi K2.7 Code's documented recommended output budget; Venice discovery
|
|
51
|
+
// reports the context-sized `max_completion_tokens` instead.
|
|
52
|
+
class "kimi" {
|
|
53
|
+
family "k2.7-code" {
|
|
54
|
+
max-tokens-ceiling 32768
|
|
55
|
+
}
|
|
56
|
+
}
|
|
50
57
|
}
|
|
@@ -9,11 +9,19 @@ 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
|
|
15
|
+
// Public xAI prices are API-equivalent estimates for stats; SuperGrok
|
|
16
|
+
// requests stay subscription-backed, so the estimated long-context tier
|
|
17
|
+
// must not cap the runtime context window.
|
|
18
|
+
long-context-window-uncapped #true
|
|
12
19
|
|
|
13
20
|
// Source of truth for the xai-oauth chat picker. Declaration order is headline order.
|
|
14
21
|
// Context windows from hermes-agent/agent/model_metadata.py:205-220
|
|
15
|
-
// ("Values sourced from models.dev (2026-04)")
|
|
16
|
-
// coding-fine-tuned chat model; 512K context per user
|
|
22
|
+
// ("Values sourced from models.dev (2026-04)") unless a row says otherwise.
|
|
23
|
+
// grok-build is xAI's coding-fine-tuned chat model; 512K context per user
|
|
24
|
+
// spec (2026-05-17).
|
|
17
25
|
//
|
|
18
26
|
// xai-oauth's /v1/models exposes no per-request output limit on the OAuth
|
|
19
27
|
// (Grok Build / SuperGrok) surface, so maxTokens mirrors contextWindow. The
|
|
@@ -65,25 +73,27 @@ provider "xai-oauth" {
|
|
|
65
73
|
cost input=0 output=0 cache-read=0 cache-write=0
|
|
66
74
|
limits context=500000 max-tokens=500000
|
|
67
75
|
}
|
|
68
|
-
//
|
|
76
|
+
// grok-4.20-*-0309: api.x.ai rejects prompts over 1M tokens on this surface
|
|
77
|
+
// ([input_too_large] "... > 1000000 tokens", all three ids, 2026-10-12).
|
|
78
|
+
// Multi-agent is text-only per the bundled catalog.
|
|
69
79
|
model "grok-4.20-multi-agent-0309" name="Grok 4.20 (Multi-Agent)" {
|
|
70
80
|
reasoning #true
|
|
71
81
|
input "text"
|
|
72
82
|
cost input=0 output=0 cache-read=0 cache-write=0
|
|
73
|
-
limits context=
|
|
83
|
+
limits context=1000000 max-tokens=1000000
|
|
74
84
|
}
|
|
75
85
|
model "grok-4.20-0309-reasoning" name="Grok 4.20 (Reasoning)" {
|
|
76
86
|
reasoning #true
|
|
77
87
|
input "text" "image"
|
|
78
88
|
cost input=0 output=0 cache-read=0 cache-write=0
|
|
79
|
-
limits context=
|
|
89
|
+
limits context=1000000 max-tokens=1000000
|
|
80
90
|
supports-reasoning-effort #false
|
|
81
91
|
}
|
|
82
92
|
model "grok-4.20-0309-non-reasoning" name="Grok 4.20 (Non-Reasoning)" {
|
|
83
93
|
reasoning #false
|
|
84
94
|
input "text" "image"
|
|
85
95
|
cost input=0 output=0 cache-read=0 cache-write=0
|
|
86
|
-
limits context=
|
|
96
|
+
limits context=1000000 max-tokens=1000000
|
|
87
97
|
}
|
|
88
98
|
// Cursor's "Composer 2.5 Fast" exposed via SuperGrok: non-reasoning,
|
|
89
99
|
// text-only, 200K context (mirrors Cursor's composer-* catalog entries).
|
|
@@ -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" {
|
|
@@ -36,6 +36,11 @@ provider "zai" {
|
|
|
36
36
|
// Replaces resolve.ts's ZAI provider baseline for Anthropic tool-result IDs.
|
|
37
37
|
requires-tool-result-id #true
|
|
38
38
|
class "glm" {
|
|
39
|
+
// Replaces the GLM 5.2+ Anthropic budget-plus-effort default; the lower
|
|
40
|
+
// priority yields to the family modes below on equal-rank overlaps.
|
|
41
|
+
revision ">=5.2" priority=-1 {
|
|
42
|
+
thinking-mode "anthropic-budget-effort"
|
|
43
|
+
}
|
|
39
44
|
family "flash" {
|
|
40
45
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
41
46
|
thinking-mode "budget"
|
|
@@ -173,14 +173,21 @@ behavior {
|
|
|
173
173
|
// serve; the dedicated tool surfaces route them instead.
|
|
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
|
+
// Antigravity still advertises the Gemini 3.5 Flash wire ids, but every
|
|
177
|
+
// request to them answers with a retirement notice instead of a reply.
|
|
178
|
+
// `gemini-3-flash` is the family's recycled alias and routes to the same ids.
|
|
179
|
+
exclude-models provider="google-antigravity" exact="gemini-3.5-flash" exact="gemini-3-flash"
|
|
176
180
|
// 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-"
|
|
181
|
+
// the Muse Spark chat models, and SAM segmentation beside them.
|
|
182
|
+
exclude-models provider="meta" prefix="muse-image-" prefix="muse-voice-" prefix="sam-"
|
|
183
|
+
exclude-models provider="muse-code" prefix="muse-image-" prefix="muse-voice-" prefix="sam-"
|
|
180
184
|
// NanoGPT's roster interleaves non-text SKUs by name token.
|
|
181
185
|
exclude-models provider="nanogpt" substring="embedding" substring="image" substring="vision" \
|
|
182
186
|
substring="audio" substring="speech" substring="transcribe" substring="moderation" \
|
|
183
187
|
substring="realtime" substring="whisper" substring="tts"
|
|
188
|
+
// SambaNova's /v1/models may include embedding and audio SKUs.
|
|
189
|
+
exclude-models provider="sambanova" substring="embedding" substring="whisper" substring="audio" \
|
|
190
|
+
substring="e5-mistral" substring="clip"
|
|
184
191
|
// AIML API's roster interleaves media/embedding SKUs; bounded tokens keep
|
|
185
192
|
// chat ids from false-matching on plain substrings.
|
|
186
193
|
exclude-models provider="aimlapi" token="audio" token="embed" token="embedding" token="embeddings" \
|
|
@@ -219,9 +226,10 @@ behavior {
|
|
|
219
226
|
// effort ladder that lists `/responses` therefore rides Responses, so
|
|
220
227
|
// thinking-off actually disables reasoning instead of clamping to the
|
|
221
228
|
// lowest effort. Ladder ids without `/responses` (deepseek-v4-flash-fast,
|
|
222
|
-
// gemini-3.7-flash,
|
|
223
|
-
// space-bunny-alpha), the Qwen3.8 ids (chat
|
|
224
|
-
// `enable_thinking: false`), and
|
|
229
|
+
// gemini-3.7-flash, glm-5.3-flash since 2026-10-14, Qwen3.8-Flash,
|
|
230
|
+
// Qwen3.8-Max-0902, hy4-preview, space-bunny-alpha), the Qwen3.8 ids (chat
|
|
231
|
+
// already disables them through `enable_thinking: false`), and
|
|
232
|
+
// non-reasoning ids stay on chat completions.
|
|
225
233
|
api-routes provider="commandcode" default="openai-completions" {
|
|
226
234
|
route "anthropic-messages" prefix="claude-"
|
|
227
235
|
route "openai-responses" exact="gpt-5.3-codex" exact="gpt-5.4" exact="gpt-5.4-mini" exact="gpt-5.5" \
|
|
@@ -230,7 +238,7 @@ behavior {
|
|
|
230
238
|
exact="deepseek/deepseek-v4-flash" exact="deepseek/deepseek-v4-flash-vision-exp" \
|
|
231
239
|
exact="deepseek/deepseek-v4-pro" exact="deepseek/deepseek-v4.1-flash" \
|
|
232
240
|
exact="deepseek/deepseek-v4.1-flash-fast" exact="moonshotai/Kimi-K3" \
|
|
233
|
-
exact="z-ai/glm-5.3-
|
|
241
|
+
exact="z-ai/glm-5.3-flashx" exact="zai-org/GLM-5.2" \
|
|
234
242
|
exact="zai-org/GLM-5.3" exact="google/gemini-3.1-flash-lite" exact="google/gemini-3.5-flash" \
|
|
235
243
|
exact="google/gemini-3.5-flash-lite" exact="google/gemini-3.6-flash" \
|
|
236
244
|
exact="google/gemini-3.8-flash" exact="MiniMaxAI/MiniMax-M3" exact="stepfun/Step-5-Preview" \
|
|
@@ -255,6 +263,8 @@ behavior {
|
|
|
255
263
|
// at /responses (#10610, #12030). The Muse prefix covers gateway-first
|
|
256
264
|
// revisions; exact ids stay as cache-migration identity.
|
|
257
265
|
api-routes provider="opencode-zen" {
|
|
266
|
+
// Paid Argon is served only on Zen's native Google endpoint (#15977).
|
|
267
|
+
route "google-generative-ai" exact="gemini-4-argon"
|
|
258
268
|
route "anthropic-messages" exact="union-alpha"
|
|
259
269
|
route "openai-responses" prefix="muse-spark-" exact="muse-spark-1.3-contributor-free" exact="gpt-6-astra"
|
|
260
270
|
route "openai-completions" exact="minimax-m3" exact="minimax-m3-free"
|
|
@@ -263,6 +273,7 @@ behavior {
|
|
|
263
273
|
// responses pins are gateway-verified (deepseek-v4-flash 2026-08-08;
|
|
264
274
|
// muse-spark per opencode.ai/docs/go/#endpoints, #8957, #10610).
|
|
265
275
|
api-routes provider="opencode-go" {
|
|
276
|
+
route "google-generative-ai" exact="gemini-4-argon-contributor"
|
|
266
277
|
route "anthropic-messages" exact="union-alpha"
|
|
267
278
|
route "openai-responses" prefix="muse-spark-" exact="deepseek-v4-flash" exact="muse-spark-1.2" \
|
|
268
279
|
exact="muse-spark-1.2-contributor" exact="muse-spark-1.3" exact="muse-spark-1.3-contributor"
|
|
@@ -345,7 +356,6 @@ behavior {
|
|
|
345
356
|
// Google); price rows at their first-party equivalents, Vertex before
|
|
346
357
|
// Anthropic for Claude ids. Aliases map ids whose peer ships differently.
|
|
347
358
|
pricing-peer provider="google-antigravity" peers="google" "google-vertex" "anthropic" {
|
|
348
|
-
alias "gemini-3-flash" peer-id="gemini-3-flash-preview"
|
|
349
359
|
alias "gemini-3-pro" peer-id="gemini-3-pro-preview"
|
|
350
360
|
alias "gemini-3.1-pro" peer-id="gemini-3.1-pro-preview"
|
|
351
361
|
alias "claude-opus-4-5" peer-id="claude-opus-4-5@20251101"
|
|
@@ -372,4 +382,114 @@ behavior {
|
|
|
372
382
|
}
|
|
373
383
|
hosted-default provider="zai-search" model="glm-4.7"
|
|
374
384
|
hosted-default provider="synthetic-search" model="auto"
|
|
385
|
+
// Built-in default model selector chains per agent role, most preferred
|
|
386
|
+
// first; the coding agent reads them through `roleDefaultModels()`.
|
|
387
|
+
role-defaults "smol" {
|
|
388
|
+
model "claude-haiku-5-5"
|
|
389
|
+
model "claude-haiku-5.5"
|
|
390
|
+
model "haiku-5-5"
|
|
391
|
+
model "haiku-5.5"
|
|
392
|
+
model "google-antigravity/gemini-3.8-flash"
|
|
393
|
+
model "gemini-3.8-flash"
|
|
394
|
+
model "gemini-3-8-flash"
|
|
395
|
+
model "gemini-3.7-flash"
|
|
396
|
+
model "gemini-3-7-flash"
|
|
397
|
+
model "gemini-3.6-flash"
|
|
398
|
+
model "gemini-3-6-flash"
|
|
399
|
+
model "gemini-3.5-flash"
|
|
400
|
+
model "gemini-3-5-flash"
|
|
401
|
+
model "openai-codex/gpt-5.3-codex-spark"
|
|
402
|
+
model "gpt-5.3-codex-spark"
|
|
403
|
+
model "5.3-spark"
|
|
404
|
+
model "spark"
|
|
405
|
+
model "zai/glm-5.3-flash"
|
|
406
|
+
model "glm-5.3-flash"
|
|
407
|
+
model "gemini-3.1-flash-lite"
|
|
408
|
+
model "gemini-3-1-flash-lite"
|
|
409
|
+
model "flash-lite"
|
|
410
|
+
model "cerebras/gpt-oss-120b"
|
|
411
|
+
model "gpt-oss-120b"
|
|
412
|
+
model "oss-120b"
|
|
413
|
+
model "cerebras/zai-glm-4.7"
|
|
414
|
+
model "cerebras/zai-glm-4.6"
|
|
415
|
+
model "cerebras/zai-glm"
|
|
416
|
+
model "claude-haiku-4-5"
|
|
417
|
+
model "claude-haiku-4.5"
|
|
418
|
+
model "haiku-4-5"
|
|
419
|
+
model "haiku-4.5"
|
|
420
|
+
model "haiku"
|
|
421
|
+
model "openai-codex/gpt-5.6-luna"
|
|
422
|
+
model "gpt-5.6-luna"
|
|
423
|
+
model "openai-codex/gpt-5.4-mini"
|
|
424
|
+
model "gpt-5.4-mini"
|
|
425
|
+
model "-mini"
|
|
426
|
+
}
|
|
427
|
+
role-defaults "slow" {
|
|
428
|
+
model "openai-codex/gpt-5.6-sol"
|
|
429
|
+
model "gpt-5.6-sol"
|
|
430
|
+
model "anthropic/claude-fable-5-1"
|
|
431
|
+
model "claude-fable-5-1"
|
|
432
|
+
model "claude-fable-5.1"
|
|
433
|
+
model "fable-5.1"
|
|
434
|
+
model "fable-5-1"
|
|
435
|
+
model "anthropic/claude-fable-5"
|
|
436
|
+
model "claude-fable-5"
|
|
437
|
+
model "fable-5"
|
|
438
|
+
model "kimi-code/k3"
|
|
439
|
+
model "kimi-k3"
|
|
440
|
+
model "moonshotai/kimi-k3"
|
|
441
|
+
model "k3"
|
|
442
|
+
model "zai/glm-5.3"
|
|
443
|
+
model "glm-5.3"
|
|
444
|
+
model "anthropic/claude-opus-5-5"
|
|
445
|
+
model "claude-opus-5-5"
|
|
446
|
+
model "opus-5-5"
|
|
447
|
+
model "anthropic/claude-opus-5"
|
|
448
|
+
model "claude-opus-5"
|
|
449
|
+
model "opus-5"
|
|
450
|
+
model "openai-codex/gpt-5.5"
|
|
451
|
+
model "gpt-5.5"
|
|
452
|
+
model "claude-opus-4-8"
|
|
453
|
+
model "claude-opus-4.8"
|
|
454
|
+
model "opus-4-8"
|
|
455
|
+
model "opus-4.8"
|
|
456
|
+
}
|
|
457
|
+
role-defaults "image" {
|
|
458
|
+
model "openai/gpt-image-2"
|
|
459
|
+
model "openai-codex/gpt-image-2"
|
|
460
|
+
model "google-antigravity/gemini-3-pro-image"
|
|
461
|
+
model "xai/grok-imagine-image"
|
|
462
|
+
model "xai-oauth/grok-imagine-image"
|
|
463
|
+
model "openrouter/google/gemini-3-pro-image"
|
|
464
|
+
model "google/gemini-3-pro-image"
|
|
465
|
+
model "deepinfra/black-forest-labs/FLUX-2-pro"
|
|
466
|
+
}
|
|
467
|
+
role-defaults "web" {
|
|
468
|
+
model "web/parallel"
|
|
469
|
+
model "web/hosted"
|
|
470
|
+
model "web/exa"
|
|
471
|
+
model "web/firecrawl"
|
|
472
|
+
model "web/searxng"
|
|
473
|
+
model "web/startpage"
|
|
474
|
+
model "web/duckduckgo"
|
|
475
|
+
model "web/ecosia"
|
|
476
|
+
model "web/google"
|
|
477
|
+
model "web/mojeek"
|
|
478
|
+
model "web/public"
|
|
479
|
+
}
|
|
480
|
+
role-defaults "speech" {
|
|
481
|
+
model "local/kokoro"
|
|
482
|
+
model "xai/grok-tts"
|
|
483
|
+
model "xai-oauth/grok-tts"
|
|
484
|
+
}
|
|
485
|
+
role-defaults "dictation" {
|
|
486
|
+
model "local/parakeet-tdt-0.6b-v3"
|
|
487
|
+
}
|
|
488
|
+
role-defaults "judge" {
|
|
489
|
+
model "typesafe/jev-latest"
|
|
490
|
+
model "openrouter/~typesafe/jev-latest"
|
|
491
|
+
model "@tiny"
|
|
492
|
+
model "@smol"
|
|
493
|
+
model "@default"
|
|
494
|
+
}
|
|
375
495
|
}
|
|
@@ -46,6 +46,17 @@ collapse {
|
|
|
46
46
|
efforts "minimal" "low" "medium" "high"
|
|
47
47
|
requires-effort #true
|
|
48
48
|
}
|
|
49
|
+
// Gemini 4 Argon ships as `-low`/`-medium`/`-high` thinking-level SKUs,
|
|
50
|
+
// matching the three levels Google documents for the model (no minimal).
|
|
51
|
+
variant-family "google-antigravity" "gemini-4-argon" name="Gemini 4 Argon" {
|
|
52
|
+
members "gemini-4-argon-low" "gemini-4-argon-medium" "gemini-4-argon-high"
|
|
53
|
+
route "low" "gemini-4-argon-low"
|
|
54
|
+
route "medium" "gemini-4-argon-medium"
|
|
55
|
+
route "high" "gemini-4-argon-high"
|
|
56
|
+
mode "google-level"
|
|
57
|
+
efforts "low" "medium" "high"
|
|
58
|
+
requires-effort #true
|
|
59
|
+
}
|
|
49
60
|
variant-family "google-antigravity" "gemini-3.5-flash" name="Gemini 3.5 Flash" {
|
|
50
61
|
members "gemini-3.5-flash-extra-low" "gemini-3.5-flash-low" "gemini-3-flash-agent"
|
|
51
62
|
route "off" "gemini-3.5-flash-extra-low"
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
class "meta" {
|
|
2
2
|
bounded "muse-spark"
|
|
3
|
+
bounded "muse-wonder"
|
|
3
4
|
bounded "llama"
|
|
5
|
+
// SambaNova serves the bare `Meta-Llama-*` spelling with no namespace
|
|
6
|
+
// segment, which `bounded "llama"` never sees (prefix-anchored) and
|
|
7
|
+
// `namespace "meta-llama"` cannot match.
|
|
8
|
+
bounded "meta-llama"
|
|
4
9
|
namespace "meta-llama"
|
|
5
10
|
|
|
6
11
|
family "llama" glob="*llama*"
|
|
7
12
|
family "muse-spark" glob="*muse-spark*"
|
|
13
|
+
family "muse-wonder" glob="*muse-wonder*"
|
|
8
14
|
|
|
9
15
|
revision prefix="muse-spark-"
|
|
16
|
+
revision prefix="muse-wonder-"
|
|
10
17
|
}
|
|
@@ -16,6 +16,8 @@ class "openai" {
|
|
|
16
16
|
|
|
17
17
|
family "gpt" glob="gpt-*"
|
|
18
18
|
family "chatgpt" glob="chatgpt-*"
|
|
19
|
+
family "gpt-image" glob="gpt-image-*"
|
|
20
|
+
family "gpt-image" glob="chatgpt-image-*"
|
|
19
21
|
family "o-series" glob="o1"
|
|
20
22
|
family "o-series" glob="o1-*"
|
|
21
23
|
family "o-series" glob="o1.*"
|