@defai.digital/ax-cli 3.8.6 → 3.8.8

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 (196) hide show
  1. package/README.md +28 -393
  2. package/config-defaults/models.yaml +0 -24
  3. package/config-defaults/settings.yaml +16 -16
  4. package/dist/agent/dependency-resolver.js +22 -1
  5. package/dist/agent/dependency-resolver.js.map +1 -1
  6. package/dist/agent/llm-agent.d.ts +23 -2
  7. package/dist/agent/llm-agent.js +126 -122
  8. package/dist/agent/llm-agent.js.map +1 -1
  9. package/dist/agent/loop-detector.d.ts +70 -0
  10. package/dist/agent/loop-detector.js +339 -0
  11. package/dist/agent/loop-detector.js.map +1 -0
  12. package/dist/agent/progress-tracker.d.ts +94 -0
  13. package/dist/agent/progress-tracker.js +222 -0
  14. package/dist/agent/progress-tracker.js.map +1 -0
  15. package/dist/agent/status-reporter.js +2 -2
  16. package/dist/agent/status-reporter.js.map +1 -1
  17. package/dist/agent/subagent.js +7 -3
  18. package/dist/agent/subagent.js.map +1 -1
  19. package/dist/analyzers/architecture/project-structure-scanner.js +6 -2
  20. package/dist/analyzers/architecture/project-structure-scanner.js.map +1 -1
  21. package/dist/analyzers/git/churn-calculator.js +2 -1
  22. package/dist/analyzers/git/churn-calculator.js.map +1 -1
  23. package/dist/checkpoint/manager.js +18 -4
  24. package/dist/checkpoint/manager.js.map +1 -1
  25. package/dist/checkpoint/storage.d.ts +6 -0
  26. package/dist/checkpoint/storage.js +96 -49
  27. package/dist/checkpoint/storage.js.map +1 -1
  28. package/dist/commands/cache.js +8 -6
  29. package/dist/commands/cache.js.map +1 -1
  30. package/dist/commands/doctor.js +19 -27
  31. package/dist/commands/doctor.js.map +1 -1
  32. package/dist/commands/mcp-migrate.js +6 -5
  33. package/dist/commands/mcp-migrate.js.map +1 -1
  34. package/dist/commands/mcp.js +14 -2
  35. package/dist/commands/mcp.js.map +1 -1
  36. package/dist/commands/models.js +8 -12
  37. package/dist/commands/models.js.map +1 -1
  38. package/dist/commands/plan.js +1 -10
  39. package/dist/commands/plan.js.map +1 -1
  40. package/dist/commands/setup.js +4 -3
  41. package/dist/commands/setup.js.map +1 -1
  42. package/dist/commands/status.js +40 -14
  43. package/dist/commands/status.js.map +1 -1
  44. package/dist/constants.d.ts +12 -0
  45. package/dist/constants.js +16 -4
  46. package/dist/constants.js.map +1 -1
  47. package/dist/hooks/hook-runner.d.ts +138 -0
  48. package/dist/hooks/hook-runner.js +429 -0
  49. package/dist/hooks/hook-runner.js.map +1 -0
  50. package/dist/hooks/index.d.ts +6 -0
  51. package/dist/hooks/index.js +7 -0
  52. package/dist/hooks/index.js.map +1 -0
  53. package/dist/index.js +3 -21
  54. package/dist/index.js.map +1 -1
  55. package/dist/llm/client.d.ts +9 -0
  56. package/dist/llm/client.js +306 -45
  57. package/dist/llm/client.js.map +1 -1
  58. package/dist/llm/tools.js +2 -39
  59. package/dist/llm/tools.js.map +1 -1
  60. package/dist/llm/types.d.ts +1 -47
  61. package/dist/llm/types.js +0 -18
  62. package/dist/llm/types.js.map +1 -1
  63. package/dist/mcp/automatosx-loader.js +2 -1
  64. package/dist/mcp/automatosx-loader.js.map +1 -1
  65. package/dist/mcp/client-v2.d.ts +3 -0
  66. package/dist/mcp/client-v2.js +85 -19
  67. package/dist/mcp/client-v2.js.map +1 -1
  68. package/dist/mcp/config-migrator.js +3 -2
  69. package/dist/mcp/config-migrator.js.map +1 -1
  70. package/dist/mcp/config-v2.d.ts +5 -0
  71. package/dist/mcp/config-v2.js +26 -0
  72. package/dist/mcp/config-v2.js.map +1 -1
  73. package/dist/mcp/error-formatter.js +4 -1
  74. package/dist/mcp/error-formatter.js.map +1 -1
  75. package/dist/mcp/health.js +1 -1
  76. package/dist/mcp/health.js.map +1 -1
  77. package/dist/mcp/reconnection.js +2 -1
  78. package/dist/mcp/reconnection.js.map +1 -1
  79. package/dist/mcp/registry.js +3 -2
  80. package/dist/mcp/registry.js.map +1 -1
  81. package/dist/mcp/resources.js +2 -1
  82. package/dist/mcp/resources.js.map +1 -1
  83. package/dist/mcp/validation.js +9 -0
  84. package/dist/mcp/validation.js.map +1 -1
  85. package/dist/memory/context-store.js +4 -6
  86. package/dist/memory/context-store.js.map +1 -1
  87. package/dist/memory/types.d.ts +2 -0
  88. package/dist/memory/types.js +4 -1
  89. package/dist/memory/types.js.map +1 -1
  90. package/dist/permissions/index.d.ts +6 -0
  91. package/dist/permissions/index.js +7 -0
  92. package/dist/permissions/index.js.map +1 -0
  93. package/dist/permissions/permission-manager.d.ts +145 -0
  94. package/dist/permissions/permission-manager.js +401 -0
  95. package/dist/permissions/permission-manager.js.map +1 -0
  96. package/dist/planner/plan-storage.js +3 -2
  97. package/dist/planner/plan-storage.js.map +1 -1
  98. package/dist/planner/task-planner.js +2 -1
  99. package/dist/planner/task-planner.js.map +1 -1
  100. package/dist/planner/types.d.ts +6 -6
  101. package/dist/schemas/settings-schemas.d.ts +0 -14
  102. package/dist/schemas/settings-schemas.js +0 -10
  103. package/dist/schemas/settings-schemas.js.map +1 -1
  104. package/dist/schemas/tool-schemas.d.ts +2 -2
  105. package/dist/schemas/yaml-schemas.d.ts +15 -0
  106. package/dist/schemas/yaml-schemas.js +3 -0
  107. package/dist/schemas/yaml-schemas.js.map +1 -1
  108. package/dist/tools/bash.js +35 -10
  109. package/dist/tools/bash.js.map +1 -1
  110. package/dist/tools/confirmation-tool.js +3 -2
  111. package/dist/tools/confirmation-tool.js.map +1 -1
  112. package/dist/tools/registry.d.ts +1 -1
  113. package/dist/tools/registry.js +2 -1
  114. package/dist/tools/registry.js.map +1 -1
  115. package/dist/tools/search.js +12 -13
  116. package/dist/tools/search.js.map +1 -1
  117. package/dist/tools/text-editor.d.ts +46 -0
  118. package/dist/tools/text-editor.js +455 -11
  119. package/dist/tools/text-editor.js.map +1 -1
  120. package/dist/tools/todo-tool.js +5 -4
  121. package/dist/tools/todo-tool.js.map +1 -1
  122. package/dist/ui/components/chat-input.js +10 -1
  123. package/dist/ui/components/chat-input.js.map +1 -1
  124. package/dist/ui/components/chat-interface.js +1 -0
  125. package/dist/ui/components/chat-interface.js.map +1 -1
  126. package/dist/ui/components/tool-group-display.js +0 -6
  127. package/dist/ui/components/tool-group-display.js.map +1 -1
  128. package/dist/ui/hooks/use-input-handler.js +7 -6
  129. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  130. package/dist/ui/hooks/use-input-history.js +21 -13
  131. package/dist/ui/hooks/use-input-history.js.map +1 -1
  132. package/dist/ui/utils/tool-grouper.d.ts +1 -2
  133. package/dist/ui/utils/tool-grouper.js +4 -15
  134. package/dist/ui/utils/tool-grouper.js.map +1 -1
  135. package/dist/utils/api-error.d.ts +61 -0
  136. package/dist/utils/api-error.js +176 -0
  137. package/dist/utils/api-error.js.map +1 -0
  138. package/dist/utils/audit-logger.js +2 -1
  139. package/dist/utils/audit-logger.js.map +1 -1
  140. package/dist/utils/auto-accept-logger.js +3 -3
  141. package/dist/utils/auto-accept-logger.js.map +1 -1
  142. package/dist/utils/config-loader.d.ts +3 -0
  143. package/dist/utils/config-loader.js +27 -2
  144. package/dist/utils/config-loader.js.map +1 -1
  145. package/dist/utils/encryption.js +2 -1
  146. package/dist/utils/encryption.js.map +1 -1
  147. package/dist/utils/file-cache.js +4 -2
  148. package/dist/utils/file-cache.js.map +1 -1
  149. package/dist/utils/history-migration.js +5 -4
  150. package/dist/utils/history-migration.js.map +1 -1
  151. package/dist/utils/onboarding-manager.js +2 -1
  152. package/dist/utils/onboarding-manager.js.map +1 -1
  153. package/dist/utils/path-helpers.d.ts +8 -0
  154. package/dist/utils/path-helpers.js +35 -0
  155. package/dist/utils/path-helpers.js.map +1 -0
  156. package/dist/utils/path-security.js +3 -2
  157. package/dist/utils/path-security.js.map +1 -1
  158. package/dist/utils/retry-helper.d.ts +61 -0
  159. package/dist/utils/retry-helper.js +206 -0
  160. package/dist/utils/retry-helper.js.map +1 -0
  161. package/dist/utils/settings-manager.d.ts +1 -21
  162. package/dist/utils/settings-manager.js +2 -82
  163. package/dist/utils/settings-manager.js.map +1 -1
  164. package/dist/utils/streaming-analyzer.d.ts +2 -13
  165. package/dist/utils/streaming-analyzer.js +3 -25
  166. package/dist/utils/streaming-analyzer.js.map +1 -1
  167. package/dist/utils/token-counter.d.ts +13 -1
  168. package/dist/utils/token-counter.js +31 -6
  169. package/dist/utils/token-counter.js.map +1 -1
  170. package/package.json +3 -2
  171. package/packages/schemas/README.md +1 -1
  172. package/packages/schemas/package.json +1 -1
  173. package/dist/tools/web-search/cache.d.ts +0 -62
  174. package/dist/tools/web-search/cache.js +0 -105
  175. package/dist/tools/web-search/cache.js.map +0 -1
  176. package/dist/tools/web-search/engines/crates.d.ts +0 -19
  177. package/dist/tools/web-search/engines/crates.js +0 -87
  178. package/dist/tools/web-search/engines/crates.js.map +0 -1
  179. package/dist/tools/web-search/engines/npm.d.ts +0 -18
  180. package/dist/tools/web-search/engines/npm.js +0 -86
  181. package/dist/tools/web-search/engines/npm.js.map +0 -1
  182. package/dist/tools/web-search/engines/pypi.d.ts +0 -18
  183. package/dist/tools/web-search/engines/pypi.js +0 -75
  184. package/dist/tools/web-search/engines/pypi.js.map +0 -1
  185. package/dist/tools/web-search/index.d.ts +0 -11
  186. package/dist/tools/web-search/index.js +0 -11
  187. package/dist/tools/web-search/index.js.map +0 -1
  188. package/dist/tools/web-search/router.d.ts +0 -34
  189. package/dist/tools/web-search/router.js +0 -245
  190. package/dist/tools/web-search/router.js.map +0 -1
  191. package/dist/tools/web-search/types.d.ts +0 -45
  192. package/dist/tools/web-search/types.js +0 -6
  193. package/dist/tools/web-search/types.js.map +0 -1
  194. package/dist/tools/web-search/web-search-tool.d.ts +0 -51
  195. package/dist/tools/web-search/web-search-tool.js +0 -246
  196. package/dist/tools/web-search/web-search-tool.js.map +0 -1
