@defai.digital/ax-cli 3.7.1 → 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.
- package/README.md +143 -56
- package/dist/agent/context-manager.d.ts +15 -1
- package/dist/agent/context-manager.js +50 -19
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/dependency-resolver.js +13 -7
- package/dist/agent/dependency-resolver.js.map +1 -1
- package/dist/agent/llm-agent.d.ts +35 -0
- package/dist/agent/llm-agent.js +137 -4
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/status-reporter.d.ts +114 -0
- package/dist/agent/status-reporter.js +335 -0
- package/dist/agent/status-reporter.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +8 -2
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -1
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +9 -3
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +1 -1
- package/dist/analyzers/git/churn-calculator.d.ts +1 -0
- package/dist/analyzers/git/churn-calculator.js +25 -6
- package/dist/analyzers/git/churn-calculator.js.map +1 -1
- package/dist/analyzers/git/hotspot-detector.js +2 -2
- package/dist/analyzers/git/hotspot-detector.js.map +1 -1
- package/dist/analyzers/metrics/metrics-analyzer.js +1 -1
- package/dist/analyzers/metrics/metrics-analyzer.js.map +1 -1
- package/dist/analyzers/security/security-analyzer.js +1 -1
- package/dist/analyzers/security/security-analyzer.js.map +1 -1
- package/dist/checkpoint/manager.d.ts +1 -0
- package/dist/checkpoint/manager.js +49 -9
- package/dist/checkpoint/manager.js.map +1 -1
- package/dist/checkpoint/storage.js +2 -2
- package/dist/checkpoint/storage.js.map +1 -1
- package/dist/commands/mcp-migrate.d.ts +9 -0
- package/dist/commands/mcp-migrate.js +172 -0
- package/dist/commands/mcp-migrate.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.js +211 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/vscode.d.ts +7 -0
- package/dist/commands/vscode.js +363 -0
- package/dist/commands/vscode.js.map +1 -0
- package/dist/index.js +79 -30
- package/dist/index.js.map +1 -1
- package/dist/llm/client.js +22 -4
- package/dist/llm/client.js.map +1 -1
- package/dist/mcp/automatosx-loader.d.ts +84 -0
- package/dist/mcp/automatosx-loader.js +238 -0
- package/dist/mcp/automatosx-loader.js.map +1 -0
- package/dist/mcp/client-mutex-patch.d.ts +36 -0
- package/dist/mcp/client-mutex-patch.js +75 -0
- package/dist/mcp/client-mutex-patch.js.map +1 -0
- package/dist/mcp/client-v2.d.ts +229 -0
- package/dist/mcp/client-v2.js +740 -0
- package/dist/mcp/client-v2.js.map +1 -0
- package/dist/mcp/client.d.ts +111 -13
- package/dist/mcp/client.js +168 -253
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/config-detector-v2.d.ts +83 -0
- package/dist/mcp/config-detector-v2.js +328 -0
- package/dist/mcp/config-detector-v2.js.map +1 -0
- package/dist/mcp/config-detector.d.ts +90 -0
- package/dist/mcp/config-detector.js +242 -0
- package/dist/mcp/config-detector.js.map +1 -0
- package/dist/mcp/config-migrator-v2.d.ts +89 -0
- package/dist/mcp/config-migrator-v2.js +288 -0
- package/dist/mcp/config-migrator-v2.js.map +1 -0
- package/dist/mcp/config-migrator.d.ts +63 -0
- package/dist/mcp/config-migrator.js +269 -0
- package/dist/mcp/config-migrator.js.map +1 -0
- package/dist/mcp/config-v2.d.ts +106 -0
- package/dist/mcp/config-v2.js +417 -0
- package/dist/mcp/config-v2.js.map +1 -0
- package/dist/mcp/config.d.ts +12 -1
- package/dist/mcp/config.js +95 -10
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/error-formatter.d.ts +46 -0
- package/dist/mcp/error-formatter.js +244 -0
- package/dist/mcp/error-formatter.js.map +1 -0
- package/dist/mcp/health.d.ts +5 -0
- package/dist/mcp/health.js +22 -2
- package/dist/mcp/health.js.map +1 -1
- package/dist/mcp/invariants.d.ts +141 -0
- package/dist/mcp/invariants.js +243 -0
- package/dist/mcp/invariants.js.map +1 -0
- package/dist/mcp/mutex-safe.d.ts +153 -0
- package/dist/mcp/mutex-safe.js +260 -0
- package/dist/mcp/mutex-safe.js.map +1 -0
- package/dist/mcp/mutex.d.ts +73 -0
- package/dist/mcp/mutex.js +130 -0
- package/dist/mcp/mutex.js.map +1 -0
- package/dist/mcp/reconnection.d.ts +4 -0
- package/dist/mcp/reconnection.js +15 -0
- package/dist/mcp/reconnection.js.map +1 -1
- package/dist/mcp/transports-v2.d.ts +152 -0
- package/dist/mcp/transports-v2.js +481 -0
- package/dist/mcp/transports-v2.js.map +1 -0
- package/dist/mcp/type-safety.d.ts +231 -0
- package/dist/mcp/type-safety.js +273 -0
- package/dist/mcp/type-safety.js.map +1 -0
- package/dist/planner/task-planner.js +13 -0
- package/dist/planner/task-planner.js.map +1 -1
- package/dist/planner/types.d.ts +6 -6
- package/dist/schemas/confirmation-schemas.d.ts +2 -2
- package/dist/schemas/settings-schemas.d.ts +196 -0
- package/dist/schemas/settings-schemas.js +146 -5
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/sdk/index.d.ts +118 -2
- package/dist/sdk/index.js +146 -4
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/testing.d.ts +182 -0
- package/dist/sdk/testing.js +231 -0
- package/dist/sdk/testing.js.map +1 -1
- package/dist/sdk/version.d.ts +114 -15
- package/dist/sdk/version.js +137 -15
- package/dist/sdk/version.js.map +1 -1
- package/dist/tools/bash.js +54 -9
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/registry.d.ts +146 -0
- package/dist/tools/registry.js +170 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search.js +12 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.js +84 -26
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/ui/components/chat-history.js +6 -1
- package/dist/ui/components/chat-history.js.map +1 -1
- package/dist/ui/components/chat-input.d.ts +2 -1
- package/dist/ui/components/chat-input.js +5 -2
- package/dist/ui/components/chat-input.js.map +1 -1
- package/dist/ui/components/chat-interface.js +187 -5
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/context-breakdown.d.ts +23 -0
- package/dist/ui/components/context-breakdown.js +124 -0
- package/dist/ui/components/context-breakdown.js.map +1 -0
- package/dist/ui/components/keyboard-help.d.ts +17 -0
- package/dist/ui/components/keyboard-help.js +116 -0
- package/dist/ui/components/keyboard-help.js.map +1 -0
- package/dist/ui/components/keyboard-hints.js +2 -2
- package/dist/ui/components/keyboard-hints.js.map +1 -1
- package/dist/ui/components/quick-actions.js +43 -7
- package/dist/ui/components/quick-actions.js.map +1 -1
- package/dist/ui/components/status-bar.d.ts +3 -0
- package/dist/ui/components/status-bar.js +25 -16
- package/dist/ui/components/status-bar.js.map +1 -1
- package/dist/ui/components/toast-notification.d.ts +42 -0
- package/dist/ui/components/toast-notification.js +30 -2
- package/dist/ui/components/toast-notification.js.map +1 -1
- package/dist/ui/components/tool-group-display.js +34 -4
- package/dist/ui/components/tool-group-display.js.map +1 -1
- package/dist/ui/components/welcome-panel.js +2 -2
- package/dist/ui/components/welcome-panel.js.map +1 -1
- package/dist/ui/hooks/use-enhanced-input.d.ts +9 -1
- package/dist/ui/hooks/use-enhanced-input.js +486 -41
- package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.d.ts +11 -1
- package/dist/ui/hooks/use-input-handler.js +67 -3
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/hooks/use-input-history.d.ts +1 -1
- package/dist/ui/hooks/use-input-history.js +50 -14
- package/dist/ui/hooks/use-input-history.js.map +1 -1
- package/dist/ui/utils/bracketed-paste-handler.d.ts +97 -0
- package/dist/ui/utils/bracketed-paste-handler.js +322 -0
- package/dist/ui/utils/bracketed-paste-handler.js.map +1 -0
- package/dist/ui/utils/change-summarizer.js +16 -6
- package/dist/ui/utils/change-summarizer.js.map +1 -1
- package/dist/ui/utils/tool-grouper.d.ts +10 -1
- package/dist/ui/utils/tool-grouper.js +143 -30
- package/dist/ui/utils/tool-grouper.js.map +1 -1
- package/dist/utils/auto-accept-logger.d.ts +173 -0
- package/dist/utils/auto-accept-logger.js +420 -0
- package/dist/utils/auto-accept-logger.js.map +1 -0
- package/dist/utils/background-task-manager.d.ts +11 -0
- package/dist/utils/background-task-manager.js +124 -38
- package/dist/utils/background-task-manager.js.map +1 -1
- package/dist/utils/confirmation-service.d.ts +1 -0
- package/dist/utils/confirmation-service.js +6 -1
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/encryption.d.ts +8 -0
- package/dist/utils/encryption.js +44 -27
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/enhanced-error-messages.d.ts +33 -0
- package/dist/utils/enhanced-error-messages.js +420 -0
- package/dist/utils/enhanced-error-messages.js.map +1 -0
- package/dist/utils/error-handler.d.ts +13 -3
- package/dist/utils/error-handler.js +16 -4
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/external-editor.d.ts +47 -0
- package/dist/utils/external-editor.js +179 -0
- package/dist/utils/external-editor.js.map +1 -0
- package/dist/utils/history-migration.d.ts +9 -0
- package/dist/utils/history-migration.js +36 -0
- package/dist/utils/history-migration.js.map +1 -0
- package/dist/utils/paste-utils.js +12 -11
- package/dist/utils/paste-utils.js.map +1 -1
- package/dist/utils/rate-limiter.js +7 -0
- package/dist/utils/rate-limiter.js.map +1 -1
- package/dist/utils/safety-rules.d.ts +64 -0
- package/dist/utils/safety-rules.js +225 -0
- package/dist/utils/safety-rules.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +89 -1
- package/dist/utils/settings-manager.js +359 -3
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/token-counter.d.ts +2 -0
- package/dist/utils/token-counter.js +17 -4
- package/dist/utils/token-counter.js.map +1 -1
- package/dist/utils/version.d.ts +11 -2
- package/dist/utils/version.js +54 -21
- package/dist/utils/version.js.map +1 -1
- package/package.json +2 -1
package/dist/sdk/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
*
|
package/dist/sdk/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErD,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAwB7C,OAAO,EACL,YAAY,EACZ,aAAa,GAKd,MAAM,4BAA4B,CAAC;AAEpC,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGlE,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEnG,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG7F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AASvE,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAI9F,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAEhC,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,eAAe,EAIhB,MAAM,qBAAqB,CAAC;AAE7B,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/testing.d.ts
CHANGED
|
@@ -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
|
+
};
|