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.
@@ -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;AAqChE,wBAAgB,qBAAqB,IAAI,MAAM,CAgC9C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAOhD;AAkGD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgN5D"}
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"}
@@ -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 agentName;
210
- if (dir) {
211
- agentName = dir;
212
- }
213
- else if (fetchedAgent) {
214
- // Derive directory name from agent title
215
- const defaultName = (fetchedAgent.title || 'my-agent')
216
- .toLowerCase()
217
- .replace(/[^a-z0-9]+/g, '-')
218
- .replace(/^-|-$/g, '')
219
- || 'my-agent';
220
- const { name } = await inquirer_1.default.prompt([
221
- {
222
- type: 'input',
223
- name: 'name',
224
- message: 'Directory name:',
225
- default: defaultName,
226
- validate: (input) => {
227
- const trimmed = input.trim();
228
- if (!trimmed)
229
- return 'Name cannot be empty.';
230
- if (/[/\\]/.test(trimmed))
231
- return 'Name cannot contain slashes.';
232
- if (trimmed.length > 128)
233
- return 'Name cannot exceed 128 characters.';
234
- return true;
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
- console.log();
274
- (0, ui_1.info)(`Selected provider docs: ${provider.docsUrl}`);
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: 'confirm',
290
- name: 'overwrite',
291
- message: `agent.ts already exists in ${agentName}. Overwrite with fetched code?`,
292
- default: false,
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
- if (!overwrite) {
296
- (0, ui_1.info)('Keeping existing agent.ts.');
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
- fs_1.default.writeFileSync(agentPath, fetchedAgent.source);
300
- (0, ui_1.success)(`Overwrote agent.ts with fetched source.`);
316
+ (0, ui_1.error)(`Failed to acquire session lock: ${lockError.type}`);
317
+ return;
301
318
  }
302
319
  }
303
320
  else {
304
- fs_1.default.writeFileSync(agentPath, fetchedAgent.source);
305
- (0, ui_1.success)(`Wrote agent source to ${path_1.default.relative(process.cwd(), agentPath)}`);
321
+ lockHandle = lockResult.handle;
306
322
  }
307
- (0, ui_1.info)(`Agent ID: ${fetchedAgent.id}`);
308
- }
309
- else if (shouldScaffold && !agentExists) {
310
- // Scaffold agent.ts template
311
- const displayName = agentName
312
- .replace(/[-_]+/g, ' ')
313
- .replace(/\b\w/g, (c) => c.toUpperCase());
314
- const template = AGENT_TS_TEMPLATE.replace("name: 'My Agent'", `name: '${displayName}'`);
315
- fs_1.default.writeFileSync(agentPath, template);
316
- (0, ui_1.success)(`Created agent.ts template at ${path_1.default.relative(process.cwd(), agentPath)}`);
317
- }
318
- else if (agentExists) {
319
- (0, ui_1.info)(`Using existing agent.ts at ${path_1.default.relative(process.cwd(), agentPath)}`);
320
- }
321
- console.log();
322
- (0, ui_1.divider)();
323
- console.log();
324
- console.log(` ${chalk_1.default.bold('Starting AI-assisted agent creation...')}`);
325
- console.log(` ${ui_1.colors.muted(`Working directory: ${workingDir}`)}`);
326
- console.log(` ${ui_1.colors.muted(`AI provider: ${provider.displayName}`)}`);
327
- console.log(` ${ui_1.colors.muted(`Type your agent idea and ${provider.displayName} will build it for you.`)}`);
328
- console.log(` ${ui_1.colors.muted('Press Ctrl+C to exit at any time.')}`);
329
- console.log();
330
- const args = provider.buildArgs();
331
- const childExitCode = await new Promise((resolve) => {
332
- let settled = false;
333
- const child = (0, child_process_1.spawn)(provider.command, args, {
334
- stdio: 'inherit',
335
- cwd: workingDir,
336
- env: { ...process.env },
337
- });
338
- child.on('error', (err) => {
339
- if (settled)
340
- return;
341
- settled = true;
342
- (0, ui_1.error)(`Failed to start ${provider.displayName}: ${err.message}`);
343
- resolve(1);
344
- });
345
- child.on('exit', (code) => {
346
- if (settled)
347
- return;
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(' Next steps:'));
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
- console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white(`suzi deploy ${path_1.default.relative(process.cwd(), agentPath)}`)}`);
359
- console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi agents activate <id>')}`);
360
- console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi agents execute <id>')}`);
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
- if (childExitCode !== 0) {
364
- process.exitCode = childExitCode;
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,CA4I3D"}
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"}
@@ -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
- const response = await (0, api_1.post)('/api/user/verify', { token });
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 spinner = (0, ora_1.default)({
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
- spinner.stop();
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
- spinner.succeed('Deposit received!');
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
- (0, ui_1.success)("You're all set!");
365
+ await displayWalletBalances(svmAddress, balance);
305
366
  }
306
367
  }
307
368
  finally {