From e52dd340c65e4b48a28ec4796bb5fdfd88829365 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Wed, 8 Apr 2026 13:02:51 +0900 Subject: [PATCH] fix(plugin): migrate chat.params to maxOutputTokens for v1.4.0 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- src/plugin/chat-params.test.ts | 17 +++++++---------- src/plugin/chat-params.ts | 10 +++++++--- src/shared/session-prompt-params-state.ts | 3 +++ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/plugin/chat-params.test.ts b/src/plugin/chat-params.test.ts index 5f17f36eb..f75c1a243 100644 --- a/src/plugin/chat-params.test.ts +++ b/src/plugin/chat-params.test.ts @@ -123,10 +123,10 @@ describe("createChatParamsHandler", () => { setSessionPromptParams("ses_chat_params_temperature", { temperature: 0.4, topP: 0.7, + maxOutputTokens: 4096, options: { reasoningEffort: "high", thinking: { type: "disabled" }, - maxTokens: 4096, }, }) @@ -157,31 +157,29 @@ describe("createChatParamsHandler", () => { temperature: 0.4, topP: 0.7, topK: 1, + maxOutputTokens: 4096, options: { existing: true, reasoningEffort: "high", thinking: { type: "disabled" }, - maxTokens: 4096, }, }) expect(getSessionPromptParams("ses_chat_params_temperature")).toEqual({ temperature: 0.4, topP: 0.7, + maxOutputTokens: 4096, options: { reasoningEffort: "high", thinking: { type: "disabled" }, - maxTokens: 4096, }, }) }) - test("drops gpt-5.4 temperature and clamps maxTokens from bundled model capabilities", async () => { + test("drops gpt-5.4 temperature and clamps maxOutputTokens from bundled model capabilities", async () => { //#given setSessionPromptParams("ses_chat_params_temperature", { temperature: 0.7, - options: { - maxTokens: 200_000, - }, + maxOutputTokens: 200_000, }) const handler = createChatParamsHandler({ @@ -210,9 +208,8 @@ describe("createChatParamsHandler", () => { expect(output).toEqual({ topP: 1, topK: 1, - options: { - maxTokens: 128_000, - }, + maxOutputTokens: 128_000, + options: {}, }) }) diff --git a/src/plugin/chat-params.ts b/src/plugin/chat-params.ts index d69a14f8e..3bc992dae 100644 --- a/src/plugin/chat-params.ts +++ b/src/plugin/chat-params.ts @@ -18,6 +18,7 @@ export type ChatParamsOutput = { temperature?: number topP?: number topK?: number + maxOutputTokens?: number options: Record } @@ -99,6 +100,9 @@ export function createChatParamsHandler(args: { if (storedPromptParams.topP !== undefined) { output.topP = storedPromptParams.topP } + if (storedPromptParams.maxOutputTokens !== undefined) { + output.maxOutputTokens = storedPromptParams.maxOutputTokens + } if (storedPromptParams.options) { output.options = { ...output.options, @@ -124,7 +128,7 @@ export function createChatParamsHandler(args: { : undefined, temperature: typeof output.temperature === "number" ? output.temperature : undefined, topP: typeof output.topP === "number" ? output.topP : undefined, - maxTokens: typeof output.options.maxTokens === "number" ? output.options.maxTokens : undefined, + maxTokens: typeof output.maxOutputTokens === "number" ? output.maxOutputTokens : undefined, thinking: isRecord(output.options.thinking) ? output.options.thinking : undefined, }, capabilities, @@ -163,9 +167,9 @@ export function createChatParamsHandler(args: { if ("maxTokens" in compatibility) { if (compatibility.maxTokens !== undefined) { - output.options.maxTokens = compatibility.maxTokens + output.maxOutputTokens = compatibility.maxTokens } else { - delete output.options.maxTokens + delete output.maxOutputTokens } } diff --git a/src/shared/session-prompt-params-state.ts b/src/shared/session-prompt-params-state.ts index 36e956cfc..1df7d526f 100644 --- a/src/shared/session-prompt-params-state.ts +++ b/src/shared/session-prompt-params-state.ts @@ -1,6 +1,7 @@ export type SessionPromptParams = { temperature?: number topP?: number + maxOutputTokens?: number options?: Record } @@ -10,6 +11,7 @@ export function setSessionPromptParams(sessionID: string, params: SessionPromptP sessionPromptParams.set(sessionID, { ...(params.temperature !== undefined ? { temperature: params.temperature } : {}), ...(params.topP !== undefined ? { topP: params.topP } : {}), + ...(params.maxOutputTokens !== undefined ? { maxOutputTokens: params.maxOutputTokens } : {}), ...(params.options !== undefined ? { options: { ...params.options } } : {}), }) } @@ -21,6 +23,7 @@ export function getSessionPromptParams(sessionID: string): SessionPromptParams | return { ...(params.temperature !== undefined ? { temperature: params.temperature } : {}), ...(params.topP !== undefined ? { topP: params.topP } : {}), + ...(params.maxOutputTokens !== undefined ? { maxOutputTokens: params.maxOutputTokens } : {}), ...(params.options !== undefined ? { options: { ...params.options } } : {}), } }