import { JsonWallMuseDb } from "../packages/db/src/json-store.js"; import type { GenerationWorkerJobData } from "../packages/db/src/json-store.js"; import { GenerationProcessor } from "../apps/worker-generation/src/processor.js"; const db = JsonWallMuseDb.fromEnv(); const processor = new GenerationProcessor(db); const jobData: GenerationWorkerJobData = { groupId: crypto.randomUUID(), taskId: crypto.randomUUID(), userId: "user_mock", mode: "text_to_image", prompt: "futuristic city at sunrise, clean wallpaper composition", negativePrompt: "text, logo, watermark", resolution: "2k", providerId: "00000000-0000-4000-8000-000000000001", providerSlug: "mock", modelId: "00000000-0000-4000-8000-000000000101", modelSlug: "mock-wallpaper-v1", seed: 42 }; await db.seedQueuedGeneration(jobData); console.log(`queued group=${jobData.groupId} task=${jobData.taskId}`); await processor.process({ data: jobData, updateProgress: async (progress: number) => console.log(`progress=${progress}`) } as never); const state = await db.read(); const group = state.generationGroups.find((item) => item.id === jobData.groupId); const assets = group?.assets ?? []; const logs = state.providerCallLogs.filter((item) => item.groupId === jobData.groupId); console.log(`final status=${group?.status}`); console.log(`assets=${assets.map((asset) => `${asset.kind}:${asset.status}`).join(",")}`); console.log(`provider_call_logs=${logs.length}`); if (group?.status !== "succeeded") throw new Error(`Expected succeeded, received ${group?.status ?? "missing"}`); if (!["master", "landscape", "portrait"].every((kind) => assets.some((asset) => asset.kind === kind && asset.status === "active"))) throw new Error("Expected active master, landscape and portrait assets"); if (logs.length < 3 || !logs.every((log) => log.status === "succeeded")) throw new Error("Expected succeeded provider_call_logs for each generated asset");