From d81e19887a086163513fbfc582af053c0cbd7323 Mon Sep 17 00:00:00 2001 From: "Soungmin Son (Eddy)" <41810556+happycastle114@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:34:14 +0900 Subject: [PATCH 1/2] feat: add Claude Fable 5.1 model Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- src/models.ts | 1 + test/smoke.ts | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/models.ts b/src/models.ts index 5960853..6baca34 100644 --- a/src/models.ts +++ b/src/models.ts @@ -50,6 +50,7 @@ const ALIAS_MODELS: ClaudeModel[] = [ ]; const PINNED_MODELS: ClaudeModel[] = [ + model("claude-fable-5-1", "Fable 5.1", LIMIT_1M), model("claude-opus-4-8", "Opus 4.8", LIMIT_1M), model("claude-sonnet-4-6", "Sonnet 4.6", LIMIT_1M), model("claude-haiku-4-5", "Haiku 4.5", LIMIT_200K), diff --git a/test/smoke.ts b/test/smoke.ts index 048b4cb..9e6889f 100644 --- a/test/smoke.ts +++ b/test/smoke.ts @@ -328,6 +328,16 @@ async function main() { assert.ok(models.length >= 4); assert.ok(models.some((m) => m.id === "sonnet")); assert.ok(models.some((m) => m.id === "opus")); + assert.deepEqual( + models.find((m) => m.id === "claude-fable-5-1"), + { + id: "claude-fable-5-1", + name: "Fable 5.1", + reasoning: true, + contextWindow: 1_000_000, + maxTokens: 128_000, + }, + ); assert.equal(resolveClaudeModelId("haiku"), "claude-haiku-4-5"); assert.equal(resolveClaudeModelId("sonnet"), "sonnet"); From bcf6743b44f644221545e7e86eb53c9e73f855b1 Mon Sep 17 00:00:00 2001 From: "Soungmin Son (Eddy)" <41810556+happycastle114@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:38:31 +0900 Subject: [PATCH 2/2] test: isolate Fable model catalog coverage Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- package.json | 2 +- test/models.ts | 17 +++++++++++++++++ test/smoke.ts | 10 ---------- 3 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 test/models.ts diff --git a/package.json b/package.json index 382e607..05f95df 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "scripts": { "prebuild": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"", "build": "tsc -p tsconfig.json", - "test": "bun test/smoke.ts", + "test": "bun test/smoke.ts && bun test/models.ts", "test:haiku": "bun test/haiku-live.ts", "prepublishOnly": "npm run build" }, diff --git a/test/models.ts b/test/models.ts new file mode 100644 index 0000000..e12e1e6 --- /dev/null +++ b/test/models.ts @@ -0,0 +1,17 @@ +import assert from "node:assert/strict"; +import { getClaudeModels } from "../src/models.js"; + +const models = getClaudeModels(); + +assert.deepEqual( + models.find((model) => model.id === "claude-fable-5-1"), + { + id: "claude-fable-5-1", + name: "Fable 5.1", + reasoning: true, + contextWindow: 1_000_000, + maxTokens: 128_000, + }, +); + +console.log("ok — Claude model catalog tests passed"); diff --git a/test/smoke.ts b/test/smoke.ts index 9e6889f..048b4cb 100644 --- a/test/smoke.ts +++ b/test/smoke.ts @@ -328,16 +328,6 @@ async function main() { assert.ok(models.length >= 4); assert.ok(models.some((m) => m.id === "sonnet")); assert.ok(models.some((m) => m.id === "opus")); - assert.deepEqual( - models.find((m) => m.id === "claude-fable-5-1"), - { - id: "claude-fable-5-1", - name: "Fable 5.1", - reasoning: true, - contextWindow: 1_000_000, - maxTokens: 128_000, - }, - ); assert.equal(resolveClaudeModelId("haiku"), "claude-haiku-4-5"); assert.equal(resolveClaudeModelId("sonnet"), "sonnet");