@pocketagent/paw 1.0.5 → 1.0.7
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/README.md +3 -0
- package/dist/cli/commands/swap.d.ts.map +1 -1
- package/dist/cli/commands/swap.js +55 -14
- package/dist/cli/commands/swap.js.map +1 -1
- package/dist/core/crypto/machine-identity.d.ts +21 -3
- package/dist/core/crypto/machine-identity.d.ts.map +1 -1
- package/dist/core/crypto/machine-identity.js +59 -8
- package/dist/core/crypto/machine-identity.js.map +1 -1
- package/dist/core/storage/filesystem.d.ts +1 -0
- package/dist/core/storage/filesystem.d.ts.map +1 -1
- package/dist/core/storage/filesystem.js +12 -2
- package/dist/core/storage/filesystem.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -80,6 +80,9 @@ We're launching on Solana because:
|
|
|
80
80
|
- **Zero Plaintext**: All secrets encrypted at rest
|
|
81
81
|
- **Memory Safe**: Keys cleared after use
|
|
82
82
|
- **Theft Resistant**: Stolen files are useless
|
|
83
|
+
- **Machine-Bound**: Wallets tied to specific device (hostname, username, OS, architecture, home directory)
|
|
84
|
+
|
|
85
|
+
⚠️ **Important:** Wallets are bound to your machine. If you change hostname, username, or reinstall OS, you'll need to export/import your private keys before making changes. Always backup your private keys with `paw export <agent-id>` before system changes!
|
|
83
86
|
|
|
84
87
|
### 📟 Retro Dashboard
|
|
85
88
|
- **Pager-Style TUI**: Monochrome green-on-black aesthetic
|
|
@@ -1 +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,
|
|
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,SAmJpB,CAAC"}
|
|
@@ -44,7 +44,7 @@ exports.swapCommand = new commander_1.Command('swap')
|
|
|
44
44
|
.requiredOption('--agent-id <id>', 'Agent identifier')
|
|
45
45
|
.requiredOption('--from <token>', 'Input token (SOL, USDC, USDT, BONK or mint address)')
|
|
46
46
|
.requiredOption('--to <token>', 'Output token (SOL, USDC, USDT, BONK or mint address)')
|
|
47
|
-
.requiredOption('--amount <amount>', 'Amount to swap')
|
|
47
|
+
.requiredOption('--amount <amount>', 'Amount to swap (e.g., 0.5 or 50%)')
|
|
48
48
|
.option('--network <network>', 'Network to use (devnet, mainnet-beta)', 'mainnet-beta')
|
|
49
49
|
.option('--slippage <bps>', 'Slippage tolerance in basis points (default: 50, meme coins: 500-1000)', '50')
|
|
50
50
|
.option('--priority-fee <lamports>', 'Priority fee in lamports for faster execution (default: auto)')
|
|
@@ -71,24 +71,65 @@ exports.swapCommand = new commander_1.Command('swap')
|
|
|
71
71
|
// Resolve token addresses
|
|
72
72
|
const inputMint = client_1.JupiterClient.TOKENS[options.from] || options.from;
|
|
73
73
|
const outputMint = client_1.JupiterClient.TOKENS[options.to] || options.to;
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
// Load keypair to get wallet address
|
|
75
|
+
const keypair = await manager_1.WalletManager.loadKeypairAuto(options.agentId);
|
|
76
|
+
const connection = solana_1.SolanaClient.getConnection(options.network);
|
|
77
|
+
// Check if amount is percentage
|
|
78
|
+
const isPercentage = options.amount.toString().endsWith('%');
|
|
79
|
+
let actualAmount;
|
|
80
|
+
let amountInSmallestUnit;
|
|
81
|
+
if (isPercentage) {
|
|
82
|
+
// Get percentage value
|
|
83
|
+
const percentage = parseFloat(options.amount.replace('%', ''));
|
|
84
|
+
if (percentage <= 0 || percentage > 100) {
|
|
85
|
+
throw new Error('Percentage must be between 0 and 100');
|
|
86
|
+
}
|
|
87
|
+
console.log(`\n💰 Calculating ${percentage}% of ${options.from} balance...`);
|
|
88
|
+
// Get balance
|
|
89
|
+
let balance;
|
|
90
|
+
if (options.from === 'SOL') {
|
|
91
|
+
const lamports = await connection.getBalance(keypair.publicKey);
|
|
92
|
+
balance = lamports / web3_js_1.LAMPORTS_PER_SOL;
|
|
93
|
+
actualAmount = ((balance * percentage) / 100).toFixed(6);
|
|
94
|
+
amountInSmallestUnit = Math.floor(parseFloat(actualAmount) * web3_js_1.LAMPORTS_PER_SOL);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// Get SPL token balance
|
|
98
|
+
const { getAccount, getAssociatedTokenAddress } = await Promise.resolve().then(() => __importStar(require('@solana/spl-token')));
|
|
99
|
+
const { PublicKey } = await Promise.resolve().then(() => __importStar(require('@solana/web3.js')));
|
|
100
|
+
const mintPubkey = new PublicKey(inputMint);
|
|
101
|
+
const tokenAccount = await getAssociatedTokenAddress(mintPubkey, keypair.publicKey);
|
|
102
|
+
try {
|
|
103
|
+
const accountInfo = await getAccount(connection, tokenAccount);
|
|
104
|
+
const inputTokenInfo = await client_1.JupiterClient.findToken(options.from);
|
|
105
|
+
const decimals = inputTokenInfo ? inputTokenInfo.decimals : 6;
|
|
106
|
+
balance = Number(accountInfo.amount) / Math.pow(10, decimals);
|
|
107
|
+
actualAmount = ((balance * percentage) / 100).toFixed(decimals);
|
|
108
|
+
amountInSmallestUnit = Math.floor(parseFloat(actualAmount) * Math.pow(10, decimals));
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
throw new Error(`No ${options.from} balance found`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
console.log(` Balance: ${balance.toFixed(6)} ${options.from}`);
|
|
115
|
+
console.log(` Swapping: ${actualAmount} ${options.from} (${percentage}%)`);
|
|
78
116
|
}
|
|
79
117
|
else {
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
118
|
+
// Use exact amount
|
|
119
|
+
actualAmount = options.amount;
|
|
120
|
+
if (options.from === 'SOL') {
|
|
121
|
+
amountInSmallestUnit = Math.floor(parseFloat(actualAmount) * web3_js_1.LAMPORTS_PER_SOL);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
const inputTokenInfo = await client_1.JupiterClient.findToken(options.from);
|
|
125
|
+
const decimals = inputTokenInfo ? inputTokenInfo.decimals : 6;
|
|
126
|
+
amountInSmallestUnit = Math.floor(parseFloat(actualAmount) * Math.pow(10, decimals));
|
|
127
|
+
}
|
|
85
128
|
}
|
|
86
129
|
console.log('\nFetching quote from Jupiter...');
|
|
87
|
-
// Load keypair first to get public key
|
|
88
|
-
const keypair = await manager_1.WalletManager.loadKeypairAuto(options.agentId);
|
|
89
130
|
// Load referral config if available
|
|
90
131
|
const referralConfig = client_1.JupiterClient.loadReferralConfig();
|
|
91
|
-
const quote = await client_1.JupiterClient.getQuote(inputMint, outputMint,
|
|
132
|
+
const quote = await client_1.JupiterClient.getQuote(inputMint, outputMint, amountInSmallestUnit, parseInt(slippage.toString()), {
|
|
92
133
|
userPublicKey: keypair.publicKey.toBase58(),
|
|
93
134
|
referralAccount: referralConfig?.referralAccount,
|
|
94
135
|
referralFee: referralConfig?.referralFee,
|
|
@@ -98,7 +139,7 @@ exports.swapCommand = new commander_1.Command('swap')
|
|
|
98
139
|
? (parseInt(quote.outAmount) / web3_js_1.LAMPORTS_PER_SOL).toFixed(6)
|
|
99
140
|
: (parseInt(quote.outAmount) / 1e6).toFixed(6);
|
|
100
141
|
console.log('\n📊 Quote:');
|
|
101
|
-
console.log('Input: ',
|
|
142
|
+
console.log('Input: ', actualAmount, options.from);
|
|
102
143
|
console.log('Output: ', outAmount, options.to);
|
|
103
144
|
console.log('Price Impact:', quote.priceImpactPct, '%');
|
|
104
145
|
console.log('Slippage:', slippage, 'bps', `(${(parseInt(slippage.toString()) / 100).toFixed(1)}%)`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../src/cli/commands/swap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,uDAA0D;AAC1D,+CAAkD;AAClD,8DAAkE;AAClE,6CAA4D;AAE/C,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,kCAAkC,CAAC;KAC/C,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KACrD,cAAc,CAAC,gBAAgB,EAAE,qDAAqD,CAAC;KACvF,cAAc,CAAC,cAAc,EAAE,sDAAsD,CAAC;KACtF,cAAc,CAAC,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../src/cli/commands/swap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generate a unique key based on machine identity
|
|
3
3
|
* This key is consistent for the same machine but different across machines
|
|
4
|
+
*
|
|
5
|
+
* Version 2: Removed hostname for container compatibility
|
|
6
|
+
* Supports legacy v1 wallets (with hostname) via automatic fallback
|
|
4
7
|
*/
|
|
5
8
|
export declare class MachineIdentity {
|
|
6
9
|
/**
|
|
7
|
-
* Get a machine-specific encryption key
|
|
8
|
-
* Uses
|
|
10
|
+
* Get a machine-specific encryption key (v2 - no hostname)
|
|
11
|
+
* Uses username, platform, architecture, and home directory
|
|
9
12
|
*/
|
|
10
13
|
static getMachineKey(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Get legacy machine key (v1 - with hostname)
|
|
16
|
+
* Used for backward compatibility with existing wallets
|
|
17
|
+
*/
|
|
18
|
+
private static getLegacyMachineKey;
|
|
11
19
|
/**
|
|
12
20
|
* Encrypt data with machine-specific key
|
|
13
21
|
* Data can only be decrypted on the same machine
|
|
@@ -15,12 +23,22 @@ export declare class MachineIdentity {
|
|
|
15
23
|
static encrypt(data: string): string;
|
|
16
24
|
/**
|
|
17
25
|
* Decrypt data with machine-specific key
|
|
18
|
-
*
|
|
26
|
+
* Supports automatic fallback to legacy format (v1 with hostname)
|
|
27
|
+
* Auto-migrates legacy wallets on successful decrypt
|
|
19
28
|
*/
|
|
20
29
|
static decrypt(encryptedData: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Internal decrypt helper
|
|
32
|
+
*/
|
|
33
|
+
private static decryptWithKey;
|
|
21
34
|
/**
|
|
22
35
|
* Check if data can be decrypted on this machine
|
|
23
36
|
*/
|
|
24
37
|
static canDecrypt(encryptedData: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Check if data can be decrypted with v2 key (no hostname)
|
|
40
|
+
* Used to detect legacy wallets that need migration
|
|
41
|
+
*/
|
|
42
|
+
static canDecryptWithV2(encryptedData: string): boolean;
|
|
25
43
|
}
|
|
26
44
|
//# sourceMappingURL=machine-identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine-identity.d.ts","sourceRoot":"","sources":["../../../src/core/crypto/machine-identity.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"machine-identity.d.ts","sourceRoot":"","sources":["../../../src/core/crypto/machine-identity.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,MAAM;IAe9B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAgBlC;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAiBpC;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAgB7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAuB7B;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IASjD;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;CAQxD"}
|
|
@@ -9,23 +9,41 @@ const os_1 = __importDefault(require("os"));
|
|
|
9
9
|
/**
|
|
10
10
|
* Generate a unique key based on machine identity
|
|
11
11
|
* This key is consistent for the same machine but different across machines
|
|
12
|
+
*
|
|
13
|
+
* Version 2: Removed hostname for container compatibility
|
|
14
|
+
* Supports legacy v1 wallets (with hostname) via automatic fallback
|
|
12
15
|
*/
|
|
13
16
|
class MachineIdentity {
|
|
14
17
|
/**
|
|
15
|
-
* Get a machine-specific encryption key
|
|
16
|
-
* Uses
|
|
18
|
+
* Get a machine-specific encryption key (v2 - no hostname)
|
|
19
|
+
* Uses username, platform, architecture, and home directory
|
|
17
20
|
*/
|
|
18
21
|
static getMachineKey() {
|
|
19
|
-
//
|
|
22
|
+
// v2: Removed hostname for container compatibility
|
|
20
23
|
const machineData = [
|
|
21
|
-
os_1.default.hostname(), // Computer name
|
|
22
24
|
os_1.default.userInfo().username, // User name
|
|
23
25
|
os_1.default.platform(), // OS (darwin, linux, win32)
|
|
24
26
|
os_1.default.arch(), // CPU architecture (x64, arm64)
|
|
25
27
|
os_1.default.homedir(), // Home directory path
|
|
26
28
|
].join('|');
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
return crypto_1.default
|
|
30
|
+
.createHash('sha256')
|
|
31
|
+
.update(machineData)
|
|
32
|
+
.digest('hex');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get legacy machine key (v1 - with hostname)
|
|
36
|
+
* Used for backward compatibility with existing wallets
|
|
37
|
+
*/
|
|
38
|
+
static getLegacyMachineKey() {
|
|
39
|
+
// v1: Original method with hostname
|
|
40
|
+
const machineData = [
|
|
41
|
+
os_1.default.hostname(), // Computer name (causes container issues)
|
|
42
|
+
os_1.default.userInfo().username, // User name
|
|
43
|
+
os_1.default.platform(), // OS (darwin, linux, win32)
|
|
44
|
+
os_1.default.arch(), // CPU architecture (x64, arm64)
|
|
45
|
+
os_1.default.homedir(), // Home directory path
|
|
46
|
+
].join('|');
|
|
29
47
|
return crypto_1.default
|
|
30
48
|
.createHash('sha256')
|
|
31
49
|
.update(machineData)
|
|
@@ -50,10 +68,30 @@ class MachineIdentity {
|
|
|
50
68
|
}
|
|
51
69
|
/**
|
|
52
70
|
* Decrypt data with machine-specific key
|
|
53
|
-
*
|
|
71
|
+
* Supports automatic fallback to legacy format (v1 with hostname)
|
|
72
|
+
* Auto-migrates legacy wallets on successful decrypt
|
|
54
73
|
*/
|
|
55
74
|
static decrypt(encryptedData) {
|
|
56
|
-
|
|
75
|
+
// Try v2 (no hostname) first
|
|
76
|
+
try {
|
|
77
|
+
return this.decryptWithKey(encryptedData, this.getMachineKey());
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
// Fallback to v1 (with hostname) for legacy wallets
|
|
81
|
+
try {
|
|
82
|
+
const decrypted = this.decryptWithKey(encryptedData, this.getLegacyMachineKey());
|
|
83
|
+
return decrypted;
|
|
84
|
+
}
|
|
85
|
+
catch (legacyError) {
|
|
86
|
+
// Neither worked - throw original error
|
|
87
|
+
throw new Error('Failed to decrypt data. Wallet may be from a different machine.');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Internal decrypt helper
|
|
93
|
+
*/
|
|
94
|
+
static decryptWithKey(encryptedData, machineKey) {
|
|
57
95
|
const algorithm = 'aes-256-cbc';
|
|
58
96
|
// Split IV and encrypted data
|
|
59
97
|
const parts = encryptedData.split(':');
|
|
@@ -82,6 +120,19 @@ class MachineIdentity {
|
|
|
82
120
|
return false;
|
|
83
121
|
}
|
|
84
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Check if data can be decrypted with v2 key (no hostname)
|
|
125
|
+
* Used to detect legacy wallets that need migration
|
|
126
|
+
*/
|
|
127
|
+
static canDecryptWithV2(encryptedData) {
|
|
128
|
+
try {
|
|
129
|
+
this.decryptWithKey(encryptedData, this.getMachineKey());
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
85
136
|
}
|
|
86
137
|
exports.MachineIdentity = MachineIdentity;
|
|
87
138
|
//# sourceMappingURL=machine-identity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine-identity.js","sourceRoot":"","sources":["../../../src/core/crypto/machine-identity.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,4CAAoB;AAEpB
|
|
1
|
+
{"version":3,"file":"machine-identity.js","sourceRoot":"","sources":["../../../src/core/crypto/machine-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,7 @@ export declare class FileSystemStorage {
|
|
|
58
58
|
/**
|
|
59
59
|
* Load passphrase (decrypt with machine-specific key)
|
|
60
60
|
* Only works on the same machine where it was saved
|
|
61
|
+
* Auto-migrates legacy wallets (v1 with hostname) to new format (v2 without hostname)
|
|
61
62
|
*/
|
|
62
63
|
static loadPassphrase(agentId: string): Promise<string>;
|
|
63
64
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/core/storage/filesystem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAGhC;IAEF;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIjD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI7C;;OAEG;WACU,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStD;;OAEG;WACU,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D;;OAEG;WACU,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,IAAI,CAAC;IAehB;;OAEG;WACU,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAapE;;OAEG;WACU,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE;;OAEG;WACU,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAMtD;;OAEG;WACU,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAS5C;;;OAGG;WACU,cAAc,CACzB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAWhB
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/core/storage/filesystem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAGhC;IAEF;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIjD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI7C;;OAEG;WACU,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStD;;OAEG;WACU,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D;;OAEG;WACU,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,IAAI,CAAC;IAehB;;OAEG;WACU,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAapE;;OAEG;WACU,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE;;OAEG;WACU,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAMtD;;OAEG;WACU,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAS5C;;;OAGG;WACU,cAAc,CACzB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;OAIG;WACU,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB7D;;OAEG;WACU,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQ9D"}
|
|
@@ -162,13 +162,23 @@ class FileSystemStorage {
|
|
|
162
162
|
/**
|
|
163
163
|
* Load passphrase (decrypt with machine-specific key)
|
|
164
164
|
* Only works on the same machine where it was saved
|
|
165
|
+
* Auto-migrates legacy wallets (v1 with hostname) to new format (v2 without hostname)
|
|
165
166
|
*/
|
|
166
167
|
static async loadPassphrase(agentId) {
|
|
167
168
|
const { MachineIdentity } = await Promise.resolve().then(() => __importStar(require('../crypto/machine-identity')));
|
|
168
169
|
const passphrasePath = FileSystemStorage.getPassphrasePath(agentId);
|
|
169
170
|
const encrypted = await promises_1.default.readFile(passphrasePath, 'utf-8');
|
|
170
|
-
// Decrypt with machine-specific key
|
|
171
|
-
|
|
171
|
+
// Decrypt with machine-specific key (supports v1 fallback)
|
|
172
|
+
const passphrase = MachineIdentity.decrypt(encrypted);
|
|
173
|
+
// Check if this was a legacy wallet (v1) by trying to decrypt with v2 key
|
|
174
|
+
const isLegacy = !MachineIdentity.canDecryptWithV2(encrypted);
|
|
175
|
+
if (isLegacy) {
|
|
176
|
+
// Auto-migrate: Re-encrypt with v2 (no hostname) and save
|
|
177
|
+
console.log('📟 Wallet migrated to v2 (hostname-independent)');
|
|
178
|
+
const newEncrypted = MachineIdentity.encrypt(passphrase);
|
|
179
|
+
await promises_1.default.writeFile(passphrasePath, newEncrypted, { mode: 0o600 });
|
|
180
|
+
}
|
|
181
|
+
return passphrase;
|
|
172
182
|
}
|
|
173
183
|
/**
|
|
174
184
|
* Check if passphrase file exists
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/core/storage/filesystem.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/core/storage/filesystem.ts"],"names":[],"mappings":"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"}
|