authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-10-07 12:09:52-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-10-07 12:09:52-07:00
log9f48092ec95dd9eab78931601de95be0107a930c
tree58ad623816418e46e35628c43ac9e2e469e95fc4
parentba0ea3d152150f399827d36a5b4b86c5bbda2d7f
signature Signed by PGP key B5690EEEBB952194

fix(server): Claude 5-series models always run 1M context (#16908)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

4 files changed, 19 insertions(+), 114 deletions(-)

apps/server/src/claudeModelOptions.test.ts+6-5
...@@ -17,15 +17,16 @@ describe("compileClaudeModelSelection", () => {...@@ -17,15 +17,16 @@ describe("compileClaudeModelSelection", () => {
17 it("compiles context, effort, and settings together", () => {17 it("compiles context, effort, and settings together", () => {
18 expect(18 expect(
19 compileClaudeModelSelection(19 compileClaudeModelSelection(
20 selection("claude-fable-5", [20 selection("claude-opus-4-6", [
21 { id: "contextWindow", value: "1m" },21 { id: "contextWindow", value: "1m" },
22 { id: "effort", value: "ultracode" },22 { id: "effort", value: "max" },
23 { id: "fastMode", value: true },
23 ]),24 ]),
24 ),25 ),
25 ).toMatchObject({26 ).toMatchObject({
26 apiModelId: "claude-fable-5[1m]",27 apiModelId: "claude-opus-4-6[1m]",
27 effort: "xhigh",28 effort: "max",
28 settings: { ultracode: true },29 settings: { fastMode: true },
29 });30 });
30 });31 });
3132
apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts+3-7
...@@ -97,7 +97,6 @@ import {...@@ -97,7 +97,6 @@ import {
97} from "../../provider/Drivers/ClaudeHome.ts";97} from "../../provider/Drivers/ClaudeHome.ts";
98import {98import {
99 BUNDLED_CLAUDE_MODEL_CATALOG,99 BUNDLED_CLAUDE_MODEL_CATALOG,
100 resolveClaudeCatalogContextWindow,
101 resolveClaudeCatalogContextWindowTokens,100 resolveClaudeCatalogContextWindowTokens,
102} from "../../provider/ClaudeModelCatalog.ts";101} from "../../provider/ClaudeModelCatalog.ts";
103import {102import {
...@@ -138,12 +137,9 @@ export const CLAUDE_PROVIDER = ProviderDriverKind.make("claudeAgent");...@@ -138,12 +137,9 @@ export const CLAUDE_PROVIDER = ProviderDriverKind.make("claudeAgent");
138export const CLAUDE_AGENT_SDK_QUERY_PROTOCOL = "claude-agent-sdk.query" as const;137export const CLAUDE_AGENT_SDK_QUERY_PROTOCOL = "claude-agent-sdk.query" as const;
139138
140function claudeContextWindow(modelSelection: ModelSelection): number | null {139function claudeContextWindow(modelSelection: ModelSelection): number | null {
141 if (modelSelection.model === "claude-opus-4-6" || modelSelection.model === "claude-opus-4-7") {140 return (
142 return 1_000_000;141 resolveClaudeCatalogContextWindowTokens(BUNDLED_CLAUDE_MODEL_CATALOG, modelSelection) ?? null
143 }142 );
144 return resolveClaudeCatalogContextWindow(BUNDLED_CLAUDE_MODEL_CATALOG, modelSelection) === "1m"
145 ? 1_000_000
146 : 200_000;
147}143}
148144
149export function claudeProviderTurnTokenUsage(145export function claudeProviderTurnTokenUsage(
apps/server/src/provider/ClaudeModelCatalog.ts+1-1
...@@ -215,7 +215,7 @@ export function isClaudeCatalogUltracodeEffort(effort: string | null | undefined...@@ -215,7 +215,7 @@ export function isClaudeCatalogUltracodeEffort(effort: string | null | undefined
215 return effort === "ultracode";215 return effort === "ultracode";
216}216}
217217
218export function resolveClaudeCatalogContextWindow(218function resolveClaudeCatalogContextWindow(
219 catalog: ClaudeModelCatalog,219 catalog: ClaudeModelCatalog,
220 modelSelection: ModelSelection | undefined,220 modelSelection: ModelSelection | undefined,
221): string | undefined {221): string | undefined {
apps/server/src/provider/model-manifest.json+9-101
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1{1{
2 "version": 1,2 "version": 1,
3 "updatedAt": "2026-10-07T18:00:00Z",3 "updatedAt": "2026-10-07T19:00:00Z",
4 "compatibility": [4 "compatibility": [
5 {5 {
6 "driver": "codex",6 "driver": "codex",
...@@ -145,22 +145,6 @@...@@ -145,22 +145,6 @@
145 }145 }
146 ],146 ],
147 "promptInjectedValues": ["ultrathink"]147 "promptInjectedValues": ["ultrathink"]
148 },
149 {
150 "id": "contextWindow",
151 "label": "Context Window",
152 "type": "select",
153 "options": [
154 {
155 "id": "200k",
156 "label": "200k"
157 },
158 {
159 "id": "1m",
160 "label": "1M",
161 "isDefault": true
162 }
163 ]
164 }148 }
165 ]149 ]
166 },150 },
...@@ -170,15 +154,7 @@...@@ -170,15 +154,7 @@
170 "ultracode": "xhigh",154 "ultracode": "xhigh",
171 "ultrathink": null155 "ultrathink": null
172 },156 },
173 "modelSuffixes": {157 "fixedContextWindowTokens": 1000000
174 "contextWindow": {
175 "1m": "[1m]"
176 }
177 },
178 "contextWindowTokens": {
179 "200k": 200000,
180 "1m": 1000000
181 }
182 }158 }
183 }159 }
184 },160 },
...@@ -204,23 +180,13 @@...@@ -204,23 +180,13 @@
204 ],180 ],
205 "promptInjectedValues": ["ultrathink"]181 "promptInjectedValues": ["ultrathink"]
206 },182 },
207 { "id": "fastMode", "label": "Fast Mode", "type": "boolean" },183 { "id": "fastMode", "label": "Fast Mode", "type": "boolean" }
208 {
209 "id": "contextWindow",
210 "label": "Context Window",
211 "type": "select",
212 "options": [
213 { "id": "200k", "label": "200k" },
214 { "id": "1m", "label": "1M", "isDefault": true }
215 ]
216 }
217 ]184 ]
218 },185 },
219 "adapter": {186 "adapter": {
220 "claudeCode": {187 "claudeCode": {
221 "effortMap": { "ultracode": "xhigh", "ultrathink": null },188 "effortMap": { "ultracode": "xhigh", "ultrathink": null },
222 "modelSuffixes": { "contextWindow": { "1m": "[1m]" } },189 "fixedContextWindowTokens": 1000000
223 "contextWindowTokens": { "200k": 200000, "1m": 1000000 }
224 }190 }
225 }191 }
226 },192 },
...@@ -269,22 +235,6 @@...@@ -269,22 +235,6 @@
269 "id": "fastMode",235 "id": "fastMode",
270 "label": "Fast Mode",236 "label": "Fast Mode",
271 "type": "boolean"237 "type": "boolean"
272 },
273 {
274 "id": "contextWindow",
275 "label": "Context Window",
276 "type": "select",
277 "options": [
278 {
279 "id": "200k",
280 "label": "200k"
281 },
282 {
283 "id": "1m",
284 "label": "1M",
285 "isDefault": true
286 }
287 ]
288 }238 }
289 ]239 ]
290 },240 },
...@@ -294,15 +244,7 @@...@@ -294,15 +244,7 @@
294 "ultracode": "xhigh",244 "ultracode": "xhigh",
295 "ultrathink": null245 "ultrathink": null
296 },246 },
297 "modelSuffixes": {247 "fixedContextWindowTokens": 1000000
298 "contextWindow": {
299 "1m": "[1m]"
300 }
301 },
302 "contextWindowTokens": {
303 "200k": 200000,
304 "1m": 1000000
305 }
306 }248 }
307 }249 }
308 },250 },
...@@ -524,7 +466,7 @@...@@ -524,7 +466,7 @@
524 ]466 ]
525 },467 },
526 "adapter": {468 "adapter": {
527 "claudeCode": {}469 "claudeCode": { "fixedContextWindowTokens": 200000 }
528 }470 }
529 },471 },
530 "sonnet-5": {472 "sonnet-5": {
...@@ -562,22 +504,6 @@...@@ -562,22 +504,6 @@
562 }504 }
563 ],505 ],
564 "promptInjectedValues": ["ultrathink"]506 "promptInjectedValues": ["ultrathink"]
565 },
566 {
567 "id": "contextWindow",
568 "label": "Context Window",
569 "type": "select",
570 "options": [
571 {
572 "id": "200k",
573 "label": "200k",
574 "isDefault": true
575 },
576 {
577 "id": "1m",
578 "label": "1M"
579 }
580 ]
581 }507 }
582 ]508 ]
583 },509 },
...@@ -586,15 +512,7 @@...@@ -586,15 +512,7 @@
586 "effortMap": {512 "effortMap": {
587 "ultrathink": null513 "ultrathink": null
588 },514 },
589 "modelSuffixes": {515 "fixedContextWindowTokens": 1000000
590 "contextWindow": {
591 "1m": "[1m]"
592 }
593 },
594 "contextWindowTokens": {
595 "200k": 200000,
596 "1m": 1000000
597 }
598 }516 }
599 }517 }
600 },518 },
...@@ -682,23 +600,13 @@...@@ -682,23 +600,13 @@
682 { "id": "ultrathink", "label": "Ultrathink" }600 { "id": "ultrathink", "label": "Ultrathink" }
683 ],601 ],
684 "promptInjectedValues": ["ultrathink"]602 "promptInjectedValues": ["ultrathink"]
685 },
686 {
687 "id": "contextWindow",
688 "label": "Context Window",
689 "type": "select",
690 "options": [
691 { "id": "200k", "label": "200k" },
692 { "id": "1m", "label": "1M", "isDefault": true }
693 ]
694 }603 }
695 ]604 ]
696 },605 },
697 "adapter": {606 "adapter": {
698 "claudeCode": {607 "claudeCode": {
699 "effortMap": { "ultrathink": null },608 "effortMap": { "ultrathink": null },
700 "modelSuffixes": { "contextWindow": { "1m": "[1m]" } },609 "fixedContextWindowTokens": 1000000
701 "contextWindowTokens": { "200k": 200000, "1m": 1000000 }
702 }610 }
703 }611 }
704 },612 },
...@@ -713,7 +621,7 @@...@@ -713,7 +621,7 @@
713 ]621 ]
714 },622 },
715 "adapter": {623 "adapter": {
716 "claudeCode": {}624 "claudeCode": { "fixedContextWindowTokens": 200000 }
717 }625 }
718 }626 }
719 },627 },