@defai.digital/ax-cli 3.7.2 → 3.8.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 (213) hide show
  1. package/README.md +128 -56
  2. package/dist/agent/context-manager.d.ts +15 -1
  3. package/dist/agent/context-manager.js +50 -19
  4. package/dist/agent/context-manager.js.map +1 -1
  5. package/dist/agent/dependency-resolver.js +13 -7
  6. package/dist/agent/dependency-resolver.js.map +1 -1
  7. package/dist/agent/llm-agent.d.ts +35 -0
  8. package/dist/agent/llm-agent.js +137 -4
  9. package/dist/agent/llm-agent.js.map +1 -1
  10. package/dist/agent/status-reporter.d.ts +114 -0
  11. package/dist/agent/status-reporter.js +335 -0
  12. package/dist/agent/status-reporter.js.map +1 -0
  13. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +8 -2
  14. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -1
  15. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +3 -1
  16. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -1
  17. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +3 -1
  18. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -1
  19. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +3 -1
  20. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -1
  21. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +9 -3
  22. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +1 -1
  23. package/dist/analyzers/git/churn-calculator.d.ts +1 -0
  24. package/dist/analyzers/git/churn-calculator.js +25 -6
  25. package/dist/analyzers/git/churn-calculator.js.map +1 -1
  26. package/dist/analyzers/git/hotspot-detector.js +2 -2
  27. package/dist/analyzers/git/hotspot-detector.js.map +1 -1
  28. package/dist/analyzers/metrics/metrics-analyzer.js +1 -1
  29. package/dist/analyzers/metrics/metrics-analyzer.js.map +1 -1
  30. package/dist/analyzers/security/security-analyzer.js +1 -1
  31. package/dist/analyzers/security/security-analyzer.js.map +1 -1
  32. package/dist/checkpoint/manager.d.ts +1 -0
  33. package/dist/checkpoint/manager.js +49 -9
  34. package/dist/checkpoint/manager.js.map +1 -1
  35. package/dist/checkpoint/storage.js +2 -2
  36. package/dist/checkpoint/storage.js.map +1 -1
  37. package/dist/commands/mcp-migrate.d.ts +9 -0
  38. package/dist/commands/mcp-migrate.js +172 -0
  39. package/dist/commands/mcp-migrate.js.map +1 -0
  40. package/dist/commands/status.d.ts +7 -0
  41. package/dist/commands/status.js +211 -0
  42. package/dist/commands/status.js.map +1 -0
  43. package/dist/commands/vscode.d.ts +7 -0
  44. package/dist/commands/vscode.js +363 -0
  45. package/dist/commands/vscode.js.map +1 -0
  46. package/dist/index.js +79 -30
  47. package/dist/index.js.map +1 -1
  48. package/dist/llm/client.js +22 -4
  49. package/dist/llm/client.js.map +1 -1
  50. package/dist/mcp/automatosx-loader.d.ts +84 -0
  51. package/dist/mcp/automatosx-loader.js +238 -0
  52. package/dist/mcp/automatosx-loader.js.map +1 -0
  53. package/dist/mcp/client-mutex-patch.d.ts +36 -0
  54. package/dist/mcp/client-mutex-patch.js +75 -0
  55. package/dist/mcp/client-mutex-patch.js.map +1 -0
  56. package/dist/mcp/client-v2.d.ts +229 -0
  57. package/dist/mcp/client-v2.js +740 -0
  58. package/dist/mcp/client-v2.js.map +1 -0
  59. package/dist/mcp/client.d.ts +111 -13
  60. package/dist/mcp/client.js +168 -253
  61. package/dist/mcp/client.js.map +1 -1
  62. package/dist/mcp/config-detector-v2.d.ts +83 -0
  63. package/dist/mcp/config-detector-v2.js +328 -0
  64. package/dist/mcp/config-detector-v2.js.map +1 -0
  65. package/dist/mcp/config-detector.d.ts +90 -0
  66. package/dist/mcp/config-detector.js +242 -0
  67. package/dist/mcp/config-detector.js.map +1 -0
  68. package/dist/mcp/config-migrator-v2.d.ts +89 -0
  69. package/dist/mcp/config-migrator-v2.js +288 -0
  70. package/dist/mcp/config-migrator-v2.js.map +1 -0
  71. package/dist/mcp/config-migrator.d.ts +63 -0
  72. package/dist/mcp/config-migrator.js +269 -0
  73. package/dist/mcp/config-migrator.js.map +1 -0
  74. package/dist/mcp/config-v2.d.ts +106 -0
  75. package/dist/mcp/config-v2.js +417 -0
  76. package/dist/mcp/config-v2.js.map +1 -0
  77. package/dist/mcp/config.d.ts +12 -1
  78. package/dist/mcp/config.js +95 -10
  79. package/dist/mcp/config.js.map +1 -1
  80. package/dist/mcp/error-formatter.d.ts +46 -0
  81. package/dist/mcp/error-formatter.js +244 -0
  82. package/dist/mcp/error-formatter.js.map +1 -0
  83. package/dist/mcp/health.d.ts +5 -0
  84. package/dist/mcp/health.js +22 -2
  85. package/dist/mcp/health.js.map +1 -1
  86. package/dist/mcp/invariants.d.ts +141 -0
  87. package/dist/mcp/invariants.js +243 -0
  88. package/dist/mcp/invariants.js.map +1 -0
  89. package/dist/mcp/mutex-safe.d.ts +153 -0
  90. package/dist/mcp/mutex-safe.js +260 -0
  91. package/dist/mcp/mutex-safe.js.map +1 -0
  92. package/dist/mcp/mutex.d.ts +73 -0
  93. package/dist/mcp/mutex.js +130 -0
  94. package/dist/mcp/mutex.js.map +1 -0
  95. package/dist/mcp/reconnection.d.ts +4 -0
  96. package/dist/mcp/reconnection.js +15 -0
  97. package/dist/mcp/reconnection.js.map +1 -1
  98. package/dist/mcp/transports-v2.d.ts +152 -0
  99. package/dist/mcp/transports-v2.js +481 -0
  100. package/dist/mcp/transports-v2.js.map +1 -0
  101. package/dist/mcp/type-safety.d.ts +231 -0
  102. package/dist/mcp/type-safety.js +273 -0
  103. package/dist/mcp/type-safety.js.map +1 -0
  104. package/dist/planner/task-planner.js +13 -0
  105. package/dist/planner/task-planner.js.map +1 -1
  106. package/dist/planner/types.d.ts +6 -6
  107. package/dist/schemas/confirmation-schemas.d.ts +2 -2
  108. package/dist/schemas/settings-schemas.d.ts +196 -0
  109. package/dist/schemas/settings-schemas.js +146 -5
  110. package/dist/schemas/settings-schemas.js.map +1 -1
  111. package/dist/sdk/index.d.ts +118 -2
  112. package/dist/sdk/index.js +146 -4
  113. package/dist/sdk/index.js.map +1 -1
  114. package/dist/sdk/testing.d.ts +182 -0
  115. package/dist/sdk/testing.js +231 -0
  116. package/dist/sdk/testing.js.map +1 -1
  117. package/dist/sdk/version.d.ts +114 -15
  118. package/dist/sdk/version.js +137 -15
  119. package/dist/sdk/version.js.map +1 -1
  120. package/dist/tools/bash.js +54 -9
  121. package/dist/tools/bash.js.map +1 -1
  122. package/dist/tools/registry.d.ts +146 -0
  123. package/dist/tools/registry.js +170 -0
  124. package/dist/tools/registry.js.map +1 -0
  125. package/dist/tools/search.js +12 -2
  126. package/dist/tools/search.js.map +1 -1
  127. package/dist/tools/text-editor.js +84 -26
  128. package/dist/tools/text-editor.js.map +1 -1
  129. package/dist/ui/components/chat-history.js +6 -1
  130. package/dist/ui/components/chat-history.js.map +1 -1
  131. package/dist/ui/components/chat-input.d.ts +2 -1
  132. package/dist/ui/components/chat-input.js +5 -2
  133. package/dist/ui/components/chat-input.js.map +1 -1
  134. package/dist/ui/components/chat-interface.js +187 -5
  135. package/dist/ui/components/chat-interface.js.map +1 -1
  136. package/dist/ui/components/context-breakdown.d.ts +23 -0
  137. package/dist/ui/components/context-breakdown.js +124 -0
  138. package/dist/ui/components/context-breakdown.js.map +1 -0
  139. package/dist/ui/components/keyboard-help.d.ts +17 -0
  140. package/dist/ui/components/keyboard-help.js +116 -0
  141. package/dist/ui/components/keyboard-help.js.map +1 -0
  142. package/dist/ui/components/keyboard-hints.js +2 -2
  143. package/dist/ui/components/keyboard-hints.js.map +1 -1
  144. package/dist/ui/components/quick-actions.js +43 -7
  145. package/dist/ui/components/quick-actions.js.map +1 -1
  146. package/dist/ui/components/status-bar.d.ts +3 -0
  147. package/dist/ui/components/status-bar.js +25 -16
  148. package/dist/ui/components/status-bar.js.map +1 -1
  149. package/dist/ui/components/toast-notification.d.ts +42 -0
  150. package/dist/ui/components/toast-notification.js +30 -2
  151. package/dist/ui/components/toast-notification.js.map +1 -1
  152. package/dist/ui/components/tool-group-display.js +34 -4
  153. package/dist/ui/components/tool-group-display.js.map +1 -1
  154. package/dist/ui/components/welcome-panel.js +2 -2
  155. package/dist/ui/components/welcome-panel.js.map +1 -1
  156. package/dist/ui/hooks/use-enhanced-input.d.ts +9 -1
  157. package/dist/ui/hooks/use-enhanced-input.js +486 -41
  158. package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
  159. package/dist/ui/hooks/use-input-handler.d.ts +11 -1
  160. package/dist/ui/hooks/use-input-handler.js +67 -3
  161. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  162. package/dist/ui/hooks/use-input-history.d.ts +1 -1
  163. package/dist/ui/hooks/use-input-history.js +50 -14
  164. package/dist/ui/hooks/use-input-history.js.map +1 -1
  165. package/dist/ui/utils/bracketed-paste-handler.d.ts +97 -0
  166. package/dist/ui/utils/bracketed-paste-handler.js +322 -0
  167. package/dist/ui/utils/bracketed-paste-handler.js.map +1 -0
  168. package/dist/ui/utils/change-summarizer.js +16 -6
  169. package/dist/ui/utils/change-summarizer.js.map +1 -1
  170. package/dist/ui/utils/tool-grouper.d.ts +10 -1
  171. package/dist/ui/utils/tool-grouper.js +143 -30
  172. package/dist/ui/utils/tool-grouper.js.map +1 -1
  173. package/dist/utils/auto-accept-logger.d.ts +173 -0
  174. package/dist/utils/auto-accept-logger.js +420 -0
  175. package/dist/utils/auto-accept-logger.js.map +1 -0
  176. package/dist/utils/background-task-manager.d.ts +11 -0
  177. package/dist/utils/background-task-manager.js +124 -38
  178. package/dist/utils/background-task-manager.js.map +1 -1
  179. package/dist/utils/confirmation-service.d.ts +1 -0
  180. package/dist/utils/confirmation-service.js +6 -1
  181. package/dist/utils/confirmation-service.js.map +1 -1
  182. package/dist/utils/encryption.d.ts +8 -0
  183. package/dist/utils/encryption.js +44 -27
  184. package/dist/utils/encryption.js.map +1 -1
  185. package/dist/utils/enhanced-error-messages.d.ts +33 -0
  186. package/dist/utils/enhanced-error-messages.js +420 -0
  187. package/dist/utils/enhanced-error-messages.js.map +1 -0
  188. package/dist/utils/error-handler.d.ts +13 -3
  189. package/dist/utils/error-handler.js +16 -4
  190. package/dist/utils/error-handler.js.map +1 -1
  191. package/dist/utils/external-editor.d.ts +47 -0
  192. package/dist/utils/external-editor.js +179 -0
  193. package/dist/utils/external-editor.js.map +1 -0
  194. package/dist/utils/history-migration.d.ts +9 -0
  195. package/dist/utils/history-migration.js +36 -0
  196. package/dist/utils/history-migration.js.map +1 -0
  197. package/dist/utils/paste-utils.js +12 -11
  198. package/dist/utils/paste-utils.js.map +1 -1
  199. package/dist/utils/rate-limiter.js +7 -0
  200. package/dist/utils/rate-limiter.js.map +1 -1
  201. package/dist/utils/safety-rules.d.ts +64 -0
  202. package/dist/utils/safety-rules.js +225 -0
  203. package/dist/utils/safety-rules.js.map +1 -0
  204. package/dist/utils/settings-manager.d.ts +89 -1
  205. package/dist/utils/settings-manager.js +359 -3
  206. package/dist/utils/settings-manager.js.map +1 -1
  207. package/dist/utils/token-counter.d.ts +2 -0
  208. package/dist/utils/token-counter.js +17 -4
  209. package/dist/utils/token-counter.js.map +1 -1
  210. package/dist/utils/version.d.ts +11 -2
  211. package/dist/utils/version.js +54 -21
  212. package/dist/utils/version.js.map +1 -1
  213. package/package.json +2 -1
