From a111291de3580696cb2260aed257693f3616810a Mon Sep 17 00:00:00 2001 From: shrimbly Date: Sun, 19 Apr 2026 19:59:13 +1200 Subject: [PATCH] feat: add client-side polling support to generateVideoExecutor After the initial /api/generate response, check for polling flag and enter pollGenerateTask loop instead of waiting on a single long request. Co-Authored-By: Claude Opus 4.6 --- src/store/execution/generateVideoExecutor.ts | 24 +++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/store/execution/generateVideoExecutor.ts b/src/store/execution/generateVideoExecutor.ts index 140eb2a3..077857e1 100644 --- a/src/store/execution/generateVideoExecutor.ts +++ b/src/store/execution/generateVideoExecutor.ts @@ -7,6 +7,7 @@ import type { GenerateVideoNodeData } from "@/types"; import { buildGenerateHeaders } from "@/store/utils/buildApiHeaders"; +import { pollGenerateTask } from "./pollTaskCompletion"; import type { NodeExecutionContext } from "./types"; export interface GenerateVideoOptions { @@ -123,7 +124,28 @@ export async function executeGenerateVideo( throw new Error(errorMessage); } - const result = await response.json(); + let result = await response.json(); + + // Handle polling response (long-running Kie tasks) + if (result.polling) { + result = await pollGenerateTask({ + taskId: result.taskId, + provider: result.pollProvider, + modelId: result.pollModelId, + modelName: result.pollModelName, + mediaType: result.pollMediaType, + headers, + signal, + }); + + if (!result.success) { + updateNodeData(node.id, { + status: "error", + error: result.error || "Generation failed", + }); + throw new Error(result.error || "Generation failed"); + } + } // Handle video response (video or videoUrl field) const videoData = result.video || result.videoUrl;