@@ -1,246 +0,0 @@
1
- /**
2
- * Web Search Tool
3
- * Main tool for web search functionality in AX CLI
4
- */
5
- import { WebSearchRouter } from "./router.js";
6
- import { SearchCache } from "./cache.js";
7
- export class WebSearchTool {
8
- router;
9
- cache;
10
- DEFAULT_MAX_RESULTS = 5;
11
- MAX_RESULTS_LIMIT = 10;
12
- MAX_PARALLEL_ENGINES = 3; // Execute up to 3 engines in parallel
13
- constructor() {
14
- this.router = new WebSearchRouter();
15
- this.cache = new SearchCache();
16
- }
17
- /**
18
- * Search the web for information
19
- */
20
- async search(query, options) {
21
- try {
22
- // Validate query
23
- if (!query || query.trim().length === 0) {
24
- return {
25
- success: false,
26
- error: "Search query cannot be empty",
27
- };
28
- }
29
- // Sanitize query
30
- const sanitizedQuery = this.sanitizeQuery(query);
31
- // Note: hasAvailableEngines() always returns true now because npm, PyPI,
32
- // and crates.io search are available by default (no API key required).
33
- // Check cache first
34
- const cached = this.cache.get(sanitizedQuery);
35
- if (cached && cached.length > 0) {
36
- return {
37
- success: true,
38
- output: this.formatResults(cached, sanitizedQuery, true),
39
- };
40
- }
41
- // Detect intent and select engines
42
- const intent = this.router.detectIntent(sanitizedQuery);
43
- const engines = this.router.selectEngines(intent);
44
- if (engines.length === 0) {
45
- return {
46
- success: false,
47
- error: "No search engine available",
48
- };
49
- }
50
- // Prepare search options
51
- const searchOptions = {
52
- maxResults: Math.min(options?.maxResults || this.DEFAULT_MAX_RESULTS, this.MAX_RESULTS_LIMIT),
53
- includeAnswer: options?.includeAnswer ?? true,
54
- searchDepth: options?.searchDepth || "basic",
55
- freshness: options?.freshness,
56
- includeDomains: options?.includeDomains,
57
- excludeDomains: options?.excludeDomains,
58
- };
59
- // Execute searches in parallel across multiple engines
60
- const parallelCount = Math.min(engines.length, this.MAX_PARALLEL_ENGINES);
61
- const enginesToUse = engines.slice(0, parallelCount);
62
- // Execute all searches in parallel
63
- const searchPromises = enginesToUse.map((engine) => engine
64
- .search(sanitizedQuery, searchOptions)
65
- .then((results) => ({ engine: engine.name, results, error: null }))
66
- .catch((error) => ({
67
- engine: engine.name,
68
- results: [],
69
- error: error.message,
70
- })));
71
- const searchResults = await Promise.all(searchPromises);
72
- // Aggregate and deduplicate results
73
- const results = this.aggregateResults(searchResults, searchOptions.maxResults || this.DEFAULT_MAX_RESULTS);
74
- // Cache results (5 minute TTL)
75
- if (results.length > 0) {
76
- this.cache.set(sanitizedQuery, results, 300);
77
- }
78
- // Get list of engines that were used
79
- const enginesUsed = searchResults
80
- .filter((r) => r.results.length > 0)
81
- .map((r) => r.engine);
82
- // Format and return results
83
- return {
84
- success: true,
85
- output: this.formatResults(results, sanitizedQuery, false, intent.type, enginesUsed),
86
- };
87
- }
88
- catch (error) {
89
- // Handle specific error cases
90
- if (error.message?.includes("timeout")) {
91
- return {
92
- success: false,
93
- error: "Search request timed out. Please try again.",
94
- };
95
- }
96
- if (error.message?.includes("rate limit")) {
97
- return {
98
- success: false,
99
- error: "Search rate limit exceeded. Please try again later.",
100
- };
101
- }
102
- if (error.message?.includes("API key")) {
103
- return {
104
- success: false,
105
- error: "Search API authentication failed. Please check your API keys.",
106
- };
107
- }
108
- // Generic error
109
- return {
110
- success: false,
111
- error: `Web search error: ${error.message}`,
112
- };
113
- }
114
- }
115
- /**
116
- * Sanitize search query to prevent injection attacks
117
- */
118
- sanitizeQuery(query) {
119
- return query
120
- .replace(/[<>\"\']/g, "") // Remove special characters
121
- .trim()
122
- .slice(0, 500); // Max length
123
- }
124
- /**
125
- * Aggregate and deduplicate results from multiple search engines
126
- */
127
- aggregateResults(searchResults, maxResults) {
128
- const urlMap = new Map();
129
- const scores = new Map();
130
- // Aggregate results from all engines
131
- for (const { engine, results } of searchResults) {
132
- results.forEach((result, index) => {
133
- const url = result.url;
134
- // Calculate score based on position and source
135
- // Earlier results and results from multiple engines get higher scores
136
- const positionScore = maxResults - index;
137
- const sourceBonus = this.getSourceBonus(engine);
138
- const score = positionScore + sourceBonus;
139
- if (!urlMap.has(url)) {
140
- // New result
141
- urlMap.set(url, result);
142
- scores.set(url, score);
143
- }
144
- else {
145
- // Duplicate - boost score (result appears in multiple engines)
146
- const existingScore = scores.get(url) || 0;
147
- scores.set(url, existingScore + score * 0.5); // 50% bonus for appearing in multiple sources
148
- // Merge metadata if the new result has additional info
149
- const existing = urlMap.get(url);
150
- if (result.metadata?.answer && !existing.metadata?.answer) {
151
- existing.metadata = {
152
- ...existing.metadata,
153
- answer: result.metadata.answer,
154
- };
155
- }
156
- }
157
- });
158
- }
159
- // Sort by score and return top results
160
- const aggregated = Array.from(urlMap.entries())
161
- .map(([url, result]) => ({
162
- result,
163
- score: scores.get(url) || 0,
164
- }))
165
- .sort((a, b) => b.score - a.score)
166
- .slice(0, maxResults)
167
- .map(({ result }) => result);
168
- return aggregated;
169
- }
170
- /**
171
- * Get bonus score for specific search engines
172
- */
173
- getSourceBonus(engine) {
174
- // Prioritize certain engines based on reliability
175
- switch (engine) {
176
- case "npm":
177
- case "pypi":
178
- case "crates.io":
179
- return 2; // Package registries are authoritative for packages
180
- default:
181
- return 0;
182
- }
183
- }
184
- /**
185
- * Format search results for display
186
- */
187
- formatResults(results, query, fromCache, intentType, enginesUsed) {
188
- if (results.length === 0) {
189
- return `No web search results found for "${query}".`;
190
- }
191
- let output = `Web search results for "${query}"`;
192
- // Add cache indicator
193
- if (fromCache) {
194
- output += " (cached)";
195
- }
196
- // Add intent indicator if available
197
- if (intentType && intentType !== "general") {
198
- output += ` [${intentType}]`;
199
- }
200
- // Add engines used indicator (for parallel search)
201
- if (enginesUsed && enginesUsed.length > 1) {
202
- output += ` [sources: ${enginesUsed.join(", ")}]`;
203
- }
204
- output += ":\n\n";
205
- // Format each result
206
- results.forEach((result, index) => {
207
- output += `${index + 1}. **${result.title}**\n`;
208
- output += ` URL: ${result.url}\n`;
209
- output += ` ${result.snippet}\n`;
210
- // Add published date if available
211
- if (result.publishedDate) {
212
- output += ` Published: ${result.publishedDate}\n`;
213
- }
214
- // Add source indicator
215
- output += ` Source: ${result.source}\n`;
216
- output += "\n";
217
- });
218
- // Add result count
219
- if (results.length >= this.MAX_RESULTS_LIMIT) {
220
- output += `Showing ${results.length} results (maximum). Refine your query for more specific results.\n`;
221
- }
222
- else {
223
- output += `Found ${results.length} result${results.length === 1 ? "" : "s"}.\n`;
224
- }
225
- return output.trim();
226
- }
227
- /**
228
- * Get cache statistics (for debugging/monitoring)
229
- */
230
- getCacheStats() {
231
- return this.cache.getStats();
232
- }
233
- /**
234
- * Clear search cache
235
- */
236
- clearCache() {
237
- this.cache.clear();
238
- }
239
- /**
240
- * Check if web search is available
241
- */
242
- isAvailable() {
243
- return this.router.hasAvailableEngines();
244
- }
245
- }
246
- //# sourceMappingURL=web-search-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-search-tool.js","sourceRoot":"","sources":["../../../src/tools/web-search/web-search-tool.ts"],"names":[],"mappings":"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"}