Skip to content

Commit a0148fe

Browse files
authored
Merge branch 'main' into fix/1624-dead-nested-delegation
2 parents 620462f + 9ec139c commit a0148fe

25 files changed

Lines changed: 838 additions & 9 deletions

‎.coderabbit.yaml‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,10 @@ reviews:
6060
comments, or unrelated refactors. When changed code introduces a local implementation of a
6161
cross-cutting concern, check whether it bypasses or duplicates an established repository
6262
abstraction or nearby convention. Report only a concrete inconsistency with behavioral or
63-
maintenance impact, and allow intentional deviations.
63+
maintenance impact, and allow intentional deviations. Treat the linked issue and this PR
64+
description as the scope boundary. When a confirmed defect needs work beyond that boundary
65+
and this PR does not create the hazard, do not request changes for it. List it once in the
66+
walkthrough under follow-up candidates, with one line for the trigger.
6467
6568
- path: "**/*.{ts,tsx,js,jsx,mts,mjs,cts,cjs}"
6669
instructions: >-

‎packages/types/src/__tests__/openai-models.test.ts‎

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { openAiCodexModels } from "../providers/openai-codex.js"
12
import { openAiNativeDefaultModelId, openAiNativeModels } from "../providers/openai.js"
23

34
describe("OpenAI native models", () => {
@@ -46,6 +47,96 @@ describe("OpenAI native models", () => {
4647
])
4748
})
4849

50+
it("describes GPT-6 Sol and Luna with verified pricing and context metadata", () => {
51+
expect(openAiNativeModels["gpt-6-sol"]).toEqual({
52+
maxTokens: 128_000,
53+
contextWindow: 1_050_000,
54+
includedTools: ["apply_patch"],
55+
excludedTools: ["apply_diff", "write_to_file"],
56+
supportsImages: true,
57+
supportsPromptCache: true,
58+
supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"],
59+
reasoningEffort: "medium",
60+
inputPrice: 2,
61+
outputPrice: 10,
62+
cacheWritesPrice: 2.5,
63+
cacheReadsPrice: 0.2,
64+
longContextPricing: {
65+
thresholdTokens: 272_000,
66+
inputPriceMultiplier: 2,
67+
outputPriceMultiplier: 1.5,
68+
cacheWritesPriceMultiplier: 2,
69+
cacheReadsPriceMultiplier: 2,
70+
appliesToServiceTiers: ["default", "flex", "priority"],
71+
},
72+
supportsVerbosity: true,
73+
supportsTemperature: false,
74+
tiers: [
75+
{
76+
name: "flex",
77+
contextWindow: 1_050_000,
78+
inputPrice: 1,
79+
outputPrice: 5,
80+
cacheWritesPrice: 1.25,
81+
cacheReadsPrice: 0.1,
82+
},
83+
{
84+
name: "priority",
85+
contextWindow: 1_050_000,
86+
inputPrice: 4,
87+
outputPrice: 20,
88+
cacheWritesPrice: 5,
89+
cacheReadsPrice: 0.4,
90+
},
91+
],
92+
description: "GPT-6 Sol: OpenAI's cost-efficient frontier model for complex coding and agentic workflows",
93+
})
94+
95+
expect(openAiNativeModels["gpt-6-luna"]).toEqual({
96+
maxTokens: 128_000,
97+
contextWindow: 1_050_000,
98+
includedTools: ["apply_patch"],
99+
excludedTools: ["apply_diff", "write_to_file"],
100+
supportsImages: true,
101+
supportsPromptCache: true,
102+
supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"],
103+
reasoningEffort: "medium",
104+
inputPrice: 0.1,
105+
outputPrice: 0.5,
106+
cacheWritesPrice: 0.125,
107+
cacheReadsPrice: 0.01,
108+
longContextPricing: {
109+
thresholdTokens: 272_000,
110+
inputPriceMultiplier: 2,
111+
outputPriceMultiplier: 1.5,
112+
cacheWritesPriceMultiplier: 2,
113+
cacheReadsPriceMultiplier: 2,
114+
appliesToServiceTiers: ["default", "flex", "priority"],
115+
},
116+
supportsVerbosity: true,
117+
supportsTemperature: false,
118+
tiers: [
119+
{
120+
name: "flex",
121+
contextWindow: 1_050_000,
122+
inputPrice: 0.05,
123+
outputPrice: 0.25,
124+
cacheWritesPrice: 0.0625,
125+
cacheReadsPrice: 0.005,
126+
},
127+
{
128+
name: "priority",
129+
contextWindow: 1_050_000,
130+
inputPrice: 0.2,
131+
outputPrice: 1,
132+
cacheWritesPrice: 0.25,
133+
cacheReadsPrice: 0.02,
134+
},
135+
],
136+
description: "GPT-6 Luna: The fastest, most affordable member of the GPT-6 family",
137+
})
138+
})
139+
49140
it("uses current GPT-5.6 base pricing and context metadata", () => {
50141
expect(openAiNativeModels["gpt-5.6-sol"]).toMatchObject({
51142
contextWindow: 1_050_000,
@@ -70,3 +161,40 @@ describe("OpenAI native models", () => {
70161
})
71162
})
72163
})
164+
165+
describe("OpenAI Codex models", () => {
166+
it("describes GPT-6 Sol and Luna subscription contracts", () => {
167+
expect(openAiCodexModels["gpt-6-sol"]).toEqual({
168+
maxTokens: 128_000,
169+
contextWindow: 372_000,
170+
includedTools: ["apply_patch"],
171+
excludedTools: ["apply_diff", "write_to_file"],
172+
supportsImages: true,
173+
supportsPromptCache: true,
174+
supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"],
175+
reasoningEffort: "medium",
176+
inputPrice: 0,
177+
outputPrice: 0,
178+
supportsVerbosity: true,
179+
supportsTemperature: false,
180+
description:
181+
"GPT-6 Sol: OpenAI's cost-efficient frontier model for complex coding and agentic workflows via ChatGPT subscription",
182+
})
183+
184+
expect(openAiCodexModels["gpt-6-luna"]).toEqual({
185+
maxTokens: 128_000,
186+
contextWindow: 372_000,
187+
includedTools: ["apply_patch"],
188+
excludedTools: ["apply_diff", "write_to_file"],
189+
supportsImages: true,
190+
supportsPromptCache: true,
191+
supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"],
192+
reasoningEffort: "medium",
193+
inputPrice: 0,
194+
outputPrice: 0,
195+
supportsVerbosity: true,
196+
supportsTemperature: false,
197+
description: "GPT-6 Luna: The fastest, most affordable member of the GPT-6 family via ChatGPT subscription",
198+
})
199+
})
200+
})

