@defai.digital/ax-cli 3.3.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 (192) hide show
  1. package/.ax-cli/memory.json +6 -6
  2. package/README.md +110 -0
  3. package/config/settings.yaml +6 -0
  4. package/dist/agent/dependency-resolver.js +2 -1
  5. package/dist/agent/dependency-resolver.js.map +1 -1
  6. package/dist/agent/llm-agent.d.ts +3 -0
  7. package/dist/agent/llm-agent.js +57 -8
  8. package/dist/agent/llm-agent.js.map +1 -1
  9. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.d.ts +29 -0
  10. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js +103 -0
  11. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js.map +1 -0
  12. package/dist/analyzers/architecture/architecture-analyzer.d.ts +58 -0
  13. package/dist/analyzers/architecture/architecture-analyzer.js +276 -0
  14. package/dist/analyzers/architecture/architecture-analyzer.js.map +1 -0
  15. package/dist/analyzers/architecture/index.d.ts +12 -0
  16. package/dist/analyzers/architecture/index.js +14 -0
  17. package/dist/analyzers/architecture/index.js.map +1 -0
  18. package/dist/analyzers/architecture/pattern-detectors/base-detector.d.ts +27 -0
  19. package/dist/analyzers/architecture/pattern-detectors/base-detector.js +31 -0
  20. package/dist/analyzers/architecture/pattern-detectors/base-detector.js.map +1 -0
  21. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.d.ts +11 -0
  22. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js +57 -0
  23. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js.map +1 -0
  24. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.d.ts +11 -0
  25. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js +43 -0
  26. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js.map +1 -0
  27. package/dist/analyzers/architecture/pattern-detectors/repository-detector.d.ts +11 -0
  28. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js +49 -0
  29. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js.map +1 -0
  30. package/dist/analyzers/architecture/project-structure-scanner.d.ts +54 -0
  31. package/dist/analyzers/architecture/project-structure-scanner.js +200 -0
  32. package/dist/analyzers/architecture/project-structure-scanner.js.map +1 -0
  33. package/dist/analyzers/best-practices/base-rule.d.ts +45 -0
  34. package/dist/analyzers/best-practices/base-rule.js +45 -0
  35. package/dist/analyzers/best-practices/base-rule.js.map +1 -0
  36. package/dist/analyzers/best-practices/best-practice-validator.d.ts +35 -0
  37. package/dist/analyzers/best-practices/best-practice-validator.js +181 -0
  38. package/dist/analyzers/best-practices/best-practice-validator.js.map +1 -0
  39. package/dist/analyzers/best-practices/rules/index.d.ts +7 -0
  40. package/dist/analyzers/best-practices/rules/index.js +56 -0
  41. package/dist/analyzers/best-practices/rules/index.js.map +1 -0
  42. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.d.ts +17 -0
  43. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js +41 -0
  44. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js.map +1 -0
  45. package/dist/analyzers/best-practices/rules/typescript/function-complexity.d.ts +27 -0
  46. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js +76 -0
  47. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js.map +1 -0
  48. package/dist/analyzers/best-practices/rules/typescript/index.d.ts +15 -0
  49. package/dist/analyzers/best-practices/rules/typescript/index.js +16 -0
  50. package/dist/analyzers/best-practices/rules/typescript/index.js.map +1 -0
  51. package/dist/analyzers/best-practices/rules/typescript/max-file-length.d.ts +18 -0
  52. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js +25 -0
  53. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js.map +1 -0
  54. package/dist/analyzers/best-practices/rules/typescript/no-any-type.d.ts +17 -0
  55. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js +27 -0
  56. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js.map +1 -0
  57. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.d.ts +18 -0
  58. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js +39 -0
  59. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js.map +1 -0
  60. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.d.ts +17 -0
  61. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +32 -0
  62. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -0
  63. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.d.ts +17 -0
  64. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +36 -0
  65. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -0
  66. package/dist/analyzers/best-practices/rules/typescript/prefer-const.d.ts +17 -0
  67. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +33 -0
  68. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -0
  69. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.d.ts +17 -0
  70. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +34 -0
  71. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -0
  72. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.d.ts +17 -0
  73. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js +27 -0
  74. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js.map +1 -0
  75. package/dist/analyzers/best-practices/types.d.ts +86 -0
  76. package/dist/analyzers/best-practices/types.js +7 -0
  77. package/dist/analyzers/best-practices/types.js.map +1 -0
  78. package/dist/analyzers/cache/analysis-cache.d.ts +41 -0
  79. package/dist/analyzers/cache/analysis-cache.js +84 -0
  80. package/dist/analyzers/cache/analysis-cache.js.map +1 -0
  81. package/dist/analyzers/errors.d.ts +51 -0
  82. package/dist/analyzers/errors.js +79 -0
  83. package/dist/analyzers/errors.js.map +1 -0
  84. package/dist/commands/doctor.js +2 -1
  85. package/dist/commands/doctor.js.map +1 -1
  86. package/dist/commands/mcp.js +243 -0
  87. package/dist/commands/mcp.js.map +1 -1
  88. package/dist/commands/setup.js +85 -28
  89. package/dist/commands/setup.js.map +1 -1
  90. package/dist/constants.d.ts +3 -0
  91. package/dist/constants.js +3 -0
  92. package/dist/constants.js.map +1 -1
  93. package/dist/hooks/use-input-handler.js +2 -1
  94. package/dist/hooks/use-input-handler.js.map +1 -1
  95. package/dist/llm/tools.js +86 -0
  96. package/dist/llm/tools.js.map +1 -1
  97. package/dist/mcp/client.d.ts +5 -0
  98. package/dist/mcp/client.js +55 -0
  99. package/dist/mcp/client.js.map +1 -1
  100. package/dist/mcp/health.d.ts +11 -2
  101. package/dist/mcp/health.js +35 -12
  102. package/dist/mcp/health.js.map +1 -1
  103. package/dist/mcp/reconnection.d.ts +93 -0
  104. package/dist/mcp/reconnection.js +216 -0
  105. package/dist/mcp/reconnection.js.map +1 -0
  106. package/dist/mcp/registry.d.ts +71 -0
  107. package/dist/mcp/registry.js +257 -0
  108. package/dist/mcp/registry.js.map +1 -0
  109. package/dist/mcp/resources.d.ts +53 -0
  110. package/dist/mcp/resources.js +135 -0
  111. package/dist/mcp/resources.js.map +1 -0
  112. package/dist/mcp/validation.d.ts +25 -0
  113. package/dist/mcp/validation.js +209 -0
  114. package/dist/mcp/validation.js.map +1 -0
  115. package/dist/memory/context-generator.js +1 -2
  116. package/dist/memory/context-generator.js.map +1 -1
  117. package/dist/planner/types.d.ts +2 -2
  118. package/dist/schemas/index.d.ts +4 -4
  119. package/dist/schemas/tool-schemas.d.ts +2 -2
  120. package/dist/schemas/yaml-schemas.d.ts +15 -0
  121. package/dist/schemas/yaml-schemas.js +3 -0
  122. package/dist/schemas/yaml-schemas.js.map +1 -1
  123. package/dist/sdk/index.d.ts +138 -0
  124. package/dist/sdk/index.js +173 -0
  125. package/dist/sdk/index.js.map +1 -0
  126. package/dist/sdk/types.d.ts +53 -0
  127. package/dist/sdk/types.js +8 -0
  128. package/dist/sdk/types.js.map +1 -0
  129. package/dist/tools/analysis-tools/architecture-tool.d.ts +46 -0
  130. package/dist/tools/analysis-tools/architecture-tool.js +124 -0
  131. package/dist/tools/analysis-tools/architecture-tool.js.map +1 -0
  132. package/dist/tools/analysis-tools/validation-tool.d.ts +51 -0
  133. package/dist/tools/analysis-tools/validation-tool.js +121 -0
  134. package/dist/tools/analysis-tools/validation-tool.js.map +1 -0
  135. package/dist/tools/web-search/cache.d.ts +62 -0
  136. package/dist/tools/web-search/cache.js +105 -0
  137. package/dist/tools/web-search/cache.js.map +1 -0
  138. package/dist/tools/web-search/engines/brave.d.ts +16 -0
  139. package/dist/tools/web-search/engines/brave.js +99 -0
  140. package/dist/tools/web-search/engines/brave.js.map +1 -0
  141. package/dist/tools/web-search/engines/crates.d.ts +19 -0
  142. package/dist/tools/web-search/engines/crates.js +87 -0
  143. package/dist/tools/web-search/engines/crates.js.map +1 -0
  144. package/dist/tools/web-search/engines/npm.d.ts +18 -0
  145. package/dist/tools/web-search/engines/npm.js +86 -0
  146. package/dist/tools/web-search/engines/npm.js.map +1 -0
  147. package/dist/tools/web-search/engines/pypi.d.ts +18 -0
  148. package/dist/tools/web-search/engines/pypi.js +75 -0
  149. package/dist/tools/web-search/engines/pypi.js.map +1 -0
  150. package/dist/tools/web-search/engines/tavily.d.ts +17 -0
  151. package/dist/tools/web-search/engines/tavily.js +73 -0
  152. package/dist/tools/web-search/engines/tavily.js.map +1 -0
  153. package/dist/tools/web-search/index.d.ts +13 -0
  154. package/dist/tools/web-search/index.js +13 -0
  155. package/dist/tools/web-search/index.js.map +1 -0
  156. package/dist/tools/web-search/router.d.ts +36 -0
  157. package/dist/tools/web-search/router.js +280 -0
  158. package/dist/tools/web-search/router.js.map +1 -0
  159. package/dist/tools/web-search/types.d.ts +45 -0
  160. package/dist/tools/web-search/types.js +6 -0
  161. package/dist/tools/web-search/types.js.map +1 -0
  162. package/dist/tools/web-search/web-search-tool.d.ts +51 -0
  163. package/dist/tools/web-search/web-search-tool.js +256 -0
  164. package/dist/tools/web-search/web-search-tool.js.map +1 -0
  165. package/dist/types/analysis.d.ts +177 -0
  166. package/dist/types/analysis.js +8 -0
  167. package/dist/types/analysis.js.map +1 -0
  168. package/dist/ui/components/chat-interface.js +11 -1
  169. package/dist/ui/components/chat-interface.js.map +1 -1
  170. package/dist/ui/components/keyboard-hints.js +2 -2
  171. package/dist/ui/components/keyboard-hints.js.map +1 -1
  172. package/dist/ui/components/status-bar.d.ts +1 -0
  173. package/dist/ui/components/status-bar.js +37 -39
  174. package/dist/ui/components/status-bar.js.map +1 -1
  175. package/dist/ui/components/toast-notification.js +2 -2
  176. package/dist/ui/components/toast-notification.js.map +1 -1
  177. package/dist/ui/components/welcome-panel.d.ts +1 -0
  178. package/dist/ui/components/welcome-panel.js +94 -11
  179. package/dist/ui/components/welcome-panel.js.map +1 -1
  180. package/dist/utils/analysis-logger.d.ts +47 -0
  181. package/dist/utils/analysis-logger.js +70 -0
  182. package/dist/utils/analysis-logger.js.map +1 -0
  183. package/dist/utils/automatosx-detector.d.ts +19 -0
  184. package/dist/utils/automatosx-detector.js +52 -0
  185. package/dist/utils/automatosx-detector.js.map +1 -0
  186. package/dist/utils/config-loader.d.ts +3 -0
  187. package/dist/utils/config-loader.js.map +1 -1
  188. package/dist/utils/confirmation-service.js +1 -1
  189. package/dist/utils/confirmation-service.js.map +1 -1
  190. package/dist/utils/init-previewer.js +26 -4
  191. package/dist/utils/init-previewer.js.map +1 -1
  192. package/package.json +19 -3
