import type { RequestFailureDetails } from "@/lib/request-error"; export type ImageGenerationStatusStreamPayload = { phase?: "queued" | "processing" | "finalizing" | "failed" | "completed"; userMessageId?: string; requestId?: string; failure?: RequestFailureDetails; providerType?: string; modelName?: string; imageCount?: number; queuePosition?: number; sameModelRunningCount?: number; concurrencyLimit?: number; estimatedWaitMs?: number; }; export function findImageGenerationFailure( messages: { role: string; parts?: unknown[] }[], userMessageId: string, ): ImageGenerationStatusStreamPayload | null { if (!userMessageId) return null; for (const message of [...messages].reverse()) { if (message.role !== "assistant") continue; for (const part of message.parts || []) { const candidate = part as { type?: string; data?: ImageGenerationStatusStreamPayload }; if (candidate.type !== "data-imageGenerationStatus") continue; const status = candidate.data; if (status?.phase === "failed" && status.failure && status.userMessageId === userMessageId) { return status; } } } return null; }