diff --git a/src/components/nodes/ControlPanel.tsx b/src/components/nodes/ControlPanel.tsx index aa526284..370ac04e 100644 --- a/src/components/nodes/ControlPanel.tsx +++ b/src/components/nodes/ControlPanel.tsx @@ -236,9 +236,17 @@ function GenerateImageControls({ node }: { node: Node }) { try { const capabilities = IMAGE_CAPABILITIES.join(","); const headers: HeadersInit = {}; - if (replicateApiKey) headers["X-Replicate-Key"] = replicateApiKey; - if (falApiKey) headers["X-Fal-Key"] = falApiKey; - if (kieApiKey) headers["X-Kie-Key"] = kieApiKey; + switch (currentProvider) { + case "replicate": + if (replicateApiKey) headers["X-Replicate-Key"] = replicateApiKey; + break; + case "fal": + if (falApiKey) headers["X-Fal-Key"] = falApiKey; + break; + case "kie": + if (kieApiKey) headers["X-Kie-Key"] = kieApiKey; + break; + } const response = await deduplicatedFetch(`/api/models?provider=${currentProvider}&capabilities=${capabilities}`, { headers }); if (response.ok) { @@ -832,14 +840,14 @@ function LLMControls({ node }: { node: Node }) {
diff --git a/src/components/nodes/PromptConstructorNode.tsx b/src/components/nodes/PromptConstructorNode.tsx index 9ef79bb7..91f299cb 100644 --- a/src/components/nodes/PromptConstructorNode.tsx +++ b/src/components/nodes/PromptConstructorNode.tsx @@ -119,21 +119,16 @@ export function PromptConstructorNode({ id, data, selected }: NodeProps { - let resolved = localTemplate; - availableVariables.forEach((v) => { - resolved = resolved.replace(new RegExp(`@${v.name}`, 'g'), v.value); - }); - return resolved; + const valueMap = new Map(availableVariables.map(v => [v.name, v.value])); + return localTemplate.replace(/@(\w+)/g, (match, name) => valueMap.get(name) ?? match); }, [localTemplate, availableVariables]); // Sync resolved text to outputText so downstream nodes can read it before execution useEffect(() => { - let resolved = nodeData.template; - availableVariables.forEach((v) => { - resolved = resolved.replace(new RegExp(`@${v.name}`, 'g'), v.value); - }); + const valueMap = new Map(availableVariables.map(v => [v.name, v.value])); + const resolved = nodeData.template.replace(/@(\w+)/g, (match, name) => valueMap.get(name) ?? match); const outputValue = resolved || null; if (outputValue !== nodeData.outputText) { updateNodeData(id, { outputText: outputValue });