summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/plugin/codex.ts5
-rw-r--r--packages/opencode/src/plugin/github-copilot/copilot.ts8
-rw-r--r--packages/opencode/src/session/llm.ts7
-rw-r--r--packages/opencode/test/session/llm.test.ts3
4 files changed, 15 insertions, 8 deletions
diff --git a/packages/opencode/src/plugin/codex.ts b/packages/opencode/src/plugin/codex.ts
index 77c00eb4f..bdeef9823 100644
--- a/packages/opencode/src/plugin/codex.ts
+++ b/packages/opencode/src/plugin/codex.ts
@@ -599,5 +599,10 @@ export async function CodexAuthPlugin(input: PluginInput): Promise<Hooks> {
output.headers["User-Agent"] = `opencode/${Installation.VERSION} (${os.platform()} ${os.release()}; ${os.arch()})`
output.headers.session_id = input.sessionID
},
+ "chat.params": async (input, output) => {
+ if (input.model.providerID !== "openai") return
+ // Match codex cli
+ output.maxOutputTokens = undefined
+ },
}
}
diff --git a/packages/opencode/src/plugin/github-copilot/copilot.ts b/packages/opencode/src/plugin/github-copilot/copilot.ts
index ea759b508..c0425b7ef 100644
--- a/packages/opencode/src/plugin/github-copilot/copilot.ts
+++ b/packages/opencode/src/plugin/github-copilot/copilot.ts
@@ -309,6 +309,14 @@ export async function CopilotAuthPlugin(input: PluginInput): Promise<Hooks> {
},
],
},
+ "chat.params": async (incoming, output) => {
+ if (!incoming.model.providerID.includes("github-copilot")) return
+
+ // Match github copilot cli, omit maxOutputTokens for gpt models
+ if (incoming.model.api.id.includes("gpt")) {
+ output.maxOutputTokens = undefined
+ }
+ },
"chat.headers": async (incoming, output) => {
if (!incoming.model.providerID.includes("github-copilot")) return
diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts
index 7ef6269b5..7f60c02b1 100644
--- a/packages/opencode/src/session/llm.ts
+++ b/packages/opencode/src/session/llm.ts
@@ -160,11 +160,6 @@ export namespace LLM {
...input.messages,
]
- const maxOutputTokens =
- isOpenaiOauth || provider.id.includes("github-copilot")
- ? undefined
- : ProviderTransform.maxOutputTokens(input.model)
-
const params = await Plugin.trigger(
"chat.params",
{
@@ -180,7 +175,7 @@ export namespace LLM {
: undefined,
topP: input.agent.topP ?? ProviderTransform.topP(input.model),
topK: ProviderTransform.topK(input.model),
- maxOutputTokens,
+ maxOutputTokens: ProviderTransform.maxOutputTokens(input.model),
options,
},
)
diff --git a/packages/opencode/test/session/llm.test.ts b/packages/opencode/test/session/llm.test.ts
index 18b704f4d..82ee8c081 100644
--- a/packages/opencode/test/session/llm.test.ts
+++ b/packages/opencode/test/session/llm.test.ts
@@ -743,8 +743,7 @@ describe("session.llm.stream", () => {
expect((body.reasoning as { effort?: string } | undefined)?.effort).toBe("high")
const maxTokens = body.max_output_tokens as number | undefined
- const expectedMaxTokens = ProviderTransform.maxOutputTokens(resolved)
- expect(maxTokens).toBe(expectedMaxTokens)
+ expect(maxTokens).toBe(undefined) // match codex cli behavior
},
})
})