File size: 2,486 Bytes
7fcdb70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
export interface AgentTrace {
  id: string;
  timestamp: Date;
  instruction: string;
  modelId: string;
  isRunning: boolean;
  steps?: AgentStep[];
  traceMetadata?: AgentTraceMetadata;
}

export interface AgentAction {
  function_name: string;
  parameters: Record<string, unknown>;
  description: string;
}

export interface AgentStep {
  traceId: string;
  stepId: string;
  error?: string | null;
  image: string;
  thought?: string | null;
  actions?: AgentAction[] | null;
  duration: number;
  inputTokensUsed: number;
  outputTokensUsed: number;
  step_evaluation: 'like' | 'dislike' | 'neutral';
}

export interface AgentTraceMetadata {
  traceId: string;
  inputTokensUsed: number;
  outputTokensUsed: number;
  duration: number;
  numberOfSteps: number;
  maxSteps: number;
  completed: boolean;
  final_state: 'success' | 'stopped' | 'max_steps_reached' | 'error' | 'sandbox_timeout' | null;
  user_evaluation?: 'success' | 'failed' | 'not_evaluated';
}

export interface FinalStep {
  type: 'success' | 'failure' | 'stopped' | 'max_steps_reached' | 'sandbox_timeout';
  message?: string;
  metadata: AgentTraceMetadata;
}

// #################### WebSocket Events Types - Server to Client ########################

interface AgentStartEvent {
  type: 'agent_start';
  agentTrace: AgentTrace;
  status: 'max_sandboxes_reached' | 'success';
}

interface AgentProgressEvent {
  type: 'agent_progress';
  agentStep: AgentStep;
  traceMetadata: AgentTraceMetadata;
}

interface AgentCompleteEvent {
  type: 'agent_complete';
  traceMetadata: AgentTraceMetadata;
  final_state: 'success' | 'stopped' | 'max_steps_reached' | 'error' | 'sandbox_timeout';
}

interface AgentErrorEvent {
  type: 'agent_error';
  error: string;
}

interface VncUrlSetEvent {
  type: 'vnc_url_set';
  vncUrl: string;
}

interface VncUrlUnsetEvent {
  type: 'vnc_url_unset';
}

interface HeartbeatEvent {
  type: 'heartbeat';
  uuid: string;
}

export type WebSocketEvent =
  | AgentStartEvent
  | AgentProgressEvent
  | AgentCompleteEvent
  | AgentErrorEvent
  | VncUrlSetEvent
  | VncUrlUnsetEvent
  | HeartbeatEvent;

// #################### User Task Message Type (Through WebSocket) - Client to Server ########################


export interface UserTaskMessage {
  type: 'user_task';
  trace: AgentTrace;
}


export interface StopTaskMessage {
  type: 'stop_task';
  traceId: string;
}