suzi-cli 0.1.14 → 0.1.15

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.
@@ -1,19 +1,316 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.registerRunCommand = registerRunCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const api_1 = require("../lib/api");
4
10
  const ui_1 = require("../utils/ui");
11
+ const actions_cache_1 = require("../lib/actions-cache");
12
+ // Options that belong to the `run` command itself, not to the action params
13
+ const KNOWN_OPTIONS = new Set(['json', 'output', 'dry-run']);
14
+ const KNOWN_WITH_VALUE = new Set(['json', 'output']);
5
15
  /**
6
- * Hidden alias for the new `suzi agent run` command.
7
- * This exists only for backward compatibility - all functionality has moved to `suzi agent run`.
16
+ * Convert kebab-case to camelCase. Passthrough if no hyphens.
17
+ * e.g. "token-id" "tokenId", "tokenID" "tokenID"
8
18
  */
19
+ function kebabToCamel(str) {
20
+ return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
21
+ }
22
+ /**
23
+ * Resolve a param key against the action's JSON Schema property names.
24
+ * Uses case-insensitive matching so "tokenid" resolves to "tokenID".
25
+ */
26
+ function resolveParamKey(inputKey, schemaProps) {
27
+ // Exact match
28
+ if (schemaProps.includes(inputKey))
29
+ return inputKey;
30
+ // Case-insensitive match
31
+ const lower = inputKey.toLowerCase();
32
+ const match = schemaProps.find((p) => p.toLowerCase() === lower);
33
+ if (match)
34
+ return match;
35
+ return inputKey;
36
+ }
37
+ const TRUTHY = new Set(['true', 'yes', '1', 'on']);
38
+ const FALSY = new Set(['false', 'no', '0', 'off']);
39
+ /**
40
+ * Heuristic type coercion for CLI string values.
41
+ */
42
+ function coerceValue(raw) {
43
+ // JSON objects/arrays
44
+ if ((raw.startsWith('{') && raw.endsWith('}')) || (raw.startsWith('[') && raw.endsWith(']'))) {
45
+ try {
46
+ return JSON.parse(raw);
47
+ }
48
+ catch {
49
+ /* keep as string */
50
+ }
51
+ }
52
+ // Booleans
53
+ if (TRUTHY.has(raw.toLowerCase()))
54
+ return true;
55
+ if (FALSY.has(raw.toLowerCase()))
56
+ return false;
57
+ // Numbers (guard against long numeric strings like token IDs)
58
+ if (/^-?\d+(\.\d+)?$/.test(raw) && raw.length <= 15) {
59
+ const num = Number(raw);
60
+ if (!isNaN(num) && isFinite(num))
61
+ return num;
62
+ }
63
+ return raw;
64
+ }
65
+ /**
66
+ * Schema-aware type coercion: uses the JSON Schema type to decide.
67
+ */
68
+ function coerceWithSchema(raw, propSchema) {
69
+ const type = propSchema.type;
70
+ if (type === 'number' || type === 'integer') {
71
+ const num = Number(raw);
72
+ return isNaN(num) ? raw : num;
73
+ }
74
+ if (type === 'boolean')
75
+ return !FALSY.has(raw.toLowerCase());
76
+ if (type === 'string')
77
+ return raw;
78
+ if (type === 'object' || type === 'array') {
79
+ try {
80
+ return JSON.parse(raw);
81
+ }
82
+ catch {
83
+ return raw;
84
+ }
85
+ }
86
+ return coerceValue(raw);
87
+ }
88
+ /**
89
+ * Parse dynamic --key value params from process.argv, skipping known run-command options.
90
+ */
91
+ function parseDynamicArgs(argv) {
92
+ const runIdx = argv.indexOf('run');
93
+ if (runIdx === -1)
94
+ return {};
95
+ // Skip 'run' and the '<action>' argument
96
+ const args = argv.slice(runIdx + 2);
97
+ const params = {};
98
+ let i = 0;
99
+ while (i < args.length) {
100
+ const arg = args[i];
101
+ if (!arg.startsWith('--')) {
102
+ i++;
103
+ continue;
104
+ }
105
+ const rawKey = arg.slice(2);
106
+ // Skip known run-command options
107
+ if (KNOWN_OPTIONS.has(rawKey)) {
108
+ i++;
109
+ if (KNOWN_WITH_VALUE.has(rawKey) && i < args.length && !args[i].startsWith('--')) {
110
+ i++;
111
+ }
112
+ continue;
113
+ }
114
+ const camelKey = kebabToCamel(rawKey);
115
+ const nextArg = args[i + 1];
116
+ if (nextArg === undefined || nextArg.startsWith('--')) {
117
+ params[camelKey] = true;
118
+ i++;
119
+ }
120
+ else {
121
+ params[camelKey] = coerceValue(nextArg);
122
+ i += 2;
123
+ }
124
+ }
125
+ return params;
126
+ }
127
+ /**
128
+ * Apply schema-aware key resolution and type coercion to params.
129
+ */
130
+ function refineParamsWithSchema(params, action) {
131
+ const schemaProps = (0, actions_cache_1.getSchemaProperties)(action);
132
+ if (schemaProps.length === 0)
133
+ return params;
134
+ const paramSchema = action.parameters;
135
+ const refined = {};
136
+ for (const [key, val] of Object.entries(params)) {
137
+ const resolvedKey = resolveParamKey(key, schemaProps);
138
+ const propDef = paramSchema.properties?.[resolvedKey];
139
+ if (propDef && typeof val === 'string') {
140
+ refined[resolvedKey] = coerceWithSchema(val, propDef);
141
+ }
142
+ else {
143
+ refined[resolvedKey] = val;
144
+ }
145
+ }
146
+ return refined;
147
+ }
148
+ /**
149
+ * Suggest similar action names when the user's input doesn't match.
150
+ */
151
+ function suggestActions(input, actions) {
152
+ const lower = input.toLowerCase();
153
+ return actions
154
+ .filter((a) => {
155
+ if (a.name.toLowerCase().includes(lower))
156
+ return true;
157
+ const actionPart = a.name.split('.')[1]?.toLowerCase();
158
+ return actionPart ? lower.includes(actionPart) : false;
159
+ })
160
+ .slice(0, 5)
161
+ .map((a) => a.name);
162
+ }
163
+ /**
164
+ * Pretty-print the action result.
165
+ */
166
+ function formatPretty(actionName, result) {
167
+ (0, ui_1.header)(`Result: ${actionName}`);
168
+ console.log();
169
+ if (result === null || result === undefined) {
170
+ (0, ui_1.info)('Action returned no result.');
171
+ return;
172
+ }
173
+ if (typeof result !== 'object') {
174
+ console.log(` ${chalk_1.default.bold(String(result))}`);
175
+ return;
176
+ }
177
+ if (Array.isArray(result)) {
178
+ if (result.length === 0) {
179
+ (0, ui_1.info)('Empty result (0 items).');
180
+ return;
181
+ }
182
+ console.log(JSON.stringify(result, null, 2));
183
+ return;
184
+ }
185
+ const obj = result;
186
+ for (const [key, val] of Object.entries(obj)) {
187
+ if (val === null || val === undefined)
188
+ continue;
189
+ if (typeof val === 'object') {
190
+ console.log(` ${ui_1.colors.muted(key + ':')} ${JSON.stringify(val, null, 2).split('\n').join('\n ')}`);
191
+ }
192
+ else {
193
+ (0, ui_1.label)(key, String(val));
194
+ }
195
+ }
196
+ }
9
197
  function registerRunCommand(program) {
10
198
  program
11
- .command('run')
12
- .description('(deprecated: use "suzi agent run" instead)')
13
- .action(() => {
14
- (0, ui_1.deprecationWarning)('run', 'suzi agent run');
15
- console.log();
16
- (0, ui_1.info)('Run "suzi agent run --help" to see available options.');
199
+ .command('run <action>')
200
+ .description('Execute an action directly (e.g. suzi run polymarket.get_market_price --tokenID 0x123)')
201
+ .allowUnknownOption()
202
+ .allowExcessArguments(true)
203
+ .option('--json <params>', 'Pass all parameters as a JSON string')
204
+ .option('--output <format>', 'Output format: pretty (default) or json', 'pretty')
205
+ .option('--dry-run', 'Preview the request payload without executing')
206
+ .action(async (action, opts) => {
207
+ if (!(0, ui_1.requireAuth)())
208
+ return;
209
+ // Validate action name format
210
+ const [protocol, actionName] = action.split('.', 2);
211
+ if (!protocol || !actionName) {
212
+ (0, ui_1.error)('Action name must be in "protocol.action" format (e.g. polymarket.place_order).');
213
+ (0, ui_1.info)(`Run ${chalk_1.default.cyan('suzi list-actions')} to see all available actions.`);
214
+ return;
215
+ }
216
+ // Build params
217
+ let params;
218
+ if (opts.json) {
219
+ try {
220
+ params = JSON.parse(opts.json);
221
+ }
222
+ catch (err) {
223
+ (0, ui_1.error)(`Invalid JSON in --json flag: ${err.message}`);
224
+ return;
225
+ }
226
+ if (typeof params !== 'object' || params === null || Array.isArray(params)) {
227
+ (0, ui_1.error)('--json must be a JSON object (e.g. \'{"key":"value"}\').');
228
+ return;
229
+ }
230
+ }
231
+ else {
232
+ params = parseDynamicArgs(process.argv);
233
+ }
234
+ // Look up action metadata for key resolution and coercion
235
+ let actionMeta;
236
+ try {
237
+ actionMeta = await (0, actions_cache_1.getActionByName)(action);
238
+ }
239
+ catch {
240
+ // Cache fetch failed — proceed without schema refinement
241
+ }
242
+ if (actionMeta && !opts.json) {
243
+ params = refineParamsWithSchema(params, actionMeta);
244
+ }
245
+ if (!actionMeta) {
246
+ // Action not in cache — warn but don't block
247
+ (0, ui_1.warn)(`Action "${action}" not found in local cache. Attempting execution anyway.`);
248
+ try {
249
+ const allActions = await (0, actions_cache_1.getActions)();
250
+ const suggestions = suggestActions(action, allActions);
251
+ if (suggestions.length > 0) {
252
+ (0, ui_1.info)(`Did you mean: ${suggestions.map((s) => chalk_1.default.cyan(s)).join(', ')}?`);
253
+ }
254
+ }
255
+ catch {
256
+ // Ignore suggestion failures
257
+ }
258
+ }
259
+ // Dry-run: show what would be sent
260
+ if (opts.dryRun) {
261
+ (0, ui_1.header)('Dry Run');
262
+ console.log();
263
+ (0, ui_1.label)('action', action);
264
+ if (actionMeta) {
265
+ (0, ui_1.label)('description', actionMeta.description);
266
+ }
267
+ console.log();
268
+ console.log(` ${ui_1.colors.muted('Request payload:')}`);
269
+ console.log(JSON.stringify({ name: action, params }, null, 2));
270
+ return;
271
+ }
272
+ // Execute
273
+ const isJson = opts.output === 'json';
274
+ const spinner = isJson ? null : (0, ora_1.default)(`Executing ${chalk_1.default.bold(action)}...`).start();
275
+ try {
276
+ const resp = await (0, api_1.post)('/api/actions/execute', { name: action, params });
277
+ if (!resp.ok || !resp.data?.ok) {
278
+ if (spinner)
279
+ spinner.fail(`Action failed`);
280
+ const msg = resp.data?.message || resp.data?.error || `API returned status ${resp.status}`;
281
+ if (isJson) {
282
+ console.log(JSON.stringify({ error: msg }, null, 2));
283
+ }
284
+ else {
285
+ (0, ui_1.error)(msg);
286
+ if (resp.status === 400) {
287
+ (0, ui_1.info)(`Run ${chalk_1.default.cyan(`suzi list-actions --protocol ${protocol} --schema ${actionName}`)} to see the expected parameters.`);
288
+ }
289
+ }
290
+ return;
291
+ }
292
+ if (isJson) {
293
+ console.log(JSON.stringify(resp.data.result, null, 2));
294
+ }
295
+ else {
296
+ spinner.succeed(`${action} executed successfully`);
297
+ console.log();
298
+ formatPretty(action, resp.data.result);
299
+ }
300
+ }
301
+ catch (err) {
302
+ if (isJson) {
303
+ console.log(JSON.stringify({ error: err.message || String(err) }, null, 2));
304
+ }
305
+ else {
306
+ spinner.fail('Request failed');
307
+ (0, ui_1.error)(err.message || String(err));
308
+ }
309
+ }
310
+ if (!isJson) {
311
+ console.log();
312
+ (0, ui_1.divider)();
313
+ }
17
314
  });
18
315
  }
19
316
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";;AAOA,gDASC;AAfD,oCAAuD;AAEvD;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,GAAG,EAAE;QACX,IAAA,uBAAkB,EAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAA,SAAI,EAAC,uDAAuD,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerUpdateCommand(program: Command): void;
3
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAW5D"}
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerUpdateCommand = registerUpdateCommand;
7
+ const inquirer_1 = __importDefault(require("inquirer"));
8
+ const child_process_1 = require("child_process");
9
+ const https_1 = __importDefault(require("https"));
10
+ const url_1 = require("url");
11
+ const tty_1 = require("../utils/tty");
12
+ const ui_1 = require("../utils/ui");
13
+ const pkg = require('../../package.json');
14
+ function registerUpdateCommand(program) {
15
+ program
16
+ .command('update')
17
+ .description('Check npm for the latest Suzi CLI version and optionally update')
18
+ .option('--check', 'Check for updates only (fresh npm registry lookup)')
19
+ .option('-y, --yes', 'Update immediately without prompting')
20
+ .option('--no-prompt', 'Do not prompt; only print the update command')
21
+ .option('--manager <manager>', 'Package manager to use (npm|pnpm|yarn|bun)')
22
+ .action(async (opts) => {
23
+ await runUpdateCommand(opts);
24
+ });
25
+ }
26
+ async function runUpdateCommand(opts) {
27
+ const currentVersion = String(pkg.version || '').trim();
28
+ const packageName = String(pkg.name || 'suzi-cli');
29
+ const noPrompt = opts.prompt === false;
30
+ const selectedManager = normalizePackageManager(opts.manager);
31
+ if (opts.manager && !selectedManager) {
32
+ (0, ui_1.error)(`Invalid package manager "${opts.manager}". Use one of: npm, pnpm, yarn, bun.`);
33
+ return;
34
+ }
35
+ const spinner = (0, tty_1.createSpinner)('Checking npm registry for latest version...');
36
+ let latestVersion;
37
+ try {
38
+ latestVersion = await fetchLatestVersion(packageName);
39
+ spinner?.succeed(`Latest npm version: ${latestVersion}`);
40
+ }
41
+ catch (err) {
42
+ spinner?.fail('Could not check npm registry');
43
+ (0, ui_1.error)(getErrorMessage(err));
44
+ return;
45
+ }
46
+ const cmp = compareSemver(currentVersion, latestVersion);
47
+ if (cmp === 0) {
48
+ (0, ui_1.success)(`You're already on the latest version (${currentVersion}).`);
49
+ return;
50
+ }
51
+ if (cmp > 0) {
52
+ (0, ui_1.info)(`You're on ${currentVersion}, which is newer than npm latest (${latestVersion}).`);
53
+ return;
54
+ }
55
+ const packageManager = selectedManager ?? detectPackageManager();
56
+ const install = getInstallCommand(packageManager, packageName, latestVersion);
57
+ console.log();
58
+ (0, ui_1.info)(`Update available: ${currentVersion} -> ${latestVersion}`);
59
+ console.log();
60
+ (0, ui_1.info)('Run this command to update:');
61
+ console.log(` ${install.display}`);
62
+ console.log();
63
+ if (opts.check) {
64
+ process.exitCode = 1;
65
+ return;
66
+ }
67
+ if (noPrompt) {
68
+ return;
69
+ }
70
+ if (!(0, tty_1.shouldUseInteractive)() && !opts.yes) {
71
+ (0, ui_1.info)('Non-interactive terminal detected. Re-run with `suzi update --yes` to update automatically.');
72
+ return;
73
+ }
74
+ if (!opts.yes) {
75
+ const answer = await inquirer_1.default.prompt([
76
+ {
77
+ type: 'confirm',
78
+ name: 'confirm',
79
+ message: `Update suzi-cli to ${latestVersion}?`,
80
+ default: true,
81
+ },
82
+ ]);
83
+ if (!answer.confirm) {
84
+ (0, ui_1.info)('Update skipped.');
85
+ return;
86
+ }
87
+ }
88
+ await executeInstallCommand(install);
89
+ }
90
+ function normalizePackageManager(value) {
91
+ if (!value)
92
+ return null;
93
+ if (value === 'npm' || value === 'pnpm' || value === 'yarn' || value === 'bun') {
94
+ return value;
95
+ }
96
+ return null;
97
+ }
98
+ function detectPackageManager() {
99
+ const userAgent = process.env.npm_config_user_agent || '';
100
+ const execPath = process.env.npm_execpath || '';
101
+ const hint = `${userAgent} ${execPath}`.toLowerCase();
102
+ if (hint.includes('pnpm'))
103
+ return 'pnpm';
104
+ if (hint.includes('yarn'))
105
+ return 'yarn';
106
+ if (hint.includes('bun'))
107
+ return 'bun';
108
+ return 'npm';
109
+ }
110
+ function getInstallCommand(pm, packageName, version) {
111
+ const target = `${packageName}@${version}`;
112
+ switch (pm) {
113
+ case 'pnpm':
114
+ return {
115
+ command: 'pnpm',
116
+ args: ['add', '-g', target],
117
+ display: `pnpm add -g ${target}`,
118
+ };
119
+ case 'yarn':
120
+ return {
121
+ command: 'yarn',
122
+ args: ['global', 'add', target],
123
+ display: `yarn global add ${target}`,
124
+ };
125
+ case 'bun':
126
+ return {
127
+ command: 'bun',
128
+ args: ['add', '-g', target],
129
+ display: `bun add -g ${target}`,
130
+ };
131
+ case 'npm':
132
+ default:
133
+ return {
134
+ command: 'npm',
135
+ args: ['install', '-g', target],
136
+ display: `npm install -g ${target}`,
137
+ };
138
+ }
139
+ }
140
+ async function executeInstallCommand(install) {
141
+ await new Promise((resolve) => {
142
+ let settled = false;
143
+ const done = () => {
144
+ if (settled)
145
+ return;
146
+ settled = true;
147
+ resolve();
148
+ };
149
+ const child = (0, child_process_1.spawn)(install.command, install.args, {
150
+ stdio: 'inherit',
151
+ shell: process.platform === 'win32',
152
+ });
153
+ child.on('error', (err) => {
154
+ (0, ui_1.error)(`Failed to start update command: ${getErrorMessage(err)}`);
155
+ done();
156
+ });
157
+ child.on('exit', (code, signal) => {
158
+ if (code === 0) {
159
+ console.log();
160
+ (0, ui_1.success)('Suzi CLI updated successfully.');
161
+ (0, ui_1.info)('Run `suzi --version` to confirm the installed version.');
162
+ }
163
+ else if (signal) {
164
+ (0, ui_1.error)(`Update command was terminated by signal ${signal}.`);
165
+ }
166
+ else {
167
+ (0, ui_1.error)(`Update command exited with code ${code ?? 'unknown'}.`);
168
+ }
169
+ done();
170
+ });
171
+ });
172
+ }
173
+ async function fetchLatestVersion(packageName) {
174
+ const url = new url_1.URL(`https://registry.npmjs.org/${encodeURIComponent(packageName).replace('%40', '@').replace('%2F', '%2f')}/latest`);
175
+ const body = await new Promise((resolve, reject) => {
176
+ const req = https_1.default.get(url, {
177
+ headers: {
178
+ accept: 'application/json',
179
+ 'user-agent': `suzi-cli/${pkg.version} (update-check)`,
180
+ },
181
+ }, (res) => {
182
+ const status = res.statusCode || 0;
183
+ let data = '';
184
+ res.setEncoding('utf8');
185
+ res.on('data', (chunk) => {
186
+ data += chunk;
187
+ });
188
+ res.on('end', () => {
189
+ if (status < 200 || status >= 300) {
190
+ reject(new Error(`npm registry returned ${status}`));
191
+ return;
192
+ }
193
+ resolve(data);
194
+ });
195
+ });
196
+ req.setTimeout(8000, () => {
197
+ req.destroy(new Error('npm registry request timed out'));
198
+ });
199
+ req.on('error', reject);
200
+ });
201
+ const parsed = JSON.parse(body);
202
+ if (!parsed?.version || typeof parsed.version !== 'string') {
203
+ throw new Error('Invalid npm registry response');
204
+ }
205
+ return parsed.version.trim();
206
+ }
207
+ function compareSemver(a, b) {
208
+ const pa = parseSemver(a);
209
+ const pb = parseSemver(b);
210
+ if (!pa || !pb) {
211
+ return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' });
212
+ }
213
+ for (let i = 0; i < 3; i++) {
214
+ if (pa.core[i] !== pb.core[i]) {
215
+ return pa.core[i] > pb.core[i] ? 1 : -1;
216
+ }
217
+ }
218
+ return comparePrerelease(pa.prerelease, pb.prerelease);
219
+ }
220
+ function parseSemver(input) {
221
+ const normalized = input.trim().replace(/^v/, '');
222
+ const match = normalized.match(/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/);
223
+ if (!match)
224
+ return null;
225
+ return {
226
+ core: [Number(match[1]), Number(match[2]), Number(match[3])],
227
+ prerelease: match[4] ? match[4].split('.') : [],
228
+ };
229
+ }
230
+ function comparePrerelease(a, b) {
231
+ if (a.length === 0 && b.length === 0)
232
+ return 0;
233
+ if (a.length === 0)
234
+ return 1;
235
+ if (b.length === 0)
236
+ return -1;
237
+ const max = Math.max(a.length, b.length);
238
+ for (let i = 0; i < max; i++) {
239
+ const av = a[i];
240
+ const bv = b[i];
241
+ if (av === undefined)
242
+ return -1;
243
+ if (bv === undefined)
244
+ return 1;
245
+ if (av === bv)
246
+ continue;
247
+ const an = /^\d+$/.test(av) ? Number(av) : null;
248
+ const bn = /^\d+$/.test(bv) ? Number(bv) : null;
249
+ if (an !== null && bn !== null) {
250
+ return an > bn ? 1 : -1;
251
+ }
252
+ if (an !== null)
253
+ return -1;
254
+ if (bn !== null)
255
+ return 1;
256
+ return av.localeCompare(bv);
257
+ }
258
+ return 0;
259
+ }
260
+ function getErrorMessage(err) {
261
+ if (err instanceof Error && err.message)
262
+ return err.message;
263
+ return 'Unknown error';
264
+ }
265
+ //# 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.js CHANGED
@@ -8,7 +8,9 @@ const commander_1 = require("commander");
8
8
  const chalk_1 = __importDefault(require("chalk"));
9
9
  const update_notifier_1 = __importDefault(require("update-notifier"));
10
10
  const pkg = require('../package.json');
11
- (0, update_notifier_1.default)({ pkg }).notify();
11
+ if (process.argv[2] !== 'update') {
12
+ (0, update_notifier_1.default)({ pkg }).notify();
13
+ }
12
14
  const login_1 = require("./commands/login");
13
15
  const portfolio_1 = require("./commands/portfolio");
14
16
  const preferences_1 = require("./commands/preferences");
@@ -18,6 +20,7 @@ const import_1 = require("./commands/import");
18
20
  const share_1 = require("./commands/share");
19
21
  const subagents_1 = require("./commands/subagents");
20
22
  const transactions_1 = require("./commands/transactions");
23
+ const update_1 = require("./commands/update");
21
24
  const prompt_suggestions_1 = require("./commands/prompt-suggestions");
22
25
  const skills_1 = require("./commands/skills");
23
26
  const create_1 = require("./commands/create");
@@ -59,6 +62,7 @@ program
59
62
  (0, accounts_1.registerAccountsCommand)(program); // accounts, accounts show, accounts fund, accounts switch, accounts create, accounts rename, accounts delete
60
63
  (0, agent_1.registerAgentCommand)(program); // agents [list|view|deploy|validate|run|activate|deactivate|execute|logs|code|delete]
61
64
  (0, create_1.registerCreateCommand)(program); // start
65
+ (0, create_1.registerResumeCommand)(program); // resume
62
66
  (0, debug_1.registerDebugCommand)(program); // debug, debug logs, debug aggregate, debug db-logs, debug executions, debug runs
63
67
  (0, env_1.registerEnvCommand)(program); // env, env set, env list, env remove
64
68
  (0, feedback_1.registerFeedbackCommand)(program); // feedback
@@ -76,6 +80,7 @@ program
76
80
  (0, skills_1.registerSkillsCommand)(program); // skills, skills add
77
81
  (0, subagents_1.registerSubagentsCommand)(program); // subagents, subagents init, subagents validate
78
82
  (0, transactions_1.registerTransactionsCommand)(program); // transactions / txns, tx-confirm
83
+ (0, update_1.registerUpdateCommand)(program); // update
79
84
  /**
80
85
  * Get all registered top-level command names.
81
86
  */