‎packages/types/src/providers/anthropic.ts‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,24 @@ export const anthropicModels = {
164164
supportsTemperature: false,
165165
description: "Claude Opus 5 is Anthropic's most capable model for complex agentic coding and enterprise work.",
166166
},
167+
"claude-opus-5-5": {
168+
maxTokens: 128_000, // Overridden to 8k if `enableReasoningEffort` is false.
169+
contextWindow: 1_000_000, // 1M context window native (no beta header required)
170+
supportsImages: true,
171+
supportsPromptCache: true,
172+
inputPrice: 4.0, // $4 per million input tokens
173+
outputPrice: 20.0, // $20 per million output tokens
174+
cacheWritesPrice: 5.0, // $5 per million tokens
175+
cacheReadsPrice: 0.2, // $0.20 per million tokens
176+
// Opus 5.5 keeps the Opus 5 adaptive-thinking / binary-toggle convention on
177+
// the direct Anthropic provider path: manual budget_tokens and non-default
178+
// sampling parameters return a 400.
179+
supportsReasoningBudget: true,
180+
supportsReasoningBinary: true,
181+
supportsTemperature: false,
182+
description:
183+
"Claude Opus 5.5 is Anthropic's most capable model for complex agentic coding and enterprise work.",
184+
},
167185
"claude-fable-5-1": {
168186
maxTokens: 128_000, // Overridden to 8k if `enableReasoningEffort` is false.
169187
contextWindow: 1_000_000,

‎packages/types/src/providers/bedrock.ts‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,28 @@ export const bedrockModels = {
252252
cachableFields: ["system", "messages", "tools"],
253253
description: "Claude Opus 5 is Anthropic's most capable model for complex agentic coding and enterprise work.",
254254
},
255+
"anthropic.claude-opus-5-5": {
256+
// 128K max output tokens per the AWS Bedrock model card:
257+
// https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-5-5.html
258+
maxTokens: 128_000,
259+
contextWindow: 1_000_000, // 1M context window native (no beta header required)
260+
supportsImages: true,
261+
supportsPromptCache: true,
262+
supportsReasoningBudget: true,
263+
supportsReasoningBinary: true,
264+
supportsTemperature: false,
265+
inputPrice: 4.0, // $4 per million input tokens
266+
outputPrice: 20.0, // $20 per million output tokens
267+
cacheWritesPrice: 5.0, // $5 per million tokens
268+
cacheReadsPrice: 0.2, // $0.20 per million tokens
269+
// The same Bedrock model card lists 512 as the minimum tokens per cache
270+
// checkpoint for Opus 5.5 (matching the Fable 5.1 entry below).
271+
minTokensPerCachePoint: 512,
272+
maxCachePoints: 4,
273+
cachableFields: ["system", "messages", "tools"],
274+
description:
275+
"Claude Opus 5.5 is Anthropic's most capable model for complex agentic coding and enterprise work.",
276+
},
255277
"anthropic.claude-fable-5-1": {
256278
maxTokens: 128_000,
257279
contextWindow: 1_000_000,
@@ -661,6 +683,7 @@ export const BEDROCK_1M_CONTEXT_MODEL_IDS = [
661683
// - Claude Opus 4.6
662684
// - Claude Opus 4.7
663685
// - Claude Opus 5
686+
// - Claude Opus 5.5
664687
// - Claude Fable 5 and 5.1 (cross-region inference only — can only be used through an inference profile)
665688
export const BEDROCK_GLOBAL_INFERENCE_MODEL_IDS = [
666689
"anthropic.claude-sonnet-4-20250514-v1:0",
@@ -673,6 +696,7 @@ export const BEDROCK_GLOBAL_INFERENCE_MODEL_IDS = [
673696
"anthropic.claude-opus-4-7",
674697
"anthropic.claude-opus-4-8",
675698
"anthropic.claude-opus-5",
699+
"anthropic.claude-opus-5-5",
676700
"anthropic.claude-fable-5-1",
677701
"anthropic.claude-fable-5",
678702
] as const

‎packages/types/src/providers/openai-codex.ts‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,39 @@ export const openAiCodexModels = {
4040
supportsTemperature: false,
4141
description: "GPT-6 Astra: OpenAI's most capable model for complex, demanding work via ChatGPT subscription",
4242
},
43+
"gpt-6-sol": {
44+
maxTokens: 128000,
45+
contextWindow: 372000,
46+
includedTools: ["apply_patch"],
47+
excludedTools: ["apply_diff", "write_to_file"],
48+
supportsImages: true,
49+
supportsPromptCache: true,
50+
supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"],
51+
reasoningEffort: "medium",
52+
// Subscription-based: no per-token costs
53+
inputPrice: 0,
54+
outputPrice: 0,
55+
supportsVerbosity: true,
56+
supportsTemperature: false,
57+
description:
58+
"GPT-6 Sol: OpenAI's cost-efficient frontier model for complex coding and agentic workflows via ChatGPT subscription",
59+
},
60+
"gpt-6-luna": {
61+
maxTokens: 128000,
62+
contextWindow: 372000,
63+
includedTools: ["apply_patch"],
64+
excludedTools: ["apply_diff", "write_to_file"],
65+
supportsImages: true,
66+
supportsPromptCache: true,
67+
supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"],
68+
reasoningEffort: "medium",
69+
// Subscription-based: no per-token costs
70+
inputPrice: 0,
71+
outputPrice: 0,
72+
supportsVerbosity: true,
73+
supportsTemperature: false,
74+
description: "GPT-6 Luna: The fastest, most affordable member of the GPT-6 family via ChatGPT subscription",
75+
},
4376
"gpt-5.6-sol": {
4477
maxTokens: 128000,
4578
contextWindow: 372000,

‎packages/types/src/providers/openai.ts‎

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,92 @@ export const openAiNativeModels = {
6060
],
6161
description: "GPT-6 Astra: OpenAI's most capable model for complex reasoning and end-to-end agentic work",
6262
},
63+
"gpt-6-sol": {
64+
maxTokens: 128000,
65+
contextWindow: 1_050_000,
66+
includedTools: ["apply_patch"],
67+
excludedTools: ["apply_diff", "write_to_file"],
68+
supportsImages: true,
69+
supportsPromptCache: true,
70+
supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"],
71+
reasoningEffort: "medium",
72+
inputPrice: 2.0,
73+
outputPrice: 10.0,
74+
cacheWritesPrice: 2.5,
75+
cacheReadsPrice: 0.2,
76+
longContextPricing: {
77+
thresholdTokens: 272_000,
78+
inputPriceMultiplier: 2,
79+
outputPriceMultiplier: 1.5,
80+
cacheWritesPriceMultiplier: 2,
81+
cacheReadsPriceMultiplier: 2,
82+
appliesToServiceTiers: ["default", "flex", "priority"],
83+
},
84+
supportsVerbosity: true,
85+
supportsTemperature: false,
86+
tiers: [
87+
{
88+
name: "flex",
89+
contextWindow: 1_050_000,
90+
inputPrice: 1.0,
91+
outputPrice: 5.0,
92+
cacheWritesPrice: 1.25,
93+
cacheReadsPrice: 0.1,
94+
},
95+
{
96+
name: "priority",
97+
contextWindow: 1_050_000,
98+
inputPrice: 4.0,
99+
outputPrice: 20.0,
100+
cacheWritesPrice: 5.0,
101+
cacheReadsPrice: 0.4,
102+
},
103+
],
104+
description: "GPT-6 Sol: OpenAI's cost-efficient frontier model for complex coding and agentic workflows",
105+
},
106+
"gpt-6-luna": {
107+
maxTokens: 128000,
108+
contextWindow: 1_050_000,
109+
includedTools: ["apply_patch"],
110+
excludedTools: ["apply_diff", "write_to_file"],
111+
supportsImages: true,
112+
supportsPromptCache: true,
113+
supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"],
114+
reasoningEffort: "medium",
115+
inputPrice: 0.1,
116+
outputPrice: 0.5,
117+
cacheWritesPrice: 0.125,
118+
cacheReadsPrice: 0.01,
119+
longContextPricing: {
120+
thresholdTokens: 272_000,
121+
inputPriceMultiplier: 2,
122+
outputPriceMultiplier: 1.5,
123+
cacheWritesPriceMultiplier: 2,
124+
cacheReadsPriceMultiplier: 2,
125+
appliesToServiceTiers: ["default", "flex", "priority"],
126+
},
127+
supportsVerbosity: true,
128+
supportsTemperature: false,
129+
tiers: [
130+
{
131+
name: "flex",
132+
contextWindow: 1_050_000,
133+
inputPrice: 0.05,
134+
outputPrice: 0.25,
135+
cacheWritesPrice: 0.0625,
136+
cacheReadsPrice: 0.005,
137+
},
138+
{
139+
name: "priority",
140+
contextWindow: 1_050_000,
141+
inputPrice: 0.2,
142+
outputPrice: 1.0,
143+
cacheWritesPrice: 0.25,
144+
cacheReadsPrice: 0.02,
145+
},
146+
],
147+
description: "GPT-6 Luna: The fastest, most affordable member of the GPT-6 family",
148+
},
63149
"gpt-5.6-sol": {
64150
maxTokens: 128000,
65151
contextWindow: 1_050_000,

‎packages/types/src/providers/openrouter.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export const OPEN_ROUTER_PROMPT_CACHING_MODELS = new Set([
4545
"anthropic/claude-opus-4.5",
4646
"anthropic/claude-opus-4.6",
4747
"anthropic/claude-opus-5",
48+
"anthropic/claude-opus-5-5",
4849
"anthropic/claude-fable-5.1",
4950
"anthropic/claude-fable-5",
5051
"anthropic/claude-haiku-4.5",
@@ -79,6 +80,7 @@ export const OPEN_ROUTER_REASONING_BUDGET_MODELS = new Set([
7980
"anthropic/claude-opus-4.5",
8081
"anthropic/claude-opus-4.6",
8182
"anthropic/claude-opus-5",
83+
"anthropic/claude-opus-5-5",
8284
"anthropic/claude-fable-5.1",
8385
"anthropic/claude-fable-5",
8486
"anthropic/claude-sonnet-4",

‎packages/types/src/providers/vercel-ai-gateway.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const VERCEL_AI_GATEWAY_PROMPT_CACHING_MODELS = new Set([
1414
"anthropic/claude-opus-4.5",
1515
"anthropic/claude-opus-4.6",
1616
"anthropic/claude-opus-5",
17+
"anthropic/claude-opus-5-5",
1718
"anthropic/claude-fable-5.1",
1819
"anthropic/claude-fable-5",
1920
"anthropic/claude-sonnet-4",
@@ -61,6 +62,7 @@ export const VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS = new Set([
6162
"anthropic/claude-opus-4.5",
6263
"anthropic/claude-opus-4.6",
6364
"anthropic/claude-opus-5",
65+
"anthropic/claude-opus-5-5",
6466
"anthropic/claude-fable-5.1",
6567
"anthropic/claude-fable-5",
6668
"anthropic/claude-sonnet-4",

0 commit comments

Comments
 (0)