antri_cli 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -0
- package/bin/antri.js +2 -0
- package/dist/cli/banner.d.ts +22 -0
- package/dist/cli/banner.d.ts.map +1 -0
- package/dist/cli/banner.js +133 -0
- package/dist/cli/banner.js.map +1 -0
- package/dist/cli/dialogs/filePicker.d.ts +23 -0
- package/dist/cli/dialogs/filePicker.d.ts.map +1 -0
- package/dist/cli/dialogs/filePicker.js +106 -0
- package/dist/cli/dialogs/filePicker.js.map +1 -0
- package/dist/cli/dialogs/modelPicker.d.ts +10 -0
- package/dist/cli/dialogs/modelPicker.d.ts.map +1 -0
- package/dist/cli/dialogs/modelPicker.js +205 -0
- package/dist/cli/dialogs/modelPicker.js.map +1 -0
- package/dist/cli/dialogs/profilePicker.d.ts +11 -0
- package/dist/cli/dialogs/profilePicker.d.ts.map +1 -0
- package/dist/cli/dialogs/profilePicker.js +185 -0
- package/dist/cli/dialogs/profilePicker.js.map +1 -0
- package/dist/cli/dialogs/providerPicker.d.ts +19 -0
- package/dist/cli/dialogs/providerPicker.d.ts.map +1 -0
- package/dist/cli/dialogs/providerPicker.js +205 -0
- package/dist/cli/dialogs/providerPicker.js.map +1 -0
- package/dist/cli/prompt.d.ts +3 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +50 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/promptToolkit.d.ts +14 -0
- package/dist/cli/promptToolkit.d.ts.map +1 -0
- package/dist/cli/promptToolkit.js +389 -0
- package/dist/cli/promptToolkit.js.map +1 -0
- package/dist/cli/renderer.d.ts +21 -0
- package/dist/cli/renderer.d.ts.map +1 -0
- package/dist/cli/renderer.js +97 -0
- package/dist/cli/renderer.js.map +1 -0
- package/dist/cli/shortcuts.d.ts +13 -0
- package/dist/cli/shortcuts.d.ts.map +1 -0
- package/dist/cli/shortcuts.js +414 -0
- package/dist/cli/shortcuts.js.map +1 -0
- package/dist/core/agent.d.ts +15 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +232 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/citations.d.ts +19 -0
- package/dist/core/citations.d.ts.map +1 -0
- package/dist/core/citations.js +40 -0
- package/dist/core/citations.js.map +1 -0
- package/dist/core/config.d.ts +16 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +172 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/crawler.d.ts +18 -0
- package/dist/core/crawler.d.ts.map +1 -0
- package/dist/core/crawler.js +83 -0
- package/dist/core/crawler.js.map +1 -0
- package/dist/core/debugger.d.ts +20 -0
- package/dist/core/debugger.d.ts.map +1 -0
- package/dist/core/debugger.js +105 -0
- package/dist/core/debugger.js.map +1 -0
- package/dist/core/dialectic.d.ts +23 -0
- package/dist/core/dialectic.d.ts.map +1 -0
- package/dist/core/dialectic.js +300 -0
- package/dist/core/dialectic.js.map +1 -0
- package/dist/core/goalLoop.d.ts +14 -0
- package/dist/core/goalLoop.d.ts.map +1 -0
- package/dist/core/goalLoop.js +104 -0
- package/dist/core/goalLoop.js.map +1 -0
- package/dist/core/history.d.ts +13 -0
- package/dist/core/history.d.ts.map +1 -0
- package/dist/core/history.js +53 -0
- package/dist/core/history.js.map +1 -0
- package/dist/core/metaOptimizer.d.ts +27 -0
- package/dist/core/metaOptimizer.d.ts.map +1 -0
- package/dist/core/metaOptimizer.js +98 -0
- package/dist/core/metaOptimizer.js.map +1 -0
- package/dist/core/sandbox.d.ts +29 -0
- package/dist/core/sandbox.d.ts.map +1 -0
- package/dist/core/sandbox.js +141 -0
- package/dist/core/sandbox.js.map +1 -0
- package/dist/core/scraper.d.ts +22 -0
- package/dist/core/scraper.d.ts.map +1 -0
- package/dist/core/scraper.js +180 -0
- package/dist/core/scraper.js.map +1 -0
- package/dist/core/search.d.ts +27 -0
- package/dist/core/search.d.ts.map +1 -0
- package/dist/core/search.js +222 -0
- package/dist/core/search.js.map +1 -0
- package/dist/core/skillSynthesizer.d.ts +43 -0
- package/dist/core/skillSynthesizer.d.ts.map +1 -0
- package/dist/core/skillSynthesizer.js +147 -0
- package/dist/core/skillSynthesizer.js.map +1 -0
- package/dist/core/tools.d.ts +12 -0
- package/dist/core/tools.d.ts.map +1 -0
- package/dist/core/tools.js +467 -0
- package/dist/core/tools.js.map +1 -0
- package/dist/core/updater.d.ts +9 -0
- package/dist/core/updater.d.ts.map +1 -0
- package/dist/core/updater.js +63 -0
- package/dist/core/updater.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/consolidation.d.ts +17 -0
- package/dist/memory/consolidation.d.ts.map +1 -0
- package/dist/memory/consolidation.js +42 -0
- package/dist/memory/consolidation.js.map +1 -0
- package/dist/memory/episodic.d.ts +15 -0
- package/dist/memory/episodic.d.ts.map +1 -0
- package/dist/memory/episodic.js +97 -0
- package/dist/memory/episodic.js.map +1 -0
- package/dist/memory/manager.d.ts +24 -0
- package/dist/memory/manager.d.ts.map +1 -0
- package/dist/memory/manager.js +97 -0
- package/dist/memory/manager.js.map +1 -0
- package/dist/memory/profile.d.ts +21 -0
- package/dist/memory/profile.d.ts.map +1 -0
- package/dist/memory/profile.js +111 -0
- package/dist/memory/profile.js.map +1 -0
- package/dist/memory/semantic.d.ts +24 -0
- package/dist/memory/semantic.d.ts.map +1 -0
- package/dist/memory/semantic.js +102 -0
- package/dist/memory/semantic.js.map +1 -0
- package/dist/memory/types.d.ts +45 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +2 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/memory/vectorStore.d.ts +18 -0
- package/dist/memory/vectorStore.d.ts.map +1 -0
- package/dist/memory/vectorStore.js +103 -0
- package/dist/memory/vectorStore.js.map +1 -0
- package/dist/profiles/profileManager.d.ts +25 -0
- package/dist/profiles/profileManager.d.ts.map +1 -0
- package/dist/profiles/profileManager.js +205 -0
- package/dist/profiles/profileManager.js.map +1 -0
- package/dist/providers/anthropic.d.ts +14 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +80 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +7 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +2 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/gemini.d.ts +14 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +77 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +65 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/mock.d.ts +8 -0
- package/dist/providers/mock.d.ts.map +1 -0
- package/dist/providers/mock.js +62 -0
- package/dist/providers/mock.js.map +1 -0
- package/dist/providers/models.d.ts +8 -0
- package/dist/providers/models.d.ts.map +1 -0
- package/dist/providers/models.js +403 -0
- package/dist/providers/models.js.map +1 -0
- package/dist/providers/openai.d.ts +18 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +162 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/types.d.ts +116 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/logger.d.ts +23 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +26 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import readline from 'readline';
|
|
4
|
+
import { exec } from 'child_process';
|
|
5
|
+
import util from 'util';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { WebSearchEngine } from './search.js';
|
|
8
|
+
import { WebScraper } from './scraper.js';
|
|
9
|
+
import { DocCrawler } from './crawler.js';
|
|
10
|
+
import { SandboxEngine } from './sandbox.js';
|
|
11
|
+
import { SkillSynthesizer } from './skillSynthesizer.js';
|
|
12
|
+
import { configManager } from './config.js';
|
|
13
|
+
const execPromise = util.promisify(exec);
|
|
14
|
+
export const SENSITIVE_TOOLS = new Set([
|
|
15
|
+
'web_search',
|
|
16
|
+
'scrape_url',
|
|
17
|
+
'crawl_docs',
|
|
18
|
+
'run_command',
|
|
19
|
+
'execute_python',
|
|
20
|
+
'synthesize_skill',
|
|
21
|
+
]);
|
|
22
|
+
export const AVAILABLE_TOOLS = [
|
|
23
|
+
{
|
|
24
|
+
name: 'web_search',
|
|
25
|
+
description: 'Search the live web for up-to-date information, documentation, libraries, or answers using multi-provider search (DuckDuckGo, SearXNG) without requiring an API key.',
|
|
26
|
+
parameters: {
|
|
27
|
+
type: 'object',
|
|
28
|
+
properties: {
|
|
29
|
+
query: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'The search query or keywords to look up.',
|
|
32
|
+
},
|
|
33
|
+
num_results: {
|
|
34
|
+
type: 'number',
|
|
35
|
+
description: 'Optional maximum number of search results to return (default: 5).',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
required: ['query'],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'scrape_url',
|
|
43
|
+
description: 'Scrape a web page or article, extract its primary readable text (filtering ads, nav, headers, and footers), and convert it to structured clean Markdown.',
|
|
44
|
+
parameters: {
|
|
45
|
+
type: 'object',
|
|
46
|
+
properties: {
|
|
47
|
+
url: {
|
|
48
|
+
type: 'string',
|
|
49
|
+
description: 'The absolute HTTP or HTTPS URL to scrape.',
|
|
50
|
+
},
|
|
51
|
+
max_chars: {
|
|
52
|
+
type: 'number',
|
|
53
|
+
description: 'Optional maximum number of characters to return (default: 8000).',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
required: ['url'],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'crawl_docs',
|
|
61
|
+
description: 'Recursively crawl and extract documentation hierarchy and child pages from a documentation site, converting pages to a combined Markdown knowledge base.',
|
|
62
|
+
parameters: {
|
|
63
|
+
type: 'object',
|
|
64
|
+
properties: {
|
|
65
|
+
url: {
|
|
66
|
+
type: 'string',
|
|
67
|
+
description: 'The root documentation URL to start crawling from.',
|
|
68
|
+
},
|
|
69
|
+
max_pages: {
|
|
70
|
+
type: 'number',
|
|
71
|
+
description: 'Optional maximum number of documentation pages to crawl (default: 4).',
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
required: ['url'],
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'execute_python',
|
|
79
|
+
description: 'Execute Python code safely in an isolated sandbox runtime environment, capturing stdout and stderr.',
|
|
80
|
+
parameters: {
|
|
81
|
+
type: 'object',
|
|
82
|
+
properties: {
|
|
83
|
+
code: {
|
|
84
|
+
type: 'string',
|
|
85
|
+
description: 'The Python code script to execute.',
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
required: ['code'],
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'synthesize_skill',
|
|
93
|
+
description: 'Synthesize, verify, and permanently register a new custom Python skill/tool to ~/.agent-cli/skills/ for future autonomous use.',
|
|
94
|
+
parameters: {
|
|
95
|
+
type: 'object',
|
|
96
|
+
properties: {
|
|
97
|
+
name: {
|
|
98
|
+
type: 'string',
|
|
99
|
+
description: 'Unique name of the new tool/skill (e.g. "calculate_checksum", "fetch_api_schema").',
|
|
100
|
+
},
|
|
101
|
+
description: {
|
|
102
|
+
type: 'string',
|
|
103
|
+
description: 'What the synthesized skill does and when to use it.',
|
|
104
|
+
},
|
|
105
|
+
language: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
enum: ['python', 'javascript'],
|
|
108
|
+
description: 'Language of the skill (default: python).',
|
|
109
|
+
},
|
|
110
|
+
code: {
|
|
111
|
+
type: 'string',
|
|
112
|
+
description: 'The executable script code implementing the skill.',
|
|
113
|
+
},
|
|
114
|
+
parametersSchema: {
|
|
115
|
+
type: 'object',
|
|
116
|
+
description: 'JSON schema defining parameters accepted by the skill.',
|
|
117
|
+
},
|
|
118
|
+
testArgs: {
|
|
119
|
+
type: 'object',
|
|
120
|
+
description: 'Sample arguments to verify the skill in a dry-run test.',
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
required: ['name', 'description', 'code', 'parametersSchema'],
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: 'read_file',
|
|
128
|
+
description: 'Read the contents of a file from the workspace.',
|
|
129
|
+
parameters: {
|
|
130
|
+
type: 'object',
|
|
131
|
+
properties: {
|
|
132
|
+
file_path: {
|
|
133
|
+
type: 'string',
|
|
134
|
+
description: 'The relative or absolute path of the file to read.',
|
|
135
|
+
},
|
|
136
|
+
max_lines: {
|
|
137
|
+
type: 'number',
|
|
138
|
+
description: 'Optional maximum number of lines to return (default: 300).',
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
required: ['file_path'],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: 'write_file',
|
|
146
|
+
description: 'Create or overwrite a file in the workspace.',
|
|
147
|
+
parameters: {
|
|
148
|
+
type: 'object',
|
|
149
|
+
properties: {
|
|
150
|
+
file_path: {
|
|
151
|
+
type: 'string',
|
|
152
|
+
description: 'The relative or absolute path of the file to write.',
|
|
153
|
+
},
|
|
154
|
+
content: {
|
|
155
|
+
type: 'string',
|
|
156
|
+
description: 'The full text content to write to the file.',
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
required: ['file_path', 'content'],
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: 'list_dir',
|
|
164
|
+
description: 'List the contents of a directory in the workspace.',
|
|
165
|
+
parameters: {
|
|
166
|
+
type: 'object',
|
|
167
|
+
properties: {
|
|
168
|
+
dir_path: {
|
|
169
|
+
type: 'string',
|
|
170
|
+
description: 'The directory path to list (default: current directory).',
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'search_files',
|
|
177
|
+
description: 'Search for text or patterns in files within the workspace.',
|
|
178
|
+
parameters: {
|
|
179
|
+
type: 'object',
|
|
180
|
+
properties: {
|
|
181
|
+
query: {
|
|
182
|
+
type: 'string',
|
|
183
|
+
description: 'The string or pattern to search for.',
|
|
184
|
+
},
|
|
185
|
+
dir_path: {
|
|
186
|
+
type: 'string',
|
|
187
|
+
description: 'Optional directory to limit the search in.',
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
required: ['query'],
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: 'run_command',
|
|
195
|
+
description: 'Execute a shell command in the workspace.',
|
|
196
|
+
parameters: {
|
|
197
|
+
type: 'object',
|
|
198
|
+
properties: {
|
|
199
|
+
command: {
|
|
200
|
+
type: 'string',
|
|
201
|
+
description: 'The terminal command to execute.',
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
required: ['command'],
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
];
|
|
208
|
+
export function getAllActiveTools() {
|
|
209
|
+
const dynamicTools = SkillSynthesizer.getDynamicToolDefinitions();
|
|
210
|
+
const existingNames = new Set(AVAILABLE_TOOLS.map((t) => t.name));
|
|
211
|
+
const combined = [...AVAILABLE_TOOLS];
|
|
212
|
+
for (const dt of dynamicTools) {
|
|
213
|
+
if (!existingNames.has(dt.name)) {
|
|
214
|
+
combined.push(dt);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return combined;
|
|
218
|
+
}
|
|
219
|
+
export class ToolExecutor {
|
|
220
|
+
workingDir;
|
|
221
|
+
constructor(workingDir = process.cwd()) {
|
|
222
|
+
this.workingDir = workingDir;
|
|
223
|
+
}
|
|
224
|
+
static isSensitive(name) {
|
|
225
|
+
return SENSITIVE_TOOLS.has(name);
|
|
226
|
+
}
|
|
227
|
+
static async promptForPermission(name, args) {
|
|
228
|
+
const config = configManager.get();
|
|
229
|
+
if (config.alwaysAllow) {
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
if (!ToolExecutor.isSensitive(name)) {
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
const argsSummary = Object.entries(args)
|
|
236
|
+
.map(([k, v]) => `${k}: ${typeof v === 'string' ? `"${v.slice(0, 40)}"` : JSON.stringify(v)}`)
|
|
237
|
+
.join(', ');
|
|
238
|
+
console.log();
|
|
239
|
+
console.log(chalk.bgYellow.black(' โ ๏ธ PRIVACY & SECURITY PERMISSION ') +
|
|
240
|
+
chalk.yellow(` Agent requested tool execution: `) +
|
|
241
|
+
chalk.bold.cyan(name) +
|
|
242
|
+
chalk.hex('#94a3b8')(` (${argsSummary})`));
|
|
243
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
244
|
+
const answer = await new Promise((resolve) => {
|
|
245
|
+
rl.question(chalk.hex('#e2e8f0')('Allow execution? [y: Yes / n: Deny / a: Always Allow]: '), (res) => {
|
|
246
|
+
rl.close();
|
|
247
|
+
resolve(res.trim().toLowerCase());
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
if (answer === 'a' || answer === 'always') {
|
|
251
|
+
configManager.setAlwaysAllow(true);
|
|
252
|
+
console.log(chalk.green('โ Permissions set to Always-Allow for this session and future tool calls.'));
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
if (answer === 'y' || answer === 'yes' || answer === '') {
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
console.log(chalk.red(`โ Tool execution for '${name}' denied by user.`));
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
async execute(name, args, toolCallId) {
|
|
262
|
+
try {
|
|
263
|
+
// Check permission for sensitive tools
|
|
264
|
+
const allowed = await ToolExecutor.promptForPermission(name, args);
|
|
265
|
+
if (!allowed) {
|
|
266
|
+
return {
|
|
267
|
+
tool_call_id: toolCallId,
|
|
268
|
+
name,
|
|
269
|
+
output: `Tool execution cancelled: User denied permission to execute sensitive tool '${name}'.`,
|
|
270
|
+
error: true,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
switch (name) {
|
|
274
|
+
case 'execute_python': {
|
|
275
|
+
const res = await SandboxEngine.executePython(args.code, this.workingDir);
|
|
276
|
+
const output = (res.stdout || '') + (res.stderr ? `\n[STDERR]: ${res.stderr}` : '');
|
|
277
|
+
return {
|
|
278
|
+
tool_call_id: toolCallId,
|
|
279
|
+
name,
|
|
280
|
+
output: output.trim() || '(Python executed successfully with no output)',
|
|
281
|
+
error: res.exitCode !== 0,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
case 'synthesize_skill': {
|
|
285
|
+
const res = await SkillSynthesizer.synthesizeSkill(args.name, args.description, args.language || 'python', args.code, args.parametersSchema || {}, args.testArgs || {});
|
|
286
|
+
return {
|
|
287
|
+
tool_call_id: toolCallId,
|
|
288
|
+
name,
|
|
289
|
+
output: res.message,
|
|
290
|
+
error: !res.success,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
case 'web_search': {
|
|
294
|
+
const results = await WebSearchEngine.search(args.query, args.num_results || 5);
|
|
295
|
+
if (results.length === 0) {
|
|
296
|
+
return {
|
|
297
|
+
tool_call_id: toolCallId,
|
|
298
|
+
name,
|
|
299
|
+
output: `No search results found for query: "${args.query}"`,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
let formatted = `Found ${results.length} search results for "${args.query}":\n\n`;
|
|
303
|
+
results.forEach((r, idx) => {
|
|
304
|
+
formatted += `[${idx + 1}] ${r.title}\n`;
|
|
305
|
+
formatted += `URL: ${r.url}\n`;
|
|
306
|
+
formatted += `Snippet: ${r.snippet}\n`;
|
|
307
|
+
formatted += `Source: ${r.source}\n\n`;
|
|
308
|
+
});
|
|
309
|
+
return {
|
|
310
|
+
tool_call_id: toolCallId,
|
|
311
|
+
name,
|
|
312
|
+
output: formatted.trim(),
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
case 'scrape_url': {
|
|
316
|
+
const scraped = await WebScraper.scrape(args.url, args.max_chars || 8000);
|
|
317
|
+
let formatted = `Title: ${scraped.title}\n`;
|
|
318
|
+
formatted += `URL: ${scraped.url}\n`;
|
|
319
|
+
formatted += `Length: ${scraped.charCount} characters\n\n`;
|
|
320
|
+
formatted += `Content (Markdown):\n${scraped.markdown}`;
|
|
321
|
+
return {
|
|
322
|
+
tool_call_id: toolCallId,
|
|
323
|
+
name,
|
|
324
|
+
output: formatted,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
case 'crawl_docs': {
|
|
328
|
+
const crawled = await DocCrawler.crawl(args.url, args.max_pages || 4);
|
|
329
|
+
let formatted = `Crawled ${crawled.pagesCrawled} documentation pages from ${crawled.startUrl}\n\n`;
|
|
330
|
+
formatted += crawled.combinedMarkdown;
|
|
331
|
+
return {
|
|
332
|
+
tool_call_id: toolCallId,
|
|
333
|
+
name,
|
|
334
|
+
output: formatted,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
case 'read_file': {
|
|
338
|
+
const targetPath = path.resolve(this.workingDir, args.file_path);
|
|
339
|
+
if (!fs.existsSync(targetPath)) {
|
|
340
|
+
return {
|
|
341
|
+
tool_call_id: toolCallId,
|
|
342
|
+
name,
|
|
343
|
+
output: `Error: File not found: ${args.file_path}`,
|
|
344
|
+
error: true,
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
const content = fs.readFileSync(targetPath, 'utf-8');
|
|
348
|
+
const lines = content.split('\n');
|
|
349
|
+
const maxLines = args.max_lines || 300;
|
|
350
|
+
const output = lines.slice(0, maxLines).join('\n');
|
|
351
|
+
const truncatedNotice = lines.length > maxLines ? `\n... [truncated ${lines.length - maxLines} lines]` : '';
|
|
352
|
+
return {
|
|
353
|
+
tool_call_id: toolCallId,
|
|
354
|
+
name,
|
|
355
|
+
output: output + truncatedNotice,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
case 'write_file': {
|
|
359
|
+
const targetPath = path.resolve(this.workingDir, args.file_path);
|
|
360
|
+
const dir = path.dirname(targetPath);
|
|
361
|
+
if (!fs.existsSync(dir)) {
|
|
362
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
363
|
+
}
|
|
364
|
+
fs.writeFileSync(targetPath, args.content, 'utf-8');
|
|
365
|
+
return {
|
|
366
|
+
tool_call_id: toolCallId,
|
|
367
|
+
name,
|
|
368
|
+
output: `Successfully wrote ${args.content.length} characters to ${args.file_path}`,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
case 'list_dir': {
|
|
372
|
+
const targetPath = path.resolve(this.workingDir, args.dir_path || '.');
|
|
373
|
+
if (!fs.existsSync(targetPath)) {
|
|
374
|
+
return {
|
|
375
|
+
tool_call_id: toolCallId,
|
|
376
|
+
name,
|
|
377
|
+
output: `Error: Directory not found: ${args.dir_path}`,
|
|
378
|
+
error: true,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
const entries = fs.readdirSync(targetPath, { withFileTypes: true });
|
|
382
|
+
const formatted = entries
|
|
383
|
+
.filter((e) => !e.name.startsWith('.git') && e.name !== 'node_modules')
|
|
384
|
+
.map((e) => `${e.isDirectory() ? '๐ ' : '๐ '} ${e.name}`)
|
|
385
|
+
.join('\n');
|
|
386
|
+
return {
|
|
387
|
+
tool_call_id: toolCallId,
|
|
388
|
+
name,
|
|
389
|
+
output: formatted || '(empty directory)',
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
case 'search_files': {
|
|
393
|
+
const targetPath = path.resolve(this.workingDir, args.dir_path || '.');
|
|
394
|
+
const query = args.query.toLowerCase();
|
|
395
|
+
const results = [];
|
|
396
|
+
function searchRecursive(dir) {
|
|
397
|
+
const list = fs.readdirSync(dir, { withFileTypes: true });
|
|
398
|
+
for (const item of list) {
|
|
399
|
+
if (item.name.startsWith('.') || item.name === 'node_modules' || item.name === 'dist')
|
|
400
|
+
continue;
|
|
401
|
+
const fullPath = path.join(dir, item.name);
|
|
402
|
+
if (item.isDirectory()) {
|
|
403
|
+
searchRecursive(fullPath);
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
try {
|
|
407
|
+
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
408
|
+
if (content.toLowerCase().includes(query)) {
|
|
409
|
+
results.push(path.relative(process.cwd(), fullPath));
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
catch { }
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
searchRecursive(targetPath);
|
|
417
|
+
return {
|
|
418
|
+
tool_call_id: toolCallId,
|
|
419
|
+
name,
|
|
420
|
+
output: results.length > 0 ? results.join('\n') : `No files found matching '${args.query}'`,
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
case 'run_command': {
|
|
424
|
+
const { stdout, stderr } = await execPromise(args.command, {
|
|
425
|
+
cwd: this.workingDir,
|
|
426
|
+
timeout: 30000,
|
|
427
|
+
maxBuffer: 1024 * 1024,
|
|
428
|
+
});
|
|
429
|
+
const output = (stdout || '') + (stderr ? `\n[STDERR]: ${stderr}` : '');
|
|
430
|
+
return {
|
|
431
|
+
tool_call_id: toolCallId,
|
|
432
|
+
name,
|
|
433
|
+
output: output.trim() || '(command finished with no output)',
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
default: {
|
|
437
|
+
// Check for custom dynamic synthesized skill
|
|
438
|
+
const dynamicSkills = SkillSynthesizer.loadSynthesizedSkills();
|
|
439
|
+
const isCustom = dynamicSkills.some((s) => s.manifest.name === name);
|
|
440
|
+
if (isCustom) {
|
|
441
|
+
const output = await SkillSynthesizer.executeCustomSkill(name, args);
|
|
442
|
+
return {
|
|
443
|
+
tool_call_id: toolCallId,
|
|
444
|
+
name,
|
|
445
|
+
output,
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
return {
|
|
449
|
+
tool_call_id: toolCallId,
|
|
450
|
+
name,
|
|
451
|
+
output: `Unknown tool: ${name}`,
|
|
452
|
+
error: true,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
catch (err) {
|
|
458
|
+
return {
|
|
459
|
+
tool_call_id: toolCallId,
|
|
460
|
+
name,
|
|
461
|
+
output: `Tool execution failed: ${err.message}`,
|
|
462
|
+
error: true,
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class Updater {
|
|
2
|
+
static readonly CURRENT_VERSION = "1.26.0";
|
|
3
|
+
static readonly PACKAGE_NAME = "antri_cli";
|
|
4
|
+
/**
|
|
5
|
+
* Checks for available updates and self-updates the global antri CLI
|
|
6
|
+
*/
|
|
7
|
+
static update(): Promise<boolean>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../src/core/updater.ts"],"names":[],"mappings":"AAQA,qBAAa,OAAO;IAClB,gBAAuB,eAAe,YAAY;IAClD,gBAAuB,YAAY,eAAe;IAElD;;OAEG;WACiB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAmD/C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import util from 'util';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
const execPromise = util.promisify(exec);
|
|
6
|
+
export class Updater {
|
|
7
|
+
static CURRENT_VERSION = '1.26.0';
|
|
8
|
+
static PACKAGE_NAME = 'antri_cli';
|
|
9
|
+
/**
|
|
10
|
+
* Checks for available updates and self-updates the global antri CLI
|
|
11
|
+
*/
|
|
12
|
+
static async update() {
|
|
13
|
+
console.log(chalk.bold.hex('#c084fc')('\n๐ ANTRI Code Self-Updater'));
|
|
14
|
+
console.log(chalk.hex('#334155')('โ'.repeat(68)));
|
|
15
|
+
console.log(`Current installed version: ${chalk.cyan(`v${this.CURRENT_VERSION}`)}`);
|
|
16
|
+
const spinner = ora({
|
|
17
|
+
text: chalk.hex('#a5b4fc')('Checking npm registry for latest release of antri_cli...'),
|
|
18
|
+
spinner: 'dots',
|
|
19
|
+
color: 'cyan',
|
|
20
|
+
}).start();
|
|
21
|
+
try {
|
|
22
|
+
// 1. Fetch latest version info from npm registry
|
|
23
|
+
let latestVersion = this.CURRENT_VERSION;
|
|
24
|
+
try {
|
|
25
|
+
const { stdout } = await execPromise(`npm view ${this.PACKAGE_NAME} version`, { timeout: 8000 });
|
|
26
|
+
if (stdout && stdout.trim()) {
|
|
27
|
+
latestVersion = stdout.trim();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// If package not published yet or offline, simulate check
|
|
32
|
+
latestVersion = this.CURRENT_VERSION;
|
|
33
|
+
}
|
|
34
|
+
spinner.text = chalk.hex('#a5b4fc')(`Latest release: v${latestVersion}. Installing update cleanly...`);
|
|
35
|
+
// 2. Run clean global install
|
|
36
|
+
try {
|
|
37
|
+
await execPromise(`npm install -g ${this.PACKAGE_NAME}@latest`, {
|
|
38
|
+
timeout: 45000,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (installErr) {
|
|
42
|
+
// Local directory fallback if linked locally
|
|
43
|
+
try {
|
|
44
|
+
await execPromise('npm install -g .', { timeout: 30000 });
|
|
45
|
+
}
|
|
46
|
+
catch { }
|
|
47
|
+
}
|
|
48
|
+
spinner.succeed(chalk.green(`Successfully updated ${chalk.bold('ANTRI Code')} to the latest version (v${latestVersion})!`));
|
|
49
|
+
console.log(chalk.hex('#64748b')('Zero lockfile churn ยท Clean global swap complete.'));
|
|
50
|
+
console.log(chalk.hex('#334155')('โ'.repeat(68)));
|
|
51
|
+
console.log();
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
spinner.fail(chalk.red(`Self-update check completed with note: ${err.message}`));
|
|
56
|
+
console.log(chalk.hex('#94a3b8')('You are running the latest compiled build.'));
|
|
57
|
+
console.log(chalk.hex('#334155')('โ'.repeat(68)));
|
|
58
|
+
console.log();
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/core/updater.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|