@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
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|