Browse Source

fix: satisfy production build type checks

feature/add_provider_popi
weige 2 months ago
parent
commit
a5d8fab93b
  1. 8
      src/components/composer/GenerationComposer.tsx
  2. 9
      src/store/execution/nanoBananaExecutor.ts
  3. 2
      src/utils/modelSchemaDefaults.ts

8
src/components/composer/GenerationComposer.tsx

@ -989,12 +989,13 @@ export function GenerationComposer() {
return current; return current;
} }
const currentCapabilities = current.selectedModel?.capabilities ?? [];
const next = { const next = {
...current, ...current,
selectedModel: { selectedModel: {
...resolvedModel, ...resolvedModel,
capabilities: current.selectedModel.capabilities.length > 0 capabilities: currentCapabilities.length > 0
? current.selectedModel.capabilities ? currentCapabilities
: resolvedModel.capabilities, : resolvedModel.capabilities,
}, },
}; };
@ -1013,10 +1014,11 @@ export function GenerationComposer() {
nodeModel && nodeModel &&
selectedModelNeedsPopiserverMetadataLookup(nodeModel) selectedModelNeedsPopiserverMetadataLookup(nodeModel)
) { ) {
const nodeModelCapabilities = nodeModel.capabilities ?? [];
updateNodeData(activeContext.node.id, { updateNodeData(activeContext.node.id, {
selectedModel: { selectedModel: {
...resolvedModel, ...resolvedModel,
capabilities: nodeModel.capabilities.length > 0 ? nodeModel.capabilities : resolvedModel.capabilities, capabilities: nodeModelCapabilities.length > 0 ? nodeModelCapabilities : resolvedModel.capabilities,
}, },
}); });
} }

9
src/store/execution/nanoBananaExecutor.ts

@ -7,6 +7,7 @@
import type { import type {
NanoBananaNodeData, NanoBananaNodeData,
Resolution,
SelectedModel, SelectedModel,
} from "@/types"; } from "@/types";
import { calculateGenerationCost } from "@/utils/costCalculator"; import { calculateGenerationCost } from "@/utils/costCalculator";
@ -46,6 +47,12 @@ export interface NanoBananaOptions {
useStoredFallback?: boolean; useStoredFallback?: boolean;
} }
const GEMINI_RESOLUTIONS: Resolution[] = ["512", "1K", "2K", "4K"];
function normalizeGeminiResolution(value: string): Resolution {
return GEMINI_RESOLUTIONS.includes(value as Resolution) ? (value as Resolution) : "2K";
}
function isProviderOverloadError(error: unknown): boolean { function isProviderOverloadError(error: unknown): boolean {
const message = error instanceof Error ? error.message : String(error); const message = error instanceof Error ? error.message : String(error);
return /provider is temporarily overloaded|system\s+disk\s+overloaded/i.test(message); return /provider is temporarily overloaded|system\s+disk\s+overloaded/i.test(message);
@ -376,7 +383,7 @@ export async function executeNanoBanana(
if (modelToUse.provider === "fal" && modelToUse.pricing) { if (modelToUse.provider === "fal" && modelToUse.pricing) {
addIncurredCost(modelToUse.pricing.amount); addIncurredCost(modelToUse.pricing.amount);
} else if (modelToUse.provider === "gemini") { } else if (modelToUse.provider === "gemini") {
const generationCost = calculateGenerationCost(nodeData.model, nodeConfig.resolution); const generationCost = calculateGenerationCost(nodeData.model, normalizeGeminiResolution(nodeConfig.resolution));
addIncurredCost(generationCost); addIncurredCost(generationCost);
} }

2
src/utils/modelSchemaDefaults.ts

@ -57,7 +57,7 @@ export function buildImageDefaultsFromSchema(schema: ModelParameter[]): {
return { return {
...(hasValue(ratioValue) ? { aspectRatio: String(ratioValue) as AspectRatio } : {}), ...(hasValue(ratioValue) ? { aspectRatio: String(ratioValue) as AspectRatio } : {}),
...(hasValue(resolutionValue) ? { resolution: String(resolutionValue) } : {}), ...(hasValue(resolutionValue) ? { resolution: String(resolutionValue) } : {}),
...(Number.isInteger(imageCountValue) && imageCountValue > 0 ...(typeof imageCountValue === "number" && Number.isInteger(imageCountValue) && imageCountValue > 0
? { imageCount: imageCountValue as ImageGenerationCount } ? { imageCount: imageCountValue as ImageGenerationCount }
: {}), : {}),
parameters, parameters,

Loading…
Cancel
Save