summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/session/message-v2.ts10
-rw-r--r--packages/opencode/test/session/message-v2.test.ts8
2 files changed, 17 insertions, 1 deletions
diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts
index a017ead1e..5f97074b2 100644
--- a/packages/opencode/src/session/message-v2.ts
+++ b/packages/opencode/src/session/message-v2.ts
@@ -938,10 +938,18 @@ export const toModelMessagesEffect = Effect.fnUntraced(function* (
})
}
if (part.type === "reasoning") {
+ if (differentModel) {
+ if (part.text.trim().length > 0)
+ assistantMessage.parts.push({
+ type: "text",
+ text: part.text,
+ })
+ continue
+ }
assistantMessage.parts.push({
type: "reasoning",
text: part.text,
- ...(differentModel ? {} : { providerMetadata: part.metadata }),
+ providerMetadata: part.metadata,
})
}
}
diff --git a/packages/opencode/test/session/message-v2.test.ts b/packages/opencode/test/session/message-v2.test.ts
index 89bae246a..afd24e7e1 100644
--- a/packages/opencode/test/session/message-v2.test.ts
+++ b/packages/opencode/test/session/message-v2.test.ts
@@ -469,6 +469,13 @@ describe("session.message-v2.toModelMessage", () => {
},
{
...basePart(assistantID, "a2"),
+ type: "reasoning",
+ text: "thinking",
+ metadata: { openai: { reasoning: "meta" } },
+ time: { start: 0 },
+ },
+ {
+ ...basePart(assistantID, "a3"),
type: "tool",
callID: "call-1",
tool: "bash",
@@ -495,6 +502,7 @@ describe("session.message-v2.toModelMessage", () => {
role: "assistant",
content: [
{ type: "text", text: "done" },
+ { type: "text", text: "thinking" },
{
type: "tool-call",
toolCallId: "call-1",