From ab373716e7c996084fd8383fca210063a87773e7 Mon Sep 17 00:00:00 2001 From: "Bob.Hou" <364432949@qq.com> Date: Tue, 4 Aug 2026 00:27:33 -0400 Subject: [PATCH] fix: add claude-opus-5 to KNOWN_MODEL_WINDOW_TOKENS (#2609) * fix: add claude-opus-5 to KNOWN_MODEL_WINDOW_TOKENS claude-opus-5 has a 1M context window (verified: 250k tokens at 25% usage = ~1M), but was missing from the model table. This caused resolveContextWindowTokens() to fall back to the 200k default when tokens < 200k, incorrectly triggering compact warnings in the first 20% of a 1M session. Same failure class as #2290 (Opus 4.x) and #2461 (fable-5/mythos-5). The env override (ECC_CONTEXT_WINDOW_TOKENS) remains the escape hatch for unlisted models. Refs: #2290, #2461, #2468 * test: add regression test for claude-opus-5 context window Verifies resolveContextWindowTokens returns LARGE_CONTEXT_WINDOW_TOKENS for claude-opus-5 at 50k tokens, matching the behavior of fable-5 and mythos-5 in the known-model table. --- scripts/lib/transcript-context.js | 1 + tests/lib/transcript-context.test.js | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/scripts/lib/transcript-context.js b/scripts/lib/transcript-context.js index d8df7411a..201861487 100644 --- a/scripts/lib/transcript-context.js +++ b/scripts/lib/transcript-context.js @@ -35,6 +35,7 @@ const LARGE_WINDOW_MODEL_MARKER = '[1m]'; // Checked in order, first match wins. Best-effort and expected to lag new // releases; the env override remains the escape hatch for unlisted models. const KNOWN_MODEL_WINDOW_TOKENS = [ + ['claude-opus-5', LARGE_CONTEXT_WINDOW_TOKENS], ['claude-fable-5', LARGE_CONTEXT_WINDOW_TOKENS], ['claude-mythos-5', LARGE_CONTEXT_WINDOW_TOKENS] ]; diff --git a/tests/lib/transcript-context.test.js b/tests/lib/transcript-context.test.js index 4f95c62b4..1d335f131 100644 --- a/tests/lib/transcript-context.test.js +++ b/tests/lib/transcript-context.test.js @@ -188,6 +188,10 @@ test('recognizes claude-mythos-5 as a 1M window from the known-model table (#246 assert.strictEqual(resolveContextWindowTokens(50000, 'claude-mythos-5'), LARGE_CONTEXT_WINDOW_TOKENS); }); +test('recognizes claude-opus-5 as a 1M window from the known-model table', () => { + assert.strictEqual(resolveContextWindowTokens(50000, 'claude-opus-5'), LARGE_CONTEXT_WINDOW_TOKENS); +}); + test('recognizes dated/prefixed variants of known large-window model ids (#2461)', () => { assert.strictEqual(resolveContextWindowTokens(50000, 'us.anthropic.claude-fable-5-20260115-v1:0'), LARGE_CONTEXT_WINDOW_TOKENS); });