- app/agents/: new Agents page showing per-agent status + workspace files - app/knowledge/: Knowledge base viewer - app/api/tiger/: proxy routes for cron, file-tasks, file-projects, keys, agents - components/agent-strip.tsx: agent status bar for dashboard home - components/command-bar.tsx: command palette - components/digest-card.tsx + schedule-card.tsx: weekly digest + cron schedule - components/status-footer.tsx: system status footer - tasks page: dual-source (TASKS.md JSON block + SQLite) with fallback - projects page: PROJECTS.md reader with kanban board integration
26 lines
841 B
TypeScript
26 lines
841 B
TypeScript
// GET /api/tiger/keys — returns key presence (never values)
|
|
// PATCH /api/tiger/keys — set one or more keys
|
|
|
|
import { NextRequest, NextResponse } from "next/server";
|
|
import { bridgeGet, bridgePatch } from "@/lib/bridge";
|
|
|
|
export const dynamic = "force-dynamic";
|
|
|
|
export async function GET() {
|
|
try {
|
|
const result = await bridgeGet("/tiger/keys");
|
|
return NextResponse.json(result);
|
|
} catch (err: any) {
|
|
return NextResponse.json({ ok: false, error: err.message }, { status: 502 });
|
|
}
|
|
}
|
|
|
|
export async function PATCH(request: NextRequest) {
|
|
try {
|
|
const body = await request.json();
|
|
const result = await bridgePatch("/tiger/keys", body as Record<string, unknown>);
|
|
return NextResponse.json(result);
|
|
} catch (err: any) {
|
|
return NextResponse.json({ ok: false, error: err.message }, { status: 502 });
|
|
}
|
|
}
|