@oh-my-pi/pi-catalog 18.4.3 → 18.4.5
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 +37 -0
- package/dist/types/compat/anthropic.d.ts +6 -0
- package/dist/types/compat/auth-ids.d.ts +2 -2
- package/dist/types/compat/axes.d.ts +3 -1
- package/dist/types/compat/factory-droid.d.ts +65 -0
- package/dist/types/compat/provider-ids.d.ts +1 -1
- package/dist/types/compat/resolve.d.ts +8 -2
- package/dist/types/compat/types.d.ts +26 -1
- package/dist/types/discovery/cursor-proto.d.ts +284 -0
- package/dist/types/discovery/cursor.d.ts +12 -6
- package/dist/types/discovery/factory-droid.d.ts +28 -0
- package/dist/types/discovery/index.d.ts +1 -0
- package/dist/types/discovery/protobuf.d.ts +3 -3
- package/dist/types/hosts.d.ts +13 -0
- package/dist/types/model-manager.d.ts +10 -0
- package/dist/types/models.d.ts +5 -1
- package/dist/types/provider-models/cache-provider-id.d.ts +2 -1
- package/dist/types/provider-models/descriptor-types.d.ts +2 -1
- package/dist/types/provider-models/openai-compat.d.ts +21 -0
- package/dist/types/provider-models/special.d.ts +2 -0
- package/dist/types/types.d.ts +115 -3
- package/dist/types/wire/codex.d.ts +5 -3
- package/dist/types/wire/cursor.d.ts +20 -0
- package/dist/types/wire/factory-droid.d.ts +45 -0
- package/package.json +4 -4
- package/src/build.ts +19 -0
- package/src/compat/anthropic.ts +11 -1
- package/src/compat/auth-ids.ts +4 -0
- package/src/compat/axes.ts +114 -1
- package/src/compat/cascade.ts +8 -1
- package/src/compat/collapse.ts +3 -0
- package/src/compat/factory-droid.ts +170 -0
- package/src/compat/provider-ids.ts +2 -0
- package/src/compat/resolve.ts +59 -8
- package/src/compat/rules/README.md +15 -7
- package/src/compat/rules/auth/_order.kdl +2 -2
- package/src/compat/rules/auth/factory-droid.kdl +28 -0
- package/src/compat/rules/auth/helmcode.kdl +9 -0
- package/src/compat/rules/classes/anthropic.kdl +16 -4
- package/src/compat/rules/providers/cursor.kdl +29 -17
- package/src/compat/rules/providers/factory-droid.kdl +1166 -0
- package/src/compat/rules/providers/helmcode.kdl +120 -0
- package/src/compat/rules/providers/openai-codex.kdl +17 -0
- package/src/compat/rules/runtime/behavior.kdl +44 -0
- package/src/compat/rules/taxonomy/_collapse.kdl +36 -14
- package/src/compat/rules.json +1 -1
- package/src/compat/types.ts +27 -1
- package/src/discovery/codex.ts +16 -0
- package/src/discovery/cursor-models.proto +261 -0
- package/src/discovery/cursor-proto.ts +471 -0
- package/src/discovery/cursor.ts +817 -88
- package/src/discovery/devin.ts +1 -3
- package/src/discovery/factory-droid.ts +296 -0
- package/src/discovery/index.ts +1 -0
- package/src/discovery/protobuf.ts +16 -7
- package/src/hosts.ts +47 -0
- package/src/model-manager.ts +13 -0
- package/src/models.json +1 -1
- package/src/models.ts +13 -0
- package/src/provider-models/cache-provider-id.ts +37 -6
- package/src/provider-models/descriptor-types.ts +2 -1
- package/src/provider-models/descriptors.ts +4 -0
- package/src/provider-models/openai-compat.ts +83 -17
- package/src/provider-models/special.ts +26 -2
- package/src/types.ts +129 -1
- package/src/wire/codex.ts +5 -3
- package/src/wire/cursor.ts +32 -0
- package/src/wire/factory-droid.ts +130 -0
|
@@ -152,7 +152,7 @@ discovery {
|
|
|
152
152
|
|
|
153
153
|
## Cascade grammar
|
|
154
154
|
|
|
155
|
-
A cascade document starts with `class`, `provider`, or `on-api`. Root `on-api` declares a transport contract independent of model identity and provider name. Every selector adds a conjunct to the current rule. `on` scopes by deployment provider; `on-api` scopes by request adapter, including custom provider names. Axis directives may appear directly in any permitted scope, and nested selector blocks may appear alongside them.
|
|
155
|
+
A cascade document starts with `class`, `provider`, or `on-api`. Root `on-api` declares a transport contract independent of model identity and provider name. Every selector adds a conjunct to the current rule. `on` scopes by deployment provider; `on-api` scopes by request adapter, including custom provider names; `on-upstream` scopes by the actual upstream selected behind that deployment. An upstream never changes the deployment provider or imports that upstream's direct-host rules. Axis directives may appear directly in any permitted scope, and nested selector blocks may appear alongside them.
|
|
156
156
|
|
|
157
157
|
```kdl
|
|
158
158
|
class "gemini" {
|
|
@@ -182,14 +182,15 @@ provider "openrouter" {
|
|
|
182
182
|
| Selector | Form | Matching semantics |
|
|
183
183
|
| ---------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
184
184
|
| `class` | `class "id" { ... }` | Exact class ID. At document root it may contain `on`, `on-api`, `family`, `revision`, and `models`. Under `provider` it may contain `family`, `revision`, and `models`. |
|
|
185
|
-
| `provider` | `provider "id" { ... }` | Exact provider ID. It is root-only and may contain `class` and `models`.
|
|
185
|
+
| `provider` | `provider "id" { ... }` | Exact provider ID. It is root-only and may contain `class`, `on-api`, and `models`. |
|
|
186
186
|
| `on` | `on "provider-a" "provider-b" { ... }` | One or more provider IDs, combined as OR. It is allowed only under a root `class`, and may contain `family`, `revision`, and `models`. |
|
|
187
|
-
| `on-api` | `on-api "adapter-a" "adapter-b" { ... }` | One or more request adapter IDs, combined as OR. At document root it may contain `class` and `models`; under a root `class` it may contain `family`, `revision`, and `models`. |
|
|
187
|
+
| `on-api` | `on-api "adapter-a" "adapter-b" { ... }` | One or more request adapter IDs, combined as OR. At document root it may contain `class` and `models`; under a root `class` or `provider` it may contain `family`, `revision`, and `models`. |
|
|
188
188
|
| `family` | `family "id" { ... }` | Exact classified family ID. It may contain `revision` and `models`. A target with no family does not match. |
|
|
189
189
|
| `revision` | `revision ">=2.5 <4" { ... }` | A non-empty, whitespace-separated conjunction of comparisons. It may contain `models`. A target with no revision does not match. |
|
|
190
|
-
| `models` | `models "id" "vendor/*" { ... }` | One or more alternatives, combined as OR. It
|
|
190
|
+
| `models` | `models "id" "vendor/*" { ... }` | One or more alternatives, combined as OR. It may contain only `on-upstream`. `token="name"` matches an ASCII-case-insensitive token bounded by non-alphanumerics. |
|
|
191
|
+
| `on-upstream` | `on-upstream "a" "b" { ... }` | Exact selected upstream IDs, combined as OR. Allowed inside any selector scope once; preserves the containing scope's other permitted children. Absent upstream never matches. |
|
|
191
192
|
|
|
192
|
-
Class, provider/`on`, `on-api`, and family
|
|
193
|
+
Every selector scope may additionally contain `on-upstream`; it cannot replace an already constrained upstream. Class, provider/`on`, `on-api`, `on-upstream`, and family values are compared exactly and case-sensitively to the structured resolve target. Revision operators are `>=`, `>`, `<=`, `<`, and `=`; operands have one to three dot-separated unsigned 8-bit components, omitted components zero.
|
|
193
194
|
|
|
194
195
|
A `models` string without `*` is an exact, case-sensitive match against the provider-relative model identifier. A string containing `*` is an anchored, ASCII-case-insensitive wildcard match. Prefer taxonomy ranks; retain exact/glob lists only when they isolate the census member set exactly, and keep a `// residue:` comment explaining why ranks do not.
|
|
195
196
|
|
|
@@ -197,6 +198,8 @@ A `models` string without `*` is an exact, case-sensitive match against the prov
|
|
|
197
198
|
|
|
198
199
|
`buildDiscoveredModel(spec, providerType)` resolves the catalog `discovery-api` axis before materializing compatibility. It preserves the credential-bearing provider ID and records `providerType` as the backend used for provider selectors on subsequent rebuilds. Ordinary `buildModel` preserves its input API. This lets custom-named llama.cpp deployments reuse the same rules without model-specific discovery code.
|
|
199
200
|
|
|
201
|
+
`resolveModelPolicy(spec, { upstream })` resolves the selected route without mutating the model identity. Call it again when retry routing selects another upstream. Its typed `request` record carries request-shaping axes (reasoning history, disabled-effort semantics, Anthropic thinking mode, Responses options, and Google thinking dialect); shared transport fields remain in `compat`. Both records use the same per-axis cascade, precedence, ambiguity checks, and upstream-aware cache key. Request fields have the `request` applicability record in `axes.ts`, so they do not leak into shared transport compat objects. See [`providers/factory-droid.kdl`](providers/factory-droid.kdl) for the upstream-scoped consumer.
|
|
202
|
+
|
|
200
203
|
### Axis vocabulary and value shapes
|
|
201
204
|
|
|
202
205
|
The directive vocabulary is closed and lives in **`src/compat/axes.ts`** — one table mapping each kebab-case directive to its resolved camelCase field, namespace (`wire` / `thinking` / `catalog`), value shape, applicable compat records, and (for enums) accepted values. The compiler rejects unknown directives and out-of-vocabulary values against that table; consult it rather than a duplicated table here.
|
|
@@ -204,12 +207,16 @@ The directive vocabulary is closed and lives in **`src/compat/axes.ts`** — one
|
|
|
204
207
|
The three value shapes are:
|
|
205
208
|
|
|
206
209
|
- **Scalar**: exactly one KDL boolean, integer, float, or string argument and no children. `#null` is rejected.
|
|
207
|
-
- **Array**: one or more scalar arguments and no children; it resolves to a JSON array.
|
|
210
|
+
- **Array**: one or more scalar arguments and no children; it resolves to a JSON array. Axes marked `emptyArray` in `axes.ts` also accept a bare directive, which assigns an explicit empty list (`region-upstreams-eu` with no arguments: the region never serves the model).
|
|
208
211
|
- **Object**: no arguments and a child block, including an empty block. Child names are kebab-case: an axis-directive spelling compiles to its resolved axis key (`template-reasoning-effort` → `qwenTemplateReasoningEffort`), anything else converts mechanically (`input-threshold` → `inputThreshold`); camelCase names are a compile error. `extra-body` payloads (top-level or nested) are the exception — their child names are literal wire JSON keys copied verbatim (`enable_thinking`). Each child is either one scalar or another object; arrays are not representable inside an object payload.
|
|
209
212
|
|
|
210
213
|
A rule cannot assign the same resolved axis twice in one block.
|
|
211
214
|
One object axis carries a computed form: `long-context-cost` accepts either the absolute rates (`input-threshold` + `input`/`output`/`cache-read`/`cache-write`) or `input-threshold` + `multiplier` (with optional `input-threshold-inclusive`), which derives the tier from the row's live base price at build time so the rule tracks upstream list-price updates (xAI's SuperGrok 200K tier). Rows without a token price carry no tier.
|
|
212
215
|
|
|
216
|
+
`context-window-authoritative #true` preserves a host's supplied context window through runtime model selection instead of applying inferred expansion or reference-price-tier caps. Explicit user context overrides still apply afterward. It applies to rows materialized through `buildModel` (discovery and regenerated bundles). See [`providers/factory-droid.kdl`](providers/factory-droid.kdl).
|
|
217
|
+
|
|
218
|
+
The routed-subscription registry axes (`upstream-rotation`, `region-upstreams-global|us|eu`, `region-limits-eu`, `credit-rates`, `list-price-from`, `routing-family`, `policy-aliases`, `entitlement`, `default-reasoning-off`) describe a gateway whose proxy fans one model out to several upstreams. They are read through `src/compat/factory-droid.ts` by Factory Droid discovery and its request provider, not materialized by `buildModel`. A provider-wide `region-upstreams-*` rule is the upstream serving table and a model rule replaces it for that region. `list-price-from "<provider>" ["<id>"]` shows a bundled row's list price beside the subscription's own billing; unlike seed values it is resolved at runtime and degrades to the seed's zero cost when the row is gone. See [`providers/factory-droid.kdl`](providers/factory-droid.kdl), whose wire and billing pool per model are `api-routes` and `quota-tiers` rules in `runtime/behavior.kdl`.
|
|
219
|
+
|
|
213
220
|
### Time-based pricing
|
|
214
221
|
|
|
215
222
|
The catalog object axis `time-based-cost` materializes into `ModelCost.timeBased`. It uses **named child objects**, not KDL arrays or repeated anonymous windows. For example, inside a matching provider/model scope:
|
|
@@ -258,7 +265,7 @@ Rules resolve independently per axis. A matching rule is ranked by:
|
|
|
258
265
|
The tuple is compared lexicographically, greatest first:
|
|
259
266
|
|
|
260
267
|
- model exactness is `2` when any matching `models` selector is exact, `1` when the best matching selector is a glob or token, and `0` when the rule has no `models` selector;
|
|
261
|
-
- dimension count is the number of present dimensions among class, provider/`on`, API/`on-api`, family, revision, and models;
|
|
268
|
+
- dimension count is the number of present dimensions among class, provider/`on`, API/`on-api`, upstream/`on-upstream`, family, revision, and models;
|
|
262
269
|
- priority is the local block's `priority`, defaulting to `0`.
|
|
263
270
|
|
|
264
271
|
The highest-ranked matching assignment wins for that axis. Two distinct rules that tie on all three components and assign the same axis are an ambiguity error even if their values are equal. File and declaration order never resolve the tie; add an explicit priority only after confirming the overlap is intentional.
|
|
@@ -417,6 +424,7 @@ A `seed` _defines_ bundled rows for providers whose catalog cannot be discovered
|
|
|
417
424
|
| `always` | Every regeneration. Same-id upstream/discovery rows win dedup. |
|
|
418
425
|
| `fallback` | Only when the provider's authoritative catalog discovery did not succeed. |
|
|
419
426
|
| `empty` | Only when no other source produced a row for the provider. |
|
|
427
|
+
| `never` | Never; the provider's runtime model manager is the only consumer. |
|
|
420
428
|
|
|
421
429
|
`precedence="seed"` prepends the rows after the previous-snapshot merge and cross-provider reference fills, so the authored row wins dedup and same-id rows on other hosts never overwrite its name or capabilities (QwenCloud Token Plan, Meta). The default `upstream` precedence appends before the snapshot merge, so the current seed — not a stale snapshot copy — is the fallback row.
|
|
422
430
|
|
|
@@ -5,8 +5,8 @@ login-order "openai-codex" "anthropic" "zai" "zai-coding-plan" "kimi-code" "open
|
|
|
5
5
|
"cursor" "devin" "google-antigravity" "google-gemini-cli" "openai-codex-device" "xai" "xai-oauth" \
|
|
6
6
|
"gitlab-duo" "gitlab-duo-agent" "alibaba-coding-plan" "alibaba-token-plan" "aiand" "abliteration" "zhipu-coding-plan" \
|
|
7
7
|
"umans" "qwen-portal" "sakana" "minimax-code" "minimax-code-cn" "xiaomi" "xiaomi-token-plan-sgp" \
|
|
8
|
-
"xiaomi-token-plan-ams" "xiaomi-token-plan-cn" "firepass" "cline-pass" "commandcode" "charm-hyper" "deepseek" "stepfun" "muse-code" "meta" "moonshot" \
|
|
9
|
-
"cerebras" "baseten" "fireworks" "together" "nvidia" "novita" "deepinfra" "huggingface" "perplexity" \
|
|
8
|
+
"xiaomi-token-plan-ams" "xiaomi-token-plan-cn" "firepass" "cline-pass" "factory-droid" "commandcode" "charm-hyper" "deepseek" "stepfun" "muse-code" "meta" "moonshot" \
|
|
9
|
+
"cerebras" "baseten" "helmcode" "fireworks" "together" "nvidia" "novita" "deepinfra" "huggingface" "perplexity" \
|
|
10
10
|
"qianfan" "venice" "siliconflow" "siliconflow-cn" "synthetic" "nanogpt" "wafer-serverless" "coreweave" \
|
|
11
11
|
"vercel-ai-gateway" "cloudflare-ai-gateway" "litellm" "kilo" "zenmux" "opencode-zen" "opencode-go" \
|
|
12
12
|
"yolo-auto" "tavily" "kagi" "exa" "parallel" "typesafe" "ollama" "ollama-cloud" "lm-studio" "llama.cpp" "vllm" \
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
auth "factory-droid" {
|
|
2
|
+
name "Factory Droid"
|
|
3
|
+
org-scoped-identity #true
|
|
4
|
+
// WorkOS public client: the access token authorizes the Factory LLM proxy.
|
|
5
|
+
login "device-code" {
|
|
6
|
+
client-id "client_01HNM792M5G5G1A2THWPXKFMXB"
|
|
7
|
+
device url="https://api.workos.com/user_management/authorize/device" timeout-ms=15000 {
|
|
8
|
+
headers { Accept "application/json" }
|
|
9
|
+
}
|
|
10
|
+
token url="https://api.workos.com/user_management/authenticate" timeout-ms=15000 {
|
|
11
|
+
headers { Accept "application/json" }
|
|
12
|
+
}
|
|
13
|
+
credential {
|
|
14
|
+
expires "jwt" skew-ms=0 fallback-ms=86400000
|
|
15
|
+
email "user.email" claim="email"
|
|
16
|
+
account-id "user.id" claim="sub"
|
|
17
|
+
// WorkOS organization_id is internal; only this claim can be used as X-Factory-Org-Id.
|
|
18
|
+
org-id claim="external_org_id"
|
|
19
|
+
}
|
|
20
|
+
after-exchange hook="factory-droid-region"
|
|
21
|
+
}
|
|
22
|
+
refresh {
|
|
23
|
+
token url="https://api.workos.com/user_management/authenticate" timeout-ms=15000 {
|
|
24
|
+
headers { Accept "application/json" }
|
|
25
|
+
}
|
|
26
|
+
after-refresh hook="factory-droid-region"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
auth "helmcode" {
|
|
2
|
+
name "Helmcode"
|
|
3
|
+
login "api-key" {
|
|
4
|
+
auth-url "https://cloud.helmcode.com"
|
|
5
|
+
instructions "Copy your API key from the Helmcode dashboard"
|
|
6
|
+
prompt "Paste your Helmcode API key" placeholder="sk-..."
|
|
7
|
+
validate "models-endpoint" label="Helmcode" url="https://api.helmcode.com/v1/models"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -7,11 +7,11 @@ class "anthropic" {
|
|
|
7
7
|
thinking-prefix-binding #true
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
// On-demand compaction (compact-2026-09-04)
|
|
11
|
-
//
|
|
10
|
+
// On-demand compaction (compact-2026-09-04) works on the Claude API, Vertex,
|
|
11
|
+
// and Amazon Bedrock's `/anthropic` routes, not Bedrock Converse.
|
|
12
12
|
// Foundry / Claude Platform on AWS are first-party Anthropic routes whose
|
|
13
13
|
// effective URLs are checked at request time.
|
|
14
|
-
on "anthropic" "google-vertex" {
|
|
14
|
+
on "anthropic" "google-vertex" "amazon-bedrock" "bedrock-mantle" {
|
|
15
15
|
family "fable" {
|
|
16
16
|
revision ">=5" {
|
|
17
17
|
supports-server-compaction #true
|
|
@@ -68,6 +68,10 @@ class "anthropic" {
|
|
|
68
68
|
family "sonnet" {
|
|
69
69
|
revision ">=5.5 <6" {
|
|
70
70
|
supports-forced-tool-choice #false
|
|
71
|
+
// `thinking: {type: "disabled"}` is a 400; `between_tools` is the
|
|
72
|
+
// lowest thinking setting.
|
|
73
|
+
// https://platform.claude.com/docs/en/models/sonnet-5-5/migration-guide#turn-off-up-front-thinking
|
|
74
|
+
supports-between-tools-thinking #true
|
|
71
75
|
// Signed thinking is bound to the exact preceding conversation.
|
|
72
76
|
thinking-prefix-binding #true
|
|
73
77
|
}
|
|
@@ -104,7 +108,6 @@ class "anthropic" {
|
|
|
104
108
|
supports-mid-conversation-tool-changes #true
|
|
105
109
|
supports-turn-scoped-system #true
|
|
106
110
|
supports-per-message-effort #true
|
|
107
|
-
supports-thinking-binding-controls #true
|
|
108
111
|
}
|
|
109
112
|
}
|
|
110
113
|
family "opus" {
|
|
@@ -118,6 +121,15 @@ class "anthropic" {
|
|
|
118
121
|
}
|
|
119
122
|
}
|
|
120
123
|
}
|
|
124
|
+
// Vertex rejects `thinking.block_binding` on Sonnet 5.5 with 400
|
|
125
|
+
// `thinking.adaptive.block_binding: Extra inputs are not permitted`.
|
|
126
|
+
on "anthropic" "cloudflare-ai-gateway" {
|
|
127
|
+
family "sonnet" {
|
|
128
|
+
revision ">=5.5" {
|
|
129
|
+
supports-thinking-binding-controls #true
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
121
133
|
on "aimlapi" "gitlab-duo" "kilo" "nanogpt" "venice" {
|
|
122
134
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
123
135
|
}
|
|
@@ -8,6 +8,11 @@ provider "cursor" {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
thinking-mode "effort"
|
|
11
|
+
// Cursor's default route selects a differently priced backing model per request.
|
|
12
|
+
models "default" {
|
|
13
|
+
pricing-status "variable"
|
|
14
|
+
}
|
|
15
|
+
|
|
11
16
|
class "anthropic" {
|
|
12
17
|
family "fable" {
|
|
13
18
|
requires-cursor-tool-schema-projection #true
|
|
@@ -211,9 +216,10 @@ provider "cursor" {
|
|
|
211
216
|
}
|
|
212
217
|
}
|
|
213
218
|
// Claude Opus 5 Fast: the docs name the fast wire ids but publish no
|
|
214
|
-
// fast
|
|
219
|
+
// fast rate. Discovery applies AvailableModels' declared fast multiplier
|
|
220
|
+
// (2x); the base card only seeds rows discovery left unpriced.
|
|
215
221
|
models "claude-opus-5-high-fast" "claude-opus-5-low-fast" "claude-opus-5-medium-fast" "claude-opus-5-thinking-max-fast" "claude-opus-5-thinking-xhigh-fast" {
|
|
216
|
-
cost-
|
|
222
|
+
cost-fallback {
|
|
217
223
|
input 5.0
|
|
218
224
|
output 25.0
|
|
219
225
|
cache-read 0.5
|
|
@@ -231,9 +237,10 @@ provider "cursor" {
|
|
|
231
237
|
}
|
|
232
238
|
}
|
|
233
239
|
// Claude Opus 5.5 Fast: the docs name the fast wire id but publish no
|
|
234
|
-
// fast
|
|
240
|
+
// fast rate. Discovery prices it from AvailableModels' declared fast
|
|
241
|
+
// multiplier; the base card only seeds rows discovery left unpriced.
|
|
235
242
|
models "claude-opus-5-5-fast" {
|
|
236
|
-
cost-
|
|
243
|
+
cost-fallback {
|
|
237
244
|
input 4.0
|
|
238
245
|
output 20.0
|
|
239
246
|
cache-read 0.2
|
|
@@ -267,8 +274,9 @@ provider "cursor" {
|
|
|
267
274
|
cache-write 0
|
|
268
275
|
}
|
|
269
276
|
}
|
|
270
|
-
// Grok 4.5: $2/$6, cache read $0.50, no write fee.
|
|
271
|
-
|
|
277
|
+
// Grok 4.5: $2/$6, cache read $0.50, no write fee. Legacy id plus the
|
|
278
|
+
// per-effort wire slugs AvailableModels serves.
|
|
279
|
+
models "cursor-grok-4.5" "cursor-grok-4.5-low" "cursor-grok-4.5-medium" "cursor-grok-4.5-high" {
|
|
272
280
|
cost-patch {
|
|
273
281
|
input 2.0
|
|
274
282
|
output 6.0
|
|
@@ -277,7 +285,7 @@ provider "cursor" {
|
|
|
277
285
|
}
|
|
278
286
|
}
|
|
279
287
|
// Grok 4.5 Fast: $4/$18, cache read $1.00. Output is 3x base per docs.
|
|
280
|
-
models "cursor-grok-4.5-fast" {
|
|
288
|
+
models "cursor-grok-4.5-fast" "cursor-grok-4.5-low-fast" "cursor-grok-4.5-medium-fast" "cursor-grok-4.5-high-fast" {
|
|
281
289
|
cost-patch {
|
|
282
290
|
input 4.0
|
|
283
291
|
output 18.0
|
|
@@ -285,8 +293,9 @@ provider "cursor" {
|
|
|
285
293
|
cache-write 0
|
|
286
294
|
}
|
|
287
295
|
}
|
|
288
|
-
// Grok 4.6: $2/$6, cache read $0.50, no write fee.
|
|
289
|
-
|
|
296
|
+
// Grok 4.6: $2/$6, cache read $0.50, no write fee. Legacy id plus the
|
|
297
|
+
// per-effort wire slugs AvailableModels serves.
|
|
298
|
+
models "cursor-grok-4.6" "cursor-grok-4.6-low" "cursor-grok-4.6-medium" "cursor-grok-4.6-high" "cursor-grok-4.6-xhigh" {
|
|
290
299
|
cost-patch {
|
|
291
300
|
input 2.0
|
|
292
301
|
output 6.0
|
|
@@ -295,7 +304,8 @@ provider "cursor" {
|
|
|
295
304
|
}
|
|
296
305
|
}
|
|
297
306
|
// Grok 4.6 Fast: $4/$12, cache read $1.00.
|
|
298
|
-
models "cursor-grok-4.6-fast"
|
|
307
|
+
models "cursor-grok-4.6-fast" "cursor-grok-4.6-low-fast" "cursor-grok-4.6-medium-fast" "cursor-grok-4.6-high-fast" \
|
|
308
|
+
"cursor-grok-4.6-xhigh-fast" {
|
|
299
309
|
cost-patch {
|
|
300
310
|
input 4.0
|
|
301
311
|
output 12.0
|
|
@@ -448,10 +458,10 @@ provider "cursor" {
|
|
|
448
458
|
cache-write 0
|
|
449
459
|
}
|
|
450
460
|
}
|
|
451
|
-
// GPT-5.2 Fast: the docs publish no fast
|
|
452
|
-
// the base
|
|
461
|
+
// GPT-5.2 Fast: the docs publish no fast rate. Discovery applies the
|
|
462
|
+
// declared fast multiplier; the base card only seeds unpriced rows.
|
|
453
463
|
models "gpt-5.2-fast" "gpt-5.2-high-fast" "gpt-5.2-low-fast" "gpt-5.2-xhigh-fast" {
|
|
454
|
-
cost-
|
|
464
|
+
cost-fallback {
|
|
455
465
|
input 1.75
|
|
456
466
|
output 14.0
|
|
457
467
|
cache-read 0.175
|
|
@@ -486,9 +496,10 @@ provider "cursor" {
|
|
|
486
496
|
cache-write 0
|
|
487
497
|
}
|
|
488
498
|
}
|
|
489
|
-
// GPT-5.3 Codex Fast: no fast
|
|
499
|
+
// GPT-5.3 Codex Fast: no fast rate published; discovery applies the
|
|
500
|
+
// declared multiplier, and the base card only seeds unpriced rows.
|
|
490
501
|
models "gpt-5.3-codex-fast" "gpt-5.3-codex-high-fast" "gpt-5.3-codex-low-fast" "gpt-5.3-codex-xhigh-fast" {
|
|
491
|
-
cost-
|
|
502
|
+
cost-fallback {
|
|
492
503
|
input 1.75
|
|
493
504
|
output 14.0
|
|
494
505
|
cache-read 0.175
|
|
@@ -543,9 +554,10 @@ provider "cursor" {
|
|
|
543
554
|
cache-write 0
|
|
544
555
|
}
|
|
545
556
|
}
|
|
546
|
-
// GPT-5.5 Fast:
|
|
557
|
+
// GPT-5.5 Fast: fast rates are unpublished; discovery applies the declared
|
|
558
|
+
// multiplier, and the base card only seeds unpriced rows.
|
|
547
559
|
models "gpt-5.5-fast" {
|
|
548
|
-
cost-
|
|
560
|
+
cost-fallback {
|
|
549
561
|
input 5.0
|
|
550
562
|
output 30.0
|
|
551
563
|
cache-read 0.5
|