@agentxjs/core 1.9.1-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +31 -0
- package/src/agent/AgentStateMachine.ts +151 -0
- package/src/agent/README.md +296 -0
- package/src/agent/__tests__/AgentStateMachine.test.ts +346 -0
- package/src/agent/__tests__/createAgent.test.ts +728 -0
- package/src/agent/__tests__/engine/internal/messageAssemblerProcessor.test.ts +567 -0
- package/src/agent/__tests__/engine/internal/stateEventProcessor.test.ts +315 -0
- package/src/agent/__tests__/engine/internal/turnTrackerProcessor.test.ts +340 -0
- package/src/agent/__tests__/engine/mealy/Mealy.test.ts +370 -0
- package/src/agent/__tests__/engine/mealy/Store.test.ts +123 -0
- package/src/agent/__tests__/engine/mealy/combinators.test.ts +322 -0
- package/src/agent/createAgent.ts +467 -0
- package/src/agent/engine/AgentProcessor.ts +106 -0
- package/src/agent/engine/MealyMachine.ts +184 -0
- package/src/agent/engine/internal/index.ts +35 -0
- package/src/agent/engine/internal/messageAssemblerProcessor.ts +550 -0
- package/src/agent/engine/internal/stateEventProcessor.ts +313 -0
- package/src/agent/engine/internal/turnTrackerProcessor.ts +239 -0
- package/src/agent/engine/mealy/Mealy.ts +308 -0
- package/src/agent/engine/mealy/Processor.ts +70 -0
- package/src/agent/engine/mealy/Sink.ts +56 -0
- package/src/agent/engine/mealy/Source.ts +51 -0
- package/src/agent/engine/mealy/Store.ts +98 -0
- package/src/agent/engine/mealy/combinators.ts +176 -0
- package/src/agent/engine/mealy/index.ts +45 -0
- package/src/agent/index.ts +106 -0
- package/src/agent/types/engine.ts +395 -0
- package/src/agent/types/event.ts +478 -0
- package/src/agent/types/index.ts +197 -0
- package/src/agent/types/message.ts +387 -0
- package/src/common/index.ts +8 -0
- package/src/common/logger/ConsoleLogger.ts +137 -0
- package/src/common/logger/LoggerFactoryImpl.ts +123 -0
- package/src/common/logger/index.ts +26 -0
- package/src/common/logger/types.ts +98 -0
- package/src/container/Container.ts +185 -0
- package/src/container/index.ts +44 -0
- package/src/container/types.ts +71 -0
- package/src/driver/index.ts +42 -0
- package/src/driver/types.ts +363 -0
- package/src/event/EventBus.ts +260 -0
- package/src/event/README.md +237 -0
- package/src/event/__tests__/EventBus.test.ts +251 -0
- package/src/event/index.ts +46 -0
- package/src/event/types/agent.ts +512 -0
- package/src/event/types/base.ts +241 -0
- package/src/event/types/bus.ts +429 -0
- package/src/event/types/command.ts +749 -0
- package/src/event/types/container.ts +471 -0
- package/src/event/types/driver.ts +452 -0
- package/src/event/types/index.ts +26 -0
- package/src/event/types/session.ts +314 -0
- package/src/image/Image.ts +203 -0
- package/src/image/index.ts +36 -0
- package/src/image/types.ts +77 -0
- package/src/index.ts +20 -0
- package/src/mq/OffsetGenerator.ts +48 -0
- package/src/mq/README.md +166 -0
- package/src/mq/__tests__/OffsetGenerator.test.ts +121 -0
- package/src/mq/index.ts +18 -0
- package/src/mq/types.ts +172 -0
- package/src/network/RpcClient.ts +455 -0
- package/src/network/index.ts +76 -0
- package/src/network/jsonrpc.ts +336 -0
- package/src/network/protocol.ts +90 -0
- package/src/network/types.ts +284 -0
- package/src/persistence/index.ts +27 -0
- package/src/persistence/types.ts +226 -0
- package/src/runtime/AgentXRuntime.ts +501 -0
- package/src/runtime/index.ts +56 -0
- package/src/runtime/types.ts +236 -0
- package/src/session/Session.ts +71 -0
- package/src/session/index.ts +25 -0
- package/src/session/types.ts +77 -0
- package/src/workspace/index.ts +27 -0
- package/src/workspace/types.ts +131 -0
- package/tsconfig.json +10 -0
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Types - Stream, State, Message, and Turn Events
|
|
3
|
+
*
|
|
4
|
+
* This file defines all event types for the AgentEngine:
|
|
5
|
+
* - Base EngineEvent type
|
|
6
|
+
* - Stream Events: message_start, text_delta, tool_use_*, etc.
|
|
7
|
+
* - State Events: conversation_*, tool_*, error_*
|
|
8
|
+
* - Message Events: user_message, assistant_message, etc.
|
|
9
|
+
* - Turn Events: turn_request, turn_response
|
|
10
|
+
* - AgentOutput: Union of all output events
|
|
11
|
+
*
|
|
12
|
+
* @packageDocumentation
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type {
|
|
16
|
+
UserMessage,
|
|
17
|
+
AssistantMessage,
|
|
18
|
+
ToolCallMessage,
|
|
19
|
+
ToolResultMessage,
|
|
20
|
+
ErrorMessage,
|
|
21
|
+
TokenUsage,
|
|
22
|
+
} from "./message";
|
|
23
|
+
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// Base Types
|
|
26
|
+
// =============================================================================
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* EngineEvent - Lightweight event base for AgentEngine domain
|
|
30
|
+
*
|
|
31
|
+
* EngineEvent is the simplified event structure used inside AgentEngine.
|
|
32
|
+
* It only contains: type, timestamp, data
|
|
33
|
+
*
|
|
34
|
+
* This is a self-contained type without external dependencies.
|
|
35
|
+
* All specific event types (StreamEvent, StateEvent, etc.) extend this base.
|
|
36
|
+
*/
|
|
37
|
+
export interface EngineEvent<T extends string = string, D = unknown> {
|
|
38
|
+
/**
|
|
39
|
+
* Event type identifier (e.g., "text_delta", "assistant_message")
|
|
40
|
+
*/
|
|
41
|
+
readonly type: T;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Event timestamp (Unix milliseconds)
|
|
45
|
+
*/
|
|
46
|
+
readonly timestamp: number;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Event payload data
|
|
50
|
+
*/
|
|
51
|
+
readonly data: D;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Use EngineEvent instead
|
|
56
|
+
*/
|
|
57
|
+
export type AgentEvent<T extends string = string, D = unknown> = EngineEvent<T, D>;
|
|
58
|
+
|
|
59
|
+
// =============================================================================
|
|
60
|
+
// Agent State
|
|
61
|
+
// =============================================================================
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* AgentState
|
|
65
|
+
*
|
|
66
|
+
* Agent conversation states for fine-grained monitoring.
|
|
67
|
+
*
|
|
68
|
+
* State transitions:
|
|
69
|
+
* ```
|
|
70
|
+
* idle -> thinking -> responding -> idle
|
|
71
|
+
* |
|
|
72
|
+
* planning_tool -> awaiting_tool_result
|
|
73
|
+
* |
|
|
74
|
+
* thinking -> responding -> idle
|
|
75
|
+
*
|
|
76
|
+
* Any state can transition to error:
|
|
77
|
+
* thinking/responding/planning_tool/awaiting_tool_result -> error -> idle
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export type AgentState =
|
|
81
|
+
| "idle" // Waiting for user input
|
|
82
|
+
| "thinking" // LLM is thinking
|
|
83
|
+
| "responding" // LLM is generating response
|
|
84
|
+
| "planning_tool" // Generating tool call parameters
|
|
85
|
+
| "awaiting_tool_result" // Waiting for tool execution result
|
|
86
|
+
| "error"; // Error occurred during processing
|
|
87
|
+
|
|
88
|
+
// =============================================================================
|
|
89
|
+
// Agent Error
|
|
90
|
+
// =============================================================================
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Error category
|
|
94
|
+
*/
|
|
95
|
+
export type AgentErrorCategory =
|
|
96
|
+
| "network" // Network/API errors
|
|
97
|
+
| "validation" // Input validation errors
|
|
98
|
+
| "system" // Internal system errors
|
|
99
|
+
| "business"; // Business logic errors
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* AgentError - Standardized error structure
|
|
103
|
+
*/
|
|
104
|
+
export interface AgentError {
|
|
105
|
+
/**
|
|
106
|
+
* Error category
|
|
107
|
+
*/
|
|
108
|
+
category: AgentErrorCategory;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Error code (e.g., "NETWORK_TIMEOUT", "INVALID_INPUT")
|
|
112
|
+
*/
|
|
113
|
+
code: string;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Human-readable error message
|
|
117
|
+
*/
|
|
118
|
+
message: string;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Whether the error is recoverable
|
|
122
|
+
*/
|
|
123
|
+
recoverable: boolean;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Original error (if any)
|
|
127
|
+
*/
|
|
128
|
+
cause?: Error;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Additional context
|
|
132
|
+
*/
|
|
133
|
+
context?: Record<string, unknown>;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// =============================================================================
|
|
137
|
+
// Stream Events
|
|
138
|
+
// =============================================================================
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Stop reason for message completion
|
|
142
|
+
*/
|
|
143
|
+
export type StopReason = "end_turn" | "max_tokens" | "stop_sequence" | "tool_use";
|
|
144
|
+
|
|
145
|
+
// --- Stream Event Data Types ---
|
|
146
|
+
|
|
147
|
+
export interface MessageStartData {
|
|
148
|
+
messageId: string;
|
|
149
|
+
model: string;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface MessageDeltaData {
|
|
153
|
+
usage?: {
|
|
154
|
+
inputTokens: number;
|
|
155
|
+
outputTokens: number;
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export interface MessageStopData {
|
|
160
|
+
stopReason?: StopReason;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export interface TextDeltaData {
|
|
164
|
+
text: string;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export interface ToolUseStartData {
|
|
168
|
+
toolCallId: string;
|
|
169
|
+
toolName: string;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export interface InputJsonDeltaData {
|
|
173
|
+
partialJson: string;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface ToolUseStopData {
|
|
177
|
+
toolCallId: string;
|
|
178
|
+
toolName: string;
|
|
179
|
+
input: Record<string, unknown>;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export interface ToolResultData {
|
|
183
|
+
toolCallId: string;
|
|
184
|
+
result: unknown;
|
|
185
|
+
isError?: boolean;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export interface ErrorReceivedData {
|
|
189
|
+
message: string;
|
|
190
|
+
errorCode?: string;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// --- Stream Event Types ---
|
|
194
|
+
|
|
195
|
+
export type MessageStartEvent = EngineEvent<"message_start", MessageStartData>;
|
|
196
|
+
export type MessageDeltaEvent = EngineEvent<"message_delta", MessageDeltaData>;
|
|
197
|
+
export type MessageStopEvent = EngineEvent<"message_stop", MessageStopData>;
|
|
198
|
+
export type TextDeltaEvent = EngineEvent<"text_delta", TextDeltaData>;
|
|
199
|
+
export type ToolUseStartEvent = EngineEvent<"tool_use_start", ToolUseStartData>;
|
|
200
|
+
export type InputJsonDeltaEvent = EngineEvent<"input_json_delta", InputJsonDeltaData>;
|
|
201
|
+
export type ToolUseStopEvent = EngineEvent<"tool_use_stop", ToolUseStopData>;
|
|
202
|
+
export type ToolResultEvent = EngineEvent<"tool_result", ToolResultData>;
|
|
203
|
+
export type ErrorReceivedEvent = EngineEvent<"error_received", ErrorReceivedData>;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* StreamEvent - All lightweight stream events
|
|
207
|
+
*/
|
|
208
|
+
export type StreamEvent =
|
|
209
|
+
| MessageStartEvent
|
|
210
|
+
| MessageDeltaEvent
|
|
211
|
+
| MessageStopEvent
|
|
212
|
+
| TextDeltaEvent
|
|
213
|
+
| ToolUseStartEvent
|
|
214
|
+
| InputJsonDeltaEvent
|
|
215
|
+
| ToolUseStopEvent
|
|
216
|
+
| ToolResultEvent
|
|
217
|
+
| ErrorReceivedEvent;
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* StreamEventType - String literal union
|
|
221
|
+
*/
|
|
222
|
+
export type StreamEventType = StreamEvent["type"];
|
|
223
|
+
|
|
224
|
+
// =============================================================================
|
|
225
|
+
// State Events
|
|
226
|
+
// =============================================================================
|
|
227
|
+
|
|
228
|
+
// --- State Event Data Types ---
|
|
229
|
+
|
|
230
|
+
export interface ConversationQueuedData {
|
|
231
|
+
messageId: string;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export interface ConversationStartData {
|
|
235
|
+
messageId: string;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export interface ConversationThinkingData {
|
|
239
|
+
// Empty
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export interface ConversationRespondingData {
|
|
243
|
+
// Empty
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export interface ConversationEndData {
|
|
247
|
+
reason: "completed" | "interrupted" | "error";
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export interface ConversationInterruptedData {
|
|
251
|
+
reason: string;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export interface ToolPlannedData {
|
|
255
|
+
toolId: string;
|
|
256
|
+
toolName: string;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export interface ToolExecutingData {
|
|
260
|
+
toolId: string;
|
|
261
|
+
toolName: string;
|
|
262
|
+
input: Record<string, unknown>;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export interface ToolCompletedData {
|
|
266
|
+
toolId: string;
|
|
267
|
+
toolName: string;
|
|
268
|
+
result: unknown;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export interface ToolFailedData {
|
|
272
|
+
toolId: string;
|
|
273
|
+
toolName: string;
|
|
274
|
+
error: string;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
export interface ErrorOccurredData {
|
|
278
|
+
code: string;
|
|
279
|
+
message: string;
|
|
280
|
+
recoverable: boolean;
|
|
281
|
+
category?: string;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* StateEvent - Base type for state events
|
|
286
|
+
* @deprecated Use specific event types instead
|
|
287
|
+
*/
|
|
288
|
+
export interface StateEvent<T extends string = string, D = unknown> extends EngineEvent<T, D> {}
|
|
289
|
+
|
|
290
|
+
// --- State Event Types ---
|
|
291
|
+
|
|
292
|
+
export type ConversationQueuedEvent = EngineEvent<"conversation_queued", ConversationQueuedData>;
|
|
293
|
+
export type ConversationStartEvent = EngineEvent<"conversation_start", ConversationStartData>;
|
|
294
|
+
export type ConversationThinkingEvent = EngineEvent<
|
|
295
|
+
"conversation_thinking",
|
|
296
|
+
ConversationThinkingData
|
|
297
|
+
>;
|
|
298
|
+
export type ConversationRespondingEvent = EngineEvent<
|
|
299
|
+
"conversation_responding",
|
|
300
|
+
ConversationRespondingData
|
|
301
|
+
>;
|
|
302
|
+
export type ConversationEndEvent = EngineEvent<"conversation_end", ConversationEndData>;
|
|
303
|
+
export type ConversationInterruptedEvent = EngineEvent<
|
|
304
|
+
"conversation_interrupted",
|
|
305
|
+
ConversationInterruptedData
|
|
306
|
+
>;
|
|
307
|
+
export type ToolPlannedEvent = EngineEvent<"tool_planned", ToolPlannedData>;
|
|
308
|
+
export type ToolExecutingEvent = EngineEvent<"tool_executing", ToolExecutingData>;
|
|
309
|
+
export type ToolCompletedEvent = EngineEvent<"tool_completed", ToolCompletedData>;
|
|
310
|
+
export type ToolFailedEvent = EngineEvent<"tool_failed", ToolFailedData>;
|
|
311
|
+
export type ErrorOccurredEvent = EngineEvent<"error_occurred", ErrorOccurredData>;
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Alias for ErrorOccurredEvent (legacy compatibility)
|
|
315
|
+
*/
|
|
316
|
+
export type AgentErrorOccurredEvent = ErrorOccurredEvent;
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* AgentStateEvent - All lightweight state events
|
|
320
|
+
*/
|
|
321
|
+
export type AgentStateEvent =
|
|
322
|
+
// Conversation
|
|
323
|
+
| ConversationQueuedEvent
|
|
324
|
+
| ConversationStartEvent
|
|
325
|
+
| ConversationThinkingEvent
|
|
326
|
+
| ConversationRespondingEvent
|
|
327
|
+
| ConversationEndEvent
|
|
328
|
+
| ConversationInterruptedEvent
|
|
329
|
+
// Tool
|
|
330
|
+
| ToolPlannedEvent
|
|
331
|
+
| ToolExecutingEvent
|
|
332
|
+
| ToolCompletedEvent
|
|
333
|
+
| ToolFailedEvent
|
|
334
|
+
// Error
|
|
335
|
+
| ErrorOccurredEvent;
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Type guard: is this a state event?
|
|
339
|
+
*/
|
|
340
|
+
export function isStateEvent(event: EngineEvent): event is AgentStateEvent {
|
|
341
|
+
const stateTypes = [
|
|
342
|
+
"conversation_queued",
|
|
343
|
+
"conversation_start",
|
|
344
|
+
"conversation_thinking",
|
|
345
|
+
"conversation_responding",
|
|
346
|
+
"conversation_end",
|
|
347
|
+
"conversation_interrupted",
|
|
348
|
+
"tool_planned",
|
|
349
|
+
"tool_executing",
|
|
350
|
+
"tool_completed",
|
|
351
|
+
"tool_failed",
|
|
352
|
+
"error_occurred",
|
|
353
|
+
];
|
|
354
|
+
return stateTypes.includes(event.type);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// =============================================================================
|
|
358
|
+
// Message Events
|
|
359
|
+
// =============================================================================
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* MessageEvent - Base type for message events
|
|
363
|
+
* @deprecated Use specific event types instead
|
|
364
|
+
*/
|
|
365
|
+
export interface MessageEvent<T extends string = string, D = unknown> extends EngineEvent<T, D> {}
|
|
366
|
+
|
|
367
|
+
// --- Message Event Types ---
|
|
368
|
+
|
|
369
|
+
export type UserMessageEvent = EngineEvent<"user_message", UserMessage>;
|
|
370
|
+
export type AssistantMessageEvent = EngineEvent<"assistant_message", AssistantMessage>;
|
|
371
|
+
export type ToolCallMessageEvent = EngineEvent<"tool_call_message", ToolCallMessage>;
|
|
372
|
+
export type ToolResultMessageEvent = EngineEvent<"tool_result_message", ToolResultMessage>;
|
|
373
|
+
export type ErrorMessageEvent = EngineEvent<"error_message", ErrorMessage>;
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* AgentMessageEvent - All lightweight message events
|
|
377
|
+
*/
|
|
378
|
+
export type AgentMessageEvent =
|
|
379
|
+
| UserMessageEvent
|
|
380
|
+
| AssistantMessageEvent
|
|
381
|
+
| ToolCallMessageEvent
|
|
382
|
+
| ToolResultMessageEvent
|
|
383
|
+
| ErrorMessageEvent;
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Type guard: is this a message event?
|
|
387
|
+
*/
|
|
388
|
+
export function isMessageEvent(event: EngineEvent): event is AgentMessageEvent {
|
|
389
|
+
const messageTypes = [
|
|
390
|
+
"user_message",
|
|
391
|
+
"assistant_message",
|
|
392
|
+
"tool_call_message",
|
|
393
|
+
"tool_result_message",
|
|
394
|
+
"error_message",
|
|
395
|
+
];
|
|
396
|
+
return messageTypes.includes(event.type);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
// =============================================================================
|
|
400
|
+
// Turn Events
|
|
401
|
+
// =============================================================================
|
|
402
|
+
|
|
403
|
+
// --- Turn Event Data Types ---
|
|
404
|
+
|
|
405
|
+
export interface TurnRequestData {
|
|
406
|
+
turnId: string;
|
|
407
|
+
messageId: string;
|
|
408
|
+
content: string;
|
|
409
|
+
timestamp: number;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
export interface TurnResponseData {
|
|
413
|
+
turnId: string;
|
|
414
|
+
messageId: string;
|
|
415
|
+
duration: number;
|
|
416
|
+
usage?: TokenUsage;
|
|
417
|
+
model?: string;
|
|
418
|
+
stopReason?: string;
|
|
419
|
+
timestamp: number;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* TurnEvent - Base type for turn events
|
|
424
|
+
* @deprecated Use specific event types instead
|
|
425
|
+
*/
|
|
426
|
+
export interface TurnEvent<T extends string = string, D = unknown> extends EngineEvent<T, D> {}
|
|
427
|
+
|
|
428
|
+
// --- Turn Event Types ---
|
|
429
|
+
|
|
430
|
+
export type TurnRequestEvent = EngineEvent<"turn_request", TurnRequestData>;
|
|
431
|
+
export type TurnResponseEvent = EngineEvent<"turn_response", TurnResponseData>;
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* AgentTurnEvent - All lightweight turn events
|
|
435
|
+
*/
|
|
436
|
+
export type AgentTurnEvent = TurnRequestEvent | TurnResponseEvent;
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Type guard: is this a turn event?
|
|
440
|
+
*/
|
|
441
|
+
export function isTurnEvent(event: EngineEvent): event is AgentTurnEvent {
|
|
442
|
+
const turnTypes = ["turn_request", "turn_response"];
|
|
443
|
+
return turnTypes.includes(event.type);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
// =============================================================================
|
|
447
|
+
// Agent Output
|
|
448
|
+
// =============================================================================
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* AgentOutput - Union of all possible agent output events
|
|
452
|
+
*
|
|
453
|
+
* Includes all event layers:
|
|
454
|
+
* - Stream: Real-time streaming events from Driver
|
|
455
|
+
* - State: State machine transitions
|
|
456
|
+
* - Message: Assembled messages
|
|
457
|
+
* - Turn: Turn analytics
|
|
458
|
+
*/
|
|
459
|
+
export type AgentOutput = StreamEvent | AgentStateEvent | AgentMessageEvent | AgentTurnEvent;
|
|
460
|
+
|
|
461
|
+
// =============================================================================
|
|
462
|
+
// Event Handling Types
|
|
463
|
+
// =============================================================================
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* Unsubscribe function returned by on()
|
|
467
|
+
*/
|
|
468
|
+
export type Unsubscribe = () => void;
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Agent output event callback function type
|
|
472
|
+
*/
|
|
473
|
+
export type AgentOutputCallback<T extends AgentOutput = AgentOutput> = (event: T) => void;
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* @deprecated Use AgentOutputCallback instead
|
|
477
|
+
*/
|
|
478
|
+
export type AgentEventHandler<T extends AgentOutput = AgentOutput> = AgentOutputCallback<T>;
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Types - Single Source of Truth
|
|
3
|
+
*
|
|
4
|
+
* AgentEngine is an independent event processing unit that can be tested
|
|
5
|
+
* in isolation without Runtime dependencies (Container, Session, Bus).
|
|
6
|
+
*
|
|
7
|
+
* ## Two-Domain Architecture
|
|
8
|
+
*
|
|
9
|
+
* ```
|
|
10
|
+
* +-------------------------------------------------------------+
|
|
11
|
+
* | Runtime Domain (@agentxjs/types/runtime) |
|
|
12
|
+
* | - SystemEvent (source, category, intent, context) |
|
|
13
|
+
* | - Container, Session, Sandbox, Environment |
|
|
14
|
+
* | - Agent (complete runtime entity with lifecycle) |
|
|
15
|
+
* | |
|
|
16
|
+
* | +-----------------------------------------------------+ |
|
|
17
|
+
* | | AgentEngine Domain (@agentxjs/types/agent) | |
|
|
18
|
+
* | | - AgentEvent (lightweight: type, timestamp, data) | |
|
|
19
|
+
* | | - AgentEngine (event processing unit) | |
|
|
20
|
+
* | | - Independent, testable in isolation | |
|
|
21
|
+
* | | | |
|
|
22
|
+
* | | Source <-- AgentEngine --> Presenter | |
|
|
23
|
+
* | | ^ | | | |
|
|
24
|
+
* | +----|-----------|--------------|-+-------------------+ |
|
|
25
|
+
* | | | | |
|
|
26
|
+
* | DriveableEvent | SystemEvent |
|
|
27
|
+
* | -> StreamEvent | (add context) |
|
|
28
|
+
* +---------------------|-----------------------------------------+
|
|
29
|
+
* |
|
|
30
|
+
* MealyMachine
|
|
31
|
+
* (pure event processor)
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* ## Core Components
|
|
35
|
+
*
|
|
36
|
+
* - **AgentEngine**: Event processing unit (Source + MealyMachine + Presenter)
|
|
37
|
+
* - **AgentSource**: Input source - produces StreamEvent from external world
|
|
38
|
+
* - **AgentPresenter**: Output adapter - emits AgentOutput to external systems
|
|
39
|
+
* - **MealyMachine**: Pure Mealy Machine that transforms StreamEvent -> AgentOutput
|
|
40
|
+
*
|
|
41
|
+
* ## Event Layers (AgentOutput)
|
|
42
|
+
*
|
|
43
|
+
* 1. **StreamEvent**: Real-time incremental events (text_delta, tool_use_start...)
|
|
44
|
+
* 2. **AgentStateEvent**: Events that affect AgentState (conversation_*, tool_*, error_*)
|
|
45
|
+
* 3. **AgentMessageEvent**: Assembled messages (user_message, assistant_message...)
|
|
46
|
+
* 4. **AgentTurnEvent**: Turn analytics (turn_request, turn_response)
|
|
47
|
+
*
|
|
48
|
+
* ## Message Types (Three-Party Model)
|
|
49
|
+
*
|
|
50
|
+
* - **User**: Human participant (UserMessage)
|
|
51
|
+
* - **Assistant**: AI participant (AssistantMessage, ToolCallMessage)
|
|
52
|
+
* - **Tool**: Computer/execution environment (ToolResultMessage)
|
|
53
|
+
*
|
|
54
|
+
* @packageDocumentation
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
// =============================================================================
|
|
58
|
+
// Message Types - Content Parts and Messages
|
|
59
|
+
// =============================================================================
|
|
60
|
+
|
|
61
|
+
export type {
|
|
62
|
+
// Content Parts
|
|
63
|
+
TextPart,
|
|
64
|
+
ThinkingPart,
|
|
65
|
+
ImagePart,
|
|
66
|
+
FilePart,
|
|
67
|
+
ToolCallPart,
|
|
68
|
+
ToolResultOutput,
|
|
69
|
+
ToolResultPart,
|
|
70
|
+
ContentPart,
|
|
71
|
+
UserContentPart,
|
|
72
|
+
// Message Types
|
|
73
|
+
MessageRole,
|
|
74
|
+
MessageSubtype,
|
|
75
|
+
TokenUsage,
|
|
76
|
+
UserMessage,
|
|
77
|
+
AssistantMessage,
|
|
78
|
+
ToolCallMessage,
|
|
79
|
+
ToolResultMessage,
|
|
80
|
+
ErrorMessage,
|
|
81
|
+
Message,
|
|
82
|
+
} from "./message";
|
|
83
|
+
|
|
84
|
+
// =============================================================================
|
|
85
|
+
// Event Types - Stream, State, Message, Turn Events
|
|
86
|
+
// =============================================================================
|
|
87
|
+
|
|
88
|
+
export type {
|
|
89
|
+
// Base Types
|
|
90
|
+
EngineEvent,
|
|
91
|
+
AgentEvent,
|
|
92
|
+
// Agent State and Error
|
|
93
|
+
AgentState,
|
|
94
|
+
AgentErrorCategory,
|
|
95
|
+
AgentError,
|
|
96
|
+
// Stream Events
|
|
97
|
+
StopReason,
|
|
98
|
+
MessageStartData,
|
|
99
|
+
MessageDeltaData,
|
|
100
|
+
MessageStopData,
|
|
101
|
+
TextDeltaData,
|
|
102
|
+
ToolUseStartData,
|
|
103
|
+
InputJsonDeltaData,
|
|
104
|
+
ToolUseStopData,
|
|
105
|
+
ToolResultData,
|
|
106
|
+
ErrorReceivedData,
|
|
107
|
+
MessageStartEvent,
|
|
108
|
+
MessageDeltaEvent,
|
|
109
|
+
MessageStopEvent,
|
|
110
|
+
TextDeltaEvent,
|
|
111
|
+
ToolUseStartEvent,
|
|
112
|
+
InputJsonDeltaEvent,
|
|
113
|
+
ToolUseStopEvent,
|
|
114
|
+
ToolResultEvent,
|
|
115
|
+
ErrorReceivedEvent,
|
|
116
|
+
StreamEvent,
|
|
117
|
+
StreamEventType,
|
|
118
|
+
// State Events
|
|
119
|
+
ConversationQueuedData,
|
|
120
|
+
ConversationStartData,
|
|
121
|
+
ConversationThinkingData,
|
|
122
|
+
ConversationRespondingData,
|
|
123
|
+
ConversationEndData,
|
|
124
|
+
ConversationInterruptedData,
|
|
125
|
+
ToolPlannedData,
|
|
126
|
+
ToolExecutingData,
|
|
127
|
+
ToolCompletedData,
|
|
128
|
+
ToolFailedData,
|
|
129
|
+
ErrorOccurredData,
|
|
130
|
+
StateEvent,
|
|
131
|
+
ConversationQueuedEvent,
|
|
132
|
+
ConversationStartEvent,
|
|
133
|
+
ConversationThinkingEvent,
|
|
134
|
+
ConversationRespondingEvent,
|
|
135
|
+
ConversationEndEvent,
|
|
136
|
+
ConversationInterruptedEvent,
|
|
137
|
+
ToolPlannedEvent,
|
|
138
|
+
ToolExecutingEvent,
|
|
139
|
+
ToolCompletedEvent,
|
|
140
|
+
ToolFailedEvent,
|
|
141
|
+
ErrorOccurredEvent,
|
|
142
|
+
AgentErrorOccurredEvent,
|
|
143
|
+
AgentStateEvent,
|
|
144
|
+
// Message Events
|
|
145
|
+
MessageEvent,
|
|
146
|
+
UserMessageEvent,
|
|
147
|
+
AssistantMessageEvent,
|
|
148
|
+
ToolCallMessageEvent,
|
|
149
|
+
ToolResultMessageEvent,
|
|
150
|
+
ErrorMessageEvent,
|
|
151
|
+
AgentMessageEvent,
|
|
152
|
+
// Turn Events
|
|
153
|
+
TurnRequestData,
|
|
154
|
+
TurnResponseData,
|
|
155
|
+
TurnEvent,
|
|
156
|
+
TurnRequestEvent,
|
|
157
|
+
TurnResponseEvent,
|
|
158
|
+
AgentTurnEvent,
|
|
159
|
+
// Agent Output
|
|
160
|
+
AgentOutput,
|
|
161
|
+
// Event Handling
|
|
162
|
+
Unsubscribe,
|
|
163
|
+
AgentOutputCallback,
|
|
164
|
+
AgentEventHandler,
|
|
165
|
+
} from "./event";
|
|
166
|
+
|
|
167
|
+
// Type guards (functions, not types)
|
|
168
|
+
export { isStateEvent, isMessageEvent, isTurnEvent } from "./event";
|
|
169
|
+
|
|
170
|
+
// =============================================================================
|
|
171
|
+
// Engine Types - Engine, Source, Presenter, Middleware, Interceptor
|
|
172
|
+
// =============================================================================
|
|
173
|
+
|
|
174
|
+
export type {
|
|
175
|
+
// Message Queue
|
|
176
|
+
MessageQueue,
|
|
177
|
+
// Middleware & Interceptor
|
|
178
|
+
AgentMiddlewareNext,
|
|
179
|
+
AgentMiddleware,
|
|
180
|
+
AgentInterceptorNext,
|
|
181
|
+
AgentInterceptor,
|
|
182
|
+
// State Machine
|
|
183
|
+
StateChange,
|
|
184
|
+
StateChangeHandler,
|
|
185
|
+
AgentStateMachineInterface,
|
|
186
|
+
// Event Handler Maps
|
|
187
|
+
EventHandlerMap,
|
|
188
|
+
ReactHandlerMap,
|
|
189
|
+
// Agent Engine
|
|
190
|
+
AgentEngine,
|
|
191
|
+
// Source & Presenter (EventBus adapters)
|
|
192
|
+
AgentSource,
|
|
193
|
+
AgentPresenter,
|
|
194
|
+
AgentEventBus,
|
|
195
|
+
// Factory Options
|
|
196
|
+
CreateAgentOptions,
|
|
197
|
+
} from "./engine";
|