@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.
- package/README.md +342 -0
- package/dist/{Processor-DT0N1qI6.d.ts → Processor-CeMyXtsX.d.ts} +1 -1
- package/dist/RpcClient-CMdhJxjS.d.ts +304 -0
- package/dist/agent/engine/internal/index.d.ts +22 -18
- package/dist/agent/engine/internal/index.js +1 -2
- package/dist/agent/engine/mealy/index.d.ts +4 -4
- package/dist/agent/engine/mealy/index.js +1 -2
- package/dist/agent/index.d.ts +92 -92
- package/dist/agent/index.js +16 -16
- package/dist/agent/types/index.d.ts +4 -4
- package/dist/agent/types/index.js +1 -2
- package/dist/bash/index.d.ts +29 -0
- package/dist/bash/index.js +7 -0
- package/dist/{bus-uF1DM2ox.d.ts → bus-C9FLWIu8.d.ts} +3 -1
- package/dist/{chunk-E5FPOAPO.js → chunk-22NTRYNO.js} +60 -60
- package/dist/chunk-22NTRYNO.js.map +1 -0
- package/dist/{chunk-7ZDX3O6I.js → chunk-AAFPAF67.js} +2 -2
- package/dist/{chunk-7ZDX3O6I.js.map → chunk-AAFPAF67.js.map} +1 -1
- package/dist/{chunk-EKHT54KN.js → chunk-APCBNCOW.js} +1 -1
- package/dist/{chunk-EKHT54KN.js.map → chunk-APCBNCOW.js.map} +1 -1
- package/dist/chunk-BHOD5PKR.js +55 -0
- package/dist/chunk-BHOD5PKR.js.map +1 -0
- package/dist/chunk-FI7WQFGV.js +37 -0
- package/dist/chunk-FI7WQFGV.js.map +1 -0
- package/dist/{chunk-AT5P47YA.js → chunk-RWIYC65R.js} +115 -115
- package/dist/chunk-RWIYC65R.js.map +1 -0
- package/dist/chunk-SKS7S2RY.js +1 -0
- package/dist/{chunk-I7GYR3MN.js → chunk-TUFZ2YH6.js} +77 -91
- package/dist/chunk-TUFZ2YH6.js.map +1 -0
- package/dist/{chunk-K6WXQ2RW.js → chunk-YSZG6XIM.js} +1 -2
- package/dist/chunk-YSZG6XIM.js.map +1 -0
- package/dist/{combinators-nEa5dD0T.d.ts → combinators-Dy-7lxKV.d.ts} +50 -50
- package/dist/common/logger/index.js +14 -16
- package/dist/common/logger/index.js.map +1 -1
- package/dist/container/index.d.ts +3 -4
- package/dist/container/index.js +0 -2
- package/dist/container/index.js.map +1 -1
- package/dist/driver/index.d.ts +2 -310
- package/dist/event/index.d.ts +4 -4
- package/dist/event/index.js +2 -3
- package/dist/event/types/index.d.ts +202 -208
- package/dist/event/types/index.js +1 -2
- package/dist/{event-CDuTzs__.d.ts → event-DNsF9EkO.d.ts} +5 -8
- package/dist/image/index.d.ts +9 -5
- package/dist/image/index.js +5 -2
- package/dist/image/index.js.map +1 -1
- package/dist/index--gxNpY5W.d.ts +609 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +17 -17
- package/dist/{message-BMrMm1pq.d.ts → message-Dn-I2vr0.d.ts} +10 -33
- package/dist/mq/index.d.ts +25 -25
- package/dist/mq/index.js +1 -3
- package/dist/mq/index.js.map +1 -1
- package/dist/network/index.d.ts +59 -347
- package/dist/network/index.js +30 -41
- package/dist/network/index.js.map +1 -1
- package/dist/persistence/index.d.ts +2 -155
- package/dist/platform/index.d.ts +76 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/runtime/index.d.ts +26 -59
- package/dist/runtime/index.js +117 -33
- package/dist/runtime/index.js.map +1 -1
- package/dist/session/index.d.ts +4 -52
- package/dist/session/index.js +4 -51
- package/dist/session/index.js.map +1 -1
- package/dist/types-Cb8tKM6Y.d.ts +90 -0
- package/package.json +10 -5
- package/src/agent/AgentStateMachine.ts +2 -2
- package/src/agent/__tests__/AgentStateMachine.test.ts +2 -2
- package/src/agent/__tests__/createAgent.test.ts +4 -4
- package/src/agent/__tests__/engine/internal/messageAssemblerProcessor.test.ts +301 -97
- package/src/agent/__tests__/engine/internal/stateEventProcessor.test.ts +6 -6
- package/src/agent/__tests__/engine/internal/turnTrackerProcessor.test.ts +59 -78
- package/src/agent/__tests__/engine/mealy/Mealy.test.ts +3 -3
- package/src/agent/__tests__/engine/mealy/Store.test.ts +1 -1
- package/src/agent/__tests__/engine/mealy/combinators.test.ts +4 -4
- package/src/agent/createAgent.ts +15 -15
- package/src/agent/engine/AgentProcessor.ts +7 -7
- package/src/agent/engine/MealyMachine.ts +4 -4
- package/src/agent/engine/internal/index.ts +11 -11
- package/src/agent/engine/internal/messageAssemblerProcessor.ts +113 -128
- package/src/agent/engine/internal/stateEventProcessor.ts +13 -15
- package/src/agent/engine/internal/turnTrackerProcessor.ts +27 -31
- package/src/agent/engine/mealy/Mealy.ts +2 -2
- package/src/agent/engine/mealy/combinators.ts +10 -10
- package/src/agent/engine/mealy/index.ts +9 -11
- package/src/agent/index.ts +30 -32
- package/src/agent/types/engine.ts +3 -3
- package/src/agent/types/event.ts +4 -12
- package/src/agent/types/index.ts +86 -88
- package/src/agent/types/message.ts +9 -43
- package/src/bash/index.ts +21 -0
- package/src/bash/tool.ts +57 -0
- package/src/bash/types.ts +108 -0
- package/src/common/logger/ConsoleLogger.ts +1 -1
- package/src/common/logger/LoggerFactoryImpl.ts +14 -14
- package/src/common/logger/index.ts +3 -3
- package/src/container/index.ts +4 -5
- package/src/container/types.ts +1 -1
- package/src/driver/index.ts +15 -16
- package/src/driver/types.ts +201 -73
- package/src/event/EventBus.ts +10 -10
- package/src/event/__tests__/EventBus.test.ts +2 -2
- package/src/event/index.ts +2 -3
- package/src/event/types/agent.ts +186 -191
- package/src/event/types/bus.ts +1 -1
- package/src/event/types/command.ts +293 -264
- package/src/event/types/container.ts +207 -222
- package/src/event/types/driver.ts +153 -155
- package/src/event/types/index.ts +6 -12
- package/src/event/types/session.ts +117 -130
- package/src/image/Image.ts +12 -2
- package/src/image/index.ts +4 -5
- package/src/image/types.ts +8 -2
- package/src/mq/OffsetGenerator.ts +1 -1
- package/src/mq/__tests__/OffsetGenerator.test.ts +1 -1
- package/src/mq/index.ts +4 -5
- package/src/network/RpcClient.ts +26 -25
- package/src/network/index.ts +41 -44
- package/src/network/jsonrpc.ts +5 -5
- package/src/persistence/index.ts +5 -5
- package/src/persistence/types.ts +5 -2
- package/src/platform/index.ts +21 -0
- package/src/platform/types.ts +84 -0
- package/src/runtime/AgentXRuntime.ts +188 -61
- package/src/runtime/__tests__/AgentXRuntime.test.ts +343 -0
- package/src/runtime/index.ts +12 -25
- package/src/runtime/types.ts +10 -62
- package/src/session/index.ts +2 -3
- package/dist/chunk-7D4SUZUM.js +0 -38
- package/dist/chunk-AT5P47YA.js.map +0 -1
- package/dist/chunk-E5FPOAPO.js.map +0 -1
- package/dist/chunk-I7GYR3MN.js.map +0 -1
- package/dist/chunk-K6WXQ2RW.js.map +0 -1
- package/dist/workspace/index.d.ts +0 -111
- package/dist/wrapper-Y3UTVU2E.js +0 -3635
- package/dist/wrapper-Y3UTVU2E.js.map +0 -1
- package/src/workspace/index.ts +0 -27
- package/src/workspace/types.ts +0 -131
- /package/dist/{workspace → bash}/index.js.map +0 -0
- /package/dist/{chunk-7D4SUZUM.js.map → chunk-SKS7S2RY.js.map} +0 -0
- /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 (
|
|
40
|
-
return
|
|
39
|
+
if (LoggerFactoryImpl.loggers.has(name)) {
|
|
40
|
+
return LoggerFactoryImpl.loggers.get(name)!;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
const lazyLogger =
|
|
44
|
-
|
|
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
|
-
|
|
49
|
+
LoggerFactoryImpl.config = { ...LoggerFactoryImpl.config, ...config };
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
static reset(): void {
|
|
53
|
-
|
|
54
|
-
|
|
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 =
|
|
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:
|
|
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 (
|
|
93
|
-
return
|
|
92
|
+
if (LoggerFactoryImpl.config.defaultImplementation) {
|
|
93
|
+
return LoggerFactoryImpl.config.defaultImplementation(name);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
return new ConsoleLogger(name, {
|
|
97
|
-
level:
|
|
98
|
-
...
|
|
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
|
-
|
|
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";
|
package/src/container/index.ts
CHANGED
|
@@ -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";
|
package/src/container/types.ts
CHANGED
|
@@ -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 {
|
|
19
|
+
export type { ContainerConfig, ContainerRecord, ContainerRepository } from "../persistence/types";
|
|
20
20
|
|
|
21
21
|
// ============================================================================
|
|
22
22
|
// Container Interface
|
package/src/driver/index.ts
CHANGED
|
@@ -16,27 +16,26 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
export type {
|
|
19
|
-
|
|
20
|
-
McpServerConfig,
|
|
21
|
-
DriverConfig,
|
|
22
|
-
DriverState,
|
|
23
|
-
|
|
19
|
+
CreateDriver,
|
|
24
20
|
// Core Interface
|
|
25
21
|
Driver,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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";
|
package/src/driver/types.ts
CHANGED
|
@@ -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
|
-
//
|
|
37
|
+
// Tool Definition
|
|
37
38
|
// ============================================================================
|
|
38
39
|
|
|
39
40
|
/**
|
|
40
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
{
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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
|
*
|
package/src/event/EventBus.ts
CHANGED
|
@@ -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
|
-
|
|
16
|
+
EventBus,
|
|
17
|
+
EventConsumer,
|
|
18
|
+
EventProducer,
|
|
19
19
|
RequestDataFor,
|
|
20
|
-
|
|
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 {
|
|
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
|
package/src/event/index.ts
CHANGED