@paylobster/cli 4.3.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +82 -40
  2. package/dist/src/commands/dashboard.d.ts +3 -0
  3. package/dist/src/commands/dashboard.d.ts.map +1 -0
  4. package/dist/src/commands/dashboard.js +67 -0
  5. package/dist/src/commands/dashboard.js.map +1 -0
  6. package/dist/src/commands/export.d.ts +3 -0
  7. package/dist/src/commands/export.d.ts.map +1 -0
  8. package/dist/src/commands/export.js +97 -0
  9. package/dist/src/commands/export.js.map +1 -0
  10. package/dist/src/commands/health.d.ts +3 -0
  11. package/dist/src/commands/health.d.ts.map +1 -0
  12. package/dist/src/commands/health.js +165 -0
  13. package/dist/src/commands/health.js.map +1 -0
  14. package/dist/src/commands/invest.d.ts +3 -0
  15. package/dist/src/commands/invest.d.ts.map +1 -0
  16. package/dist/src/commands/invest.js +721 -0
  17. package/dist/src/commands/invest.js.map +1 -0
  18. package/dist/src/commands/quickstart.d.ts +3 -0
  19. package/dist/src/commands/quickstart.d.ts.map +1 -0
  20. package/dist/src/commands/quickstart.js +138 -0
  21. package/dist/src/commands/quickstart.js.map +1 -0
  22. package/dist/src/commands/search.d.ts +3 -0
  23. package/dist/src/commands/search.d.ts.map +1 -0
  24. package/dist/src/commands/search.js +126 -0
  25. package/dist/src/commands/search.js.map +1 -0
  26. package/dist/src/commands/treasury.d.ts.map +1 -1
  27. package/dist/src/commands/treasury.js +317 -0
  28. package/dist/src/commands/treasury.js.map +1 -1
  29. package/dist/src/commands/trust-graph.d.ts +3 -0
  30. package/dist/src/commands/trust-graph.d.ts.map +1 -0
  31. package/dist/src/commands/trust-graph.js +282 -0
  32. package/dist/src/commands/trust-graph.js.map +1 -0
  33. package/dist/src/commands/whoami.d.ts +3 -0
  34. package/dist/src/commands/whoami.d.ts.map +1 -0
  35. package/dist/src/commands/whoami.js +160 -0
  36. package/dist/src/commands/whoami.js.map +1 -0
  37. package/dist/src/index.js +18 -2
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/lib/contracts.d.ts +177 -23
  40. package/dist/src/lib/contracts.d.ts.map +1 -1
  41. package/dist/src/lib/contracts.js +151 -0
  42. package/dist/src/lib/contracts.js.map +1 -1
  43. package/package.json +4 -2
  44. package/src/commands/dashboard.ts +69 -0
  45. package/src/commands/export.ts +132 -0
  46. package/src/commands/health.ts +212 -0
  47. package/src/commands/invest.ts +810 -0
  48. package/src/commands/quickstart.ts +150 -0
  49. package/src/commands/search.ts +151 -0
  50. package/src/commands/treasury.ts +385 -0
  51. package/src/commands/trust-graph.ts +267 -0
  52. package/src/commands/whoami.ts +172 -0
  53. package/src/index.ts +18 -2
  54. package/src/lib/contracts.ts +159 -0
@@ -15,6 +15,7 @@ exports.getEscrow = getEscrow;
15
15
  exports.getUserEscrowCount = getUserEscrowCount;
16
16
  exports.formatUSDC = formatUSDC;
17
17
  exports.formatETH = formatETH;
18
+ exports.getTrustGraph = getTrustGraph;
18
19
  const viem_1 = require("viem");
19
20
  const chains_1 = require("viem/chains");
20
21
  const wallet_1 = require("./wallet");
@@ -26,6 +27,7 @@ const CONTRACTS_MAINNET = {
26
27
  CREDIT: '0xD9241Ce8a721Ef5fcCAc5A11983addC526eC80E1',
27
28
  ESCROW: '0x49EdEe04c78B7FeD5248A20706c7a6c540748806',
28
29
  USDC: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
30
+ TRUST_GRAPH: '0x0000000000000000000000000000000000000000', // TODO: Deploy TrustGraph
29
31
  };
