Skip to content

Commit 7c7605a

Browse files
committed
fix: add explicit max_output_tokens for GPT-5 Responses API
- Added max_output_tokens parameter to GPT-5 request body using model.maxTokens - This prevents GPT-5 from defaulting to very large token limits (e.g., 120k) - Updated tests to expect max_output_tokens in GPT-5 request bodies - Fixed test for handling unhandled stream events by properly mocking SDK fallback
1 parent ad0e33e commit 7c7605a

File tree

31 files changed

+1972
-237
lines changed

31 files changed

+1972
-237
lines changed

packages/types/src/message.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,17 @@ export const clineMessageSchema = z.object({
176176
contextCondense: contextCondenseSchema.optional(),
177177
isProtected: z.boolean().optional(),
178178
apiProtocol: z.union([z.literal("openai"), z.literal("anthropic")]).optional(),
179+
metadata: z
180+
.object({
181+
gpt5: z
182+
.object({
183+
previous_response_id: z.string().optional(),
184+
instructions: z.string().optional(),
185+
reasoning_summary: z.string().optional(),
186+
})
187+
.optional(),
188+
})
189+
.optional(),
179190
})
180191

181192
export type ClineMessage = z.infer<typeof clineMessageSchema>

packages/types/src/provider-settings.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ import { z } from "zod"
33
import { reasoningEffortsSchema, verbosityLevelsSchema, modelInfoSchema } from "./model.js"
44
import { codebaseIndexProviderSchema } from "./codebase-index.js"
55

6+
// Extended schema that includes "minimal" for GPT-5 models
7+
export const extendedReasoningEffortsSchema = z.union([reasoningEffortsSchema, z.literal("minimal")])
8+
9+
export type ReasoningEffortWithMinimal = z.infer<typeof extendedReasoningEffortsSchema>
10+
611
/**
712
* ProviderName
813
*/
@@ -76,7 +81,7 @@ const baseProviderSettingsSchema = z.object({
7681

7782
// Model reasoning.
7883
enableReasoningEffort: z.boolean().optional(),
79-
reasoningEffort: reasoningEffortsSchema.optional(),
84+
reasoningEffort: extendedReasoningEffortsSchema.optional(),
8085
modelMaxTokens: z.number().optional(),
8186
modelMaxThinkingTokens: z.number().optional(),
8287

packages/types/src/providers/openai.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export const openAiNativeModels = {
1212
supportsImages: true,
1313
supportsPromptCache: true,
1414
supportsReasoningEffort: true,
15+
reasoningEffort: "medium",
1516
inputPrice: 1.25,
1617
outputPrice: 10.0,
1718
cacheReadsPrice: 0.13,
@@ -23,6 +24,7 @@ export const openAiNativeModels = {
2324
supportsImages: true,
2425
supportsPromptCache: true,
2526
supportsReasoningEffort: true,
27+
reasoningEffort: "medium",
2628
inputPrice: 0.25,
2729
outputPrice: 2.0,
2830
cacheReadsPrice: 0.03,
@@ -34,6 +36,7 @@ export const openAiNativeModels = {
3436
supportsImages: true,
3537
supportsPromptCache: true,
3638
supportsReasoningEffort: true,
39+
reasoningEffort: "medium",
3740
inputPrice: 0.05,
3841
outputPrice: 0.4,
3942
cacheReadsPrice: 0.01,
@@ -229,5 +232,6 @@ export const openAiModelInfoSaneDefaults: ModelInfo = {
229232
export const azureOpenAiDefaultApiVersion = "2024-08-01-preview"
230233

231234
export const OPENAI_NATIVE_DEFAULT_TEMPERATURE = 0
235+
export const GPT5_DEFAULT_TEMPERATURE = 1.0
232236

233237
export const OPENAI_AZURE_AI_INFERENCE_PATH = "/models/chat/completions"

src/api/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export interface SingleCompletionHandler {
4444
export interface ApiHandlerCreateMessageMetadata {
4545
mode?: string
4646
taskId: string
47+
previousResponseId?: string
4748
}
4849

4950
export interface ApiHandler {

0 commit comments

Comments
 (0)