@defai.digital/cli 13.1.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/LICENSE +214 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +11 -0
- package/dist/bin.js.map +1 -0
- package/dist/bootstrap.d.ts +144 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +315 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +84 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ability.d.ts +17 -0
- package/dist/commands/ability.d.ts.map +1 -0
- package/dist/commands/ability.js +286 -0
- package/dist/commands/ability.js.map +1 -0
- package/dist/commands/agent.d.ts +18 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +361 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/call.d.ts +15 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +503 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/cleanup.d.ts +18 -0
- package/dist/commands/cleanup.d.ts.map +1 -0
- package/dist/commands/cleanup.js +300 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/config.d.ts +16 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +513 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/discuss.d.ts +16 -0
- package/dist/commands/discuss.d.ts.map +1 -0
- package/dist/commands/discuss.js +700 -0
- package/dist/commands/discuss.js.map +1 -0
- package/dist/commands/doctor.d.ts +48 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +356 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/guard.d.ts +12 -0
- package/dist/commands/guard.d.ts.map +1 -0
- package/dist/commands/guard.js +225 -0
- package/dist/commands/guard.js.map +1 -0
- package/dist/commands/help.d.ts +11 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +180 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/history.d.ts +19 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +200 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/index.d.ts +23 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +26 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/iterate.d.ts +16 -0
- package/dist/commands/iterate.d.ts.map +1 -0
- package/dist/commands/iterate.js +72 -0
- package/dist/commands/iterate.js.map +1 -0
- package/dist/commands/list.d.ts +6 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +62 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/mcp.d.ts +16 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +57 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/resume.d.ts +18 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +208 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/review.d.ts +13 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +450 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/run.d.ts +6 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +158 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/scaffold.d.ts +20 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +924 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/session.d.ts +20 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +504 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +14 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +762 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +17 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +227 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/trace.d.ts +6 -0
- package/dist/commands/trace.d.ts.map +1 -0
- package/dist/commands/trace.js +204 -0
- package/dist/commands/trace.js.map +1 -0
- package/dist/commands/update.d.ts +24 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +296 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +14 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +288 -0
- package/dist/parser.js.map +1 -0
- package/dist/types.d.ts +91 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +29 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/dangerous-op-guard.d.ts +33 -0
- package/dist/utils/dangerous-op-guard.d.ts.map +1 -0
- package/dist/utils/dangerous-op-guard.js +112 -0
- package/dist/utils/dangerous-op-guard.js.map +1 -0
- package/dist/utils/database.d.ts +85 -0
- package/dist/utils/database.d.ts.map +1 -0
- package/dist/utils/database.js +184 -0
- package/dist/utils/database.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/provider-factory.d.ts +31 -0
- package/dist/utils/provider-factory.d.ts.map +1 -0
- package/dist/utils/provider-factory.js +109 -0
- package/dist/utils/provider-factory.js.map +1 -0
- package/dist/utils/storage-instances.d.ts +19 -0
- package/dist/utils/storage-instances.d.ts.map +1 -0
- package/dist/utils/storage-instances.js +20 -0
- package/dist/utils/storage-instances.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update Command
|
|
3
|
+
*
|
|
4
|
+
* Check for updates and upgrade AutomatosX CLI to the latest version.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* ax update Check for updates and prompt to install
|
|
8
|
+
* ax update --check Only check for updates (don't install)
|
|
9
|
+
* ax update --yes Skip confirmation and install immediately
|
|
10
|
+
*
|
|
11
|
+
* @module @defai.digital/cli/commands/update
|
|
12
|
+
* @license Apache-2.0
|
|
13
|
+
* @copyright 2024 DEFAI Private Limited
|
|
14
|
+
*/
|
|
15
|
+
import { exec, execSync, spawnSync } from 'node:child_process';
|
|
16
|
+
import { promisify } from 'node:util';
|
|
17
|
+
import { createInterface } from 'node:readline';
|
|
18
|
+
import { createRequire } from 'node:module';
|
|
19
|
+
const execAsync = promisify(exec);
|
|
20
|
+
/**
|
|
21
|
+
* Package name for npm operations
|
|
22
|
+
*/
|
|
23
|
+
export const PACKAGE_NAME = '@defai.digital/cli';
|
|
24
|
+
/**
|
|
25
|
+
* Read CLI version from package.json
|
|
26
|
+
*/
|
|
27
|
+
const require = createRequire(import.meta.url);
|
|
28
|
+
const pkg = require('../../package.json');
|
|
29
|
+
const CLI_VERSION = pkg.version;
|
|
30
|
+
/**
|
|
31
|
+
* Get current installed version
|
|
32
|
+
*/
|
|
33
|
+
async function getCurrentVersion() {
|
|
34
|
+
try {
|
|
35
|
+
// Try to get from npm global installation
|
|
36
|
+
const { stdout } = await execAsync(`npm list -g ${PACKAGE_NAME} --depth=0 --json`, { timeout: 10000 });
|
|
37
|
+
const parsed = JSON.parse(stdout);
|
|
38
|
+
return parsed.dependencies?.[PACKAGE_NAME]?.version ?? CLI_VERSION;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Fallback to package.json version
|
|
42
|
+
return CLI_VERSION;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get latest version from npm registry
|
|
47
|
+
*/
|
|
48
|
+
async function getLatestVersion() {
|
|
49
|
+
try {
|
|
50
|
+
const { stdout } = await execAsync(`npm view ${PACKAGE_NAME} version`, {
|
|
51
|
+
timeout: 10000,
|
|
52
|
+
});
|
|
53
|
+
return stdout.trim() || 'unknown';
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return 'unknown';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if version a is newer than version b
|
|
61
|
+
*/
|
|
62
|
+
function isNewer(a, b) {
|
|
63
|
+
const parseVersion = (v) => {
|
|
64
|
+
if (!v || v === 'unknown')
|
|
65
|
+
return null;
|
|
66
|
+
const version = v.split('-')[0] ?? v;
|
|
67
|
+
const cleanVersion = version.startsWith('v') ? version.substring(1) : version;
|
|
68
|
+
const parts = cleanVersion.split('.').map(Number);
|
|
69
|
+
if (parts.some(isNaN))
|
|
70
|
+
return null;
|
|
71
|
+
return parts;
|
|
72
|
+
};
|
|
73
|
+
const aParts = parseVersion(a);
|
|
74
|
+
const bParts = parseVersion(b);
|
|
75
|
+
if (!aParts || !bParts)
|
|
76
|
+
return false;
|
|
77
|
+
const [aMajor = 0, aMinor = 0, aPatch = 0] = aParts;
|
|
78
|
+
const [bMajor = 0, bMinor = 0, bPatch = 0] = bParts;
|
|
79
|
+
return aMajor !== bMajor
|
|
80
|
+
? aMajor > bMajor
|
|
81
|
+
: aMinor !== bMinor
|
|
82
|
+
? aMinor > bMinor
|
|
83
|
+
: aPatch > bPatch;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Show changelog from GitHub releases
|
|
87
|
+
*/
|
|
88
|
+
async function showChangelog(to) {
|
|
89
|
+
try {
|
|
90
|
+
const { stdout } = await execAsync(`curl -s https://api.github.com/repos/defai-digital/automatosx/releases/tags/v${to}`, { timeout: 10000 });
|
|
91
|
+
const release = JSON.parse(stdout);
|
|
92
|
+
if (release.body) {
|
|
93
|
+
const lines = release.body.split('\n').slice(0, 10);
|
|
94
|
+
const formatted = lines.map((line) => {
|
|
95
|
+
if (line.startsWith('#'))
|
|
96
|
+
return `\n${line}`;
|
|
97
|
+
return line.trim() ? ` ${line}` : '';
|
|
98
|
+
});
|
|
99
|
+
return (formatted.join('\n') +
|
|
100
|
+
`\n\n Full changelog: https://github.com/defai-digital/automatosx/releases/tag/v${to}`);
|
|
101
|
+
}
|
|
102
|
+
return `View changelog: https://github.com/defai-digital/automatosx/releases/tag/v${to}`;
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return `View changelog: https://github.com/defai-digital/automatosx/releases/tag/v${to}`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Install update
|
|
110
|
+
*/
|
|
111
|
+
async function installUpdate(version) {
|
|
112
|
+
const { stderr } = await execAsync(`npm install -g ${PACKAGE_NAME}@${version}`, {
|
|
113
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
114
|
+
timeout: 120000, // 2 minute timeout
|
|
115
|
+
});
|
|
116
|
+
if (stderr && !stderr.includes('npm warn')) {
|
|
117
|
+
console.warn('Update installation warnings:', stderr);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check if ax-cli is installed
|
|
122
|
+
*/
|
|
123
|
+
function isAxCliInstalled() {
|
|
124
|
+
try {
|
|
125
|
+
const result = spawnSync('ax-cli', ['--version'], {
|
|
126
|
+
encoding: 'utf-8',
|
|
127
|
+
timeout: 5000,
|
|
128
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
129
|
+
});
|
|
130
|
+
return result.status === 0;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Update ax-cli if installed
|
|
138
|
+
*/
|
|
139
|
+
async function updateAxCli() {
|
|
140
|
+
try {
|
|
141
|
+
execSync('ax-cli update -y', {
|
|
142
|
+
stdio: 'inherit',
|
|
143
|
+
timeout: 120000,
|
|
144
|
+
});
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Prompt user for confirmation
|
|
153
|
+
*/
|
|
154
|
+
async function promptConfirm(message) {
|
|
155
|
+
const rl = createInterface({
|
|
156
|
+
input: process.stdin,
|
|
157
|
+
output: process.stdout,
|
|
158
|
+
});
|
|
159
|
+
return new Promise((resolve) => {
|
|
160
|
+
rl.question(message, (answer) => {
|
|
161
|
+
rl.close();
|
|
162
|
+
const normalized = answer.toLowerCase().trim();
|
|
163
|
+
resolve(normalized === 'y' || normalized === 'yes');
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Parse update command options
|
|
169
|
+
*/
|
|
170
|
+
function parseUpdateOptions(args, _options) {
|
|
171
|
+
let checkOnly = false;
|
|
172
|
+
let skipConfirm = false;
|
|
173
|
+
for (const arg of args) {
|
|
174
|
+
if (arg === '--check' || arg === '-c') {
|
|
175
|
+
checkOnly = true;
|
|
176
|
+
}
|
|
177
|
+
if (arg === '--yes' || arg === '-y') {
|
|
178
|
+
skipConfirm = true;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return { checkOnly, skipConfirm };
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Handles the 'update' command
|
|
185
|
+
*/
|
|
186
|
+
export async function updateCommand(args, options) {
|
|
187
|
+
const { checkOnly, skipConfirm } = parseUpdateOptions(args, options);
|
|
188
|
+
console.log('\nAutomatosX Update Checker\n');
|
|
189
|
+
try {
|
|
190
|
+
// 1. Get current version
|
|
191
|
+
const currentVersion = await getCurrentVersion();
|
|
192
|
+
console.log(`Current version: ${currentVersion}`);
|
|
193
|
+
// 2. Check for latest version
|
|
194
|
+
console.log('Checking for updates...');
|
|
195
|
+
const latestVersion = await getLatestVersion();
|
|
196
|
+
console.log(`Latest version: ${latestVersion}\n`);
|
|
197
|
+
// 3. Compare versions
|
|
198
|
+
if (latestVersion === 'unknown') {
|
|
199
|
+
return {
|
|
200
|
+
success: false,
|
|
201
|
+
message: 'Could not check for updates. Please check your network connection.',
|
|
202
|
+
data: { currentVersion, latestVersion },
|
|
203
|
+
exitCode: 1,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
if (currentVersion === latestVersion) {
|
|
207
|
+
return {
|
|
208
|
+
success: true,
|
|
209
|
+
message: 'You are already running the latest version!',
|
|
210
|
+
data: { currentVersion, latestVersion, upToDate: true },
|
|
211
|
+
exitCode: 0,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
if (isNewer(latestVersion, currentVersion)) {
|
|
215
|
+
console.log(`New version available: ${currentVersion} -> ${latestVersion}`);
|
|
216
|
+
// 4. Show changelog
|
|
217
|
+
const changelog = await showChangelog(latestVersion);
|
|
218
|
+
console.log('\nWhats new:');
|
|
219
|
+
console.log(changelog);
|
|
220
|
+
// 5. If only checking, exit here
|
|
221
|
+
if (checkOnly) {
|
|
222
|
+
console.log('\nTo install the update, run:');
|
|
223
|
+
console.log(` npm install -g ${PACKAGE_NAME}@${latestVersion}\n`);
|
|
224
|
+
console.log('Or run: ax update\n');
|
|
225
|
+
return {
|
|
226
|
+
success: true,
|
|
227
|
+
message: undefined,
|
|
228
|
+
data: {
|
|
229
|
+
currentVersion,
|
|
230
|
+
latestVersion,
|
|
231
|
+
updateAvailable: true,
|
|
232
|
+
},
|
|
233
|
+
exitCode: 0,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
// 6. Confirm update (unless --yes flag)
|
|
237
|
+
if (!skipConfirm) {
|
|
238
|
+
const confirmed = await promptConfirm('\nWould you like to update now? (y/N) ');
|
|
239
|
+
if (!confirmed) {
|
|
240
|
+
return {
|
|
241
|
+
success: true,
|
|
242
|
+
message: 'Update cancelled.',
|
|
243
|
+
data: { currentVersion, latestVersion, cancelled: true },
|
|
244
|
+
exitCode: 0,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// 7. Perform update
|
|
249
|
+
console.log('\nInstalling update...\n');
|
|
250
|
+
await installUpdate(latestVersion);
|
|
251
|
+
console.log('\nAutomatosX updated successfully!');
|
|
252
|
+
console.log(`New version: ${latestVersion}`);
|
|
253
|
+
console.log('\nRun "ax --version" to verify.\n');
|
|
254
|
+
// 8. Update ax-cli if installed
|
|
255
|
+
if (isAxCliInstalled()) {
|
|
256
|
+
console.log('Updating ax-cli...\n');
|
|
257
|
+
const axUpdated = await updateAxCli();
|
|
258
|
+
if (axUpdated) {
|
|
259
|
+
console.log('ax-cli updated successfully!\n');
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
console.log('ax-cli update failed. You can try manually: ax-cli update -y\n');
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return {
|
|
266
|
+
success: true,
|
|
267
|
+
message: undefined,
|
|
268
|
+
data: {
|
|
269
|
+
currentVersion,
|
|
270
|
+
latestVersion,
|
|
271
|
+
updated: true,
|
|
272
|
+
},
|
|
273
|
+
exitCode: 0,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
// Current version is newer than published
|
|
278
|
+
return {
|
|
279
|
+
success: true,
|
|
280
|
+
message: `Your version (${currentVersion}) is newer than published (${latestVersion})`,
|
|
281
|
+
data: { currentVersion, latestVersion, development: true },
|
|
282
|
+
exitCode: 0,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
288
|
+
return {
|
|
289
|
+
success: false,
|
|
290
|
+
message: `Error checking for updates: ${message}`,
|
|
291
|
+
data: undefined,
|
|
292
|
+
exitCode: 1,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { run, createCLI } from './cli.js';
|
|
2
|
+
export { parseArgs, formatOutput, parseTime } from './parser.js';
|
|
3
|
+
export { runCommand, listCommand, traceCommand, doctorCommand, guardCommand, discussCommand, helpCommand, versionCommand, CLI_VERSION, resumeCommand, historyCommand, statusCommand, cleanupCommand, } from './commands/index.js';
|
|
4
|
+
export { checkDangerousOp, listDangerousOperations, isDangerousOp, type DangerousOpOptions, } from './utils/index.js';
|
|
5
|
+
export { resetStepExecutor } from './bootstrap.js';
|
|
6
|
+
export type { CLIConfig, CLIOptions, ParsedCommand, CommandResult, CommandHandler, CLICommand, } from './types.js';
|
|
7
|
+
export { CLI_COMMANDS } from './types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,WAAW,EAEX,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,YAAY,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Main CLI exports
|
|
2
|
+
export { run, createCLI } from './cli.js';
|
|
3
|
+
export { parseArgs, formatOutput, parseTime } from './parser.js';
|
|
4
|
+
// Command exports
|
|
5
|
+
export { runCommand, listCommand, traceCommand, doctorCommand, guardCommand, discussCommand, helpCommand, versionCommand, CLI_VERSION,
|
|
6
|
+
// High-value additions
|
|
7
|
+
resumeCommand, historyCommand, statusCommand, cleanupCommand, } from './commands/index.js';
|
|
8
|
+
// Utility exports
|
|
9
|
+
export { checkDangerousOp, listDangerousOperations, isDangerousOp, } from './utils/index.js';
|
|
10
|
+
// Bootstrap exports (for testing)
|
|
11
|
+
export { resetStepExecutor } from './bootstrap.js';
|
|
12
|
+
export { CLI_COMMANDS } from './types.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjE,kBAAkB;AAClB,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,WAAW;AACX,uBAAuB;AACvB,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,GAEd,MAAM,kBAAkB,CAAC;AAE1B,kCAAkC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAYnD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/parser.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ParsedCommand } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parses CLI arguments into a command and options
|
|
4
|
+
*/
|
|
5
|
+
export declare function parseArgs(argv: string[]): ParsedCommand;
|
|
6
|
+
/**
|
|
7
|
+
* Formats output based on format option
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatOutput(data: unknown, format: 'text' | 'json'): string;
|
|
10
|
+
/**
|
|
11
|
+
* Parses a time string (e.g., "5m", "1h", "30s") into milliseconds
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseTime(timeStr: string): number;
|
|
14
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AA0D5D;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAoMvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,GAAG,MAAM,GACtB,MAAM,CAoBR;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAqBjD"}
|
package/dist/parser.js
ADDED
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default CLI options
|
|
3
|
+
*/
|
|
4
|
+
const DEFAULT_OPTIONS = {
|
|
5
|
+
help: false,
|
|
6
|
+
version: false,
|
|
7
|
+
verbose: false,
|
|
8
|
+
format: 'text',
|
|
9
|
+
workflowDir: undefined,
|
|
10
|
+
workflowId: undefined,
|
|
11
|
+
traceId: undefined,
|
|
12
|
+
limit: undefined,
|
|
13
|
+
input: undefined,
|
|
14
|
+
// Iterate mode defaults
|
|
15
|
+
iterate: false,
|
|
16
|
+
maxIterations: undefined,
|
|
17
|
+
maxTime: undefined,
|
|
18
|
+
noContext: false,
|
|
19
|
+
// Ability-related defaults
|
|
20
|
+
category: undefined,
|
|
21
|
+
tags: undefined,
|
|
22
|
+
agent: undefined,
|
|
23
|
+
task: undefined,
|
|
24
|
+
core: undefined,
|
|
25
|
+
maxTokens: undefined,
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Global options that are handled by the parser
|
|
29
|
+
*/
|
|
30
|
+
const GLOBAL_OPTIONS = new Set([
|
|
31
|
+
'help',
|
|
32
|
+
'version',
|
|
33
|
+
'verbose',
|
|
34
|
+
'format',
|
|
35
|
+
'workflow-dir',
|
|
36
|
+
'workflow-id',
|
|
37
|
+
'trace-id',
|
|
38
|
+
'limit',
|
|
39
|
+
'input',
|
|
40
|
+
// Iterate mode options
|
|
41
|
+
'iterate',
|
|
42
|
+
'max-iterations',
|
|
43
|
+
'max-time',
|
|
44
|
+
'no-context',
|
|
45
|
+
// Ability-related options
|
|
46
|
+
'category',
|
|
47
|
+
'tags',
|
|
48
|
+
'agent',
|
|
49
|
+
'task',
|
|
50
|
+
'core',
|
|
51
|
+
'max-tokens',
|
|
52
|
+
]);
|
|
53
|
+
const GLOBAL_SHORT_FLAGS = new Set(['h', 'v', 'V']);
|
|
54
|
+
/**
|
|
55
|
+
* Parses CLI arguments into a command and options
|
|
56
|
+
*/
|
|
57
|
+
export function parseArgs(argv) {
|
|
58
|
+
// Skip node and script name
|
|
59
|
+
const args = argv.slice(2);
|
|
60
|
+
const options = { ...DEFAULT_OPTIONS };
|
|
61
|
+
const positionalArgs = [];
|
|
62
|
+
const commandArgs = []; // Args to pass through to command
|
|
63
|
+
let command = 'help';
|
|
64
|
+
let i = 0;
|
|
65
|
+
while (i < args.length) {
|
|
66
|
+
const arg = args[i];
|
|
67
|
+
if (arg === undefined) {
|
|
68
|
+
i++;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (arg.startsWith('--')) {
|
|
72
|
+
const key = arg.slice(2);
|
|
73
|
+
const nextArg = args[i + 1];
|
|
74
|
+
// Check if this is a global option
|
|
75
|
+
if (!GLOBAL_OPTIONS.has(key)) {
|
|
76
|
+
// Pass unknown flags through to command
|
|
77
|
+
commandArgs.push(arg);
|
|
78
|
+
i++;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
switch (key) {
|
|
82
|
+
case 'help':
|
|
83
|
+
options.help = true;
|
|
84
|
+
break;
|
|
85
|
+
case 'version':
|
|
86
|
+
options.version = true;
|
|
87
|
+
break;
|
|
88
|
+
case 'verbose':
|
|
89
|
+
options.verbose = true;
|
|
90
|
+
break;
|
|
91
|
+
case 'format':
|
|
92
|
+
if (nextArg === 'json' || nextArg === 'text') {
|
|
93
|
+
options.format = nextArg;
|
|
94
|
+
i++;
|
|
95
|
+
}
|
|
96
|
+
break;
|
|
97
|
+
case 'workflow-dir':
|
|
98
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
99
|
+
options.workflowDir = nextArg;
|
|
100
|
+
i++;
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
case 'workflow-id':
|
|
104
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
105
|
+
options.workflowId = nextArg;
|
|
106
|
+
i++;
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
case 'trace-id':
|
|
110
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
111
|
+
options.traceId = nextArg;
|
|
112
|
+
i++;
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
case 'limit':
|
|
116
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
117
|
+
const num = parseInt(nextArg, 10);
|
|
118
|
+
if (!isNaN(num)) {
|
|
119
|
+
options.limit = num;
|
|
120
|
+
}
|
|
121
|
+
i++;
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
case 'input':
|
|
125
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
126
|
+
options.input = nextArg;
|
|
127
|
+
i++;
|
|
128
|
+
}
|
|
129
|
+
break;
|
|
130
|
+
// Iterate mode options
|
|
131
|
+
case 'iterate':
|
|
132
|
+
options.iterate = true;
|
|
133
|
+
break;
|
|
134
|
+
case 'max-iterations':
|
|
135
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
136
|
+
const num = parseInt(nextArg, 10);
|
|
137
|
+
if (!isNaN(num)) {
|
|
138
|
+
options.maxIterations = num;
|
|
139
|
+
}
|
|
140
|
+
i++;
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
case 'max-time':
|
|
144
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
145
|
+
options.maxTime = nextArg;
|
|
146
|
+
i++;
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
149
|
+
case 'no-context':
|
|
150
|
+
options.noContext = true;
|
|
151
|
+
break;
|
|
152
|
+
// Ability-related options
|
|
153
|
+
case 'category':
|
|
154
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
155
|
+
options.category = nextArg;
|
|
156
|
+
i++;
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
case 'tags':
|
|
160
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
161
|
+
options.tags = nextArg.split(',').map((t) => t.trim());
|
|
162
|
+
i++;
|
|
163
|
+
}
|
|
164
|
+
break;
|
|
165
|
+
case 'agent':
|
|
166
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
167
|
+
options.agent = nextArg;
|
|
168
|
+
i++;
|
|
169
|
+
}
|
|
170
|
+
break;
|
|
171
|
+
case 'task':
|
|
172
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
173
|
+
options.task = nextArg;
|
|
174
|
+
i++;
|
|
175
|
+
}
|
|
176
|
+
break;
|
|
177
|
+
case 'core':
|
|
178
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
179
|
+
options.core = nextArg;
|
|
180
|
+
i++;
|
|
181
|
+
}
|
|
182
|
+
break;
|
|
183
|
+
case 'max-tokens':
|
|
184
|
+
if (nextArg !== undefined && !nextArg.startsWith('-')) {
|
|
185
|
+
const num = parseInt(nextArg, 10);
|
|
186
|
+
if (!isNaN(num)) {
|
|
187
|
+
options.maxTokens = num;
|
|
188
|
+
}
|
|
189
|
+
i++;
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else if (arg.startsWith('-')) {
|
|
195
|
+
// Short flags - check if all are global
|
|
196
|
+
const flags = arg.slice(1);
|
|
197
|
+
let allGlobal = true;
|
|
198
|
+
for (const flag of flags) {
|
|
199
|
+
if (!GLOBAL_SHORT_FLAGS.has(flag)) {
|
|
200
|
+
allGlobal = false;
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (!allGlobal) {
|
|
205
|
+
// Pass through to command if any flag is not global
|
|
206
|
+
commandArgs.push(arg);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
// Process global short flags
|
|
210
|
+
for (const flag of flags) {
|
|
211
|
+
switch (flag) {
|
|
212
|
+
case 'h':
|
|
213
|
+
options.help = true;
|
|
214
|
+
break;
|
|
215
|
+
case 'v':
|
|
216
|
+
options.verbose = true;
|
|
217
|
+
break;
|
|
218
|
+
case 'V':
|
|
219
|
+
options.version = true;
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
positionalArgs.push(arg);
|
|
227
|
+
}
|
|
228
|
+
i++;
|
|
229
|
+
}
|
|
230
|
+
// First positional arg is the command
|
|
231
|
+
if (positionalArgs.length > 0) {
|
|
232
|
+
command = positionalArgs[0] ?? 'help';
|
|
233
|
+
}
|
|
234
|
+
// Handle --help and --version as commands
|
|
235
|
+
if (options.help && positionalArgs.length === 0) {
|
|
236
|
+
command = 'help';
|
|
237
|
+
}
|
|
238
|
+
if (options.version && positionalArgs.length === 0) {
|
|
239
|
+
command = 'version';
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
command,
|
|
243
|
+
args: [...positionalArgs.slice(1), ...commandArgs],
|
|
244
|
+
options,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Formats output based on format option
|
|
249
|
+
*/
|
|
250
|
+
export function formatOutput(data, format) {
|
|
251
|
+
if (format === 'json') {
|
|
252
|
+
return JSON.stringify(data, null, 2);
|
|
253
|
+
}
|
|
254
|
+
if (typeof data === 'string') {
|
|
255
|
+
return data;
|
|
256
|
+
}
|
|
257
|
+
if (Array.isArray(data)) {
|
|
258
|
+
return data.map((item) => formatOutput(item, 'text')).join('\n');
|
|
259
|
+
}
|
|
260
|
+
if (typeof data === 'object' && data !== null) {
|
|
261
|
+
return Object.entries(data)
|
|
262
|
+
.map(([key, value]) => `${key}: ${String(value)}`)
|
|
263
|
+
.join('\n');
|
|
264
|
+
}
|
|
265
|
+
return String(data);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Parses a time string (e.g., "5m", "1h", "30s") into milliseconds
|
|
269
|
+
*/
|
|
270
|
+
export function parseTime(timeStr) {
|
|
271
|
+
const match = /^(\d+)(s|m|h)$/.exec(timeStr);
|
|
272
|
+
if (match === null) {
|
|
273
|
+
throw new Error(`Invalid time format: "${timeStr}". Use formats like: 30s, 5m, 1h`);
|
|
274
|
+
}
|
|
275
|
+
const value = parseInt(match[1] ?? '0', 10);
|
|
276
|
+
const unit = match[2];
|
|
277
|
+
switch (unit) {
|
|
278
|
+
case 's':
|
|
279
|
+
return value * 1000;
|
|
280
|
+
case 'm':
|
|
281
|
+
return value * 60 * 1000;
|
|
282
|
+
case 'h':
|
|
283
|
+
return value * 60 * 60 * 1000;
|
|
284
|
+
default:
|
|
285
|
+
throw new Error(`Unknown time unit: ${unit}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|