diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index 237fb527c078..e329d14de9b8 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -578,6 +578,7 @@ export const Assistant = Schema.Struct({ structured: Schema.optional(Schema.Any), variant: Schema.optional(Schema.String), finish: Schema.optional(Schema.String), + responseHeaders: Schema.optional(Schema.Record(Schema.String, Schema.String)), }) .annotate({ identifier: "AssistantMessage" }) .pipe(withStatics((s) => ({ zod: zod(s) }))) diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts index f22da92927d2..c05b318cc0e9 100644 --- a/packages/opencode/src/session/processor.ts +++ b/packages/opencode/src/session/processor.ts @@ -471,6 +471,8 @@ export const layer: Layer.Layer< ctx.assistantMessage.finish = value.finishReason ctx.assistantMessage.cost += usage.cost ctx.assistantMessage.tokens = usage.tokens + if (value.response.headers && Object.keys(value.response.headers).length > 0) + ctx.assistantMessage.responseHeaders = value.response.headers yield* session.updatePart({ id: PartID.ascending(), reason: value.finishReason,