@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.
Files changed (138) hide show
  1. package/LICENSE +214 -0
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/bin.js +11 -0
  5. package/dist/bin.js.map +1 -0
  6. package/dist/bootstrap.d.ts +144 -0
  7. package/dist/bootstrap.d.ts.map +1 -0
  8. package/dist/bootstrap.js +315 -0
  9. package/dist/bootstrap.js.map +1 -0
  10. package/dist/cli.d.ts +14 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +84 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/commands/ability.d.ts +17 -0
  15. package/dist/commands/ability.d.ts.map +1 -0
  16. package/dist/commands/ability.js +286 -0
  17. package/dist/commands/ability.js.map +1 -0
  18. package/dist/commands/agent.d.ts +18 -0
  19. package/dist/commands/agent.d.ts.map +1 -0
  20. package/dist/commands/agent.js +361 -0
  21. package/dist/commands/agent.js.map +1 -0
  22. package/dist/commands/call.d.ts +15 -0
  23. package/dist/commands/call.d.ts.map +1 -0
  24. package/dist/commands/call.js +503 -0
  25. package/dist/commands/call.js.map +1 -0
  26. package/dist/commands/cleanup.d.ts +18 -0
  27. package/dist/commands/cleanup.d.ts.map +1 -0
  28. package/dist/commands/cleanup.js +300 -0
  29. package/dist/commands/cleanup.js.map +1 -0
  30. package/dist/commands/config.d.ts +16 -0
  31. package/dist/commands/config.d.ts.map +1 -0
  32. package/dist/commands/config.js +513 -0
  33. package/dist/commands/config.js.map +1 -0
  34. package/dist/commands/discuss.d.ts +16 -0
  35. package/dist/commands/discuss.d.ts.map +1 -0
  36. package/dist/commands/discuss.js +700 -0
  37. package/dist/commands/discuss.js.map +1 -0
  38. package/dist/commands/doctor.d.ts +48 -0
  39. package/dist/commands/doctor.d.ts.map +1 -0
  40. package/dist/commands/doctor.js +356 -0
  41. package/dist/commands/doctor.js.map +1 -0
  42. package/dist/commands/guard.d.ts +12 -0
  43. package/dist/commands/guard.d.ts.map +1 -0
  44. package/dist/commands/guard.js +225 -0
  45. package/dist/commands/guard.js.map +1 -0
  46. package/dist/commands/help.d.ts +11 -0
  47. package/dist/commands/help.d.ts.map +1 -0
  48. package/dist/commands/help.js +180 -0
  49. package/dist/commands/help.js.map +1 -0
  50. package/dist/commands/history.d.ts +19 -0
  51. package/dist/commands/history.d.ts.map +1 -0
  52. package/dist/commands/history.js +200 -0
  53. package/dist/commands/history.js.map +1 -0
  54. package/dist/commands/index.d.ts +23 -0
  55. package/dist/commands/index.d.ts.map +1 -0
  56. package/dist/commands/index.js +26 -0
  57. package/dist/commands/index.js.map +1 -0
  58. package/dist/commands/iterate.d.ts +16 -0
  59. package/dist/commands/iterate.d.ts.map +1 -0
  60. package/dist/commands/iterate.js +72 -0
  61. package/dist/commands/iterate.js.map +1 -0
  62. package/dist/commands/list.d.ts +6 -0
  63. package/dist/commands/list.d.ts.map +1 -0
  64. package/dist/commands/list.js +62 -0
  65. package/dist/commands/list.js.map +1 -0
  66. package/dist/commands/mcp.d.ts +16 -0
  67. package/dist/commands/mcp.d.ts.map +1 -0
  68. package/dist/commands/mcp.js +57 -0
  69. package/dist/commands/mcp.js.map +1 -0
  70. package/dist/commands/resume.d.ts +18 -0
  71. package/dist/commands/resume.d.ts.map +1 -0
  72. package/dist/commands/resume.js +208 -0
  73. package/dist/commands/resume.js.map +1 -0
  74. package/dist/commands/review.d.ts +13 -0
  75. package/dist/commands/review.d.ts.map +1 -0
  76. package/dist/commands/review.js +450 -0
  77. package/dist/commands/review.js.map +1 -0
  78. package/dist/commands/run.d.ts +6 -0
  79. package/dist/commands/run.d.ts.map +1 -0
  80. package/dist/commands/run.js +158 -0
  81. package/dist/commands/run.js.map +1 -0
  82. package/dist/commands/scaffold.d.ts +20 -0
  83. package/dist/commands/scaffold.d.ts.map +1 -0
  84. package/dist/commands/scaffold.js +924 -0
  85. package/dist/commands/scaffold.js.map +1 -0
  86. package/dist/commands/session.d.ts +20 -0
  87. package/dist/commands/session.d.ts.map +1 -0
  88. package/dist/commands/session.js +504 -0
  89. package/dist/commands/session.js.map +1 -0
  90. package/dist/commands/setup.d.ts +14 -0
  91. package/dist/commands/setup.d.ts.map +1 -0
  92. package/dist/commands/setup.js +762 -0
  93. package/dist/commands/setup.js.map +1 -0
  94. package/dist/commands/status.d.ts +17 -0
  95. package/dist/commands/status.d.ts.map +1 -0
  96. package/dist/commands/status.js +227 -0
  97. package/dist/commands/status.js.map +1 -0
  98. package/dist/commands/trace.d.ts +6 -0
  99. package/dist/commands/trace.d.ts.map +1 -0
  100. package/dist/commands/trace.js +204 -0
  101. package/dist/commands/trace.js.map +1 -0
  102. package/dist/commands/update.d.ts +24 -0
  103. package/dist/commands/update.d.ts.map +1 -0
  104. package/dist/commands/update.js +296 -0
  105. package/dist/commands/update.js.map +1 -0
  106. package/dist/index.d.ts +8 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +13 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/parser.d.ts +14 -0
  111. package/dist/parser.d.ts.map +1 -0
  112. package/dist/parser.js +288 -0
  113. package/dist/parser.js.map +1 -0
  114. package/dist/types.d.ts +91 -0
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +29 -0
  117. package/dist/types.js.map +1 -0
  118. package/dist/utils/dangerous-op-guard.d.ts +33 -0
  119. package/dist/utils/dangerous-op-guard.d.ts.map +1 -0
  120. package/dist/utils/dangerous-op-guard.js +112 -0
  121. package/dist/utils/dangerous-op-guard.js.map +1 -0
  122. package/dist/utils/database.d.ts +85 -0
  123. package/dist/utils/database.d.ts.map +1 -0
  124. package/dist/utils/database.js +184 -0
  125. package/dist/utils/database.js.map +1 -0
  126. package/dist/utils/index.d.ts +7 -0
  127. package/dist/utils/index.d.ts.map +1 -0
  128. package/dist/utils/index.js +7 -0
  129. package/dist/utils/index.js.map +1 -0
  130. package/dist/utils/provider-factory.d.ts +31 -0
  131. package/dist/utils/provider-factory.d.ts.map +1 -0
  132. package/dist/utils/provider-factory.js +109 -0
  133. package/dist/utils/provider-factory.js.map +1 -0
  134. package/dist/utils/storage-instances.d.ts +19 -0
  135. package/dist/utils/storage-instances.d.ts.map +1 -0
  136. package/dist/utils/storage-instances.js +20 -0
  137. package/dist/utils/storage-instances.js.map +1 -0
  138. 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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"}
@@ -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"}
@@ -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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"}