From 65940dde7635711b940c482af3a6972df0178459 Mon Sep 17 00:00:00 2001 From: Diego Rodrigues de Sa e Souza Date: Mon, 10 Aug 2026 13:25:20 -0300 Subject: [PATCH] fix(quality): green open-sse+dashboard typecheck base-reds (#9985) Release-equivalent fast-gates surface 5 real TS regressions inherited by the base from merged Fal/guardrails/cursor work (fast-gates PR->release do not run these, so they accrued on release/v3.8.50): - open-sse/handlers/imageGeneration/providers/fal.ts: normalizeProviderImagePayload missing 4th 'b64_json' arg (TS2554). - open-sse/handlers/videoGeneration/falHandler.ts: narrow video to Record before .url. - src/app/api/v1/images/generations/route.ts: type the toJsonErrorPayload read. - src/lib/guardrails/visionBridgeHelpers.ts: cast through unknown for UA fetch. - src/lib/providers/mergeProviderModelListing.ts: drop index-signature requirement that made interface RegistryModel[] unassignable (TS2322, from #9911). All fixed in source (keeps the gates meaningful); each reproduces on the base tip. Co-authored-by: OmniRoute maintenance --- open-sse/handlers/imageGeneration/providers/fal.ts | 2 +- open-sse/handlers/videoGeneration/falHandler.ts | 5 ++++- src/app/api/v1/images/generations/route.ts | 4 +++- src/lib/guardrails/visionBridgeHelpers.ts | 2 +- src/lib/providers/mergeProviderModelListing.ts | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/open-sse/handlers/imageGeneration/providers/fal.ts b/open-sse/handlers/imageGeneration/providers/fal.ts index 2a72d5c77a..5d4617623e 100644 --- a/open-sse/handlers/imageGeneration/providers/fal.ts +++ b/open-sse/handlers/imageGeneration/providers/fal.ts @@ -89,7 +89,7 @@ export async function handleFalAIImageEdit({ const payload = await response.json(); const normalizedBody = body.response_format === undefined ? { ...body, response_format: "b64_json" } : body; - const imagesOut = await normalizeProviderImagePayload(payload, normalizedBody, log); + const imagesOut = await normalizeProviderImagePayload(payload, normalizedBody, log, "b64_json"); return saveImageSuccessResult({ provider, model: editModel, diff --git a/open-sse/handlers/videoGeneration/falHandler.ts b/open-sse/handlers/videoGeneration/falHandler.ts index c79827f3c1..bd98f5068a 100644 --- a/open-sse/handlers/videoGeneration/falHandler.ts +++ b/open-sse/handlers/videoGeneration/falHandler.ts @@ -90,7 +90,10 @@ function absoluteFalUrl(value: unknown, baseUrl: string): string | undefined { function normalizeFalVideoResponse(payload: unknown) { const record = payload && typeof payload === "object" ? (payload as Record) : {}; - const video = record.video && typeof record.video === "object" ? record.video : null; + const video = + record.video && typeof record.video === "object" + ? (record.video as Record) + : null; const url = video && typeof video.url === "string" ? video.url.trim() : ""; if (!url) { diff --git a/src/app/api/v1/images/generations/route.ts b/src/app/api/v1/images/generations/route.ts index 7f32969d99..0037d538cf 100644 --- a/src/app/api/v1/images/generations/route.ts +++ b/src/app/api/v1/images/generations/route.ts @@ -307,7 +307,9 @@ async function postHandler(request, context) { }); } - const errorPayload = toJsonErrorPayload((result as any).error, "Image generation provider error"); + const errorPayload = toJsonErrorPayload((result as any).error, "Image generation provider error") as { + error?: { message?: string }; + }; const message = typeof errorPayload?.error?.message === "string" ? errorPayload.error.message diff --git a/src/lib/guardrails/visionBridgeHelpers.ts b/src/lib/guardrails/visionBridgeHelpers.ts index c44e6bb2f9..7841dd47db 100644 --- a/src/lib/guardrails/visionBridgeHelpers.ts +++ b/src/lib/guardrails/visionBridgeHelpers.ts @@ -222,7 +222,7 @@ const VISION_BRIDGE_UA_FETCH: typeof fetch = ((input: RequestInfo | URL, init?: "user-agent": "omniroute-vision-bridge", ...((init?.headers as Record | undefined) ?? {}), }, - })) as typeof fetch; + })) as unknown as typeof fetch; /** * Resolve every image part in the body to a base64 data URI when the target diff --git a/src/lib/providers/mergeProviderModelListing.ts b/src/lib/providers/mergeProviderModelListing.ts index 55410d0fd9..ac097cbf36 100644 --- a/src/lib/providers/mergeProviderModelListing.ts +++ b/src/lib/providers/mergeProviderModelListing.ts @@ -19,7 +19,7 @@ export type ProviderListingModel = { export type MergeProviderModelListingInput = { providerId: string; - registryModels: Array<{ id: string; name?: string; [key: string]: unknown }>; + registryModels: Array<{ id: string; name?: string }>; syncedModels: Array<{ id: string; name?: string; [key: string]: unknown }>; customModels: Array<{ id: string; name?: string; source?: string; [key: string]: unknown }>; usesCuratedModelsOnly?: boolean;