suzi-cli 0.1.11 → 0.1.13
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/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +213 -143
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +86 -25
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/portfolio.d.ts.map +1 -1
- package/dist/commands/portfolio.js +214 -155
- package/dist/commands/portfolio.js.map +1 -1
- package/dist/index.js +47 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/lock-manager.d.ts +68 -0
- package/dist/lib/lock-manager.d.ts.map +1 -0
- package/dist/lib/lock-manager.js +342 -0
- package/dist/lib/lock-manager.js.map +1 -0
- package/dist/types/portfolio.d.ts +129 -0
- package/dist/types/portfolio.d.ts.map +1 -0
- package/dist/types/portfolio.js +5 -0
- package/dist/types/portfolio.js.map +1 -0
- package/dist/utils/ui.d.ts +10 -0
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +40 -0
- package/dist/utils/ui.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA8B,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA8B,MAAM,WAAW,CAAC;AAuChE,wBAAgB,qBAAqB,IAAI,MAAM,CAgC9C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAOhD;AAkGD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0R5D"}
|
package/dist/commands/create.js
CHANGED
|
@@ -17,6 +17,8 @@ const ui_1 = require("../utils/ui");
|
|
|
17
17
|
const suzi_guide_1 = require("../lib/suzi-guide");
|
|
18
18
|
const config_1 = require("../lib/config");
|
|
19
19
|
const api_1 = require("../lib/api");
|
|
20
|
+
const lock_manager_1 = require("../lib/lock-manager");
|
|
21
|
+
const package_json_1 = __importDefault(require("../../package.json"));
|
|
20
22
|
const AGENT_TS_TEMPLATE = `export default defineAgent({
|
|
21
23
|
meta: {
|
|
22
24
|
name: 'My Agent',
|
|
@@ -152,11 +154,11 @@ function ensureAgentsFile(workingDir) {
|
|
|
152
154
|
}
|
|
153
155
|
function resolveProvider(explicitProvider) {
|
|
154
156
|
if (explicitProvider)
|
|
155
|
-
return AI_PROVIDERS[explicitProvider];
|
|
157
|
+
return { definition: AI_PROVIDERS[explicitProvider], type: explicitProvider };
|
|
156
158
|
const configured = (0, config_1.getDefaultAi)();
|
|
157
159
|
if (configured)
|
|
158
|
-
return AI_PROVIDERS[configured];
|
|
159
|
-
return AI_PROVIDERS.claude;
|
|
160
|
+
return { definition: AI_PROVIDERS[configured], type: configured };
|
|
161
|
+
return { definition: AI_PROVIDERS.claude, type: 'claude' };
|
|
160
162
|
}
|
|
161
163
|
function registerCreateCommand(program) {
|
|
162
164
|
const create = program
|
|
@@ -206,162 +208,230 @@ function registerCreateCommand(program) {
|
|
|
206
208
|
fetchedAgent = resp.data;
|
|
207
209
|
spinner.succeed(`Fetched agent: ${chalk_1.default.bold(fetchedAgent.title || 'Untitled')}`);
|
|
208
210
|
}
|
|
209
|
-
let
|
|
210
|
-
|
|
211
|
-
agentName
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
.
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
agentName = name.trim();
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
const { name } = await inquirer_1.default.prompt([
|
|
242
|
-
{
|
|
243
|
-
type: 'input',
|
|
244
|
-
name: 'name',
|
|
245
|
-
message: 'What would you like to name your agent?',
|
|
246
|
-
default: 'my-agent',
|
|
247
|
-
validate: (input) => {
|
|
248
|
-
const trimmed = input.trim();
|
|
249
|
-
if (!trimmed)
|
|
250
|
-
return 'Agent name cannot be empty.';
|
|
251
|
-
if (/[/\\]/.test(trimmed))
|
|
252
|
-
return 'Agent name cannot contain slashes.';
|
|
253
|
-
if (trimmed.length > 128)
|
|
254
|
-
return 'Agent name is too long (max 128 characters).';
|
|
255
|
-
return true;
|
|
211
|
+
let lockHandle = null;
|
|
212
|
+
try {
|
|
213
|
+
let agentName;
|
|
214
|
+
if (dir) {
|
|
215
|
+
agentName = dir;
|
|
216
|
+
}
|
|
217
|
+
else if (fetchedAgent) {
|
|
218
|
+
// Derive directory name from agent title
|
|
219
|
+
const defaultName = (fetchedAgent.title || 'my-agent')
|
|
220
|
+
.toLowerCase()
|
|
221
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
222
|
+
.replace(/^-|-$/g, '')
|
|
223
|
+
|| 'my-agent';
|
|
224
|
+
const { name } = await inquirer_1.default.prompt([
|
|
225
|
+
{
|
|
226
|
+
type: 'input',
|
|
227
|
+
name: 'name',
|
|
228
|
+
message: 'Directory name:',
|
|
229
|
+
default: defaultName,
|
|
230
|
+
validate: (input) => {
|
|
231
|
+
const trimmed = input.trim();
|
|
232
|
+
if (!trimmed)
|
|
233
|
+
return 'Name cannot be empty.';
|
|
234
|
+
if (/[/\\]/.test(trimmed))
|
|
235
|
+
return 'Name cannot contain slashes.';
|
|
236
|
+
if (trimmed.length > 128)
|
|
237
|
+
return 'Name cannot exceed 128 characters.';
|
|
238
|
+
return true;
|
|
239
|
+
},
|
|
256
240
|
},
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
agentName = name.trim();
|
|
260
|
-
}
|
|
261
|
-
const workingDir = path_1.default.resolve(process.cwd(), agentName);
|
|
262
|
-
const shouldScaffold = opts?.scaffold !== false;
|
|
263
|
-
const provider = resolveProvider(opts?.ai);
|
|
264
|
-
// Check that selected CLI is available
|
|
265
|
-
if (!isCommandAvailable(provider.command)) {
|
|
266
|
-
console.log();
|
|
267
|
-
(0, ui_1.error)(`${provider.displayName} is required but not found in PATH.`);
|
|
268
|
-
console.log();
|
|
269
|
-
console.log(' Install one of the supported AI CLIs:');
|
|
270
|
-
for (const line of getInstallHelpLines()) {
|
|
271
|
-
console.log(line);
|
|
241
|
+
]);
|
|
242
|
+
agentName = name.trim();
|
|
272
243
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
// Ensure working directory exists
|
|
278
|
-
if (!fs_1.default.existsSync(workingDir)) {
|
|
279
|
-
fs_1.default.mkdirSync(workingDir, { recursive: true });
|
|
280
|
-
}
|
|
281
|
-
ensureAgentsFile(workingDir);
|
|
282
|
-
const agentPath = path_1.default.join(workingDir, 'agent.ts');
|
|
283
|
-
const agentExists = fs_1.default.existsSync(agentPath);
|
|
284
|
-
if (fetchedAgent) {
|
|
285
|
-
// Confirm overwrite if agent.ts already exists
|
|
286
|
-
if (agentExists) {
|
|
287
|
-
const { overwrite } = await inquirer_1.default.prompt([
|
|
244
|
+
else {
|
|
245
|
+
const { name } = await inquirer_1.default.prompt([
|
|
288
246
|
{
|
|
289
|
-
type: '
|
|
290
|
-
name: '
|
|
291
|
-
message:
|
|
292
|
-
default:
|
|
247
|
+
type: 'input',
|
|
248
|
+
name: 'name',
|
|
249
|
+
message: 'What would you like to name your agent?',
|
|
250
|
+
default: 'my-agent',
|
|
251
|
+
validate: (input) => {
|
|
252
|
+
const trimmed = input.trim();
|
|
253
|
+
if (!trimmed)
|
|
254
|
+
return 'Agent name cannot be empty.';
|
|
255
|
+
if (/[/\\]/.test(trimmed))
|
|
256
|
+
return 'Agent name cannot contain slashes.';
|
|
257
|
+
if (trimmed.length > 128)
|
|
258
|
+
return 'Agent name is too long (max 128 characters).';
|
|
259
|
+
return true;
|
|
260
|
+
},
|
|
293
261
|
},
|
|
294
262
|
]);
|
|
295
|
-
|
|
296
|
-
|
|
263
|
+
agentName = name.trim();
|
|
264
|
+
}
|
|
265
|
+
const workingDir = path_1.default.resolve(process.cwd(), agentName);
|
|
266
|
+
const shouldScaffold = opts?.scaffold !== false;
|
|
267
|
+
const provider = resolveProvider(opts?.ai);
|
|
268
|
+
// Check that selected CLI is available
|
|
269
|
+
if (!isCommandAvailable(provider.definition.command)) {
|
|
270
|
+
console.log();
|
|
271
|
+
(0, ui_1.error)(`${provider.definition.displayName} is required but not found in PATH.`);
|
|
272
|
+
console.log();
|
|
273
|
+
console.log(' Install one of the supported AI CLIs:');
|
|
274
|
+
for (const line of getInstallHelpLines()) {
|
|
275
|
+
console.log(line);
|
|
276
|
+
}
|
|
277
|
+
console.log();
|
|
278
|
+
(0, ui_1.info)(`Selected provider docs: ${provider.definition.docsUrl}`);
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
// Ensure working directory exists
|
|
282
|
+
if (!fs_1.default.existsSync(workingDir)) {
|
|
283
|
+
fs_1.default.mkdirSync(workingDir, { recursive: true });
|
|
284
|
+
}
|
|
285
|
+
ensureAgentsFile(workingDir);
|
|
286
|
+
// Acquire session lock to prevent concurrent edits
|
|
287
|
+
const lockResult = (0, lock_manager_1.acquireLock)(workingDir, provider.type, package_json_1.default.version);
|
|
288
|
+
if (!lockResult.ok) {
|
|
289
|
+
const lockError = lockResult.error;
|
|
290
|
+
if (lockError.type === 'held_by_other') {
|
|
291
|
+
console.log();
|
|
292
|
+
(0, ui_1.error)(`Another AI session is already running in ${chalk_1.default.bold(agentName)}.`, { setExitCode: false });
|
|
293
|
+
console.log();
|
|
294
|
+
console.log(` ${ui_1.colors.muted('Lock owner:')}`);
|
|
295
|
+
console.log(` ${ui_1.colors.muted('PID:')} ${lockError.metadata.pid}`);
|
|
296
|
+
console.log(` ${ui_1.colors.muted('Host:')} ${lockError.metadata.hostname}`);
|
|
297
|
+
console.log(` ${ui_1.colors.muted('AI:')} ${lockError.metadata.aiProvider}`);
|
|
298
|
+
console.log(` ${ui_1.colors.muted('Started:')} ${new Date(lockError.metadata.acquiredAt).toLocaleString()}`);
|
|
299
|
+
console.log();
|
|
300
|
+
(0, ui_1.info)('Wait for the other session to finish, or use a different directory.');
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (lockError.type === 'corrupted_lock') {
|
|
304
|
+
console.log();
|
|
305
|
+
(0, ui_1.warn)('Found corrupted lock file - cleaning up...');
|
|
306
|
+
(0, lock_manager_1.handleCorruptedLock)(lockError.lockDir);
|
|
307
|
+
// Retry once
|
|
308
|
+
const retryResult = (0, lock_manager_1.acquireLock)(workingDir, provider.type, package_json_1.default.version);
|
|
309
|
+
if (!retryResult.ok) {
|
|
310
|
+
(0, ui_1.error)(`Failed to acquire lock: ${retryResult.error.type}`);
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
lockHandle = retryResult.handle;
|
|
297
314
|
}
|
|
298
315
|
else {
|
|
299
|
-
|
|
300
|
-
|
|
316
|
+
(0, ui_1.error)(`Failed to acquire session lock: ${lockError.type}`);
|
|
317
|
+
return;
|
|
301
318
|
}
|
|
302
319
|
}
|
|
303
320
|
else {
|
|
304
|
-
|
|
305
|
-
(0, ui_1.success)(`Wrote agent source to ${path_1.default.relative(process.cwd(), agentPath)}`);
|
|
321
|
+
lockHandle = lockResult.handle;
|
|
306
322
|
}
|
|
307
|
-
(0,
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
(0, ui_1.
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
settled = true;
|
|
349
|
-
resolve(code ?? 0);
|
|
350
|
-
});
|
|
351
|
-
});
|
|
352
|
-
console.log();
|
|
353
|
-
if (fs_1.default.existsSync(agentPath)) {
|
|
323
|
+
(0, lock_manager_1.startHeartbeat)(lockHandle);
|
|
324
|
+
const agentPath = path_1.default.join(workingDir, 'agent.ts');
|
|
325
|
+
const agentExists = fs_1.default.existsSync(agentPath);
|
|
326
|
+
if (fetchedAgent) {
|
|
327
|
+
// Confirm overwrite if agent.ts already exists
|
|
328
|
+
if (agentExists) {
|
|
329
|
+
const { overwrite } = await inquirer_1.default.prompt([
|
|
330
|
+
{
|
|
331
|
+
type: 'confirm',
|
|
332
|
+
name: 'overwrite',
|
|
333
|
+
message: `agent.ts already exists in ${agentName}. Overwrite with fetched code?`,
|
|
334
|
+
default: false,
|
|
335
|
+
},
|
|
336
|
+
]);
|
|
337
|
+
if (!overwrite) {
|
|
338
|
+
(0, ui_1.info)('Keeping existing agent.ts.');
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
fs_1.default.writeFileSync(agentPath, fetchedAgent.source);
|
|
342
|
+
(0, ui_1.success)(`Overwrote agent.ts with fetched source.`);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
fs_1.default.writeFileSync(agentPath, fetchedAgent.source);
|
|
347
|
+
(0, ui_1.success)(`Wrote agent source to ${path_1.default.relative(process.cwd(), agentPath)}`);
|
|
348
|
+
}
|
|
349
|
+
(0, ui_1.info)(`Agent ID: ${fetchedAgent.id}`);
|
|
350
|
+
}
|
|
351
|
+
else if (shouldScaffold && !agentExists) {
|
|
352
|
+
// Scaffold agent.ts template
|
|
353
|
+
const displayName = agentName
|
|
354
|
+
.replace(/[-_]+/g, ' ')
|
|
355
|
+
.replace(/\b\w/g, (c) => c.toUpperCase());
|
|
356
|
+
const template = AGENT_TS_TEMPLATE.replace("name: 'My Agent'", `name: '${displayName}'`);
|
|
357
|
+
fs_1.default.writeFileSync(agentPath, template);
|
|
358
|
+
(0, ui_1.success)(`Created agent.ts template at ${path_1.default.relative(process.cwd(), agentPath)}`);
|
|
359
|
+
}
|
|
360
|
+
else if (agentExists) {
|
|
361
|
+
(0, ui_1.info)(`Using existing agent.ts at ${path_1.default.relative(process.cwd(), agentPath)}`);
|
|
362
|
+
}
|
|
363
|
+
console.log();
|
|
354
364
|
(0, ui_1.divider)();
|
|
355
365
|
console.log();
|
|
356
|
-
console.log(chalk_1.default.bold('
|
|
366
|
+
console.log(` ${chalk_1.default.bold('Starting AI-assisted agent creation...')}`);
|
|
367
|
+
console.log(` ${ui_1.colors.muted(`Working directory: ${workingDir}`)}`);
|
|
368
|
+
console.log(` ${ui_1.colors.muted(`AI provider: ${provider.definition.displayName}`)}`);
|
|
369
|
+
console.log(` ${ui_1.colors.muted(`Type your agent idea and ${provider.definition.displayName} will build it for you.`)}`);
|
|
370
|
+
console.log(` ${ui_1.colors.muted('Press Ctrl+C to exit at any time.')}`);
|
|
357
371
|
console.log();
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
372
|
+
const args = provider.definition.buildArgs();
|
|
373
|
+
const childExitCode = await new Promise((resolve) => {
|
|
374
|
+
let settled = false;
|
|
375
|
+
const cleanup = () => {
|
|
376
|
+
if (lockHandle && !lockHandle.released) {
|
|
377
|
+
(0, lock_manager_1.releaseLock)(lockHandle);
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
const onSignal = (signal) => {
|
|
381
|
+
if (settled)
|
|
382
|
+
return;
|
|
383
|
+
console.log();
|
|
384
|
+
(0, ui_1.info)(`Received ${signal} - cleaning up...`);
|
|
385
|
+
cleanup();
|
|
386
|
+
process.exit(signal === 'SIGINT' ? 130 : 143);
|
|
387
|
+
};
|
|
388
|
+
process.on('SIGINT', onSignal);
|
|
389
|
+
process.on('SIGTERM', onSignal);
|
|
390
|
+
const child = (0, child_process_1.spawn)(provider.definition.command, args, {
|
|
391
|
+
stdio: 'inherit',
|
|
392
|
+
cwd: workingDir,
|
|
393
|
+
env: { ...process.env },
|
|
394
|
+
});
|
|
395
|
+
child.on('error', (err) => {
|
|
396
|
+
if (settled)
|
|
397
|
+
return;
|
|
398
|
+
settled = true;
|
|
399
|
+
(0, ui_1.error)(`Failed to start ${provider.definition.displayName}: ${err.message}`);
|
|
400
|
+
cleanup();
|
|
401
|
+
process.removeListener('SIGINT', onSignal);
|
|
402
|
+
process.removeListener('SIGTERM', onSignal);
|
|
403
|
+
resolve(1);
|
|
404
|
+
});
|
|
405
|
+
child.on('exit', (code) => {
|
|
406
|
+
if (settled)
|
|
407
|
+
return;
|
|
408
|
+
settled = true;
|
|
409
|
+
cleanup();
|
|
410
|
+
process.removeListener('SIGINT', onSignal);
|
|
411
|
+
process.removeListener('SIGTERM', onSignal);
|
|
412
|
+
resolve(code ?? 0);
|
|
413
|
+
});
|
|
414
|
+
});
|
|
361
415
|
console.log();
|
|
416
|
+
if (fs_1.default.existsSync(agentPath)) {
|
|
417
|
+
(0, ui_1.divider)();
|
|
418
|
+
console.log();
|
|
419
|
+
console.log(chalk_1.default.bold(' Next steps:'));
|
|
420
|
+
console.log();
|
|
421
|
+
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white(`suzi deploy ${path_1.default.relative(process.cwd(), agentPath)}`)}`);
|
|
422
|
+
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi agents activate <id>')}`);
|
|
423
|
+
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi agents execute <id>')}`);
|
|
424
|
+
console.log();
|
|
425
|
+
}
|
|
426
|
+
if (childExitCode !== 0) {
|
|
427
|
+
process.exitCode = childExitCode;
|
|
428
|
+
}
|
|
362
429
|
}
|
|
363
|
-
|
|
364
|
-
|
|
430
|
+
finally {
|
|
431
|
+
// Release lock on exit (if not already released by signal handler)
|
|
432
|
+
if (lockHandle && !lockHandle.released) {
|
|
433
|
+
(0, lock_manager_1.releaseLock)(lockHandle);
|
|
434
|
+
}
|
|
365
435
|
}
|
|
366
436
|
});
|
|
367
437
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkL3D"}
|
package/dist/commands/login.js
CHANGED
|
@@ -36,6 +36,7 @@ function registerLoginCommand(program) {
|
|
|
36
36
|
.description('Sign in to Suzi with Google (OAuth2.0)')
|
|
37
37
|
.option('--api-url <url>', 'Override API URL')
|
|
38
38
|
.option('--web-url <url>', 'Override Web App URL')
|
|
39
|
+
.option('--invite <code>', 'Invite code (for new signups)')
|
|
39
40
|
.action(async (opts) => {
|
|
40
41
|
console.log((0, ui_1.logo)());
|
|
41
42
|
(0, ui_1.header)('Sign in to Suzi');
|
|
@@ -48,16 +49,48 @@ function registerLoginCommand(program) {
|
|
|
48
49
|
(0, config_1.setWebUrl)(opts.webUrl);
|
|
49
50
|
}
|
|
50
51
|
const config = (0, config_1.getConfig)();
|
|
51
|
-
(0, ui_1.info)(`API endpoint: ${config.apiUrl}`);
|
|
52
|
-
(0, ui_1.info)(`Web app: ${config.webUrl}`);
|
|
53
|
-
console.log();
|
|
54
52
|
const port = await findFreePort(9876);
|
|
55
53
|
const callbackUrl = `http://localhost:${port}/callback`;
|
|
56
54
|
const spinner = (0, ora_1.default)('Waiting for browser authentication...').start();
|
|
57
55
|
try {
|
|
58
56
|
const token = await startCallbackServer(port, callbackUrl, config.webUrl, spinner);
|
|
59
57
|
spinner.text = 'Verifying with Suzi API...';
|
|
60
|
-
|
|
58
|
+
// First attempt with invite code if provided via flag
|
|
59
|
+
let response = await (0, api_1.post)('/api/user/verify', {
|
|
60
|
+
token,
|
|
61
|
+
inviteCode: opts.invite,
|
|
62
|
+
});
|
|
63
|
+
// Handle HTTP 428 - Invite Required (only prompt if not provided via flag)
|
|
64
|
+
if (response.status === 428 && !opts.invite) {
|
|
65
|
+
spinner.stop();
|
|
66
|
+
console.log();
|
|
67
|
+
(0, ui_1.warn)('This is an invite-only platform.');
|
|
68
|
+
console.log();
|
|
69
|
+
const { inviteCode } = await inquirer_1.default.prompt([
|
|
70
|
+
{
|
|
71
|
+
type: 'input',
|
|
72
|
+
name: 'inviteCode',
|
|
73
|
+
message: 'Enter your invite code:',
|
|
74
|
+
validate: (input) => {
|
|
75
|
+
if (!input.trim()) {
|
|
76
|
+
return 'Invite code is required';
|
|
77
|
+
}
|
|
78
|
+
return true;
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
]);
|
|
82
|
+
console.log();
|
|
83
|
+
spinner.start('Verifying invite code...');
|
|
84
|
+
// Retry with invite code
|
|
85
|
+
response = await (0, api_1.post)('/api/user/verify', { token, inviteCode: inviteCode.trim() });
|
|
86
|
+
}
|
|
87
|
+
// Handle HTTP 403 - Invalid Invite Code
|
|
88
|
+
if (response.status === 403) {
|
|
89
|
+
spinner.fail();
|
|
90
|
+
(0, ui_1.error)(`Invalid invite code: ${response.data?.message || 'The provided invite code is not valid'}`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
// Handle other errors
|
|
61
94
|
if (!response.ok) {
|
|
62
95
|
spinner.fail();
|
|
63
96
|
(0, ui_1.error)(`Authentication failed: ${response.data?.error || response.data?.message || 'Unknown error'}`);
|
|
@@ -226,7 +259,52 @@ function installSuziHooksGlobal() {
|
|
|
226
259
|
(0, ui_1.warn)(`Could not install hooks: ${err?.message || 'Unknown error'}`);
|
|
227
260
|
}
|
|
228
261
|
}
|
|
262
|
+
async function displayWalletBalances(svmAddress, solBalance) {
|
|
263
|
+
(0, ui_1.divider)();
|
|
264
|
+
(0, ui_1.label)('SOL Balance', (0, ui_1.formatSol)(solBalance));
|
|
265
|
+
// Check for USDC too
|
|
266
|
+
try {
|
|
267
|
+
const usdcResp = await (0, api_1.post)('/api/actions/execute', {
|
|
268
|
+
name: 'solana.get_token_balance',
|
|
269
|
+
params: { address: svmAddress, token: 'USDC' },
|
|
270
|
+
});
|
|
271
|
+
if (usdcResp.ok && usdcResp.data?.result && usdcResp.data.result.balance > 0) {
|
|
272
|
+
(0, ui_1.label)('USDC Balance', (0, ui_1.formatUsd)(usdcResp.data.result.balance));
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch {
|
|
276
|
+
// Ignore token check errors
|
|
277
|
+
}
|
|
278
|
+
(0, ui_1.divider)();
|
|
279
|
+
console.log();
|
|
280
|
+
(0, ui_1.success)("You're all set!");
|
|
281
|
+
}
|
|
229
282
|
async function onboardNewUser(svmAddress, evmAddress) {
|
|
283
|
+
// First, check if user already has balance
|
|
284
|
+
const spinner = (0, ora_1.default)('Checking wallet balance...').start();
|
|
285
|
+
let initialBalance = 0;
|
|
286
|
+
try {
|
|
287
|
+
const resp = await (0, api_1.post)('/api/actions/execute', {
|
|
288
|
+
name: 'solana.get_native_balance',
|
|
289
|
+
params: { address: svmAddress },
|
|
290
|
+
});
|
|
291
|
+
if (resp.ok && resp.data?.result) {
|
|
292
|
+
initialBalance = resp.data.result.balance;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
// Network error — continue with onboarding
|
|
297
|
+
}
|
|
298
|
+
// If user already has balance, skip QR code display entirely
|
|
299
|
+
if (initialBalance > 0) {
|
|
300
|
+
spinner.succeed('Wallet already funded!');
|
|
301
|
+
console.log();
|
|
302
|
+
await displayWalletBalances(svmAddress, initialBalance);
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
// User has no balance — show QR codes and start polling
|
|
306
|
+
spinner.stop();
|
|
307
|
+
console.log();
|
|
230
308
|
console.log(ui_1.colors.primary.bold(' Fund your wallet to get started'));
|
|
231
309
|
console.log();
|
|
232
310
|
const heads = [ui_1.colors.sol('SOL')];
|
|
@@ -246,7 +324,7 @@ async function onboardNewUser(svmAddress, evmAddress) {
|
|
|
246
324
|
table.push(qrCodes.map((qr) => qr.trim()));
|
|
247
325
|
console.log(table.toString());
|
|
248
326
|
console.log();
|
|
249
|
-
const
|
|
327
|
+
const pollSpinner = (0, ora_1.default)({
|
|
250
328
|
text: 'Waiting for deposit... (Ctrl+C to skip)',
|
|
251
329
|
spinner: 'dots',
|
|
252
330
|
}).start();
|
|
@@ -256,7 +334,7 @@ async function onboardNewUser(svmAddress, evmAddress) {
|
|
|
256
334
|
let skipRequested = false;
|
|
257
335
|
const onExit = () => {
|
|
258
336
|
skipRequested = true;
|
|
259
|
-
|
|
337
|
+
pollSpinner.stop();
|
|
260
338
|
console.log();
|
|
261
339
|
(0, ui_1.info)('Skipped deposit check.');
|
|
262
340
|
};
|
|
@@ -282,26 +360,9 @@ async function onboardNewUser(svmAddress, evmAddress) {
|
|
|
282
360
|
}
|
|
283
361
|
}
|
|
284
362
|
if (!skipRequested) {
|
|
285
|
-
|
|
286
|
-
console.log();
|
|
287
|
-
(0, ui_1.divider)();
|
|
288
|
-
(0, ui_1.label)('SOL Balance', (0, ui_1.formatSol)(balance));
|
|
289
|
-
// Check for USDC too
|
|
290
|
-
try {
|
|
291
|
-
const usdcResp = await (0, api_1.post)('/api/actions/execute', {
|
|
292
|
-
name: 'solana.get_token_balance',
|
|
293
|
-
params: { address: svmAddress, token: 'USDC' },
|
|
294
|
-
});
|
|
295
|
-
if (usdcResp.ok && usdcResp.data?.result && usdcResp.data.result.balance > 0) {
|
|
296
|
-
(0, ui_1.label)('USDC Balance', `${usdcResp.data.result.balance.toFixed(2)} USDC`);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
catch {
|
|
300
|
-
// Ignore token check errors
|
|
301
|
-
}
|
|
302
|
-
(0, ui_1.divider)();
|
|
363
|
+
pollSpinner.succeed('Deposit received!');
|
|
303
364
|
console.log();
|
|
304
|
-
(
|
|
365
|
+
await displayWalletBalances(svmAddress, balance);
|
|
305
366
|
}
|
|
306
367
|
}
|
|
307
368
|
finally {
|