@@ -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
+ }
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Validation Tool
3
+ *
4
+ * LLM tool for best practice validation
5
+ */
6
+ import { BestPracticeValidator } from '../../analyzers/best-practices/best-practice-validator.js';
7
+ import { glob } from 'glob';
8
+ export class ValidationTool {
9
+ validator;
10
+ constructor() {
11
+ this.validator = new BestPracticeValidator();
12
+ }
13
+ /**
14
+ * Validate files
15
+ */
16
+ async execute(args) {
17
+ try {
18
+ const targetPath = args.path || process.cwd();
19
+ const pattern = args.pattern || '**/*.{ts,tsx}';
20
+ // Find files to validate
21
+ const files = await glob(pattern, {
22
+ cwd: targetPath,
23
+ absolute: true,
24
+ ignore: [
25
+ '**/node_modules/**',
26
+ '**/dist/**',
27
+ '**/build/**',
28
+ '**/.git/**',
29
+ ],
30
+ });
31
+ if (files.length === 0) {
32
+ return {
33
+ success: true,
34
+ output: 'No files found matching pattern',
35
+ };
36
+ }
37
+ // Validate files
38
+ const options = {
39
+ rules: args.rules,
40
+ };
41
+ const result = await this.validator.validateBatch(files, options);
42
+ // Format output
43
+ const output = this.formatOutput(result);
44
+ return {
45
+ success: true,
46
+ output,
47
+ };
48
+ }
49
+ catch (error) {
50
+ return {
51
+ success: false,
52
+ error: `Validation failed: ${error.message}`,
53
+ };
54
+ }
55
+ }
56
+ /**
57
+ * Format validation result for display
58
+ */
59
+ formatOutput(result) {
60
+ const lines = [];
61
+ lines.push('# Best Practice Validation\n');
62
+ lines.push(`**Files Checked**: ${result.files.length}`);
63
+ lines.push(`**Total Violations**: ${result.totalViolations}`);
64
+ lines.push(`**Average Score**: ${result.averageScore}/100\n`);
65
+ // Summary by severity
66
+ lines.push('## Violations by Severity\n');
67
+ lines.push(`- **Critical**: ${result.criticalCount}`);
68
+ lines.push(`- **High**: ${result.highCount}\n`);
69
+ // Top violations
70
+ if (result.files.length > 0) {
71
+ lines.push('## Files with Most Violations\n');
72
+ const sortedFiles = result.files
73
+ .slice()
74
+ .sort((a, b) => b.violations.length - a.violations.length)
75
+ .slice(0, 5);
76
+ for (const file of sortedFiles) {
77
+ if (file.violations.length > 0) {
78
+ lines.push(`### ${file.file} (${file.violations.length} violations)\n`);
79
+ for (const violation of file.violations.slice(0, 3)) {
80
+ lines.push(`- **Line ${violation.line}**: ${violation.message}`);
81
+ if (violation.suggestion) {
82
+ lines.push(` *Suggestion*: ${violation.suggestion}`);
83
+ }
84
+ }
85
+ lines.push('');
86
+ }
87
+ }
88
+ }
89
+ return lines.join('\n');
90
+ }
91
+ /**
92
+ * Get tool definition for LLM
93
+ */
94
+ getToolDefinition() {
95
+ return {
96
+ type: 'function',
97
+ function: {
98
+ name: 'validate_best_practices',
99
+ description: 'Validate TypeScript/JavaScript files against best practices and coding standards',
100
+ parameters: {
101
+ type: 'object',
102
+ properties: {
103
+ path: {
104
+ type: 'string',
105
+ description: 'Path to directory or file to validate (default: current directory)',
106
+ },
107
+ pattern: {
108
+ type: 'string',
109
+ description: 'Glob pattern for files to validate (default: **/*.{ts,tsx})',
110
+ },
111
+ rules: {
112
+ type: 'object',
113
+ description: 'Rule configuration (e.g., {"no-any-type": {"enabled": false}})',
114
+ },
115
+ },
116
+ },
117
+ },
118
+ };
119
+ }
120
+ }
121
+ //# sourceMappingURL=validation-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-tool.js","sourceRoot":"","sources":["../../../src/tools/analysis-tools/validation-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Search Cache
3
+ * In-memory cache for web search results
4
+ */
5
+ import type { WebSearchResult } from "./types.js";
6
+ export interface CacheEntry {
7
+ query: string;
8
+ results: WebSearchResult[];
9
+ timestamp: number;
10
+ ttl: number;
11
+ }
12
+ export declare class SearchCache {
13
+ private cache;
14
+ private readonly DEFAULT_TTL;
15
+ private readonly MAX_KEYS;
16
+ constructor(ttl?: number, maxKeys?: number);
17
+ /**
18
+ * Generate cache key from query
19
+ */
20
+ private getCacheKey;
21
+ /**
22
+ * Get cached results for a query
23
+ */
24
+ get(query: string): WebSearchResult[] | null;
25
+ /**
26
+ * Cache search results for a query
27
+ */
28
+ set(query: string, results: WebSearchResult[], ttl?: number): void;
29
+ /**
30
+ * Check if query has cached results
31
+ */
32
+ has(query: string): boolean;
33
+ /**
34
+ * Clear specific query from cache
35
+ */
36
+ delete(query: string): void;
37
+ /**
38
+ * Clear all cached results
39
+ */
40
+ clear(): void;
41
+ /**
42
+ * Get cache statistics
43
+ */
44
+ getStats(): {
45
+ keys: number;
46
+ hits: number;
47
+ misses: number;
48
+ hitRate: number;
49
+ };
50
+ /**
51
+ * Get all cached queries (for debugging)
52
+ */
53
+ getCachedQueries(): string[];
54
+ /**
55
+ * Get cache entry with metadata
56
+ */
57
+ getEntry(query: string): CacheEntry | null;
58
+ /**
59
+ * Get TTL for a cached query
60
+ */
61
+ getTTL(query: string): number | undefined;
62
+ }