Phase 2: Task Ingestion Pipeline (#459) (#460)
All checks were successful
ci/woodpecker/push/api Pipeline was successful
ci/woodpecker/push/web Pipeline was successful

Co-authored-by: Jason Woltje <jason@diversecanvas.com>
Co-committed-by: Jason Woltje <jason@diversecanvas.com>
This commit was merged in pull request #460.
This commit is contained in:
2026-02-23 00:54:55 +00:00
committed by jason.woltje
parent 07f5225a76
commit 7581d26567
18 changed files with 1043 additions and 254 deletions

View File

@@ -0,0 +1,74 @@
/**
* Dashboard API Client
* Handles dashboard summary data fetching
*/
import { apiGet } from "./client";
/* ------------------------------------------------------------------ */
/* Type definitions matching backend DashboardSummaryDto */
/* ------------------------------------------------------------------ */
export interface DashboardMetrics {
activeAgents: number;
tasksCompleted: number;
totalTasks: number;
tasksInProgress: number;
activeProjects: number;
errorRate: number;
}
export interface RecentActivity {
id: string;
action: string;
entityType: string;
entityId: string;
details: Record<string, unknown> | null;
userId: string;
createdAt: string;
}
export interface ActiveJobStep {
id: string;
name: string;
status: string;
phase: string;
}
export interface ActiveJob {
id: string;
type: string;
status: string;
progressPercent: number;
createdAt: string;
updatedAt: string;
steps: ActiveJobStep[];
}
export interface TokenBudgetEntry {
model: string;
used: number;
limit: number;
}
export interface DashboardSummaryResponse {
metrics: DashboardMetrics;
recentActivity: RecentActivity[];
activeJobs: ActiveJob[];
tokenBudget: TokenBudgetEntry[];
}
/* ------------------------------------------------------------------ */
/* API function */
/* ------------------------------------------------------------------ */
/**
* Fetch dashboard summary data for the given workspace.
*
* @param workspaceId - Optional workspace ID sent via X-Workspace-Id header
*/
export async function fetchDashboardSummary(
workspaceId?: string
): Promise<DashboardSummaryResponse> {
return apiGet<DashboardSummaryResponse>("/api/dashboard/summary", workspaceId ?? undefined);
}

View File

@@ -13,3 +13,4 @@ export * from "./domains";
export * from "./teams";
export * from "./personalities";
export * from "./telemetry";
export * from "./dashboard";