interface ModelRuntimeLike { modelId?: string | null; defaultParams?: unknown; } interface ResolveModelRuntimeIdOptions { overrideModelId?: string | null; providerType?: string | null; } function fallbackRuxaRuntimeId(modelId: string) { if (!modelId.startsWith("google/")) { return modelId; } const candidate = modelId.slice("google/".length).trim(); return candidate || modelId; } function toRecord(value: unknown): Record | null { if (typeof value !== "object" || value === null || Array.isArray(value)) { return null; } return value as Record; } function normalizeRuntimeModelId(value: unknown): string | null { if (typeof value !== "string") return null; const normalized = value.trim(); return normalized || null; } export function resolveModelRuntimeId( model: ModelRuntimeLike | null | undefined, options?: ResolveModelRuntimeIdOptions, ): string { const overrideModelId = normalizeRuntimeModelId(options?.overrideModelId); if (overrideModelId) { return overrideModelId; } const defaultParams = toRecord(model?.defaultParams); const endpointModelId = normalizeRuntimeModelId(defaultParams?.endpoint); if (endpointModelId) { return endpointModelId; } const resolvedModelId = normalizeRuntimeModelId(model?.modelId) || ""; if (options?.providerType === "ruxa-image") { return fallbackRuxaRuntimeId(resolvedModelId); } return resolvedModelId; }