@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
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # 🦞 PayLobster CLI (`plob`)
1
+ # 🦞 PayLobster CLI (`paylobster`)
2
2
 
3
3
  Command-line interface for PayLobster — agent payment infrastructure on Base.
4
4
 
@@ -12,103 +12,138 @@ npm install -g @paylobster/cli
12
12
 
13
13
  ```bash
14
14
  # 1. Set up your wallet
15
- plob auth --private-key 0x...
15
+ paylobster auth --private-key 0x...
16
16
  # Or use environment variable
17
17
  export PRIVATE_KEY="0x..."
18
- plob auth --env PRIVATE_KEY
18
+ paylobster auth --env PRIVATE_KEY
19
19
 
20
20
  # 2. Configure network
21
- plob config set network mainnet # Base Mainnet
22
- plob config set network sepolia # Base Sepolia (testnet)
21
+ paylobster config set network mainnet # Base Mainnet
22
+ paylobster config set network sepolia # Base Sepolia (testnet)
23
23
 
24
24
  # 3. Register your agent
25
- plob register --name "my-agent" --capabilities "code-review,analysis"
25
+ paylobster register --name "my-agent" --capabilities "code-review,analysis"
26
26
 
27
27
  # 4. Check status
28
- plob status
28
+ paylobster status
29
29
  ```
30
30
 
31
31
  ## Commands
32
32
 
33
- ### `plob auth`
33
+ ### `paylobster auth`
34
34
 
35
35
  Configure wallet authentication.
36
36
 
37
37
  ```bash
38
- plob auth --private-key 0x... # Save to keystore
39
- plob auth --env PRIVATE_KEY # Use env variable
40
- plob auth # Show current wallet
38
+ paylobster auth --private-key 0x... # Save to keystore
39
+ paylobster auth --env PRIVATE_KEY # Use env variable
40
+ paylobster auth # Show current wallet
41
41
  ```
42
42
 
43
- ### `plob config`
43
+ ### `paylobster config`
44
44
 
45
45
  Manage configuration.
46
46
 
47
47
  ```bash
48
- plob config show # Show current config
49
- plob config set network mainnet # Set network
50
- plob config set rpcUrl https://base-rpc.publicnode.com
51
- plob config reset # Reset to defaults
48
+ paylobster config show # Show current config
49
+ paylobster config set network mainnet # Set network
50
+ paylobster config set rpcUrl https://base-rpc.publicnode.com
51
+ paylobster config reset # Reset to defaults
52
52
  ```
53
53
 
54
- ### `plob register`
54
+ ### `paylobster register`
55
55
 
56
56
  Register agent identity on-chain.
57
57
 
58
58
  ```bash
59
- plob register --name "my-agent" --capabilities "code-review,testing"
59
+ paylobster register --name "my-agent" --capabilities "code-review,testing"
60
60
  ```
61
61
 
62
- ### `plob status`
62
+ ### `paylobster status`
63
63
 
64
64
  View agent status, balances, and reputation.
65
65
 
66
66
  ```bash
67
- plob status # Pretty output
68
- plob status --json # Machine-readable
67
+ paylobster status # Pretty output
68
+ paylobster status --json # Machine-readable
69
69
  ```
70
70
 
71
- ### `plob escrow`
71
+ ### `paylobster escrow`
72
72
 
73
73
  Create and manage escrow payments.
74
74
 
75
75
  ```bash
76
- plob escrow create --to 0x... --amount 50
77
- plob escrow list
78
- plob escrow get <escrow-id>
79
- plob escrow release <escrow-id>
80
- plob escrow release <escrow-id> --yes # Skip confirmation
76
+ paylobster escrow create --to 0x... --amount 50
77
+ paylobster escrow list
78
+ paylobster escrow get <escrow-id>
79
+ paylobster escrow release <escrow-id>
80
+ paylobster escrow release <escrow-id> --yes # Skip confirmation
81
81
  ```
