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.
- package/CODEX_CLAUDE_ONBOARDING_DRAFT.md +318 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +10 -1
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/create.d.ts +4 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +379 -3
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/run.d.ts +0 -4
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +305 -8
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +265 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +13 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +25 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/session-registry.d.ts +57 -0
- package/dist/lib/session-registry.d.ts.map +1 -0
- package/dist/lib/session-registry.js +192 -0
- package/dist/lib/session-registry.js.map +1 -0
- package/dist/lib/tooling-preflight.d.ts +17 -0
- package/dist/lib/tooling-preflight.d.ts.map +1 -0
- package/dist/lib/tooling-preflight.js +519 -0
- package/dist/lib/tooling-preflight.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/run.js
CHANGED
|
@@ -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
|
-
*
|
|
7
|
-
*
|
|
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('(
|
|
13
|
-
.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
package/dist/commands/run.js.map
CHANGED
|
@@ -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 @@
|
|
|
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
|
-
(
|
|
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
|
*/
|