@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,512 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Events - Events from Agent domain (stream/state/message/turn)
|
|
3
|
+
*
|
|
4
|
+
* Agent events for the EventBus system.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type {
|
|
8
|
+
UserMessage,
|
|
9
|
+
AssistantMessage,
|
|
10
|
+
ToolCallMessage,
|
|
11
|
+
ToolResultMessage,
|
|
12
|
+
ErrorMessage,
|
|
13
|
+
} from "../../agent/types";
|
|
14
|
+
import type { SystemEvent, EventContext } from "./base";
|
|
15
|
+
import type { StopReason } from "./driver";
|
|
16
|
+
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Agent Event Categories and Base Types
|
|
19
|
+
// ============================================================================
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Agent event categories
|
|
23
|
+
*/
|
|
24
|
+
export type AgentEventCategory = "stream" | "state" | "message" | "turn";
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* BaseAgentEvent - Base interface for all Agent events
|
|
28
|
+
*
|
|
29
|
+
* Extends SystemEvent with fixed source and intent.
|
|
30
|
+
*/
|
|
31
|
+
export interface BaseAgentEvent<
|
|
32
|
+
T extends string,
|
|
33
|
+
D,
|
|
34
|
+
C extends AgentEventCategory,
|
|
35
|
+
> extends SystemEvent<T, D, "agent", C, "notification"> {
|
|
36
|
+
/**
|
|
37
|
+
* Runtime context (optional, added by Presenter)
|
|
38
|
+
*/
|
|
39
|
+
readonly context?: EventContext;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Agent Stream Events
|
|
44
|
+
// ============================================================================
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Base type for agent stream events
|
|
48
|
+
*/
|
|
49
|
+
export interface AgentStreamEventBase<T extends string, D> extends BaseAgentEvent<T, D, "stream"> {}
|
|
50
|
+
|
|
51
|
+
// Re-export StopReason for convenience (as AgentStopReason to avoid conflict)
|
|
52
|
+
export type AgentStopReason = StopReason;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* AgentMessageStartEvent - Streaming message begins
|
|
56
|
+
*/
|
|
57
|
+
export interface AgentMessageStartEvent extends AgentStreamEventBase<
|
|
58
|
+
"message_start",
|
|
59
|
+
{
|
|
60
|
+
messageId: string;
|
|
61
|
+
model: string;
|
|
62
|
+
}
|
|
63
|
+
> {}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* AgentMessageDeltaEvent - Message-level updates (usage info)
|
|
67
|
+
*/
|
|
68
|
+
export interface AgentMessageDeltaEvent extends AgentStreamEventBase<
|
|
69
|
+
"message_delta",
|
|
70
|
+
{
|
|
71
|
+
usage?: {
|
|
72
|
+
inputTokens: number;
|
|
73
|
+
outputTokens: number;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
> {}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* AgentMessageStopEvent - Streaming message completes
|
|
80
|
+
*/
|
|
81
|
+
export interface AgentMessageStopEvent extends AgentStreamEventBase<
|
|
82
|
+
"message_stop",
|
|
83
|
+
{
|
|
84
|
+
stopReason?: StopReason;
|
|
85
|
+
}
|
|
86
|
+
> {}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* AgentTextDeltaEvent - Incremental text output
|
|
90
|
+
*/
|
|
91
|
+
export interface AgentTextDeltaEvent extends AgentStreamEventBase<
|
|
92
|
+
"text_delta",
|
|
93
|
+
{
|
|
94
|
+
text: string;
|
|
95
|
+
}
|
|
96
|
+
> {}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* AgentToolUseStartEvent - Tool use block started
|
|
100
|
+
*/
|
|
101
|
+
export interface AgentToolUseStartEvent extends AgentStreamEventBase<
|
|
102
|
+
"tool_use_start",
|
|
103
|
+
{
|
|
104
|
+
toolCallId: string;
|
|
105
|
+
toolName: string;
|
|
106
|
+
}
|
|
107
|
+
> {}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* AgentInputJsonDeltaEvent - Incremental tool input JSON
|
|
111
|
+
*/
|
|
112
|
+
export interface AgentInputJsonDeltaEvent extends AgentStreamEventBase<
|
|
113
|
+
"input_json_delta",
|
|
114
|
+
{
|
|
115
|
+
partialJson: string;
|
|
116
|
+
}
|
|
117
|
+
> {}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* AgentToolUseStopEvent - Tool use block completed
|
|
121
|
+
*/
|
|
122
|
+
export interface AgentToolUseStopEvent extends AgentStreamEventBase<
|
|
123
|
+
"tool_use_stop",
|
|
124
|
+
{
|
|
125
|
+
toolCallId: string;
|
|
126
|
+
toolName: string;
|
|
127
|
+
input: Record<string, unknown>;
|
|
128
|
+
}
|
|
129
|
+
> {}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* AgentToolResultEvent - Tool execution result
|
|
133
|
+
*/
|
|
134
|
+
export interface AgentToolResultEvent extends AgentStreamEventBase<
|
|
135
|
+
"tool_result",
|
|
136
|
+
{
|
|
137
|
+
toolCallId: string;
|
|
138
|
+
result: unknown;
|
|
139
|
+
isError?: boolean;
|
|
140
|
+
}
|
|
141
|
+
> {}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* AgentErrorReceivedEvent - Error received from environment
|
|
145
|
+
*
|
|
146
|
+
* Processed by MealyMachine to produce:
|
|
147
|
+
* - error_occurred (StateEvent)
|
|
148
|
+
* - error_message (MessageEvent)
|
|
149
|
+
*/
|
|
150
|
+
export interface AgentErrorReceivedEvent extends AgentStreamEventBase<
|
|
151
|
+
"error_received",
|
|
152
|
+
{
|
|
153
|
+
/** Error message (human-readable) */
|
|
154
|
+
message: string;
|
|
155
|
+
/** Error code (e.g., "rate_limit_error", "api_error") */
|
|
156
|
+
errorCode?: string;
|
|
157
|
+
}
|
|
158
|
+
> {}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* AgentStreamEvent - All stream events
|
|
162
|
+
*/
|
|
163
|
+
export type AgentStreamEvent =
|
|
164
|
+
| AgentMessageStartEvent
|
|
165
|
+
| AgentMessageDeltaEvent
|
|
166
|
+
| AgentMessageStopEvent
|
|
167
|
+
| AgentTextDeltaEvent
|
|
168
|
+
| AgentToolUseStartEvent
|
|
169
|
+
| AgentInputJsonDeltaEvent
|
|
170
|
+
| AgentToolUseStopEvent
|
|
171
|
+
| AgentToolResultEvent
|
|
172
|
+
| AgentErrorReceivedEvent;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* AgentStreamEventType - String literal union
|
|
176
|
+
*/
|
|
177
|
+
export type AgentStreamEventType = AgentStreamEvent["type"];
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Type guard: is this a stream event?
|
|
181
|
+
*/
|
|
182
|
+
export function isAgentStreamEvent(event: {
|
|
183
|
+
source?: string;
|
|
184
|
+
category?: string;
|
|
185
|
+
}): event is AgentStreamEvent {
|
|
186
|
+
return event.source === "agent" && event.category === "stream";
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// ============================================================================
|
|
190
|
+
// Agent State Events
|
|
191
|
+
// ============================================================================
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Base type for state events
|
|
195
|
+
*/
|
|
196
|
+
export interface AgentStateEventBase<T extends string, D> extends BaseAgentEvent<T, D, "state"> {}
|
|
197
|
+
|
|
198
|
+
// Conversation Events
|
|
199
|
+
/**
|
|
200
|
+
* ConversationQueuedEvent - Message queued for processing
|
|
201
|
+
*/
|
|
202
|
+
export interface ConversationQueuedEvent extends AgentStateEventBase<
|
|
203
|
+
"conversation_queued",
|
|
204
|
+
{
|
|
205
|
+
messageId: string;
|
|
206
|
+
}
|
|
207
|
+
> {}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* ConversationStartEvent - Conversation started
|
|
211
|
+
*/
|
|
212
|
+
export interface ConversationStartEvent extends AgentStateEventBase<
|
|
213
|
+
"conversation_start",
|
|
214
|
+
{
|
|
215
|
+
messageId: string;
|
|
216
|
+
}
|
|
217
|
+
> {}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* ConversationThinkingEvent - Agent is thinking
|
|
221
|
+
*/
|
|
222
|
+
export interface ConversationThinkingEvent extends AgentStateEventBase<
|
|
223
|
+
"conversation_thinking",
|
|
224
|
+
Record<string, never>
|
|
225
|
+
> {}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* ConversationRespondingEvent - Agent is responding
|
|
229
|
+
*/
|
|
230
|
+
export interface ConversationRespondingEvent extends AgentStateEventBase<
|
|
231
|
+
"conversation_responding",
|
|
232
|
+
Record<string, never>
|
|
233
|
+
> {}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* ConversationEndEvent - Conversation ended
|
|
237
|
+
*/
|
|
238
|
+
export interface ConversationEndEvent extends AgentStateEventBase<
|
|
239
|
+
"conversation_end",
|
|
240
|
+
{
|
|
241
|
+
reason: "completed" | "interrupted" | "error";
|
|
242
|
+
}
|
|
243
|
+
> {}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* ConversationInterruptedEvent - Conversation interrupted
|
|
247
|
+
*/
|
|
248
|
+
export interface ConversationInterruptedEvent extends AgentStateEventBase<
|
|
249
|
+
"conversation_interrupted",
|
|
250
|
+
{
|
|
251
|
+
reason: string;
|
|
252
|
+
}
|
|
253
|
+
> {}
|
|
254
|
+
|
|
255
|
+
// Tool Events
|
|
256
|
+
/**
|
|
257
|
+
* ToolPlannedEvent - Tool use planned
|
|
258
|
+
*/
|
|
259
|
+
export interface ToolPlannedEvent extends AgentStateEventBase<
|
|
260
|
+
"tool_planned",
|
|
261
|
+
{
|
|
262
|
+
toolId: string;
|
|
263
|
+
toolName: string;
|
|
264
|
+
}
|
|
265
|
+
> {}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* ToolExecutingEvent - Tool is executing
|
|
269
|
+
*/
|
|
270
|
+
export interface ToolExecutingEvent extends AgentStateEventBase<
|
|
271
|
+
"tool_executing",
|
|
272
|
+
{
|
|
273
|
+
toolId: string;
|
|
274
|
+
toolName: string;
|
|
275
|
+
input: Record<string, unknown>;
|
|
276
|
+
}
|
|
277
|
+
> {}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* ToolCompletedEvent - Tool execution completed
|
|
281
|
+
*/
|
|
282
|
+
export interface ToolCompletedEvent extends AgentStateEventBase<
|
|
283
|
+
"tool_completed",
|
|
284
|
+
{
|
|
285
|
+
toolId: string;
|
|
286
|
+
toolName: string;
|
|
287
|
+
result: unknown;
|
|
288
|
+
}
|
|
289
|
+
> {}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* ToolFailedEvent - Tool execution failed
|
|
293
|
+
*/
|
|
294
|
+
export interface ToolFailedEvent extends AgentStateEventBase<
|
|
295
|
+
"tool_failed",
|
|
296
|
+
{
|
|
297
|
+
toolId: string;
|
|
298
|
+
toolName: string;
|
|
299
|
+
error: string;
|
|
300
|
+
}
|
|
301
|
+
> {}
|
|
302
|
+
|
|
303
|
+
// Error Events (State)
|
|
304
|
+
/**
|
|
305
|
+
* ErrorOccurredEvent - Error occurred during processing
|
|
306
|
+
*/
|
|
307
|
+
export interface ErrorOccurredEvent extends AgentStateEventBase<
|
|
308
|
+
"error_occurred",
|
|
309
|
+
{
|
|
310
|
+
code: string;
|
|
311
|
+
message: string;
|
|
312
|
+
recoverable: boolean;
|
|
313
|
+
category?: string;
|
|
314
|
+
}
|
|
315
|
+
> {}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* AgentStateEvent - All state events
|
|
319
|
+
*/
|
|
320
|
+
export type AgentStateEvent =
|
|
321
|
+
// Conversation
|
|
322
|
+
| ConversationQueuedEvent
|
|
323
|
+
| ConversationStartEvent
|
|
324
|
+
| ConversationThinkingEvent
|
|
325
|
+
| ConversationRespondingEvent
|
|
326
|
+
| ConversationEndEvent
|
|
327
|
+
| ConversationInterruptedEvent
|
|
328
|
+
// Tool
|
|
329
|
+
| ToolPlannedEvent
|
|
330
|
+
| ToolExecutingEvent
|
|
331
|
+
| ToolCompletedEvent
|
|
332
|
+
| ToolFailedEvent
|
|
333
|
+
// Error
|
|
334
|
+
| ErrorOccurredEvent;
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* AgentStateEventType - String literal union
|
|
338
|
+
*/
|
|
339
|
+
export type AgentStateEventType = AgentStateEvent["type"];
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Type guard: is this a state event?
|
|
343
|
+
*/
|
|
344
|
+
export function isAgentStateEvent(event: {
|
|
345
|
+
source?: string;
|
|
346
|
+
category?: string;
|
|
347
|
+
}): event is AgentStateEvent {
|
|
348
|
+
return event.source === "agent" && event.category === "state";
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// ============================================================================
|
|
352
|
+
// Agent Message Events
|
|
353
|
+
// ============================================================================
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Base type for message events
|
|
357
|
+
*/
|
|
358
|
+
export interface AgentMessageEventBase<T extends string, D> extends BaseAgentEvent<
|
|
359
|
+
T,
|
|
360
|
+
D,
|
|
361
|
+
"message"
|
|
362
|
+
> {}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* UserMessageEvent - User sent a message
|
|
366
|
+
* Data: Complete UserMessage object
|
|
367
|
+
*/
|
|
368
|
+
export interface UserMessageEvent extends AgentMessageEventBase<"user_message", UserMessage> {}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* AssistantMessageEvent - Assistant response message
|
|
372
|
+
* Data: Complete AssistantMessage object
|
|
373
|
+
*/
|
|
374
|
+
export interface AssistantMessageEvent extends AgentMessageEventBase<
|
|
375
|
+
"assistant_message",
|
|
376
|
+
AssistantMessage
|
|
377
|
+
> {}
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* ToolCallMessageEvent - Tool call message (part of assistant turn)
|
|
381
|
+
* Data: Complete ToolCallMessage object
|
|
382
|
+
*/
|
|
383
|
+
export interface ToolCallMessageEvent extends AgentMessageEventBase<
|
|
384
|
+
"tool_call_message",
|
|
385
|
+
ToolCallMessage
|
|
386
|
+
> {}
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* ToolResultMessageEvent - Tool result message
|
|
390
|
+
* Data: Complete ToolResultMessage object
|
|
391
|
+
*/
|
|
392
|
+
export interface ToolResultMessageEvent extends AgentMessageEventBase<
|
|
393
|
+
"tool_result_message",
|
|
394
|
+
ToolResultMessage
|
|
395
|
+
> {}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* ErrorMessageEvent - Error message displayed in chat
|
|
399
|
+
* Data: Complete ErrorMessage object
|
|
400
|
+
*
|
|
401
|
+
* Generated when error_received StreamEvent is processed by MealyMachine.
|
|
402
|
+
* Displayed in the chat history so users can see what went wrong.
|
|
403
|
+
*/
|
|
404
|
+
export interface ErrorMessageEvent extends AgentMessageEventBase<"error_message", ErrorMessage> {}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* AgentMessageEvent - All message events
|
|
408
|
+
*/
|
|
409
|
+
export type AgentMessageEvent =
|
|
410
|
+
| UserMessageEvent
|
|
411
|
+
| AssistantMessageEvent
|
|
412
|
+
| ToolCallMessageEvent
|
|
413
|
+
| ToolResultMessageEvent
|
|
414
|
+
| ErrorMessageEvent;
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* AgentMessageEventType - String literal union
|
|
418
|
+
*/
|
|
419
|
+
export type AgentMessageEventType = AgentMessageEvent["type"];
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Type guard: is this a message event?
|
|
423
|
+
*/
|
|
424
|
+
export function isAgentMessageEvent(event: {
|
|
425
|
+
source?: string;
|
|
426
|
+
category?: string;
|
|
427
|
+
}): event is AgentMessageEvent {
|
|
428
|
+
return event.source === "agent" && event.category === "message";
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// ============================================================================
|
|
432
|
+
// Agent Turn Events
|
|
433
|
+
// ============================================================================
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Base type for turn events
|
|
437
|
+
*/
|
|
438
|
+
export interface AgentTurnEventBase<T extends string, D> extends BaseAgentEvent<T, D, "turn"> {}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Token usage information
|
|
442
|
+
*/
|
|
443
|
+
export interface TokenUsage {
|
|
444
|
+
inputTokens: number;
|
|
445
|
+
outputTokens: number;
|
|
446
|
+
totalTokens?: number;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* TurnRequestEvent - Turn started (user message received)
|
|
451
|
+
*/
|
|
452
|
+
export interface TurnRequestEvent extends AgentTurnEventBase<
|
|
453
|
+
"turn_request",
|
|
454
|
+
{
|
|
455
|
+
turnId: string;
|
|
456
|
+
messageId: string;
|
|
457
|
+
content: string;
|
|
458
|
+
timestamp: number;
|
|
459
|
+
}
|
|
460
|
+
> {}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* TurnResponseEvent - Turn completed (assistant response finished)
|
|
464
|
+
*/
|
|
465
|
+
export interface TurnResponseEvent extends AgentTurnEventBase<
|
|
466
|
+
"turn_response",
|
|
467
|
+
{
|
|
468
|
+
turnId: string;
|
|
469
|
+
messageId: string;
|
|
470
|
+
duration: number;
|
|
471
|
+
usage?: TokenUsage;
|
|
472
|
+
model?: string;
|
|
473
|
+
stopReason?: string;
|
|
474
|
+
timestamp: number;
|
|
475
|
+
}
|
|
476
|
+
> {}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* AgentTurnEvent - All turn events
|
|
480
|
+
*/
|
|
481
|
+
export type AgentTurnEvent = TurnRequestEvent | TurnResponseEvent;
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* AgentTurnEventType - String literal union
|
|
485
|
+
*/
|
|
486
|
+
export type AgentTurnEventType = AgentTurnEvent["type"];
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Type guard: is this a turn event?
|
|
490
|
+
*/
|
|
491
|
+
export function isAgentTurnEvent(event: {
|
|
492
|
+
source?: string;
|
|
493
|
+
category?: string;
|
|
494
|
+
}): event is AgentTurnEvent {
|
|
495
|
+
return event.source === "agent" && event.category === "turn";
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
// ============================================================================
|
|
499
|
+
// Agent Event Union
|
|
500
|
+
// ============================================================================
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* AgentEvent - All events from Agent domain
|
|
504
|
+
*/
|
|
505
|
+
export type AgentEvent = AgentStreamEvent | AgentStateEvent | AgentMessageEvent | AgentTurnEvent;
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Type guard: is this an agent event?
|
|
509
|
+
*/
|
|
510
|
+
export function isAgentEvent(event: { source?: string }): event is AgentEvent {
|
|
511
|
+
return event.source === "agent";
|
|
512
|
+
}
|