Spaces:
Sleeping
Sleeping
| import { NextRequest, NextResponse } from 'next/server' | |
| import { config } from '@/lib/config' | |
| import { requireRole } from '@/lib/auth' | |
| import { readLimiter } from '@/lib/rate-limit' | |
| import { generateContextPayload } from '@/lib/memory-utils' | |
| import { logger } from '@/lib/logger' | |
| const MEMORY_PATH = config.memoryDir | |
| /** | |
| * Context injection endpoint — generates a payload for agent session start. | |
| * Returns workspace tree, recent files, health summary, and maintenance signals. | |
| */ | |
| export async function GET(request: NextRequest) { | |
| const auth = requireRole(request, 'viewer') | |
| if ('error' in auth) return NextResponse.json({ error: auth.error }, { status: auth.status }) | |
| const limited = readLimiter(request) | |
| if (limited) return limited | |
| if (!MEMORY_PATH) { | |
| return NextResponse.json({ error: 'Memory directory not configured' }, { status: 500 }) | |
| } | |
| try { | |
| const payload = await generateContextPayload(MEMORY_PATH) | |
| return NextResponse.json(payload) | |
| } catch (err) { | |
| logger.error({ err }, 'Memory context API error') | |
| return NextResponse.json({ error: 'Internal server error' }, { status: 500 }) | |
| } | |
| } | |