export type SessionStatus = "active" | "archived"; export type TaskStatus = | "planning" | "queued" | "assigned" | "running" | "blocked" | "paused" | "waiting_approval" | "completed" | "failed" | "cancelled"; export type WorkerStatus = "idle" | "busy" | "offline"; export type ApprovalStatus = "pending" | "approved" | "rejected"; export type RiskLevel = "low" | "medium" | "high"; export interface Session { id: string; title: string; status: SessionStatus; activeObjective: string; lastPlannerSummary: string; createdAt: string; updatedAt: string; } export interface Message { id: string; sessionId: string; role: "user" | "manager" | "system"; channel: string; content: string; createdAt: string; } export interface Task { id: string; sessionId: string; parentTaskId: string | null; title: string; description: string; kind: string; status: TaskStatus; priority: "low" | "medium" | "high"; requiredOs: "any" | "windows" | "macos" | "linux"; requiredCapabilities: string[]; dependencyIds: string[]; assignedWorkerId: string | null; approvalStatus: "not_required" | ApprovalStatus; progressPercent: number; summary: string; currentStep: string; nextStep: string; createdAt: string; updatedAt: string; } export interface WorkerNode { id: string; name: string; os: "windows" | "macos" | "linux"; capabilities: string[]; status: WorkerStatus; currentTaskId: string | null; load: number; lastSeenAt: string; createdAt: string; updatedAt: string; } export interface ApprovalRequest { id: string; sessionId: string; taskId: string; kind: string; summary: string; riskLevel: RiskLevel; status: ApprovalStatus; requester: string; responder: string | null; createdAt: string; updatedAt: string; } export interface BossEvent { id: string; sessionId: string | null; taskId: string | null; source: "user" | "manager" | "system" | "worker"; type: string; timestamp: string; payload: Record; } export interface AppState { sessions: Session[]; messages: Message[]; tasks: Task[]; workers: WorkerNode[]; approvals: ApprovalRequest[]; events: BossEvent[]; } export interface SessionDetails { session: Session; messages: Message[]; tasks: Task[]; approvals: ApprovalRequest[]; }