diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index 2d850e0a..7704a615 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 c8eeb577..d385ea92 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