@@ -88,10 +88,12 @@ export type { ProjectMemory, CacheStats } from '../memory/types.js';
88
88
  export { ProgressReporter, getProgressReporter, ProgressEventType, type ProgressEvent } from './progress-reporter.js';
89
89
  export { UnifiedLogger, getUnifiedLogger, LogLevel, parseLogLevel, getLogLevelName, type LogEntry, type LogSource, type LogFilter } from './unified-logger.js';
90
90
  export { ToolRegistry, getToolRegistry, registerTools, createToolExecutor, type RegisteredTool, type ToolExecutor, type ToolExecutionContext, type ToolRegistrationOptions } from './tool-registry.js';
91
+ export { ToolRegistry as InternalToolRegistry, type ToolDefinition, type ToolCategory } from '../tools/registry.js';
91
92
  export { GLM_MODELS, DEFAULT_MODEL, AGENT_CONFIG, PLANNER_CONFIG, VerbosityLevel, UI_CONFIG, type SupportedModel, } from '../constants.js';
92
- export { SDK_VERSION, SDK_API_VERSION, getSDKVersion, getSDKInfo, } from './version.js';
93
+ export { CLI_VERSION, SDK_VERSION, SDK_API_VERSION, getCLIVersion, getSDKVersion, getSDKInfo, getVersionString, isSDKVersionCompatible, } from './version.js';
93
94
  export { SDKError, SDKErrorCode } from './errors.js';