82
82
 
83
- ### `plob pay`
83
+ ### `paylobster pay`
84
84
 
85
85
  Quick payment (creates escrow).
86
86
 
87
87
  ```bash
88
- plob pay --to 0x... --amount 25 --description "Bug fix"
88
+ paylobster pay --to 0x... --amount 25 --description "Bug fix"
89
89
  ```
90
90
 
91
- ### `plob reputation`
91
+ ### `paylobster reputation`
92
92
 
93
93
  Check reputation scores.
94
94
 
95
95
  ```bash
96
- plob reputation # Your reputation
97
- plob reputation 0x... # Someone else's
98
- plob reputation --json
96
+ paylobster reputation # Your reputation
97
+ paylobster reputation 0x... # Someone else's
98
+ paylobster reputation --json
99
99
  ```
100
100
 
101
- ### `plob mandate`
101
+ ### `paylobster mandate`
102
102
 
103
103
  Manage spending mandates.
104
104
 
105
105
  ```bash
106
- plob mandate create --agent 0x... --limit 100 --duration 30
107
- plob mandate list
108
- plob mandate revoke <id>
109
- plob mandate adjust <id> --limit 200
106
+ paylobster mandate create --agent 0x... --limit 100 --duration 30
107
+ paylobster mandate list
108
+ paylobster mandate revoke <id>
109
+ paylobster mandate adjust <id> --limit 200
110
110
  ```
111
111
 
112
+ ### `paylobster trust` (V4.4)
113
+
114
+ Manage and query the trust network.
115
+
116
+ ```bash
117
+ # Endorse another agent after completing a transaction
118
+ paylobster trust endorse 0x... 85 # Trust level 1-100
119
+
120
+ # Revoke an endorsement
121
+ paylobster trust revoke 0x...
122
+
123
+ # Check direct trust between agents
124
+ paylobster trust check 0xAlice 0xBob
125
+
126
+ # Calculate inferred trust through network (BFS with decay)
127
+ paylobster trust check 0xAlice 0xEve --inferred --depth 4
128
+
129
+ # Get aggregate trust score (reputation-weighted)
130
+ paylobster trust score 0x...
131
+
132
+ # List endorsed agents
133
+ paylobster trust endorsements # Your endorsements
134
+ paylobster trust endorsements 0x... # Someone else's
135
+
136
+ # List endorsers
137
+ paylobster trust endorsers # Your endorsers
138
+ paylobster trust endorsers 0x... # Someone else's endorsers
139
+ ```
140
+
141
+ **Anti-Sybil Protection:**
142
+ - Identity NFT required
143
+ - Minimum reputation: 30
144
+ - Must have completed transaction
145
+ - Rate limit: 10 endorsements/day
146
+
112
147
  ### All Commands
113
148
 
114
149
  | Command | Description |
@@ -121,6 +156,7 @@ plob mandate adjust <id> --limit 200
121
156
  | `plob pay` | Quick payment (creates escrow) |
122
157
  | `plob reputation` | Check agent reputation |
123
158
  | `plob mandate` | Create, list, revoke spending mandates |
159
+ | `plob trust` | Manage and query trust network (V4.4) |
124
160
 
125
161
  All commands support `--json` for automation.
126
162
 
@@ -134,6 +170,7 @@ All commands support `--json` for automation.
134
170
  | Reputation | `0x02bb4132a86134684976E2a52E43D59D89E64b29` |
135
171
  | Credit | `0xD9241Ce8a721Ef5fcCAc5A11983addC526eC80E1` |
136
172
  | Escrow V3 | `0x49EdEe04c78B7FeD5248A20706c7a6c540748806` |
