@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
@@ -30,8 +30,8 @@
30
30
  // Core API
31
31
  // ============================================================================
32
32
 
33
- export { createAgent } from "./createAgent";
34
33
  export { AgentStateMachine } from "./AgentStateMachine";
34
+ export { createAgent } from "./createAgent";
35
35
  export type { AgentEngine, CreateAgentOptions } from "./types";
36
36
 
37
37
  // ============================================================================
@@ -44,63 +44,61 @@ export * from "./types";
44
44
  // Engine (Stateless)
45
45
  // ============================================================================
46
46
 
47
- // MealyMachine
48
- export { MealyMachine, createMealyMachine } from "./engine/MealyMachine";
49
-
50
47
  // AgentProcessor (for advanced use cases)
51
48
  export {
52
- agentProcessor,
53
- createInitialAgentEngineState,
54
49
  type AgentEngineState,
55
50
  type AgentProcessorInput,
56
51
  type AgentProcessorOutput,
52
+ agentProcessor,
53
+ createInitialAgentEngineState,
57
54
  } from "./engine/AgentProcessor";
58
-
59
55
  // Internal Processors (for advanced use cases)
60
56
  export {
61
- // MessageAssembler
62
- messageAssemblerProcessor,
63
- messageAssemblerProcessorDef,
57
+ createInitialMessageAssemblerState,
58
+ createInitialStateEventProcessorContext,
59
+ createInitialTurnTrackerState,
64
60
  type MessageAssemblerInput,
65
61
  type MessageAssemblerOutput,
66
62
  type MessageAssemblerState,
63
+ // MessageAssembler
64
+ messageAssemblerProcessor,
65
+ messageAssemblerProcessorDef,
67
66
  type PendingContent,
68
- createInitialMessageAssemblerState,
67
+ type PendingTurn,
68
+ type StateEventProcessorContext,
69
+ type StateEventProcessorInput,
70
+ type StateEventProcessorOutput,
69
71
  // StateEventProcessor
70
72
  stateEventProcessor,
71
73
  stateEventProcessorDef,
72
- type StateEventProcessorInput,
73
- type StateEventProcessorOutput,
74
- type StateEventProcessorContext,
75
- createInitialStateEventProcessorContext,
76
- // TurnTracker
77
- turnTrackerProcessor,
78
- turnTrackerProcessorDef,
79
74
  type TurnTrackerInput,
80
75
  type TurnTrackerOutput,
81
76
  type TurnTrackerState,
82
- type PendingTurn,
83
- createInitialTurnTrackerState,
77
+ // TurnTracker
78
+ turnTrackerProcessor,
79
+ turnTrackerProcessorDef,
84
80
  } from "./engine/internal";
81
+ // MealyMachine
82
+ export { createMealyMachine, MealyMachine } from "./engine/MealyMachine";
85
83
 
86
84
  // Mealy Machine Core (for building custom processors)
87
85
  export {
88
- // Core types
89
- type Source,
90
- type SourceDefinition,
86
+ chainProcessors,
87
+ combineInitialStates,
88
+ // Combinators
89
+ combineProcessors,
90
+ filterProcessor,
91
+ identityProcessor,
92
+ MemoryStore,
93
+ mapOutput,
91
94
  type Processor,
92
- type ProcessorResult,
93
95
  type ProcessorDefinition,
96
+ type ProcessorResult,
94
97
  type Sink,
95
98
  type SinkDefinition,
99
+ // Core types
100
+ type Source,
101
+ type SourceDefinition,
96
102
  type Store,
97
- MemoryStore,
98
- // Combinators
99
- combineProcessors,
100
- combineInitialStates,
101
- chainProcessors,
102
- filterProcessor,
103
- mapOutput,
104
103
  withLogging,
105
- identityProcessor,
106
104
  } from "./engine/mealy";
@@ -13,14 +13,14 @@
13
13
  * @packageDocumentation
14
14
  */
15
15
 
16
- import type { UserMessage } from "./message";
17
16
  import type {
18
- AgentState,
19
17
  AgentOutput,
18
+ AgentOutputCallback,
19
+ AgentState,
20
20
  StreamEvent,
21
21
  Unsubscribe,
22
- AgentOutputCallback,
23
22
  } from "./event";
