@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.
- package/README.md +28 -393
- package/config-defaults/models.yaml +0 -24
- package/config-defaults/settings.yaml +16 -16
- package/dist/agent/dependency-resolver.js +22 -1
- package/dist/agent/dependency-resolver.js.map +1 -1
- package/dist/agent/llm-agent.d.ts +23 -2
- package/dist/agent/llm-agent.js +126 -122
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/loop-detector.d.ts +70 -0
- package/dist/agent/loop-detector.js +339 -0
- package/dist/agent/loop-detector.js.map +1 -0
- package/dist/agent/progress-tracker.d.ts +94 -0
- package/dist/agent/progress-tracker.js +222 -0
- package/dist/agent/progress-tracker.js.map +1 -0
- package/dist/agent/status-reporter.js +2 -2
- package/dist/agent/status-reporter.js.map +1 -1
- package/dist/agent/subagent.js +7 -3
- package/dist/agent/subagent.js.map +1 -1
- package/dist/analyzers/architecture/project-structure-scanner.js +6 -2
- package/dist/analyzers/architecture/project-structure-scanner.js.map +1 -1
- package/dist/analyzers/git/churn-calculator.js +2 -1
- package/dist/analyzers/git/churn-calculator.js.map +1 -1
- package/dist/checkpoint/manager.js +18 -4
- package/dist/checkpoint/manager.js.map +1 -1
- package/dist/checkpoint/storage.d.ts +6 -0
- package/dist/checkpoint/storage.js +96 -49
- package/dist/checkpoint/storage.js.map +1 -1
- package/dist/commands/cache.js +8 -6
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/doctor.js +19 -27
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/mcp-migrate.js +6 -5
- package/dist/commands/mcp-migrate.js.map +1 -1
- package/dist/commands/mcp.js +14 -2
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/models.js +8 -12
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/plan.js +1 -10
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/setup.js +4 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.js +40 -14
- package/dist/commands/status.js.map +1 -1
- package/dist/constants.d.ts +12 -0
- package/dist/constants.js +16 -4
- package/dist/constants.js.map +1 -1
- package/dist/hooks/hook-runner.d.ts +138 -0
- package/dist/hooks/hook-runner.js +429 -0
- package/dist/hooks/hook-runner.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.js +3 -21
- package/dist/index.js.map +1 -1
- package/dist/llm/client.d.ts +9 -0
- package/dist/llm/client.js +306 -45
- package/dist/llm/client.js.map +1 -1
- package/dist/llm/tools.js +2 -39
- package/dist/llm/tools.js.map +1 -1
- package/dist/llm/types.d.ts +1 -47
- package/dist/llm/types.js +0 -18
- package/dist/llm/types.js.map +1 -1
- package/dist/mcp/automatosx-loader.js +2 -1
- package/dist/mcp/automatosx-loader.js.map +1 -1
- package/dist/mcp/client-v2.d.ts +3 -0
- package/dist/mcp/client-v2.js +85 -19
- package/dist/mcp/client-v2.js.map +1 -1
- package/dist/mcp/config-migrator.js +3 -2
- package/dist/mcp/config-migrator.js.map +1 -1
- package/dist/mcp/config-v2.d.ts +5 -0
- package/dist/mcp/config-v2.js +26 -0
- package/dist/mcp/config-v2.js.map +1 -1
- package/dist/mcp/error-formatter.js +4 -1
- package/dist/mcp/error-formatter.js.map +1 -1
- package/dist/mcp/health.js +1 -1
- package/dist/mcp/health.js.map +1 -1
- package/dist/mcp/reconnection.js +2 -1
- package/dist/mcp/reconnection.js.map +1 -1
- package/dist/mcp/registry.js +3 -2
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/resources.js +2 -1
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/validation.js +9 -0
- package/dist/mcp/validation.js.map +1 -1
- package/dist/memory/context-store.js +4 -6
- package/dist/memory/context-store.js.map +1 -1
- package/dist/memory/types.d.ts +2 -0
- package/dist/memory/types.js +4 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/permissions/index.d.ts +6 -0
- package/dist/permissions/index.js +7 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/permission-manager.d.ts +145 -0
- package/dist/permissions/permission-manager.js +401 -0
- package/dist/permissions/permission-manager.js.map +1 -0
- package/dist/planner/plan-storage.js +3 -2
- package/dist/planner/plan-storage.js.map +1 -1
- package/dist/planner/task-planner.js +2 -1
- package/dist/planner/task-planner.js.map +1 -1
- package/dist/planner/types.d.ts +6 -6
- package/dist/schemas/settings-schemas.d.ts +0 -14
- package/dist/schemas/settings-schemas.js +0 -10
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/schemas/tool-schemas.d.ts +2 -2
- package/dist/schemas/yaml-schemas.d.ts +15 -0
- package/dist/schemas/yaml-schemas.js +3 -0
- package/dist/schemas/yaml-schemas.js.map +1 -1
- package/dist/tools/bash.js +35 -10
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/confirmation-tool.js +3 -2
- package/dist/tools/confirmation-tool.js.map +1 -1
- package/dist/tools/registry.d.ts +1 -1
- package/dist/tools/registry.js +2 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/search.js +12 -13
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.d.ts +46 -0
- package/dist/tools/text-editor.js +455 -11
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/tools/todo-tool.js +5 -4
- package/dist/tools/todo-tool.js.map +1 -1
- package/dist/ui/components/chat-input.js +10 -1
- package/dist/ui/components/chat-input.js.map +1 -1
- package/dist/ui/components/chat-interface.js +1 -0
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/tool-group-display.js +0 -6
- package/dist/ui/components/tool-group-display.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.js +7 -6
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/hooks/use-input-history.js +21 -13
- package/dist/ui/hooks/use-input-history.js.map +1 -1
- package/dist/ui/utils/tool-grouper.d.ts +1 -2
- package/dist/ui/utils/tool-grouper.js +4 -15
- package/dist/ui/utils/tool-grouper.js.map +1 -1
- package/dist/utils/api-error.d.ts +61 -0
- package/dist/utils/api-error.js +176 -0
- package/dist/utils/api-error.js.map +1 -0
- package/dist/utils/audit-logger.js +2 -1
- package/dist/utils/audit-logger.js.map +1 -1
- package/dist/utils/auto-accept-logger.js +3 -3
- package/dist/utils/auto-accept-logger.js.map +1 -1
- package/dist/utils/config-loader.d.ts +3 -0
- package/dist/utils/config-loader.js +27 -2
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/encryption.js +2 -1
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/file-cache.js +4 -2
- package/dist/utils/file-cache.js.map +1 -1
- package/dist/utils/history-migration.js +5 -4
- package/dist/utils/history-migration.js.map +1 -1
- package/dist/utils/onboarding-manager.js +2 -1
- package/dist/utils/onboarding-manager.js.map +1 -1
- package/dist/utils/path-helpers.d.ts +8 -0
- package/dist/utils/path-helpers.js +35 -0
- package/dist/utils/path-helpers.js.map +1 -0
- package/dist/utils/path-security.js +3 -2
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/retry-helper.d.ts +61 -0
- package/dist/utils/retry-helper.js +206 -0
- package/dist/utils/retry-helper.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +1 -21
- package/dist/utils/settings-manager.js +2 -82
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/streaming-analyzer.d.ts +2 -13
- package/dist/utils/streaming-analyzer.js +3 -25
- package/dist/utils/streaming-analyzer.js.map +1 -1
- package/dist/utils/token-counter.d.ts +13 -1
- package/dist/utils/token-counter.js +31 -6
- package/dist/utils/token-counter.js.map +1 -1
- package/package.json +3 -2
- package/packages/schemas/README.md +1 -1
- package/packages/schemas/package.json +1 -1
- package/dist/tools/web-search/cache.d.ts +0 -62
- package/dist/tools/web-search/cache.js +0 -105
- package/dist/tools/web-search/cache.js.map +0 -1
- package/dist/tools/web-search/engines/crates.d.ts +0 -19
- package/dist/tools/web-search/engines/crates.js +0 -87
- package/dist/tools/web-search/engines/crates.js.map +0 -1
- package/dist/tools/web-search/engines/npm.d.ts +0 -18
- package/dist/tools/web-search/engines/npm.js +0 -86
- package/dist/tools/web-search/engines/npm.js.map +0 -1
- package/dist/tools/web-search/engines/pypi.d.ts +0 -18
- package/dist/tools/web-search/engines/pypi.js +0 -75
- package/dist/tools/web-search/engines/pypi.js.map +0 -1
- package/dist/tools/web-search/index.d.ts +0 -11
- package/dist/tools/web-search/index.js +0 -11
- package/dist/tools/web-search/index.js.map +0 -1
- package/dist/tools/web-search/router.d.ts +0 -34
- package/dist/tools/web-search/router.js +0 -245
- package/dist/tools/web-search/router.js.map +0 -1
- package/dist/tools/web-search/types.d.ts +0 -45
- package/dist/tools/web-search/types.js +0 -6
- package/dist/tools/web-search/types.js.map +0 -1
- package/dist/tools/web-search/web-search-tool.d.ts +0 -51
- package/dist/tools/web-search/web-search-tool.js +0 -246
- 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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"}
|