| import { NextRequest, NextResponse } from 'next/server'; |
| import { getSession } from '@/lib/auth/session'; |
| import { taskManager } from '@/lib/server-generate/singleton'; |
|
|
| export async function POST(request: NextRequest) { |
| const session = await getSession(); |
| if (!session) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); |
|
|
| let taskId: string; |
| try { ({ taskId } = await request.json()); } catch { |
| return NextResponse.json({ error: 'Invalid JSON' }, { status: 400 }); |
| } |
| const task = taskManager.getTask(taskId); |
| if (!task) { |
| return NextResponse.json({ ok: true, alreadyDone: true }); |
| } |
|
|
| if (task.sessionId !== session.userId) { |
| return NextResponse.json({ error: 'Forbidden' }, { status: 403 }); |
| } |
|
|
| if (task.status === 'completed' || task.status === 'failed' || task.status === 'cancelled') { |
| return NextResponse.json({ ok: true, alreadyDone: true }); |
| } |
|
|
| const hasOrchestrator = !!task.orchestrator; |
| if (task.orchestrator) { |
| task.orchestrator.stop(); |
| } |
| task.status = 'stopping'; |
|
|
| return NextResponse.json({ ok: true, hadOrchestrator: hasOrchestrator }); |
| } |
|
|