/** * Triage queue API routes. * * GET /live/triage – list open triage items (merged decisions + blockers) * POST /live/triage/:id/action – act on a triage item */ import type { LiveDecision } from "../../contracts/shared-types.js"; interface Router { add(method: string, path: string, handler: (ctx: { req: TReq; res: TRes; path: string; query: URLSearchParams; body: unknown; state: TState; }) => Promise, description?: string): void; } export interface RegisterLiveTriageRoutesDeps { parseJsonRequest: (req: TReq) => Promise>; sendJson: (res: TRes, status: number, body: unknown) => void; getDecisions: (workspaceId?: string | null) => LiveDecision[]; getBlockerEvents: (workspaceId?: string | null) => Array<{ id: string; failureType: string; reason?: string | null; provider?: string | null; initiativeId?: string | null; initiativeTitle?: string | null; workstreamId?: string | null; workstreamTitle?: string | null; taskId?: string | null; taskTitle?: string | null; agentId?: string | null; domain?: string | null; sourceSystem?: string | null; runId?: string | null; logPath?: string | null; outputPath?: string | null; metadata?: Record; timestamp?: string; }>; resolveDecisionAction: (decisionId: string, action: string, note?: string | null, optionId?: string | null) => Promise<{ ok: boolean; error?: string; }>; emitDecisionResolvedActivity?: (input: { ids: string[]; action: "approve" | "reject"; note?: string | null; optionId?: string | null; initiativeId?: string | null; }) => Promise; snoozeTriage?: (itemId: string, durationMinutes: number) => Promise<{ ok: boolean; }>; dismissTriage?: (itemId: string, note?: string) => Promise<{ ok: boolean; }>; } export declare function registerLiveTriageRoutes(router: Router, TReq, TRes>, deps: RegisterLiveTriageRoutesDeps): void; export {};