30
32
  const CONTRACTS_SEPOLIA = {
31
33
  IDENTITY: '0x3dfA02Ed4F0e4F10E8031d7a4cB8Ea0bBbFbCB8c',
@@ -35,6 +37,7 @@ const CONTRACTS_SEPOLIA = {
35
37
  CREDIT: '0xBA64e2b2F2a80D03A4B13b3396942C1e78205C7d',
36
38
  ESCROW: '0x78D1f50a1965dE34f6b5a3D3546C94FE1809Cd82',
37
39
  USDC: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
40
+ TRUST_GRAPH: '0x0000000000000000000000000000000000000000', // TODO: Deploy TrustGraph
38
41
  };
39
42
  // ABIs
40
43
  const IDENTITY_ABI = [
@@ -358,4 +361,152 @@ function formatUSDC(amount) {
358
361
  function formatETH(amount) {
359
362
  return (0, viem_1.formatUnits)(amount, 18);
360
363
  }
364
+ // TrustGraph ABI
365
+ const TRUST_GRAPH_ABI = [
366
+ {
367
+ inputs: [
368
+ { name: 'agent', type: 'address' },
369
+ { name: 'trustLevel', type: 'uint8' },
370
+ ],
371
+ name: 'endorseAgent',
372
+ outputs: [],
373
+ stateMutability: 'nonpayable',
374
+ type: 'function',
375
+ },
376
+ {
377
+ inputs: [{ name: 'agent', type: 'address' }],
378
+ name: 'revokeEndorsement',
379
+ outputs: [],
380
+ stateMutability: 'nonpayable',
381
+ type: 'function',
382
+ },
383
+ {
384
+ inputs: [
385
+ { name: 'from', type: 'address' },
386
+ { name: 'to', type: 'address' },
387
+ ],
388
+ name: 'getDirectTrust',
389
+ outputs: [{ name: 'trustLevel', type: 'uint8' }],
390
+ stateMutability: 'view',
391
+ type: 'function',
392
+ },
393
+ {
394
+ inputs: [
395
+ { name: 'from', type: 'address' },
396
+ { name: 'to', type: 'address' },
397
+ { name: 'maxDepth', type: 'uint8' },
398
+ ],
399
+ name: 'getInferredTrust',
400
+ outputs: [
401
+ { name: 'trustScore', type: 'uint256' },
402
+ { name: 'pathLength', type: 'uint8' },
403
+ ],
404
+ stateMutability: 'view',
405
+ type: 'function',
406
+ },
407
+ {
408
+ inputs: [{ name: 'agent', type: 'address' }],
409
+ name: 'getEndorsements',
410
+ outputs: [{ name: 'endorsed', type: 'address[]' }],
411
+ stateMutability: 'view',
412
+ type: 'function',
413
+ },
414
+ {
415
+ inputs: [{ name: 'agent', type: 'address' }],
416
+ name: 'getEndorsers',
417
+ outputs: [{ name: 'endorsers', type: 'address[]' }],
418
+ stateMutability: 'view',
419
+ type: 'function',
420
+ },
421
+ {
422
+ inputs: [{ name: 'agent', type: 'address' }],
423
+ name: 'getTrustScore',
424
+ outputs: [{ name: 'score', type: 'uint256' }],
425
+ stateMutability: 'view',
426
+ type: 'function',
427
+ },
428
+ ];
429
+ /**
430
+ * Get TrustGraph module instance
431
+ */
432
+ function getTrustGraph() {
433
+ const config = (0, config_1.loadConfig)();
434
+ const publicClient = getPublicClient(config.network);
435
+ const contracts = getContracts(config.network);
436
+ const chain = config.network === 'mainnet' ? chains_1.base : chains_1.baseSepolia;
437
+ return {
438
+ async endorseAgent(agent, trustLevel) {
439
+ const { client, account } = await (0, wallet_1.loadWallet)();
440
+ const hash = await client.writeContract({
441
+ address: contracts.TRUST_GRAPH,
442
+ abi: TRUST_GRAPH_ABI,
443
+ functionName: 'endorseAgent',
444
+ args: [agent, trustLevel],
445
+ account,
446
+ chain,
447
+ });
448
+ return hash;
449
+ },
450
+ async revokeEndorsement(agent) {
451
+ const { client, account } = await (0, wallet_1.loadWallet)();
452
+ const hash = await client.writeContract({
453
+ address: contracts.TRUST_GRAPH,
454
+ abi: TRUST_GRAPH_ABI,
455
+ functionName: 'revokeEndorsement',
456
+ args: [agent],
457
+ account,
458
+ chain,
459
+ });
460
+ return hash;
461
+ },
462
+ async getDirectTrust(from, to) {
463
+ const result = await publicClient.readContract({
464
+ address: contracts.TRUST_GRAPH,
465
+ abi: TRUST_GRAPH_ABI,
466
+ functionName: 'getDirectTrust',
467
+ args: [from, to],
468
+ });
469
+ return Number(result);
470
+ },
471
+ async getInferredTrust(from, to, maxDepth = 4) {
472
+ const result = await publicClient.readContract({
473
+ address: contracts.TRUST_GRAPH,
474
+ abi: TRUST_GRAPH_ABI,
475
+ functionName: 'getInferredTrust',
476
+ args: [from, to, maxDepth],
477
+ });
478
+ return {
479
+ trustScore: Number(result[0]),
480
+ pathLength: Number(result[1]),
481
+ };
482
+ },
483
+ async getEndorsements(agent) {
484
+ const result = await publicClient.readContract({
485
+ address: contracts.TRUST_GRAPH,
486
+ abi: TRUST_GRAPH_ABI,
487
+ functionName: 'getEndorsements',
488
+ args: [agent],
489
+ });
490
+ return result;
491
+ },
492
+ async getEndorsers(agent) {
493
+ const result = await publicClient.readContract({
494
+ address: contracts.TRUST_GRAPH,
495
+ abi: TRUST_GRAPH_ABI,
496
+ functionName: 'getEndorsers',
497
+ args: [agent],
498
+ });
499
+ return result;
500
+ },
501
+ async getAggregateTrust(agent) {
502
+ const result = await publicClient.readContract({
503
+ address: contracts.TRUST_GRAPH,
504
+ abi: TRUST_GRAPH_ABI,
505
+ functionName: 'getTrustScore',
506
+ args: [agent],
507
+ });
508
+ return Number(result);
509
+ },
510
+ };
511
+ }
361
512
  //# sourceMappingURL=contracts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/lib/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/lib/contracts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "name": "@paylobster/cli",
3
- "version": "4.3.0",
3
+ "version": "4.5.0",
4
4
  "description": "PayLobster command-line interface for agent payments and service discovery",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "bin": {
8
- "plob": "./bin/plob.js"
8
+ "paylobster": "./bin/plob.js",
9
+ "plob": "./bin/plob.js",
10
+ "pay-lobster": "./bin/plob.js"
9
11
  },
10
12
  "scripts": {
11
13
  "build": "tsc",
@@ -0,0 +1,69 @@
1
+ import { Command } from 'commander';
2
+ import { error, success } from '../lib/display';
3
+ import { exec } from 'child_process';
4
+ import { promisify } from 'util';
5
+ import chalk from 'chalk';
6
+
7
+ const execAsync = promisify(exec);
8
+
9
+ const BASE_URL = 'https://paylobster.com';
10
+
11
+ async function openURL(url: string): Promise<void> {
12
+ const platform = process.platform;
13
+
14
+ let command: string;
15
+
16
+ switch (platform) {
17
+ case 'darwin':
18
+ command = `open "${url}"`;
19
+ break;
20
+ case 'win32':
21
+ command = `start "" "${url}"`;
22
+ break;
23
+ default: // linux, freebsd, etc.
24
+ command = `xdg-open "${url}"`;
25
+ break;
26
+ }
27
+
28
+ try {
29
+ await execAsync(command);
30
+ success(`Opened ${url} in your default browser`);
31
+ } catch (err: any) {
32
+ error(`Failed to open browser: ${err.message}`);
33
+ console.log(chalk.yellow('Please open this URL manually:'), chalk.cyan(url));
34
+ process.exit(1);
35
+ }
36
+ }
37
+
38
+ export function createDashboardCommand(): Command {
39
+ const cmd = new Command('dashboard')
40
+ .description('🌐 Open PayLobster web dashboard')
41
+ .argument('[page]', 'Dashboard page (treasury, investments, swap)', '')
42
+ .action(async (page: string) => {
43
+ let url = `${BASE_URL}/dashboard`;
44
+
45
+ switch (page.toLowerCase()) {
46
+ case 'treasury':
47
+ url += '/treasury';
48
+ break;
49
+ case 'investments':
50
+ url += '/investments';
51
+ break;
52
+ case 'swap':
53
+ url += '/swap';
54
+ break;
55
+ case '':
56
+ // Default dashboard
57
+ break;
58
+ default:
59
+ console.log(chalk.yellow(`Unknown page: ${page}`));
60
+ console.log(chalk.gray('Available pages: treasury, investments, swap'));
61
+ console.log(chalk.gray('Opening default dashboard...\n'));
62
+ break;
63
+ }
64
+
65
+ await openURL(url);
66
+ });
67
+
68
+ return cmd;
69
+ }
@@ -0,0 +1,132 @@
1
+ import { Command } from 'commander';
2
+ import { getAgentInfo, getReputation, getCreditStatus, getBalance, getUserEscrowCount, formatUSDC, formatETH } from '../lib/contracts';
3
+ import { getWalletAddress } from '../lib/wallet';
4
+ import { loadConfig } from '../lib/config';
5
+ import { error, success } from '../lib/display';
6
+ import chalk from 'chalk';
7
+ import ora from 'ora';
8
+ import { writeFileSync } from 'fs';
9
+ import { resolve } from 'path';
10
+
11
+ interface ExportData {
12
+ exportedAt: string;
13
+ network: string;
14
+ identity: {
15
+ name: string;
16
+ address: string;
17
+ tokenId: string;
18
+ registered: boolean;
19
+ };
20
+ reputation: {
21
+ score: number;
22
+ trustVector: string;
23
+ };
24
+ credit: {
25
+ limit: string;
26
+ available: string;
27
+ inUse: string;
28
+ };
29
+ balances: {
30
+ usdc: string;
31
+ eth: string;
32
+ };
33
+ activity: {
34
+ escrowCount: number;
35
+ };
36
+ treasury: {
37
+ summary: string;
38
+ };
39
+ investments: {
40
+ portfolio: string;
41
+ };
42
+ }
43
+
44
+ export function createExportCommand(): Command {
45
+ const cmd = new Command('export')
46
+ .description('📦 Export all your PayLobster data')
47
+ .option('-o, --output <file>', 'Output file path (default: stdout)')
48
+ .action(async (options: { output?: string }) => {
49
+ const spinner = ora('Collecting your data...').start();
50
+
51
+ try {
52
+ const address = getWalletAddress() as `0x${string}`;
53
+ const config = loadConfig();
54
+
55
+ // Fetch all data
56
+ spinner.text = 'Fetching identity, reputation, credit...';
57
+ const [agentInfo, reputation, creditStatus, balance, escrowCount] = await Promise.all([
58
+ getAgentInfo(address),
59
+ getReputation(address),
60
+ getCreditStatus(address),
61
+ getBalance(address),
62
+ getUserEscrowCount(address),
63
+ ]);
64
+
65
+ spinner.text = 'Formatting data...';
66
+
67
+ // Build export object
68
+ const exportData: ExportData = {
69
+ exportedAt: new Date().toISOString(),
70
+ network: config.network,
71
+ identity: {
72
+ name: agentInfo.name,
73
+ address,
74
+ tokenId: agentInfo.tokenId.toString(),
75
+ registered: agentInfo.registered,
76
+ },
77
+ reputation: {
78
+ score: Number(reputation.score),
79
+ trustVector: reputation.trustVector.toString(),
80
+ },
81
+ credit: {
82
+ limit: formatUSDC(creditStatus.limit),
83
+ available: formatUSDC(creditStatus.available),
84
+ inUse: formatUSDC(creditStatus.inUse),
85
+ },
86
+ balances: {
87
+ usdc: formatUSDC(balance.usdc),
88
+ eth: formatETH(balance.eth),
89
+ },
90
+ activity: {
91
+ escrowCount,
92
+ },
93
+ treasury: {
94
+ summary: 'Not yet implemented',
95
+ },
96
+ investments: {
97
+ portfolio: 'Not yet implemented',
98
+ },
99
+ };
100
+
101
+ const jsonOutput = JSON.stringify(exportData, null, 2);
102
+
103
+ spinner.stop();
104
+
105
+ // Output to file or stdout
106
+ if (options.output) {
107
+ const outputPath = resolve(options.output);
108
+ writeFileSync(outputPath, jsonOutput, 'utf-8');
109
+ success(`Data exported to ${outputPath}`);
110
+
111
+ // Show summary
112
+ console.log();
113
+ console.log(chalk.gray('Summary:'));
114
+ console.log(chalk.gray(' Agent: '), chalk.white(agentInfo.name || 'Not registered'));
115
+ console.log(chalk.gray(' Reputation: '), chalk.white(reputation.score.toString()));
116
+ console.log(chalk.gray(' USDC: '), chalk.white(formatUSDC(balance.usdc)));
117
+ console.log(chalk.gray(' Escrows: '), chalk.white(escrowCount.toString()));
118
+ console.log();
119
+ } else {
120
+ // Output to stdout
121
+ console.log(jsonOutput);
122
+ }
123
+
124
+ } catch (err: any) {
125
+ spinner.stop();
126
+ error(`Export failed: ${err.message}`);
127
+ process.exit(1);
128
+ }
129
+ });
130
+
131
+ return cmd;
132
+ }
@@ -0,0 +1,212 @@
1
+ import { Command } from 'commander';
2
+ import { getPublicClient, getContracts } from '../lib/contracts';
3
+ import { loadConfig } from '../lib/config';
4
+ import { error, outputJSON } from '../lib/display';
5
+ import type { OutputOptions } from '../lib/types';
6
+ import chalk from 'chalk';
7
+ import ora from 'ora';
8
+ import type { Address } from 'viem';
9
+
10
+ interface ContractHealth {
11
+ name: string;
12
+ address: Address;
13
+ status: 'ok' | 'error';
14
+ error?: string;
15
+ blockNumber?: bigint;
16
+ }
17
+
18
+ interface ChainInfo {
19
+ network: string;
20
+ blockNumber: bigint;
21
+ gasPrice: bigint;
22
+ }
23
+
24
+ const CONTRACT_NAMES = {
25
+ IDENTITY: 'Identity Registry',
26
+ REPUTATION: 'Reputation System',
27
+ CREDIT: 'Credit Manager',
28
+ ESCROW: 'Escrow V3',
29
+ USDC: 'USDC Token',
30
+ };
31
+
32
+ // Additional contract addresses from the requirements
33
+ const ADDITIONAL_CONTRACTS_MAINNET = {
34
+ POLICY_REGISTRY: '0x20a30064629e797a88fCdBa2A4C310971bF8A0F2' as Address,
35
+ CROSS_RAIL_LEDGER: '0x74AcB48650f12368960325d3c7304965fd62db18' as Address,
36
+ SPENDING_MANDATE: '0x8609eBA4F8B6081AcC8ce8B0C126C515f6140849' as Address,
37
+ TREASURY_FACTORY: '0x171a685f28546a0ebb13059184db1f808b915066' as Address,
38
+ INVESTMENT_TERMSHEET: '0xfa4d9933422401e8b0846f14889b383e068860eb' as Address,
39
+ };
40
+
41
+ const ADDITIONAL_CONTRACT_NAMES = {
42
+ POLICY_REGISTRY: 'Policy Registry',
43
+ CROSS_RAIL_LEDGER: 'CrossRail Ledger',
44
+ SPENDING_MANDATE: 'Spending Mandate',
45
+ TREASURY_FACTORY: 'Treasury Factory',
46
+ INVESTMENT_TERMSHEET: 'Investment TermSheet',
47
+ };
48
+
49
+ async function checkContract(
50
+ client: any,
51
+ name: string,
52
+ address: Address
53
+ ): Promise<ContractHealth> {
54
+ try {
55
+ // Simple check: get code at address
56
+ const code = await client.getBytecode({ address });
57
+
58
+ if (!code || code === '0x') {
59
+ return {
60
+ name,
61
+ address,
62
+ status: 'error',
63
+ error: 'No contract code found',
64
+ };
65
+ }
66
+
67
+ // Get current block number
68
+ const blockNumber = await client.getBlockNumber();
69
+
70
+ return {
71
+ name,
72
+ address,
73
+ status: 'ok',
74
+ blockNumber,
75
+ };
76
+ } catch (err: any) {
77
+ return {
78
+ name,
79
+ address,
80
+ status: 'error',
81
+ error: err.message,
82
+ };
83
+ }
84
+ }
85
+
86
+ export function createHealthCommand(): Command {
87
+ const cmd = new Command('health')
88
+ .description('🏥 Check PayLobster contract health')
89
+ .option('--json', 'Output as JSON')
90
+ .action(async (options: OutputOptions) => {
91
+ const spinner = ora('Checking contract health...').start();
92
+
93
+ try {
94
+ const config = loadConfig();
95
+ const client = getPublicClient(config.network);
96
+ const contracts = getContracts(config.network);
97
+
98
+ // Get chain info
99
+ const [blockNumber, gasPrice] = await Promise.all([
100
+ client.getBlockNumber(),
101
+ client.getGasPrice(),
102
+ ]);
103
+
104
+ const chainInfo: ChainInfo = {
105
+ network: config.network === 'mainnet' ? 'Base Mainnet' : 'Base Sepolia',
106
+ blockNumber,
107
+ gasPrice,
108
+ };
109
+
110
+ // Build contract list to check
111
+ const contractsToCheck: Array<{ name: string; address: Address }> = [
112
+ { name: CONTRACT_NAMES.IDENTITY, address: contracts.IDENTITY },
113
+ { name: CONTRACT_NAMES.REPUTATION, address: contracts.REPUTATION },
114
+ { name: CONTRACT_NAMES.CREDIT, address: contracts.CREDIT },
115
+ { name: CONTRACT_NAMES.ESCROW, address: contracts.ESCROW },
116
+ { name: CONTRACT_NAMES.USDC, address: contracts.USDC },
117
+ ];
118
+
119
+ // Add additional contracts for mainnet
120
+ if (config.network === 'mainnet') {
121
+ contractsToCheck.push(
122
+ { name: ADDITIONAL_CONTRACT_NAMES.POLICY_REGISTRY, address: ADDITIONAL_CONTRACTS_MAINNET.POLICY_REGISTRY },
123
+ { name: ADDITIONAL_CONTRACT_NAMES.CROSS_RAIL_LEDGER, address: ADDITIONAL_CONTRACTS_MAINNET.CROSS_RAIL_LEDGER },
124
+ { name: ADDITIONAL_CONTRACT_NAMES.SPENDING_MANDATE, address: ADDITIONAL_CONTRACTS_MAINNET.SPENDING_MANDATE },
125
+ { name: ADDITIONAL_CONTRACT_NAMES.TREASURY_FACTORY, address: ADDITIONAL_CONTRACTS_MAINNET.TREASURY_FACTORY },
126
+ { name: ADDITIONAL_CONTRACT_NAMES.INVESTMENT_TERMSHEET, address: ADDITIONAL_CONTRACTS_MAINNET.INVESTMENT_TERMSHEET }
127
+ );
128
+ }
129
+
130
+ // Check all contracts in parallel
131
+ const healthChecks = await Promise.all(
132
+ contractsToCheck.map(({ name, address }) => checkContract(client, name, address))
133
+ );
134
+
135
+ spinner.stop();
136
+
137
+ // Count successes and failures
138
+ const successCount = healthChecks.filter((c) => c.status === 'ok').length;
139
+ const failureCount = healthChecks.filter((c) => c.status === 'error').length;
140
+
141
+ // JSON output
142
+ if (outputJSON({
143
+ chain: chainInfo,
144
+ contracts: healthChecks,
145
+ summary: {
146
+ total: healthChecks.length,
147
+ healthy: successCount,
148
+ unhealthy: failureCount,
149
+ },
150
+ }, options)) {
151
+ return;
152
+ }
153
+
154
+ // Pretty output
155
+ console.log('\n' + chalk.cyan.bold('═══════════════════════════════════════════════════════════'));
156
+ console.log(chalk.cyan.bold(' 🏥 PayLobster Health Check'));
157
+ console.log(chalk.cyan.bold('═══════════════════════════════════════════════════════════\n'));
158
+
159
+ // Chain info
160
+ console.log(chalk.bold.underline('⛓️ CHAIN INFO'));
161
+ console.log();
162
+ console.log(chalk.gray(' Network: '), chalk.white(chainInfo.network));
163
+ console.log(chalk.gray(' Block Number: '), chalk.white(chainInfo.blockNumber.toString()));
164
+ console.log(chalk.gray(' Gas Price: '), chalk.white((Number(chainInfo.gasPrice) / 1e9).toFixed(2)), chalk.dim('Gwei'));
165
+ console.log();
166
+
167
+ // Contract status
168
+ console.log(chalk.bold.underline('📜 CONTRACT STATUS'));
169
+ console.log();
170
+
171
+ for (const contract of healthChecks) {
172
+ const statusIcon = contract.status === 'ok' ? chalk.green('✅') : chalk.red('❌');
173
+ const statusText = contract.status === 'ok' ? chalk.green('responding') : chalk.red('error');
174
+
175
+ console.log(` ${statusIcon} ${chalk.bold(contract.name)}`);
176
+ console.log(chalk.gray(' Address: '), chalk.dim(contract.address));
177
+ console.log(chalk.gray(' Status: '), statusText);
178
+
179
+ if (contract.status === 'ok' && contract.blockNumber) {
180
+ console.log(chalk.gray(' Block: '), chalk.white(contract.blockNumber.toString()));
181
+ } else if (contract.error) {
182
+ console.log(chalk.gray(' Error: '), chalk.red(contract.error));
183
+ }
184
+
185
+ console.log();
186
+ }
187
+
188
+ // Summary
189
+ console.log(chalk.cyan.bold('═══════════════════════════════════════════════════════════\n'));
190
+
191
+ if (failureCount === 0) {
192
+ console.log(chalk.green.bold(' ✅ All contracts healthy!'));
193
+ } else {
194
+ console.log(chalk.yellow.bold(` ⚠️ ${successCount}/${healthChecks.length} contracts healthy`));
195
+ console.log(chalk.red.bold(` ❌ ${failureCount} contract(s) unhealthy`));
196
+ }
197
+
198
+ console.log();
199
+
200
+ if (failureCount > 0) {
201
+ process.exit(1);
202
+ }
203
+
204
+ } catch (err: any) {
205
+ spinner.stop();
206
+ error(`Health check failed: ${err.message}`);
207
+ process.exit(1);
208
+ }
209
+ });
210
+
211
+ return cmd;
212
+ }