Files
claude-office/src/lib/types.ts
T

78 lines
1.6 KiB
TypeScript
Raw Normal View History

export type AgentStatus =
| "idle"
| "thinking"
| "tool_calling"
| "speaking"
| "spawning"
| "error"
| "offline";
export type AgentZone = "desk" | "meeting" | "hotDesk" | "lounge" | "corridor";
export type AgentRole = "lead" | "agent" | "subagent";
export interface Point {
x: number;
y: number;
}
export interface MovementState {
path: Point[];
/** total walk duration in seconds */
duration: number;
/** elapsed seconds */
elapsed: number;
toZone: AgentZone;
/** status to apply when the walk finishes */
arriveStatus?: AgentStatus;
/** remove the agent from the office when the walk finishes */
despawnOnArrive?: boolean;
}
export interface ToolCall {
name: string;
startedAt: number;
}
export interface VisualAgent {
id: string;
name: string;
role: AgentRole;
/** model tag shown in the detail panel, e.g. "fable-5" */
model: string;
status: AgentStatus;
position: Point;
zone: AgentZone;
/** permanently assigned seat (desk / hot-desk slot centre) */
homePosition: Point;
homeZone: AgentZone;
homeSlot: number;
currentTool: ToolCall | null;
speech: string | null;
movement: MovementState | null;
parentId: string | null;
childIds: string[];
toolCallCount: number;
toolHistory: string[];
spawnedAt: number;
}
export interface CollaborationLink {
sourceId: string;
targetId: string;
strength: number;
kind: "spawn" | "meeting";
}
export interface Meeting {
id: string;
agentIds: string[];
center: Point;
}
export interface OfficeEvent {
at: number;
text: string;
icon: string;
}