Files
boss/src/types.ts
2026-03-23 12:43:39 +08:00

111 lines
2.3 KiB
TypeScript

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<string, unknown>;
}
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[];
}