From 5a3e0cacea334e15efa732e43c876555b701809f Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Wed, 10 Jun 2026 16:04:34 -0500 Subject: [PATCH 1/3] test(fireworks-ai): lock reasoning controls --- .../core/test/fireworks-ai-catalog.test.ts | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 packages/core/test/fireworks-ai-catalog.test.ts diff --git a/packages/core/test/fireworks-ai-catalog.test.ts b/packages/core/test/fireworks-ai-catalog.test.ts new file mode 100644 index 000000000..9a65f80e7 --- /dev/null +++ b/packages/core/test/fireworks-ai-catalog.test.ts @@ -0,0 +1,57 @@ +import { expect, test } from "bun:test"; +import path from "node:path"; + +const expectedReasoningOptions = { + "accounts/fireworks/models/deepseek-v4-flash": [ + { type: "toggle" }, + { type: "effort", values: ["high", "max"] }, + ], + "accounts/fireworks/models/deepseek-v4-pro": [ + { type: "toggle" }, + { type: "effort", values: ["high", "max"] }, + ], + "accounts/fireworks/models/glm-5p1": [{ type: "toggle" }], + "accounts/fireworks/models/gpt-oss-120b": [{ type: "effort", values: ["low", "medium", "high"] }], + "accounts/fireworks/models/gpt-oss-20b": [{ type: "effort", values: ["low", "medium", "high"] }], + "accounts/fireworks/models/kimi-k2p5": [{ type: "toggle" }], + "accounts/fireworks/models/kimi-k2p6": [{ type: "toggle" }], + "accounts/fireworks/models/minimax-m2p5": [{ type: "effort", values: ["low", "medium", "high"] }], + "accounts/fireworks/models/minimax-m2p7": [{ type: "effort", values: ["low", "medium", "high"] }], + "accounts/fireworks/models/qwen3p6-plus": [ + { type: "toggle" }, + { type: "effort", values: ["low", "medium", "high"] }, + ], + "accounts/fireworks/routers/glm-5p1-fast": [{ type: "toggle" }], + "accounts/fireworks/routers/kimi-k2p6-fast": [{ type: "toggle" }], + "accounts/fireworks/routers/kimi-k2p6-turbo": [{ type: "toggle" }], +} as const; + +test("all Fireworks models declare exact reasoning controls", async () => { + const root = path.join(import.meta.dirname, "..", "..", ".."); + const modelsDir = path.join(root, "providers", "fireworks-ai", "models"); + const actualIds: string[] = []; + + for await (const relativePath of new Bun.Glob("**/*.toml").scan(modelsDir)) { + const id = relativePath.slice(0, -".toml".length); + const model = Bun.TOML.parse(await Bun.file(path.join(modelsDir, relativePath)).text()) as { + base_model?: string; + reasoning?: boolean; + reasoning_options?: unknown[]; + }; + const reasoning = model.reasoning ?? (model.base_model + ? (Bun.TOML.parse(await Bun.file(path.join(root, "models", `${model.base_model}.toml`)).text()) as { + reasoning: boolean; + }).reasoning + : false); + + actualIds.push(id); + if (!reasoning) { + expect(model.reasoning_options, id).toBeUndefined(); + continue; + } + + expect(model.reasoning_options, id).toEqual(expectedReasoningOptions[id as keyof typeof expectedReasoningOptions]); + } + + expect(actualIds.sort()).toEqual(Object.keys(expectedReasoningOptions).sort()); +}); From 1f777668342ffa9024d6c13ea3b1e4669975a228 Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Wed, 10 Jun 2026 19:48:27 -0500 Subject: [PATCH 2/3] fix(fireworks-ai): remove unverified toggles --- .../core/test/fireworks-ai-catalog.test.ts | 26 ++++++++++++------- .../accounts/fireworks/models/glm-5p1.toml | 3 --- .../accounts/fireworks/models/kimi-k2p5.toml | 3 --- .../accounts/fireworks/models/kimi-k2p6.toml | 3 --- .../fireworks/routers/glm-5p1-fast.toml | 3 --- .../fireworks/routers/kimi-k2p6-fast.toml | 3 --- .../fireworks/routers/kimi-k2p6-turbo.toml | 3 --- 7 files changed, 17 insertions(+), 27 deletions(-) diff --git a/packages/core/test/fireworks-ai-catalog.test.ts b/packages/core/test/fireworks-ai-catalog.test.ts index 9a65f80e7..2f2e19ea5 100644 --- a/packages/core/test/fireworks-ai-catalog.test.ts +++ b/packages/core/test/fireworks-ai-catalog.test.ts @@ -10,23 +10,26 @@ const expectedReasoningOptions = { { type: "toggle" }, { type: "effort", values: ["high", "max"] }, ], - "accounts/fireworks/models/glm-5p1": [{ type: "toggle" }], "accounts/fireworks/models/gpt-oss-120b": [{ type: "effort", values: ["low", "medium", "high"] }], "accounts/fireworks/models/gpt-oss-20b": [{ type: "effort", values: ["low", "medium", "high"] }], - "accounts/fireworks/models/kimi-k2p5": [{ type: "toggle" }], - "accounts/fireworks/models/kimi-k2p6": [{ type: "toggle" }], "accounts/fireworks/models/minimax-m2p5": [{ type: "effort", values: ["low", "medium", "high"] }], "accounts/fireworks/models/minimax-m2p7": [{ type: "effort", values: ["low", "medium", "high"] }], "accounts/fireworks/models/qwen3p6-plus": [ { type: "toggle" }, { type: "effort", values: ["low", "medium", "high"] }, ], - "accounts/fireworks/routers/glm-5p1-fast": [{ type: "toggle" }], - "accounts/fireworks/routers/kimi-k2p6-fast": [{ type: "toggle" }], - "accounts/fireworks/routers/kimi-k2p6-turbo": [{ type: "toggle" }], } as const; -test("all Fireworks models declare exact reasoning controls", async () => { +const unresolvedReasoningOptions = [ + "accounts/fireworks/models/glm-5p1", + "accounts/fireworks/models/kimi-k2p5", + "accounts/fireworks/models/kimi-k2p6", + "accounts/fireworks/routers/glm-5p1-fast", + "accounts/fireworks/routers/kimi-k2p6-fast", + "accounts/fireworks/routers/kimi-k2p6-turbo", +] as const; + +test("Fireworks models declare only positively verified reasoning controls", async () => { const root = path.join(import.meta.dirname, "..", "..", ".."); const modelsDir = path.join(root, "providers", "fireworks-ai", "models"); const actualIds: string[] = []; @@ -50,8 +53,13 @@ test("all Fireworks models declare exact reasoning controls", async () => { continue; } - expect(model.reasoning_options, id).toEqual(expectedReasoningOptions[id as keyof typeof expectedReasoningOptions]); + if (id in expectedReasoningOptions) { + expect(model.reasoning_options, id).toEqual(expectedReasoningOptions[id as keyof typeof expectedReasoningOptions]); + } else { + expect(unresolvedReasoningOptions, id).toContain(id); + expect(model.reasoning_options, id).toBeUndefined(); + } } - expect(actualIds.sort()).toEqual(Object.keys(expectedReasoningOptions).sort()); + expect(actualIds.sort()).toEqual([...Object.keys(expectedReasoningOptions), ...unresolvedReasoningOptions].sort()); }); diff --git a/providers/fireworks-ai/models/accounts/fireworks/models/glm-5p1.toml b/providers/fireworks-ai/models/accounts/fireworks/models/glm-5p1.toml index 9a312633c..ec01a1957 100644 --- a/providers/fireworks-ai/models/accounts/fireworks/models/glm-5p1.toml +++ b/providers/fireworks-ai/models/accounts/fireworks/models/glm-5p1.toml @@ -8,9 +8,6 @@ temperature = true tool_call = true open_weights = true -[[reasoning_options]] -type = "toggle" - [cost] input = 1.40 output = 4.40 diff --git a/providers/fireworks-ai/models/accounts/fireworks/models/kimi-k2p5.toml b/providers/fireworks-ai/models/accounts/fireworks/models/kimi-k2p5.toml index cb9b08556..281712ca0 100644 --- a/providers/fireworks-ai/models/accounts/fireworks/models/kimi-k2p5.toml +++ b/providers/fireworks-ai/models/accounts/fireworks/models/kimi-k2p5.toml @@ -9,9 +9,6 @@ temperature = true tool_call = true open_weights = true -[[reasoning_options]] -type = "toggle" - [cost] cache_read = 0.10 input = 0.60 diff --git a/providers/fireworks-ai/models/accounts/fireworks/models/kimi-k2p6.toml b/providers/fireworks-ai/models/accounts/fireworks/models/kimi-k2p6.toml index b0f3d1737..17a778f73 100644 --- a/providers/fireworks-ai/models/accounts/fireworks/models/kimi-k2p6.toml +++ b/providers/fireworks-ai/models/accounts/fireworks/models/kimi-k2p6.toml @@ -8,9 +8,6 @@ temperature = true tool_call = true open_weights = true -[[reasoning_options]] -type = "toggle" - [cost] cache_read = 0.16 input = 0.95 diff --git a/providers/fireworks-ai/models/accounts/fireworks/routers/glm-5p1-fast.toml b/providers/fireworks-ai/models/accounts/fireworks/routers/glm-5p1-fast.toml index 04aa0a1f7..9e889bbcb 100644 --- a/providers/fireworks-ai/models/accounts/fireworks/routers/glm-5p1-fast.toml +++ b/providers/fireworks-ai/models/accounts/fireworks/routers/glm-5p1-fast.toml @@ -8,9 +8,6 @@ temperature = true tool_call = true open_weights = true -[[reasoning_options]] -type = "toggle" - [cost] input = 2.80 output = 8.80 diff --git a/providers/fireworks-ai/models/accounts/fireworks/routers/kimi-k2p6-fast.toml b/providers/fireworks-ai/models/accounts/fireworks/routers/kimi-k2p6-fast.toml index 3ef151f80..ffefd4f30 100644 --- a/providers/fireworks-ai/models/accounts/fireworks/routers/kimi-k2p6-fast.toml +++ b/providers/fireworks-ai/models/accounts/fireworks/routers/kimi-k2p6-fast.toml @@ -8,9 +8,6 @@ temperature = true tool_call = true open_weights = true -[[reasoning_options]] -type = "toggle" - [cost] cache_read = 0.30 input = 2.00 diff --git a/providers/fireworks-ai/models/accounts/fireworks/routers/kimi-k2p6-turbo.toml b/providers/fireworks-ai/models/accounts/fireworks/routers/kimi-k2p6-turbo.toml index 85a75e270..1865a9465 100644 --- a/providers/fireworks-ai/models/accounts/fireworks/routers/kimi-k2p6-turbo.toml +++ b/providers/fireworks-ai/models/accounts/fireworks/routers/kimi-k2p6-turbo.toml @@ -8,9 +8,6 @@ temperature = true tool_call = true open_weights = true -[[reasoning_options]] -type = "toggle" - [cost] cache_read = 0.30 input = 2.00 From 236ff0e39b98a9ab875f0929c8bec9fa20445bfe Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Wed, 10 Jun 2026 20:02:44 -0500 Subject: [PATCH 3/3] fix(fireworks-ai): add Qwen reasoning budget --- packages/core/test/fireworks-ai-catalog.test.ts | 1 + .../models/accounts/fireworks/models/qwen3p6-plus.toml | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/packages/core/test/fireworks-ai-catalog.test.ts b/packages/core/test/fireworks-ai-catalog.test.ts index 2f2e19ea5..ecf122948 100644 --- a/packages/core/test/fireworks-ai-catalog.test.ts +++ b/packages/core/test/fireworks-ai-catalog.test.ts @@ -17,6 +17,7 @@ const expectedReasoningOptions = { "accounts/fireworks/models/qwen3p6-plus": [ { type: "toggle" }, { type: "effort", values: ["low", "medium", "high"] }, + { type: "budget_tokens", min: 1 }, ], } as const; diff --git a/providers/fireworks-ai/models/accounts/fireworks/models/qwen3p6-plus.toml b/providers/fireworks-ai/models/accounts/fireworks/models/qwen3p6-plus.toml index 7f0d26508..74ffefb85 100644 --- a/providers/fireworks-ai/models/accounts/fireworks/models/qwen3p6-plus.toml +++ b/providers/fireworks-ai/models/accounts/fireworks/models/qwen3p6-plus.toml @@ -15,6 +15,10 @@ type = "toggle" type = "effort" values = ["low", "medium", "high"] +[[reasoning_options]] +type = "budget_tokens" +min = 1 + [cost] cache_read = 0.10 input = 0.50