@oh-my-pi/pi-catalog 18.1.14 → 18.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [18.1.16] - 2026-09-09
6
+
7
+ - Updated Fire Pass (`firepass`) login validation probe to `accounts/fireworks/routers/glm-5p2-fast` and bundled `glm-5.2-fast` and `kimi-k3-fast` models in place of decommissioned `kimi-k2.6-turbo` ([#10859](https://github.com/can1357/oh-my-pi/pull/10859) by [@olegpulatov](https://github.com/olegpulatov)).
8
+
5
9
  ## [18.1.14] - 2026-09-07
6
10
 
7
11
  ### Fixed
@@ -180,6 +180,8 @@ export interface CompiledRule {
180
180
  source: string;
181
181
  class?: string;
182
182
  providers?: string[];
183
+ /** Request adapter identifiers matched by an `on-api` selector. */
184
+ apis?: string[];
183
185
  family?: string;
184
186
  revision?: CompiledRevisionTerm[];
185
187
  models?: CompiledSelector[];
@@ -549,6 +551,8 @@ export interface ModelIdentity {
549
551
  export interface ResolveTarget {
550
552
  /** Deployment provider hosting the model. */
551
553
  provider: string;
554
+ /** Request adapter used to serialize the model. */
555
+ api: string;
552
556
  /** Centrally classified vendor lineage. */
553
557
  class: string;
554
558
  /** Classified product family within the class, when known. */
@@ -1,10 +1,10 @@
1
1
  export declare function toFireworksPublicModelId(modelId: string): string;
2
2
  export declare function toFireworksWireModelId(modelId: string): string;
3
3
  /**
4
- * Fire Pass exposes its Kimi K2.6 Turbo subscription through a dedicated router
5
- * endpoint at `accounts/fireworks/routers/<id>` rather than the `models/` namespace.
6
- * We keep a friendly public id (e.g. `kimi-k2.6-turbo`) in the catalog and translate
7
- * to the wire form (`accounts/fireworks/routers/kimi-k2p6-turbo`) at request time.
4
+ * Fire Pass exposes subscription models through dedicated router endpoints
5
+ * at `accounts/fireworks/routers/<id>` rather than the `models/` namespace.
6
+ * We keep a friendly public id (e.g. `glm-5.2-fast`, `kimi-k3-fast`) in the catalog
7
+ * and translate to the wire form (`accounts/fireworks/routers/glm-5p2-fast`) at request time.
8
8
  */
9
9
  export declare function toFirepassPublicModelId(modelId: string): string;
10
10
  export declare function toFirepassWireModelId(modelId: string): string;
@@ -147,7 +147,7 @@ export declare const CATALOG_PROVIDERS: readonly [{
147
147
  };
148
148
  }, {
149
149
  readonly id: "firepass";
150
- readonly defaultModel: "kimi-k2.6-turbo";
150
+ readonly defaultModel: "glm-5.2-fast";
151
151
  readonly envVars: readonly ["FIREPASS_API_KEY"];
152
152
  readonly createModelManagerOptions: (config: ModelManagerConfig) => import("../index.js").ModelManagerOptions<"openai-completions", unknown>;
153
153
  }, {
@@ -332,14 +332,15 @@ export interface FireworksModelManagerConfig {
332
332
  fetch?: FetchImpl;
333
333
  }
334
334
  export declare function fireworksModelManagerOptions(config?: FireworksModelManagerConfig): ModelManagerOptions<"openai-completions">;
335
+ export declare const FIREPASS_STATIC_MODELS: readonly ModelSpec<"openai-completions">[];
335
336
  export interface FirepassModelManagerConfig {
336
337
  apiKey?: string;
337
338
  baseUrl?: string;
338
339
  fetch?: FetchImpl;
339
340
  }
340
341
  /**
341
- * Fire Pass is a Fireworks subscription product that exposes a single router
342
- * model (Kimi K2.6 Turbo) under `accounts/fireworks/routers/kimi-k2p6-turbo`.
342
+ * Fire Pass is a Fireworks subscription product that exposes router models
343
+ * (GLM 5.2 Fast, Kimi K3 Fast) under `accounts/fireworks/routers/<id>`.
343
344
  * The dedicated `fpk_…` keys do not authorize `/v1/models`, so this manager
344
345
  * never performs dynamic discovery — the bundled catalog entry is canonical.
345
346
  * See https://docs.fireworks.ai/firepass.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/pi-catalog",
4
- "version": "18.1.14",
4
+ "version": "18.1.16",
5
5
  "description": "Model catalog for omp: bundled model database, provider discovery descriptors, model identity, classification, and equivalence",
6
6
  "homepage": "https://omp.sh",
7
7
  "author": "Stencil Labs, Inc.",
@@ -35,12 +35,12 @@
35
35
  "gen:proto": "bun scripts/generate-protocols.ts"
36
36
  },
37
37
  "dependencies": {
38
- "@oh-my-pi/omptype": "18.1.14",
39
- "@oh-my-pi/pi-utils": "18.1.14"
38
+ "@oh-my-pi/omptype": "18.1.16",
39
+ "@oh-my-pi/pi-utils": "18.1.16"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@bgotink/kdl": "0.4.0",
43
- "@oh-my-pi/pi-ai": "18.1.14",
43
+ "@oh-my-pi/pi-ai": "18.1.16",
44
44
  "@types/bun": "^1.3.14"
45
45
  },
46
46
  "engines": {
@@ -3,7 +3,7 @@
3
3
  * for one structured model target from the compiled rule tree.
4
4
  *
5
5
  * Faithful port of the o2 reference resolver (`cascade.rs`): rules are
6
- * conjunctions over `(class, provider, family, revision, models)`; per axis
6
+ * conjunctions over `(class, provider, api, family, revision, models)`; per axis
7
7
  * the matching rule with the greatest `(model-selector exactness,
8
8
  * constrained-dimension count, priority)` tuple wins, and an equal-tuple
9
9
  * same-axis contest throws {@link AmbiguousOverlapError}. Declaration and
@@ -74,6 +74,7 @@ function buildRuleIndex(cascade: CompiledCascade): IndexedRule[] {
74
74
  const dimensions =
75
75
  Number(compiled.class !== undefined) +
76
76
  Number(compiled.providers !== undefined) +
77
+ Number(compiled.apis !== undefined) +
77
78
  Number(compiled.family !== undefined) +
78
79
  Number(compiled.revision !== undefined) +
79
80
  Number(compiled.models !== undefined);
@@ -117,6 +118,7 @@ function rankRule(
117
118
  const { compiled } = rule;
118
119
  if (compiled.class !== undefined && compiled.class !== target.class) return undefined;
119
120
  if (compiled.providers !== undefined && !compiled.providers.includes(target.provider)) return undefined;
121
+ if (compiled.apis !== undefined && !compiled.apis.includes(target.api)) return undefined;
120
122
  if (compiled.family !== undefined && compiled.family !== target.family) return undefined;
121
123
  if (rule.revision !== undefined && (!revision || !revisionSatisfies(revision, rule.revision))) return undefined;
122
124
  let exactness = 0;
@@ -27,6 +27,7 @@ export function resolveDelegationBias(model: Model): DelegationBias {
27
27
  const { identity } = model;
28
28
  const bias = resolveCascade({
29
29
  provider: model.provider,
30
+ api: model.api,
30
31
  class: identity.class,
31
32
  model: model.id,
32
33
  reasoning: Boolean(model.reasoning),
@@ -1173,6 +1173,7 @@ function fillExplicitThinking<TApi extends Api>(
1173
1173
  function buildResolveTarget<TApi extends Api>(spec: ModelSpec<TApi>, identity: ModelIdentity): ResolveTarget {
1174
1174
  const target: ResolveTarget = {
1175
1175
  provider: spec.provider,
1176
+ api: spec.api,
1176
1177
  class: identity.class,
1177
1178
  model: spec.id,
1178
1179
  reasoning: Boolean(spec.reasoning),
@@ -5,7 +5,7 @@ This tree is the checked-in source of model identity and compatibility policy. A
5
5
  There are three ownership strata:
6
6
 
7
7
  - `taxonomy/*.kdl` defines identity: class membership, product families, revision extraction, reviewed exact corrections, and suffix collapse.
8
- - `classes/*.kdl` defines model-lineage truths: behavior inherent to a model line, optionally scoped to the providers where the census established it.
8
+ - `classes/*.kdl` defines model-lineage truths: behavior inherent to a model line, optionally scoped to the providers or request adapters where the census established it.
9
9
  - `providers/*.kdl` defines deployment contracts: behavior imposed by a host, plus documented per-model residue that taxonomy cannot express exactly.
10
10
  - `runtime/behavior.kdl` defines heuristics used before or outside exact model lookup: responses routing, API routes, quota tiers, plan requirements, model limits, roster exclusions, hosted defaults, pricing peers.
11
11
  - `auth/<provider>.kdl` defines the provider's auth contract: display name, env-var fallback, credential storage/format, and the declarative login / refresh flow that `@oh-my-pi/pi-ai`'s registry engines interpret (see [Auth grammar](#auth-grammar)).
@@ -151,10 +151,15 @@ discovery {
151
151
 
152
152
  ## Cascade grammar
153
153
 
154
- A cascade document starts with `class` or `provider`. Every selector adds a conjunct to the current rule. Axis directives may appear directly in any permitted scope, and nested selector blocks may appear alongside them.
154
+ A cascade document starts with `class` or `provider`. 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
155
 
156
156
  ```kdl
157
157
  class "gemini" {
158
+ on-api "google-generative-ai" {
159
+ revision ">=3" {
160
+ requires-skip-thought-signature #true
161
+ }
162
+ }
158
163
  on "google" "google-vertex" "openrouter" {
159
164
  family "flash" {
160
165
  revision ">=2.5 <3.8" {
@@ -175,14 +180,15 @@ provider "openrouter" {
175
180
 
176
181
  | Selector | Form | Matching semantics |
177
182
  | --- | --- | --- |
178
- | `class` | `class "id" { ... }` | Exact class ID. At document root it may contain `on`, `family`, `revision`, and `models`. Under `provider` it may contain `family`, `revision`, and `models`. |
183
+ | `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`. |
179
184
  | `provider` | `provider "id" { ... }` | Exact provider ID. It is root-only and may contain `class` and `models`. |
180
185
  | `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`. |
186
+ | `on-api` | `on-api "adapter-a" "adapter-b" { ... }` | One or more request adapter IDs, combined as OR. It is allowed only under a root `class`, and may contain `family`, `revision`, and `models`. |
181
187
  | `family` | `family "id" { ... }` | Exact classified family ID. It may contain `revision` and `models`. A target with no family does not match. |
182
188
  | `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. |
183
189
  | `models` | `models "id" "vendor/*" { ... }` | One or more alternatives, combined as OR. It cannot contain another selector. `token="name"` matches an ASCII-case-insensitive token bounded by non-alphanumerics. |
184
190
 
185
- Class, provider/`on`, and family selector 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.
191
+ Class, provider/`on`, `on-api`, and family selector 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.
186
192
 
187
193
  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.
188
194
 
@@ -212,7 +218,7 @@ Rules resolve independently per axis. A matching rule is ranked by:
212
218
  The tuple is compared lexicographically, greatest first:
213
219
 
214
220
  - 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;
215
- - dimension count is the number of present dimensions among class, provider/`on`, family, revision, and models;
221
+ - dimension count is the number of present dimensions among class, provider/`on`, API/`on-api`, family, revision, and models;
216
222
  - priority is the local block's `priority`, defaulting to `0`.
217
223
 
218
224
  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.
@@ -1,14 +1,13 @@
1
1
  auth "firepass" {
2
- name "Fire Pass (Fireworks Kimi K2.6 Turbo subscription)"
2
+ name "Fire Pass (Fireworks subscription)"
3
3
  login "api-key" {
4
4
  // Fire Pass is a Fireworks subscription product whose dedicated `fpk_…` API
5
- // keys are scoped to the `accounts/fireworks/routers/kimi-k2p6-turbo` router
6
- // (Kimi K2.6 Turbo). The key does NOT authorize `/v1/models`, so validation
7
- // pings the chat completions endpoint with the router id directly.
5
+ // keys are scoped to router endpoints. The key does NOT authorize `/v1/models`,
6
+ // so validation pings the chat completions endpoint with the router id directly.
8
7
  // See https://docs.fireworks.ai/firepass.
9
8
  auth-url "https://app.fireworks.ai/settings/users/api-keys"
10
9
  instructions "Create a dedicated Fire Pass API key in the Fireworks dashboard"
11
10
  prompt "Paste your Fire Pass API key" placeholder="fpk_..."
12
- validate "chat-completions" label="Fire Pass" base-url="https://api.fireworks.ai/inference/v1" model="accounts/fireworks/routers/kimi-k2p6-turbo"
11
+ validate "chat-completions" label="Fire Pass" base-url="https://api.fireworks.ai/inference/v1" model="accounts/fireworks/routers/glm-5p2-fast"
13
12
  }
14
13
  }
@@ -88,9 +88,11 @@ class "gemini" {
88
88
  // Replaces the Gemini 3+ mandatory-reasoning fallback.
89
89
  thinking-requires-effort #true
90
90
  }
91
- // Public Gemini requires the bypass sentinel on every unsigned call. The
92
- // Cloud Code Assist first-call variant is a host contract in providers/.
93
- on "google" "opencode-zen" {
91
+ // Public Gemini requires the bypass sentinel on every unsigned call and
92
+ // supports function-part ids. Scope by adapter so custom providers using
93
+ // the same wire protocol inherit both contracts. The Cloud Code Assist
94
+ // first-call variant is a host contract in providers/.
95
+ on-api "google-generative-ai" {
94
96
  revision ">=3" {
95
97
  requires-skip-thought-signature #true
96
98
  supports-function-part-id #true
@@ -7,9 +7,13 @@ provider "firepass" {
7
7
  }
8
8
  // Replaces the Fire Pass wire-model-id dispatch baseline.
9
9
  wire-model-id-mode "firepass"
10
- // residue: taxonomy ranks and exact globs do not isolate these models.
11
- models "kimi-k2.6-turbo" {
12
- thinking-efforts "low" "medium" "high" "xhigh" "max"
10
+ class "glm" priority=1 {
13
11
  thinking-mode "effort"
12
+ thinking-efforts "minimal" "low" "medium" "high" "max"
13
+ }
14
+
15
+ class "kimi" priority=1 {
16
+ thinking-mode "effort"
17
+ thinking-efforts "low" "high" "max"
14
18
  }
15
19
  }
@@ -4822,11 +4822,10 @@
4822
4822
  }
4823
4823
  },
4824
4824
  {
4825
- "source": "classes/gemini.kdl:94",
4825
+ "source": "classes/gemini.kdl:96",
4826
4826
  "class": "gemini",
4827
- "providers": [
4828
- "google",
4829
- "opencode-zen"
4827
+ "apis": [
4828
+ "google-generative-ai"
4830
4829
  ],
4831
4830
  "revision": [
4832
4831
  {
@@ -4840,7 +4839,7 @@
4840
4839
  }
4841
4840
  },
4842
4841
  {
4843
- "source": "classes/gemini.kdl:100",
4842
+ "source": "classes/gemini.kdl:102",
4844
4843
  "class": "gemini",
4845
4844
  "providers": [
4846
4845
  "google-antigravity",
@@ -7997,25 +7996,37 @@
7997
7996
  }
7998
7997
  },
7999
7998
  {
8000
- "source": "providers/firepass.kdl:11",
7999
+ "source": "providers/firepass.kdl:10",
8000
+ "class": "glm",
8001
8001
  "providers": [
8002
8002
  "firepass"
8003
8003
  ],
8004
- "models": [
8005
- {
8006
- "kind": "exact",
8007
- "value": "kimi-k2.6-turbo"
8008
- }
8009
- ],
8004
+ "priority": 1,
8010
8005
  "thinking": {
8006
+ "mode": "effort",
8011
8007
  "efforts": [
8008
+ "minimal",
8012
8009
  "low",
8013
8010
  "medium",
8014
8011
  "high",
8015
- "xhigh",
8016
8012
  "max"
8017
- ],
8018
- "mode": "effort"
8013
+ ]
8014
+ }
8015
+ },
8016
+ {
8017
+ "source": "providers/firepass.kdl:15",
8018
+ "class": "kimi",
8019
+ "providers": [
8020
+ "firepass"
8021
+ ],
8022
+ "priority": 1,
8023
+ "thinking": {
8024
+ "mode": "effort",
8025
+ "efforts": [
8026
+ "low",
8027
+ "high",
8028
+ "max"
8029
+ ]
8019
8030
  }
8020
8031
  },
8021
8032
  {
@@ -16406,7 +16417,7 @@
16406
16417
  {
16407
16418
  "id": "firepass",
16408
16419
  "apiKeyFormat": "bearer",
16409
- "name": "Fire Pass (Fireworks Kimi K2.6 Turbo subscription)",
16420
+ "name": "Fire Pass (Fireworks subscription)",
16410
16421
  "login": {
16411
16422
  "kind": "api-key",
16412
16423
  "authUrl": "https://app.fireworks.ai/settings/users/api-keys",
@@ -16417,7 +16428,7 @@
16417
16428
  "kind": "chat-completions",
16418
16429
  "label": "Fire Pass",
16419
16430
  "baseUrl": "https://api.fireworks.ai/inference/v1",
16420
- "model": "accounts/fireworks/routers/kimi-k2p6-turbo"
16431
+ "model": "accounts/fireworks/routers/glm-5p2-fast"
16421
16432
  }
16422
16433
  }
16423
16434
  },
@@ -198,6 +198,8 @@ export interface CompiledRule {
198
198
  source: string;
199
199
  class?: string;
200
200
  providers?: string[];
201
+ /** Request adapter identifiers matched by an `on-api` selector. */
202
+ apis?: string[];
201
203
  family?: string;
202
204
  revision?: CompiledRevisionTerm[];
203
205
  models?: CompiledSelector[];
@@ -568,6 +570,8 @@ export interface ModelIdentity {
568
570
  export interface ResolveTarget {
569
571
  /** Deployment provider hosting the model. */
570
572
  provider: string;
573
+ /** Request adapter used to serialize the model. */
574
+ api: string;
571
575
  /** Centrally classified vendor lineage. */
572
576
  class: string;
573
577
  /** Classified product family within the class, when known. */
@@ -14,10 +14,10 @@ export function toFireworksWireModelId(modelId: string): string {
14
14
  }
15
15
 
16
16
  /**
17
- * Fire Pass exposes its Kimi K2.6 Turbo subscription through a dedicated router
18
- * endpoint at `accounts/fireworks/routers/<id>` rather than the `models/` namespace.
19
- * We keep a friendly public id (e.g. `kimi-k2.6-turbo`) in the catalog and translate
20
- * to the wire form (`accounts/fireworks/routers/kimi-k2p6-turbo`) at request time.
17
+ * Fire Pass exposes subscription models through dedicated router endpoints
18
+ * at `accounts/fireworks/routers/<id>` rather than the `models/` namespace.
19
+ * We keep a friendly public id (e.g. `glm-5.2-fast`, `kimi-k3-fast`) in the catalog
20
+ * and translate to the wire form (`accounts/fireworks/routers/glm-5p2-fast`) at request time.
21
21
  */
22
22
  export function toFirepassPublicModelId(modelId: string): string {
23
23
  const stripped = modelId.startsWith(FIREPASS_WIRE_PREFIX) ? modelId.slice(FIREPASS_WIRE_PREFIX.length) : modelId;
package/src/models.json CHANGED
@@ -70726,41 +70726,138 @@
70726
70726
  }
70727
70727
  },
70728
70728
  "firepass": {
70729
- "kimi-k2.6-turbo": {
70730
- "id": "kimi-k2.6-turbo",
70731
- "name": "Kimi K2.6 Turbo (Fire Pass)",
70729
+ "glm-5.2-fast": {
70730
+ "id": "glm-5.2-fast",
70731
+ "name": "GLM 5.2 Fast (Fire Pass)",
70732
70732
  "api": "openai-completions",
70733
70733
  "provider": "firepass",
70734
70734
  "baseUrl": "https://api.fireworks.ai/inference/v1",
70735
70735
  "reasoning": true,
70736
70736
  "input": [
70737
- "text",
70738
- "image"
70737
+ "text"
70739
70738
  ],
70740
70739
  "cost": {
70741
- "input": 0,
70742
- "output": 0,
70743
- "cacheRead": 0,
70740
+ "input": 2.1,
70741
+ "output": 6.6,
70742
+ "cacheRead": 0.21,
70744
70743
  "cacheWrite": 0
70745
70744
  },
70746
- "contextWindow": 262144,
70747
- "maxTokens": 32768,
70745
+ "contextWindow": 1048576,
70746
+ "maxTokens": 131072,
70747
+ "identity": {
70748
+ "class": "glm",
70749
+ "revision": "5.2.0"
70750
+ },
70751
+ "requiresGlyphTokenization": false,
70752
+ "tokenizer": "glm5",
70748
70753
  "thinking": {
70749
70754
  "mode": "effort",
70750
70755
  "efforts": [
70756
+ "minimal",
70751
70757
  "low",
70752
70758
  "medium",
70753
70759
  "high",
70754
- "xhigh",
70755
70760
  "max"
70756
- ]
70761
+ ],
70762
+ "effortMap": {
70763
+ "minimal": "none"
70764
+ }
70757
70765
  },
70758
- "tokenizer": "kimi-k2",
70759
- "requiresGlyphTokenization": false,
70766
+ "supportsComputerUse": false,
70767
+ "compat": {
70768
+ "supportsStore": false,
70769
+ "supportsDeveloperRole": false,
70770
+ "supportsMultipleSystemMessages": true,
70771
+ "supportsReasoningEffort": true,
70772
+ "supportsReasoningParams": true,
70773
+ "supportsSamplingParams": true,
70774
+ "supportsPenaltyAndStopParams": true,
70775
+ "reasoningEffortMap": {},
70776
+ "supportsUsageInStreaming": true,
70777
+ "alwaysSendMaxTokens": false,
70778
+ "disableReasoningOnForcedToolChoice": false,
70779
+ "disableReasoningOnToolChoice": false,
70780
+ "supportsToolChoice": true,
70781
+ "supportsForcedToolChoice": true,
70782
+ "supportsNamedToolChoice": true,
70783
+ "maxTokensField": "max_tokens",
70784
+ "requiresToolResultName": false,
70785
+ "requiresAssistantAfterToolResult": false,
70786
+ "requiresThinkingAsText": false,
70787
+ "requiresMistralToolIds": false,
70788
+ "thinkingFormat": "openai",
70789
+ "reasoningDisableMode": "lowest-effort",
70790
+ "omitReasoningEffort": false,
70791
+ "includeEncryptedReasoning": true,
70792
+ "filterReasoningHistory": false,
70793
+ "reasoningContentField": "reasoning_content",
70794
+ "requiresReasoningContentForToolCalls": false,
70795
+ "requiresReasoningContentForAllAssistantTurns": false,
70796
+ "allowsSyntheticReasoningContentForToolCalls": true,
70797
+ "replayReasoningContent": false,
70798
+ "qwenPreserveThinking": false,
70799
+ "qwenTemplateReasoningEffort": false,
70800
+ "requiresAssistantContentForToolCalls": false,
70801
+ "supportsPromptCacheBreakpoints": false,
70802
+ "isOpenRouterHost": false,
70803
+ "wireModelIdMode": "firepass",
70804
+ "isVercelGatewayHost": false,
70805
+ "supportsStrictMode": false,
70806
+ "toolStrictMode": "mixed",
70807
+ "stripDeepseekSpecialTokens": false,
70808
+ "streamMarkupHealingPattern": "thinking",
70809
+ "reasoningDeltasMayBeCumulative": false,
70810
+ "emptyLengthFinishIsContextError": false,
70811
+ "usesOpenAIToolCallIdLimit": false,
70812
+ "dropThinkingWhenReasoningEffort": false,
70813
+ "nativeKimiK3Reasoning": false,
70814
+ "zaiReasoningEffortDialect": false,
70815
+ "clampOutputToModelMax": false,
70816
+ "stripImageInput": false,
70817
+ "rejectRootObjectUnion": false,
70818
+ "retryWithoutStrictOnGrammarError": false,
70819
+ "supportsPromptCacheKey": false
70820
+ }
70821
+ },
70822
+ "kimi-k3-fast": {
70823
+ "id": "kimi-k3-fast",
70824
+ "name": "Kimi K3 Fast (Fire Pass)",
70825
+ "api": "openai-completions",
70826
+ "provider": "firepass",
70827
+ "baseUrl": "https://api.fireworks.ai/inference/v1",
70828
+ "reasoning": true,
70829
+ "input": [
70830
+ "text",
70831
+ "image"
70832
+ ],
70833
+ "cost": {
70834
+ "input": 4.5,
70835
+ "output": 22.5,
70836
+ "cacheRead": 0.45,
70837
+ "cacheWrite": 0
70838
+ },
70839
+ "contextWindow": 1048576,
70840
+ "maxTokens": 131072,
70760
70841
  "identity": {
70761
70842
  "class": "kimi",
70762
- "family": "k2.6"
70843
+ "family": "k3"
70763
70844
  },
70845
+ "requiresGlyphTokenization": false,
70846
+ "tokenizer": "kimi-k2",
70847
+ "thinking": {
70848
+ "mode": "effort",
70849
+ "efforts": [
70850
+ "low",
70851
+ "high",
70852
+ "max"
70853
+ ],
70854
+ "defaultLevel": "max",
70855
+ "effortMap": {
70856
+ "max": "max"
70857
+ },
70858
+ "requiresEffort": true
70859
+ },
70860
+ "supportsComputerUse": false,
70764
70861
  "compat": {
70765
70862
  "supportsStore": false,
70766
70863
  "supportsDeveloperRole": false,
@@ -70769,7 +70866,12 @@
70769
70866
  "supportsReasoningParams": true,
70770
70867
  "supportsSamplingParams": true,
70771
70868
  "supportsPenaltyAndStopParams": true,
70772
- "reasoningEffortMap": {},
70869
+ "reasoningEffortMap": {
70870
+ "minimal": "low",
70871
+ "medium": "high",
70872
+ "xhigh": "max",
70873
+ "max": "max"
70874
+ },
70773
70875
  "supportsUsageInStreaming": true,
70774
70876
  "alwaysSendMaxTokens": true,
70775
70877
  "disableReasoningOnForcedToolChoice": true,
@@ -70802,9 +70904,8 @@
70802
70904
  "supportsStrictMode": false,
70803
70905
  "toolStrictMode": "mixed",
70804
70906
  "toolSchemaFlavor": "moonshot-mfjs",
70805
- "streamIdleTimeoutMs": 300000,
70806
70907
  "stripDeepseekSpecialTokens": false,
70807
- "streamMarkupHealingPattern": "kimi",
70908
+ "streamMarkupHealingPattern": "thinking",
70808
70909
  "reasoningDeltasMayBeCumulative": false,
70809
70910
  "emptyLengthFinishIsContextError": false,
70810
70911
  "usesOpenAIToolCallIdLimit": false,
@@ -70816,8 +70917,7 @@
70816
70917
  "rejectRootObjectUnion": false,
70817
70918
  "retryWithoutStrictOnGrammarError": false,
70818
70919
  "supportsPromptCacheKey": false
70819
- },
70820
- "supportsComputerUse": false
70920
+ }
70821
70921
  }
70822
70922
  },
70823
70923
  "fireworks": {
@@ -390874,4 +390974,4 @@
390874
390974
  }
390875
390975
  }
390876
390976
  }
390877
- }
390977
+ }
@@ -196,7 +196,7 @@ export const CATALOG_PROVIDERS = [
196
196
  },
197
197
  {
198
198
  id: "firepass",
199
- defaultModel: "kimi-k2.6-turbo",
199
+ defaultModel: "glm-5.2-fast",
200
200
  envVars: ["FIREPASS_API_KEY"],
201
201
  createModelManagerOptions: (config: ModelManagerConfig) => firepassModelManagerOptions(config),
202
202
  },
@@ -2432,9 +2432,40 @@ export function fireworksModelManagerOptions(
2432
2432
  }
2433
2433
 
2434
2434
  // ---------------------------------------------------------------------------
2435
- // 7.6 Fire Pass (Fireworks Kimi K2.6 Turbo subscription)
2435
+ // 7.6 Fire Pass (Fireworks subscription)
2436
2436
  // ---------------------------------------------------------------------------
2437
2437
 
2438
+ // Pricing and limits are the published Fire Pass router tariff
2439
+ // (https://docs.fireworks.ai/firepass), not upstream-discoverable: dedicated
2440
+ // `fpk_…` keys never authorize `/v1/models`, so this seed is the authoritative
2441
+ // source. cacheRead is 0.1x input; cacheWrite stays 0 (not billed separately).
2442
+ export const FIREPASS_STATIC_MODELS: readonly ModelSpec<"openai-completions">[] = [
2443
+ {
2444
+ id: "glm-5.2-fast",
2445
+ name: "GLM 5.2 Fast (Fire Pass)",
2446
+ api: "openai-completions",
2447
+ provider: "firepass",
2448
+ baseUrl: "https://api.fireworks.ai/inference/v1",
2449
+ reasoning: true,
2450
+ input: ["text"],
2451
+ cost: { input: 2.1, output: 6.6, cacheRead: 0.21, cacheWrite: 0 },
2452
+ contextWindow: 1_048_576,
2453
+ maxTokens: 131_072,
2454
+ },
2455
+ {
2456
+ id: "kimi-k3-fast",
2457
+ name: "Kimi K3 Fast (Fire Pass)",
2458
+ api: "openai-completions",
2459
+ provider: "firepass",
2460
+ baseUrl: "https://api.fireworks.ai/inference/v1",
2461
+ reasoning: true,
2462
+ input: ["text", "image"],
2463
+ cost: { input: 4.5, output: 22.5, cacheRead: 0.45, cacheWrite: 0 },
2464
+ contextWindow: 1_048_576,
2465
+ maxTokens: 131_072,
2466
+ },
2467
+ ];
2468
+
2438
2469
  export interface FirepassModelManagerConfig {
2439
2470
  apiKey?: string;
2440
2471
  baseUrl?: string;
@@ -2442,8 +2473,8 @@ export interface FirepassModelManagerConfig {
2442
2473
  }
2443
2474
 
2444
2475
  /**
2445
- * Fire Pass is a Fireworks subscription product that exposes a single router
2446
- * model (Kimi K2.6 Turbo) under `accounts/fireworks/routers/kimi-k2p6-turbo`.
2476
+ * Fire Pass is a Fireworks subscription product that exposes router models
2477
+ * (GLM 5.2 Fast, Kimi K3 Fast) under `accounts/fireworks/routers/<id>`.
2447
2478
  * The dedicated `fpk_…` keys do not authorize `/v1/models`, so this manager
2448
2479
  * never performs dynamic discovery — the bundled catalog entry is canonical.
2449
2480
  * See https://docs.fireworks.ai/firepass.