From 71bde186f4967043afb69ce8924cd8fabd63d8e5 Mon Sep 17 00:00:00 2001 From: Chris Watson Date: Fri, 13 Feb 2026 01:32:52 -0700 Subject: [PATCH 1/2] feat(coding-agent): default minimax providers to MiniMax M2.5 (#53) --- packages/coding-agent/src/config/model-resolver.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/coding-agent/src/config/model-resolver.ts b/packages/coding-agent/src/config/model-resolver.ts index ab5b294e8..847fb19ed 100644 --- a/packages/coding-agent/src/config/model-resolver.ts +++ b/packages/coding-agent/src/config/model-resolver.ts @@ -28,9 +28,9 @@ export const defaultModelPerProvider: Record = { cerebras: "zai-glm-4.6", zai: "glm-4.6", mistral: "devstral-medium-latest", - minimax: "MiniMax-M2.1", - "minimax-code": "MiniMax-M2.1", - "minimax-code-cn": "MiniMax-M2.1", + minimax: "MiniMax-M2.5", + "minimax-code": "MiniMax-M2.5", + "minimax-code-cn": "MiniMax-M2.5", opencode: "claude-opus-4-6", "kimi-code": "kimi-k2.5", }; From 79a8d224f049d5ac2f7143850f9588290cfc154e Mon Sep 17 00:00:00 2001 From: Drazen Urch Date: Fri, 13 Feb 2026 09:33:47 +0100 Subject: [PATCH 2/2] fix(ai): always include reasoning.encrypted_content for reasoning models (#50) When store is false, OpenAI does not persist response items server-side. Previously, encrypted_content was only requested when reasoningEffort or reasoningSummary options were explicitly set. Without it, reasoning items are serialized with just their ID, causing 404 errors on subsequent turns when OpenAI cannot resolve the ID reference. Fixes #41 --- packages/ai/src/providers/azure-openai-responses.ts | 7 ++++++- packages/ai/src/providers/openai-responses.ts | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/ai/src/providers/azure-openai-responses.ts b/packages/ai/src/providers/azure-openai-responses.ts index 0e793a737..486a49cb5 100644 --- a/packages/ai/src/providers/azure-openai-responses.ts +++ b/packages/ai/src/providers/azure-openai-responses.ts @@ -460,12 +460,17 @@ function buildParams( } if (model.reasoning) { + // Always request encrypted reasoning content so reasoning items can be + // replayed in multi-turn conversations when store is false (items aren't + // persisted server-side, so we must include the full content). + // See: https://github.com/can1357/oh-my-pi/issues/41 + params.include = ["reasoning.encrypted_content"]; + if (options?.reasoningEffort || options?.reasoningSummary) { params.reasoning = { effort: options?.reasoningEffort || "medium", summary: options?.reasoningSummary || "auto", }; - params.include = ["reasoning.encrypted_content"]; } else { if (model.name.toLowerCase().startsWith("gpt-5")) { // Jesus Christ, see https://community.openai.com/t/need-reasoning-false-option-for-gpt-5/1351588/7 diff --git a/packages/ai/src/providers/openai-responses.ts b/packages/ai/src/providers/openai-responses.ts index 9c33b0e24..052ad8e55 100644 --- a/packages/ai/src/providers/openai-responses.ts +++ b/packages/ai/src/providers/openai-responses.ts @@ -454,12 +454,17 @@ function buildParams(model: Model<"openai-responses">, context: Context, options } if (model.reasoning) { + // Always request encrypted reasoning content so reasoning items can be + // replayed in multi-turn conversations when store is false (items aren't + // persisted server-side, so we must include the full content). + // See: https://github.com/can1357/oh-my-pi/issues/41 + params.include = ["reasoning.encrypted_content"]; + if (options?.reasoningEffort || options?.reasoningSummary) { params.reasoning = { effort: options?.reasoningEffort || "medium", summary: options?.reasoningSummary || "auto", }; - params.include = ["reasoning.encrypted_content"]; } else { if (model.name.startsWith("gpt-5")) { // Jesus Christ, see https://community.openai.com/t/need-reasoning-false-option-for-gpt-5/1351588/7