78 lines
1.6 KiB
TypeScript
78 lines
1.6 KiB
TypeScript
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;
|
||
|
|
}
|