@defai.digital/ax-cli 3.6.1 → 3.7.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 +129 -16
- package/config-defaults/settings.yaml +24 -0
- package/dist/agent/llm-agent.d.ts +48 -3
- package/dist/agent/llm-agent.js +145 -40
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/subagent.d.ts +6 -0
- package/dist/agent/subagent.js +41 -24
- package/dist/agent/subagent.js.map +1 -1
- package/dist/constants.d.ts +13 -0
- package/dist/constants.js +28 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/mcp/client.js +2 -2
- package/dist/mcp/client.js.map +1 -1
- package/dist/schemas/settings-schemas.d.ts +17 -0
- package/dist/schemas/settings-schemas.js +15 -0
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/sdk/errors.d.ts +93 -0
- package/dist/sdk/errors.js +124 -0
- package/dist/sdk/errors.js.map +1 -0
- package/dist/sdk/index.d.ts +116 -46
- package/dist/sdk/index.js +178 -57
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/progress-reporter.d.ts +111 -0
- package/dist/sdk/progress-reporter.js +178 -0
- package/dist/sdk/progress-reporter.js.map +1 -0
- package/dist/sdk/testing.d.ts +184 -0
- package/dist/sdk/testing.js +291 -0
- package/dist/sdk/testing.js.map +1 -0
- package/dist/sdk/tool-registry.d.ts +163 -0
- package/dist/sdk/tool-registry.js +218 -0
- package/dist/sdk/tool-registry.js.map +1 -0
- package/dist/sdk/unified-logger.d.ts +163 -0
- package/dist/sdk/unified-logger.js +274 -0
- package/dist/sdk/unified-logger.js.map +1 -0
- package/dist/sdk/version.d.ts +59 -0
- package/dist/sdk/version.js +64 -0
- package/dist/sdk/version.js.map +1 -0
- package/dist/tools/bash.d.ts +4 -0
- package/dist/tools/bash.js +22 -2
- package/dist/tools/bash.js.map +1 -1
- package/dist/ui/components/chat-history.d.ts +2 -0
- package/dist/ui/components/chat-history.js +32 -81
- package/dist/ui/components/chat-history.js.map +1 -1
- package/dist/ui/components/chat-interface.js +3 -3
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/status-bar.d.ts +2 -0
- package/dist/ui/components/status-bar.js +33 -9
- package/dist/ui/components/status-bar.js.map +1 -1
- package/dist/ui/components/tool-group-display.d.ts +15 -0
- package/dist/ui/components/tool-group-display.js +91 -0
- package/dist/ui/components/tool-group-display.js.map +1 -0
- package/dist/ui/hooks/use-enhanced-input.js +43 -6
- package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.d.ts +2 -0
- package/dist/ui/hooks/use-input-handler.js +13 -7
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/utils/change-summarizer.d.ts +20 -0
- package/dist/ui/utils/change-summarizer.js +193 -0
- package/dist/ui/utils/change-summarizer.js.map +1 -0
- package/dist/ui/utils/tool-grouper.d.ts +62 -0
- package/dist/ui/utils/tool-grouper.js +224 -0
- package/dist/ui/utils/tool-grouper.js.map +1 -0
- package/dist/utils/config-loader.d.ts +4 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/paste-utils.js +45 -19
- package/dist/utils/paste-utils.js.map +1 -1
- package/dist/utils/token-counter.d.ts +12 -0
- package/dist/utils/token-counter.js +32 -4
- package/dist/utils/token-counter.js.map +1 -1
- package/package.json +2 -2
- package/packages/schemas/package.json +1 -1
- package/.ax-cli/CUSTOM.md +0 -269
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-11e9e0ba-c39d-4fd2-aa77-bc818811c921.json +0 -69
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-2b260b98-b418-4c7c-9694-e2b94967e662.json +0 -24
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-2dd84869-e62d-46c8-9885-7e45f37f36e2.json +0 -69
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-484dc350-353f-4808-9ed1-ebb3cefdab37.json +0 -24
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-74a18b87-6172-4215-962b-44bb9f46a662.json +0 -69
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-7e03601e-e8ab-4cd7-9841-a74b66adf78f.json +0 -69
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-7f9c6562-771f-4fd0-adcf-9e7e9ac34ae8.json +0 -44
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-870a5fb9-6e82-4ff2-8ec8-af4c251cc514.json +0 -44
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-93946601-0e83-456c-ba47-def9713124dd.json +0 -24
- package/.ax-cli/checkpoints/2025-11-20/checkpoint-e1ebe666-4c3a-4367-ba5c-27fe512a9c70.json +0 -24
- package/.ax-cli/checkpoints/2025-11-21/checkpoint-15743e7d-430c-4d76-b6fc-955d7a5c250c.json +0 -44
- package/.ax-cli/checkpoints/2025-11-21/checkpoint-25cf7679-0b3f-4988-83d7-704548fbba91.json +0 -69
- package/.ax-cli/checkpoints/2025-11-21/checkpoint-54aedbac-6db0-464e-8ebb-dbb3979e6dca.json +0 -24
- package/.ax-cli/checkpoints/2025-11-21/checkpoint-7658aed8-fe5d-4222-903f-1a7c63717ea7.json +0 -24
- package/.ax-cli/checkpoints/2025-11-21/checkpoint-c9c13497-40dc-4294-a327-6a5fc854eaa1.json +0 -69
- package/.ax-cli/checkpoints/metadata.json +0 -62
- package/.ax-cli/index.json +0 -44
- package/.ax-cli/memory.json +0 -62
- package/.ax-cli/settings.json +0 -1
- package/ax.config.json +0 -333
- package/dist/agent/chat-history-manager.d.ts +0 -56
- package/dist/agent/chat-history-manager.js +0 -150
- package/dist/agent/chat-history-manager.js.map +0 -1
- package/dist/agent/tool-manager.d.ts +0 -39
- package/dist/agent/tool-manager.js +0 -76
- package/dist/agent/tool-manager.js.map +0 -1
- package/dist/hooks/use-chat-reducer.d.ts +0 -61
- package/dist/hooks/use-chat-reducer.js +0 -118
- package/dist/hooks/use-chat-reducer.js.map +0 -1
- package/dist/hooks/use-enhanced-input.d.ts +0 -40
- package/dist/hooks/use-enhanced-input.js +0 -249
- package/dist/hooks/use-enhanced-input.js.map +0 -1
- package/dist/hooks/use-input-handler.d.ts +0 -46
- package/dist/hooks/use-input-handler.js +0 -1430
- package/dist/hooks/use-input-handler.js.map +0 -1
- package/dist/hooks/use-input-history.d.ts +0 -9
- package/dist/hooks/use-input-history.js +0 -112
- package/dist/hooks/use-input-history.js.map +0 -1
- package/dist/index.js.bak +0 -664
- package/dist/tools/web-search/engines/brave.d.ts +0 -16
- package/dist/tools/web-search/engines/brave.js +0 -99
- package/dist/tools/web-search/engines/brave.js.map +0 -1
- package/dist/tools/web-search/engines/tavily.d.ts +0 -17
- package/dist/tools/web-search/engines/tavily.js +0 -73
- package/dist/tools/web-search/engines/tavily.js.map +0 -1
- package/dist/utils/paste-collapse.d.ts +0 -46
- package/dist/utils/paste-collapse.js +0 -77
- package/dist/utils/paste-collapse.js.map +0 -1
- package/packages/schemas/dist/index.d.ts +0 -14
- package/packages/schemas/dist/index.d.ts.map +0 -1
- package/packages/schemas/dist/index.js +0 -19
- package/packages/schemas/dist/index.js.map +0 -1
- package/packages/schemas/dist/public/core/brand-types.d.ts +0 -308
- package/packages/schemas/dist/public/core/brand-types.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/brand-types.js +0 -243
- package/packages/schemas/dist/public/core/brand-types.js.map +0 -1
- package/packages/schemas/dist/public/core/enums.d.ts +0 -227
- package/packages/schemas/dist/public/core/enums.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/enums.js +0 -222
- package/packages/schemas/dist/public/core/enums.js.map +0 -1
- package/packages/schemas/dist/public/core/id-types.d.ts +0 -286
- package/packages/schemas/dist/public/core/id-types.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/id-types.js +0 -136
- package/packages/schemas/dist/public/core/id-types.js.map +0 -1
package/dist/sdk/index.d.ts
CHANGED
|
@@ -4,27 +4,51 @@
|
|
|
4
4
|
* This SDK allows you to use AX CLI as a library instead of spawning CLI processes.
|
|
5
5
|
* Perfect for integrations, VSCode extensions, and programmatic AI agent usage.
|
|
6
6
|
*
|
|
7
|
+
* ## Quick Start
|
|
8
|
+
*
|
|
9
|
+
* 1. Run `ax-cli setup` to configure credentials (one-time setup)
|
|
10
|
+
* 2. Use the SDK in your code
|
|
11
|
+
*
|
|
7
12
|
* @example
|
|
8
13
|
* ```typescript
|
|
9
|
-
* import { createAgent,
|
|
10
|
-
*
|
|
11
|
-
* // Initialize settings
|
|
12
|
-
* const settings = getSettingsManager();
|
|
13
|
-
* await settings.loadUserSettings();
|
|
14
|
+
* import { createAgent, SDKError, SDKErrorCode } from '@defai.digital/ax-cli/sdk';
|
|
14
15
|
*
|
|
15
|
-
* // Create agent
|
|
16
|
+
* // Create agent (credentials from ax-cli setup)
|
|
16
17
|
* const agent = await createAgent({
|
|
17
|
-
*
|
|
18
|
-
* maxToolRounds: 50
|
|
18
|
+
* maxToolRounds: 50 // Optional: 1-1000, default 400
|
|
19
19
|
* });
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* try {
|
|
22
|
+
* // Listen to streaming responses
|
|
23
|
+
* agent.on('stream', (chunk) => {
|
|
24
|
+
* if (chunk.type === 'content') {
|
|
25
|
+
* console.log(chunk.content);
|
|
26
|
+
* }
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // Process messages
|
|
30
|
+
* const result = await agent.processUserMessage('List all TypeScript files');
|
|
31
|
+
* console.log('Done!', result.length, 'messages');
|
|
32
|
+
* } catch (error) {
|
|
33
|
+
* // Handle structured errors
|
|
34
|
+
* if (SDKError.isSDKError(error)) {
|
|
35
|
+
* if (error.code === SDKErrorCode.SETUP_NOT_RUN) {
|
|
36
|
+
* console.error('Please run: ax-cli setup');
|
|
37
|
+
* }
|
|
38
|
+
* }
|
|
39
|
+
* } finally {
|
|
40
|
+
* // Always cleanup resources
|
|
41
|
+
* await agent.dispose();
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* ## Testing
|
|
46
|
+
*
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { createMockAgent } from '@defai.digital/ax-cli/sdk/testing';
|
|
25
49
|
*
|
|
26
|
-
*
|
|
27
|
-
* const result = await
|
|
50
|
+
* const mockAgent = createMockAgent(['Response 1', 'Response 2']);
|
|
51
|
+
* const result = await mockAgent.processUserMessage('Test');
|
|
28
52
|
* ```
|
|
29
53
|
*
|
|
30
54
|
* @packageDocumentation
|
|
@@ -50,47 +74,97 @@ export { buildSystemPrompt } from '../utils/prompt-builder.js';
|
|
|
50
74
|
export { getUsageTracker } from '../utils/usage-tracker.js';
|
|
51
75
|
export { extractErrorMessage, createErrorMessage, ErrorCategory } from '../utils/error-handler.js';
|
|
52
76
|
export { loadMCPConfig } from '../mcp/config.js';
|
|
53
|
-
export { getMCPManager, initializeMCPServers } from '../llm/tools.js';
|
|
77
|
+
export { getMCPManager, initializeMCPServers, getMcpConnectionCount } from '../llm/tools.js';
|
|
54
78
|
export type { MCPConfig } from '../mcp/config.js';
|
|
55
|
-
export type { MCPServerConfig } from '../mcp/client.js';
|
|
79
|
+
export type { MCPServerConfig, MCPTool } from '../mcp/client.js';
|
|
80
|
+
export { MCPManager } from '../mcp/client.js';
|
|
56
81
|
export { getTaskPlanner, isComplexRequest } from '../planner/index.js';
|
|
57
82
|
export type { TaskPlanner, TaskPlan, TaskPhase, PhaseResult, PlanResult, } from '../planner/index.js';
|
|
58
83
|
export { getCheckpointManager } from '../checkpoint/index.js';
|
|
59
84
|
export type { CheckpointManager, Checkpoint } from '../checkpoint/index.js';
|
|
60
|
-
export {
|
|
85
|
+
export { ContextStore, getContextStore, resetDefaultStore } from '../memory/context-store.js';
|
|
86
|
+
export type { StoreResult } from '../memory/context-store.js';
|
|
87
|
+
export type { ProjectMemory, CacheStats } from '../memory/types.js';
|
|
88
|
+
export { ProgressReporter, getProgressReporter, ProgressEventType, type ProgressEvent } from './progress-reporter.js';
|
|
89
|
+
export { UnifiedLogger, getUnifiedLogger, LogLevel, parseLogLevel, getLogLevelName, type LogEntry, type LogSource, type LogFilter } from './unified-logger.js';
|
|
90
|
+
export { ToolRegistry, getToolRegistry, registerTools, createToolExecutor, type RegisteredTool, type ToolExecutor, type ToolExecutionContext, type ToolRegistrationOptions } from './tool-registry.js';
|
|
91
|
+
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 { SDKError, SDKErrorCode } from './errors.js';
|
|
94
|
+
export { MockAgent, createMockAgent, MockSettingsManager, createMockSettings, } from './testing.js';
|
|
61
95
|
/**
|
|
62
96
|
* Agent configuration options for SDK users
|
|
97
|
+
*
|
|
98
|
+
* SECURITY: Credentials (apiKey, baseURL) must be configured via "ax-cli setup"
|
|
99
|
+
* and are NOT exposed through the SDK API to prevent security vulnerabilities.
|
|
63
100
|
*/
|
|
64
101
|
export interface AgentOptions {
|
|
65
|
-
/**
|
|
66
|
-
apiKey?: string;
|
|
67
|
-
/** Model to use (optional, will use settings if not provided) */
|
|
68
|
-
model?: string;
|
|
69
|
-
/** Base URL for API (optional, will use settings if not provided) */
|
|
70
|
-
baseURL?: string;
|
|
71
|
-
/** Maximum number of tool execution rounds */
|
|
102
|
+
/** Maximum number of tool execution rounds (1-1000, default: 400) */
|
|
72
103
|
maxToolRounds?: number;
|
|
104
|
+
/**
|
|
105
|
+
* Enable debug mode for verbose logging
|
|
106
|
+
*
|
|
107
|
+
* When enabled, the SDK will log detailed information about:
|
|
108
|
+
* - Agent initialization
|
|
109
|
+
* - Message processing
|
|
110
|
+
* - Tool executions
|
|
111
|
+
* - Errors and warnings
|
|
112
|
+
*
|
|
113
|
+
* Debug logs are written to stderr and prefixed with [AX SDK DEBUG].
|
|
114
|
+
*
|
|
115
|
+
* @default false
|
|
116
|
+
*/
|
|
117
|
+
debug?: boolean;
|
|
73
118
|
}
|
|
74
119
|
/**
|
|
75
120
|
* Create a new LLM Agent with configuration
|
|
76
121
|
*
|
|
77
|
-
*
|
|
122
|
+
* SECURITY: All credentials (API key, base URL, model) must be configured
|
|
123
|
+
* via "ax-cli setup" command. This prevents security vulnerabilities where
|
|
124
|
+
* credentials could be exposed in code or logs.
|
|
125
|
+
*
|
|
126
|
+
* @param options - Agent configuration options (non-sensitive only)
|
|
78
127
|
* @returns Configured LLM Agent instance
|
|
128
|
+
* @throws {SDKError} With code SETUP_NOT_RUN if ax-cli setup has not been run
|
|
129
|
+
* @throws {SDKError} With code API_KEY_MISSING if API key not configured
|
|
130
|
+
* @throws {SDKError} With code BASE_URL_MISSING if base URL not configured
|
|
131
|
+
* @throws {SDKError} With code VALIDATION_ERROR if options are invalid
|
|
79
132
|
*
|
|
80
133
|
* @example
|
|
81
134
|
* ```typescript
|
|
135
|
+
* import { createAgent, SDKError, SDKErrorCode } from '@defai.digital/ax-cli/sdk';
|
|
136
|
+
*
|
|
137
|
+
* // First, user must run: ax-cli setup
|
|
138
|
+
* // Then use SDK with settings from setup:
|
|
139
|
+
*
|
|
82
140
|
* const agent = await createAgent({
|
|
83
|
-
*
|
|
84
|
-
* maxToolRounds: 50
|
|
141
|
+
* maxToolRounds: 50 // Optional: 1-1000, default 400
|
|
85
142
|
* });
|
|
86
143
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
144
|
+
* try {
|
|
145
|
+
* agent.on('stream', (chunk) => {
|
|
146
|
+
* if (chunk.type === 'content') {
|
|
147
|
+
* console.log(chunk.content);
|
|
148
|
+
* }
|
|
149
|
+
* });
|
|
150
|
+
*
|
|
151
|
+
* const result = await agent.processUserMessage('Analyze this codebase');
|
|
152
|
+
* console.log(result);
|
|
153
|
+
* } catch (error) {
|
|
154
|
+
* if (SDKError.isSDKError(error)) {
|
|
155
|
+
* switch (error.code) {
|
|
156
|
+
* case SDKErrorCode.SETUP_NOT_RUN:
|
|
157
|
+
* console.error('Run ax-cli setup first');
|
|
158
|
+
* break;
|
|
159
|
+
* case SDKErrorCode.API_KEY_MISSING:
|
|
160
|
+
* console.error('API key not configured');
|
|
161
|
+
* break;
|
|
162
|
+
* }
|
|
90
163
|
* }
|
|
91
|
-
* }
|
|
92
|
-
*
|
|
93
|
-
*
|
|
164
|
+
* } finally {
|
|
165
|
+
* // Always cleanup resources
|
|
166
|
+
* await agent.dispose();
|
|
167
|
+
* }
|
|
94
168
|
* ```
|
|
95
169
|
*/
|
|
96
170
|
export declare function createAgent(options?: AgentOptions): Promise<LLMAgent>;
|
|
@@ -117,22 +191,18 @@ export declare function createAgent(options?: AgentOptions): Promise<LLMAgent>;
|
|
|
117
191
|
*/
|
|
118
192
|
export declare function createSubagent(role: import('../agent/subagent-types.js').SubagentRole, config?: Partial<import('../agent/subagent-types.js').SubagentConfig>): Subagent;
|
|
119
193
|
/**
|
|
120
|
-
* Initialize SDK
|
|
194
|
+
* Initialize SDK and MCP servers
|
|
121
195
|
*
|
|
122
|
-
*
|
|
196
|
+
* SECURITY: This function does NOT accept credentials. All credentials must be
|
|
197
|
+
* configured via "ax-cli setup" command. This function only initializes MCP servers.
|
|
123
198
|
*
|
|
124
199
|
* @example
|
|
125
200
|
* ```typescript
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* model: 'glm-4.6',
|
|
129
|
-
* baseURL: 'https://api.example.com/v1'
|
|
130
|
-
* });
|
|
201
|
+
* // Initialize MCP servers from ax-cli settings
|
|
202
|
+
* await initializeSDK();
|
|
131
203
|
* ```
|
|
204
|
+
*
|
|
205
|
+
* @deprecated Most SDK users don't need to call this - createAgent() handles initialization.
|
|
206
|
+
* Only call this if you need to pre-initialize MCP servers.
|
|
132
207
|
*/
|
|
133
|
-
export declare function initializeSDK(
|
|
134
|
-
apiKey?: string;
|
|
135
|
-
model?: string;
|
|
136
|
-
baseURL?: string;
|
|
137
|
-
mcpServers?: Record<string, any>;
|
|
138
|
-
}): Promise<void>;
|
|
208
|
+
export declare function initializeSDK(): Promise<void>;
|
package/dist/sdk/index.js
CHANGED
|
@@ -4,27 +4,51 @@
|
|
|
4
4
|
* This SDK allows you to use AX CLI as a library instead of spawning CLI processes.
|
|
5
5
|
* Perfect for integrations, VSCode extensions, and programmatic AI agent usage.
|
|
6
6
|
*
|
|
7
|
+
* ## Quick Start
|
|
8
|
+
*
|
|
9
|
+
* 1. Run `ax-cli setup` to configure credentials (one-time setup)
|
|
10
|
+
* 2. Use the SDK in your code
|
|
11
|
+
*
|
|
7
12
|
* @example
|
|
8
13
|
* ```typescript
|
|
9
|
-
* import { createAgent,
|
|
10
|
-
*
|
|
11
|
-
* // Initialize settings
|
|
12
|
-
* const settings = getSettingsManager();
|
|
13
|
-
* await settings.loadUserSettings();
|
|
14
|
+
* import { createAgent, SDKError, SDKErrorCode } from '@defai.digital/ax-cli/sdk';
|
|
14
15
|
*
|
|
15
|
-
* // Create agent
|
|
16
|
+
* // Create agent (credentials from ax-cli setup)
|
|
16
17
|
* const agent = await createAgent({
|
|
17
|
-
*
|
|
18
|
-
* maxToolRounds: 50
|
|
18
|
+
* maxToolRounds: 50 // Optional: 1-1000, default 400
|
|
19
19
|
* });
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* try {
|
|
22
|
+
* // Listen to streaming responses
|
|
23
|
+
* agent.on('stream', (chunk) => {
|
|
24
|
+
* if (chunk.type === 'content') {
|
|
25
|
+
* console.log(chunk.content);
|
|
26
|
+
* }
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // Process messages
|
|
30
|
+
* const result = await agent.processUserMessage('List all TypeScript files');
|
|
31
|
+
* console.log('Done!', result.length, 'messages');
|
|
32
|
+
* } catch (error) {
|
|
33
|
+
* // Handle structured errors
|
|
34
|
+
* if (SDKError.isSDKError(error)) {
|
|
35
|
+
* if (error.code === SDKErrorCode.SETUP_NOT_RUN) {
|
|
36
|
+
* console.error('Please run: ax-cli setup');
|
|
37
|
+
* }
|
|
38
|
+
* }
|
|
39
|
+
* } finally {
|
|
40
|
+
* // Always cleanup resources
|
|
41
|
+
* await agent.dispose();
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* ## Testing
|
|
46
|
+
*
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { createMockAgent } from '@defai.digital/ax-cli/sdk/testing';
|
|
25
49
|
*
|
|
26
|
-
*
|
|
27
|
-
* const result = await
|
|
50
|
+
* const mockAgent = createMockAgent(['Response 1', 'Response 2']);
|
|
51
|
+
* const result = await mockAgent.processUserMessage('Test');
|
|
28
52
|
* ```
|
|
29
53
|
*
|
|
30
54
|
* @packageDocumentation
|
|
@@ -41,6 +65,8 @@ import { LLMAgent } from '../agent/llm-agent.js';
|
|
|
41
65
|
import { Subagent } from '../agent/subagent.js';
|
|
42
66
|
import { getSettingsManager } from '../utils/settings-manager.js';
|
|
43
67
|
import { initializeMCPServers } from '../llm/tools.js';
|
|
68
|
+
import { z } from 'zod';
|
|
69
|
+
import { SDKError, SDKErrorCode } from './errors.js';
|
|
44
70
|
// ============================================================================
|
|
45
71
|
// LLM Client
|
|
46
72
|
// ============================================================================
|
|
@@ -62,7 +88,8 @@ export { extractErrorMessage, createErrorMessage, ErrorCategory } from '../utils
|
|
|
62
88
|
// MCP Integration
|
|
63
89
|
// ============================================================================
|
|
64
90
|
export { loadMCPConfig } from '../mcp/config.js';
|
|
65
|
-
export { getMCPManager, initializeMCPServers } from '../llm/tools.js';
|
|
91
|
+
export { getMCPManager, initializeMCPServers, getMcpConnectionCount } from '../llm/tools.js';
|
|
92
|
+
export { MCPManager } from '../mcp/client.js';
|
|
66
93
|
// ============================================================================
|
|
67
94
|
// Planning System
|
|
68
95
|
// ============================================================================
|
|
@@ -72,47 +99,153 @@ export { getTaskPlanner, isComplexRequest } from '../planner/index.js';
|
|
|
72
99
|
// ============================================================================
|
|
73
100
|
export { getCheckpointManager } from '../checkpoint/index.js';
|
|
74
101
|
// ============================================================================
|
|
102
|
+
// Memory and Context Cache
|
|
103
|
+
// ============================================================================
|
|
104
|
+
export { ContextStore, getContextStore, resetDefaultStore } from '../memory/context-store.js';
|
|
105
|
+
// ============================================================================
|
|
106
|
+
// Progress Reporting
|
|
107
|
+
// ============================================================================
|
|
108
|
+
export { ProgressReporter, getProgressReporter, ProgressEventType } from './progress-reporter.js';
|
|
109
|
+
// ============================================================================
|
|
110
|
+
// Unified Logging (Phase 3)
|
|
111
|
+
// ============================================================================
|
|
112
|
+
export { UnifiedLogger, getUnifiedLogger, LogLevel, parseLogLevel, getLogLevelName } from './unified-logger.js';
|
|
113
|
+
// ============================================================================
|
|
114
|
+
// Shared Tool Registry (Phase 3)
|
|
115
|
+
// ============================================================================
|
|
116
|
+
export { ToolRegistry, getToolRegistry, registerTools, createToolExecutor } from './tool-registry.js';
|
|
117
|
+
// ============================================================================
|
|
75
118
|
// Constants
|
|
76
119
|
// ============================================================================
|
|
77
|
-
export { GLM_MODELS, DEFAULT_MODEL, AGENT_CONFIG, PLANNER_CONFIG, } from '../constants.js';
|
|
120
|
+
export { GLM_MODELS, DEFAULT_MODEL, AGENT_CONFIG, PLANNER_CONFIG, VerbosityLevel, UI_CONFIG, } from '../constants.js';
|
|
121
|
+
// ============================================================================
|
|
122
|
+
// SDK Version (Phase 1.5: Best Practices)
|
|
123
|
+
// ============================================================================
|
|
124
|
+
export { SDK_VERSION, SDK_API_VERSION, getSDKVersion, getSDKInfo, } from './version.js';
|
|
125
|
+
// ============================================================================
|
|
126
|
+
// SDK Errors (Phase 1: Best Practices)
|
|
127
|
+
// ============================================================================
|
|
128
|
+
export { SDKError, SDKErrorCode } from './errors.js';
|
|
129
|
+
// ============================================================================
|
|
130
|
+
// Testing Utilities (Phase 1: Best Practices)
|
|
131
|
+
// ============================================================================
|
|
132
|
+
export { MockAgent, createMockAgent, MockSettingsManager, createMockSettings, } from './testing.js';
|
|
133
|
+
// ============================================================================
|
|
134
|
+
// SDK Helper Functions
|
|
135
|
+
// ============================================================================
|
|
136
|
+
/**
|
|
137
|
+
* Validation schema for agent options
|
|
138
|
+
* @internal
|
|
139
|
+
*/
|
|
140
|
+
const AgentOptionsSchema = z.object({
|
|
141
|
+
maxToolRounds: z.number().int().min(1).max(1000).optional(),
|
|
142
|
+
debug: z.boolean().optional(),
|
|
143
|
+
}).strict();
|
|
78
144
|
/**
|
|
79
145
|
* Create a new LLM Agent with configuration
|
|
80
146
|
*
|
|
81
|
-
*
|
|
147
|
+
* SECURITY: All credentials (API key, base URL, model) must be configured
|
|
148
|
+
* via "ax-cli setup" command. This prevents security vulnerabilities where
|
|
149
|
+
* credentials could be exposed in code or logs.
|
|
150
|
+
*
|
|
151
|
+
* @param options - Agent configuration options (non-sensitive only)
|
|
82
152
|
* @returns Configured LLM Agent instance
|
|
153
|
+
* @throws {SDKError} With code SETUP_NOT_RUN if ax-cli setup has not been run
|
|
154
|
+
* @throws {SDKError} With code API_KEY_MISSING if API key not configured
|
|
155
|
+
* @throws {SDKError} With code BASE_URL_MISSING if base URL not configured
|
|
156
|
+
* @throws {SDKError} With code VALIDATION_ERROR if options are invalid
|
|
83
157
|
*
|
|
84
158
|
* @example
|
|
85
159
|
* ```typescript
|
|
160
|
+
* import { createAgent, SDKError, SDKErrorCode } from '@defai.digital/ax-cli/sdk';
|
|
161
|
+
*
|
|
162
|
+
* // First, user must run: ax-cli setup
|
|
163
|
+
* // Then use SDK with settings from setup:
|
|
164
|
+
*
|
|
86
165
|
* const agent = await createAgent({
|
|
87
|
-
*
|
|
88
|
-
* maxToolRounds: 50
|
|
166
|
+
* maxToolRounds: 50 // Optional: 1-1000, default 400
|
|
89
167
|
* });
|
|
90
168
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
169
|
+
* try {
|
|
170
|
+
* agent.on('stream', (chunk) => {
|
|
171
|
+
* if (chunk.type === 'content') {
|
|
172
|
+
* console.log(chunk.content);
|
|
173
|
+
* }
|
|
174
|
+
* });
|
|
96
175
|
*
|
|
97
|
-
*
|
|
176
|
+
* const result = await agent.processUserMessage('Analyze this codebase');
|
|
177
|
+
* console.log(result);
|
|
178
|
+
* } catch (error) {
|
|
179
|
+
* if (SDKError.isSDKError(error)) {
|
|
180
|
+
* switch (error.code) {
|
|
181
|
+
* case SDKErrorCode.SETUP_NOT_RUN:
|
|
182
|
+
* console.error('Run ax-cli setup first');
|
|
183
|
+
* break;
|
|
184
|
+
* case SDKErrorCode.API_KEY_MISSING:
|
|
185
|
+
* console.error('API key not configured');
|
|
186
|
+
* break;
|
|
187
|
+
* }
|
|
188
|
+
* }
|
|
189
|
+
* } finally {
|
|
190
|
+
* // Always cleanup resources
|
|
191
|
+
* await agent.dispose();
|
|
192
|
+
* }
|
|
98
193
|
* ```
|
|
99
194
|
*/
|
|
100
195
|
export async function createAgent(options = {}) {
|
|
196
|
+
// Validate input options
|
|
197
|
+
let validated;
|
|
198
|
+
try {
|
|
199
|
+
validated = AgentOptionsSchema.parse(options);
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
throw new SDKError(SDKErrorCode.VALIDATION_ERROR, `Invalid agent options: ${error instanceof Error ? error.message : 'Unknown validation error'}`, error instanceof Error ? error : undefined);
|
|
203
|
+
}
|
|
101
204
|
const settingsManager = getSettingsManager();
|
|
102
|
-
// Load settings
|
|
205
|
+
// Load settings from ax-cli setup
|
|
103
206
|
try {
|
|
104
207
|
settingsManager.loadUserSettings();
|
|
105
208
|
}
|
|
106
|
-
catch {
|
|
107
|
-
|
|
209
|
+
catch (error) {
|
|
210
|
+
throw new SDKError(SDKErrorCode.SETUP_NOT_RUN, 'ax-cli setup has not been run. Please run "ax-cli setup" to configure your API key, model, and base URL before using the SDK.', error instanceof Error ? error : undefined);
|
|
211
|
+
}
|
|
212
|
+
// Get configuration ONLY from settings (security requirement)
|
|
213
|
+
const apiKey = settingsManager.getApiKey();
|
|
214
|
+
const model = settingsManager.getCurrentModel();
|
|
215
|
+
const baseURL = settingsManager.getBaseURL();
|
|
216
|
+
// Validate required settings exist
|
|
217
|
+
if (!apiKey) {
|
|
218
|
+
throw new SDKError(SDKErrorCode.API_KEY_MISSING, 'No API key configured. Please run "ax-cli setup" to configure your credentials.');
|
|
219
|
+
}
|
|
220
|
+
if (!baseURL) {
|
|
221
|
+
throw new SDKError(SDKErrorCode.BASE_URL_MISSING, 'No base URL configured. Please run "ax-cli setup" to configure your API provider.');
|
|
108
222
|
}
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
223
|
+
const maxToolRounds = validated.maxToolRounds;
|
|
224
|
+
const debug = validated.debug ?? false;
|
|
225
|
+
// Debug logging
|
|
226
|
+
if (debug) {
|
|
227
|
+
console.error('[AX SDK DEBUG] Creating agent with settings:');
|
|
228
|
+
console.error('[AX SDK DEBUG] Model:', model);
|
|
229
|
+
console.error('[AX SDK DEBUG] Base URL:', baseURL);
|
|
230
|
+
console.error('[AX SDK DEBUG] Max tool rounds:', maxToolRounds ?? 400);
|
|
231
|
+
console.error('[AX SDK DEBUG] API key configured:', !!apiKey);
|
|
232
|
+
}
|
|
233
|
+
// Create agent instance with settings from ax-cli setup
|
|
115
234
|
const agent = new LLMAgent(apiKey, baseURL, model, maxToolRounds);
|
|
235
|
+
// Enable debug mode on agent if requested
|
|
236
|
+
if (debug) {
|
|
237
|
+
// Add debug event listener
|
|
238
|
+
agent.on('stream', (chunk) => {
|
|
239
|
+
if (chunk.type === 'tool_calls' && chunk.toolCalls) {
|
|
240
|
+
const toolNames = chunk.toolCalls.map((tc) => tc.function.name).join(', ');
|
|
241
|
+
console.error('[AX SDK DEBUG] Tool calls:', toolNames);
|
|
242
|
+
}
|
|
243
|
+
else if (chunk.type === 'tool_result' && chunk.toolResult) {
|
|
244
|
+
console.error('[AX SDK DEBUG] Tool result:', chunk.toolResult.success ? 'success' : 'failed');
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
console.error('[AX SDK DEBUG] Agent created successfully');
|
|
248
|
+
}
|
|
116
249
|
return agent;
|
|
117
250
|
}
|
|
118
251
|
/**
|
|
@@ -140,34 +273,22 @@ export function createSubagent(role, config) {
|
|
|
140
273
|
return new Subagent(role, config);
|
|
141
274
|
}
|
|
142
275
|
/**
|
|
143
|
-
* Initialize SDK
|
|
276
|
+
* Initialize SDK and MCP servers
|
|
144
277
|
*
|
|
145
|
-
*
|
|
278
|
+
* SECURITY: This function does NOT accept credentials. All credentials must be
|
|
279
|
+
* configured via "ax-cli setup" command. This function only initializes MCP servers.
|
|
146
280
|
*
|
|
147
281
|
* @example
|
|
148
282
|
* ```typescript
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
* model: 'glm-4.6',
|
|
152
|
-
* baseURL: 'https://api.example.com/v1'
|
|
153
|
-
* });
|
|
283
|
+
* // Initialize MCP servers from ax-cli settings
|
|
284
|
+
* await initializeSDK();
|
|
154
285
|
* ```
|
|
286
|
+
*
|
|
287
|
+
* @deprecated Most SDK users don't need to call this - createAgent() handles initialization.
|
|
288
|
+
* Only call this if you need to pre-initialize MCP servers.
|
|
155
289
|
*/
|
|
156
|
-
export async function initializeSDK(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
if (config.apiKey) {
|
|
160
|
-
settingsManager.updateUserSetting('apiKey', config.apiKey);
|
|
161
|
-
}
|
|
162
|
-
if (config.model) {
|
|
163
|
-
settingsManager.updateUserSetting('defaultModel', config.model);
|
|
164
|
-
}
|
|
165
|
-
if (config.baseURL) {
|
|
166
|
-
settingsManager.updateUserSetting('baseURL', config.baseURL);
|
|
167
|
-
}
|
|
168
|
-
// Initialize MCP servers if provided
|
|
169
|
-
if (config.mcpServers) {
|
|
170
|
-
await initializeMCPServers();
|
|
171
|
-
}
|
|
290
|
+
export async function initializeSDK() {
|
|
291
|
+
// Initialize MCP servers from settings configured via ax-cli setup
|
|
292
|
+
await initializeMCPServers();
|
|
172
293
|
}
|
|
173
294
|
//# sourceMappingURL=index.js.map
|
package/dist/sdk/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress Reporter - Shared event system for AX <-> ax-cli integration
|
|
3
|
+
*
|
|
4
|
+
* Allows AutomatosX agents to report progress to ax-cli UI in real-time.
|
|
5
|
+
* This creates a unified progress visibility system across both applications.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
/**
|
|
9
|
+
* Progress event types
|
|
10
|
+
*/
|
|
11
|
+
export declare enum ProgressEventType {
|
|
12
|
+
/** Agent started a new task */
|
|
13
|
+
TASK_START = "task_start",
|
|
14
|
+
/** Agent made progress on current task */
|
|
15
|
+
TASK_PROGRESS = "task_progress",
|
|
16
|
+
/** Agent completed a task */
|
|
17
|
+
TASK_COMPLETE = "task_complete",
|
|
18
|
+
/** Agent encountered an error */
|
|
19
|
+
TASK_ERROR = "task_error",
|
|
20
|
+
/** Tool execution started */
|
|
21
|
+
TOOL_START = "tool_start",
|
|
22
|
+
/** Tool execution completed */
|
|
23
|
+
TOOL_COMPLETE = "tool_complete",
|
|
24
|
+
/** General status update */
|
|
25
|
+
STATUS_UPDATE = "status_update"
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Progress event data
|
|
29
|
+
*/
|
|
30
|
+
export interface ProgressEvent {
|
|
31
|
+
/** Event type */
|
|
32
|
+
type: ProgressEventType;
|
|
33
|
+
/** Agent identifier (e.g., "ax-agent-1", "ax-cli-main") */
|
|
34
|
+
agentId: string;
|
|
35
|
+
/** Task or tool name */
|
|
36
|
+
name: string;
|
|
37
|
+
/** Optional message */
|
|
38
|
+
message?: string;
|
|
39
|
+
/** Progress percentage (0-100) */
|
|
40
|
+
progress?: number;
|
|
41
|
+
/** Additional metadata */
|
|
42
|
+
metadata?: Record<string, unknown>;
|
|
43
|
+
/** Timestamp */
|
|
44
|
+
timestamp: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Progress Reporter - Singleton event emitter for progress tracking
|
|
48
|
+
*/
|
|
49
|
+
export declare class ProgressReporter extends EventEmitter {
|
|
50
|
+
private static instance;
|
|
51
|
+
private constructor();
|
|
52
|
+
/**
|
|
53
|
+
* Get the singleton instance
|
|
54
|
+
*/
|
|
55
|
+
static getInstance(): ProgressReporter;
|
|
56
|
+
/**
|
|
57
|
+
* Reset the singleton (for testing)
|
|
58
|
+
*/
|
|
59
|
+
static reset(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Report a progress event
|
|
62
|
+
*/
|
|
63
|
+
report(event: Omit<ProgressEvent, 'timestamp'>): void;
|
|
64
|
+
/**
|
|
65
|
+
* Report task start
|
|
66
|
+
*/
|
|
67
|
+
taskStart(agentId: string, name: string, message?: string): void;
|
|
68
|
+
/**
|
|
69
|
+
* Report task progress
|
|
70
|
+
*/
|
|
71
|
+
taskProgress(agentId: string, name: string, progress: number, message?: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* Report task completion
|
|
74
|
+
*/
|
|
75
|
+
taskComplete(agentId: string, name: string, message?: string): void;
|
|
76
|
+
/**
|
|
77
|
+
* Report task error
|
|
78
|
+
*/
|
|
79
|
+
taskError(agentId: string, name: string, error: string): void;
|
|
80
|
+
/**
|
|
81
|
+
* Report tool execution start
|
|
82
|
+
*/
|
|
83
|
+
toolStart(agentId: string, toolName: string, message?: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* Report tool execution completion
|
|
86
|
+
*/
|
|
87
|
+
toolComplete(agentId: string, toolName: string, message?: string): void;
|
|
88
|
+
/**
|
|
89
|
+
* Report general status update
|
|
90
|
+
*/
|
|
91
|
+
statusUpdate(agentId: string, message: string, metadata?: Record<string, unknown>): void;
|
|
92
|
+
/**
|
|
93
|
+
* Subscribe to all progress events
|
|
94
|
+
*/
|
|
95
|
+
onProgress(callback: (event: ProgressEvent) => void): () => void;
|
|
96
|
+
/**
|
|
97
|
+
* Subscribe to specific event type
|
|
98
|
+
*/
|
|
99
|
+
onEvent(type: ProgressEventType, callback: (event: ProgressEvent) => void): () => void;
|
|
100
|
+
/**
|
|
101
|
+
* Get statistics about event emission
|
|
102
|
+
*/
|
|
103
|
+
getStats(): {
|
|
104
|
+
listenerCount: number;
|
|
105
|
+
maxListeners: number;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get the global progress reporter instance
|
|
110
|
+
*/
|
|
111
|
+
export declare function getProgressReporter(): ProgressReporter;
|