23
+ import type { UserMessage } from "./message";
24
24
 
25
25
  // =============================================================================
26
26
  // Message Queue
@@ -13,12 +13,11 @@
13
13
  */
14
14
 
15
15
  import type {
16
- UserMessage,
17
16
  AssistantMessage,
18
- ToolCallMessage,
19
- ToolResultMessage,
20
17
  ErrorMessage,
21
18
  TokenUsage,
19
+ ToolResultMessage,
20
+ UserMessage,
22
21
  } from "./message";
23
22
 
24
23
  // =============================================================================
@@ -235,13 +234,9 @@ export interface ConversationStartData {
235
234
  messageId: string;
236
235
  }
237
236
 
238
- export interface ConversationThinkingData {
239
- // Empty
240
- }
237
+ export type ConversationThinkingData = {};
241
238
 
242
- export interface ConversationRespondingData {
243
- // Empty
244
- }
239
+ export type ConversationRespondingData = {};
245
240
 
246
241
  export interface ConversationEndData {
247
242
  reason: "completed" | "interrupted" | "error";
@@ -368,7 +363,6 @@ export interface MessageEvent<T extends string = string, D = unknown> extends En
368
363
 
369
364
  export type UserMessageEvent = EngineEvent<"user_message", UserMessage>;
370
365
  export type AssistantMessageEvent = EngineEvent<"assistant_message", AssistantMessage>;
371
- export type ToolCallMessageEvent = EngineEvent<"tool_call_message", ToolCallMessage>;
372
366
  export type ToolResultMessageEvent = EngineEvent<"tool_result_message", ToolResultMessage>;
373
367
  export type ErrorMessageEvent = EngineEvent<"error_message", ErrorMessage>;
374
368
 
@@ -378,7 +372,6 @@ export type ErrorMessageEvent = EngineEvent<"error_message", ErrorMessage>;
378
372
  export type AgentMessageEvent =
379
373
  | UserMessageEvent
380
374
  | AssistantMessageEvent
381
- | ToolCallMessageEvent
382
375
  | ToolResultMessageEvent
383
376
  | ErrorMessageEvent;
384
377
 
@@ -389,7 +382,6 @@ export function isMessageEvent(event: EngineEvent): event is AgentMessageEvent {
389
382
  const messageTypes = [
390
383
  "user_message",
391
384
  "assistant_message",
392
- "tool_call_message",
393
385
  "tool_result_message",
394
386
  "error_message",
395
387
  ];
@@ -48,7 +48,7 @@
48
48
  * ## Message Types (Three-Party Model)
49
49
  *
50
50
  * - **User**: Human participant (UserMessage)
51
- * - **Assistant**: AI participant (AssistantMessage, ToolCallMessage)
51
+ * - **Assistant**: AI participant (AssistantMessage — content includes ToolCallPart)
52
52
  * - **Tool**: Computer/execution environment (ToolResultMessage)
53
53
  *
54
54
  * @packageDocumentation
@@ -59,26 +59,25 @@
59
59
  // =============================================================================
60
60
 
61
61
  export type {
62
+ AssistantMessage,
63
+ ContentPart,
64
+ ErrorMessage,
65
+ FilePart,
66
+ ImagePart,
67
+ Message,
68
+ // Message Types
69
+ MessageRole,
70
+ MessageSubtype,
62
71
  // Content Parts
63
72
  TextPart,
64
73
  ThinkingPart,
65
- ImagePart,
66
- FilePart,
74
+ TokenUsage,
67
75
  ToolCallPart,
76
+ ToolResultMessage,
68
77
  ToolResultOutput,
69
78
  ToolResultPart,
70
- ContentPart,
71
79
  UserContentPart,
72
- // Message Types
73
- MessageRole,
74
- MessageSubtype,
75
- TokenUsage,
76
80
  UserMessage,
77
- AssistantMessage,
78
- ToolCallMessage,
79
- ToolResultMessage,
80
- ErrorMessage,
81
- Message,
82
81
  } from "./message";
83
82
 
84
83
  // =============================================================================
@@ -86,112 +85,111 @@ export type {
86
85
  // =============================================================================
87
86
 
88
87
  export type {
89
- // Base Types
90
- EngineEvent,
88
+ AgentError,
89
+ AgentErrorCategory,
90
+ AgentErrorOccurredEvent,
91
91
  AgentEvent,
92
+ AgentEventHandler,
93
+ AgentMessageEvent,
94
+ // Agent Output
95
+ AgentOutput,
96
+ AgentOutputCallback,
92
97
  // Agent State and Error
93
98
  AgentState,
94
- AgentErrorCategory,
95
- AgentError,
96
- // Stream Events
97
- StopReason,
98
- MessageStartData,
99
- MessageDeltaData,
100
- MessageStopData,
101
- TextDeltaData,
102
- ToolUseStartData,
103
- InputJsonDeltaData,
104
- ToolUseStopData,
105
- ToolResultData,
106
- ErrorReceivedData,
107
- MessageStartEvent,
108
- MessageDeltaEvent,
109
- MessageStopEvent,
110
- TextDeltaEvent,
111
- ToolUseStartEvent,
112
- InputJsonDeltaEvent,
113
- ToolUseStopEvent,
114
- ToolResultEvent,
115
- ErrorReceivedEvent,
116
- StreamEvent,
117
- StreamEventType,
118
- // State Events
119
- ConversationQueuedData,
120
- ConversationStartData,
121
- ConversationThinkingData,
122
- ConversationRespondingData,
99
+ AgentStateEvent,
100
+ AgentTurnEvent,
101
+ AssistantMessageEvent,
123
102
  ConversationEndData,
103
+ ConversationEndEvent,
124
104
  ConversationInterruptedData,
125
- ToolPlannedData,
126
- ToolExecutingData,
127
- ToolCompletedData,
128
- ToolFailedData,
129
- ErrorOccurredData,
130
- StateEvent,
105
+ ConversationInterruptedEvent,
106
+ // State Events
107
+ ConversationQueuedData,
131
108
  ConversationQueuedEvent,
109
+ ConversationRespondingData,
110
+ ConversationRespondingEvent,
111
+ ConversationStartData,
132
112
  ConversationStartEvent,
113
+ ConversationThinkingData,
133
114
  ConversationThinkingEvent,
134
- ConversationRespondingEvent,
135
- ConversationEndEvent,
136
- ConversationInterruptedEvent,
137
- ToolPlannedEvent,
138
- ToolExecutingEvent,
139
- ToolCompletedEvent,
140
- ToolFailedEvent,
115
+ // Base Types
116
+ EngineEvent,
117
+ ErrorMessageEvent,
118
+ ErrorOccurredData,
141
119
  ErrorOccurredEvent,
142
- AgentErrorOccurredEvent,
143
- AgentStateEvent,
120
+ ErrorReceivedData,
121
+ ErrorReceivedEvent,
122
+ InputJsonDeltaData,
123
+ InputJsonDeltaEvent,
124
+ MessageDeltaData,
125
+ MessageDeltaEvent,
144
126
  // Message Events
145
127
  MessageEvent,
146
- UserMessageEvent,
147
- AssistantMessageEvent,
148
- ToolCallMessageEvent,
128
+ MessageStartData,
129
+ MessageStartEvent,
130
+ MessageStopData,
131
+ MessageStopEvent,
132
+ StateEvent,
133
+ // Stream Events
134
+ StopReason,
135
+ StreamEvent,
136
+ StreamEventType,
137
+ TextDeltaData,
138
+ TextDeltaEvent,
139
+ ToolCompletedData,
140
+ ToolCompletedEvent,
141
+ ToolExecutingData,
142
+ ToolExecutingEvent,
143
+ ToolFailedData,
144
+ ToolFailedEvent,
145
+ ToolPlannedData,
146
+ ToolPlannedEvent,
147
+ ToolResultData,
148
+ ToolResultEvent,
149
149
  ToolResultMessageEvent,
150
- ErrorMessageEvent,
151
- AgentMessageEvent,
150
+ ToolUseStartData,
151
+ ToolUseStartEvent,
152
+ ToolUseStopData,
153
+ ToolUseStopEvent,
154
+ TurnEvent,
152
155
  // Turn Events
153
156
  TurnRequestData,
154
- TurnResponseData,
155
- TurnEvent,
156
157
  TurnRequestEvent,
158
+ TurnResponseData,
157
159
  TurnResponseEvent,
158
- AgentTurnEvent,
159
- // Agent Output
160
- AgentOutput,
161
160
  // Event Handling
162
161
  Unsubscribe,
163
- AgentOutputCallback,
164
- AgentEventHandler,
162
+ UserMessageEvent,
165
163
  } from "./event";
166
164
 
167
165
  // Type guards (functions, not types)
168
- export { isStateEvent, isMessageEvent, isTurnEvent } from "./event";
166
+ export { isMessageEvent, isStateEvent, isTurnEvent } from "./event";
169
167
 
170
168
  // =============================================================================
171
169
  // Engine Types - Engine, Source, Presenter, Middleware, Interceptor
172
170
  // =============================================================================
173
171
 
174
172
  export type {
175
- // Message Queue
176
- MessageQueue,
177
- // Middleware & Interceptor
178
- AgentMiddlewareNext,
179
- AgentMiddleware,
180
- AgentInterceptorNext,
181
- AgentInterceptor,
182
- // State Machine
183
- StateChange,
184
- StateChangeHandler,
185
- AgentStateMachineInterface,
186
- // Event Handler Maps
187
- EventHandlerMap,
188
- ReactHandlerMap,
189
173
  // Agent Engine
190
174
  AgentEngine,
175
+ AgentEventBus,
176
+ AgentInterceptor,
177
+ AgentInterceptorNext,
178
+ AgentMiddleware,
179
+ // Middleware & Interceptor
180
+ AgentMiddlewareNext,
181
+ AgentPresenter,
191
182
  // Source & Presenter (EventBus adapters)
192
183
  AgentSource,
193
- AgentPresenter,
194
- AgentEventBus,
184
+ AgentStateMachineInterface,
195
185
  // Factory Options
196
186
  CreateAgentOptions,
187
+ // Event Handler Maps
188
+ EventHandlerMap,
189
+ // Message Queue
190
+ MessageQueue,
191
+ ReactHandlerMap,
192
+ // State Machine
193
+ StateChange,
194
+ StateChangeHandler,
197
195
  } from "./engine";
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * This file defines:
5
5
  * - Content Parts: TextPart, ThinkingPart, ImagePart, FilePart, ToolCallPart, ToolResultPart
6
- * - Message Types: UserMessage, AssistantMessage, ToolCallMessage, ToolResultMessage, ErrorMessage
6
+ * - Message Types: UserMessage, AssistantMessage, ToolResultMessage, ErrorMessage
7
7
  * - Message Role and Subtype discriminators
8
8
  *
9
9
  * @packageDocumentation
@@ -215,7 +215,7 @@ export type MessageRole = "user" | "assistant" | "tool" | "system" | "error";
215
215
  * Represents the specific type/category of the message.
216
216
  * Used together with role for serialization and type discrimination.
217
217
  */
218
- export type MessageSubtype = "user" | "assistant" | "tool-call" | "tool-result" | "error";
218
+ export type MessageSubtype = "user" | "assistant" | "tool-result" | "error";
219
219
 
220
220
  /**
221
221
  * Token usage information
@@ -256,9 +256,9 @@ export interface UserMessage {
256
256
  * Assistant Message
257
257
  *
258
258
  * Message generated by the AI assistant.
259
- * Contains text, thinking process, or files.
260
- *
261
- * Note: Tool calls are separate - use ToolCallMessage for tool invocations.
259
+ * Contains text, thinking process, files, and tool calls.
260
+ * Tool calls are content blocks within the assistant message,
261
+ * matching the mainstream API pattern (Anthropic, OpenAI).
262
262
  */
263
263
  export interface AssistantMessage {
264
264
  /** Unique identifier */
@@ -270,8 +270,8 @@ export interface AssistantMessage {
270
270
  /** Message subtype for serialization */
271
271
  subtype: "assistant";
272
272
 
273
- /** Message content - can be simple string or array of parts */
274
- content: string | Array<TextPart | ThinkingPart | FilePart>;
273
+ /** Message content - can be simple string or array of parts (including tool calls) */
274
+ content: string | Array<TextPart | ThinkingPart | FilePart | ToolCallPart>;
275
275
 
276
276
  /** When this message was created (Unix timestamp in milliseconds) */
277
277
  timestamp: number;
@@ -283,35 +283,6 @@ export interface AssistantMessage {
283
283
  usage?: TokenUsage;
284
284
  }
285
285
 
286
- /**
287
- * Tool Call Message
288
- *
289
- * Represents AI's request to invoke a tool.
290
- * Emitted when tool call parameters are fully assembled.
291
- *
292
- * Subject: Assistant (AI decided to call a tool)
293
- * Timing: At tool_use_content_block_stop
294
- */
295
- export interface ToolCallMessage {
296
- /** Unique message identifier */
297
- id: string;
298
-
299
- /** Message role - assistant initiates tool calls */
300
- role: "assistant";
301
-
302
- /** Message subtype for serialization */
303
- subtype: "tool-call";
304
-
305
- /** Tool call details */
306
- toolCall: ToolCallPart;
307
-
308
- /** When this message was created (Unix timestamp in milliseconds) */
309
- timestamp: number;
310
-
311
- /** Parent message ID (the assistant message that triggered this) */
312
- parentId?: string;
313
- }
314
-
315
286
  /**
316
287
  * Tool Result Message
317
288
  *
@@ -377,11 +348,6 @@ export interface ErrorMessage {
377
348
  * Use `subtype` field for precise type discrimination.
378
349
  *
379
350
  * Role: Who sent it (user, assistant, tool, system, error)
380
- * Subtype: What type of message (user, assistant, tool-call, tool-result, error)
351
+ * Subtype: What type of message (user, assistant, tool-result, error)
381
352
  */
382
- export type Message =
383
- | UserMessage
384
- | AssistantMessage
385
- | ToolCallMessage
386
- | ToolResultMessage
387
- | ErrorMessage;
353
+ export type Message = UserMessage | AssistantMessage | ToolResultMessage | ErrorMessage;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Bash Module
3
+ *
4
+ * Abstraction for command execution capability.
5
+ * Platform packages provide concrete implementations.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * import type { BashProvider, BashResult } from "@agentxjs/core/bash";
10
+ *
11
+ * // Platform provides implementation
12
+ * const bash: BashProvider = platform.bashProvider;
13
+ *
14
+ * const result = await bash.execute("echo hello", { cwd: "/tmp" });
15
+ * console.log(result.stdout); // "hello\n"
16
+ * console.log(result.exitCode); // 0
17
+ * ```
18
+ */
19
+
20
+ export { createBashTool } from "./tool";
21
+ export type { BashOptions, BashProvider, BashResult } from "./types";
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Bash Tool Definition
3
+ *
4
+ * Creates a ToolDefinition that wraps a BashProvider.
5
+ * The tool schema is sent to the LLM, the execute function
6
+ * delegates to the platform-provided BashProvider via closure.
7
+ */
8
+
9
+ import type { ToolDefinition } from "../driver/types";
10
+ import type { BashProvider } from "./types";
11
+
12
+ /**
13
+ * Create a bash ToolDefinition from a BashProvider
14
+ *
15
+ * @param provider - Platform-provided BashProvider
16
+ * @returns ToolDefinition ready for DriverConfig.tools
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * if (platform.bashProvider) {
21
+ * tools.push(createBashTool(platform.bashProvider));
22
+ * }
23
+ * ```
24
+ */
25
+ export function createBashTool(provider: BashProvider): ToolDefinition {
26
+ return {
27
+ name: "bash",
28
+ description:
29
+ "Execute a shell command and return stdout, stderr, and exit code. " +
30
+ "Use this for running CLI tools, scripts, file operations, etc.",
31
+ parameters: {
32
+ type: "object",
33
+ properties: {
34
+ command: {
35
+ type: "string",
36
+ description: "Shell command to execute (e.g. 'ls -la', 'cat file.txt')",
37
+ },
38
+ cwd: {
39
+ type: "string",
40
+ description: "Working directory for the command (optional)",
41
+ },
42
+ timeout: {
43
+ type: "number",
44
+ description: "Timeout in milliseconds (optional, default 30000)",
45
+ },
46
+ },
47
+ required: ["command"],
48
+ },
49
+ execute: async (params) => {
50
+ const result = await provider.execute(params.command as string, {
51
+ cwd: params.cwd as string | undefined,
52
+ timeout: params.timeout as number | undefined,
53
+ });
54
+ return result;
55
+ },
56
+ };
57
+ }
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Bash Types
3
+ *
4
+ * Abstraction for command execution capability.
5
+ * Different platforms provide different implementations:
6
+ * - Node.js: child_process based
7
+ * - Docker: Container exec
8
+ * - Sandbox: Isolated environment
9
+ *
10
+ * ```
11
+ * ┌─────────────────────────────────────────────────────┐
12
+ * │ core/bash │
13
+ * │ ┌─────────────────────────────────────────────────┐│
14
+ * │ │ BashProvider (interface) ││
15
+ * │ │ BashResult (interface) ││
16
+ * │ │ BashOptions (interface) ││
17
+ * │ └─────────────────────────────────────────────────┘│
18
+ * └─────────────────────────────────────────────────────┘
19
+ * │
20
+ * ┌────────────────┼────────────────┐
21
+ * ▼ ▼ ▼
22
+ * ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
23
+ * │ platform-node│ │platform-docker│ │platform-sandbox│
24
+ * │ ChildProcess │ │ ContainerExec│ │ SandboxExec │
25
+ * └──────────────┘ └──────────────┘ └──────────────┘
26
+ * ```
27
+ */
28
+
29
+ // ============================================================================
30
+ // Bash Result
31
+ // ============================================================================
32
+
33
+ /**
34
+ * BashResult - Output from a command execution
35
+ */
36
+ export interface BashResult {
37
+ /**
38
+ * Standard output
39
+ */
40
+ stdout: string;
41
+
42
+ /**
43
+ * Standard error
44
+ */
45
+ stderr: string;
46
+
47
+ /**
48
+ * Process exit code (0 = success)
49
+ */
50
+ exitCode: number;
51
+ }
52
+
53
+ // ============================================================================
54
+ // Bash Options
55
+ // ============================================================================
56
+
57
+ /**
58
+ * BashOptions - Configuration for a single command execution
59
+ */
60
+ export interface BashOptions {
61
+ /**
62
+ * Working directory for the command
63
+ */
64
+ cwd?: string;
65
+
66
+ /**
67
+ * Timeout in milliseconds
68
+ */
69
+ timeout?: number;
70
+
71
+ /**
72
+ * Environment variables
73
+ */
74
+ env?: Record<string, string>;
75
+ }
76
+
77
+ // ============================================================================
78
+ // Bash Provider
79
+ // ============================================================================
80
+
81
+ /**
82
+ * BashProvider - Abstraction for command execution
83
+ *
84
+ * Platform implementations provide this interface.
85
+ * The provider is stateless — each execute() call is independent.
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const result = await provider.execute("ls -la", { cwd: "/tmp" });
90
+ * console.log(result.stdout);
91
+ * console.log(result.exitCode); // 0
92
+ * ```
93
+ */
94
+ export interface BashProvider {
95
+ /**
96
+ * Provider type (e.g., "child-process", "docker", "sandbox")
97
+ */
98
+ readonly type: string;
99
+
100
+ /**
101
+ * Execute a shell command
102
+ *
103
+ * @param command - Shell command to execute
104
+ * @param options - Execution options
105
+ * @returns Command output and exit code
106
+ */
107
+ execute(command: string, options?: BashOptions): Promise<BashResult>;
108
+ }
@@ -5,7 +5,7 @@
5
5
  * Used as fallback when no custom LoggerFactory is provided.
6
6
  */
7
7
 
8
- import type { Logger, LogContext, LogLevel } from "./types";
8
+ import type { LogContext, Logger, LogLevel } from "./types";
9
9
 
10
10
  export interface ConsoleLoggerOptions {
11
11
  level?: LogLevel;