From d47feb9969f63c64715e74c21c9c05a43b6870cd Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Thu, 25 Sep 2025 21:06:58 -0500 Subject: [PATCH 1/5] tweak: include usage by default for openai compatible providers (#2788) --- packages/opencode/src/provider/provider.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 5283da6a3..16579ed40 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -338,6 +338,9 @@ export namespace Provider { const s = await state() const pkg = model.provider?.npm ?? provider.npm ?? provider.id const options = { ...s.providers[provider.id]?.options } + if (pkg.includes("@ai-sdk/openai-compatible") && options["includeUsage"] === undefined) { + options["includeUsage"] = true + } const key = Bun.hash.xxHash32(JSON.stringify({ pkg, options })) const existing = s.sdk.get(key) if (existing) return existing From 5d95846df1d294fcae93ea51c6eeab96efaa2635 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Fri, 26 Sep 2025 00:23:30 -0500 Subject: [PATCH 2/5] fix: openai reasoning issue (#2780) --- packages/opencode/src/session/message-v2.ts | 5 +++++ packages/opencode/src/session/prompt.ts | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index 2d850e0a4..7704a6155 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -115,6 +115,7 @@ export namespace MessageV2 { end: z.number().optional(), }) .optional(), + metadata: z.record(z.string(), z.any()).optional(), }).meta({ ref: "TextPart", }) @@ -138,6 +139,7 @@ export namespace MessageV2 { callID: z.string(), tool: z.string(), state: ToolState, + metadata: z.record(z.string(), z.any()).optional(), }).meta({ ref: "ToolPart", }) @@ -519,6 +521,7 @@ export namespace MessageV2 { { type: "text", text: part.text, + providerMetadata: part.metadata, }, ] if (part.type === "step-start") @@ -536,6 +539,7 @@ export namespace MessageV2 { toolCallId: part.callID, input: part.state.input, output: part.state.time.compacted ? "[Old tool result content cleared]" : part.state.output, + callProviderMetadata: part.metadata, }, ] if (part.state.status === "error") @@ -546,6 +550,7 @@ export namespace MessageV2 { toolCallId: part.callID, input: part.state.input, errorText: part.state.error, + callProviderMetadata: part.metadata, }, ] } diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index c8eeb5772..d385ea922 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -892,6 +892,7 @@ export namespace SessionPrompt { time: { start: Date.now(), }, + metadata: value.providerMetadata, } break @@ -913,6 +914,7 @@ export namespace SessionPrompt { ...part.time, end: Date.now(), } + if (value.providerMetadata) part.metadata = value.providerMetadata await Session.updatePart(part) delete reasoningMap[value.id] } @@ -952,6 +954,7 @@ export namespace SessionPrompt { start: Date.now(), }, }, + metadata: value.providerMetadata, }) toolcalls[value.toolCallId] = part as MessageV2.ToolPart } @@ -1054,12 +1057,14 @@ export namespace SessionPrompt { time: { start: Date.now(), }, + metadata: value.providerMetadata, } break case "text-delta": if (currentText) { currentText.text += value.text + if (value.providerMetadata) currentText.metadata = value.providerMetadata if (currentText.text) await Session.updatePart(currentText) } break @@ -1071,6 +1076,7 @@ export namespace SessionPrompt { start: Date.now(), end: Date.now(), } + if (value.providerMetadata) currentText.metadata = value.providerMetadata await Session.updatePart(currentText) } currentText = undefined From 7ec3900208336a76344da98d984cd3f4bc1ddde8 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 26 Sep 2025 01:27:53 -0400 Subject: [PATCH 3/5] core: enable reasoning.encrypted_content and reasoningSummary for opencode provider\ntui: adjust editorY position calculation --- packages/opencode/src/provider/transform.ts | 4 ++-- packages/tui/internal/tui/tui.go | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 63219e9ae..e394f9ef4 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -98,8 +98,8 @@ export namespace ProviderTransform { } if (providerID === "opencode") { result["promptCacheKey"] = sessionID - // result["include"] = ["reasoning.encrypted_content"] - // result["reasoningSummary"] = "auto" + result["include"] = ["reasoning.encrypted_content"] + result["reasoningSummary"] = "auto" } } return result diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index c1bc73c7c..751e507ee 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -967,7 +967,6 @@ func (a Model) home() (string, int, int) { █░░░ █░░█ █░░█ █▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀` - logo := lipgloss.JoinHorizontal( lipgloss.Top, muted(open), @@ -1043,7 +1042,7 @@ func (a Model) home() (string, int, int) { ) editorX := max(0, (effectiveWidth-editorWidth)/2) - editorY := (a.height / 2) + (mainHeight / 2) - 2 + editorY := (a.height / 2) + (mainHeight / 2) - 3 if editorLines > 1 { content := a.editor.Content() From f5c7a94abe289b26d2f1e794d41abd987a0661a9 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 26 Sep 2025 01:37:44 -0400 Subject: [PATCH 4/5] turn reasoning summaries back on by default for zen --- packages/opencode/src/provider/transform.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index e394f9ef4..3232a5f17 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -99,7 +99,7 @@ export namespace ProviderTransform { if (providerID === "opencode") { result["promptCacheKey"] = sessionID result["include"] = ["reasoning.encrypted_content"] - result["reasoningSummary"] = "auto" + result["reasoningSummary"] = "detailed" } } return result From 55d154d4ac71c164ba70c8bba2077791ddc435f2 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 26 Sep 2025 01:40:32 -0400 Subject: [PATCH 5/5] tui: fix opencode logo spacing in home view --- packages/tui/internal/tui/tui.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index 751e507ee..2de16eab1 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -956,10 +956,10 @@ func (a Model) home() (string, int, int) { muted := styles.NewStyle().Foreground(t.TextMuted()).Background(t.Background()).Render open := ` - -█▀▀█ █▀▀█ █▀▀█ █▀▀▄ -█░░█ █░░█ █▀▀▀ █░░█ -▀▀▀▀ █▀▀▀ ▀▀▀▀ ▀ ▀` + +█▀▀█ █▀▀█ █▀▀█ █▀▀▄ +█░░█ █░░█ █▀▀▀ █░░█ +▀▀▀▀ █▀▀▀ ▀▀▀▀ ▀ ▀ ` code := ` ▄