@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.
Files changed (239) hide show
  1. package/.ax-cli/memory.json +8 -1
  2. package/README.md +118 -2
  3. package/config/models.yaml +13 -0
  4. package/config/settings.yaml +6 -0
  5. package/dist/agent/context-manager.d.ts +5 -5
  6. package/dist/agent/context-manager.js +19 -9
  7. package/dist/agent/context-manager.js.map +1 -1
  8. package/dist/agent/dependency-resolver.js +2 -1
  9. package/dist/agent/dependency-resolver.js.map +1 -1
  10. package/dist/agent/llm-agent.d.ts +3 -2
  11. package/dist/agent/llm-agent.js +64 -58
  12. package/dist/agent/llm-agent.js.map +1 -1
  13. package/dist/agent/subagent.js +2 -1
  14. package/dist/agent/subagent.js.map +1 -1
  15. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.d.ts +29 -0
  16. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js +103 -0
  17. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js.map +1 -0
  18. package/dist/analyzers/architecture/architecture-analyzer.d.ts +58 -0
  19. package/dist/analyzers/architecture/architecture-analyzer.js +276 -0
  20. package/dist/analyzers/architecture/architecture-analyzer.js.map +1 -0
  21. package/dist/analyzers/architecture/index.d.ts +12 -0
  22. package/dist/analyzers/architecture/index.js +14 -0
  23. package/dist/analyzers/architecture/index.js.map +1 -0
  24. package/dist/analyzers/architecture/pattern-detectors/base-detector.d.ts +27 -0
  25. package/dist/analyzers/architecture/pattern-detectors/base-detector.js +31 -0
  26. package/dist/analyzers/architecture/pattern-detectors/base-detector.js.map +1 -0
  27. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.d.ts +11 -0
  28. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js +57 -0
  29. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js.map +1 -0
  30. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.d.ts +11 -0
  31. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js +43 -0
  32. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js.map +1 -0
  33. package/dist/analyzers/architecture/pattern-detectors/repository-detector.d.ts +11 -0
  34. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js +49 -0
  35. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js.map +1 -0
  36. package/dist/analyzers/architecture/project-structure-scanner.d.ts +54 -0
  37. package/dist/analyzers/architecture/project-structure-scanner.js +200 -0
  38. package/dist/analyzers/architecture/project-structure-scanner.js.map +1 -0
  39. package/dist/analyzers/best-practices/base-rule.d.ts +45 -0
  40. package/dist/analyzers/best-practices/base-rule.js +45 -0
  41. package/dist/analyzers/best-practices/base-rule.js.map +1 -0
  42. package/dist/analyzers/best-practices/best-practice-validator.d.ts +35 -0
  43. package/dist/analyzers/best-practices/best-practice-validator.js +181 -0
  44. package/dist/analyzers/best-practices/best-practice-validator.js.map +1 -0
  45. package/dist/analyzers/best-practices/rules/index.d.ts +7 -0
  46. package/dist/analyzers/best-practices/rules/index.js +56 -0
  47. package/dist/analyzers/best-practices/rules/index.js.map +1 -0
  48. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.d.ts +17 -0
  49. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js +41 -0
  50. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js.map +1 -0
  51. package/dist/analyzers/best-practices/rules/typescript/function-complexity.d.ts +27 -0
  52. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js +76 -0
  53. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js.map +1 -0
  54. package/dist/analyzers/best-practices/rules/typescript/index.d.ts +15 -0
  55. package/dist/analyzers/best-practices/rules/typescript/index.js +16 -0
  56. package/dist/analyzers/best-practices/rules/typescript/index.js.map +1 -0
  57. package/dist/analyzers/best-practices/rules/typescript/max-file-length.d.ts +18 -0
  58. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js +25 -0
  59. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js.map +1 -0
  60. package/dist/analyzers/best-practices/rules/typescript/no-any-type.d.ts +17 -0
  61. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js +27 -0
  62. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js.map +1 -0
  63. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.d.ts +18 -0
  64. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js +39 -0
  65. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js.map +1 -0
  66. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.d.ts +17 -0
  67. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +32 -0
  68. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -0
  69. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.d.ts +17 -0
  70. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +36 -0
  71. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -0
  72. package/dist/analyzers/best-practices/rules/typescript/prefer-const.d.ts +17 -0
  73. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +33 -0
  74. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -0
  75. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.d.ts +17 -0
  76. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +34 -0
  77. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -0
  78. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.d.ts +17 -0
  79. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js +27 -0
  80. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js.map +1 -0
  81. package/dist/analyzers/best-practices/types.d.ts +86 -0
  82. package/dist/analyzers/best-practices/types.js +7 -0
  83. package/dist/analyzers/best-practices/types.js.map +1 -0
  84. package/dist/analyzers/cache/analysis-cache.d.ts +41 -0
  85. package/dist/analyzers/cache/analysis-cache.js +84 -0
  86. package/dist/analyzers/cache/analysis-cache.js.map +1 -0
  87. package/dist/analyzers/errors.d.ts +51 -0
  88. package/dist/analyzers/errors.js +79 -0
  89. package/dist/analyzers/errors.js.map +1 -0
  90. package/dist/commands/doctor.js +3 -2
  91. package/dist/commands/doctor.js.map +1 -1
  92. package/dist/commands/frontend.d.ts +9 -0
  93. package/dist/commands/frontend.js +645 -0
  94. package/dist/commands/frontend.js.map +1 -0
  95. package/dist/commands/mcp.js +652 -3
  96. package/dist/commands/mcp.js.map +1 -1
  97. package/dist/commands/models.js +2 -2
  98. package/dist/commands/models.js.map +1 -1
  99. package/dist/commands/setup.js +100 -41
  100. package/dist/commands/setup.js.map +1 -1
  101. package/dist/constants.d.ts +4 -0
  102. package/dist/constants.js +4 -0
  103. package/dist/constants.js.map +1 -1
  104. package/dist/hooks/use-enhanced-input.js +16 -3
  105. package/dist/hooks/use-enhanced-input.js.map +1 -1
  106. package/dist/hooks/use-input-handler.js +9 -4
  107. package/dist/hooks/use-input-handler.js.map +1 -1
  108. package/dist/index.js +5 -2
  109. package/dist/index.js.map +1 -1
  110. package/dist/llm/client.d.ts +1 -0
  111. package/dist/llm/tools.js +86 -0
  112. package/dist/llm/tools.js.map +1 -1
  113. package/dist/llm/types.d.ts +49 -22
  114. package/dist/llm/types.js +12 -8
  115. package/dist/llm/types.js.map +1 -1
  116. package/dist/mcp/client.d.ts +5 -0
  117. package/dist/mcp/client.js +55 -0
  118. package/dist/mcp/client.js.map +1 -1
  119. package/dist/mcp/config.d.ts +1 -1
  120. package/dist/mcp/config.js +2 -2
  121. package/dist/mcp/config.js.map +1 -1
  122. package/dist/mcp/health.d.ts +120 -0
  123. package/dist/mcp/health.js +267 -0
  124. package/dist/mcp/health.js.map +1 -0
  125. package/dist/mcp/reconnection.d.ts +93 -0
  126. package/dist/mcp/reconnection.js +216 -0
  127. package/dist/mcp/reconnection.js.map +1 -0
  128. package/dist/mcp/registry.d.ts +71 -0
  129. package/dist/mcp/registry.js +257 -0
  130. package/dist/mcp/registry.js.map +1 -0
  131. package/dist/mcp/resources.d.ts +53 -0
  132. package/dist/mcp/resources.js +135 -0
  133. package/dist/mcp/resources.js.map +1 -0
  134. package/dist/mcp/templates.d.ts +52 -0
  135. package/dist/mcp/templates.js +624 -0
  136. package/dist/mcp/templates.js.map +1 -0
  137. package/dist/mcp/validation.d.ts +25 -0
  138. package/dist/mcp/validation.js +209 -0
  139. package/dist/mcp/validation.js.map +1 -0
  140. package/dist/memory/context-generator.js +1 -2
  141. package/dist/memory/context-generator.js.map +1 -1
  142. package/dist/planner/types.d.ts +2 -2
  143. package/dist/schemas/api-schemas.d.ts +2 -1
  144. package/dist/schemas/api-schemas.js +6 -4
  145. package/dist/schemas/api-schemas.js.map +1 -1
  146. package/dist/schemas/index.d.ts +4 -4
  147. package/dist/schemas/tool-schemas.d.ts +2 -2
  148. package/dist/schemas/yaml-schemas.d.ts +15 -0
  149. package/dist/schemas/yaml-schemas.js +3 -0
  150. package/dist/schemas/yaml-schemas.js.map +1 -1
  151. package/dist/sdk/index.d.ts +138 -0
  152. package/dist/sdk/index.js +173 -0
  153. package/dist/sdk/index.js.map +1 -0
  154. package/dist/sdk/types.d.ts +53 -0
  155. package/dist/sdk/types.js +8 -0
  156. package/dist/sdk/types.js.map +1 -0
  157. package/dist/tools/analysis-tools/architecture-tool.d.ts +46 -0
  158. package/dist/tools/analysis-tools/architecture-tool.js +124 -0
  159. package/dist/tools/analysis-tools/architecture-tool.js.map +1 -0
  160. package/dist/tools/analysis-tools/validation-tool.d.ts +51 -0
  161. package/dist/tools/analysis-tools/validation-tool.js +121 -0
  162. package/dist/tools/analysis-tools/validation-tool.js.map +1 -0
  163. package/dist/tools/bash.js +25 -10
  164. package/dist/tools/bash.js.map +1 -1
  165. package/dist/tools/web-search/cache.d.ts +62 -0
  166. package/dist/tools/web-search/cache.js +105 -0
  167. package/dist/tools/web-search/cache.js.map +1 -0
  168. package/dist/tools/web-search/engines/brave.d.ts +16 -0
  169. package/dist/tools/web-search/engines/brave.js +99 -0
  170. package/dist/tools/web-search/engines/brave.js.map +1 -0
  171. package/dist/tools/web-search/engines/crates.d.ts +19 -0
  172. package/dist/tools/web-search/engines/crates.js +87 -0
  173. package/dist/tools/web-search/engines/crates.js.map +1 -0
  174. package/dist/tools/web-search/engines/npm.d.ts +18 -0
  175. package/dist/tools/web-search/engines/npm.js +86 -0
  176. package/dist/tools/web-search/engines/npm.js.map +1 -0
  177. package/dist/tools/web-search/engines/pypi.d.ts +18 -0
  178. package/dist/tools/web-search/engines/pypi.js +75 -0
  179. package/dist/tools/web-search/engines/pypi.js.map +1 -0
  180. package/dist/tools/web-search/engines/tavily.d.ts +17 -0
  181. package/dist/tools/web-search/engines/tavily.js +73 -0
  182. package/dist/tools/web-search/engines/tavily.js.map +1 -0
  183. package/dist/tools/web-search/index.d.ts +13 -0
  184. package/dist/tools/web-search/index.js +13 -0
  185. package/dist/tools/web-search/index.js.map +1 -0
  186. package/dist/tools/web-search/router.d.ts +36 -0
  187. package/dist/tools/web-search/router.js +280 -0
  188. package/dist/tools/web-search/router.js.map +1 -0
  189. package/dist/tools/web-search/types.d.ts +45 -0
  190. package/dist/tools/web-search/types.js +6 -0
  191. package/dist/tools/web-search/types.js.map +1 -0
  192. package/dist/tools/web-search/web-search-tool.d.ts +51 -0
  193. package/dist/tools/web-search/web-search-tool.js +256 -0
  194. package/dist/tools/web-search/web-search-tool.js.map +1 -0
  195. package/dist/types/analysis.d.ts +177 -0
  196. package/dist/types/analysis.js +8 -0
  197. package/dist/types/analysis.js.map +1 -0
  198. package/dist/ui/components/api-key-input.js +2 -2
  199. package/dist/ui/components/api-key-input.js.map +1 -1
  200. package/dist/ui/components/chat-history.js +14 -7
  201. package/dist/ui/components/chat-history.js.map +1 -1
  202. package/dist/ui/components/chat-input.js +12 -7
  203. package/dist/ui/components/chat-input.js.map +1 -1
  204. package/dist/ui/components/chat-interface.js +75 -54
  205. package/dist/ui/components/chat-interface.js.map +1 -1
  206. package/dist/ui/components/keyboard-hints.js +5 -4
  207. package/dist/ui/components/keyboard-hints.js.map +1 -1
  208. package/dist/ui/components/quick-actions.js +1 -0
  209. package/dist/ui/components/quick-actions.js.map +1 -1
  210. package/dist/ui/components/reasoning-display.js +14 -4
  211. package/dist/ui/components/reasoning-display.js.map +1 -1
  212. package/dist/ui/components/status-bar.d.ts +1 -0
  213. package/dist/ui/components/status-bar.js +37 -39
  214. package/dist/ui/components/status-bar.js.map +1 -1
  215. package/dist/ui/components/toast-notification.d.ts +29 -0
  216. package/dist/ui/components/toast-notification.js +17 -3
  217. package/dist/ui/components/toast-notification.js.map +1 -1
  218. package/dist/ui/components/welcome-panel.d.ts +1 -0
  219. package/dist/ui/components/welcome-panel.js +106 -4
  220. package/dist/ui/components/welcome-panel.js.map +1 -1
  221. package/dist/utils/analysis-logger.d.ts +47 -0
  222. package/dist/utils/analysis-logger.js +70 -0
  223. package/dist/utils/analysis-logger.js.map +1 -0
  224. package/dist/utils/automatosx-detector.d.ts +19 -0
  225. package/dist/utils/automatosx-detector.js +52 -0
  226. package/dist/utils/automatosx-detector.js.map +1 -0
  227. package/dist/utils/config-loader.d.ts +4 -0
  228. package/dist/utils/config-loader.js.map +1 -1
  229. package/dist/utils/confirmation-service.js +1 -1
  230. package/dist/utils/confirmation-service.js.map +1 -1
  231. package/dist/utils/init-previewer.js +26 -4
  232. package/dist/utils/init-previewer.js.map +1 -1
  233. package/dist/utils/setup-validator.js +1 -0
  234. package/dist/utils/setup-validator.js.map +1 -1
  235. package/dist/utils/text-utils.d.ts +1 -0
  236. package/dist/utils/text-utils.js +12 -0
  237. package/dist/utils/text-utils.js.map +1 -1
  238. package/package.json +19 -4
  239. 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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;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;AAEvD,+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,MAAM,iBAAiB,CAAC;AAItE,+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,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,cAAc,GAEf,MAAM,iBAAiB,CAAC;AAoBzB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAwB,EAAE;IAC1D,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,sCAAsC;IACtC,IAAI,CAAC;QACH,eAAe,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IAED,8CAA8C;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,CAAC;IAChE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAE5C,wBAAwB;IACxB,MAAM,KAAK,GAAG,IAAI,QAAQ,CACxB,MAAM,EACN,OAAO,EACP,KAAK,EACL,aAAa,CACd,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAuD,EACvD,MAAqE;IAErE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAKnC;IACC,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,kBAAkB;IAClB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,eAAe,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,eAAe,CAAC,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,eAAe,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,qCAAqC;IACrC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,oBAAoB,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -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
+ }