From d4877abff90909b74039c918e2eed2757962a5a4 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Sun, 12 Apr 2026 20:14:22 -0400 Subject: [PATCH 1/2] fix: add rAuctions module stub to fix missing import crash The server imported rauctions/mod but the module was never committed, causing a crash loop on startup. Co-Authored-By: Claude Opus 4.6 --- modules/rauctions/mod.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 modules/rauctions/mod.ts diff --git a/modules/rauctions/mod.ts b/modules/rauctions/mod.ts new file mode 100644 index 00000000..d35fe44a --- /dev/null +++ b/modules/rauctions/mod.ts @@ -0,0 +1,20 @@ +/** + * rAuctions module — Community auctions with USDC (stub). + * TODO: Implement auction logic. + */ + +import { Hono } from 'hono'; +import type { RSpaceModule } from '../../shared/module'; + +const routes = new Hono(); + +routes.get('/', (c) => c.text('rAuctions — coming soon')); + +export const auctionsModule: RSpaceModule = { + id: 'auctions', + name: 'rAuctions', + icon: '🏛', + description: 'Community auctions with USDC', + routes, + scoping: { scope: 'space', default: 'disabled' }, +}; From 0b1e33e1d2b9dbb4c3fe9a04eb8b13468deaab56 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Sun, 12 Apr 2026 20:27:59 -0400 Subject: [PATCH 2/2] fix(video-gen): use fal.ai status_url from submit response + add logging Use the status_url returned by fal.ai submit instead of constructing it manually. Add logging for submit success and poll HTTP errors to debug Seedance queue status polling. Co-Authored-By: Claude Opus 4.6 --- server/index.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/server/index.ts b/server/index.ts index d11d4678..db9d14d5 100644 --- a/server/index.ts +++ b/server/index.ts @@ -1243,20 +1243,23 @@ async function processVideoGenJob(job: VideoGenJob) { return; } - const { request_id } = await submitRes.json() as { request_id: string }; + const submitData = await submitRes.json() as { request_id: string; status_url?: string; response_url?: string }; + const request_id = submitData.request_id; + const statusPollUrl = submitData.status_url || `https://queue.fal.run/${MODEL}/requests/${request_id}/status`; + let responseUrl = submitData.response_url || ""; + console.log(`[video-gen] Job ${job.id} submitted (model=${MODEL}, reqId=${request_id})`); // Poll for completion (up to 10 min) const deadline = Date.now() + 600_000; - let responseUrl = ""; let completed = false; while (Date.now() < deadline) { await new Promise((r) => setTimeout(r, 3000)); - const statusRes = await fetch( - `https://queue.fal.run/${MODEL}/requests/${request_id}/status`, - { headers: falHeaders }, - ); - if (!statusRes.ok) continue; + const statusRes = await fetch(statusPollUrl, { headers: falHeaders }); + if (!statusRes.ok) { + console.log(`[video-gen] Poll ${job.id}: status HTTP ${statusRes.status}`); + continue; + } const statusData = await statusRes.json() as { status: string; response_url?: string; queue_position?: number }; console.log(`[video-gen] Poll ${job.id}: status=${statusData.status}`); job.falStatus = statusData.status;