94
- export { MockAgent, createMockAgent, MockSettingsManager, createMockSettings, } from './testing.js';
95
+ export { MockAgent, createMockAgent, MockSettingsManager, createMockSettings, MockMCPServer, createMockMCPServer, waitForAgent, createMockToolResult, assertToolSuccess, assertToolFailure } from './testing.js';
96
+ export type { MockMCPServerOptions } from './testing.js';
95
97
  /**
96
98
  * Agent configuration options for SDK users
97
99
  *
@@ -115,6 +117,82 @@ export interface AgentOptions {
115
117
  * @default false
116
118
  */
117
119
  debug?: boolean;
120
+ /**
121
+ * Enable automatic cleanup on process exit signals
122
+ *
123
+ * When enabled (default), the SDK automatically registers cleanup handlers for:
124
+ * - process.exit
125
+ * - SIGINT (Ctrl+C)
126
+ * - SIGTERM
127
+ * - SIGHUP
128
+ *
129
+ * Set to false if you want manual control over cleanup (useful for libraries,
130
+ * long-running services, or when you want to manage agent lifecycle yourself).
131
+ *
132
+ * @default true (backward compatible - cleanup enabled by default)
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * // Auto-cleanup enabled (default behavior)
137
+ * const agent = await createAgent();
138
+ *
139
+ * // Manual cleanup control
140
+ * const agent = await createAgent({ autoCleanup: false });
141
+ * // ... use agent ...
142
+ * await agent.dispose(); // Manual cleanup
143
+ * ```
144
+ */
145
+ autoCleanup?: boolean;
146
+ /**
147
+ * Lifecycle hook called before agent disposal
148
+ *
149
+ * This hook is called BEFORE the agent's dispose() method runs, allowing you to:
150
+ * - Save state or checkpoint data
151
+ * - Log metrics or analytics
152
+ * - Notify external systems
153
+ * - Perform custom cleanup
154
+ *
155
+ * Can be async (returns Promise<void>) or sync (returns void).
156
+ *
157
+ * @param None
158
+ * @returns void or Promise<void>
159
+ *
160
+ * @example
161
+ * ```typescript
162
+ * const agent = await createAgent({
163
+ * onDispose: async () => {
164
+ * console.log('Agent disposing, saving state...');
165
+ * await saveAgentState(agent);
166
+ * }
167
+ * });
168
+ * ```
169
+ */
170
+ onDispose?: () => void | Promise<void>;
171
+ /**
172
+ * Error handler called when agent encounters errors
173
+ *
174
+ * This hook is called whenever the agent encounters an error during:
175
+ * - Message processing
176
+ * - Tool execution
177
+ * - Stream handling
178
+ *
179
+ * Use this to implement custom error handling, logging, or recovery logic.
180
+ *
181
+ * @param error - The error that occurred
182
+ * @returns void
183
+ *
184
+ * @example
185
+ * ```typescript
186
+ * const agent = await createAgent({
187
+ * onError: (error) => {
188
+ * console.error('Agent error:', error);
189
+ * metrics.incrementErrorCount();
190
+ * errorLogger.log(error);
191
+ * }
192
+ * });
193
+ * ```
194
+ */
195
+ onError?: (error: Error) => void;
118
196
  }
