Files
aigen/server/api/generate/[id]/stream.get.ts
T
towsty 4c5c65db98 Add Nuxt MiniMax H3 relay studio for local ComfyUI.
Headless image-to-video UI queues jobs on the desktop ComfyUI instance with live SSE progress and Authentik SSO.
2026-08-25 17:43:29 -05:00

42 lines
949 B
TypeScript

export default defineEventHandler(async (event) => {
const id = getRouterParam(event, 'id')
const job = id ? getJob(id) : undefined
if (!job) {
throw createError({ statusCode: 404, statusMessage: 'Job not found' })
}
const stream = createEventStream(event)
const send = async (payload: unknown) => {
await stream.push(JSON.stringify(payload))
}
await send({
type: 'hello',
status: job.status,
message: job.message,
progress: job.progress,
step: job.step,
maxStep: job.maxStep,
promptId: job.promptId,
elapsedMs: Date.now() - job.startedAt
})
for (const past of job.events) {
await send(past)
}
const unsubscribe = subscribeJob(job, (payload) => {
void send(payload).then(() => {
if (payload.type === 'complete' || payload.type === 'error') {
void stream.close()
}
})
})
stream.onClosed(() => {
unsubscribe()
})
return stream.send()
})