@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.
- package/LICENSE +21 -0
- package/README.md +307 -0
- package/dist/cli/commands/address.d.ts +3 -0
- package/dist/cli/commands/address.d.ts.map +1 -0
- package/dist/cli/commands/address.js +32 -0
- package/dist/cli/commands/address.js.map +1 -0
- package/dist/cli/commands/balance.d.ts +3 -0
- package/dist/cli/commands/balance.d.ts.map +1 -0
- package/dist/cli/commands/balance.js +76 -0
- package/dist/cli/commands/balance.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +90 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +3 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +224 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/history.d.ts +3 -0
- package/dist/cli/commands/history.d.ts.map +1 -0
- package/dist/cli/commands/history.js +103 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +62 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/send.d.ts +3 -0
- package/dist/cli/commands/send.d.ts.map +1 -0
- package/dist/cli/commands/send.js +65 -0
- package/dist/cli/commands/send.js.map +1 -0
- package/dist/cli/commands/swap.d.ts +3 -0
- package/dist/cli/commands/swap.d.ts.map +1 -0
- package/dist/cli/commands/swap.js +123 -0
- package/dist/cli/commands/swap.js.map +1 -0
- package/dist/cli/commands/tokens.d.ts +3 -0
- package/dist/cli/commands/tokens.d.ts.map +1 -0
- package/dist/cli/commands/tokens.js +97 -0
- package/dist/cli/commands/tokens.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +31 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/crypto/machine-identity.d.ts +26 -0
- package/dist/core/crypto/machine-identity.d.ts.map +1 -0
- package/dist/core/crypto/machine-identity.js +87 -0
- package/dist/core/crypto/machine-identity.js.map +1 -0
- package/dist/core/signer/engine.d.ts +17 -0
- package/dist/core/signer/engine.d.ts.map +1 -0
- package/dist/core/signer/engine.js +81 -0
- package/dist/core/signer/engine.js.map +1 -0
- package/dist/core/storage/encryption.d.ts +23 -0
- package/dist/core/storage/encryption.d.ts.map +1 -0
- package/dist/core/storage/encryption.js +79 -0
- package/dist/core/storage/encryption.js.map +1 -0
- package/dist/core/storage/filesystem.d.ts +68 -0
- package/dist/core/storage/filesystem.d.ts.map +1 -0
- package/dist/core/storage/filesystem.js +189 -0
- package/dist/core/storage/filesystem.js.map +1 -0
- package/dist/core/wallet/manager.d.ts +30 -0
- package/dist/core/wallet/manager.d.ts.map +1 -0
- package/dist/core/wallet/manager.js +98 -0
- package/dist/core/wallet/manager.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/jupiter/client.d.ts +62 -0
- package/dist/integrations/jupiter/client.d.ts.map +1 -0
- package/dist/integrations/jupiter/client.js +143 -0
- package/dist/integrations/jupiter/client.js.map +1 -0
- package/dist/types/transaction.d.ts +23 -0
- package/dist/types/transaction.d.ts.map +1 -0
- package/dist/types/transaction.js +3 -0
- package/dist/types/transaction.js.map +1 -0
- package/dist/types/wallet.d.ts +31 -0
- package/dist/types/wallet.d.ts.map +1 -0
- package/dist/types/wallet.js +3 -0
- package/dist/types/wallet.js.map +1 -0
- package/dist/utils/price.d.ts +12 -0
- package/dist/utils/price.d.ts.map +1 -0
- package/dist/utils/price.js +45 -0
- package/dist/utils/price.js.map +1 -0
- package/dist/utils/solana.d.ts +22 -0
- package/dist/utils/solana.d.ts.map +1 -0
- package/dist/utils/solana.js +85 -0
- package/dist/utils/solana.js.map +1 -0
- package/package.json +80 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|