@agentxjs/types 0.0.6 → 0.2.0
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/dist/Agent-BXUYGlWZ.d.cts +510 -0
- package/dist/Agent-CaSxMF_E.d.ts +510 -0
- package/dist/CommandEvent-CbXzPolX.d.ts +495 -0
- package/dist/CommandEvent-DCdk7lzX.d.cts +495 -0
- package/dist/Container-DR-1g44i.d.ts +641 -0
- package/dist/Container-dBDOcjhk.d.cts +641 -0
- package/dist/ContentPart-CqOh-rI1.d.ts +19 -0
- package/dist/ContentPart-DEFnYXCU.d.cts +19 -0
- package/dist/DriveableEvent-Bj7nn-Uk.d.ts +161 -0
- package/dist/DriveableEvent-CCMC1h_C.d.cts +161 -0
- package/dist/ErrorMessage-BoIh3MIO.d.cts +24 -0
- package/dist/ErrorMessage-BoIh3MIO.d.ts +24 -0
- package/dist/ImageRecord-Cn0VcJWk.d.cts +71 -0
- package/dist/ImageRecord-Cn0VcJWk.d.ts +71 -0
- package/dist/LoggerFactory-DZtw0M7U.d.cts +129 -0
- package/dist/LoggerFactory-DZtw0M7U.d.ts +129 -0
- package/dist/Message-Crh81uLL.d.cts +45 -0
- package/dist/Message-DWQUt647.d.ts +45 -0
- package/dist/Persistence-BQkdKomV.d.ts +230 -0
- package/dist/Persistence-Dr70FEBh.d.cts +230 -0
- package/dist/StopReason-D4DthB1h.d.cts +39 -0
- package/dist/StopReason-D4DthB1h.d.ts +39 -0
- package/dist/SystemEvent-CPvvxdMQ.d.cts +159 -0
- package/dist/SystemEvent-CPvvxdMQ.d.ts +159 -0
- package/dist/ToolResultMessage-CDG2L7Zv.d.ts +332 -0
- package/dist/ToolResultMessage-CRKMSf5d.d.cts +332 -0
- package/dist/agent-internal.cjs +19 -0
- package/dist/agent-internal.cjs.map +1 -0
- package/dist/agent-internal.d.cts +52 -0
- package/dist/agent-internal.d.ts +52 -0
- package/dist/agent-internal.js +1 -0
- package/dist/agent-internal.js.map +1 -0
- package/dist/agent.cjs +70 -0
- package/dist/agent.cjs.map +1 -0
- package/dist/agent.d.cts +229 -0
- package/dist/agent.d.ts +229 -0
- package/dist/agent.js +41 -0
- package/dist/agent.js.map +1 -0
- package/dist/agentx.cjs +38 -0
- package/dist/agentx.cjs.map +1 -0
- package/dist/agentx.d.cts +311 -0
- package/dist/agentx.d.ts +311 -0
- package/dist/agentx.js +12 -0
- package/dist/agentx.js.map +1 -0
- package/dist/chunk-2QHAIM3V.js +1 -0
- package/dist/chunk-2QHAIM3V.js.map +1 -0
- package/dist/common.cjs +19 -0
- package/dist/common.cjs.map +1 -0
- package/dist/common.d.cts +43 -0
- package/dist/common.d.ts +43 -0
- package/dist/common.js +2 -0
- package/dist/common.js.map +1 -0
- package/dist/event.cjs +184 -0
- package/dist/event.cjs.map +1 -0
- package/dist/event.d.cts +769 -0
- package/dist/event.d.ts +769 -0
- package/dist/event.js +134 -0
- package/dist/event.js.map +1 -0
- package/dist/index-CjFNcCxR.d.cts +299 -0
- package/dist/index-usKuk41S.d.ts +299 -0
- package/dist/index.cjs +2 -185
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -5267
- package/dist/index.d.ts +8 -5267
- package/dist/index.js +1 -150
- package/dist/index.js.map +1 -1
- package/dist/network.cjs +19 -0
- package/dist/network.cjs.map +1 -0
- package/dist/network.d.cts +168 -0
- package/dist/network.d.ts +168 -0
- package/dist/network.js +1 -0
- package/dist/network.js.map +1 -0
- package/dist/runtime-internal.cjs +19 -0
- package/dist/runtime-internal.cjs.map +1 -0
- package/dist/runtime-internal.d.cts +943 -0
- package/dist/runtime-internal.d.ts +943 -0
- package/dist/runtime-internal.js +1 -0
- package/dist/runtime-internal.js.map +1 -0
- package/dist/runtime.cjs +19 -0
- package/dist/runtime.cjs.map +1 -0
- package/dist/runtime.d.cts +217 -0
- package/dist/runtime.d.ts +217 -0
- package/dist/runtime.js +1 -0
- package/dist/runtime.js.map +1 -0
- package/package.json +82 -10
- package/LICENSE +0 -21
package/dist/event.js
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// src/event/base/SystemEvent.ts
|
|
2
|
+
function isFromSource(event, source) {
|
|
3
|
+
return event.source === source;
|
|
4
|
+
}
|
|
5
|
+
function hasIntent(event, intent) {
|
|
6
|
+
return event.intent === intent;
|
|
7
|
+
}
|
|
8
|
+
function isRequest(event) {
|
|
9
|
+
return event.intent === "request";
|
|
10
|
+
}
|
|
11
|
+
function isResult(event) {
|
|
12
|
+
return event.intent === "result";
|
|
13
|
+
}
|
|
14
|
+
function isNotification(event) {
|
|
15
|
+
return event.intent === "notification";
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// src/event/environment/DriveableEvent.ts
|
|
19
|
+
function isDriveableEvent(event) {
|
|
20
|
+
return event.source === "environment" && event.category === "stream";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// src/event/environment/ConnectionEvent.ts
|
|
24
|
+
function isConnectionEvent(event) {
|
|
25
|
+
return event.source === "environment" && event.category === "connection";
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// src/event/container/lifecycle/index.ts
|
|
29
|
+
function isContainerLifecycleEvent(event) {
|
|
30
|
+
return event.source === "container" && event.category === "lifecycle";
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// src/event/container/sandbox/workdir/index.ts
|
|
34
|
+
function isWorkdirEvent(event) {
|
|
35
|
+
return event.source === "sandbox" && event.category === "workdir";
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// src/event/container/sandbox/mcp/index.ts
|
|
39
|
+
function isMCPEvent(event) {
|
|
40
|
+
return event.source === "sandbox" && event.category === "mcp";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/event/container/sandbox/index.ts
|
|
44
|
+
function isSandboxEvent(event) {
|
|
45
|
+
return event.source === "sandbox";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/event/container/index.ts
|
|
49
|
+
function isContainerEvent(event) {
|
|
50
|
+
return event.source === "container" || event.source === "sandbox";
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// src/event/session/lifecycle/index.ts
|
|
54
|
+
function isSessionLifecycleEvent(event) {
|
|
55
|
+
return event.source === "session" && event.category === "lifecycle";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// src/event/session/persist/index.ts
|
|
59
|
+
function isSessionPersistEvent(event) {
|
|
60
|
+
return event.source === "session" && event.category === "persist";
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// src/event/session/action/index.ts
|
|
64
|
+
function isSessionActionEvent(event) {
|
|
65
|
+
return event.source === "session" && event.category === "action";
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// src/event/session/index.ts
|
|
69
|
+
function isSessionEvent(event) {
|
|
70
|
+
return event.source === "session";
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// src/event/command/CommandEvent.ts
|
|
74
|
+
function isCommandEvent(event) {
|
|
75
|
+
return event.source === "command";
|
|
76
|
+
}
|
|
77
|
+
function isCommandRequest(event) {
|
|
78
|
+
return event.source === "command" && event.category === "request";
|
|
79
|
+
}
|
|
80
|
+
function isCommandResponse(event) {
|
|
81
|
+
return event.source === "command" && event.category === "response";
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// src/event/agent/stream/index.ts
|
|
85
|
+
function isAgentStreamEvent(event) {
|
|
86
|
+
return event.source === "agent" && event.category === "stream";
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// src/event/agent/state/index.ts
|
|
90
|
+
function isAgentStateEvent(event) {
|
|
91
|
+
return event.source === "agent" && event.category === "state";
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// src/event/agent/message/index.ts
|
|
95
|
+
function isAgentMessageEvent(event) {
|
|
96
|
+
return event.source === "agent" && event.category === "message";
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// src/event/agent/turn/index.ts
|
|
100
|
+
function isAgentTurnEvent(event) {
|
|
101
|
+
return event.source === "agent" && event.category === "turn";
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// src/event/agent/index.ts
|
|
105
|
+
function isAgentEvent(event) {
|
|
106
|
+
return event.source === "agent";
|
|
107
|
+
}
|
|
108
|
+
export {
|
|
109
|
+
hasIntent,
|
|
110
|
+
isAgentEvent,
|
|
111
|
+
isAgentMessageEvent,
|
|
112
|
+
isAgentStateEvent,
|
|
113
|
+
isAgentStreamEvent,
|
|
114
|
+
isAgentTurnEvent,
|
|
115
|
+
isCommandEvent,
|
|
116
|
+
isCommandRequest,
|
|
117
|
+
isCommandResponse,
|
|
118
|
+
isConnectionEvent,
|
|
119
|
+
isContainerEvent,
|
|
120
|
+
isContainerLifecycleEvent,
|
|
121
|
+
isDriveableEvent,
|
|
122
|
+
isFromSource,
|
|
123
|
+
isMCPEvent,
|
|
124
|
+
isNotification,
|
|
125
|
+
isRequest,
|
|
126
|
+
isResult,
|
|
127
|
+
isSandboxEvent,
|
|
128
|
+
isSessionActionEvent,
|
|
129
|
+
isSessionEvent,
|
|
130
|
+
isSessionLifecycleEvent,
|
|
131
|
+
isSessionPersistEvent,
|
|
132
|
+
isWorkdirEvent
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/event/base/SystemEvent.ts","../src/event/environment/DriveableEvent.ts","../src/event/environment/ConnectionEvent.ts","../src/event/container/lifecycle/index.ts","../src/event/container/sandbox/workdir/index.ts","../src/event/container/sandbox/mcp/index.ts","../src/event/container/sandbox/index.ts","../src/event/container/index.ts","../src/event/session/lifecycle/index.ts","../src/event/session/persist/index.ts","../src/event/session/action/index.ts","../src/event/session/index.ts","../src/event/command/CommandEvent.ts","../src/event/agent/stream/index.ts","../src/event/agent/state/index.ts","../src/event/agent/message/index.ts","../src/event/agent/turn/index.ts","../src/event/agent/index.ts"],"sourcesContent":["/**\n * SystemEvent - Base interface for all events in the system\n *\n * Unified Event Structure:\n * ```\n * SystemEvent\n * │\n * │ All events have: type, timestamp, data, source, category, intent\n * │\n * ├── source: \"command\" ← API operations (request/response)\n * │ ├── category: \"request\" → container_create_request, agent_run_request...\n * │ └── category: \"response\" → container_create_response, agent_run_response...\n * │\n * ├── source: \"environment\" ← External world (Claude API, Network)\n * │ ├── category: \"stream\" → message_start, text_delta, message_stop, tool_call...\n * │ └── category: \"connection\"→ connected, disconnected, reconnecting\n * │\n * ├── source: \"container\" ← Container operations\n * │ └── category: \"lifecycle\" → container_created, container_destroyed, agent_registered...\n * │\n * ├── source: \"session\" ← Session operations\n * │ ├── category: \"lifecycle\" → session_created, session_destroyed\n * │ ├── category: \"persist\" → session_saved, message_persisted\n * │ └── category: \"action\" → session_resumed, session_forked\n * │\n * ├── source: \"sandbox\" ← Sandbox resources\n * │ ├── category: \"workdir\" → file_read, file_written\n * │ └── category: \"mcp\" → tool_execute, mcp_server_connected\n * │\n * └── source: \"agent\" ← Agent internal\n * ├── category: \"stream\" → (forwarded from environment)\n * ├── category: \"state\" → state transitions\n * ├── category: \"message\" → complete messages\n * └── category: \"turn\" → conversation turns\n * ```\n *\n * Design Principles:\n * - Unified: All events share the same base structure\n * - Self-describing: source/category/intent tell you everything\n * - Filterable: Easy to subscribe by source, category, or type\n */\n\n// ============================================================================\n// Event Classification Types\n// ============================================================================\n\n/**\n * Event source - where the event originated\n */\nexport type EventSource =\n | \"environment\" // External world (Claude API, Network)\n | \"agent\" // Agent internal\n | \"session\" // Session operations\n | \"container\" // Container operations\n | \"sandbox\" // Sandbox resources (Workspace, MCP)\n | \"command\"; // Command request/response (API operations)\n\n/**\n * Event intent - what the event represents\n */\nexport type EventIntent =\n | \"request\" // Request to perform action (may be forwarded or executed)\n | \"result\" // Result of completed action\n | \"notification\"; // State change notification (no action needed)\n\n/**\n * Event category - fine-grained classification within source\n */\nexport type EventCategory =\n // Environment categories\n | \"stream\" // Streaming output from LLM\n | \"connection\" // Network connection status\n // Agent categories\n | \"state\" // State transitions\n | \"message\" // Complete messages\n | \"turn\" // Conversation turns\n | \"error\" // Errors\n // Session categories\n | \"lifecycle\" // Creation/destruction\n | \"persist\" // Persistence operations\n | \"action\" // User actions (resume, fork)\n // Sandbox categories\n | \"workdir\" // File operations\n | \"mcp\" // MCP tool operations\n // Command categories (API request/response)\n | \"request\" // Request to perform action\n | \"response\"; // Response with result\n\n// ============================================================================\n// Event Context\n// ============================================================================\n\n/**\n * EventContext - Scope information attached to events\n */\nexport interface EventContext {\n /**\n * Container ID (isolation boundary)\n */\n containerId?: string;\n\n /**\n * Image ID (persistent conversation identity)\n */\n imageId?: string;\n\n /**\n * Agent ID (if event is agent-scoped)\n */\n agentId?: string;\n\n /**\n * Session ID (if event is session-scoped)\n */\n sessionId?: string;\n\n /**\n * Turn ID (for correlating events within a single turn)\n * A turn = one user message + assistant response cycle\n */\n turnId?: string;\n\n /**\n * Correlation ID (for request-response tracking)\n */\n correlationId?: string;\n}\n\n// ============================================================================\n// SystemEvent - The One Event Type\n// ============================================================================\n\n/**\n * SystemEvent - Base interface for ALL events in the system\n *\n * Every event has:\n * - type: What happened (e.g., \"text_delta\", \"session_saved\")\n * - timestamp: When it happened\n * - data: Event payload\n * - source: Where it came from\n * - category: What kind of event\n * - intent: What it means (notification/request/result)\n * - context: Optional scope information\n * - broadcastable: Whether to broadcast to external clients (default: true)\n */\nexport interface SystemEvent<\n T extends string = string,\n D = unknown,\n S extends EventSource = EventSource,\n C extends EventCategory = EventCategory,\n I extends EventIntent = EventIntent,\n> {\n /**\n * Event type identifier (e.g., \"text_delta\", \"session_saved\")\n */\n readonly type: T;\n\n /**\n * Event timestamp (Unix milliseconds)\n */\n readonly timestamp: number;\n\n /**\n * Event payload data\n */\n readonly data: D;\n\n /**\n * Event source - where the event originated\n */\n readonly source: S;\n\n /**\n * Event category - fine-grained classification\n */\n readonly category: C;\n\n /**\n * Event intent - what the event represents\n */\n readonly intent: I;\n\n /**\n * Event context - scope information (optional)\n */\n readonly context?: EventContext;\n\n /**\n * Whether to broadcast this event to external clients (SSE/WebSocket)\n *\n * - true or undefined: Broadcast to all external clients\n * - false: Only consumed internally, not broadcast\n *\n * Used for internal events like DriveableEvent that should be\n * processed by the engine but not sent directly to clients.\n * @default true\n */\n readonly broadcastable?: boolean;\n}\n\n// ============================================================================\n// Type Guards\n// ============================================================================\n\n/**\n * Check if event is from a specific source\n */\nexport function isFromSource<S extends EventSource>(\n event: SystemEvent,\n source: S\n): event is SystemEvent<string, unknown, S> {\n return event.source === source;\n}\n\n/**\n * Check if event has a specific intent\n */\nexport function hasIntent<I extends EventIntent>(\n event: SystemEvent,\n intent: I\n): event is SystemEvent<string, unknown, EventSource, EventCategory, I> {\n return event.intent === intent;\n}\n\n/**\n * Check if event is a request\n */\nexport function isRequest(event: SystemEvent): boolean {\n return event.intent === \"request\";\n}\n\n/**\n * Check if event is a result\n */\nexport function isResult(event: SystemEvent): boolean {\n return event.intent === \"result\";\n}\n\n/**\n * Check if event is a notification\n */\nexport function isNotification(event: SystemEvent): boolean {\n return event.intent === \"notification\";\n}\n","/**\n * DriveableEvent - Events from LLM that can drive Agent\n *\n * These are environment events with:\n * - source: \"environment\"\n * - category: \"stream\"\n * - intent: \"notification\"\n *\n * Flow:\n * 1. Receptor receives from Claude SDK\n * 2. Receptor emits DriveableEvent to SystemBus\n * 3. BusDriver listens and forwards to Agent\n * 4. Agent Engine processes the event\n */\n\nimport type { SystemEvent } from \"../base\";\nimport type { StopReason } from \"~/runtime/internal/container/llm/StopReason\";\n\n// ============================================================================\n// Base Type for Stream Events\n// ============================================================================\n\n/**\n * Base interface for all LLM stream events\n *\n * All DriveableEvents have:\n * - source: \"environment\" (from external LLM)\n * - category: \"stream\" (streaming output)\n * - intent: \"notification\" (informational, no action needed)\n * - requestId: correlation with the original request\n * - context: agent/image/session scope (inherited from SystemEvent)\n */\ninterface BaseStreamEvent<T extends string, D = unknown>\n extends SystemEvent<T, D, \"environment\", \"stream\", \"notification\"> {\n /**\n * Content block index (for multi-block responses)\n */\n index?: number;\n\n /**\n * Request ID for correlating events with the original message_send_request\n */\n requestId?: string;\n}\n\n// ============================================================================\n// Message Lifecycle Events\n// ============================================================================\n\n/**\n * MessageStartEvent - Emitted when streaming message begins\n */\nexport interface MessageStartEvent\n extends BaseStreamEvent<\n \"message_start\",\n {\n message: {\n id: string;\n model: string;\n };\n }\n > {}\n\n/**\n * MessageDeltaEvent - Emitted with message-level updates\n */\nexport interface MessageDeltaEvent\n extends BaseStreamEvent<\n \"message_delta\",\n {\n usage?: {\n inputTokens: number;\n outputTokens: number;\n };\n }\n > {}\n\n/**\n * MessageStopEvent - Emitted when streaming message completes\n */\nexport interface MessageStopEvent\n extends BaseStreamEvent<\n \"message_stop\",\n {\n stopReason?: StopReason;\n stopSequence?: string;\n }\n > {}\n\n// ============================================================================\n// Text Content Block Events\n// ============================================================================\n\n/**\n * TextContentBlockStartEvent - Text block started\n */\nexport interface TextContentBlockStartEvent\n extends BaseStreamEvent<\"text_content_block_start\", Record<string, never>> {\n index: number;\n}\n\n/**\n * TextDeltaEvent - Incremental text output\n */\nexport interface TextDeltaEvent\n extends BaseStreamEvent<\n \"text_delta\",\n {\n text: string;\n }\n > {}\n\n/**\n * TextContentBlockStopEvent - Text block completed\n */\nexport interface TextContentBlockStopEvent\n extends BaseStreamEvent<\"text_content_block_stop\", Record<string, never>> {\n index: number;\n}\n\n// ============================================================================\n// Tool Use Content Block Events\n// ============================================================================\n\n/**\n * ToolUseContentBlockStartEvent - Tool use block started\n */\nexport interface ToolUseContentBlockStartEvent\n extends BaseStreamEvent<\n \"tool_use_content_block_start\",\n {\n id: string;\n name: string;\n }\n > {\n index: number;\n}\n\n/**\n * InputJsonDeltaEvent - Incremental tool input JSON\n */\nexport interface InputJsonDeltaEvent\n extends BaseStreamEvent<\n \"input_json_delta\",\n {\n partialJson: string;\n }\n > {\n index: number;\n}\n\n/**\n * ToolUseContentBlockStopEvent - Tool use block completed\n */\nexport interface ToolUseContentBlockStopEvent\n extends BaseStreamEvent<\"tool_use_content_block_stop\", Record<string, never>> {\n index: number;\n}\n\n// ============================================================================\n// Tool Execution Events\n// ============================================================================\n\n/**\n * ToolCallEvent - Tool call ready for execution\n */\nexport interface ToolCallEvent\n extends BaseStreamEvent<\n \"tool_call\",\n {\n id: string;\n name: string;\n input: Record<string, unknown>;\n }\n > {}\n\n/**\n * ToolResultEvent - Tool execution result\n */\nexport interface ToolResultEvent\n extends BaseStreamEvent<\n \"tool_result\",\n {\n toolUseId: string;\n result: unknown;\n isError?: boolean;\n }\n > {}\n\n// ============================================================================\n// Interrupt Event\n// ============================================================================\n\n/**\n * InterruptedEvent - Stream interrupted\n */\nexport interface InterruptedEvent\n extends BaseStreamEvent<\n \"interrupted\",\n {\n reason: \"user_interrupt\" | \"timeout\" | \"error\" | \"system\";\n }\n > {}\n\n// ============================================================================\n// Error Event\n// ============================================================================\n\n/**\n * ErrorReceivedEvent - Error received from environment (e.g., Claude API error)\n *\n * This event drives the MealyMachine to produce:\n * - error_occurred (StateEvent) → state transitions to \"error\"\n * - error_message (MessageEvent) → displayed in chat\n */\nexport interface ErrorReceivedEvent\n extends BaseStreamEvent<\n \"error_received\",\n {\n /** Error message (human-readable) */\n message: string;\n /** Error code (e.g., \"rate_limit_error\", \"api_error\", \"overloaded_error\") */\n errorCode?: string;\n }\n > {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * DriveableEvent - All events that can drive Agent\n */\nexport type DriveableEvent =\n // Message lifecycle\n | MessageStartEvent\n | MessageDeltaEvent\n | MessageStopEvent\n // Text content block\n | TextContentBlockStartEvent\n | TextDeltaEvent\n | TextContentBlockStopEvent\n // Tool use content block\n | ToolUseContentBlockStartEvent\n | InputJsonDeltaEvent\n | ToolUseContentBlockStopEvent\n // Tool execution\n | ToolCallEvent\n | ToolResultEvent\n // Interrupt\n | InterruptedEvent\n // Error\n | ErrorReceivedEvent;\n\n/**\n * DriveableEventType - String literal union of all driveable event types\n */\nexport type DriveableEventType = DriveableEvent[\"type\"];\n\n/**\n * Type guard: is this a DriveableEvent?\n */\nexport function isDriveableEvent(event: SystemEvent): event is DriveableEvent {\n return event.source === \"environment\" && event.category === \"stream\";\n}\n","/**\n * ConnectionEvent - Network connection status events\n *\n * These events notify about network connection status.\n * They do NOT drive the Agent (not processed by AgentEngine).\n *\n * All ConnectionEvents have:\n * - source: \"environment\"\n * - category: \"connection\"\n * - intent: \"notification\"\n */\n\nimport type { SystemEvent } from \"../base\";\n\n// ============================================================================\n// Base Type for Connection Events\n// ============================================================================\n\n/**\n * Base interface for all connection events\n */\ninterface BaseConnectionEvent<T extends string, D = unknown>\n extends SystemEvent<T, D, \"environment\", \"connection\", \"notification\"> {}\n\n// ============================================================================\n// Connection Events\n// ============================================================================\n\n/**\n * ConnectedEvent - Connection established\n */\nexport interface ConnectedEvent\n extends BaseConnectionEvent<\n \"connected\",\n {\n url?: string;\n reconnectAttempt?: number;\n }\n > {}\n\n/**\n * DisconnectedEvent - Connection lost\n */\nexport interface DisconnectedEvent\n extends BaseConnectionEvent<\n \"disconnected\",\n {\n reason?: string;\n code?: number;\n willReconnect?: boolean;\n }\n > {}\n\n/**\n * ReconnectingEvent - Attempting to reconnect\n */\nexport interface ReconnectingEvent\n extends BaseConnectionEvent<\n \"reconnecting\",\n {\n attempt: number;\n maxAttempts?: number;\n delayMs: number;\n }\n > {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * ConnectionEvent - All network status events\n */\nexport type ConnectionEvent = ConnectedEvent | DisconnectedEvent | ReconnectingEvent;\n\n/**\n * ConnectionEventType - String literal union\n */\nexport type ConnectionEventType = ConnectionEvent[\"type\"];\n\n/**\n * Type guard: is this a ConnectionEvent?\n */\nexport function isConnectionEvent(event: SystemEvent): event is ConnectionEvent {\n return event.source === \"environment\" && event.category === \"connection\";\n}\n","/**\n * Container Lifecycle Events\n *\n * Events for container creation, destruction, and agent management.\n *\n * All ContainerLifecycleEvents have:\n * - source: \"container\"\n * - category: \"lifecycle\"\n * - intent: \"notification\"\n */\n\nimport type { SystemEvent } from \"../../base\";\n\n// ============================================================================\n// Base Type\n// ============================================================================\n\n/**\n * Base ContainerLifecycleEvent\n */\ninterface BaseContainerLifecycleEvent<T extends string, D = unknown>\n extends SystemEvent<T, D, \"container\", \"lifecycle\", \"notification\"> {}\n\n// ============================================================================\n// Container Lifecycle Events\n// ============================================================================\n\n/**\n * ContainerCreatedEvent - Container was created\n */\nexport interface ContainerCreatedEvent\n extends BaseContainerLifecycleEvent<\n \"container_created\",\n {\n containerId: string;\n name?: string;\n createdAt: number;\n }\n > {}\n\n/**\n * ContainerDestroyedEvent - Container was destroyed\n */\nexport interface ContainerDestroyedEvent\n extends BaseContainerLifecycleEvent<\n \"container_destroyed\",\n {\n containerId: string;\n reason?: string;\n agentCount: number;\n }\n > {}\n\n// ============================================================================\n// Agent Registration Events\n// ============================================================================\n\n/**\n * AgentRegisteredEvent - Agent was registered to container\n */\nexport interface AgentRegisteredEvent\n extends BaseContainerLifecycleEvent<\n \"agent_registered\",\n {\n containerId: string;\n agentId: string;\n definitionName: string;\n registeredAt: number;\n }\n > {}\n\n/**\n * AgentUnregisteredEvent - Agent was unregistered from container\n */\nexport interface AgentUnregisteredEvent\n extends BaseContainerLifecycleEvent<\n \"agent_unregistered\",\n {\n containerId: string;\n agentId: string;\n reason?: string;\n }\n > {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * ContainerLifecycleEvent - All container lifecycle events\n */\nexport type ContainerLifecycleEvent =\n | ContainerCreatedEvent\n | ContainerDestroyedEvent\n | AgentRegisteredEvent\n | AgentUnregisteredEvent;\n\n/**\n * Type guard: is this a ContainerLifecycleEvent?\n */\nexport function isContainerLifecycleEvent(event: SystemEvent): event is ContainerLifecycleEvent {\n return event.source === \"container\" && event.category === \"lifecycle\";\n}\n","/**\n * Sandbox Workdir Events\n *\n * Events for file system operations in the agent's working directory.\n *\n * All WorkdirEvents have:\n * - source: \"sandbox\"\n * - category: \"workdir\"\n * - intent: \"request\" | \"result\" | \"notification\"\n */\n\nimport type { SystemEvent } from \"~/event/base\";\n\n// ============================================================================\n// Base Types\n// ============================================================================\n\n/**\n * Base WorkdirRequest\n */\ninterface BaseWorkdirRequest<T extends string, D = unknown>\n extends SystemEvent<T, D, \"sandbox\", \"workdir\", \"request\"> {}\n\n/**\n * Base WorkdirResult\n */\ninterface BaseWorkdirResult<T extends string, D = unknown>\n extends SystemEvent<T, D, \"sandbox\", \"workdir\", \"result\"> {}\n\n/**\n * Base WorkdirNotification\n */\ninterface BaseWorkdirNotification<T extends string, D = unknown>\n extends SystemEvent<T, D, \"sandbox\", \"workdir\", \"notification\"> {}\n\n// ============================================================================\n// File Read Events\n// ============================================================================\n\n/**\n * FileReadRequest - Request to read a file\n */\nexport interface FileReadRequest\n extends BaseWorkdirRequest<\n \"file_read_request\",\n {\n path: string;\n encoding?: string;\n }\n > {}\n\n/**\n * FileReadResult - File read result\n */\nexport interface FileReadResult\n extends BaseWorkdirResult<\n \"file_read_result\",\n {\n path: string;\n content: string;\n size: number;\n encoding: string;\n }\n > {}\n\n// ============================================================================\n// File Write Events\n// ============================================================================\n\n/**\n * FileWriteRequest - Request to write a file\n */\nexport interface FileWriteRequest\n extends BaseWorkdirRequest<\n \"file_write_request\",\n {\n path: string;\n content: string;\n encoding?: string;\n createDirectories?: boolean;\n }\n > {}\n\n/**\n * FileWrittenEvent - File was written\n */\nexport interface FileWrittenEvent\n extends BaseWorkdirResult<\n \"file_written\",\n {\n path: string;\n size: number;\n timestamp: number;\n }\n > {}\n\n// ============================================================================\n// File Delete Events\n// ============================================================================\n\n/**\n * FileDeleteRequest - Request to delete a file\n */\nexport interface FileDeleteRequest\n extends BaseWorkdirRequest<\n \"file_delete_request\",\n {\n path: string;\n recursive?: boolean;\n }\n > {}\n\n/**\n * FileDeletedEvent - File was deleted\n */\nexport interface FileDeletedEvent\n extends BaseWorkdirResult<\n \"file_deleted\",\n {\n path: string;\n timestamp: number;\n }\n > {}\n\n// ============================================================================\n// Directory Events\n// ============================================================================\n\n/**\n * DirectoryListRequest - Request to list directory\n */\nexport interface DirectoryListRequest\n extends BaseWorkdirRequest<\n \"directory_list_request\",\n {\n path: string;\n recursive?: boolean;\n pattern?: string;\n }\n > {}\n\n/**\n * DirectoryListResult - Directory listing result\n */\nexport interface DirectoryListResult\n extends BaseWorkdirResult<\n \"directory_list_result\",\n {\n path: string;\n entries: Array<{\n name: string;\n type: \"file\" | \"directory\";\n size?: number;\n modifiedAt?: number;\n }>;\n }\n > {}\n\n// ============================================================================\n// Error Event\n// ============================================================================\n\n/**\n * WorkdirErrorEvent - Workdir operation error\n */\nexport interface WorkdirErrorEvent\n extends BaseWorkdirNotification<\n \"workdir_error\",\n {\n operation: string;\n path: string;\n code: string;\n message: string;\n }\n > {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * WorkdirEvent - All workdir events\n */\nexport type WorkdirEvent =\n | FileReadRequest\n | FileReadResult\n | FileWriteRequest\n | FileWrittenEvent\n | FileDeleteRequest\n | FileDeletedEvent\n | DirectoryListRequest\n | DirectoryListResult\n | WorkdirErrorEvent;\n\n/**\n * Workdir request events\n */\nexport type WorkdirRequestEvent =\n | FileReadRequest\n | FileWriteRequest\n | FileDeleteRequest\n | DirectoryListRequest;\n\n/**\n * Workdir result events\n */\nexport type WorkdirResultEvent =\n | FileReadResult\n | FileWrittenEvent\n | FileDeletedEvent\n | DirectoryListResult;\n\n/**\n * Type guard: is this a WorkdirEvent?\n */\nexport function isWorkdirEvent(event: SystemEvent): event is WorkdirEvent {\n return event.source === \"sandbox\" && event.category === \"workdir\";\n}\n","/**\n * Sandbox MCP Events\n *\n * Events for MCP (Model Context Protocol) tool operations.\n *\n * All MCPEvents have:\n * - source: \"sandbox\"\n * - category: \"mcp\"\n * - intent: \"request\" | \"result\" | \"notification\"\n */\n\nimport type { SystemEvent } from \"~/event/base\";\n\n// ============================================================================\n// Base Types\n// ============================================================================\n\n/**\n * Base MCPRequest\n */\ninterface BaseMCPRequest<T extends string, D = unknown>\n extends SystemEvent<T, D, \"sandbox\", \"mcp\", \"request\"> {}\n\n/**\n * Base MCPResult\n */\ninterface BaseMCPResult<T extends string, D = unknown>\n extends SystemEvent<T, D, \"sandbox\", \"mcp\", \"result\"> {}\n\n/**\n * Base MCPNotification\n */\ninterface BaseMCPNotification<T extends string, D = unknown>\n extends SystemEvent<T, D, \"sandbox\", \"mcp\", \"notification\"> {}\n\n// ============================================================================\n// Tool Execution Events\n// ============================================================================\n\n/**\n * ToolExecuteRequest - Request to execute a tool\n */\nexport interface ToolExecuteRequest\n extends BaseMCPRequest<\n \"tool_execute_request\",\n {\n toolId: string;\n toolName: string;\n serverName: string;\n input: Record<string, unknown>;\n timestamp: number;\n }\n > {}\n\n/**\n * ToolExecutedEvent - Tool execution completed\n */\nexport interface ToolExecutedEvent\n extends BaseMCPResult<\n \"tool_executed\",\n {\n toolId: string;\n toolName: string;\n result: unknown;\n duration: number;\n timestamp: number;\n }\n > {}\n\n/**\n * ToolExecutionErrorEvent - Tool execution failed\n */\nexport interface ToolExecutionErrorEvent\n extends BaseMCPNotification<\n \"tool_execution_error\",\n {\n toolId: string;\n toolName: string;\n code: string;\n message: string;\n timestamp: number;\n }\n > {}\n\n// ============================================================================\n// MCP Server Events\n// ============================================================================\n\n/**\n * MCPServerConnectedEvent - MCP server connected\n */\nexport interface MCPServerConnectedEvent\n extends BaseMCPNotification<\n \"mcp_server_connected\",\n {\n serverName: string;\n version?: string;\n toolCount: number;\n resourceCount: number;\n timestamp: number;\n }\n > {}\n\n/**\n * MCPServerDisconnectedEvent - MCP server disconnected\n */\nexport interface MCPServerDisconnectedEvent\n extends BaseMCPNotification<\n \"mcp_server_disconnected\",\n {\n serverName: string;\n reason?: string;\n timestamp: number;\n }\n > {}\n\n// ============================================================================\n// Resource Events\n// ============================================================================\n\n/**\n * ResourceReadRequest - Request to read an MCP resource\n */\nexport interface ResourceReadRequest\n extends BaseMCPRequest<\n \"resource_read_request\",\n {\n serverName: string;\n uri: string;\n }\n > {}\n\n/**\n * ResourceReadResult - Resource read result\n */\nexport interface ResourceReadResult\n extends BaseMCPResult<\n \"resource_read_result\",\n {\n serverName: string;\n uri: string;\n content: unknown;\n mimeType?: string;\n }\n > {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * MCPEvent - All MCP events\n */\nexport type MCPEvent =\n | ToolExecuteRequest\n | ToolExecutedEvent\n | ToolExecutionErrorEvent\n | MCPServerConnectedEvent\n | MCPServerDisconnectedEvent\n | ResourceReadRequest\n | ResourceReadResult;\n\n/**\n * MCP request events\n */\nexport type MCPRequestEvent = ToolExecuteRequest | ResourceReadRequest;\n\n/**\n * MCP result events\n */\nexport type MCPResultEvent = ToolExecutedEvent | ResourceReadResult;\n\n/**\n * Type guard: is this a MCPEvent?\n */\nexport function isMCPEvent(event: SystemEvent): event is MCPEvent {\n return event.source === \"sandbox\" && event.category === \"mcp\";\n}\n","/**\n * Sandbox Events\n *\n * All events related to Sandbox resource operations:\n * - Workdir: File system operations\n * - MCP: Model Context Protocol tools\n *\n * Note: LLM events are NOT part of Sandbox.\n * Agent system doesn't need to observe LLM-level events.\n */\n\n// Workdir Events\nexport type {\n WorkdirEvent,\n WorkdirRequestEvent,\n WorkdirResultEvent,\n FileReadRequest,\n FileReadResult,\n FileWriteRequest,\n FileWrittenEvent,\n FileDeleteRequest,\n FileDeletedEvent,\n DirectoryListRequest,\n DirectoryListResult,\n WorkdirErrorEvent,\n} from \"./workdir\";\nexport { isWorkdirEvent } from \"./workdir\";\n\n// MCP Events\nexport type {\n MCPEvent,\n MCPRequestEvent,\n MCPResultEvent,\n ToolExecuteRequest,\n ToolExecutedEvent,\n ToolExecutionErrorEvent,\n MCPServerConnectedEvent,\n MCPServerDisconnectedEvent,\n ResourceReadRequest,\n ResourceReadResult,\n} from \"./mcp\";\nexport { isMCPEvent } from \"./mcp\";\n\n// ============================================================================\n// Combined Union\n// ============================================================================\n\nimport type { WorkdirEvent } from \"./workdir\";\nimport type { MCPEvent } from \"./mcp\";\n\n/**\n * SandboxEvent - All sandbox events\n */\nexport type SandboxEvent = WorkdirEvent | MCPEvent;\n\n/**\n * Type guard: is this a sandbox event?\n */\nexport function isSandboxEvent(event: { source?: string }): event is SandboxEvent {\n return event.source === \"sandbox\";\n}\n","/**\n * Container Events\n *\n * All events related to Container operations:\n * - Lifecycle: creation, destruction, agent registration\n * - Sandbox: workspace and MCP tool operations\n */\n\n// Lifecycle Events\nexport type {\n ContainerLifecycleEvent,\n ContainerCreatedEvent,\n ContainerDestroyedEvent,\n AgentRegisteredEvent,\n AgentUnregisteredEvent,\n} from \"./lifecycle\";\nexport { isContainerLifecycleEvent } from \"./lifecycle\";\n\n// Sandbox Events\nexport * from \"./sandbox\";\n\n// ============================================================================\n// Combined Union\n// ============================================================================\n\nimport type { ContainerLifecycleEvent } from \"./lifecycle\";\nimport type { SandboxEvent } from \"./sandbox\";\n\n/**\n * ContainerEvent - All container events\n */\nexport type ContainerEvent = ContainerLifecycleEvent | SandboxEvent;\n\n/**\n * Type guard: is this a container event?\n */\nexport function isContainerEvent(event: { source?: string }): event is ContainerEvent {\n return event.source === \"container\" || event.source === \"sandbox\";\n}\n","/**\n * Session Lifecycle Events\n *\n * Events for session creation and destruction.\n *\n * All SessionLifecycleEvents have:\n * - source: \"session\"\n * - category: \"lifecycle\"\n * - intent: \"notification\"\n */\n\nimport type { SystemEvent } from \"../../base\";\n\n// ============================================================================\n// Base Type\n// ============================================================================\n\n/**\n * Base SessionLifecycleEvent\n */\ninterface BaseSessionLifecycleEvent<T extends string, D = unknown>\n extends SystemEvent<T, D, \"session\", \"lifecycle\", \"notification\"> {}\n\n// ============================================================================\n// Lifecycle Events\n// ============================================================================\n\n/**\n * SessionCreatedEvent - Session was created\n */\nexport interface SessionCreatedEvent\n extends BaseSessionLifecycleEvent<\n \"session_created\",\n {\n sessionId: string;\n imageId: string;\n containerId: string;\n title?: string;\n createdAt: number;\n }\n > {}\n\n/**\n * SessionDestroyedEvent - Session was destroyed\n */\nexport interface SessionDestroyedEvent\n extends BaseSessionLifecycleEvent<\n \"session_destroyed\",\n {\n sessionId: string;\n reason?: string;\n }\n > {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * SessionLifecycleEvent - All session lifecycle events\n */\nexport type SessionLifecycleEvent = SessionCreatedEvent | SessionDestroyedEvent;\n\n/**\n * Type guard: is this a SessionLifecycleEvent?\n */\nexport function isSessionLifecycleEvent(event: SystemEvent): event is SessionLifecycleEvent {\n return event.source === \"session\" && event.category === \"lifecycle\";\n}\n","/**\n * Session Persist Events\n *\n * Events for session persistence operations.\n *\n * Isomorphic Design:\n * - Request events may be forwarded (RemoteEcosystem) or executed (NodeEcosystem)\n * - Result events confirm completion\n *\n * All SessionPersistEvents have:\n * - source: \"session\"\n * - category: \"persist\"\n * - intent: \"request\" | \"result\"\n */\n\nimport type { SystemEvent } from \"../../base\";\n\n// ============================================================================\n// Base Types\n// ============================================================================\n\n/**\n * Base SessionPersistRequest\n */\ninterface BaseSessionPersistRequest<T extends string, D = unknown>\n extends SystemEvent<T, D, \"session\", \"persist\", \"request\"> {}\n\n/**\n * Base SessionPersistResult\n */\ninterface BaseSessionPersistResult<T extends string, D = unknown>\n extends SystemEvent<T, D, \"session\", \"persist\", \"result\"> {}\n\n// ============================================================================\n// Save Events\n// ============================================================================\n\n/**\n * SessionSaveRequest - Request to save session\n */\nexport interface SessionSaveRequest\n extends BaseSessionPersistRequest<\n \"session_save_request\",\n {\n sessionId: string;\n title?: string;\n metadata?: Record<string, unknown>;\n }\n > {}\n\n/**\n * SessionSavedEvent - Session was saved\n */\nexport interface SessionSavedEvent\n extends BaseSessionPersistResult<\n \"session_saved\",\n {\n sessionId: string;\n savedAt: number;\n }\n > {}\n\n// ============================================================================\n// Message Persist Events\n// ============================================================================\n\n/**\n * MessagePersistRequest - Request to persist a message\n */\nexport interface MessagePersistRequest\n extends BaseSessionPersistRequest<\n \"message_persist_request\",\n {\n sessionId: string;\n messageId: string;\n role: \"user\" | \"assistant\" | \"tool_call\" | \"tool_result\";\n content: unknown;\n }\n > {}\n\n/**\n * MessagePersistedEvent - Message was persisted\n */\nexport interface MessagePersistedEvent\n extends BaseSessionPersistResult<\n \"message_persisted\",\n {\n sessionId: string;\n messageId: string;\n savedAt: number;\n }\n > {}\n\n// ============================================================================\n// Union Types\n// ============================================================================\n\n/**\n * SessionPersistEvent - All session persist events\n */\nexport type SessionPersistEvent =\n | SessionSaveRequest\n | SessionSavedEvent\n | MessagePersistRequest\n | MessagePersistedEvent;\n\n/**\n * Session persist request events\n */\nexport type SessionPersistRequestEvent = SessionSaveRequest | MessagePersistRequest;\n\n/**\n * Session persist result events\n */\nexport type SessionPersistResultEvent = SessionSavedEvent | MessagePersistedEvent;\n\n/**\n * Type guard: is this a SessionPersistEvent?\n */\nexport function isSessionPersistEvent(event: SystemEvent): event is SessionPersistEvent {\n return event.source === \"session\" && event.category === \"persist\";\n}\n","/**\n * Session Action Events\n *\n * Events for user-initiated session actions (resume, fork, etc.)\n *\n * All SessionActionEvents have:\n * - source: \"session\"\n * - category: \"action\"\n * - intent: \"request\" | \"result\"\n */\n\nimport type { SystemEvent } from \"../../base\";\n\n// ============================================================================\n// Base Types\n// ============================================================================\n\n/**\n * Base SessionActionRequest\n */\ninterface BaseSessionActionRequest<T extends string, D = unknown>\n extends SystemEvent<T, D, \"session\", \"action\", \"request\"> {}\n\n/**\n * Base SessionActionResult\n */\ninterface BaseSessionActionResult<T extends string, D = unknown>\n extends SystemEvent<T, D, \"session\", \"action\", \"result\"> {}\n\n// ============================================================================\n// Resume Events\n// ============================================================================\n\n/**\n * SessionResumeRequest - Request to resume a session\n */\nexport interface SessionResumeRequest\n extends BaseSessionActionRequest<\n \"session_resume_request\",\n {\n sessionId: string;\n containerId?: string;\n }\n > {}\n\n/**\n * SessionResumedEvent - Session was resumed\n */\nexport interface SessionResumedEvent\n extends BaseSessionActionResult<\n \"session_resumed\",\n {\n sessionId: string;\n agentId: string;\n resumedAt: number;\n }\n > {}\n\n// ============================================================================\n// Fork Events\n// ============================================================================\n\n/**\n * SessionForkRequest - Request to fork a session\n */\nexport interface SessionForkRequest\n extends BaseSessionActionRequest<\n \"session_fork_request\",\n {\n sessionId: string;\n newTitle?: string;\n }\n > {}\n\n/**\n * SessionForkedEvent - Session was forked\n */\nexport interface SessionForkedEvent\n extends BaseSessionActionResult<\n \"session_forked\",\n {\n originalSessionId: string;\n newSessionId: string;\n newImageId: string;\n forkedAt: number;\n }\n > {}\n\n// ============================================================================\n// Title Update Events\n// ============================================================================\n\n/**\n * SessionTitleUpdateRequest - Request to update session title\n */\nexport interface SessionTitleUpdateRequest\n extends BaseSessionActionRequest<\n \"session_title_update_request\",\n {\n sessionId: string;\n title: string;\n }\n > {}\n\n/**\n * SessionTitleUpdatedEvent - Session title was updated\n */\nexport interface SessionTitleUpdatedEvent\n extends BaseSessionActionResult<\n \"session_title_updated\",\n {\n sessionId: string;\n title: string;\n updatedAt: number;\n }\n > {}\n\n// ============================================================================\n// Union Types\n// ============================================================================\n\n/**\n * SessionActionEvent - All session action events\n */\nexport type SessionActionEvent =\n | SessionResumeRequest\n | SessionResumedEvent\n | SessionForkRequest\n | SessionForkedEvent\n | SessionTitleUpdateRequest\n | SessionTitleUpdatedEvent;\n\n/**\n * Session action request events\n */\nexport type SessionActionRequestEvent =\n | SessionResumeRequest\n | SessionForkRequest\n | SessionTitleUpdateRequest;\n\n/**\n * Session action result events\n */\nexport type SessionActionResultEvent =\n | SessionResumedEvent\n | SessionForkedEvent\n | SessionTitleUpdatedEvent;\n\n/**\n * Type guard: is this a SessionActionEvent?\n */\nexport function isSessionActionEvent(event: SystemEvent): event is SessionActionEvent {\n return event.source === \"session\" && event.category === \"action\";\n}\n","/**\n * Session Events\n *\n * All events related to Session operations:\n * - Lifecycle: creation, destruction\n * - Persist: save, message persistence\n * - Action: resume, fork, title update\n */\n\n// Lifecycle Events\nexport type {\n SessionLifecycleEvent,\n SessionCreatedEvent,\n SessionDestroyedEvent,\n} from \"./lifecycle\";\nexport { isSessionLifecycleEvent } from \"./lifecycle\";\n\n// Persist Events\nexport type {\n SessionPersistEvent,\n SessionPersistRequestEvent,\n SessionPersistResultEvent,\n SessionSaveRequest,\n SessionSavedEvent,\n MessagePersistRequest,\n MessagePersistedEvent,\n} from \"./persist\";\nexport { isSessionPersistEvent } from \"./persist\";\n\n// Action Events\nexport type {\n SessionActionEvent,\n SessionActionRequestEvent,\n SessionActionResultEvent,\n SessionResumeRequest,\n SessionResumedEvent,\n SessionForkRequest,\n SessionForkedEvent,\n SessionTitleUpdateRequest,\n SessionTitleUpdatedEvent,\n} from \"./action\";\nexport { isSessionActionEvent } from \"./action\";\n\n// ============================================================================\n// Combined Union\n// ============================================================================\n\nimport type { SessionLifecycleEvent } from \"./lifecycle\";\nimport type { SessionPersistEvent } from \"./persist\";\nimport type { SessionActionEvent } from \"./action\";\n\n/**\n * SessionEvent - All session events\n */\nexport type SessionEvent = SessionLifecycleEvent | SessionPersistEvent | SessionActionEvent;\n\n/**\n * Type guard: is this a session event?\n */\nexport function isSessionEvent(event: { source?: string }): event is SessionEvent {\n return event.source === \"session\";\n}\n","/**\n * CommandEvent - Request/Response events for Runtime operations\n *\n * These events enable unified operation API for both local and remote modes:\n * - Local mode: RuntimeImpl listens to requests, emits responses\n * - Remote mode: WebSocket/SSE forwards requests/responses\n *\n * Pattern:\n * ```\n * Caller Handler (Runtime)\n * ─────────────────────────────────────────────────────────\n * container_create_request ────────► handle & execute\n * ◄──────── container_create_response\n *\n * agent_run_request ────────► handle & execute\n * ◄──────── agent_run_response\n * ```\n *\n * All CommandEvents have:\n * - source: \"command\"\n * - category: \"request\" | \"response\"\n * - intent: \"request\" | \"result\"\n */\n\nimport type { SystemEvent } from \"../base\";\nimport type { ImageRecord } from \"~/runtime/internal/persistence\";\n\n// ============================================================================\n// Base Types\n// ============================================================================\n\n/**\n * Base interface for Command request events\n */\ninterface BaseCommandRequest<T extends string, D = unknown>\n extends SystemEvent<T, D, \"command\", \"request\", \"request\"> {}\n\n/**\n * Base interface for Command response events\n */\ninterface BaseCommandResponse<T extends string, D = unknown>\n extends SystemEvent<T, D, \"command\", \"response\", \"result\"> {}\n\n// ============================================================================\n// Container Commands\n// ============================================================================\n\n/**\n * Request to create a container\n */\nexport interface ContainerCreateRequest\n extends BaseCommandRequest<\n \"container_create_request\",\n {\n requestId: string;\n containerId: string;\n }\n > {}\n\n/**\n * Response to container creation\n */\nexport interface ContainerCreateResponse\n extends BaseCommandResponse<\n \"container_create_response\",\n {\n requestId: string;\n containerId: string;\n error?: string;\n }\n > {}\n\n/**\n * Request to get a container\n */\nexport interface ContainerGetRequest\n extends BaseCommandRequest<\n \"container_get_request\",\n {\n requestId: string;\n containerId: string;\n }\n > {}\n\n/**\n * Response to container get\n */\nexport interface ContainerGetResponse\n extends BaseCommandResponse<\n \"container_get_response\",\n {\n requestId: string;\n containerId?: string;\n exists: boolean;\n error?: string;\n }\n > {}\n\n/**\n * Request to list containers\n */\nexport interface ContainerListRequest\n extends BaseCommandRequest<\n \"container_list_request\",\n {\n requestId: string;\n }\n > {}\n\n/**\n * Response to container list\n */\nexport interface ContainerListResponse\n extends BaseCommandResponse<\n \"container_list_response\",\n {\n requestId: string;\n containerIds: string[];\n error?: string;\n }\n > {}\n\n// ============================================================================\n// Agent Commands\n// ============================================================================\n\n/**\n * Request to get an agent\n */\nexport interface AgentGetRequest\n extends BaseCommandRequest<\n \"agent_get_request\",\n {\n requestId: string;\n agentId: string;\n }\n > {}\n\n/**\n * Response to agent get\n */\nexport interface AgentGetResponse\n extends BaseCommandResponse<\n \"agent_get_response\",\n {\n requestId: string;\n agentId?: string;\n containerId?: string;\n exists: boolean;\n error?: string;\n }\n > {}\n\n/**\n * Request to list agents\n */\nexport interface AgentListRequest\n extends BaseCommandRequest<\n \"agent_list_request\",\n {\n requestId: string;\n containerId: string;\n }\n > {}\n\n/**\n * Response to agent list\n */\nexport interface AgentListResponse\n extends BaseCommandResponse<\n \"agent_list_response\",\n {\n requestId: string;\n agents: Array<{ agentId: string; containerId: string; imageId: string }>;\n error?: string;\n }\n > {}\n\n/**\n * Request to destroy an agent\n */\nexport interface AgentDestroyRequest\n extends BaseCommandRequest<\n \"agent_destroy_request\",\n {\n requestId: string;\n agentId: string;\n }\n > {}\n\n/**\n * Response to agent destroy\n */\nexport interface AgentDestroyResponse\n extends BaseCommandResponse<\n \"agent_destroy_response\",\n {\n requestId: string;\n agentId: string;\n success: boolean;\n error?: string;\n }\n > {}\n\n/**\n * Request to destroy all agents in a container\n */\nexport interface AgentDestroyAllRequest\n extends BaseCommandRequest<\n \"agent_destroy_all_request\",\n {\n requestId: string;\n containerId: string;\n }\n > {}\n\n/**\n * Response to destroy all agents\n */\nexport interface AgentDestroyAllResponse\n extends BaseCommandResponse<\n \"agent_destroy_all_response\",\n {\n requestId: string;\n containerId: string;\n error?: string;\n }\n > {}\n\n/**\n * Request to send a message\n * Can use either imageId (preferred) or agentId\n * If using imageId and agent is not running, it will be auto-activated\n */\nexport interface MessageSendRequest\n extends BaseCommandRequest<\n \"message_send_request\",\n {\n requestId: string;\n /** Image ID (preferred) - will auto-activate if offline */\n imageId?: string;\n /** Agent ID (legacy) - must be already running */\n agentId?: string;\n content: string;\n }\n > {}\n\n/**\n * Response to message send (acknowledges message received, not completion)\n */\nexport interface MessageSendResponse\n extends BaseCommandResponse<\n \"message_send_response\",\n {\n requestId: string;\n imageId?: string;\n agentId: string;\n error?: string;\n }\n > {}\n\n/**\n * Request to interrupt an agent\n * Can use either imageId or agentId\n */\nexport interface AgentInterruptRequest\n extends BaseCommandRequest<\n \"agent_interrupt_request\",\n {\n requestId: string;\n /** Image ID (preferred) */\n imageId?: string;\n /** Agent ID (legacy) */\n agentId?: string;\n }\n > {}\n\n/**\n * Response to agent interrupt\n */\nexport interface AgentInterruptResponse\n extends BaseCommandResponse<\n \"agent_interrupt_response\",\n {\n requestId: string;\n imageId?: string;\n agentId?: string;\n error?: string;\n }\n > {}\n\n// ============================================================================\n// Image Commands\n// ============================================================================\n\n/**\n * Request to create a new image (conversation)\n */\nexport interface ImageCreateRequest\n extends BaseCommandRequest<\n \"image_create_request\",\n {\n requestId: string;\n containerId: string;\n config: {\n name?: string;\n description?: string;\n systemPrompt?: string;\n };\n }\n > {}\n\n/**\n * Response to image creation\n */\nexport interface ImageCreateResponse\n extends BaseCommandResponse<\n \"image_create_response\",\n {\n requestId: string;\n record: ImageRecord;\n error?: string;\n }\n > {}\n\n/**\n * Request to run an image (create or reuse agent)\n */\nexport interface ImageRunRequest\n extends BaseCommandRequest<\n \"image_run_request\",\n {\n requestId: string;\n imageId: string;\n }\n > {}\n\n/**\n * Response to image run\n */\nexport interface ImageRunResponse\n extends BaseCommandResponse<\n \"image_run_response\",\n {\n requestId: string;\n imageId: string;\n agentId: string;\n /** true if reusing existing agent, false if newly created */\n reused: boolean;\n error?: string;\n }\n > {}\n\n/**\n * Request to stop an image (destroy agent, keep image)\n */\nexport interface ImageStopRequest\n extends BaseCommandRequest<\n \"image_stop_request\",\n {\n requestId: string;\n imageId: string;\n }\n > {}\n\n/**\n * Response to image stop\n */\nexport interface ImageStopResponse\n extends BaseCommandResponse<\n \"image_stop_response\",\n {\n requestId: string;\n imageId: string;\n error?: string;\n }\n > {}\n\n/**\n * Request to update an image (name, description, etc.)\n */\nexport interface ImageUpdateRequest\n extends BaseCommandRequest<\n \"image_update_request\",\n {\n requestId: string;\n imageId: string;\n updates: {\n name?: string;\n description?: string;\n };\n }\n > {}\n\n/**\n * Response to image update\n */\nexport interface ImageUpdateResponse\n extends BaseCommandResponse<\n \"image_update_response\",\n {\n requestId: string;\n record: ImageRecord;\n error?: string;\n }\n > {}\n\n/**\n * Request to list all images\n */\nexport interface ImageListRequest\n extends BaseCommandRequest<\n \"image_list_request\",\n {\n requestId: string;\n containerId?: string;\n }\n > {}\n\n/**\n * Image list item with online status\n */\nexport interface ImageListItem extends ImageRecord {\n /** Whether an agent is currently running for this image */\n online: boolean;\n /** Current agent ID if online */\n agentId?: string;\n}\n\n/**\n * Response to image list\n */\nexport interface ImageListResponse\n extends BaseCommandResponse<\n \"image_list_response\",\n {\n requestId: string;\n records: ImageListItem[];\n error?: string;\n }\n > {}\n\n/**\n * Request to get an image by ID\n */\nexport interface ImageGetRequest\n extends BaseCommandRequest<\n \"image_get_request\",\n {\n requestId: string;\n imageId: string;\n }\n > {}\n\n/**\n * Response to image get\n */\nexport interface ImageGetResponse\n extends BaseCommandResponse<\n \"image_get_response\",\n {\n requestId: string;\n record?: ImageListItem | null;\n error?: string;\n }\n > {}\n\n/**\n * Request to delete an image\n */\nexport interface ImageDeleteRequest\n extends BaseCommandRequest<\n \"image_delete_request\",\n {\n requestId: string;\n imageId: string;\n }\n > {}\n\n/**\n * Response to image delete\n */\nexport interface ImageDeleteResponse\n extends BaseCommandResponse<\n \"image_delete_response\",\n {\n requestId: string;\n imageId: string;\n error?: string;\n }\n > {}\n\n/**\n * Request to get messages for an image\n */\nexport interface ImageMessagesRequest\n extends BaseCommandRequest<\n \"image_messages_request\",\n {\n requestId: string;\n imageId: string;\n }\n > {}\n\n/**\n * Response to image messages request\n */\nexport interface ImageMessagesResponse\n extends BaseCommandResponse<\n \"image_messages_response\",\n {\n requestId: string;\n imageId: string;\n messages: Array<{\n id: string;\n role: \"user\" | \"assistant\" | \"tool_call\" | \"tool_result\";\n content: unknown;\n timestamp: number;\n }>;\n error?: string;\n }\n > {}\n\n// ============================================================================\n// Union Types\n// ============================================================================\n\n/**\n * All Command request events\n */\nexport type CommandRequest =\n // Container\n | ContainerCreateRequest\n | ContainerGetRequest\n | ContainerListRequest\n // Agent\n | AgentGetRequest\n | AgentListRequest\n | AgentDestroyRequest\n | AgentDestroyAllRequest\n | MessageSendRequest\n | AgentInterruptRequest\n // Image\n | ImageCreateRequest\n | ImageRunRequest\n | ImageStopRequest\n | ImageUpdateRequest\n | ImageListRequest\n | ImageGetRequest\n | ImageDeleteRequest\n | ImageMessagesRequest;\n\n/**\n * All Command response events\n */\nexport type CommandResponse =\n // Container\n | ContainerCreateResponse\n | ContainerGetResponse\n | ContainerListResponse\n // Agent\n | AgentGetResponse\n | AgentListResponse\n | AgentDestroyResponse\n | AgentDestroyAllResponse\n | MessageSendResponse\n | AgentInterruptResponse\n // Image\n | ImageCreateResponse\n | ImageRunResponse\n | ImageStopResponse\n | ImageUpdateResponse\n | ImageListResponse\n | ImageGetResponse\n | ImageDeleteResponse\n | ImageMessagesResponse;\n\n/**\n * All Command events (requests + responses)\n */\nexport type CommandEvent = CommandRequest | CommandResponse;\n\n/**\n * Command event type strings\n */\nexport type CommandEventType = CommandEvent[\"type\"];\n\n/**\n * Type guard: is this a CommandEvent?\n */\nexport function isCommandEvent(event: { source?: string }): event is CommandEvent {\n return event.source === \"command\";\n}\n\n/**\n * Type guard: is this a Command request event?\n */\nexport function isCommandRequest(event: {\n source?: string;\n category?: string;\n}): event is CommandRequest {\n return event.source === \"command\" && event.category === \"request\";\n}\n\n/**\n * Type guard: is this a Command response event?\n */\nexport function isCommandResponse(event: {\n source?: string;\n category?: string;\n}): event is CommandResponse {\n return event.source === \"command\" && event.category === \"response\";\n}\n\n// ============================================================================\n// Event Map - Type-safe event type to event mapping\n// ============================================================================\n\n/**\n * CommandEventMap - Maps event type string to event interface\n *\n * Enables type-safe event handling:\n * ```typescript\n * bus.onCommand(\"container_create_request\", (event) => {\n * event.data.requestId; // ✓ string\n * event.data.containerId; // ✓ string\n * });\n * ```\n */\nexport interface CommandEventMap {\n // Container\n container_create_request: ContainerCreateRequest;\n container_create_response: ContainerCreateResponse;\n container_get_request: ContainerGetRequest;\n container_get_response: ContainerGetResponse;\n container_list_request: ContainerListRequest;\n container_list_response: ContainerListResponse;\n // Agent\n agent_get_request: AgentGetRequest;\n agent_get_response: AgentGetResponse;\n agent_list_request: AgentListRequest;\n agent_list_response: AgentListResponse;\n agent_destroy_request: AgentDestroyRequest;\n agent_destroy_response: AgentDestroyResponse;\n agent_destroy_all_request: AgentDestroyAllRequest;\n agent_destroy_all_response: AgentDestroyAllResponse;\n message_send_request: MessageSendRequest;\n message_send_response: MessageSendResponse;\n agent_interrupt_request: AgentInterruptRequest;\n agent_interrupt_response: AgentInterruptResponse;\n // Image\n image_create_request: ImageCreateRequest;\n image_create_response: ImageCreateResponse;\n image_run_request: ImageRunRequest;\n image_run_response: ImageRunResponse;\n image_stop_request: ImageStopRequest;\n image_stop_response: ImageStopResponse;\n image_update_request: ImageUpdateRequest;\n image_update_response: ImageUpdateResponse;\n image_list_request: ImageListRequest;\n image_list_response: ImageListResponse;\n image_get_request: ImageGetRequest;\n image_get_response: ImageGetResponse;\n image_delete_request: ImageDeleteRequest;\n image_delete_response: ImageDeleteResponse;\n image_messages_request: ImageMessagesRequest;\n image_messages_response: ImageMessagesResponse;\n}\n\n/**\n * Maps request event type to its corresponding response event type\n */\nexport interface CommandRequestResponseMap {\n container_create_request: \"container_create_response\";\n container_get_request: \"container_get_response\";\n container_list_request: \"container_list_response\";\n agent_get_request: \"agent_get_response\";\n agent_list_request: \"agent_list_response\";\n agent_destroy_request: \"agent_destroy_response\";\n agent_destroy_all_request: \"agent_destroy_all_response\";\n message_send_request: \"message_send_response\";\n agent_interrupt_request: \"agent_interrupt_response\";\n image_create_request: \"image_create_response\";\n image_run_request: \"image_run_response\";\n image_stop_request: \"image_stop_response\";\n image_update_request: \"image_update_response\";\n image_list_request: \"image_list_response\";\n image_get_request: \"image_get_response\";\n image_delete_request: \"image_delete_response\";\n image_messages_request: \"image_messages_response\";\n}\n\n/**\n * All command request types\n */\nexport type CommandRequestType = keyof CommandRequestResponseMap;\n\n/**\n * Get response type for a request type\n */\nexport type ResponseTypeFor<T extends CommandRequestType> = CommandRequestResponseMap[T];\n\n/**\n * Get response event for a request type\n */\nexport type ResponseEventFor<T extends CommandRequestType> = CommandEventMap[ResponseTypeFor<T>];\n\n/**\n * Get request data type (without requestId, as it's auto-generated)\n */\nexport type RequestDataFor<T extends CommandRequestType> = Omit<\n CommandEventMap[T][\"data\"],\n \"requestId\"\n>;\n","/**\n * Agent Stream Events\n *\n * Real-time streaming events from LLM.\n * - source: \"agent\"\n * - category: \"stream\"\n * - intent: \"notification\"\n *\n * Note: These have same event types as DriveableEvent (environment/stream),\n * but with full SystemEvent structure (source, category, intent, context).\n */\n\nimport type { BaseAgentEvent } from \"../BaseAgentEvent\";\n\n/**\n * Base type for stream events\n */\nexport interface AgentStreamEventBase<T extends string, D> extends BaseAgentEvent<T, D, \"stream\"> {}\n\n// ============================================================================\n// Stop Reason\n// ============================================================================\n\n/**\n * Stop reason for message completion\n */\nexport type StopReason = \"end_turn\" | \"max_tokens\" | \"stop_sequence\" | \"tool_use\";\n\n// ============================================================================\n// Message Lifecycle Events\n// ============================================================================\n\n/**\n * AgentMessageStartEvent - Streaming message begins\n */\nexport interface AgentMessageStartEvent\n extends AgentStreamEventBase<\n \"message_start\",\n {\n messageId: string;\n model: string;\n }\n > {}\n\n/**\n * AgentMessageDeltaEvent - Message-level updates (usage info)\n */\nexport interface AgentMessageDeltaEvent\n extends AgentStreamEventBase<\n \"message_delta\",\n {\n usage?: {\n inputTokens: number;\n outputTokens: number;\n };\n }\n > {}\n\n/**\n * AgentMessageStopEvent - Streaming message completes\n */\nexport interface AgentMessageStopEvent\n extends AgentStreamEventBase<\n \"message_stop\",\n {\n stopReason?: StopReason;\n }\n > {}\n\n// ============================================================================\n// Text Content Events\n// ============================================================================\n\n/**\n * AgentTextDeltaEvent - Incremental text output\n */\nexport interface AgentTextDeltaEvent\n extends AgentStreamEventBase<\n \"text_delta\",\n {\n text: string;\n }\n > {}\n\n// ============================================================================\n// Tool Use Events\n// ============================================================================\n\n/**\n * AgentToolUseStartEvent - Tool use block started\n */\nexport interface AgentToolUseStartEvent\n extends AgentStreamEventBase<\n \"tool_use_start\",\n {\n toolCallId: string;\n toolName: string;\n }\n > {}\n\n/**\n * AgentInputJsonDeltaEvent - Incremental tool input JSON\n */\nexport interface AgentInputJsonDeltaEvent\n extends AgentStreamEventBase<\n \"input_json_delta\",\n {\n partialJson: string;\n }\n > {}\n\n/**\n * AgentToolUseStopEvent - Tool use block completed\n */\nexport interface AgentToolUseStopEvent\n extends AgentStreamEventBase<\n \"tool_use_stop\",\n {\n toolCallId: string;\n toolName: string;\n input: Record<string, unknown>;\n }\n > {}\n\n/**\n * AgentToolResultEvent - Tool execution result\n */\nexport interface AgentToolResultEvent\n extends AgentStreamEventBase<\n \"tool_result\",\n {\n toolCallId: string;\n result: unknown;\n isError?: boolean;\n }\n > {}\n\n// ============================================================================\n// Error Events\n// ============================================================================\n\n/**\n * AgentErrorReceivedEvent - Error received from environment\n *\n * Processed by MealyMachine to produce:\n * - error_occurred (StateEvent)\n * - error_message (MessageEvent)\n */\nexport interface AgentErrorReceivedEvent\n extends AgentStreamEventBase<\n \"error_received\",\n {\n /** Error message (human-readable) */\n message: string;\n /** Error code (e.g., \"rate_limit_error\", \"api_error\") */\n errorCode?: string;\n }\n > {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * AgentStreamEvent - All stream events\n */\nexport type AgentStreamEvent =\n | AgentMessageStartEvent\n | AgentMessageDeltaEvent\n | AgentMessageStopEvent\n | AgentTextDeltaEvent\n | AgentToolUseStartEvent\n | AgentInputJsonDeltaEvent\n | AgentToolUseStopEvent\n | AgentToolResultEvent\n | AgentErrorReceivedEvent;\n\n/**\n * AgentStreamEventType - String literal union\n */\nexport type AgentStreamEventType = AgentStreamEvent[\"type\"];\n\n/**\n * Type guard: is this a stream event?\n */\nexport function isAgentStreamEvent(event: {\n source?: string;\n category?: string;\n}): event is AgentStreamEvent {\n return event.source === \"agent\" && event.category === \"stream\";\n}\n","/**\n * Agent State Events\n *\n * Events that trigger AgentState transitions.\n * - source: \"agent\"\n * - category: \"state\"\n * - intent: \"notification\"\n *\n * Note: These are events that AFFECT state, not \"state\" themselves.\n */\n\nimport type { BaseAgentEvent } from \"../BaseAgentEvent\";\n\n/**\n * Base type for state events\n */\nexport interface AgentStateEventBase<T extends string, D> extends BaseAgentEvent<T, D, \"state\"> {}\n\n// ============================================================================\n// Conversation Events\n// ============================================================================\n\n/**\n * ConversationQueuedEvent - Message queued for processing\n */\nexport interface ConversationQueuedEvent\n extends AgentStateEventBase<\n \"conversation_queued\",\n {\n messageId: string;\n }\n > {}\n\n/**\n * ConversationStartEvent - Conversation started\n */\nexport interface ConversationStartEvent\n extends AgentStateEventBase<\n \"conversation_start\",\n {\n messageId: string;\n }\n > {}\n\n/**\n * ConversationThinkingEvent - Agent is thinking\n */\nexport interface ConversationThinkingEvent\n extends AgentStateEventBase<\"conversation_thinking\", Record<string, never>> {}\n\n/**\n * ConversationRespondingEvent - Agent is responding\n */\nexport interface ConversationRespondingEvent\n extends AgentStateEventBase<\"conversation_responding\", Record<string, never>> {}\n\n/**\n * ConversationEndEvent - Conversation ended\n */\nexport interface ConversationEndEvent\n extends AgentStateEventBase<\n \"conversation_end\",\n {\n reason: \"completed\" | \"interrupted\" | \"error\";\n }\n > {}\n\n/**\n * ConversationInterruptedEvent - Conversation interrupted\n */\nexport interface ConversationInterruptedEvent\n extends AgentStateEventBase<\n \"conversation_interrupted\",\n {\n reason: string;\n }\n > {}\n\n// ============================================================================\n// Tool Events\n// ============================================================================\n\n/**\n * ToolPlannedEvent - Tool use planned\n */\nexport interface ToolPlannedEvent\n extends AgentStateEventBase<\n \"tool_planned\",\n {\n toolId: string;\n toolName: string;\n }\n > {}\n\n/**\n * ToolExecutingEvent - Tool is executing\n */\nexport interface ToolExecutingEvent\n extends AgentStateEventBase<\n \"tool_executing\",\n {\n toolId: string;\n toolName: string;\n input: Record<string, unknown>;\n }\n > {}\n\n/**\n * ToolCompletedEvent - Tool execution completed\n */\nexport interface ToolCompletedEvent\n extends AgentStateEventBase<\n \"tool_completed\",\n {\n toolId: string;\n toolName: string;\n result: unknown;\n }\n > {}\n\n/**\n * ToolFailedEvent - Tool execution failed\n */\nexport interface ToolFailedEvent\n extends AgentStateEventBase<\n \"tool_failed\",\n {\n toolId: string;\n toolName: string;\n error: string;\n }\n > {}\n\n// ============================================================================\n// Error Events\n// ============================================================================\n\n/**\n * ErrorOccurredEvent - Error occurred during processing\n */\nexport interface ErrorOccurredEvent\n extends AgentStateEventBase<\n \"error_occurred\",\n {\n code: string;\n message: string;\n recoverable: boolean;\n category?: string;\n }\n > {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * AgentStateEvent - All state events\n */\nexport type AgentStateEvent =\n // Conversation\n | ConversationQueuedEvent\n | ConversationStartEvent\n | ConversationThinkingEvent\n | ConversationRespondingEvent\n | ConversationEndEvent\n | ConversationInterruptedEvent\n // Tool\n | ToolPlannedEvent\n | ToolExecutingEvent\n | ToolCompletedEvent\n | ToolFailedEvent\n // Error\n | ErrorOccurredEvent;\n\n/**\n * AgentStateEventType - String literal union\n */\nexport type AgentStateEventType = AgentStateEvent[\"type\"];\n\n/**\n * Type guard: is this a state event?\n */\nexport function isAgentStateEvent(event: {\n source?: string;\n category?: string;\n}): event is AgentStateEvent {\n return event.source === \"agent\" && event.category === \"state\";\n}\n","/**\n * Agent Message Events\n *\n * Complete message events assembled from stream events.\n * Events directly wrap Message objects - no transformation needed.\n * - source: \"agent\"\n * - category: \"message\"\n * - intent: \"notification\"\n */\n\nimport type { BaseAgentEvent } from \"../BaseAgentEvent\";\nimport type {\n UserMessage,\n AssistantMessage,\n ToolCallMessage,\n ToolResultMessage,\n ErrorMessage,\n} from \"~/agent/message\";\n\n/**\n * Base type for message events\n */\nexport interface AgentMessageEventBase<T extends string, D>\n extends BaseAgentEvent<T, D, \"message\"> {}\n\n// ============================================================================\n// Message Events\n// ============================================================================\n\n/**\n * UserMessageEvent - User sent a message\n * Data: Complete UserMessage object\n */\nexport interface UserMessageEvent extends AgentMessageEventBase<\"user_message\", UserMessage> {}\n\n/**\n * AssistantMessageEvent - Assistant response message\n * Data: Complete AssistantMessage object\n */\nexport interface AssistantMessageEvent\n extends AgentMessageEventBase<\"assistant_message\", AssistantMessage> {}\n\n/**\n * ToolCallMessageEvent - Tool call message (part of assistant turn)\n * Data: Complete ToolCallMessage object\n */\nexport interface ToolCallMessageEvent\n extends AgentMessageEventBase<\"tool_call_message\", ToolCallMessage> {}\n\n/**\n * ToolResultMessageEvent - Tool result message\n * Data: Complete ToolResultMessage object\n */\nexport interface ToolResultMessageEvent\n extends AgentMessageEventBase<\"tool_result_message\", ToolResultMessage> {}\n\n/**\n * ErrorMessageEvent - Error message displayed in chat\n * Data: Complete ErrorMessage object\n *\n * Generated when error_received StreamEvent is processed by MealyMachine.\n * Displayed in the chat history so users can see what went wrong.\n */\nexport interface ErrorMessageEvent extends AgentMessageEventBase<\"error_message\", ErrorMessage> {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * AgentMessageEvent - All message events\n */\nexport type AgentMessageEvent =\n | UserMessageEvent\n | AssistantMessageEvent\n | ToolCallMessageEvent\n | ToolResultMessageEvent\n | ErrorMessageEvent;\n\n/**\n * AgentMessageEventType - String literal union\n */\nexport type AgentMessageEventType = AgentMessageEvent[\"type\"];\n\n/**\n * Type guard: is this a message event?\n */\nexport function isAgentMessageEvent(event: {\n source?: string;\n category?: string;\n}): event is AgentMessageEvent {\n return event.source === \"agent\" && event.category === \"message\";\n}\n","/**\n * Agent Turn Events\n *\n * Turn-level events for analytics and billing.\n * A turn = one user message + assistant response cycle.\n * - source: \"agent\"\n * - category: \"turn\"\n * - intent: \"notification\"\n */\n\nimport type { BaseAgentEvent } from \"../BaseAgentEvent\";\n\n/**\n * Base type for turn events\n */\nexport interface AgentTurnEventBase<T extends string, D> extends BaseAgentEvent<T, D, \"turn\"> {}\n\n/**\n * Token usage information\n */\nexport interface TokenUsage {\n inputTokens: number;\n outputTokens: number;\n totalTokens?: number;\n}\n\n// ============================================================================\n// Turn Events\n// ============================================================================\n\n/**\n * TurnRequestEvent - Turn started (user message received)\n */\nexport interface TurnRequestEvent\n extends AgentTurnEventBase<\n \"turn_request\",\n {\n turnId: string;\n messageId: string;\n content: string;\n timestamp: number;\n }\n > {}\n\n/**\n * TurnResponseEvent - Turn completed (assistant response finished)\n */\nexport interface TurnResponseEvent\n extends AgentTurnEventBase<\n \"turn_response\",\n {\n turnId: string;\n messageId: string;\n duration: number;\n usage?: TokenUsage;\n model?: string;\n stopReason?: string;\n timestamp: number;\n }\n > {}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\n/**\n * AgentTurnEvent - All turn events\n */\nexport type AgentTurnEvent = TurnRequestEvent | TurnResponseEvent;\n\n/**\n * AgentTurnEventType - String literal union\n */\nexport type AgentTurnEventType = AgentTurnEvent[\"type\"];\n\n/**\n * Type guard: is this a turn event?\n */\nexport function isAgentTurnEvent(event: {\n source?: string;\n category?: string;\n}): event is AgentTurnEvent {\n return event.source === \"agent\" && event.category === \"turn\";\n}\n","/**\n * Agent Events - SystemEvent for Agent domain\n *\n * Complete event definitions for Agent, extending SystemEvent with:\n * - source: \"agent\"\n * - category: \"stream\" | \"state\" | \"message\" | \"turn\"\n * - intent: \"notification\"\n *\n * ## Event Categories\n *\n * ```\n * AgentEvent (source: \"agent\")\n * │\n * ├── category: \"stream\" ← Real-time streaming from LLM\n * │ └── TextDeltaEvent, MessageStartEvent, ToolUseStartEvent...\n * │\n * ├── category: \"state\" ← State transitions\n * │ └── ConversationStartEvent, ConversationEndEvent, ToolExecutingEvent...\n * │\n * ├── category: \"message\" ← Assembled complete messages\n * │ └── UserMessageEvent, AssistantMessageEvent, ToolCallMessageEvent...\n * │\n * └── category: \"turn\" ← Turn analytics\n * └── TurnStartEvent, TurnEndEvent\n * ```\n *\n * ## Relationship with Engine Events\n *\n * Engine uses lightweight events (type, timestamp, data only).\n * Use `ToEngineEvent<T>` to convert AgentEvent to EngineEvent.\n *\n * @packageDocumentation\n */\n\n// Base types\nexport type { AgentEventCategory, BaseAgentEvent } from \"./BaseAgentEvent\";\n\n// Stream events\nexport * from \"./stream\";\n\n// State events\nexport * from \"./state\";\n\n// Message events\nexport * from \"./message\";\n\n// Turn events\nexport * from \"./turn\";\n\n// Union type\nimport type { AgentStreamEvent } from \"./stream\";\nimport type { AgentStateEvent } from \"./state\";\nimport type { AgentMessageEvent } from \"./message\";\nimport type { AgentTurnEvent } from \"./turn\";\n\n/**\n * AgentEvent - All events from Agent domain\n */\nexport type AgentEvent = AgentStreamEvent | AgentStateEvent | AgentMessageEvent | AgentTurnEvent;\n\n/**\n * Type guard: is this an agent event?\n */\nexport function isAgentEvent(event: { source?: string }): event is AgentEvent {\n return event.source === \"agent\";\n}\n"],"mappings":";AA+MO,SAAS,aACd,OACA,QAC0C;AAC1C,SAAO,MAAM,WAAW;AAC1B;AAKO,SAAS,UACd,OACA,QACsE;AACtE,SAAO,MAAM,WAAW;AAC1B;AAKO,SAAS,UAAU,OAA6B;AACrD,SAAO,MAAM,WAAW;AAC1B;AAKO,SAAS,SAAS,OAA6B;AACpD,SAAO,MAAM,WAAW;AAC1B;AAKO,SAAS,eAAe,OAA6B;AAC1D,SAAO,MAAM,WAAW;AAC1B;;;ACmBO,SAAS,iBAAiB,OAA6C;AAC5E,SAAO,MAAM,WAAW,iBAAiB,MAAM,aAAa;AAC9D;;;ACrLO,SAAS,kBAAkB,OAA8C;AAC9E,SAAO,MAAM,WAAW,iBAAiB,MAAM,aAAa;AAC9D;;;ACeO,SAAS,0BAA0B,OAAsD;AAC9F,SAAO,MAAM,WAAW,eAAe,MAAM,aAAa;AAC5D;;;ACiHO,SAAS,eAAe,OAA2C;AACxE,SAAO,MAAM,WAAW,aAAa,MAAM,aAAa;AAC1D;;;AC1CO,SAAS,WAAW,OAAuC;AAChE,SAAO,MAAM,WAAW,aAAa,MAAM,aAAa;AAC1D;;;ACvHO,SAAS,eAAe,OAAmD;AAChF,SAAO,MAAM,WAAW;AAC1B;;;ACxBO,SAAS,iBAAiB,OAAqD;AACpF,SAAO,MAAM,WAAW,eAAe,MAAM,WAAW;AAC1D;;;AC4BO,SAAS,wBAAwB,OAAoD;AAC1F,SAAO,MAAM,WAAW,aAAa,MAAM,aAAa;AAC1D;;;ACmDO,SAAS,sBAAsB,OAAkD;AACtF,SAAO,MAAM,WAAW,aAAa,MAAM,aAAa;AAC1D;;;AC8BO,SAAS,qBAAqB,OAAiD;AACpF,SAAO,MAAM,WAAW,aAAa,MAAM,aAAa;AAC1D;;;AC9FO,SAAS,eAAe,OAAmD;AAChF,SAAO,MAAM,WAAW;AAC1B;;;ACihBO,SAAS,eAAe,OAAmD;AAChF,SAAO,MAAM,WAAW;AAC1B;AAKO,SAAS,iBAAiB,OAGL;AAC1B,SAAO,MAAM,WAAW,aAAa,MAAM,aAAa;AAC1D;AAKO,SAAS,kBAAkB,OAGL;AAC3B,SAAO,MAAM,WAAW,aAAa,MAAM,aAAa;AAC1D;;;AC3aO,SAAS,mBAAmB,OAGL;AAC5B,SAAO,MAAM,WAAW,WAAW,MAAM,aAAa;AACxD;;;ACRO,SAAS,kBAAkB,OAGL;AAC3B,SAAO,MAAM,WAAW,WAAW,MAAM,aAAa;AACxD;;;ACpGO,SAAS,oBAAoB,OAGL;AAC7B,SAAO,MAAM,WAAW,WAAW,MAAM,aAAa;AACxD;;;ACdO,SAAS,iBAAiB,OAGL;AAC1B,SAAO,MAAM,WAAW,WAAW,MAAM,aAAa;AACxD;;;ACpBO,SAAS,aAAa,OAAiD;AAC5E,SAAO,MAAM,WAAW;AAC1B;","names":[]}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import { B as BaseAgentEvent, U as UserMessage, A as AssistantMessage, T as ToolCallMessage, a as ToolResultMessage } from './ToolResultMessage-CRKMSf5d.cjs';
|
|
2
|
+
import { E as ErrorMessage } from './ErrorMessage-BoIh3MIO.cjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Agent Stream Events
|
|
6
|
+
*
|
|
7
|
+
* Real-time streaming events from LLM.
|
|
8
|
+
* - source: "agent"
|
|
9
|
+
* - category: "stream"
|
|
10
|
+
* - intent: "notification"
|
|
11
|
+
*
|
|
12
|
+
* Note: These have same event types as DriveableEvent (environment/stream),
|
|
13
|
+
* but with full SystemEvent structure (source, category, intent, context).
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Base type for stream events
|
|
18
|
+
*/
|
|
19
|
+
interface AgentStreamEventBase<T extends string, D> extends BaseAgentEvent<T, D, "stream"> {
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Stop reason for message completion
|
|
23
|
+
*/
|
|
24
|
+
type StopReason = "end_turn" | "max_tokens" | "stop_sequence" | "tool_use";
|
|
25
|
+
/**
|
|
26
|
+
* AgentMessageStartEvent - Streaming message begins
|
|
27
|
+
*/
|
|
28
|
+
interface AgentMessageStartEvent extends AgentStreamEventBase<"message_start", {
|
|
29
|
+
messageId: string;
|
|
30
|
+
model: string;
|
|
31
|
+
}> {
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* AgentMessageDeltaEvent - Message-level updates (usage info)
|
|
35
|
+
*/
|
|
36
|
+
interface AgentMessageDeltaEvent extends AgentStreamEventBase<"message_delta", {
|
|
37
|
+
usage?: {
|
|
38
|
+
inputTokens: number;
|
|
39
|
+
outputTokens: number;
|
|
40
|
+
};
|
|
41
|
+
}> {
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* AgentMessageStopEvent - Streaming message completes
|
|
45
|
+
*/
|
|
46
|
+
interface AgentMessageStopEvent extends AgentStreamEventBase<"message_stop", {
|
|
47
|
+
stopReason?: StopReason;
|
|
48
|
+
}> {
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* AgentTextDeltaEvent - Incremental text output
|
|
52
|
+
*/
|
|
53
|
+
interface AgentTextDeltaEvent extends AgentStreamEventBase<"text_delta", {
|
|
54
|
+
text: string;
|
|
55
|
+
}> {
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* AgentToolUseStartEvent - Tool use block started
|
|
59
|
+
*/
|
|
60
|
+
interface AgentToolUseStartEvent extends AgentStreamEventBase<"tool_use_start", {
|
|
61
|
+
toolCallId: string;
|
|
62
|
+
toolName: string;
|
|
63
|
+
}> {
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* AgentInputJsonDeltaEvent - Incremental tool input JSON
|
|
67
|
+
*/
|
|
68
|
+
interface AgentInputJsonDeltaEvent extends AgentStreamEventBase<"input_json_delta", {
|
|
69
|
+
partialJson: string;
|
|
70
|
+
}> {
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* AgentToolUseStopEvent - Tool use block completed
|
|
74
|
+
*/
|
|
75
|
+
interface AgentToolUseStopEvent extends AgentStreamEventBase<"tool_use_stop", {
|
|
76
|
+
toolCallId: string;
|
|
77
|
+
toolName: string;
|
|
78
|
+
input: Record<string, unknown>;
|
|
79
|
+
}> {
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* AgentToolResultEvent - Tool execution result
|
|
83
|
+
*/
|
|
84
|
+
interface AgentToolResultEvent extends AgentStreamEventBase<"tool_result", {
|
|
85
|
+
toolCallId: string;
|
|
86
|
+
result: unknown;
|
|
87
|
+
isError?: boolean;
|
|
88
|
+
}> {
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* AgentErrorReceivedEvent - Error received from environment
|
|
92
|
+
*
|
|
93
|
+
* Processed by MealyMachine to produce:
|
|
94
|
+
* - error_occurred (StateEvent)
|
|
95
|
+
* - error_message (MessageEvent)
|
|
96
|
+
*/
|
|
97
|
+
interface AgentErrorReceivedEvent extends AgentStreamEventBase<"error_received", {
|
|
98
|
+
/** Error message (human-readable) */
|
|
99
|
+
message: string;
|
|
100
|
+
/** Error code (e.g., "rate_limit_error", "api_error") */
|
|
101
|
+
errorCode?: string;
|
|
102
|
+
}> {
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* AgentStreamEvent - All stream events
|
|
106
|
+
*/
|
|
107
|
+
type AgentStreamEvent = AgentMessageStartEvent | AgentMessageDeltaEvent | AgentMessageStopEvent | AgentTextDeltaEvent | AgentToolUseStartEvent | AgentInputJsonDeltaEvent | AgentToolUseStopEvent | AgentToolResultEvent | AgentErrorReceivedEvent;
|
|
108
|
+
/**
|
|
109
|
+
* AgentStreamEventType - String literal union
|
|
110
|
+
*/
|
|
111
|
+
type AgentStreamEventType = AgentStreamEvent["type"];
|
|
112
|
+
/**
|
|
113
|
+
* Type guard: is this a stream event?
|
|
114
|
+
*/
|
|
115
|
+
declare function isAgentStreamEvent(event: {
|
|
116
|
+
source?: string;
|
|
117
|
+
category?: string;
|
|
118
|
+
}): event is AgentStreamEvent;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Agent State Events
|
|
122
|
+
*
|
|
123
|
+
* Events that trigger AgentState transitions.
|
|
124
|
+
* - source: "agent"
|
|
125
|
+
* - category: "state"
|
|
126
|
+
* - intent: "notification"
|
|
127
|
+
*
|
|
128
|
+
* Note: These are events that AFFECT state, not "state" themselves.
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Base type for state events
|
|
133
|
+
*/
|
|
134
|
+
interface AgentStateEventBase<T extends string, D> extends BaseAgentEvent<T, D, "state"> {
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* ConversationQueuedEvent - Message queued for processing
|
|
138
|
+
*/
|
|
139
|
+
interface ConversationQueuedEvent extends AgentStateEventBase<"conversation_queued", {
|
|
140
|
+
messageId: string;
|
|
141
|
+
}> {
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* ConversationStartEvent - Conversation started
|
|
145
|
+
*/
|
|
146
|
+
interface ConversationStartEvent extends AgentStateEventBase<"conversation_start", {
|
|
147
|
+
messageId: string;
|
|
148
|
+
}> {
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* ConversationThinkingEvent - Agent is thinking
|
|
152
|
+
*/
|
|
153
|
+
interface ConversationThinkingEvent extends AgentStateEventBase<"conversation_thinking", Record<string, never>> {
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* ConversationRespondingEvent - Agent is responding
|
|
157
|
+
*/
|
|
158
|
+
interface ConversationRespondingEvent extends AgentStateEventBase<"conversation_responding", Record<string, never>> {
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* ConversationEndEvent - Conversation ended
|
|
162
|
+
*/
|
|
163
|
+
interface ConversationEndEvent extends AgentStateEventBase<"conversation_end", {
|
|
164
|
+
reason: "completed" | "interrupted" | "error";
|
|
165
|
+
}> {
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* ConversationInterruptedEvent - Conversation interrupted
|
|
169
|
+
*/
|
|
170
|
+
interface ConversationInterruptedEvent extends AgentStateEventBase<"conversation_interrupted", {
|
|
171
|
+
reason: string;
|
|
172
|
+
}> {
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* ToolPlannedEvent - Tool use planned
|
|
176
|
+
*/
|
|
177
|
+
interface ToolPlannedEvent extends AgentStateEventBase<"tool_planned", {
|
|
178
|
+
toolId: string;
|
|
179
|
+
toolName: string;
|
|
180
|
+
}> {
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* ToolExecutingEvent - Tool is executing
|
|
184
|
+
*/
|
|
185
|
+
interface ToolExecutingEvent extends AgentStateEventBase<"tool_executing", {
|
|
186
|
+
toolId: string;
|
|
187
|
+
toolName: string;
|
|
188
|
+
input: Record<string, unknown>;
|
|
189
|
+
}> {
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* ToolCompletedEvent - Tool execution completed
|
|
193
|
+
*/
|
|
194
|
+
interface ToolCompletedEvent extends AgentStateEventBase<"tool_completed", {
|
|
195
|
+
toolId: string;
|
|
196
|
+
toolName: string;
|
|
197
|
+
result: unknown;
|
|
198
|
+
}> {
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* ToolFailedEvent - Tool execution failed
|
|
202
|
+
*/
|
|
203
|
+
interface ToolFailedEvent extends AgentStateEventBase<"tool_failed", {
|
|
204
|
+
toolId: string;
|
|
205
|
+
toolName: string;
|
|
206
|
+
error: string;
|
|
207
|
+
}> {
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* ErrorOccurredEvent - Error occurred during processing
|
|
211
|
+
*/
|
|
212
|
+
interface ErrorOccurredEvent extends AgentStateEventBase<"error_occurred", {
|
|
213
|
+
code: string;
|
|
214
|
+
message: string;
|
|
215
|
+
recoverable: boolean;
|
|
216
|
+
category?: string;
|
|
217
|
+
}> {
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* AgentStateEvent - All state events
|
|
221
|
+
*/
|
|
222
|
+
type AgentStateEvent = ConversationQueuedEvent | ConversationStartEvent | ConversationThinkingEvent | ConversationRespondingEvent | ConversationEndEvent | ConversationInterruptedEvent | ToolPlannedEvent | ToolExecutingEvent | ToolCompletedEvent | ToolFailedEvent | ErrorOccurredEvent;
|
|
223
|
+
/**
|
|
224
|
+
* AgentStateEventType - String literal union
|
|
225
|
+
*/
|
|
226
|
+
type AgentStateEventType = AgentStateEvent["type"];
|
|
227
|
+
/**
|
|
228
|
+
* Type guard: is this a state event?
|
|
229
|
+
*/
|
|
230
|
+
declare function isAgentStateEvent(event: {
|
|
231
|
+
source?: string;
|
|
232
|
+
category?: string;
|
|
233
|
+
}): event is AgentStateEvent;
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Agent Message Events
|
|
237
|
+
*
|
|
238
|
+
* Complete message events assembled from stream events.
|
|
239
|
+
* Events directly wrap Message objects - no transformation needed.
|
|
240
|
+
* - source: "agent"
|
|
241
|
+
* - category: "message"
|
|
242
|
+
* - intent: "notification"
|
|
243
|
+
*/
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Base type for message events
|
|
247
|
+
*/
|
|
248
|
+
interface AgentMessageEventBase<T extends string, D> extends BaseAgentEvent<T, D, "message"> {
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* UserMessageEvent - User sent a message
|
|
252
|
+
* Data: Complete UserMessage object
|
|
253
|
+
*/
|
|
254
|
+
interface UserMessageEvent extends AgentMessageEventBase<"user_message", UserMessage> {
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* AssistantMessageEvent - Assistant response message
|
|
258
|
+
* Data: Complete AssistantMessage object
|
|
259
|
+
*/
|
|
260
|
+
interface AssistantMessageEvent extends AgentMessageEventBase<"assistant_message", AssistantMessage> {
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* ToolCallMessageEvent - Tool call message (part of assistant turn)
|
|
264
|
+
* Data: Complete ToolCallMessage object
|
|
265
|
+
*/
|
|
266
|
+
interface ToolCallMessageEvent extends AgentMessageEventBase<"tool_call_message", ToolCallMessage> {
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* ToolResultMessageEvent - Tool result message
|
|
270
|
+
* Data: Complete ToolResultMessage object
|
|
271
|
+
*/
|
|
272
|
+
interface ToolResultMessageEvent extends AgentMessageEventBase<"tool_result_message", ToolResultMessage> {
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* ErrorMessageEvent - Error message displayed in chat
|
|
276
|
+
* Data: Complete ErrorMessage object
|
|
277
|
+
*
|
|
278
|
+
* Generated when error_received StreamEvent is processed by MealyMachine.
|
|
279
|
+
* Displayed in the chat history so users can see what went wrong.
|
|
280
|
+
*/
|
|
281
|
+
interface ErrorMessageEvent extends AgentMessageEventBase<"error_message", ErrorMessage> {
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* AgentMessageEvent - All message events
|
|
285
|
+
*/
|
|
286
|
+
type AgentMessageEvent = UserMessageEvent | AssistantMessageEvent | ToolCallMessageEvent | ToolResultMessageEvent | ErrorMessageEvent;
|
|
287
|
+
/**
|
|
288
|
+
* AgentMessageEventType - String literal union
|
|
289
|
+
*/
|
|
290
|
+
type AgentMessageEventType = AgentMessageEvent["type"];
|
|
291
|
+
/**
|
|
292
|
+
* Type guard: is this a message event?
|
|
293
|
+
*/
|
|
294
|
+
declare function isAgentMessageEvent(event: {
|
|
295
|
+
source?: string;
|
|
296
|
+
category?: string;
|
|
297
|
+
}): event is AgentMessageEvent;
|
|
298
|
+
|
|
299
|
+
export { type AgentStreamEvent as A, type AgentStateEventBase as B, type ConversationQueuedEvent as C, type AgentStateEventType as D, type ErrorOccurredEvent as E, isAgentStateEvent as F, type AgentMessageEventBase as G, type AgentMessageEventType as H, isAgentMessageEvent as I, type StopReason as S, type ToolPlannedEvent as T, type UserMessageEvent as U, type AgentMessageStartEvent as a, type AgentMessageDeltaEvent as b, type AgentMessageStopEvent as c, type AgentTextDeltaEvent as d, type AgentToolUseStartEvent as e, type AgentInputJsonDeltaEvent as f, type AgentToolUseStopEvent as g, type AgentToolResultEvent as h, type AgentStateEvent as i, type ConversationStartEvent as j, type ConversationThinkingEvent as k, type ConversationRespondingEvent as l, type ConversationEndEvent as m, type ConversationInterruptedEvent as n, type ToolExecutingEvent as o, type ToolCompletedEvent as p, type ToolFailedEvent as q, type AgentMessageEvent as r, type AssistantMessageEvent as s, type ToolCallMessageEvent as t, type ToolResultMessageEvent as u, type ErrorMessageEvent as v, type AgentStreamEventBase as w, type AgentErrorReceivedEvent as x, type AgentStreamEventType as y, isAgentStreamEvent as z };
|