@pocketagent/paw 1.0.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 (88) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +307 -0
  3. package/dist/cli/commands/address.d.ts +3 -0
  4. package/dist/cli/commands/address.d.ts.map +1 -0
  5. package/dist/cli/commands/address.js +32 -0
  6. package/dist/cli/commands/address.js.map +1 -0
  7. package/dist/cli/commands/balance.d.ts +3 -0
  8. package/dist/cli/commands/balance.d.ts.map +1 -0
  9. package/dist/cli/commands/balance.js +76 -0
  10. package/dist/cli/commands/balance.js.map +1 -0
  11. package/dist/cli/commands/config.d.ts +3 -0
  12. package/dist/cli/commands/config.d.ts.map +1 -0
  13. package/dist/cli/commands/config.js +90 -0
  14. package/dist/cli/commands/config.js.map +1 -0
  15. package/dist/cli/commands/dashboard.d.ts +3 -0
  16. package/dist/cli/commands/dashboard.d.ts.map +1 -0
  17. package/dist/cli/commands/dashboard.js +224 -0
  18. package/dist/cli/commands/dashboard.js.map +1 -0
  19. package/dist/cli/commands/history.d.ts +3 -0
  20. package/dist/cli/commands/history.d.ts.map +1 -0
  21. package/dist/cli/commands/history.js +103 -0
  22. package/dist/cli/commands/history.js.map +1 -0
  23. package/dist/cli/commands/init.d.ts +3 -0
  24. package/dist/cli/commands/init.d.ts.map +1 -0
  25. package/dist/cli/commands/init.js +62 -0
  26. package/dist/cli/commands/init.js.map +1 -0
  27. package/dist/cli/commands/send.d.ts +3 -0
  28. package/dist/cli/commands/send.d.ts.map +1 -0
  29. package/dist/cli/commands/send.js +65 -0
  30. package/dist/cli/commands/send.js.map +1 -0
  31. package/dist/cli/commands/swap.d.ts +3 -0
  32. package/dist/cli/commands/swap.d.ts.map +1 -0
  33. package/dist/cli/commands/swap.js +123 -0
  34. package/dist/cli/commands/swap.js.map +1 -0
  35. package/dist/cli/commands/tokens.d.ts +3 -0
  36. package/dist/cli/commands/tokens.d.ts.map +1 -0
  37. package/dist/cli/commands/tokens.js +97 -0
  38. package/dist/cli/commands/tokens.js.map +1 -0
  39. package/dist/cli/index.d.ts +3 -0
  40. package/dist/cli/index.d.ts.map +1 -0
  41. package/dist/cli/index.js +31 -0
  42. package/dist/cli/index.js.map +1 -0
  43. package/dist/core/crypto/machine-identity.d.ts +26 -0
  44. package/dist/core/crypto/machine-identity.d.ts.map +1 -0
  45. package/dist/core/crypto/machine-identity.js +87 -0
  46. package/dist/core/crypto/machine-identity.js.map +1 -0
  47. package/dist/core/signer/engine.d.ts +17 -0
  48. package/dist/core/signer/engine.d.ts.map +1 -0
  49. package/dist/core/signer/engine.js +81 -0
  50. package/dist/core/signer/engine.js.map +1 -0
  51. package/dist/core/storage/encryption.d.ts +23 -0
  52. package/dist/core/storage/encryption.d.ts.map +1 -0
  53. package/dist/core/storage/encryption.js +79 -0
  54. package/dist/core/storage/encryption.js.map +1 -0
  55. package/dist/core/storage/filesystem.d.ts +68 -0
  56. package/dist/core/storage/filesystem.d.ts.map +1 -0
  57. package/dist/core/storage/filesystem.js +189 -0
  58. package/dist/core/storage/filesystem.js.map +1 -0
  59. package/dist/core/wallet/manager.d.ts +30 -0
  60. package/dist/core/wallet/manager.d.ts.map +1 -0
  61. package/dist/core/wallet/manager.js +98 -0
  62. package/dist/core/wallet/manager.js.map +1 -0
  63. package/dist/index.d.ts +10 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +19 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/integrations/jupiter/client.d.ts +62 -0
  68. package/dist/integrations/jupiter/client.d.ts.map +1 -0
  69. package/dist/integrations/jupiter/client.js +143 -0
  70. package/dist/integrations/jupiter/client.js.map +1 -0
  71. package/dist/types/transaction.d.ts +23 -0
  72. package/dist/types/transaction.d.ts.map +1 -0
  73. package/dist/types/transaction.js +3 -0
  74. package/dist/types/transaction.js.map +1 -0
  75. package/dist/types/wallet.d.ts +31 -0
  76. package/dist/types/wallet.d.ts.map +1 -0
  77. package/dist/types/wallet.js +3 -0
  78. package/dist/types/wallet.js.map +1 -0
  79. package/dist/utils/price.d.ts +12 -0
  80. package/dist/utils/price.d.ts.map +1 -0
  81. package/dist/utils/price.js +45 -0
  82. package/dist/utils/price.js.map +1 -0
  83. package/dist/utils/solana.d.ts +22 -0
  84. package/dist/utils/solana.d.ts.map +1 -0
  85. package/dist/utils/solana.js +85 -0
  86. package/dist/utils/solana.js.map +1 -0
  87. package/package.json +80 -0
  88. package/skills/SKILLS.md +393 -0
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.dashboardCommand = void 0;
37
+ const commander_1 = require("commander");
38
+ const manager_1 = require("../../core/wallet/manager");
39
+ const solana_1 = require("../../utils/solana");
40
+ const filesystem_1 = require("../../core/storage/filesystem");
41
+ const price_1 = require("../../utils/price");
42
+ const blessed = require('blessed');
43
+ exports.dashboardCommand = new commander_1.Command('dashboard')
44
+ .description('šŸ“Ÿ Interactive pager-style dashboard')
45
+ .argument('[agent-id]', 'Agent identifier')
46
+ .option('--agent-id <id>', 'Agent identifier (alternative)')
47
+ .action(async (agentIdArg, options) => {
48
+ try {
49
+ // Support both positional and flag syntax
50
+ const agentId = agentIdArg || options.agentId;
51
+ if (!agentId) {
52
+ console.error('\nāŒ Error: Agent ID is required');
53
+ console.log('\nUsage: paw dashboard <agent-id>');
54
+ console.log(' or: paw dashboard --agent-id <agent-id>');
55
+ console.log('');
56
+ process.exit(1);
57
+ }
58
+ // Load wallet info
59
+ const walletInfo = await manager_1.WalletManager.getWalletInfo(agentId);
60
+ const config = await filesystem_1.FileSystemStorage.loadConfig(agentId);
61
+ const network = config.network || 'mainnet-beta';
62
+ // Create screen with pager aesthetic
63
+ const screen = blessed.screen({
64
+ smartCSR: true,
65
+ title: 'šŸ“Ÿ PAW',
66
+ fullUnicode: true,
67
+ });
68
+ // Main pager display - monochrome, simple
69
+ const pagerBox = blessed.box({
70
+ top: 'center',
71
+ left: 'center',
72
+ width: '80%',
73
+ height: '80%',
74
+ border: {
75
+ type: 'line',
76
+ fg: 'green',
77
+ },
78
+ style: {
79
+ fg: 'green',
80
+ bg: 'black',
81
+ border: {
82
+ fg: 'green',
83
+ },
84
+ },
85
+ tags: true,
86
+ scrollable: true,
87
+ alwaysScroll: true,
88
+ scrollbar: {
89
+ ch: 'ā–ˆ',
90
+ style: {
91
+ fg: 'green',
92
+ },
93
+ },
94
+ keys: true,
95
+ vi: true,
96
+ });
97
+ // Status bar at bottom
98
+ const statusBar = blessed.box({
99
+ bottom: 0,
100
+ left: 0,
101
+ width: '100%',
102
+ height: 1,
103
+ style: {
104
+ fg: 'black',
105
+ bg: 'green',
106
+ },
107
+ content: ' šŸ“Ÿ PAW | [R]efresh [Q]uit | Use ↑↓ to scroll',
108
+ });
109
+ screen.append(pagerBox);
110
+ screen.append(statusBar);
111
+ // Function to render pager content
112
+ const renderPager = async () => {
113
+ try {
114
+ const connection = solana_1.SolanaClient.getConnection(network);
115
+ // Get SOL balance
116
+ const balance = await connection.getBalance(walletInfo.publicKey);
117
+ const solBalance = balance / 1e9;
118
+ // Get SPL token accounts
119
+ const { PublicKey: SolanaPublicKey } = await Promise.resolve().then(() => __importStar(require('@solana/web3.js')));
120
+ const tokenAccounts = await connection.getParsedTokenAccountsByOwner(walletInfo.publicKey, { programId: new SolanaPublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA') });
121
+ // Calculate total value in USD using real SOL price
122
+ const SOL_PRICE = await price_1.PriceService.getSolPrice();
123
+ let totalUSD = solBalance * SOL_PRICE;
124
+ // Add SPL token values
125
+ for (const accountInfo of tokenAccounts.value) {
126
+ const parsedInfo = accountInfo.account.data.parsed.info;
127
+ const mint = parsedInfo.mint;
128
+ const tokenBalance = parsedInfo.tokenAmount.uiAmount || 0;
129
+ // Known stablecoins = $1 each
130
+ const stablecoins = [
131
+ 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
132
+ 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', // USDT
133
+ ];
134
+ if (stablecoins.includes(mint)) {
135
+ totalUSD += tokenBalance;
136
+ }
137
+ }
138
+ const totalSOL = totalUSD / SOL_PRICE;
139
+ // Get transaction history
140
+ const signatures = await connection.getSignaturesForAddress(walletInfo.publicKey, { limit: 8 });
141
+ // Build pager content (like old pager messages)
142
+ let content = '';
143
+ // Header
144
+ content += '{bold}╔═══════════════════════════════════════════════════════════╗{/bold}\n';
145
+ content += '{bold}ā•‘ šŸ“Ÿ POCKETAGENT WALLET ā•‘{/bold}\n';
146
+ content += '{bold}ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•{/bold}\n';
147
+ content += '\n';
148
+ // Agent info
149
+ content += `{green-fg}AGENT:{/green-fg} ${agentId}\n`;
150
+ content += `{green-fg}ADDR:{/green-fg} ${walletInfo.address.slice(0, 20)}...\n`;
151
+ content += `{green-fg}NET:{/green-fg} ${network.toUpperCase()}\n`;
152
+ content += '\n';
153
+ content += '───────────────────────────────────────────────────────────\n';
154
+ content += '\n';
155
+ // Total Portfolio Value
156
+ content += `{bold}šŸ’° TOTAL PORTFOLIO:{/bold}\n`;
157
+ content += ` ~${totalSOL.toFixed(6)} SOL\n`;
158
+ content += ` ~$${totalUSD.toFixed(2)} USD\n`;
159
+ content += ` {gray-fg}(Live price: $${SOL_PRICE.toFixed(2)}/SOL){/gray-fg}\n`;
160
+ content += '\n';
161
+ content += '───────────────────────────────────────────────────────────\n';
162
+ content += '\n';
163
+ // Recent messages (transactions)
164
+ content += `{bold}šŸ“¬ RECENT MESSAGES (${signatures.length}):{/bold}\n`;
165
+ content += '\n';
166
+ if (signatures.length === 0) {
167
+ content += ' No messages.\n';
168
+ }
169
+ else {
170
+ for (let i = 0; i < signatures.length; i++) {
171
+ const sig = signatures[i];
172
+ const status = sig.err ? 'āœ—' : 'āœ“';
173
+ const date = sig.blockTime
174
+ ? new Date(sig.blockTime * 1000)
175
+ : new Date();
176
+ const timeStr = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
177
+ const dateStr = `${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getDate().toString().padStart(2, '0')}`;
178
+ content += ` ${i + 1}. [${status}] ${dateStr} ${timeStr}\n`;
179
+ content += ` ${sig.signature.slice(0, 16)}...\n`;
180
+ if (i < signatures.length - 1)
181
+ content += '\n';
182
+ }
183
+ }
184
+ content += '\n';
185
+ content += '───────────────────────────────────────────────────────────\n';
186
+ content += '\n';
187
+ content += `{gray-fg}Last updated: ${new Date().toLocaleTimeString()}{/gray-fg}\n`;
188
+ pagerBox.setContent(content);
189
+ screen.render();
190
+ }
191
+ catch (error) {
192
+ pagerBox.setContent('{red-fg}ERROR: Unable to fetch wallet data{/red-fg}\n\n' +
193
+ 'Press R to retry or Q to quit.');
194
+ screen.render();
195
+ }
196
+ };
197
+ // Initial render
198
+ await renderPager();
199
+ // Keyboard shortcuts
200
+ screen.key(['escape', 'q', 'Q', 'C-c'], () => {
201
+ return process.exit(0);
202
+ });
203
+ screen.key(['r', 'R'], async () => {
204
+ statusBar.setContent(' šŸ“Ÿ PAW | Refreshing... | Please wait');
205
+ screen.render();
206
+ await renderPager();
207
+ statusBar.setContent(' šŸ“Ÿ PAW | [R]efresh [Q]uit | Use ↑↓ to scroll');
208
+ screen.render();
209
+ });
210
+ // Focus on pager box for scrolling
211
+ pagerBox.focus();
212
+ // Auto-refresh every 30 seconds
213
+ setInterval(async () => {
214
+ await renderPager();
215
+ }, 30000);
216
+ // Render screen
217
+ screen.render();
218
+ }
219
+ catch (error) {
220
+ console.error('\nāŒ Error:', error.message);
221
+ process.exit(1);
222
+ }
223
+ });
224
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const historyCommand: Command;
3
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,cAAc,SAyGvB,CAAC"}
@@ -0,0 +1,103 @@
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.historyCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const manager_1 = require("../../core/wallet/manager");
9
+ const solana_1 = require("../../utils/solana");
10
+ const filesystem_1 = require("../../core/storage/filesystem");
11
+ const web3_js_1 = require("@solana/web3.js");
12
+ const cli_table3_1 = __importDefault(require("cli-table3"));
13
+ exports.historyCommand = new commander_1.Command('history')
14
+ .description('šŸ“Ÿ Show transaction history')
15
+ .argument('[agent-id]', 'Agent identifier')
16
+ .option('--agent-id <id>', 'Agent identifier (alternative)')
17
+ .option('--network <network>', 'Network to use (overrides config)')
18
+ .option('--limit <limit>', 'Number of transactions to show', '10')
19
+ .action(async (agentIdArg, options) => {
20
+ try {
21
+ // Support both positional and flag syntax
22
+ const agentId = agentIdArg || options.agentId;
23
+ if (!agentId) {
24
+ console.error('\nāŒ Error: Agent ID is required');
25
+ console.log('\nUsage: paw history <agent-id>');
26
+ console.log(' or: paw history --agent-id <agent-id>');
27
+ console.log('');
28
+ process.exit(1);
29
+ }
30
+ // Use network from options or fall back to config
31
+ let network = options.network;
32
+ if (!network) {
33
+ const config = await filesystem_1.FileSystemStorage.loadConfig(agentId);
34
+ network = config.network || 'mainnet-beta';
35
+ }
36
+ console.log('\nšŸ“Ÿ PAW - Transaction History');
37
+ console.log('Agent ID:', agentId);
38
+ console.log('Network: ', network);
39
+ console.log('');
40
+ const walletInfo = await manager_1.WalletManager.getWalletInfo(agentId);
41
+ const connection = solana_1.SolanaClient.getConnection(network);
42
+ const publicKey = new web3_js_1.PublicKey(walletInfo.address);
43
+ // Get transaction signatures
44
+ const signatures = await connection.getSignaturesForAddress(publicKey, {
45
+ limit: parseInt(options.limit),
46
+ });
47
+ if (signatures.length === 0) {
48
+ console.log('No transactions found.');
49
+ console.log('');
50
+ return;
51
+ }
52
+ // Create table
53
+ const table = new cli_table3_1.default({
54
+ head: ['Date & Time', 'Type', 'Amount (SOL)', 'Status', 'Signature'],
55
+ colWidths: [22, 10, 15, 10, 25],
56
+ style: {
57
+ head: ['cyan'],
58
+ border: ['gray'],
59
+ },
60
+ });
61
+ // Fetch and display transactions
62
+ for (const sig of signatures) {
63
+ const status = sig.err ? 'āŒ Failed' : 'āœ… Success';
64
+ const date = sig.blockTime
65
+ ? new Date(sig.blockTime * 1000).toLocaleString()
66
+ : 'Unknown';
67
+ // Fetch full transaction details
68
+ const tx = await connection.getParsedTransaction(sig.signature, {
69
+ maxSupportedTransactionVersion: 0,
70
+ });
71
+ let type = 'šŸ”„';
72
+ let amount = '0.000000';
73
+ if (tx && tx.meta) {
74
+ // Find our account index in the transaction
75
+ const accountIndex = tx.transaction.message.accountKeys.findIndex((key) => key.pubkey.toString() === publicKey.toString());
76
+ if (accountIndex !== -1) {
77
+ const preBalance = tx.meta.preBalances[accountIndex] / web3_js_1.LAMPORTS_PER_SOL;
78
+ const postBalance = tx.meta.postBalances[accountIndex] / web3_js_1.LAMPORTS_PER_SOL;
79
+ const change = postBalance - preBalance;
80
+ if (change > 0) {
81
+ type = 'šŸ“„ In';
82
+ amount = `+${change.toFixed(6)}`;
83
+ }
84
+ else if (change < 0) {
85
+ type = 'šŸ“¤ Out';
86
+ amount = `${change.toFixed(6)}`;
87
+ }
88
+ }
89
+ }
90
+ const shortSig = `${sig.signature.slice(0, 10)}...${sig.signature.slice(-10)}`;
91
+ table.push([date, type, amount, status, shortSig]);
92
+ }
93
+ console.log(table.toString());
94
+ console.log('');
95
+ console.log(`View full details: https://explorer.solana.com/address/${walletInfo.address}?cluster=${network}`);
96
+ console.log('');
97
+ }
98
+ catch (error) {
99
+ console.error('\nāŒ Error:', error.message);
100
+ process.exit(1);
101
+ }
102
+ });
103
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/cli/commands/history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const initCommand: Command;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,WAAW,SAyDpB,CAAC"}
@@ -0,0 +1,62 @@
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.initCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const manager_1 = require("../../core/wallet/manager");
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ exports.initCommand = new commander_1.Command('init')
11
+ .description('šŸ“Ÿ Initialize a new agent wallet')
12
+ .argument('[agent-id]', 'Unique agent identifier')
13
+ .option('--agent-id <id>', 'Unique agent identifier (alternative)')
14
+ .option('--passphrase <passphrase>', 'Custom passphrase (auto-generated if not provided)')
15
+ .option('--network <network>', 'Network to use (devnet, mainnet-beta, testnet)', 'mainnet-beta')
16
+ .action(async (agentIdArg, options) => {
17
+ try {
18
+ // Support both positional and flag syntax
19
+ const agentId = agentIdArg || options.agentId;
20
+ if (!agentId) {
21
+ console.error(chalk_1.default.red('\nāŒ Error: Agent ID is required'));
22
+ console.log('\nUsage: paw init <agent-id>');
23
+ console.log(' or: paw init --agent-id <agent-id>');
24
+ console.log('');
25
+ process.exit(1);
26
+ }
27
+ console.log(chalk_1.default.cyan('\nšŸ“Ÿ PAW - PocketAgent Wallet'));
28
+ console.log(chalk_1.default.gray('Creating wallet for agent...'));
29
+ const walletInfo = await manager_1.WalletManager.createWallet({
30
+ agentId: agentId,
31
+ passphrase: options.passphrase,
32
+ network: options.network,
33
+ });
34
+ console.log(chalk_1.default.green('\nāœ… Wallet created successfully!'));
35
+ console.log(chalk_1.default.white('\nAgent ID:'), chalk_1.default.yellow(walletInfo.agentId));
36
+ console.log(chalk_1.default.white('Address: '), chalk_1.default.yellow(walletInfo.address));
37
+ console.log(chalk_1.default.white('Network: '), chalk_1.default.yellow(options.network));
38
+ console.log(chalk_1.default.white('Created: '), chalk_1.default.gray(walletInfo.createdAt.toISOString()));
39
+ console.log(chalk_1.default.cyan('\nšŸ“Ÿ Security:'));
40
+ console.log(chalk_1.default.gray(' • Wallet encrypted with AES-256-GCM'));
41
+ console.log(chalk_1.default.gray(' • Passphrase encrypted with machine-specific key'));
42
+ console.log(chalk_1.default.gray(' • Files stored in ~/.paw/agents/' + agentId));
43
+ console.log(chalk_1.default.cyan('\nšŸ’° Fund your wallet:'));
44
+ if (options.network === 'devnet') {
45
+ console.log(chalk_1.default.white(' solana airdrop 2 ' + walletInfo.address + ' --url devnet'));
46
+ console.log(chalk_1.default.gray(' or visit: https://faucet.solana.com'));
47
+ }
48
+ else {
49
+ console.log(chalk_1.default.white(' Send SOL to: ' + walletInfo.address));
50
+ console.log(chalk_1.default.gray(' From any exchange or wallet'));
51
+ }
52
+ console.log(chalk_1.default.cyan('\nšŸ“Ÿ Next steps:'));
53
+ console.log(chalk_1.default.white(' paw address ' + agentId));
54
+ console.log(chalk_1.default.white(' paw balance ' + agentId));
55
+ console.log('');
56
+ }
57
+ catch (error) {
58
+ console.error(chalk_1.default.red('\nāŒ Error:'), error.message);
59
+ process.exit(1);
60
+ }
61
+ });
62
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const sendCommand: Command;
3
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,WAAW,SAkEpB,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const manager_1 = require("../../core/wallet/manager");
6
+ const engine_1 = require("../../core/signer/engine");
7
+ const solana_1 = require("../../utils/solana");
8
+ const filesystem_1 = require("../../core/storage/filesystem");
9
+ const web3_js_1 = require("@solana/web3.js");
10
+ exports.sendCommand = new commander_1.Command('send')
11
+ .description('šŸ“Ÿ Send SOL to another address')
12
+ .argument('[agent-id]', 'Agent identifier')
13
+ .option('--agent-id <id>', 'Agent identifier (alternative)')
14
+ .requiredOption('--to <address>', 'Recipient address')
15
+ .requiredOption('--amount <amount>', 'Amount in SOL')
16
+ .option('--network <network>', 'Network to use (overrides config)')
17
+ .action(async (agentIdArg, options) => {
18
+ try {
19
+ // Support both positional and flag syntax
20
+ const agentId = agentIdArg || options.agentId;
21
+ if (!agentId) {
22
+ console.error('\nāŒ Error: Agent ID is required');
23
+ console.log('\nUsage: paw send <agent-id> --to <address> --amount <amount>');
24
+ console.log(' or: paw send --agent-id <agent-id> --to <address> --amount <amount>');
25
+ console.log('');
26
+ process.exit(1);
27
+ }
28
+ // Use network from options or fall back to config
29
+ let network = options.network;
30
+ if (!network) {
31
+ const config = await filesystem_1.FileSystemStorage.loadConfig(agentId);
32
+ network = config.network || 'mainnet-beta';
33
+ }
34
+ console.log('\nšŸ“Ÿ PAW - Send Transaction');
35
+ console.log('Agent ID:', agentId);
36
+ console.log('To: ', options.to);
37
+ console.log('Amount: ', options.amount, 'SOL');
38
+ console.log('Network: ', network);
39
+ // Load keypair
40
+ const keypair = await manager_1.WalletManager.loadKeypairAuto(agentId);
41
+ // Get connection
42
+ const connection = solana_1.SolanaClient.getConnection(network);
43
+ // Create transfer instruction
44
+ const lamports = Math.floor(parseFloat(options.amount) * web3_js_1.LAMPORTS_PER_SOL);
45
+ const transferInstruction = web3_js_1.SystemProgram.transfer({
46
+ fromPubkey: keypair.publicKey,
47
+ toPubkey: new web3_js_1.PublicKey(options.to),
48
+ lamports,
49
+ });
50
+ // Create transaction
51
+ const transaction = new web3_js_1.Transaction().add(transferInstruction);
52
+ // Sign and send
53
+ console.log('\nSigning transaction...');
54
+ const signature = await engine_1.SignerEngine.signAndSend(transaction, keypair, connection);
55
+ console.log('\nāœ… Transaction sent!');
56
+ console.log('Signature:', signature);
57
+ console.log('Explorer: https://explorer.solana.com/tx/' + signature + '?cluster=' + network);
58
+ console.log('');
59
+ }
60
+ catch (error) {
61
+ console.error('\nāŒ Error:', error.message);
62
+ process.exit(1);
63
+ }
64
+ });
65
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const swapCommand: Command;
3
+ //# sourceMappingURL=swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,WAAW,SAiGpB,CAAC"}