119
197
  /**
120
198
  * Create a new LLM Agent with configuration
@@ -190,6 +268,44 @@ export declare function createAgent(options?: AgentOptions): Promise<LLMAgent>;
190
268
  * ```
191
269
  */
192
270
  export declare function createSubagent(role: import('../agent/subagent-types.js').SubagentRole, config?: Partial<import('../agent/subagent-types.js').SubagentConfig>): Subagent;
271
+ /**
272
+ * Remove auto-cleanup handlers from an agent
273
+ *
274
+ * Use this function to remove the automatic cleanup handlers registered by createAgent()
275
+ * when autoCleanup was enabled (default). This gives you manual control over when the
276
+ * agent is disposed.
277
+ *
278
+ * **Use Cases:**
279
+ * - Long-running services that manage agent lifecycle manually
280
+ * - Testing scenarios where you want precise control over cleanup
281
+ * - Library code that embeds agents
282
+ *
283
+ * **Note:** Only works if agent was created with autoCleanup: true (default).
284
+ * If autoCleanup was false, this function does nothing.
285
+ *
286
+ * @param agent - The agent instance created with createAgent()
287
+ *
288
+ * @example
289
+ * ```typescript
290
+ * // Create agent with auto-cleanup (default)
291
+ * const agent = await createAgent();
292
+ *
293
+ * // Later, take manual control
294
+ * removeCleanupHandlers(agent);
295
+ *
296
+ * // Now you must manually dispose
297
+ * await agent.dispose();
298
+ * ```
299
+ *
300
+ * @example
301
+ * ```typescript
302
+ * // For manual cleanup from the start, use autoCleanup: false
303
+ * const agent = await createAgent({ autoCleanup: false });
304
+ * // No need to call removeCleanupHandlers
305
+ * await agent.dispose(); // Manual cleanup
306
+ * ```
307
+ */
308
+ export declare function removeCleanupHandlers(agent: LLMAgent): void;
193
309
  /**
194
310
  * Initialize SDK and MCP servers
195
311
  *
package/dist/sdk/index.js CHANGED
@@ -111,17 +111,21 @@ export { ProgressReporter, getProgressReporter, ProgressEventType } from './prog
111
111
  // ============================================================================
112
112
  export { UnifiedLogger, getUnifiedLogger, LogLevel, parseLogLevel, getLogLevelName } from './unified-logger.js';
113
113
  // ============================================================================
114
- // Shared Tool Registry (Phase 3)
114
+ // Shared Tool Registry (Phase 3 - AutomatosX Integration)
115
115
  // ============================================================================
116
116
  export { ToolRegistry, getToolRegistry, registerTools, createToolExecutor } from './tool-registry.js';
117
117
  // ============================================================================
118
+ // Internal Tool Registry (Phase 2 - Task 5)
119
+ // ============================================================================
120
+ export { ToolRegistry as InternalToolRegistry } from '../tools/registry.js';
121
+ // ============================================================================
118
122
  // Constants
119
123
  // ============================================================================
120
124
  export { GLM_MODELS, DEFAULT_MODEL, AGENT_CONFIG, PLANNER_CONFIG, VerbosityLevel, UI_CONFIG, } from '../constants.js';
121
125
  // ============================================================================
122
126
  // SDK Version (Phase 1.5: Best Practices)
123
127
  // ============================================================================
124
- export { SDK_VERSION, SDK_API_VERSION, getSDKVersion, getSDKInfo, } from './version.js';
128
+ export { CLI_VERSION, SDK_VERSION, SDK_API_VERSION, getCLIVersion, getSDKVersion, getSDKInfo, getVersionString, isSDKVersionCompatible, } from './version.js';
125
129
  // ============================================================================
126
130
  // SDK Errors (Phase 1: Best Practices)
127
131
  // ============================================================================
@@ -129,7 +133,7 @@ export { SDKError, SDKErrorCode } from './errors.js';
129
133
  // ============================================================================
130
134
  // Testing Utilities (Phase 1: Best Practices)
131
135
  // ============================================================================
132
- export { MockAgent, createMockAgent, MockSettingsManager, createMockSettings, } from './testing.js';
136
+ export { MockAgent, createMockAgent, MockSettingsManager, createMockSettings, MockMCPServer, createMockMCPServer, waitForAgent, createMockToolResult, assertToolSuccess, assertToolFailure } from './testing.js';
133
137
  // ============================================================================
134
138
  // SDK Helper Functions
135
139
  // ============================================================================
@@ -140,6 +144,9 @@ export { MockAgent, createMockAgent, MockSettingsManager, createMockSettings, }
140
144
  const AgentOptionsSchema = z.object({
141
145
  maxToolRounds: z.number().int().min(1).max(1000).optional(),
142
146
  debug: z.boolean().optional(),
147
+ autoCleanup: z.boolean().optional(),
148
+ onDispose: z.function().args().returns(z.union([z.void(), z.promise(z.void())])).optional(),
149
+ onError: z.function().args(z.instanceof(Error)).returns(z.void()).optional(),
143
150
  }).strict();
144
151
  /**
145
152
  * Create a new LLM Agent with configuration
@@ -220,18 +227,32 @@ export async function createAgent(options = {}) {
220
227
  if (!baseURL) {
221
228
  throw new SDKError(SDKErrorCode.BASE_URL_MISSING, 'No base URL configured. Please run "ax-cli setup" to configure your API provider.');
222
229
  }
223
- const maxToolRounds = validated.maxToolRounds;
230
+ // Apply defaults for optional values
231
+ const maxToolRounds = validated.maxToolRounds; // undefined is valid, LLMAgent uses 400 as default
224
232
  const debug = validated.debug ?? false;
233
+ const autoCleanup = validated.autoCleanup ?? true; // Default: true (backward compatible)
234
+ const onDispose = validated.onDispose;
235
+ const onError = validated.onError;
225
236
  // Debug logging
226
237
  if (debug) {
227
238
  console.error('[AX SDK DEBUG] Creating agent with settings:');
228
239
  console.error('[AX SDK DEBUG] Model:', model);
229
240
  console.error('[AX SDK DEBUG] Base URL:', baseURL);
230
241
  console.error('[AX SDK DEBUG] Max tool rounds:', maxToolRounds ?? 400);
242
+ console.error('[AX SDK DEBUG] Auto cleanup:', autoCleanup);
231
243
  console.error('[AX SDK DEBUG] API key configured:', !!apiKey);
244
+ console.error('[AX SDK DEBUG] Lifecycle hooks:', {
245
+ onDispose: !!onDispose,
246
+ onError: !!onError
247
+ });
232
248
  }
233
249
  // Create agent instance with settings from ax-cli setup
234
250
  const agent = new LLMAgent(apiKey, baseURL, model, maxToolRounds);
251
+ // Store lifecycle hooks on agent
252
+ agent._sdkLifecycleHooks = {
253
+ onDispose,
254
+ onError
255
+ };
235
256
  // Enable debug mode on agent if requested
236
257
  if (debug) {
237
258
  // Add debug event listener
@@ -246,6 +267,76 @@ export async function createAgent(options = {}) {
246
267
  });
247
268
  console.error('[AX SDK DEBUG] Agent created successfully');
248
269
  }
270
+ // Phase 3: Add onError lifecycle hook integration
271
+ if (onError) {
272
+ // Wrap agent's processUserMessage to catch errors
273
+ const originalProcessUserMessage = agent.processUserMessage.bind(agent);
274
+ agent.processUserMessage = async (prompt) => {
275
+ try {
276
+ return await originalProcessUserMessage(prompt);
277
+ }
278
+ catch (error) {
279
+ if (error instanceof Error) {
280
+ onError(error);
281
+ }
282
+ throw error; // Re-throw after calling hook
283
+ }
284
+ };
285
+ // Also listen to stream errors
286
+ agent.on('error', (error) => {
287
+ onError(error);
288
+ });
289
+ }
290
+ // Phase 3: Wrap dispose() to call onDispose hook
291
+ const originalDispose = agent.dispose.bind(agent);
292
+ agent.dispose = async () => {
293
+ try {
294
+ // Call onDispose hook BEFORE actual disposal
295
+ if (onDispose) {
296
+ if (debug) {
297
+ console.error('[AX SDK DEBUG] Calling onDispose hook');
298
+ }
299
+ await onDispose();
300
+ }
301
+ }
302
+ catch (error) {
303
+ if (debug) {
304
+ console.error('[AX SDK DEBUG] Error in onDispose hook:', error);
305
+ }
306
+ // Continue with disposal even if hook fails
307
+ }
308
+ // Call original dispose
309
+ return await originalDispose();
310
+ };
311
+ // Phase 3: Auto-cleanup on process exit (OPTIONAL)
312
+ if (autoCleanup) {
313
+ const cleanupHandler = () => {
314
+ try {
315
+ if (debug) {
316
+ console.error('[AX SDK DEBUG] Auto-cleanup: disposing agent on process exit');
317
+ }
318
+ agent.dispose();
319
+ }
320
+ catch (error) {
321
+ // Ignore errors during emergency cleanup
322
+ if (debug) {
323
+ console.error('[AX SDK DEBUG] Error during auto-cleanup:', error);
324
+ }
325
+ }
326
+ };
327
+ // Register cleanup on various exit signals
328
+ process.once('exit', cleanupHandler);
329
+ process.once('SIGINT', cleanupHandler);
330
+ process.once('SIGTERM', cleanupHandler);
331
+ process.once('SIGHUP', cleanupHandler);
332
+ // Store cleanup handler reference for manual removal if needed
333
+ agent._sdkCleanupHandler = cleanupHandler;
334
+ }
335
+ else {
336
+ if (debug) {
337
+ console.error('[AX SDK DEBUG] Auto-cleanup disabled, manual cleanup required');
338
+ }
339
+ }
249
340
  return agent;
250
341
  }
251
342
  /**
@@ -272,6 +363,57 @@ export async function createAgent(options = {}) {
272
363
  export function createSubagent(role, config) {
273
364
  return new Subagent(role, config);
274
365
  }
366
+ /**
367
+ * Remove auto-cleanup handlers from an agent
368
+ *
369
+ * Use this function to remove the automatic cleanup handlers registered by createAgent()
370
+ * when autoCleanup was enabled (default). This gives you manual control over when the
371
+ * agent is disposed.
372
+ *
373
+ * **Use Cases:**
374
+ * - Long-running services that manage agent lifecycle manually
375
+ * - Testing scenarios where you want precise control over cleanup
376
+ * - Library code that embeds agents
377
+ *
378
+ * **Note:** Only works if agent was created with autoCleanup: true (default).
379
+ * If autoCleanup was false, this function does nothing.
380
+ *
381
+ * @param agent - The agent instance created with createAgent()
382
+ *
383
+ * @example
384
+ * ```typescript
385
+ * // Create agent with auto-cleanup (default)
386
+ * const agent = await createAgent();
387
+ *
388
+ * // Later, take manual control
389
+ * removeCleanupHandlers(agent);
390
+ *
391
+ * // Now you must manually dispose
392
+ * await agent.dispose();
393
+ * ```
394
+ *
395
+ * @example
396
+ * ```typescript
397
+ * // For manual cleanup from the start, use autoCleanup: false
398
+ * const agent = await createAgent({ autoCleanup: false });
399
+ * // No need to call removeCleanupHandlers
400
+ * await agent.dispose(); // Manual cleanup
401
+ * ```
402
+ */
403
+ export function removeCleanupHandlers(agent) {
404
+ const cleanupHandler = agent._sdkCleanupHandler;
405
+ if (!cleanupHandler) {
406
+ // No cleanup handlers registered (autoCleanup was false)
407
+ return;
408
+ }
409
+ // Remove all process event listeners
410
+ process.removeListener('exit', cleanupHandler);
411
+ process.removeListener('SIGINT', cleanupHandler);
412
+ process.removeListener('SIGTERM', cleanupHandler);
413
+ process.removeListener('SIGHUP', cleanupHandler);
414
+ // Clear the reference
415
+ delete agent._sdkCleanupHandler;
416
+ }
275
417
  /**
276
418
  * Initialize SDK and MCP servers
277
419
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
@@ -182,3 +182,185 @@ export declare function createMockSettings(settings?: {
182
182
  baseURL?: string;
183
183
  model?: string;
184
184
  }): MockSettingsManager;
185
+ /**
186
+ * Mock MCP Server Options
187
+ */
188
+ export interface MockMCPServerOptions {
189
+ name: string;
190
+ version?: string;
191
+ tools?: Array<{
192
+ name: string;
193
+ description: string;
194
+ inputSchema: {
195
+ type: 'object';
196
+ properties: Record<string, any>;
197
+ required?: string[];
198
+ };
199
+ handler: (args: any) => Promise<any>;
200
+ }>;
201
+ resources?: Array<{
202
+ uri: string;
203
+ name: string;
204
+ mimeType?: string;
205
+ handler: () => Promise<string>;
206
+ }>;
207
+ prompts?: Array<{
208
+ name: string;
209
+ description?: string;
210
+ handler: (args?: any) => Promise<any>;
211
+ }>;
212
+ }
213
+ /**
214
+ * Mock MCP Server for Testing
215
+ *
216
+ * Simplified MCP server that can be used in tests without needing
217
+ * real MCP server infrastructure.
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * import { createMockMCPServer } from '@defai.digital/ax-cli/sdk/testing';
222
+ *
223
+ * const mockServer = createMockMCPServer({
224
+ * name: 'test-server',
225
+ * tools: [{
226
+ * name: 'test_tool',
227
+ * description: 'A test tool',
228
+ * inputSchema: {
229
+ * type: 'object',
230
+ * properties: { input: { type: 'string' } },
231
+ * required: ['input']
232
+ * },
233
+ * handler: async (args) => ({ result: `Processed: ${args.input}` })
234
+ * }]
235
+ * });
236
+ *
237
+ * await mockServer.connect();
238
+ * const tools = await mockServer.listTools();
239
+ * const result = await mockServer.callTool('test_tool', { input: 'test' });
240
+ * ```
241
+ */
242
+ export declare class MockMCPServer {
243
+ private options;
244
+ private connected;
245
+ constructor(options: MockMCPServerOptions);
246
+ /**
247
+ * Connect the mock server
248
+ */
249
+ connect(): Promise<void>;
250
+ /**
251
+ * Disconnect the mock server
252
+ */
253
+ disconnect(): Promise<void>;
254
+ /**
255
+ * List available tools
256
+ */
257
+ listTools(): Promise<Array<{
258
+ name: string;
259
+ description: string;
260
+ inputSchema: any;
261
+ }>>;
262
+ /**
263
+ * Call a tool on the mock server
264
+ */
265
+ callTool(name: string, args: any): Promise<any>;
266
+ /**
267
+ * List available resources
268
+ */
269
+ listResources(): Promise<Array<{
270
+ uri: string;
271
+ name: string;
272
+ mimeType?: string;
273
+ }>>;
274
+ /**
275
+ * Read a resource from the mock server
276
+ */
277
+ readResource(uri: string): Promise<string>;
278
+ /**
279
+ * List available prompts
280
+ */
281
+ listPrompts(): Promise<Array<{
282
+ name: string;
283
+ description?: string;
284
+ }>>;
285
+ /**
286
+ * Execute a prompt
287
+ */
288
+ executePrompt(name: string, args?: any): Promise<any>;
289
+ /**
290
+ * Check if server is connected
291
+ */
292
+ isConnected(): boolean;
293
+ /**
294
+ * Get server info
295
+ */
296
+ getInfo(): {
297
+ name: string;
298
+ version: string;
299
+ toolCount: number;
300
+ resourceCount: number;
301
+ promptCount: number;
302
+ };
303
+ }
304
+ /**
305
+ * Create a mock MCP server for testing
306
+ *
307
+ * @example
308
+ * ```typescript
309
+ * const mockServer = createMockMCPServer({
310
+ * name: 'test-server',
311
+ * tools: [{
312
+ * name: 'test_tool',
313
+ * description: 'A test tool',
314
+ * inputSchema: {
315
+ * type: 'object',
316
+ * properties: { input: { type: 'string' } },
317
+ * required: ['input']
318
+ * },
319
+ * handler: async (args) => ({ result: `Processed: ${args.input}` })
320
+ * }]
321
+ * });
322
+ *
323
+ * await mockServer.connect();
324
+ * const tools = await mockServer.listTools();
325
+ * const result = await mockServer.callTool('test_tool', { input: 'test' });
326
+ * ```
327
+ */
328
+ export declare function createMockMCPServer(options: MockMCPServerOptions): MockMCPServer;
329
+ /**
330
+ * Wait for agent to complete processing
331
+ *
332
+ * Useful in tests when you need to wait for async operations to complete.
333
+ *
334
+ * @example
335
+ * ```typescript
336
+ * const agent = await createAgent();
337
+ *
338
+ * agent.processUserMessage('Hello');
339
+ *
340
+ * // Wait for agent to finish
341
+ * await waitForAgent(agent, { timeout: 5000 });
342
+ *
343
+ * // Now agent is idle
344
+ * ```
345
+ */
346
+ export declare function waitForAgent(_agent: any, options?: {
347
+ timeout?: number;
348
+ }): Promise<void>;
349
+ /**
350
+ * Create a mock tool result
351
+ */
352
+ export declare function createMockToolResult(success: boolean, output?: string, error?: string): ToolResult;
353
+ /**
354
+ * Assert tool result is successful
355
+ */
356
+ export declare function assertToolSuccess(result: ToolResult): asserts result is ToolResult & {
357
+ success: true;
358
+ output: string;
359
+ };
360
+ /**
361
+ * Assert tool result is a failure
362
+ */
363
+ export declare function assertToolFailure(result: ToolResult): asserts result is ToolResult & {
364
+ success: false;
365
+ error: string;
366
+ };