@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 PocketAgent Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,307 @@
1
+ # PAW šŸ“Ÿ
2
+
3
+ **PocketAgent Wallet** - Agentic Wallets for Autonomous AI Agents
4
+
5
+ > Give your AI agents the power to manage their own crypto
6
+
7
+ ## About PAW
8
+
9
+ PAW (PocketAgent Wallet) is a specialized wallet infrastructure designed for AI agents to autonomously manage crypto assets and interact with DeFi protocols. Unlike traditional wallets built for humans, PAW enables AI agents to hold funds, execute transactions, and participate in DeFi—all without manual approval for every action.
10
+
11
+ Think of it as giving your AI agent its own pocket of crypto that it can manage intelligently within the guardrails you set.
12
+
13
+ ## What We're Building
14
+
15
+ PAW provides:
16
+
17
+ - **Programmatic Wallet Creation** - AI agents create wallets on demand
18
+ - **Automated Transaction Signing** - No manual approval needed
19
+ - **SOL & SPL Token Support** - Full Solana token compatibility
20
+ - **DeFi Protocol Integration** - Jupiter DEX for best swap prices
21
+ - **Lightning-Fast Execution** - Helius RPC for <2 second swaps
22
+ - **Meme Trading Ready** - Configurable slippage and priority fees
23
+ - **Real-Time Pricing** - Live SOL prices from CoinGecko
24
+ - **Safe Key Management** - Double encryption (wallet + machine-specific passphrase)
25
+ - **Multi-Agent Support** - Each agent manages its own wallet independently
26
+ - **Interactive Dashboard** - Retro pager-style TUI for monitoring
27
+
28
+ ## Submission Requirements
29
+
30
+ āœ… Working prototype on Solana Devnet
31
+ āœ… Programmatic wallet creation
32
+ āœ… Automatic transaction signing
33
+ āœ… DeFi protocol interaction (Jupiter for swaps)
34
+ āœ… Deep dive documentation (written + video)
35
+ āœ… Open-source code with README
36
+ āœ… SKILLS.md for AI agents
37
+ āœ… Demo of autonomous agent using the wallet
38
+
39
+ ## Current Status
40
+
41
+ 🚧 **In Development** - Building for the Superteam DeFi Developer Challenge
42
+
43
+ **Phase 1:** Solana Implementation (Current Focus)
44
+ - Starting with Solana for fast, low-cost transactions
45
+ - Building core wallet infrastructure
46
+ - Implementing basic DeFi integrations
47
+
48
+ **Phase 2:** Multi-chain Expansion (Planned)
49
+ - EVM chains (Ethereum, Base, Polygon)
50
+ - Cross-chain capabilities
51
+ - Unified API across all chains
52
+
53
+ ## Why Solana First?
54
+
55
+ We're launching on Solana because:
56
+ - ⚔ Fast transaction speeds (400ms block times)
57
+ - šŸ’° Low fees (fractions of a cent)
58
+ - šŸ¤– Perfect for high-frequency agent operations
59
+ - 🌊 Rich DeFi ecosystem (Jupiter, Raydium, Marinade, etc.)
60
+ - šŸ“ˆ Growing AI agent community
61
+
62
+ ## Key Features
63
+
64
+ ### šŸš€ Lightning-Fast Trading
65
+ - **Helius RPC**: Premium endpoints for fastest execution
66
+ - **<2 Second Swaps**: Fast enough to snipe meme launches
67
+ - **Priority Fees**: Configurable fees for competitive trading
68
+ - **Jupiter DEX**: Best prices across ALL Solana DEXs
69
+ - **Faster than Mobile Wallets**: 2-3x faster than Phantom/Solflare
70
+
71
+ ### šŸ’° Portfolio Management
72
+ - **Real-Time Pricing**: Live SOL prices from CoinGecko
73
+ - **Total Portfolio View**: See combined value of SOL + tokens in USD
74
+ - **Multi-Token Support**: Trade any SPL token by mint address
75
+ - **Transaction History**: Track all agent activities
76
+
77
+ ### šŸŽÆ Meme Trading Ready
78
+ - **Configurable Slippage**: Set high slippage for volatile tokens
79
+ - **Custom Priority Fees**: Boost transaction speed during congestion
80
+ - **Config Defaults**: Set slippage/fees once, use everywhere
81
+ - **Popular Tokens**: Built-in support for BONK, WIF, POPCAT, etc.
82
+
83
+ ### šŸ” Enterprise Security
84
+ - **Double Encryption**: Wallet + machine-specific passphrase
85
+ - **Zero Plaintext**: All secrets encrypted at rest
86
+ - **Memory Safe**: Keys cleared after use
87
+ - **Theft Resistant**: Stolen files are useless
88
+
89
+ ### šŸ“Ÿ Retro Dashboard
90
+ - **Pager-Style TUI**: Monochrome green-on-black aesthetic
91
+ - **Real-Time Updates**: Auto-refresh every 30 seconds
92
+ - **Transaction Feed**: Recent activity at a glance
93
+ - **Keyboard Controls**: Navigate with arrow keys
94
+
95
+ ## Use Cases
96
+
97
+ - **Meme Coin Trading** - Snipe launches, scalp pumps, automated take-profit
98
+ - **High-Frequency Trading** - Execute trades at Telegram bot speed
99
+ - **Yield Farmers** - Agents that optimize yield across protocols
100
+ - **Portfolio Managers** - Rebalancing and diversification agents
101
+ - **Arbitrage Agents** - Cross-DEX opportunity seekers
102
+ - **DCA Bots** - Dollar-cost averaging strategies
103
+ - **DAO Participants** - Agents that vote and manage treasury
104
+
105
+ ## Tech Stack
106
+
107
+ - **Language:** TypeScript/Node.js
108
+ - **CLI Framework:** Commander.js
109
+ - **Blockchain:** Solana (Devnet + Mainnet)
110
+ - **RPC Provider:** Helius (premium endpoints)
111
+ - **Wallet Library:** @solana/web3.js
112
+ - **Key Storage:** AES-256-GCM encrypted files (~/.paw/)
113
+ - **Encryption:** Double-layer (wallet + machine-specific)
114
+ - **DeFi Integration:** Jupiter Aggregator API v6
115
+ - **Price Feeds:** CoinGecko API
116
+ - **Dashboard:** Blessed (retro TUI)
117
+ - **Package Manager:** Yarn
118
+
119
+ ## Security Model
120
+
121
+ PAW uses a **double-encryption security model** for maximum protection:
122
+
123
+ ### Layer 1: Wallet Encryption (AES-256-GCM)
124
+ - **What:** Your wallet's private key
125
+ - **Encrypted with:** Random passphrase (32 bytes)
126
+ - **Algorithm:** AES-256-GCM with PBKDF2 (100,000 iterations)
127
+ - **Result:** `keypair.enc` (encrypted blob)
128
+
129
+ ### Layer 2: Passphrase Encryption (Machine-Specific)
130
+ - **What:** The passphrase from Layer 1
131
+ - **Encrypted with:** Machine-specific key (derived from hostname, username, OS, etc.)
132
+ - **Algorithm:** AES-256-CBC with Scrypt
133
+ - **Result:** `.passphrase` (encrypted blob, only works on this machine)
134
+
135
+ ### Layer 3: File Permissions
136
+ - **All files:** Mode 0600 (owner read/write only)
137
+ - **OS-level protection:** Other users can't read files
138
+
139
+ **Key Features:**
140
+ - šŸ” Double encryption (safe inside a safe)
141
+ - šŸ–„ļø Machine-bound (files useless on other computers)
142
+ - šŸ”‘ Zero plaintext (everything encrypted at rest)
143
+ - 🧹 Memory-safe (keys cleared after signing)
144
+ - šŸ›”ļø Theft-resistant (stolen files are useless)
145
+
146
+ ### What's Stored on Disk:
147
+
148
+ ```bash
149
+ ~/.paw/agents/bot-001/
150
+ ā”œā”€ā”€ keypair.enc # Encrypted wallet (AES-256-GCM)
151
+ ā”œā”€ā”€ .passphrase # Encrypted passphrase (machine-specific)
152
+ └── config.json # Public metadata only (no secrets)
153
+ ```
154
+
155
+ **All secrets are encrypted - nothing in plaintext!**
156
+
157
+ See [SECURITY.md](about/SECURITY.md) for detailed security documentation.
158
+
159
+ ## Project Structure
160
+
161
+ ```
162
+ paw/
163
+ ā”œā”€ā”€ src/
164
+ │ ā”œā”€ā”€ cli/ # CLI interface and commands
165
+ │ ā”œā”€ā”€ core/ # Core wallet system (TypeScript)
166
+ │ │ ā”œā”€ā”€ wallet/ # Wallet creation & management
167
+ │ │ ā”œā”€ā”€ signer/ # Automatic transaction signing
168
+ │ │ └── storage/ # Secure key storage
169
+ │ ā”œā”€ā”€ integrations/ # DeFi protocol integrations
170
+ │ │ └── jupiter/ # Jupiter DEX integration
171
+ │ └── utils/ # Helper utilities
172
+ ā”œā”€ā”€ examples/
173
+ │ ā”œā”€ā”€ trading-bot/ # Demo trading agent
174
+ │ ā”œā”€ā”€ openclaw/ # OpenClaw integration example
175
+ │ └── multi-agent/ # Multi-agent demo
176
+ ā”œā”€ā”€ docs/
177
+ │ ā”œā”€ā”€ README.md
178
+ │ ā”œā”€ā”€ SKILLS.md # For AI agents to read
179
+ │ ā”œā”€ā”€ DEEP_DIVE.md # Technical deep dive
180
+ │ └── API.md # CLI command reference
181
+ └── tests/ # Test suite
182
+ ```
183
+
184
+ ## Getting Started
185
+
186
+ ### Installation
187
+
188
+ ```bash
189
+ # Install PAW globally (like installing a wallet app)
190
+ npm install -g @pocketagent/paw
191
+ ```
192
+
193
+ ### Quick Start
194
+
195
+ ```bash
196
+ # 1. Create a wallet for your agent (defaults to mainnet-beta)
197
+ paw init my-trading-bot
198
+
199
+ # Or specify network explicitly:
200
+ # paw init my-trading-bot --network devnet # For testing
201
+ # paw init my-trading-bot --network mainnet-beta # For real trading
202
+
203
+ # 2. Get your wallet address
204
+ paw address my-trading-bot
205
+
206
+ # 3. Fund it on Solana devnet (use faucet)
207
+ # Visit: https://faucet.solana.com
208
+
209
+ # 4. Check total portfolio balance (SOL + tokens in USD)
210
+ paw balance my-trading-bot
211
+
212
+ # 5. Configure for meme trading (mainnet)
213
+ paw config my-trading-bot --network mainnet-beta --slippage 1000 --priority-fee 100000
214
+
215
+ # 6. List all tokens
216
+ paw tokens my-trading-bot
217
+
218
+ # 7. Send SOL
219
+ paw send my-trading-bot --to <recipient-address> --amount 0.5
220
+
221
+ # 8. Swap tokens (fast execution with Jupiter)
222
+ paw swap my-trading-bot --from SOL --to BONK --amount 0.5
223
+
224
+ # 9. View transaction history
225
+ paw history my-trading-bot
226
+
227
+ # 10. Launch interactive dashboard
228
+ paw dashboard my-trading-bot
229
+ ```
230
+
231
+ ### For AI Agents
232
+
233
+ ```javascript
234
+ // Your agent can execute PAW commands
235
+ const { exec } = require('child_process');
236
+
237
+ // Initialize wallet
238
+ exec('paw init trading-bot-001');
239
+
240
+ // Check total portfolio balance
241
+ exec('paw balance trading-bot-001', (err, stdout) => {
242
+ console.log(stdout);
243
+ // šŸ’° Total Portfolio:
244
+ // ~1.649990 SOL
245
+ // ~138.68 USD
246
+ });
247
+
248
+ // Execute meme coin trade with high slippage
249
+ exec('paw swap trading-bot-001 --from SOL --to BONK --amount 0.5 --slippage 1000 --priority-fee 100000');
250
+ ```
251
+
252
+ ### Programmatic Usage (TypeScript/Node.js)
253
+
254
+ ```typescript
255
+ import { WalletManager, SolanaClient } from '@pocketagent/paw';
256
+
257
+ // Create wallet
258
+ const wallet = await WalletManager.createWallet({
259
+ agentId: 'trading-bot-001',
260
+ network: 'devnet',
261
+ });
262
+
263
+ // Check balance
264
+ const balance = await SolanaClient.getBalance(wallet.address, 'devnet');
265
+ console.log(`Balance: ${balance} SOL`);
266
+ ```
267
+
268
+ ## Roadmap
269
+
270
+ - [x] Project planning and design
271
+ - [ ] Core wallet infrastructure (Solana Devnet)
272
+ - [ ] Programmatic wallet creation
273
+ - [ ] Automated transaction signing
274
+ - [ ] SOL/SPL token support
275
+ - [ ] Key management system
276
+ - [ ] Secure key storage for agents
277
+ - [ ] Encryption and access controls
278
+ - [ ] DeFi integration (Jupiter DEX)
279
+ - [ ] Token swaps
280
+ - [ ] Price feeds
281
+ - [ ] AI agent simulation
282
+ - [ ] Simple trading bot logic
283
+ - [ ] Decision-making framework
284
+ - [ ] Multi-agent support
285
+ - [ ] Independent wallet management
286
+ - [ ] Agent registry
287
+ - [ ] Monitoring tools (Optional)
288
+ - [ ] CLI for observing agent actions
289
+ - [ ] Transaction history viewer
290
+ - [ ] Documentation
291
+ - [ ] README with setup instructions
292
+ - [ ] SKILLS.md for AI agents
293
+ - [ ] Deep dive (written + video)
294
+ - [ ] Testing & deployment on Devnet
295
+
296
+ ## Contributing
297
+
298
+ This project is being developed for the Superteam DeFi Developer Challenge. Stay tuned for contribution guidelines after the initial release!
299
+
300
+ ## License
301
+
302
+ TBD
303
+
304
+ ---
305
+
306
+ **Built for the Superteam DeFi Developer Challenge 2026**
307
+ *Empowering AI agents, one paw at a time* ļæ½
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const addressCommand: Command;
3
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,cAAc,SA2BvB,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addressCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const manager_1 = require("../../core/wallet/manager");
6
+ exports.addressCommand = new commander_1.Command('address')
7
+ .description('šŸ“Ÿ Show wallet address')
8
+ .argument('[agent-id]', 'Agent identifier')
9
+ .option('--agent-id <id>', 'Agent identifier (alternative)')
10
+ .action(async (agentIdArg, options) => {
11
+ try {
12
+ // Support both positional and flag syntax
13
+ const agentId = agentIdArg || options.agentId;
14
+ if (!agentId) {
15
+ console.error('\nāŒ Error: Agent ID is required');
16
+ console.log('\nUsage: paw address <agent-id>');
17
+ console.log(' or: paw address --agent-id <agent-id>');
18
+ console.log('');
19
+ process.exit(1);
20
+ }
21
+ const walletInfo = await manager_1.WalletManager.getWalletInfo(agentId);
22
+ console.log('\nšŸ“Ÿ PAW - Wallet Address');
23
+ console.log('Agent ID:', agentId);
24
+ console.log('Address: ', walletInfo.address);
25
+ console.log('');
26
+ }
27
+ catch (error) {
28
+ console.error('\nāŒ Error:', error.message);
29
+ process.exit(1);
30
+ }
31
+ });
32
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/cli/commands/address.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,uDAA0D;AAE7C,QAAA,cAAc,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,wBAAwB,CAAC;KACrC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;KAC1C,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IACpC,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,OAAO,GAAG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;QAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,uBAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE9D,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const balanceCommand: Command;
3
+ //# sourceMappingURL=balance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,cAAc,SAgFvB,CAAC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.balanceCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const manager_1 = require("../../core/wallet/manager");
6
+ const solana_1 = require("../../utils/solana");
7
+ const filesystem_1 = require("../../core/storage/filesystem");
8
+ const web3_js_1 = require("@solana/web3.js");
9
+ const price_1 = require("../../utils/price");
10
+ exports.balanceCommand = new commander_1.Command('balance')
11
+ .description('šŸ“Ÿ Check wallet balance')
12
+ .argument('[agent-id]', 'Agent identifier')
13
+ .option('--agent-id <id>', 'Agent identifier (alternative)')
14
+ .option('--network <network>', 'Network to use (overrides config)')
15
+ .action(async (agentIdArg, options) => {
16
+ try {
17
+ // Support both positional and flag syntax
18
+ const agentId = agentIdArg || options.agentId;
19
+ if (!agentId) {
20
+ console.error('\nāŒ Error: Agent ID is required');
21
+ console.log('\nUsage: paw balance <agent-id>');
22
+ console.log(' or: paw balance --agent-id <agent-id>');
23
+ console.log('');
24
+ process.exit(1);
25
+ }
26
+ const walletInfo = await manager_1.WalletManager.getWalletInfo(agentId);
27
+ // Use network from options or fall back to config
28
+ let network = options.network;
29
+ if (!network) {
30
+ const config = await filesystem_1.FileSystemStorage.loadConfig(agentId);
31
+ network = config.network || 'mainnet-beta';
32
+ }
33
+ const connection = solana_1.SolanaClient.getConnection(network);
34
+ const publicKey = new web3_js_1.PublicKey(walletInfo.address);
35
+ // Get SOL balance
36
+ const solBalanceLamports = await connection.getBalance(publicKey);
37
+ const solBalance = solBalanceLamports / 1e9;
38
+ // Get SPL token accounts
39
+ const tokenAccounts = await connection.getParsedTokenAccountsByOwner(publicKey, { programId: new web3_js_1.PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA') });
40
+ // Calculate total value in USD
41
+ const SOL_PRICE = await price_1.PriceService.getSolPrice();
42
+ let totalUSD = solBalance * SOL_PRICE;
43
+ // Track stablecoin balances
44
+ let stablecoinBalance = 0;
45
+ // Add SPL token values
46
+ for (const accountInfo of tokenAccounts.value) {
47
+ const parsedInfo = accountInfo.account.data.parsed.info;
48
+ const mint = parsedInfo.mint;
49
+ const tokenBalance = parsedInfo.tokenAmount.uiAmount || 0;
50
+ // Known stablecoins = $1 each
51
+ const stablecoins = [
52
+ 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
53
+ 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', // USDT
54
+ ];
55
+ if (stablecoins.includes(mint)) {
56
+ stablecoinBalance += tokenBalance;
57
+ totalUSD += tokenBalance;
58
+ }
59
+ }
60
+ const totalSOL = totalUSD / SOL_PRICE;
61
+ console.log('\nšŸ“Ÿ PAW - Balance');
62
+ console.log('Agent ID:', agentId);
63
+ console.log('Address: ', walletInfo.address);
64
+ console.log('Network: ', network);
65
+ console.log('');
66
+ console.log('šŸ’° Total Portfolio:');
67
+ console.log(' ~' + totalSOL.toFixed(6), 'SOL');
68
+ console.log(' ~' + totalUSD.toFixed(2), 'USD');
69
+ console.log('');
70
+ }
71
+ catch (error) {
72
+ console.error('\nāŒ Error:', error.message);
73
+ process.exit(1);
74
+ }
75
+ });
76
+ //# sourceMappingURL=balance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/cli/commands/balance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const configCommand: Command;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,aAAa,SA4FtB,CAAC"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const filesystem_1 = require("../../core/storage/filesystem");
6
+ exports.configCommand = new commander_1.Command('config')
7
+ .description('šŸ“Ÿ View or update wallet configuration')
8
+ .argument('[agent-id]', 'Agent identifier')
9
+ .option('--agent-id <id>', 'Agent identifier (alternative)')
10
+ .option('--network <network>', 'Set network (devnet, mainnet-beta, testnet)')
11
+ .option('--slippage <bps>', 'Set default slippage in basis points (e.g., 50 = 0.5%, 1000 = 10%)')
12
+ .option('--priority-fee <lamports>', 'Set default priority fee in lamports')
13
+ .option('--show', 'Show current configuration')
14
+ .action(async (agentIdArg, options) => {
15
+ try {
16
+ // Support both positional and flag syntax
17
+ const agentId = agentIdArg || options.agentId;
18
+ if (!agentId) {
19
+ console.error('\nāŒ Error: Agent ID is required');
20
+ console.log('\nUsage: paw config <agent-id> [options]');
21
+ console.log(' or: paw config --agent-id <agent-id> [options]');
22
+ console.log('');
23
+ process.exit(1);
24
+ }
25
+ // Check if wallet exists
26
+ if (!(await filesystem_1.FileSystemStorage.exists(agentId))) {
27
+ console.error('\nāŒ Error: Wallet not found for agent:', agentId);
28
+ process.exit(1);
29
+ }
30
+ // Load current config
31
+ const config = await filesystem_1.FileSystemStorage.loadConfig(agentId);
32
+ // If --show or no options, display config
33
+ if (options.show || (!options.network && !options.slippage && !options.priorityFee)) {
34
+ console.log('\nšŸ“Ÿ PAW - Wallet Configuration');
35
+ console.log('Agent ID:', config.agentId);
36
+ console.log('Address: ', config.publicKey);
37
+ console.log('Network: ', config.network || 'mainnet-beta');
38
+ console.log('Default Slippage:', config.defaultSlippage || 50, 'bps');
39
+ console.log('Default Priority Fee:', config.defaultPriorityFee || 'auto');
40
+ console.log('Created: ', new Date(config.createdAt).toLocaleString());
41
+ console.log('');
42
+ return;
43
+ }
44
+ let updated = false;
45
+ // Update network
46
+ if (options.network) {
47
+ const validNetworks = ['devnet', 'mainnet-beta', 'testnet'];
48
+ if (!validNetworks.includes(options.network)) {
49
+ console.error('\nāŒ Error: Invalid network. Must be one of:', validNetworks.join(', '));
50
+ process.exit(1);
51
+ }
52
+ const oldNetwork = config.network;
53
+ config.network = options.network;
54
+ console.log('Network: ', `${oldNetwork} → ${options.network}`);
55
+ updated = true;
56
+ }
57
+ // Update slippage
58
+ if (options.slippage) {
59
+ const slippage = parseInt(options.slippage);
60
+ if (isNaN(slippage) || slippage < 0) {
61
+ console.error('\nāŒ Error: Invalid slippage. Must be a positive number.');
62
+ process.exit(1);
63
+ }
64
+ config.defaultSlippage = slippage;
65
+ console.log('Default Slippage:', slippage, 'bps');
66
+ updated = true;
67
+ }
68
+ // Update priority fee
69
+ if (options.priorityFee) {
70
+ const priorityFee = parseInt(options.priorityFee);
71
+ if (isNaN(priorityFee) || priorityFee < 0) {
72
+ console.error('\nāŒ Error: Invalid priority fee. Must be a positive number.');
73
+ process.exit(1);
74
+ }
75
+ config.defaultPriorityFee = priorityFee;
76
+ console.log('Default Priority Fee:', priorityFee, 'lamports');
77
+ updated = true;
78
+ }
79
+ if (updated) {
80
+ await filesystem_1.FileSystemStorage.saveConfig(agentId, config);
81
+ console.log('\nāœ… Configuration updated successfully!');
82
+ console.log('');
83
+ }
84
+ }
85
+ catch (error) {
86
+ console.error('\nāŒ Error:', error.message);
87
+ process.exit(1);
88
+ }
89
+ });
90
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const dashboardCommand: Command;
3
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,gBAAgB,SAwNzB,CAAC"}