@agentxjs/core 1.9.10-dev → 2.0.1

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.
Files changed (142) hide show
  1. package/README.md +342 -0
  2. package/dist/{Processor-DT0N1qI6.d.ts → Processor-CeMyXtsX.d.ts} +1 -1
  3. package/dist/RpcClient-CMdhJxjS.d.ts +304 -0
  4. package/dist/agent/engine/internal/index.d.ts +22 -18
  5. package/dist/agent/engine/internal/index.js +1 -2
  6. package/dist/agent/engine/mealy/index.d.ts +4 -4
  7. package/dist/agent/engine/mealy/index.js +1 -2
  8. package/dist/agent/index.d.ts +92 -92
  9. package/dist/agent/index.js +16 -16
  10. package/dist/agent/types/index.d.ts +4 -4
  11. package/dist/agent/types/index.js +1 -2
  12. package/dist/bash/index.d.ts +29 -0
  13. package/dist/bash/index.js +7 -0
  14. package/dist/{bus-uF1DM2ox.d.ts → bus-C9FLWIu8.d.ts} +3 -1
  15. package/dist/{chunk-E5FPOAPO.js → chunk-22NTRYNO.js} +60 -60
  16. package/dist/chunk-22NTRYNO.js.map +1 -0
  17. package/dist/{chunk-7ZDX3O6I.js → chunk-AAFPAF67.js} +2 -2
  18. package/dist/{chunk-7ZDX3O6I.js.map → chunk-AAFPAF67.js.map} +1 -1
  19. package/dist/{chunk-EKHT54KN.js → chunk-APCBNCOW.js} +1 -1
  20. package/dist/{chunk-EKHT54KN.js.map → chunk-APCBNCOW.js.map} +1 -1
  21. package/dist/chunk-BHOD5PKR.js +55 -0
  22. package/dist/chunk-BHOD5PKR.js.map +1 -0
  23. package/dist/chunk-FI7WQFGV.js +37 -0
  24. package/dist/chunk-FI7WQFGV.js.map +1 -0
  25. package/dist/{chunk-AT5P47YA.js → chunk-RWIYC65R.js} +115 -115
  26. package/dist/chunk-RWIYC65R.js.map +1 -0
  27. package/dist/chunk-SKS7S2RY.js +1 -0
  28. package/dist/{chunk-I7GYR3MN.js → chunk-TUFZ2YH6.js} +77 -91
  29. package/dist/chunk-TUFZ2YH6.js.map +1 -0
  30. package/dist/{chunk-K6WXQ2RW.js → chunk-YSZG6XIM.js} +1 -2
  31. package/dist/chunk-YSZG6XIM.js.map +1 -0
  32. package/dist/{combinators-nEa5dD0T.d.ts → combinators-Dy-7lxKV.d.ts} +50 -50
  33. package/dist/common/logger/index.js +14 -16
  34. package/dist/common/logger/index.js.map +1 -1
  35. package/dist/container/index.d.ts +3 -4
  36. package/dist/container/index.js +0 -2
  37. package/dist/container/index.js.map +1 -1
  38. package/dist/driver/index.d.ts +2 -310
  39. package/dist/event/index.d.ts +4 -4
  40. package/dist/event/index.js +2 -3
  41. package/dist/event/types/index.d.ts +202 -208
  42. package/dist/event/types/index.js +1 -2
  43. package/dist/{event-CDuTzs__.d.ts → event-DNsF9EkO.d.ts} +5 -8
  44. package/dist/image/index.d.ts +9 -5
  45. package/dist/image/index.js +5 -2
  46. package/dist/image/index.js.map +1 -1
  47. package/dist/index--gxNpY5W.d.ts +609 -0
  48. package/dist/index.d.ts +4 -4
  49. package/dist/index.js +17 -17
  50. package/dist/{message-BMrMm1pq.d.ts → message-Dn-I2vr0.d.ts} +10 -33
  51. package/dist/mq/index.d.ts +25 -25
  52. package/dist/mq/index.js +1 -3
  53. package/dist/mq/index.js.map +1 -1
  54. package/dist/network/index.d.ts +59 -347
  55. package/dist/network/index.js +30 -41
  56. package/dist/network/index.js.map +1 -1
  57. package/dist/persistence/index.d.ts +2 -155
  58. package/dist/platform/index.d.ts +76 -0
  59. package/dist/platform/index.js.map +1 -0
  60. package/dist/runtime/index.d.ts +26 -59
  61. package/dist/runtime/index.js +117 -33
  62. package/dist/runtime/index.js.map +1 -1
  63. package/dist/session/index.d.ts +4 -52
  64. package/dist/session/index.js +4 -51
  65. package/dist/session/index.js.map +1 -1
  66. package/dist/types-Cb8tKM6Y.d.ts +90 -0
  67. package/package.json +10 -5
  68. package/src/agent/AgentStateMachine.ts +2 -2
  69. package/src/agent/__tests__/AgentStateMachine.test.ts +2 -2
  70. package/src/agent/__tests__/createAgent.test.ts +4 -4
  71. package/src/agent/__tests__/engine/internal/messageAssemblerProcessor.test.ts +301 -97
  72. package/src/agent/__tests__/engine/internal/stateEventProcessor.test.ts +6 -6
  73. package/src/agent/__tests__/engine/internal/turnTrackerProcessor.test.ts +59 -78
  74. package/src/agent/__tests__/engine/mealy/Mealy.test.ts +3 -3
  75. package/src/agent/__tests__/engine/mealy/Store.test.ts +1 -1
  76. package/src/agent/__tests__/engine/mealy/combinators.test.ts +4 -4
  77. package/src/agent/createAgent.ts +15 -15
  78. package/src/agent/engine/AgentProcessor.ts +7 -7
  79. package/src/agent/engine/MealyMachine.ts +4 -4
  80. package/src/agent/engine/internal/index.ts +11 -11
  81. package/src/agent/engine/internal/messageAssemblerProcessor.ts +113 -128
  82. package/src/agent/engine/internal/stateEventProcessor.ts +13 -15
  83. package/src/agent/engine/internal/turnTrackerProcessor.ts +27 -31
  84. package/src/agent/engine/mealy/Mealy.ts +2 -2
  85. package/src/agent/engine/mealy/combinators.ts +10 -10
  86. package/src/agent/engine/mealy/index.ts +9 -11
  87. package/src/agent/index.ts +30 -32
  88. package/src/agent/types/engine.ts +3 -3
  89. package/src/agent/types/event.ts +4 -12
  90. package/src/agent/types/index.ts +86 -88
  91. package/src/agent/types/message.ts +9 -43
  92. package/src/bash/index.ts +21 -0
  93. package/src/bash/tool.ts +57 -0
  94. package/src/bash/types.ts +108 -0
  95. package/src/common/logger/ConsoleLogger.ts +1 -1
  96. package/src/common/logger/LoggerFactoryImpl.ts +14 -14
  97. package/src/common/logger/index.ts +3 -3
  98. package/src/container/index.ts +4 -5
  99. package/src/container/types.ts +1 -1
  100. package/src/driver/index.ts +15 -16
  101. package/src/driver/types.ts +201 -73
  102. package/src/event/EventBus.ts +10 -10
  103. package/src/event/__tests__/EventBus.test.ts +2 -2
  104. package/src/event/index.ts +2 -3
  105. package/src/event/types/agent.ts +186 -191
  106. package/src/event/types/bus.ts +1 -1
  107. package/src/event/types/command.ts +293 -264
  108. package/src/event/types/container.ts +207 -222
  109. package/src/event/types/driver.ts +153 -155
  110. package/src/event/types/index.ts +6 -12
  111. package/src/event/types/session.ts +117 -130
  112. package/src/image/Image.ts +12 -2
  113. package/src/image/index.ts +4 -5
  114. package/src/image/types.ts +8 -2
  115. package/src/mq/OffsetGenerator.ts +1 -1
  116. package/src/mq/__tests__/OffsetGenerator.test.ts +1 -1
  117. package/src/mq/index.ts +4 -5
  118. package/src/network/RpcClient.ts +26 -25
  119. package/src/network/index.ts +41 -44
  120. package/src/network/jsonrpc.ts +5 -5
  121. package/src/persistence/index.ts +5 -5
  122. package/src/persistence/types.ts +5 -2
  123. package/src/platform/index.ts +21 -0
  124. package/src/platform/types.ts +84 -0
  125. package/src/runtime/AgentXRuntime.ts +188 -61
  126. package/src/runtime/__tests__/AgentXRuntime.test.ts +343 -0
  127. package/src/runtime/index.ts +12 -25
  128. package/src/runtime/types.ts +10 -62
  129. package/src/session/index.ts +2 -3
  130. package/dist/chunk-7D4SUZUM.js +0 -38
  131. package/dist/chunk-AT5P47YA.js.map +0 -1
  132. package/dist/chunk-E5FPOAPO.js.map +0 -1
  133. package/dist/chunk-I7GYR3MN.js.map +0 -1
  134. package/dist/chunk-K6WXQ2RW.js.map +0 -1
  135. package/dist/workspace/index.d.ts +0 -111
  136. package/dist/wrapper-Y3UTVU2E.js +0 -3635
  137. package/dist/wrapper-Y3UTVU2E.js.map +0 -1
  138. package/src/workspace/index.ts +0 -27
  139. package/src/workspace/types.ts +0 -131
  140. /package/dist/{workspace → bash}/index.js.map +0 -0
  141. /package/dist/{chunk-7D4SUZUM.js.map → chunk-SKS7S2RY.js.map} +0 -0
  142. /package/dist/{workspace → platform}/index.js +0 -0
