| 1 | import { NextResponse } from 'next/server'; |
| 2 | import { listCaps } from '@/lib/db'; |
| 3 | import { PM_BRAIN_MODEL } from '@/lib/glm'; |
| 4 | |
| 5 | export const runtime = 'nodejs'; |
| 6 | export const dynamic = 'force-dynamic'; |
| 7 | |
| 8 | export async function GET() { |
| 9 | const caps = listCaps(); |
| 10 | const capMap = Object.fromEntries(caps.map((c) => [c.model, c])); |
| 11 | const fleet = [ |
| 12 | { model: 'glm', role: 'conductor', label: PM_BRAIN_MODEL, available: 1, reason: 'brain', last_checked: Date.now() }, |
| 13 | { model: 'claude', role: 'worker', label: 'Claude Max · CT215', available: capMap.claude?.available ?? 0, reason: capMap.claude?.reason ?? '', last_checked: capMap.claude?.last_checked ?? 0 }, |
| 14 | { model: 'codex', role: 'worker', label: 'Codex Max · CT241', available: capMap.codex?.available ?? 0, reason: capMap.codex?.reason ?? '', last_checked: capMap.codex?.last_checked ?? 0 }, |
| 15 | { model: 'ollama', role: 'worker', label: 'Ollama · 3060', available: capMap.ollama?.available ?? 0, reason: capMap.ollama?.reason ?? '', last_checked: capMap.ollama?.last_checked ?? 0 }, |
| 16 | ]; |
| 17 | return NextResponse.json({ fleet }); |
| 18 | } |