From b75da1f3e0b58b6033ec69a7aeca0ab499a6c845 Mon Sep 17 00:00:00 2001 From: darkskygit Date: Fri, 7 Jun 2024 05:41:25 +0000 Subject: [PATCH] fix: handle unexpected fal response (#7158) --- .../server/src/plugins/copilot/providers/fal.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/backend/server/src/plugins/copilot/providers/fal.ts b/packages/backend/server/src/plugins/copilot/providers/fal.ts index 9fc1e56630..3f492d4a8a 100644 --- a/packages/backend/server/src/plugins/copilot/providers/fal.ts +++ b/packages/backend/server/src/plugins/copilot/providers/fal.ts @@ -26,8 +26,8 @@ const FalImageSchema = z url: z.string(), seed: z.number().optional(), content_type: z.string(), - file_name: z.string(), - file_size: z.number(), + file_name: z.string().optional(), + file_size: z.number().optional(), width: z.number(), height: z.number(), }) @@ -200,8 +200,10 @@ export class FalProvider if (model.startsWith('workflows/')) { const stream = await falStream(model, { input: prompt }); - const result = FalStreamOutputSchema.parse(await stream.done()); - return result.output; + const result = FalStreamOutputSchema.safeParse(await stream.done()); + if (result.success) return result.data.output; + const errors = JSON.stringify(result.error.errors); + throw new Error(`Unexpected fal response: ${errors}`); } else { const response = await fetch(`https://fal.run/fal-ai/${model}`, { method: 'POST', @@ -217,7 +219,10 @@ export class FalProvider }), signal: options.signal, }); - return FalResponseSchema.parse(await response.json()); + const result = FalResponseSchema.safeParse(await response.json()); + if (result.success) return result.data; + const errors = JSON.stringify(result.error.errors); + throw new Error(`Unexpected fal response: ${errors}`); } }