173
+ | TrustGraph | `TBD - Pending deployment` |
137
174
  | USDC | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` |
138
175
 
139
176
  ### Base Sepolia
@@ -144,6 +181,7 @@ All commands support `--json` for automation.
144
181
  | Reputation | `0xb0033901e3b94f4F36dA0b3e59A1F4AD9f4f1697` |
145
182
  | Credit | `0xBA64e2b2F2a80D03A4B13b3396942C1e78205C7d` |
146
183
  | Escrow V3 | `0x78D1f50a1965dE34f6b5a3D3546C94FE1809Cd82` |
184
+ | TrustGraph | `TBD - Pending deployment` |
147
185
  | USDC | `0x036CbD53842c5426634e7929541eC2318f3dCF7e` |
148
186
 
149
187
  ## Networks
@@ -173,10 +211,14 @@ Stored in `~/.plob/config.json`:
173
211
  ## Resources
174
212
 
175
213
  - **Website**: [paylobster.com](https://paylobster.com)
176
- - **Docs**: [paylobster.com/docs](https://paylobster.com/docs)
177
- - **Discord**: [discord.gg/ntWQB6g2jt](https://discord.gg/ntWQB6g2jt)
214
+ - **Documentation**:
215
+ - [Architecture](../docs/ARCHITECTURE.md)
216
+ - [Quickstart](../docs/QUICKSTART.md)
217
+ - [Ecosystem Map](../docs/ECOSYSTEM_MAP.md)
178
218
  - **SDK**: [npmjs.com/package/pay-lobster](https://www.npmjs.com/package/pay-lobster)
179
219
  - **MCP Server**: [npmjs.com/package/@paylobster/mcp-server](https://www.npmjs.com/package/@paylobster/mcp-server)
220
+ - **AgentKit Provider**: [npmjs.com/package/@paylobster/agentkit-provider](https://www.npmjs.com/package/@paylobster/agentkit-provider)
221
+ - **Agent Toolkit**: [npmjs.com/package/@paylobster/agent-toolkit](https://www.npmjs.com/package/@paylobster/agent-toolkit)
180
222
 
181
223
  ## License
182
224
 
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createDashboardCommand(): Command;
3
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,wBAAgB,sBAAsB,IAAI,OAAO,CA+BhD"}
@@ -0,0 +1,67 @@
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.createDashboardCommand = createDashboardCommand;
7
+ const commander_1 = require("commander");
8
+ const display_1 = require("../lib/display");
9
+ const child_process_1 = require("child_process");
10
+ const util_1 = require("util");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
13
+ const BASE_URL = 'https://paylobster.com';
14
+ async function openURL(url) {
15
+ const platform = process.platform;
16
+ let command;
17
+ switch (platform) {
18
+ case 'darwin':
19
+ command = `open "${url}"`;
20
+ break;
21
+ case 'win32':
22
+ command = `start "" "${url}"`;
23
+ break;
24
+ default: // linux, freebsd, etc.
25
+ command = `xdg-open "${url}"`;
26
+ break;
27
+ }
28
+ try {
29
+ await execAsync(command);
30
+ (0, display_1.success)(`Opened ${url} in your default browser`);
31
+ }
32
+ catch (err) {
33
+ (0, display_1.error)(`Failed to open browser: ${err.message}`);
34
+ console.log(chalk_1.default.yellow('Please open this URL manually:'), chalk_1.default.cyan(url));
35
+ process.exit(1);
36
+ }
37
+ }
38
+ function createDashboardCommand() {
39
+ const cmd = new commander_1.Command('dashboard')
40
+ .description('🌐 Open PayLobster web dashboard')
41
+ .argument('[page]', 'Dashboard page (treasury, investments, swap)', '')
42
+ .action(async (page) => {
43
+ let url = `${BASE_URL}/dashboard`;
44
+ switch (page.toLowerCase()) {
45
+ case 'treasury':
46
+ url += '/treasury';
47
+ break;
48
+ case 'investments':
49
+ url += '/investments';
50
+ break;
51
+ case 'swap':
52
+ url += '/swap';
53
+ break;
54
+ case '':
55
+ // Default dashboard
56
+ break;
57
+ default:
58
+ console.log(chalk_1.default.yellow(`Unknown page: ${page}`));
59
+ console.log(chalk_1.default.gray('Available pages: treasury, investments, swap'));
60
+ console.log(chalk_1.default.gray('Opening default dashboard...\n'));
61
+ break;
62
+ }
63
+ await openURL(url);
64
+ });
65
+ return cmd;
66
+ }
67
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/commands/dashboard.ts"],"names":[],"mappings":";;;;;AAqCA,wDA+BC;AApED,yCAAoC;AACpC,4CAAgD;AAChD,iDAAqC;AACrC,+BAAiC;AACjC,kDAA0B;AAE1B,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAE1C,KAAK,UAAU,OAAO,CAAC,GAAW;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,IAAI,OAAe,CAAC;IAEpB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,GAAG,SAAS,GAAG,GAAG,CAAC;YAC1B,MAAM;QACR,KAAK,OAAO;YACV,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;YAC9B,MAAM;QACR,SAAS,uBAAuB;YAC9B,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;YAC9B,MAAM;IACV,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACzB,IAAA,iBAAO,EAAC,UAAU,GAAG,0BAA0B,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAA,eAAK,EAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,EAAE,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB;IACpC,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,WAAW,CAAC;SACjC,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,QAAQ,EAAE,8CAA8C,EAAE,EAAE,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,IAAI,GAAG,GAAG,GAAG,QAAQ,YAAY,CAAC;QAElC,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3B,KAAK,UAAU;gBACb,GAAG,IAAI,WAAW,CAAC;gBACnB,MAAM;YACR,KAAK,aAAa;gBAChB,GAAG,IAAI,cAAc,CAAC;gBACtB,MAAM;YACR,KAAK,MAAM;gBACT,GAAG,IAAI,OAAO,CAAC;gBACf,MAAM;YACR,KAAK,EAAE;gBACL,oBAAoB;gBACpB,MAAM;YACR;gBACE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;gBAC1D,MAAM;QACV,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createExportCommand(): Command;
3
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,mBAAmB,IAAI,OAAO,CAwF7C"}
@@ -0,0 +1,97 @@
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.createExportCommand = createExportCommand;
7
+ const commander_1 = require("commander");
8
+ const contracts_1 = require("../lib/contracts");
9
+ const wallet_1 = require("../lib/wallet");
10
+ const config_1 = require("../lib/config");
11
+ const display_1 = require("../lib/display");
12
+ const chalk_1 = __importDefault(require("chalk"));
13
+ const ora_1 = __importDefault(require("ora"));
14
+ const fs_1 = require("fs");
15
+ const path_1 = require("path");
16
+ function createExportCommand() {
17
+ const cmd = new commander_1.Command('export')
18
+ .description('📦 Export all your PayLobster data')
19
+ .option('-o, --output <file>', 'Output file path (default: stdout)')
20
+ .action(async (options) => {
21
+ const spinner = (0, ora_1.default)('Collecting your data...').start();
22
+ try {
23
+ const address = (0, wallet_1.getWalletAddress)();
24
+ const config = (0, config_1.loadConfig)();
25
+ // Fetch all data
26
+ spinner.text = 'Fetching identity, reputation, credit...';
27
+ const [agentInfo, reputation, creditStatus, balance, escrowCount] = await Promise.all([
28
+ (0, contracts_1.getAgentInfo)(address),
29
+ (0, contracts_1.getReputation)(address),
30
+ (0, contracts_1.getCreditStatus)(address),
31
+ (0, contracts_1.getBalance)(address),
32
+ (0, contracts_1.getUserEscrowCount)(address),
33
+ ]);
34
+ spinner.text = 'Formatting data...';
35
+ // Build export object
36
+ const exportData = {
37
+ exportedAt: new Date().toISOString(),
38
+ network: config.network,
39
+ identity: {
40
+ name: agentInfo.name,
41
+ address,
42
+ tokenId: agentInfo.tokenId.toString(),
43
+ registered: agentInfo.registered,
44
+ },
45
+ reputation: {
46
+ score: Number(reputation.score),
47
+ trustVector: reputation.trustVector.toString(),
48
+ },
49
+ credit: {
50
+ limit: (0, contracts_1.formatUSDC)(creditStatus.limit),
51
+ available: (0, contracts_1.formatUSDC)(creditStatus.available),
52
+ inUse: (0, contracts_1.formatUSDC)(creditStatus.inUse),
53
+ },
54
+ balances: {
55
+ usdc: (0, contracts_1.formatUSDC)(balance.usdc),
56
+ eth: (0, contracts_1.formatETH)(balance.eth),
57
+ },
58
+ activity: {
59
+ escrowCount,
60
+ },
61
+ treasury: {
62
+ summary: 'Not yet implemented',
63
+ },
64
+ investments: {
65
+ portfolio: 'Not yet implemented',
66
+ },
67
+ };
68
+ const jsonOutput = JSON.stringify(exportData, null, 2);
69
+ spinner.stop();
70
+ // Output to file or stdout
71
+ if (options.output) {
72
+ const outputPath = (0, path_1.resolve)(options.output);
73
+ (0, fs_1.writeFileSync)(outputPath, jsonOutput, 'utf-8');
74
+ (0, display_1.success)(`Data exported to ${outputPath}`);
75
+ // Show summary
76
+ console.log();
77
+ console.log(chalk_1.default.gray('Summary:'));
78
+ console.log(chalk_1.default.gray(' Agent: '), chalk_1.default.white(agentInfo.name || 'Not registered'));
79
+ console.log(chalk_1.default.gray(' Reputation: '), chalk_1.default.white(reputation.score.toString()));
80
+ console.log(chalk_1.default.gray(' USDC: '), chalk_1.default.white((0, contracts_1.formatUSDC)(balance.usdc)));
81
+ console.log(chalk_1.default.gray(' Escrows: '), chalk_1.default.white(escrowCount.toString()));
82
+ console.log();
83
+ }
84
+ else {
85
+ // Output to stdout
86
+ console.log(jsonOutput);
87
+ }
88
+ }
89
+ catch (err) {
90
+ spinner.stop();
91
+ (0, display_1.error)(`Export failed: ${err.message}`);
92
+ process.exit(1);
93
+ }
94
+ });
95
+ return cmd;
96
+ }
97
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createHealthCommand(): Command;
3
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/commands/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqFpC,wBAAgB,mBAAmB,IAAI,OAAO,CA8H7C"}
@@ -0,0 +1,165 @@
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.createHealthCommand = createHealthCommand;
7
+ const commander_1 = require("commander");
8
+ const contracts_1 = require("../lib/contracts");
9
+ const config_1 = require("../lib/config");
10
+ const display_1 = require("../lib/display");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const ora_1 = __importDefault(require("ora"));
13
+ const CONTRACT_NAMES = {
14
+ IDENTITY: 'Identity Registry',
15
+ REPUTATION: 'Reputation System',
16
+ CREDIT: 'Credit Manager',
17
+ ESCROW: 'Escrow V3',
18
+ USDC: 'USDC Token',
19
+ };
20
+ // Additional contract addresses from the requirements
21
+ const ADDITIONAL_CONTRACTS_MAINNET = {
22
+ POLICY_REGISTRY: '0x20a30064629e797a88fCdBa2A4C310971bF8A0F2',
23
+ CROSS_RAIL_LEDGER: '0x74AcB48650f12368960325d3c7304965fd62db18',
24
+ SPENDING_MANDATE: '0x8609eBA4F8B6081AcC8ce8B0C126C515f6140849',
25
+ TREASURY_FACTORY: '0x171a685f28546a0ebb13059184db1f808b915066',
26
+ INVESTMENT_TERMSHEET: '0xfa4d9933422401e8b0846f14889b383e068860eb',
27
+ };
28
+ const ADDITIONAL_CONTRACT_NAMES = {
29
+ POLICY_REGISTRY: 'Policy Registry',
30
+ CROSS_RAIL_LEDGER: 'CrossRail Ledger',
31
+ SPENDING_MANDATE: 'Spending Mandate',
32
+ TREASURY_FACTORY: 'Treasury Factory',
33
+ INVESTMENT_TERMSHEET: 'Investment TermSheet',
34
+ };
35
+ async function checkContract(client, name, address) {
36
+ try {
37
+ // Simple check: get code at address
38
+ const code = await client.getBytecode({ address });
39
+ if (!code || code === '0x') {
40
+ return {
41
+ name,
42
+ address,
43
+ status: 'error',
44
+ error: 'No contract code found',
45
+ };
46
+ }
47
+ // Get current block number
48
+ const blockNumber = await client.getBlockNumber();
49
+ return {
50
+ name,
51
+ address,
52
+ status: 'ok',
53
+ blockNumber,
54
+ };
55
+ }
56
+ catch (err) {
57
+ return {
58
+ name,
59
+ address,
60
+ status: 'error',
61
+ error: err.message,
62
+ };
63
+ }
64
+ }
65
+ function createHealthCommand() {
66
+ const cmd = new commander_1.Command('health')
67
+ .description('🏥 Check PayLobster contract health')
68
+ .option('--json', 'Output as JSON')
69
+ .action(async (options) => {
70
+ const spinner = (0, ora_1.default)('Checking contract health...').start();
71
+ try {
72
+ const config = (0, config_1.loadConfig)();
73
+ const client = (0, contracts_1.getPublicClient)(config.network);
74
+ const contracts = (0, contracts_1.getContracts)(config.network);
75
+ // Get chain info
76
+ const [blockNumber, gasPrice] = await Promise.all([
77
+ client.getBlockNumber(),
78
+ client.getGasPrice(),
79
+ ]);
80
+ const chainInfo = {
81
+ network: config.network === 'mainnet' ? 'Base Mainnet' : 'Base Sepolia',
82
+ blockNumber,
83
+ gasPrice,
84
+ };
85
+ // Build contract list to check
86
+ const contractsToCheck = [
87
+ { name: CONTRACT_NAMES.IDENTITY, address: contracts.IDENTITY },
88
+ { name: CONTRACT_NAMES.REPUTATION, address: contracts.REPUTATION },
89
+ { name: CONTRACT_NAMES.CREDIT, address: contracts.CREDIT },
90
+ { name: CONTRACT_NAMES.ESCROW, address: contracts.ESCROW },
91
+ { name: CONTRACT_NAMES.USDC, address: contracts.USDC },
92
+ ];
93
+ // Add additional contracts for mainnet
94
+ if (config.network === 'mainnet') {
95
+ contractsToCheck.push({ name: ADDITIONAL_CONTRACT_NAMES.POLICY_REGISTRY, address: ADDITIONAL_CONTRACTS_MAINNET.POLICY_REGISTRY }, { name: ADDITIONAL_CONTRACT_NAMES.CROSS_RAIL_LEDGER, address: ADDITIONAL_CONTRACTS_MAINNET.CROSS_RAIL_LEDGER }, { name: ADDITIONAL_CONTRACT_NAMES.SPENDING_MANDATE, address: ADDITIONAL_CONTRACTS_MAINNET.SPENDING_MANDATE }, { name: ADDITIONAL_CONTRACT_NAMES.TREASURY_FACTORY, address: ADDITIONAL_CONTRACTS_MAINNET.TREASURY_FACTORY }, { name: ADDITIONAL_CONTRACT_NAMES.INVESTMENT_TERMSHEET, address: ADDITIONAL_CONTRACTS_MAINNET.INVESTMENT_TERMSHEET });
96
+ }
97
+ // Check all contracts in parallel
98
+ const healthChecks = await Promise.all(contractsToCheck.map(({ name, address }) => checkContract(client, name, address)));
99
+ spinner.stop();
100
+ // Count successes and failures
101
+ const successCount = healthChecks.filter((c) => c.status === 'ok').length;
102
+ const failureCount = healthChecks.filter((c) => c.status === 'error').length;
103
+ // JSON output
104
+ if ((0, display_1.outputJSON)({
105
+ chain: chainInfo,
106
+ contracts: healthChecks,
107
+ summary: {
108
+ total: healthChecks.length,
109
+ healthy: successCount,
110
+ unhealthy: failureCount,
111
+ },
112
+ }, options)) {
113
+ return;
114
+ }
115
+ // Pretty output
116
+ console.log('\n' + chalk_1.default.cyan.bold('═══════════════════════════════════════════════════════════'));
117
+ console.log(chalk_1.default.cyan.bold(' 🏥 PayLobster Health Check'));
118
+ console.log(chalk_1.default.cyan.bold('═══════════════════════════════════════════════════════════\n'));
119
+ // Chain info
120
+ console.log(chalk_1.default.bold.underline('⛓️ CHAIN INFO'));
121
+ console.log();
122
+ console.log(chalk_1.default.gray(' Network: '), chalk_1.default.white(chainInfo.network));
123
+ console.log(chalk_1.default.gray(' Block Number: '), chalk_1.default.white(chainInfo.blockNumber.toString()));
124
+ console.log(chalk_1.default.gray(' Gas Price: '), chalk_1.default.white((Number(chainInfo.gasPrice) / 1e9).toFixed(2)), chalk_1.default.dim('Gwei'));
125
+ console.log();
126
+ // Contract status
127
+ console.log(chalk_1.default.bold.underline('📜 CONTRACT STATUS'));
128
+ console.log();
129
+ for (const contract of healthChecks) {
130
+ const statusIcon = contract.status === 'ok' ? chalk_1.default.green('✅') : chalk_1.default.red('❌');
131
+ const statusText = contract.status === 'ok' ? chalk_1.default.green('responding') : chalk_1.default.red('error');
132
+ console.log(` ${statusIcon} ${chalk_1.default.bold(contract.name)}`);
133
+ console.log(chalk_1.default.gray(' Address: '), chalk_1.default.dim(contract.address));
134
+ console.log(chalk_1.default.gray(' Status: '), statusText);
135
+ if (contract.status === 'ok' && contract.blockNumber) {
136
+ console.log(chalk_1.default.gray(' Block: '), chalk_1.default.white(contract.blockNumber.toString()));
137
+ }
138
+ else if (contract.error) {
139
+ console.log(chalk_1.default.gray(' Error: '), chalk_1.default.red(contract.error));
140
+ }
141
+ console.log();
142
+ }
143
+ // Summary
144
+ console.log(chalk_1.default.cyan.bold('═══════════════════════════════════════════════════════════\n'));
145
+ if (failureCount === 0) {
146
+ console.log(chalk_1.default.green.bold(' ✅ All contracts healthy!'));
147
+ }
148
+ else {
149
+ console.log(chalk_1.default.yellow.bold(` ⚠️ ${successCount}/${healthChecks.length} contracts healthy`));
150
+ console.log(chalk_1.default.red.bold(` ❌ ${failureCount} contract(s) unhealthy`));
151
+ }
152
+ console.log();
153
+ if (failureCount > 0) {
154
+ process.exit(1);
155
+ }
156
+ }
157
+ catch (err) {
158
+ spinner.stop();
159
+ (0, display_1.error)(`Health check failed: ${err.message}`);
160
+ process.exit(1);
161
+ }
162
+ });
163
+ return cmd;
164
+ }
165
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/commands/health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerInvestCommand(program: Command): void;
3
+ //# sourceMappingURL=invest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invest.d.ts","sourceRoot":"","sources":["../../../src/commands/invest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkNpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAulBrD"}