Merge branch 'dev' into opentui

This commit is contained in:
Dax Raad 2025-09-26 01:54:53 -04:00
commit 65028c1aea
5 changed files with 21 additions and 8 deletions

View file

@ -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

View file

@ -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"] = "detailed"
}
}
return result

View file

@ -117,6 +117,7 @@ export namespace MessageV2 {
end: z.number().optional(),
})
.optional(),
metadata: z.record(z.string(), z.any()).optional(),
}).meta({
ref: "TextPart",
})
@ -140,6 +141,7 @@ export namespace MessageV2 {
callID: z.string(),
tool: z.string(),
state: ToolState,
metadata: z.record(z.string(), z.any()).optional(),
}).meta({
ref: "ToolPart",
})
@ -524,6 +526,7 @@ export namespace MessageV2 {
{
type: "text",
text: part.text,
providerMetadata: part.metadata,
},
]
if (part.type === "step-start")
@ -541,6 +544,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")
@ -551,6 +555,7 @@ export namespace MessageV2 {
toolCallId: part.callID,
input: part.state.input,
errorText: part.state.error,
callProviderMetadata: part.metadata,
},
]
}

View file

@ -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]
}
@ -954,6 +956,7 @@ export namespace SessionPrompt {
start: Date.now(),
},
},
metadata: value.providerMetadata,
})
toolcalls[value.toolCallId] = part as MessageV2.ToolPart
}
@ -1042,12 +1045,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
@ -1059,6 +1064,7 @@ export namespace SessionPrompt {
start: Date.now(),
end: Date.now(),
}
if (value.providerMetadata) currentText.metadata = value.providerMetadata
await Session.updatePart(currentText)
}
currentText = undefined

View file

@ -956,10 +956,10 @@ func (a Model) home() (string, int, int) {
muted := styles.NewStyle().Foreground(t.TextMuted()).Background(t.Background()).Render
open := `
`
`
code := `
@ -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()