@@ -7,8 +7,8 @@
7
7
  * - External LoggerFactory can be injected via Runtime
8
8
  */
9
9
 
10
- import type { Logger, LoggerFactory, LogContext, LogLevel } from "./types";
11
10
  import { ConsoleLogger, type ConsoleLoggerOptions } from "./ConsoleLogger";
11
+ import type { LogContext, Logger, LoggerFactory, LogLevel } from "./types";
12
12
 
13
13
  // External factory injected via Runtime
14
14
  let externalFactory: LoggerFactory | null = null;
@@ -36,22 +36,22 @@ export class LoggerFactoryImpl {
36
36
  static getLogger(nameOrClass: string | (new (...args: unknown[]) => unknown)): Logger {
37
37
  const name = typeof nameOrClass === "string" ? nameOrClass : nameOrClass.name;
38
38
 
39
- if (this.loggers.has(name)) {
40
- return this.loggers.get(name)!;
39
+ if (LoggerFactoryImpl.loggers.has(name)) {
40
+ return LoggerFactoryImpl.loggers.get(name)!;
41
41
  }
42
42
 
43
- const lazyLogger = this.createLazyLogger(name);
44
- this.loggers.set(name, lazyLogger);
43
+ const lazyLogger = LoggerFactoryImpl.createLazyLogger(name);
44
+ LoggerFactoryImpl.loggers.set(name, lazyLogger);
45
45
  return lazyLogger;
46
46
  }
47
47
 
48
48
  static configure(config: LoggerFactoryConfig): void {
49
- this.config = { ...this.config, ...config };
49
+ LoggerFactoryImpl.config = { ...LoggerFactoryImpl.config, ...config };
50
50
  }
51
51
 
52
52
  static reset(): void {
53
- this.loggers.clear();
54
- this.config = { defaultLevel: "info" };
53
+ LoggerFactoryImpl.loggers.clear();
54
+ LoggerFactoryImpl.config = { defaultLevel: "info" };
55
55
  externalFactory = null;
56
56
  factoryVersion++; // Invalidate all cached real loggers
57
57
  }
@@ -63,7 +63,7 @@ export class LoggerFactoryImpl {
63
63
  const getRealLogger = (): Logger => {
64
64
  // Recreate logger if factory version changed (setLoggerFactory was called)
65
65
  if (!realLogger || loggerVersion !== factoryVersion) {
66
- realLogger = this.createLogger(name);
66
+ realLogger = LoggerFactoryImpl.createLogger(name);
67
67
  loggerVersion = factoryVersion;
68
68
  }
69
69
  return realLogger;
@@ -71,7 +71,7 @@ export class LoggerFactoryImpl {
71
71
 
72
72
  return {
73
73
  name,
74
- level: this.config.defaultLevel || "info",
74
+ level: LoggerFactoryImpl.config.defaultLevel || "info",
75
75
  debug: (message: string, context?: LogContext) => getRealLogger().debug(message, context),
76
76
  info: (message: string, context?: LogContext) => getRealLogger().info(message, context),
77
77
  warn: (message: string, context?: LogContext) => getRealLogger().warn(message, context),
@@ -89,13 +89,13 @@ export class LoggerFactoryImpl {
89
89
  return externalFactory.getLogger(name);
90
90
  }
91
91
 
92
- if (this.config.defaultImplementation) {
93
- return this.config.defaultImplementation(name);
92
+ if (LoggerFactoryImpl.config.defaultImplementation) {
93
+ return LoggerFactoryImpl.config.defaultImplementation(name);
94
94
  }
95
95
 
96
96
  return new ConsoleLogger(name, {
97
- level: this.config.defaultLevel,
98
- ...this.config.consoleOptions,
97
+ level: LoggerFactoryImpl.config.defaultLevel,
98
+ ...LoggerFactoryImpl.config.consoleOptions,
99
99
  });
100
100
  }
101
101
  }
@@ -16,11 +16,11 @@
16
16
  * ```
17
17
  */
18
18
 
19
- export type { Logger, LoggerFactory, LogContext, LogLevel } from "./types";
20
19
  export { ConsoleLogger, type ConsoleLoggerOptions } from "./ConsoleLogger";
21
20
  export {
22
- LoggerFactoryImpl,
21
+ createLogger,
23
22
  type LoggerFactoryConfig,
23
+ LoggerFactoryImpl,
24
24
  setLoggerFactory,
25
- createLogger,
26
25
  } from "./LoggerFactoryImpl";
26
+ export type { LogContext, Logger, LoggerFactory, LogLevel } from "./types";
@@ -32,13 +32,12 @@
32
32
  * ```
33
33
  */
34
34
 
35
+ export { ContainerImpl, createContainer, getOrCreateContainer, loadContainer } from "./Container";
35
36
  export type {
36
- ContainerRecord,
37
- ContainerConfig,
38
- ContainerRepository,
39
37
  Container,
38
+ ContainerConfig,
40
39
  ContainerContext,
41
40
  ContainerCreateConfig,
41
+ ContainerRecord,
42
+ ContainerRepository,
42
43
  } from "./types";
43
-
44
- export { ContainerImpl, createContainer, loadContainer, getOrCreateContainer } from "./Container";
@@ -16,7 +16,7 @@ import type { SessionRepository } from "../session/types";
16
16
  // Re-export from persistence (storage schema)
17
17
  // ============================================================================
18
18
 
19
- export type { ContainerRecord, ContainerConfig, ContainerRepository } from "../persistence/types";
19
+ export type { ContainerConfig, ContainerRecord, ContainerRepository } from "../persistence/types";
20
20
 
21
21
  // ============================================================================
22
22
  // Container Interface
@@ -16,27 +16,26 @@
16
16
  */
17
17
 
18
18
  export type {
19
- // Configuration
20
- McpServerConfig,
21
- DriverConfig,
22
- DriverState,
23
-
19
+ CreateDriver,
24
20
  // Core Interface
25
21
  Driver,
26
- CreateDriver,
27
-
28
- // Stream Events
29
- StreamEvent,
30
- StopReason,
22
+ DriverConfig,
23
+ DriverState,
24
+ DriverStreamEvent,
25
+ DriverStreamEventType,
26
+ ErrorEvent,
27
+ InputJsonDeltaEvent,
28
+ InterruptedEvent,
29
+ // Configuration
30
+ McpServerConfig,
31
31
  MessageStartEvent,
32
32
  MessageStopEvent,
33
+ StopReason,
34
+ // Stream Events
35
+ StreamEvent,
33
36
  TextDeltaEvent,
37
+ ToolDefinition,
38
+ ToolResultEvent,
34
39
  ToolUseStartEvent,
35
- InputJsonDeltaEvent,
36
40
  ToolUseStopEvent,
37
- ToolResultEvent,
38
- ErrorEvent,
39
- InterruptedEvent,
40
- DriverStreamEvent,
41
- DriverStreamEventType,
42
41
  } from "./types";
@@ -31,17 +31,72 @@
31
31
  */
32
32
 
33
33
  import type { UserMessage } from "../agent/types/message";
34
+ import type { Session } from "../session/types";
34
35
 
35
36
  // ============================================================================
36
- // MCP Server Configuration
37
+ // Tool Definition
37
38
  // ============================================================================
38
39
 
39
40
  /**
40
- * MCP Server configuration
41
+ * ToolDefinition - Defines a tool for LLM tool calling
42
+ *
43
+ * Tools are injected into the Driver via DriverConfig.tools.
44
+ * The Driver passes tool schemas to the LLM and executes handlers
45
+ * when the LLM requests a tool call.
41
46
  *
42
- * Defines how to launch an MCP server process.
47
+ * @example
48
+ * ```typescript
49
+ * const calculator: ToolDefinition = {
50
+ * name: "calculator",
51
+ * description: "Evaluates a math expression",
52
+ * parameters: {
53
+ * type: "object",
54
+ * properties: {
55
+ * expression: { type: "string", description: "e.g. '123 * 456'" },
56
+ * },
57
+ * required: ["expression"],
58
+ * },
59
+ * execute: async (params) => {
60
+ * const result = Function(`"use strict"; return (${params.expression})`)();
61
+ * return { result: String(result) };
62
+ * },
63
+ * };
64
+ * ```
43
65
  */
44
- export interface McpServerConfig {
66
+ export interface ToolDefinition {
67
+ /**
68
+ * Tool name (unique identifier)
69
+ */
70
+ name: string;
71
+
72
+ /**
73
+ * Description of what the tool does (sent to LLM)
74
+ */
75
+ description?: string;
76
+
77
+ /**
78
+ * JSON Schema for the tool's input parameters
79
+ */
80
+ parameters: {
81
+ type: "object";
82
+ properties: Record<string, unknown>;
83
+ required?: string[];
84
+ };
85
+
86
+ /**
87
+ * Function to execute when the LLM calls this tool
88
+ */
89
+ execute: (params: Record<string, unknown>) => Promise<unknown>;
90
+ }
91
+
92
+ // ============================================================================
93
+ // MCP Server Configuration
94
+ // ============================================================================
95
+
96
+ /**
97
+ * Stdio transport — launches a local MCP server as a child process.
98
+ */
99
+ export interface McpStdioServerConfig {
45
100
  /**
46
101
  * Command to run the MCP server
47
102
  */
@@ -58,6 +113,34 @@ export interface McpServerConfig {
58
113
  env?: Record<string, string>;
59
114
  }
60
115
 
116
+ /**
117
+ * HTTP Streamable transport — connects to a remote MCP server over HTTP.
118
+ */
119
+ export interface McpHttpServerConfig {
120
+ /**
121
+ * Transport type discriminator
122
+ */
123
+ type: "http";
124
+
125
+ /**
126
+ * URL of the remote MCP server
127
+ */
128
+ url: string;
129
+
130
+ /**
131
+ * Additional HTTP headers (e.g. Authorization)
132
+ */
133
+ headers?: Record<string, string>;
134
+ }
135
+
136
+ /**
137
+ * MCP Server configuration.
138
+ *
139
+ * - Stdio: `{ command, args?, env? }` — local subprocess
140
+ * - HTTP: `{ transport: "http", url, headers? }` — remote server
141
+ */
142
+ export type McpServerConfig = McpStdioServerConfig | McpHttpServerConfig;
143
+
61
144
  // ============================================================================
62
145
  // Stream Event (Lightweight)
63
146
  // ============================================================================
@@ -87,81 +170,102 @@ export interface StreamEvent<T extends string = string, D = unknown> {
87
170
  }
88
171
 
89
172
  // Stream Event Types
90
- export interface MessageStartEvent extends StreamEvent<
91
- "message_start",
92
- {
93
- messageId: string;
94
- model: string;
95
- }
96
- > {}
97
-
98
- export interface MessageStopEvent extends StreamEvent<
99
- "message_stop",
100
- {
101
- stopReason: StopReason;
102
- }
103
- > {}
104
-
105
- export interface TextDeltaEvent extends StreamEvent<
106
- "text_delta",
107
- {
108
- text: string;
109
- }
110
- > {}
111
-
112
- export interface ToolUseStartEvent extends StreamEvent<
113
- "tool_use_start",
114
- {
115
- toolCallId: string;
116
- toolName: string;
117
- }
118
- > {}
119
-
120
- export interface InputJsonDeltaEvent extends StreamEvent<
121
- "input_json_delta",
122
- {
123
- partialJson: string;
124
- }
125
- > {}
126
-
127
- export interface ToolUseStopEvent extends StreamEvent<
128
- "tool_use_stop",
129
- {
130
- toolCallId: string;
131
- toolName: string;
132
- input: Record<string, unknown>;
133
- }
134
- > {}
135
-
136
- export interface ToolResultEvent extends StreamEvent<
137
- "tool_result",
138
- {
139
- toolCallId: string;
140
- result: unknown;
141
- isError?: boolean;
142
- }
143
- > {}
144
-
145
- export interface ErrorEvent extends StreamEvent<
146
- "error",
147
- {
148
- message: string;
149
- errorCode?: string;
150
- }
151
- > {}
152
-
153
- export interface InterruptedEvent extends StreamEvent<
154
- "interrupted",
155
- {
156
- reason: "user" | "timeout" | "error";
157
- }
158
- > {}
173
+ export interface MessageStartEvent
174
+ extends StreamEvent<
175
+ "message_start",
176
+ {
177
+ messageId: string;
178
+ model: string;
179
+ }
180
+ > {}
181
+
182
+ export interface MessageStopEvent
183
+ extends StreamEvent<
184
+ "message_stop",
185
+ {
186
+ stopReason: StopReason;
187
+ }
188
+ > {}
189
+
190
+ export interface TextDeltaEvent
191
+ extends StreamEvent<
192
+ "text_delta",
193
+ {
194
+ text: string;
195
+ }
196
+ > {}
197
+
198
+ export interface ToolUseStartEvent
199
+ extends StreamEvent<
200
+ "tool_use_start",
201
+ {
202
+ toolCallId: string;
203
+ toolName: string;
204
+ }
205
+ > {}
206
+
207
+ export interface InputJsonDeltaEvent
208
+ extends StreamEvent<
209
+ "input_json_delta",
210
+ {
211
+ partialJson: string;
212
+ }
213
+ > {}
214
+
215
+ export interface ToolUseStopEvent
216
+ extends StreamEvent<
217
+ "tool_use_stop",
218
+ {
219
+ toolCallId: string;
220
+ toolName: string;
221
+ input: Record<string, unknown>;
222
+ }
223
+ > {}
224
+
225
+ export interface ToolResultEvent
226
+ extends StreamEvent<
227
+ "tool_result",
228
+ {
229
+ toolCallId: string;
230
+ result: unknown;
231
+ isError?: boolean;
232
+ }
233
+ > {}
234
+
235
+ export interface ErrorEvent
236
+ extends StreamEvent<
237
+ "error",
238
+ {
239
+ message: string;
240
+ errorCode?: string;
241
+ }
242
+ > {}
243
+
244
+ export interface MessageDeltaEvent
245
+ extends StreamEvent<
246
+ "message_delta",
247
+ {
248
+ usage?: {
249
+ inputTokens: number;
250
+ outputTokens: number;
251
+ };
252
+ }
253
+ > {}
254
+
255
+ export interface InterruptedEvent
256
+ extends StreamEvent<
257
+ "interrupted",
258
+ {
259
+ reason: "user" | "timeout" | "error";
260
+ }
261
+ > {}
159
262
 
160
263
  /**
161
264
  * DriverStreamEvent - Union of all stream events from Driver
162
265
  */
163
266
  export type DriverStreamEvent =
164
267
  | MessageStartEvent
268
+ | MessageDeltaEvent
165
269
  | MessageStopEvent
166
270
  | TextDeltaEvent
167
271
  | ToolUseStartEvent
@@ -252,8 +356,32 @@ export interface DriverConfig<TOptions = Record<string, unknown>> {
252
356
  */
253
357
  mcpServers?: Record<string, McpServerConfig>;
254
358
 
359
+ /**
360
+ * Tool definitions for LLM tool calling
361
+ *
362
+ * Tools are passed to the LLM provider and executed when the LLM
363
+ * requests a tool call. Each tool includes its JSON Schema (sent to
364
+ * the LLM) and an execute function (called at runtime).
365
+ */
366
+ tools?: ToolDefinition[];
367
+
255
368
  // === Session Configuration ===
256
369
 
370
+ /**
371
+ * Session for message history access
372
+ *
373
+ * Stateless drivers (like MonoDriver) use this to read conversation history.
374
+ * Stateful drivers (like ClaudeDriver) may ignore this as they manage
375
+ * history internally via SDK.
376
+ *
377
+ * @example
378
+ * ```typescript
379
+ * // MonoDriver reads history from Session
380
+ * const history = await config.session?.getMessages();
381
+ * ```
382
+ */
383
+ session?: Session;
384
+
257
385
  /**
258
386
  * Session ID to resume (for conversation continuity)
259
387
  *
@@ -5,22 +5,22 @@
5
5
  * Uses RxJS Subject for reactive event distribution.
6
6
  */
7
7
 
8
+ import { createLogger } from "commonxjs/logger";
9
+ import { Subject } from "rxjs";
8
10
  import type {
9
- EventBus,
10
- EventProducer,
11
- EventConsumer,
12
- Unsubscribe,
13
- BusEventHandler,
14
- SubscribeOptions,
15
11
  BusEvent,
12
+ BusEventHandler,
16
13
  CommandEventMap,
14
+ CommandRequestResponseMap,
17
15
  CommandRequestType,
18
- ResponseEventFor,
16
+ EventBus,
17
+ EventConsumer,
18
+ EventProducer,
19
19
  RequestDataFor,
20
- CommandRequestResponseMap,
20
+ ResponseEventFor,
21
+ SubscribeOptions,
22
+ Unsubscribe,
21
23
  } from "./types";
22
- import { Subject } from "rxjs";
23
- import { createLogger } from "commonxjs/logger";
24
24
 
25
25
  const logger = createLogger("event/EventBus");
26
26
 
@@ -2,8 +2,8 @@
2
2
  * EventBus.test.ts - Unit tests for EventBus implementation
3
3
  */
4
4
 
5
- import { describe, it, expect, beforeEach } from "bun:test";
6
- import { EventBus } from "../EventBus";
5
+ import { beforeEach, describe, expect, it } from "bun:test";
6
+ import { EventBusImpl as EventBus } from "../EventBus";
7
7
  import type { BusEvent } from "../types";
8
8
 
9
9
  // Test event factory
@@ -39,8 +39,7 @@
39
39
  * ```
40
40
  */
41
41
 
42
- // Type definitions from types directory
43
- export * from "./types";
44
-
45
42
  // Implementation
46
43
  export { EventBusImpl } from "./EventBus";
44
+ // Type definitions from types directory
45
+ export * from "./types";