diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 91fa306af..af2a8c3e6 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -119,6 +119,9 @@ export async function handler( Object.entries(providerInfo.headerMappings ?? {}).forEach(([k, v]) => { headers.set(k, headers.get(v)!) }) + Object.entries(providerInfo.headers ?? {}).forEach(([k, v]) => { + headers.set(k, v) + }) headers.delete("host") headers.delete("content-length") headers.delete("x-opencode-request") @@ -250,13 +253,18 @@ export async function handler( part = part.trim() usageParser.parse(part) - if (providerInfo.format !== opts.format) { + if (providerInfo.bodyModifier) { + for (const [k, v] of Object.entries(providerInfo.bodyModifier)) { + part = part.replace(k, v) + } + c.enqueue(encoder.encode(part + "\n\n")) + } else if (providerInfo.format !== opts.format) { part = streamConverter(part) c.enqueue(encoder.encode(part + "\n\n")) } } - if (providerInfo.format === opts.format) { + if (!providerInfo.bodyModifier && providerInfo.format === opts.format) { c.enqueue(value) } diff --git a/packages/console/core/src/model.ts b/packages/console/core/src/model.ts index 831b3c5fc..3848d82bc 100644 --- a/packages/console/core/src/model.ts +++ b/packages/console/core/src/model.ts @@ -53,7 +53,8 @@ export namespace ZenData { weight: z.number().optional(), disabled: z.boolean().optional(), storeModel: z.string().optional(), - headerMappings: z.record(z.string(), z.string()).optional(), + headers: z.record(z.string(), z.string()).optional(), + bodyModifier: z.record(z.string(), z.string()).optional(), }), ), })