@defai.digital/ax-cli 3.2.0 → 3.4.0
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/.ax-cli/memory.json +8 -1
- package/README.md +118 -2
- package/config/models.yaml +13 -0
- package/config/settings.yaml +6 -0
- package/dist/agent/context-manager.d.ts +5 -5
- package/dist/agent/context-manager.js +19 -9
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/dependency-resolver.js +2 -1
- package/dist/agent/dependency-resolver.js.map +1 -1
- package/dist/agent/llm-agent.d.ts +3 -2
- package/dist/agent/llm-agent.js +64 -58
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/subagent.js +2 -1
- package/dist/agent/subagent.js.map +1 -1
- package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.d.ts +29 -0
- package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js +103 -0
- package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js.map +1 -0
- package/dist/analyzers/architecture/architecture-analyzer.d.ts +58 -0
- package/dist/analyzers/architecture/architecture-analyzer.js +276 -0
- package/dist/analyzers/architecture/architecture-analyzer.js.map +1 -0
- package/dist/analyzers/architecture/index.d.ts +12 -0
- package/dist/analyzers/architecture/index.js +14 -0
- package/dist/analyzers/architecture/index.js.map +1 -0
- package/dist/analyzers/architecture/pattern-detectors/base-detector.d.ts +27 -0
- package/dist/analyzers/architecture/pattern-detectors/base-detector.js +31 -0
- package/dist/analyzers/architecture/pattern-detectors/base-detector.js.map +1 -0
- package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.d.ts +11 -0
- package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js +57 -0
- package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js.map +1 -0
- package/dist/analyzers/architecture/pattern-detectors/mvc-detector.d.ts +11 -0
- package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js +43 -0
- package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js.map +1 -0
- package/dist/analyzers/architecture/pattern-detectors/repository-detector.d.ts +11 -0
- package/dist/analyzers/architecture/pattern-detectors/repository-detector.js +49 -0
- package/dist/analyzers/architecture/pattern-detectors/repository-detector.js.map +1 -0
- package/dist/analyzers/architecture/project-structure-scanner.d.ts +54 -0
- package/dist/analyzers/architecture/project-structure-scanner.js +200 -0
- package/dist/analyzers/architecture/project-structure-scanner.js.map +1 -0
- package/dist/analyzers/best-practices/base-rule.d.ts +45 -0
- package/dist/analyzers/best-practices/base-rule.js +45 -0
- package/dist/analyzers/best-practices/base-rule.js.map +1 -0
- package/dist/analyzers/best-practices/best-practice-validator.d.ts +35 -0
- package/dist/analyzers/best-practices/best-practice-validator.js +181 -0
- package/dist/analyzers/best-practices/best-practice-validator.js.map +1 -0
- package/dist/analyzers/best-practices/rules/index.d.ts +7 -0
- package/dist/analyzers/best-practices/rules/index.js +56 -0
- package/dist/analyzers/best-practices/rules/index.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/consistent-naming.d.ts +17 -0
- package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js +41 -0
- package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/function-complexity.d.ts +27 -0
- package/dist/analyzers/best-practices/rules/typescript/function-complexity.js +76 -0
- package/dist/analyzers/best-practices/rules/typescript/function-complexity.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/index.d.ts +15 -0
- package/dist/analyzers/best-practices/rules/typescript/index.js +16 -0
- package/dist/analyzers/best-practices/rules/typescript/index.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/max-file-length.d.ts +18 -0
- package/dist/analyzers/best-practices/rules/typescript/max-file-length.js +25 -0
- package/dist/analyzers/best-practices/rules/typescript/max-file-length.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/no-any-type.d.ts +17 -0
- package/dist/analyzers/best-practices/rules/typescript/no-any-type.js +27 -0
- package/dist/analyzers/best-practices/rules/typescript/no-any-type.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.d.ts +18 -0
- package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js +39 -0
- package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.d.ts +17 -0
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +32 -0
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.d.ts +17 -0
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +36 -0
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.d.ts +17 -0
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +33 -0
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.d.ts +17 -0
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +34 -0
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.d.ts +17 -0
- package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js +27 -0
- package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js.map +1 -0
- package/dist/analyzers/best-practices/types.d.ts +86 -0
- package/dist/analyzers/best-practices/types.js +7 -0
- package/dist/analyzers/best-practices/types.js.map +1 -0
- package/dist/analyzers/cache/analysis-cache.d.ts +41 -0
- package/dist/analyzers/cache/analysis-cache.js +84 -0
- package/dist/analyzers/cache/analysis-cache.js.map +1 -0
- package/dist/analyzers/errors.d.ts +51 -0
- package/dist/analyzers/errors.js +79 -0
- package/dist/analyzers/errors.js.map +1 -0
- package/dist/commands/doctor.js +3 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/frontend.d.ts +9 -0
- package/dist/commands/frontend.js +645 -0
- package/dist/commands/frontend.js.map +1 -0
- package/dist/commands/mcp.js +652 -3
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/models.js +2 -2
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/setup.js +100 -41
- package/dist/commands/setup.js.map +1 -1
- package/dist/constants.d.ts +4 -0
- package/dist/constants.js +4 -0
- package/dist/constants.js.map +1 -1
- package/dist/hooks/use-enhanced-input.js +16 -3
- package/dist/hooks/use-enhanced-input.js.map +1 -1
- package/dist/hooks/use-input-handler.js +9 -4
- package/dist/hooks/use-input-handler.js.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/llm/client.d.ts +1 -0
- package/dist/llm/tools.js +86 -0
- package/dist/llm/tools.js.map +1 -1
- package/dist/llm/types.d.ts +49 -22
- package/dist/llm/types.js +12 -8
- package/dist/llm/types.js.map +1 -1
- package/dist/mcp/client.d.ts +5 -0
- package/dist/mcp/client.js +55 -0
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/config.d.ts +1 -1
- package/dist/mcp/config.js +2 -2
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/health.d.ts +120 -0
- package/dist/mcp/health.js +267 -0
- package/dist/mcp/health.js.map +1 -0
- package/dist/mcp/reconnection.d.ts +93 -0
- package/dist/mcp/reconnection.js +216 -0
- package/dist/mcp/reconnection.js.map +1 -0
- package/dist/mcp/registry.d.ts +71 -0
- package/dist/mcp/registry.js +257 -0
- package/dist/mcp/registry.js.map +1 -0
- package/dist/mcp/resources.d.ts +53 -0
- package/dist/mcp/resources.js +135 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/templates.d.ts +52 -0
- package/dist/mcp/templates.js +624 -0
- package/dist/mcp/templates.js.map +1 -0
- package/dist/mcp/validation.d.ts +25 -0
- package/dist/mcp/validation.js +209 -0
- package/dist/mcp/validation.js.map +1 -0
- package/dist/memory/context-generator.js +1 -2
- package/dist/memory/context-generator.js.map +1 -1
- package/dist/planner/types.d.ts +2 -2
- package/dist/schemas/api-schemas.d.ts +2 -1
- package/dist/schemas/api-schemas.js +6 -4
- package/dist/schemas/api-schemas.js.map +1 -1
- package/dist/schemas/index.d.ts +4 -4
- package/dist/schemas/tool-schemas.d.ts +2 -2
- package/dist/schemas/yaml-schemas.d.ts +15 -0
- package/dist/schemas/yaml-schemas.js +3 -0
- package/dist/schemas/yaml-schemas.js.map +1 -1
- package/dist/sdk/index.d.ts +138 -0
- package/dist/sdk/index.js +173 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/types.d.ts +53 -0
- package/dist/sdk/types.js +8 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/tools/analysis-tools/architecture-tool.d.ts +46 -0
- package/dist/tools/analysis-tools/architecture-tool.js +124 -0
- package/dist/tools/analysis-tools/architecture-tool.js.map +1 -0
- package/dist/tools/analysis-tools/validation-tool.d.ts +51 -0
- package/dist/tools/analysis-tools/validation-tool.js +121 -0
- package/dist/tools/analysis-tools/validation-tool.js.map +1 -0
- package/dist/tools/bash.js +25 -10
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/web-search/cache.d.ts +62 -0
- package/dist/tools/web-search/cache.js +105 -0
- package/dist/tools/web-search/cache.js.map +1 -0
- package/dist/tools/web-search/engines/brave.d.ts +16 -0
- package/dist/tools/web-search/engines/brave.js +99 -0
- package/dist/tools/web-search/engines/brave.js.map +1 -0
- package/dist/tools/web-search/engines/crates.d.ts +19 -0
- package/dist/tools/web-search/engines/crates.js +87 -0
- package/dist/tools/web-search/engines/crates.js.map +1 -0
- package/dist/tools/web-search/engines/npm.d.ts +18 -0
- package/dist/tools/web-search/engines/npm.js +86 -0
- package/dist/tools/web-search/engines/npm.js.map +1 -0
- package/dist/tools/web-search/engines/pypi.d.ts +18 -0
- package/dist/tools/web-search/engines/pypi.js +75 -0
- package/dist/tools/web-search/engines/pypi.js.map +1 -0
- package/dist/tools/web-search/engines/tavily.d.ts +17 -0
- package/dist/tools/web-search/engines/tavily.js +73 -0
- package/dist/tools/web-search/engines/tavily.js.map +1 -0
- package/dist/tools/web-search/index.d.ts +13 -0
- package/dist/tools/web-search/index.js +13 -0
- package/dist/tools/web-search/index.js.map +1 -0
- package/dist/tools/web-search/router.d.ts +36 -0
- package/dist/tools/web-search/router.js +280 -0
- package/dist/tools/web-search/router.js.map +1 -0
- package/dist/tools/web-search/types.d.ts +45 -0
- package/dist/tools/web-search/types.js +6 -0
- package/dist/tools/web-search/types.js.map +1 -0
- package/dist/tools/web-search/web-search-tool.d.ts +51 -0
- package/dist/tools/web-search/web-search-tool.js +256 -0
- package/dist/tools/web-search/web-search-tool.js.map +1 -0
- package/dist/types/analysis.d.ts +177 -0
- package/dist/types/analysis.js +8 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/ui/components/api-key-input.js +2 -2
- package/dist/ui/components/api-key-input.js.map +1 -1
- package/dist/ui/components/chat-history.js +14 -7
- package/dist/ui/components/chat-history.js.map +1 -1
- package/dist/ui/components/chat-input.js +12 -7
- package/dist/ui/components/chat-input.js.map +1 -1
- package/dist/ui/components/chat-interface.js +75 -54
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/keyboard-hints.js +5 -4
- package/dist/ui/components/keyboard-hints.js.map +1 -1
- package/dist/ui/components/quick-actions.js +1 -0
- package/dist/ui/components/quick-actions.js.map +1 -1
- package/dist/ui/components/reasoning-display.js +14 -4
- package/dist/ui/components/reasoning-display.js.map +1 -1
- package/dist/ui/components/status-bar.d.ts +1 -0
- package/dist/ui/components/status-bar.js +37 -39
- package/dist/ui/components/status-bar.js.map +1 -1
- package/dist/ui/components/toast-notification.d.ts +29 -0
- package/dist/ui/components/toast-notification.js +17 -3
- package/dist/ui/components/toast-notification.js.map +1 -1
- package/dist/ui/components/welcome-panel.d.ts +1 -0
- package/dist/ui/components/welcome-panel.js +106 -4
- package/dist/ui/components/welcome-panel.js.map +1 -1
- package/dist/utils/analysis-logger.d.ts +47 -0
- package/dist/utils/analysis-logger.js +70 -0
- package/dist/utils/analysis-logger.js.map +1 -0
- package/dist/utils/automatosx-detector.d.ts +19 -0
- package/dist/utils/automatosx-detector.js +52 -0
- package/dist/utils/automatosx-detector.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/confirmation-service.js +1 -1
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/init-previewer.js +26 -4
- package/dist/utils/init-previewer.js.map +1 -1
- package/dist/utils/setup-validator.js +1 -0
- package/dist/utils/setup-validator.js.map +1 -1
- package/dist/utils/text-utils.d.ts +1 -0
- package/dist/utils/text-utils.js +12 -0
- package/dist/utils/text-utils.js.map +1 -1
- package/package.json +19 -4
- package/vitest.config.ts +1 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AX CLI SDK - Programmatic API for AX CLI
|
|
3
|
+
*
|
|
4
|
+
* This SDK allows you to use AX CLI as a library instead of spawning CLI processes.
|
|
5
|
+
* Perfect for integrations, VSCode extensions, and programmatic AI agent usage.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { createAgent, getSettingsManager } from '@defai.digital/ax-cli/sdk';
|
|
10
|
+
*
|
|
11
|
+
* // Initialize settings
|
|
12
|
+
* const settings = getSettingsManager();
|
|
13
|
+
* await settings.loadUserSettings();
|
|
14
|
+
*
|
|
15
|
+
* // Create agent
|
|
16
|
+
* const agent = await createAgent({
|
|
17
|
+
* model: 'glm-4.6',
|
|
18
|
+
* maxToolRounds: 50
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Listen to streaming responses
|
|
22
|
+
* agent.on('stream', (chunk) => {
|
|
23
|
+
* console.log(chunk.content);
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* // Process messages
|
|
27
|
+
* const result = await agent.processUserMessage('List all TypeScript files');
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @packageDocumentation
|
|
31
|
+
*/
|
|
32
|
+
export { LLMAgent } from '../agent/llm-agent.js';
|
|
33
|
+
export { Subagent } from '../agent/subagent.js';
|
|
34
|
+
export { SubagentOrchestrator } from '../agent/subagent-orchestrator.js';
|
|
35
|
+
export { ContextManager } from '../agent/context-manager.js';
|
|
36
|
+
import { LLMAgent } from '../agent/llm-agent.js';
|
|
37
|
+
import { Subagent } from '../agent/subagent.js';
|
|
38
|
+
export { LLMClient } from '../llm/client.js';
|
|
39
|
+
export type { LLMMessage, LLMTool, LLMToolCall, LLMResponse, SearchParameters, SearchOptions, } from '../llm/client.js';
|
|
40
|
+
export type { ChatOptions, ThinkingConfig, SamplingConfig, GLM46StreamChunk, } from '../llm/types.js';
|
|
41
|
+
export type { ChatEntry, StreamingChunk } from '../agent/llm-agent.js';
|
|
42
|
+
export type { ToolResult, Tool, EditorCommand, AgentState } from '../types/index.js';
|
|
43
|
+
export { SubagentRole, SubagentState, type SubagentConfig, type SubagentTask, type SubagentResult, type SubagentStatus, } from '../agent/subagent-types.js';
|
|
44
|
+
export { getSettingsManager } from '../utils/settings-manager.js';
|
|
45
|
+
export type { SettingsManager } from '../utils/settings-manager.js';
|
|
46
|
+
export { createTokenCounter } from '../utils/token-counter.js';
|
|
47
|
+
export type { TokenCounter } from '../utils/token-counter.js';
|
|
48
|
+
export { loadCustomInstructions } from '../utils/custom-instructions.js';
|
|
49
|
+
export { buildSystemPrompt } from '../utils/prompt-builder.js';
|
|
50
|
+
export { getUsageTracker } from '../utils/usage-tracker.js';
|
|
51
|
+
export { extractErrorMessage, createErrorMessage, ErrorCategory } from '../utils/error-handler.js';
|
|
52
|
+
export { loadMCPConfig } from '../mcp/config.js';
|
|
53
|
+
export { getMCPManager, initializeMCPServers } from '../llm/tools.js';
|
|
54
|
+
export type { MCPConfig } from '../mcp/config.js';
|
|
55
|
+
export type { MCPServerConfig } from '../mcp/client.js';
|
|
56
|
+
export { getTaskPlanner, isComplexRequest } from '../planner/index.js';
|
|
57
|
+
export type { TaskPlanner, TaskPlan, TaskPhase, PhaseResult, PlanResult, } from '../planner/index.js';
|
|
58
|
+
export { getCheckpointManager } from '../checkpoint/index.js';
|
|
59
|
+
export type { CheckpointManager, Checkpoint } from '../checkpoint/index.js';
|
|
60
|
+
export { GLM_MODELS, DEFAULT_MODEL, AGENT_CONFIG, PLANNER_CONFIG, type SupportedModel, } from '../constants.js';
|
|
61
|
+
/**
|
|
62
|
+
* Agent configuration options for SDK users
|
|
63
|
+
*/
|
|
64
|
+
export interface AgentOptions {
|
|
65
|
+
/** API key (optional, will use settings if not provided) */
|
|
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 */
|
|
72
|
+
maxToolRounds?: number;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create a new LLM Agent with configuration
|
|
76
|
+
*
|
|
77
|
+
* @param options - Agent configuration options
|
|
78
|
+
* @returns Configured LLM Agent instance
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const agent = await createAgent({
|
|
83
|
+
* model: 'glm-4.6',
|
|
84
|
+
* maxToolRounds: 50
|
|
85
|
+
* });
|
|
86
|
+
*
|
|
87
|
+
* agent.on('stream', (chunk) => {
|
|
88
|
+
* if (chunk.type === 'content') {
|
|
89
|
+
* console.log(chunk.content);
|
|
90
|
+
* }
|
|
91
|
+
* });
|
|
92
|
+
*
|
|
93
|
+
* const result = await agent.processUserMessage('Analyze this codebase');
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export declare function createAgent(options?: AgentOptions): Promise<LLMAgent>;
|
|
97
|
+
/**
|
|
98
|
+
* Create a specialized subagent for specific tasks
|
|
99
|
+
*
|
|
100
|
+
* @param role - The role/specialty of the subagent
|
|
101
|
+
* @param config - Optional configuration overrides
|
|
102
|
+
* @returns Configured Subagent instance
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const testAgent = createSubagent(SubagentRole.TESTING, {
|
|
107
|
+
* maxToolRounds: 20,
|
|
108
|
+
* priority: 2
|
|
109
|
+
* });
|
|
110
|
+
*
|
|
111
|
+
* const result = await testAgent.execute({
|
|
112
|
+
* id: 'task-1',
|
|
113
|
+
* description: 'Write unit tests for auth module',
|
|
114
|
+
* context: { files: ['src/auth.ts'] }
|
|
115
|
+
* });
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export declare function createSubagent(role: import('../agent/subagent-types.js').SubagentRole, config?: Partial<import('../agent/subagent-types.js').SubagentConfig>): Subagent;
|
|
119
|
+
/**
|
|
120
|
+
* Initialize SDK with configuration
|
|
121
|
+
*
|
|
122
|
+
* @param config - SDK initialization configuration
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* await initializeSDK({
|
|
127
|
+
* apiKey: 'your-api-key',
|
|
128
|
+
* model: 'glm-4.6',
|
|
129
|
+
* baseURL: 'https://api.example.com/v1'
|
|
130
|
+
* });
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export declare function initializeSDK(config: {
|
|
134
|
+
apiKey?: string;
|
|
135
|
+
model?: string;
|
|
136
|
+
baseURL?: string;
|
|
137
|
+
mcpServers?: Record<string, any>;
|
|
138
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AX CLI SDK - Programmatic API for AX CLI
|
|
3
|
+
*
|
|
4
|
+
* This SDK allows you to use AX CLI as a library instead of spawning CLI processes.
|
|
5
|
+
* Perfect for integrations, VSCode extensions, and programmatic AI agent usage.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { createAgent, getSettingsManager } from '@defai.digital/ax-cli/sdk';
|
|
10
|
+
*
|
|
11
|
+
* // Initialize settings
|
|
12
|
+
* const settings = getSettingsManager();
|
|
13
|
+
* await settings.loadUserSettings();
|
|
14
|
+
*
|
|
15
|
+
* // Create agent
|
|
16
|
+
* const agent = await createAgent({
|
|
17
|
+
* model: 'glm-4.6',
|
|
18
|
+
* maxToolRounds: 50
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Listen to streaming responses
|
|
22
|
+
* agent.on('stream', (chunk) => {
|
|
23
|
+
* console.log(chunk.content);
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* // Process messages
|
|
27
|
+
* const result = await agent.processUserMessage('List all TypeScript files');
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @packageDocumentation
|
|
31
|
+
*/
|
|
32
|
+
// ============================================================================
|
|
33
|
+
// Core Agent Classes
|
|
34
|
+
// ============================================================================
|
|
35
|
+
export { LLMAgent } from '../agent/llm-agent.js';
|
|
36
|
+
export { Subagent } from '../agent/subagent.js';
|
|
37
|
+
export { SubagentOrchestrator } from '../agent/subagent-orchestrator.js';
|
|
38
|
+
export { ContextManager } from '../agent/context-manager.js';
|
|
39
|
+
// Internal imports for SDK functions
|
|
40
|
+
import { LLMAgent } from '../agent/llm-agent.js';
|
|
41
|
+
import { Subagent } from '../agent/subagent.js';
|
|
42
|
+
import { getSettingsManager } from '../utils/settings-manager.js';
|
|
43
|
+
import { initializeMCPServers } from '../llm/tools.js';
|
|
44
|
+
// ============================================================================
|
|
45
|
+
// LLM Client
|
|
46
|
+
// ============================================================================
|
|
47
|
+
export { LLMClient } from '../llm/client.js';
|
|
48
|
+
export { SubagentRole, SubagentState, } from '../agent/subagent-types.js';
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Settings and Configuration
|
|
51
|
+
// ============================================================================
|
|
52
|
+
export { getSettingsManager } from '../utils/settings-manager.js';
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// Utilities
|
|
55
|
+
// ============================================================================
|
|
56
|
+
export { createTokenCounter } from '../utils/token-counter.js';
|
|
57
|
+
export { loadCustomInstructions } from '../utils/custom-instructions.js';
|
|
58
|
+
export { buildSystemPrompt } from '../utils/prompt-builder.js';
|
|
59
|
+
export { getUsageTracker } from '../utils/usage-tracker.js';
|
|
60
|
+
export { extractErrorMessage, createErrorMessage, ErrorCategory } from '../utils/error-handler.js';
|
|
61
|
+
// ============================================================================
|
|
62
|
+
// MCP Integration
|
|
63
|
+
// ============================================================================
|
|
64
|
+
export { loadMCPConfig } from '../mcp/config.js';
|
|
65
|
+
export { getMCPManager, initializeMCPServers } from '../llm/tools.js';
|
|
66
|
+
// ============================================================================
|
|
67
|
+
// Planning System
|
|
68
|
+
// ============================================================================
|
|
69
|
+
export { getTaskPlanner, isComplexRequest } from '../planner/index.js';
|
|
70
|
+
// ============================================================================
|
|
71
|
+
// Checkpoint System
|
|
72
|
+
// ============================================================================
|
|
73
|
+
export { getCheckpointManager } from '../checkpoint/index.js';
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Constants
|
|
76
|
+
// ============================================================================
|
|
77
|
+
export { GLM_MODELS, DEFAULT_MODEL, AGENT_CONFIG, PLANNER_CONFIG, } from '../constants.js';
|
|
78
|
+
/**
|
|
79
|
+
* Create a new LLM Agent with configuration
|
|
80
|
+
*
|
|
81
|
+
* @param options - Agent configuration options
|
|
82
|
+
* @returns Configured LLM Agent instance
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const agent = await createAgent({
|
|
87
|
+
* model: 'glm-4.6',
|
|
88
|
+
* maxToolRounds: 50
|
|
89
|
+
* });
|
|
90
|
+
*
|
|
91
|
+
* agent.on('stream', (chunk) => {
|
|
92
|
+
* if (chunk.type === 'content') {
|
|
93
|
+
* console.log(chunk.content);
|
|
94
|
+
* }
|
|
95
|
+
* });
|
|
96
|
+
*
|
|
97
|
+
* const result = await agent.processUserMessage('Analyze this codebase');
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export async function createAgent(options = {}) {
|
|
101
|
+
const settingsManager = getSettingsManager();
|
|
102
|
+
// Load settings if not already loaded
|
|
103
|
+
try {
|
|
104
|
+
settingsManager.loadUserSettings();
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Settings may not exist yet, that's okay
|
|
108
|
+
}
|
|
109
|
+
// Get configuration (use options or settings)
|
|
110
|
+
const apiKey = options.apiKey || settingsManager.getApiKey() || '';
|
|
111
|
+
const model = options.model || settingsManager.getCurrentModel();
|
|
112
|
+
const baseURL = options.baseURL || settingsManager.getBaseURL();
|
|
113
|
+
const maxToolRounds = options.maxToolRounds;
|
|
114
|
+
// Create agent instance
|
|
115
|
+
const agent = new LLMAgent(apiKey, baseURL, model, maxToolRounds);
|
|
116
|
+
return agent;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a specialized subagent for specific tasks
|
|
120
|
+
*
|
|
121
|
+
* @param role - The role/specialty of the subagent
|
|
122
|
+
* @param config - Optional configuration overrides
|
|
123
|
+
* @returns Configured Subagent instance
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* const testAgent = createSubagent(SubagentRole.TESTING, {
|
|
128
|
+
* maxToolRounds: 20,
|
|
129
|
+
* priority: 2
|
|
130
|
+
* });
|
|
131
|
+
*
|
|
132
|
+
* const result = await testAgent.execute({
|
|
133
|
+
* id: 'task-1',
|
|
134
|
+
* description: 'Write unit tests for auth module',
|
|
135
|
+
* context: { files: ['src/auth.ts'] }
|
|
136
|
+
* });
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
export function createSubagent(role, config) {
|
|
140
|
+
return new Subagent(role, config);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Initialize SDK with configuration
|
|
144
|
+
*
|
|
145
|
+
* @param config - SDK initialization configuration
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* await initializeSDK({
|
|
150
|
+
* apiKey: 'your-api-key',
|
|
151
|
+
* model: 'glm-4.6',
|
|
152
|
+
* baseURL: 'https://api.example.com/v1'
|
|
153
|
+
* });
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export async function initializeSDK(config) {
|
|
157
|
+
const settingsManager = getSettingsManager();
|
|
158
|
+
// Update settings
|
|
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
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AX CLI SDK - Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Consolidated type definitions for SDK consumers.
|
|
5
|
+
* All types are re-exported from core modules for convenience.
|
|
6
|
+
*/
|
|
7
|
+
export type { ChatEntry, StreamingChunk } from '../agent/llm-agent.js';
|
|
8
|
+
export type { AgentState } from '../types/index.js';
|
|
9
|
+
export { SubagentRole, SubagentState, type SubagentConfig, type SubagentTask, type SubagentResult, type SubagentStatus, } from '../agent/subagent-types.js';
|
|
10
|
+
export type { LLMMessage, LLMTool, LLMToolCall, LLMResponse, SearchParameters, SearchOptions, } from '../llm/client.js';
|
|
11
|
+
export type { ChatOptions, ThinkingConfig, SamplingConfig, GLM46StreamChunk, } from '../llm/types.js';
|
|
12
|
+
export type { ToolResult, Tool, EditorCommand } from '../types/index.js';
|
|
13
|
+
export type { UserSettings, ProjectSettings, } from '../schemas/settings-schemas.js';
|
|
14
|
+
export type { MCPConfig } from '../mcp/config.js';
|
|
15
|
+
export type { MCPServerConfig } from '../mcp/client.js';
|
|
16
|
+
export type { TaskPlan, TaskPhase, PhaseResult, PlanResult, PhaseStatus, } from '../planner/types.js';
|
|
17
|
+
export type { Checkpoint, CheckpointMetadata, CheckpointFilter, } from '../checkpoint/types.js';
|
|
18
|
+
import type { StreamingChunk } from '../agent/llm-agent.js';
|
|
19
|
+
import type { LLMToolCall } from '../llm/client.js';
|
|
20
|
+
import type { ToolResult } from '../types/index.js';
|
|
21
|
+
import type { SubagentState, SubagentResult } from '../agent/subagent-types.js';
|
|
22
|
+
/**
|
|
23
|
+
* Events emitted by LLMAgent
|
|
24
|
+
*/
|
|
25
|
+
export interface AgentEvents {
|
|
26
|
+
/** Streaming content chunk */
|
|
27
|
+
stream: (chunk: StreamingChunk) => void;
|
|
28
|
+
/** Tool execution started */
|
|
29
|
+
tool_start: (toolCall: LLMToolCall) => void;
|
|
30
|
+
/** Tool execution completed */
|
|
31
|
+
tool_complete: (toolCall: LLMToolCall, result: ToolResult) => void;
|
|
32
|
+
/** Token count updated */
|
|
33
|
+
token_count: (count: number) => void;
|
|
34
|
+
/** Error occurred */
|
|
35
|
+
error: (error: Error) => void;
|
|
36
|
+
/** Agent status changed */
|
|
37
|
+
status: (status: 'idle' | 'processing' | 'waiting' | 'error') => void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Events emitted by Subagent
|
|
41
|
+
*/
|
|
42
|
+
export interface SubagentEvents {
|
|
43
|
+
/** Subagent state changed */
|
|
44
|
+
state_change: (state: SubagentState) => void;
|
|
45
|
+
/** Progress updated (0-100) */
|
|
46
|
+
progress: (progress: number) => void;
|
|
47
|
+
/** Task started */
|
|
48
|
+
task_start: (taskId: string) => void;
|
|
49
|
+
/** Task completed */
|
|
50
|
+
task_complete: (result: SubagentResult) => void;
|
|
51
|
+
/** Subagent error */
|
|
52
|
+
error: (error: Error) => void;
|
|
53
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AX CLI SDK - Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Consolidated type definitions for SDK consumers.
|
|
5
|
+
* All types are re-exported from core modules for convenience.
|
|
6
|
+
*/
|
|
7
|
+
export { SubagentRole, SubagentState, } from '../agent/subagent-types.js';
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EACL,YAAY,EACZ,aAAa,GAKd,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture Analysis Tool
|
|
3
|
+
*
|
|
4
|
+
* LLM tool for architecture analysis
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolResult } from '../../types/index.js';
|
|
7
|
+
export declare class ArchitectureTool {
|
|
8
|
+
private analyzer;
|
|
9
|
+
constructor();
|
|
10
|
+
/**
|
|
11
|
+
* Analyze project architecture
|
|
12
|
+
*/
|
|
13
|
+
execute(args: {
|
|
14
|
+
projectPath?: string;
|
|
15
|
+
depth?: string;
|
|
16
|
+
}): Promise<ToolResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Format analysis result for display
|
|
19
|
+
*/
|
|
20
|
+
private formatOutput;
|
|
21
|
+
/**
|
|
22
|
+
* Get tool definition for LLM
|
|
23
|
+
*/
|
|
24
|
+
getToolDefinition(): {
|
|
25
|
+
type: "function";
|
|
26
|
+
function: {
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
parameters: {
|
|
30
|
+
type: string;
|
|
31
|
+
properties: {
|
|
32
|
+
projectPath: {
|
|
33
|
+
type: string;
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
depth: {
|
|
37
|
+
type: string;
|
|
38
|
+
enum: string[];
|
|
39
|
+
default: string;
|
|
40
|
+
description: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture Analysis Tool
|
|
3
|
+
*
|
|
4
|
+
* LLM tool for architecture analysis
|
|
5
|
+
*/
|
|
6
|
+
import { ArchitectureAnalyzer } from '../../analyzers/architecture/index.js';
|
|
7
|
+
export class ArchitectureTool {
|
|
8
|
+
analyzer;
|
|
9
|
+
constructor() {
|
|
10
|
+
this.analyzer = new ArchitectureAnalyzer();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Analyze project architecture
|
|
14
|
+
*/
|
|
15
|
+
async execute(args) {
|
|
16
|
+
try {
|
|
17
|
+
// Use current directory if no path specified
|
|
18
|
+
const projectPath = args.projectPath || process.cwd();
|
|
19
|
+
// Validate depth parameter
|
|
20
|
+
const depth = args.depth === 'deep' ? 'deep' : 'quick';
|
|
21
|
+
// Run analysis
|
|
22
|
+
const result = await this.analyzer.analyzeProject(projectPath, depth);
|
|
23
|
+
// Format output
|
|
24
|
+
const output = this.formatOutput(result);
|
|
25
|
+
return {
|
|
26
|
+
success: true,
|
|
27
|
+
output,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
return {
|
|
32
|
+
success: false,
|
|
33
|
+
error: `Architecture analysis failed: ${error.message}`,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Format analysis result for display
|
|
39
|
+
*/
|
|
40
|
+
formatOutput(result) {
|
|
41
|
+
const lines = [];
|
|
42
|
+
lines.push('# Architecture Analysis\n');
|
|
43
|
+
lines.push(`**Project**: ${result.projectPath}`);
|
|
44
|
+
lines.push(`**Score**: ${result.architectureScore}/100`);
|
|
45
|
+
lines.push(`**Duration**: ${result.durationMs}ms\n`);
|
|
46
|
+
// Summary
|
|
47
|
+
lines.push('## Summary\n');
|
|
48
|
+
lines.push(result.summary);
|
|
49
|
+
lines.push('');
|
|
50
|
+
// Detected Patterns
|
|
51
|
+
if (result.detectedPatterns.length > 0) {
|
|
52
|
+
lines.push('## Detected Patterns\n');
|
|
53
|
+
for (const pattern of result.detectedPatterns) {
|
|
54
|
+
lines.push(`### ${pattern.name}`);
|
|
55
|
+
lines.push(`- **Category**: ${pattern.category}`);
|
|
56
|
+
lines.push(`- **Confidence**: ${Math.round(pattern.confidence * 100)}%`);
|
|
57
|
+
lines.push(`- **Description**: ${pattern.description}`);
|
|
58
|
+
lines.push(`- **Locations**: ${pattern.locations.join(', ')}`);
|
|
59
|
+
lines.push('');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Anti-Patterns
|
|
63
|
+
if (result.antiPatterns.length > 0) {
|
|
64
|
+
lines.push('## Anti-Patterns Found\n');
|
|
65
|
+
for (const antiPattern of result.antiPatterns) {
|
|
66
|
+
lines.push(`### ⚠️ ${antiPattern.name} (${antiPattern.severity})`);
|
|
67
|
+
lines.push(`- **Description**: ${antiPattern.description}`);
|
|
68
|
+
lines.push(`- **Impact**: ${antiPattern.impact}`);
|
|
69
|
+
lines.push(`- **Suggestion**: ${antiPattern.suggestion}`);
|
|
70
|
+
lines.push(`- **Locations**: ${antiPattern.locations.join(', ')}`);
|
|
71
|
+
lines.push('');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Recommendations
|
|
75
|
+
if (result.recommendations.length > 0) {
|
|
76
|
+
lines.push('## Recommendations\n');
|
|
77
|
+
for (const rec of result.recommendations) {
|
|
78
|
+
lines.push(`### ${rec.title} (Priority: ${rec.priority})`);
|
|
79
|
+
lines.push(`**Description**: ${rec.description}\n`);
|
|
80
|
+
lines.push(`**Rationale**: ${rec.rationale}\n`);
|
|
81
|
+
lines.push(`**Estimated Effort**: ${rec.estimatedEffort}\n`);
|
|
82
|
+
if (rec.benefits.length > 0) {
|
|
83
|
+
lines.push('**Benefits**:');
|
|
84
|
+
for (const benefit of rec.benefits) {
|
|
85
|
+
lines.push(`- ${benefit}`);
|
|
86
|
+
}
|
|
87
|
+
lines.push('');
|
|
88
|
+
}
|
|
89
|
+
if (rec.relatedPatterns.length > 0) {
|
|
90
|
+
lines.push(`**Related Patterns**: ${rec.relatedPatterns.join(', ')}\n`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return lines.join('\n');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get tool definition for LLM
|
|
98
|
+
*/
|
|
99
|
+
getToolDefinition() {
|
|
100
|
+
return {
|
|
101
|
+
type: 'function',
|
|
102
|
+
function: {
|
|
103
|
+
name: 'analyze_architecture',
|
|
104
|
+
description: 'Analyze project architecture to detect patterns, anti-patterns, and generate improvement recommendations',
|
|
105
|
+
parameters: {
|
|
106
|
+
type: 'object',
|
|
107
|
+
properties: {
|
|
108
|
+
projectPath: {
|
|
109
|
+
type: 'string',
|
|
110
|
+
description: 'Path to project root directory (default: current directory)',
|
|
111
|
+
},
|
|
112
|
+
depth: {
|
|
113
|
+
type: 'string',
|
|
114
|
+
enum: ['quick', 'deep'],
|
|
115
|
+
default: 'quick',
|
|
116
|
+
description: 'Analysis depth: "quick" for pattern detection only, "deep" includes anti-pattern detection',
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=architecture-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture-tool.js","sourceRoot":"","sources":["../../../src/tools/analysis-tools/architecture-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation Tool
|
|
3
|
+
*
|
|
4
|
+
* LLM tool for best practice validation
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolResult } from '../../types/index.js';
|
|
7
|
+
export declare class ValidationTool {
|
|
8
|
+
private validator;
|
|
9
|
+
constructor();
|
|
10
|
+
/**
|
|
11
|
+
* Validate files
|
|
12
|
+
*/
|
|
13
|
+
execute(args: {
|
|
14
|
+
path?: string;
|
|
15
|
+
pattern?: string;
|
|
16
|
+
rules?: Record<string, {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
}>;
|
|
19
|
+
}): Promise<ToolResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Format validation result for display
|
|
22
|
+
*/
|
|
23
|
+
private formatOutput;
|
|
24
|
+
/**
|
|
25
|
+
* Get tool definition for LLM
|
|
26
|
+
*/
|
|
27
|
+
getToolDefinition(): {
|
|
28
|
+
type: "function";
|
|
29
|
+
function: {
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
parameters: {
|
|
33
|
+
type: string;
|
|
34
|
+
properties: {
|
|
35
|
+
path: {
|
|
36
|
+
type: string;
|
|
37
|
+
description: string;
|
|
38
|
+
};
|
|
39
|
+
pattern: {
|
|
40
|
+
type: string;
|
|
41
|
+
description: string;
|
|
42
|
+
};
|
|
43
|
+
rules: {
|
|
44
|
+
type: string;
|
|
45
|
+
description: string;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
}
|