// AGENT INSTRUCTION: After every write (INSERT/UPDATE/DELETE), you MUST: // 1. Insert activity feed entry // 2. Call pg.notify('project_e_events', JSON.stringify({ type, action, id, workspace_id })) // See AGENTS.md for full rules. import { NextRequest, NextResponse } from 'next/server'; import { withAuth, createErrorResponse } from '@/lib/auth'; import { createPocketBaseClient } from '@/lib/pocketbase'; import { createAgentTaskSchema } from '@project-e/shared'; import { z } from 'zod'; // GET /api/agent-tasks — List agent tasks export const GET = withAuth(async (request: NextRequest) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('agent_tasks').getList(page, perPage, { sort, }); return NextResponse.json({ items: result.items, totalItems: result.totalItems, totalPages: result.totalPages, page: result.page, perPage: result.perPage, }); }); // POST /api/agent-tasks — Create a new agent task export const POST = withAuth(async (request: NextRequest) => { try { const body = await request.json(); const data = createAgentTaskSchema.parse(body); const pb = createPocketBaseClient(); const task = await pb.collection('agent_tasks').create({ ...data, status: 'pending', }); return NextResponse.json(task, { status: 201 }); } catch (error) { if (error instanceof z.ZodError) { return createErrorResponse('VALIDATION_ERROR', 'Invalid input', 400, error.issues); } throw error; } });