memeputer 1.1.3 → 1.2.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/CHANGELOG.md +25 -0
- package/LICENSE +22 -0
- package/README.md +2 -2
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +40 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/formatting.test.d.ts +2 -0
- package/dist/__tests__/formatting.test.d.ts.map +1 -0
- package/dist/__tests__/formatting.test.js +57 -0
- package/dist/__tests__/formatting.test.js.map +1 -0
- package/dist/__tests__/wallet.test.d.ts +2 -0
- package/dist/__tests__/wallet.test.d.ts.map +1 -0
- package/dist/__tests__/wallet.test.js +30 -0
- package/dist/__tests__/wallet.test.js.map +1 -0
- package/dist/commands/agents.js +2 -2
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/balance.js +1 -1
- package/dist/commands/balance.js.map +1 -1
- package/dist/commands/command.d.ts.map +1 -1
- package/dist/commands/command.js +56 -9
- package/dist/commands/command.js.map +1 -1
- package/dist/commands/prompt.d.ts +3 -0
- package/dist/commands/prompt.d.ts.map +1 -0
- package/dist/commands/{ask.js → prompt.js} +19 -10
- package/dist/commands/prompt.js.map +1 -0
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +18 -8
- package/dist/lib/config.js.map +1 -1
- package/dist/utils/formatting.d.ts +2 -0
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +13 -1
- package/dist/utils/formatting.js.map +1 -1
- package/package.json +22 -18
- package/vitest.config.ts +9 -0
- package/dist/commands/ask.d.ts +0 -3
- package/dist/commands/ask.d.ts.map +0 -1
- package/dist/commands/ask.js.map +0 -1
- package/dist/commands/pfp.d.ts +0 -3
- package/dist/commands/pfp.d.ts.map +0 -1
- package/dist/commands/pfp.js +0 -99
- package/dist/commands/pfp.js.map +0 -1
- package/dist/lib/api.d.ts +0 -56
- package/dist/lib/api.d.ts.map +0 -1
- package/dist/lib/api.js +0 -160
- package/dist/lib/api.js.map +0 -1
- package/dist/lib/x402Client.d.ts +0 -14
- package/dist/lib/x402Client.d.ts.map +0 -1
- package/dist/lib/x402Client.js +0 -105
- package/dist/lib/x402Client.js.map +0 -1
package/dist/lib/x402Client.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { ComputeBudgetProgram, TransactionMessage, VersionedTransaction, } from "@solana/web3.js";
|
|
2
|
-
import { getAssociatedTokenAddress, createTransferCheckedInstruction, createAssociatedTokenAccountInstruction, TOKEN_PROGRAM_ID, } from "@solana/spl-token";
|
|
3
|
-
import { PublicKey } from "@solana/web3.js";
|
|
4
|
-
// USDC mint on Solana mainnet
|
|
5
|
-
const USDC_MINT = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
|
|
6
|
-
/**
|
|
7
|
-
* Create a simple USDC payment transaction (for CLI use)
|
|
8
|
-
* This creates a signed transaction that can be sent in the X-PAYMENT header
|
|
9
|
-
*/
|
|
10
|
-
export async function createPaymentTransaction(connection, payer, recipient, amountUsdc, scheme = "exact", network = "solana") {
|
|
11
|
-
try {
|
|
12
|
-
const recipientPubkey = new PublicKey(recipient);
|
|
13
|
-
// Convert USDC amount to micro-USDC (6 decimals)
|
|
14
|
-
const amount = Math.floor(amountUsdc * 1_000_000);
|
|
15
|
-
// Get token accounts (allowOwnerOffCurve fixes wallet adapter key issues)
|
|
16
|
-
const payerTokenAccount = await getAssociatedTokenAddress(USDC_MINT, payer.publicKey, true, // allowOwnerOffCurve - critical for wallet adapter keys!
|
|
17
|
-
TOKEN_PROGRAM_ID);
|
|
18
|
-
const recipientTokenAccount = await getAssociatedTokenAddress(USDC_MINT, recipientPubkey, true, // allowOwnerOffCurve - critical for wallet adapter keys!
|
|
19
|
-
TOKEN_PROGRAM_ID);
|
|
20
|
-
// Build instructions array
|
|
21
|
-
const instructions = [];
|
|
22
|
-
// Add ComputeBudget instructions FIRST (required by facilitator!)
|
|
23
|
-
instructions.push(ComputeBudgetProgram.setComputeUnitLimit({
|
|
24
|
-
units: 40_000,
|
|
25
|
-
}));
|
|
26
|
-
instructions.push(ComputeBudgetProgram.setComputeUnitPrice({
|
|
27
|
-
microLamports: 1,
|
|
28
|
-
}));
|
|
29
|
-
// Check if recipient token account exists, if not create it
|
|
30
|
-
const recipientAccountInfo = await connection.getAccountInfo(recipientTokenAccount);
|
|
31
|
-
if (!recipientAccountInfo) {
|
|
32
|
-
console.log(` 📝 Recipient token account doesn't exist, will create it`);
|
|
33
|
-
instructions.push(createAssociatedTokenAccountInstruction(payer.publicKey, // payer
|
|
34
|
-
recipientTokenAccount, // ata
|
|
35
|
-
recipientPubkey, // owner
|
|
36
|
-
USDC_MINT, // mint
|
|
37
|
-
TOKEN_PROGRAM_ID));
|
|
38
|
-
}
|
|
39
|
-
// Add the transfer instruction (use checked version like agent-to-agent payments)
|
|
40
|
-
instructions.push(createTransferCheckedInstruction(payerTokenAccount, USDC_MINT, recipientTokenAccount, payer.publicKey, amount, 6, // USDC has 6 decimals
|
|
41
|
-
[], TOKEN_PROGRAM_ID));
|
|
42
|
-
// Get recent blockhash
|
|
43
|
-
const { blockhash } = await connection.getLatestBlockhash("confirmed");
|
|
44
|
-
// Set facilitator as fee payer for gas-free transactions!
|
|
45
|
-
const facilitatorPublicKey = new PublicKey("2wKupLR9q6wXYppw8Gr2NvWxKBUqm4PPJKkQfoxHDBg4");
|
|
46
|
-
// Create VersionedTransaction (x402 standard)
|
|
47
|
-
const message = new TransactionMessage({
|
|
48
|
-
payerKey: facilitatorPublicKey,
|
|
49
|
-
recentBlockhash: blockhash,
|
|
50
|
-
instructions,
|
|
51
|
-
}).compileToV0Message();
|
|
52
|
-
const transaction = new VersionedTransaction(message);
|
|
53
|
-
// Find which signature slot corresponds to the user's public key
|
|
54
|
-
// The facilitator is at index 0 (fee payer), user is at a different index
|
|
55
|
-
const userPubkey = payer.publicKey;
|
|
56
|
-
const staticAccountKeys = transaction.message.staticAccountKeys;
|
|
57
|
-
const userSignatureIndex = staticAccountKeys.findIndex((key) => key.equals(userPubkey));
|
|
58
|
-
// Sign with user's wallet (facilitator will add its signature)
|
|
59
|
-
transaction.sign([payer]);
|
|
60
|
-
// Serialize transaction
|
|
61
|
-
const serialized = transaction.serialize();
|
|
62
|
-
const serializedTx = Buffer.from(serialized).toString("base64");
|
|
63
|
-
// Extract the user's signature from the correct slot (bs58 encoded)
|
|
64
|
-
const bs58 = await import("bs58");
|
|
65
|
-
const userSignature = userSignatureIndex >= 0 &&
|
|
66
|
-
transaction.signatures?.[userSignatureIndex] &&
|
|
67
|
-
!transaction.signatures[userSignatureIndex].every((b) => b === 0)
|
|
68
|
-
? bs58.default.encode(transaction.signatures[userSignatureIndex])
|
|
69
|
-
: undefined;
|
|
70
|
-
// Create X-PAYMENT header in x402 format (minimal format matching agent-to-agent)
|
|
71
|
-
// This matches the exact format from @payai/x402-solana
|
|
72
|
-
const paymentPayload = {
|
|
73
|
-
x402Version: 1,
|
|
74
|
-
scheme: scheme,
|
|
75
|
-
network: network,
|
|
76
|
-
payload: {
|
|
77
|
-
transaction: serializedTx,
|
|
78
|
-
signature: userSignature, // Include signature for reference (optional)
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
// Encode as base64
|
|
82
|
-
const paymentHeader = Buffer.from(JSON.stringify(paymentPayload)).toString("base64");
|
|
83
|
-
return { transaction, signature: paymentHeader };
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
console.error("Error creating payment transaction:", error);
|
|
87
|
-
throw new Error(`Failed to create payment: ${error instanceof Error ? error.message : String(error)}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get USDC balance for a wallet
|
|
92
|
-
*/
|
|
93
|
-
export async function getUsdcBalance(connection, keypair) {
|
|
94
|
-
try {
|
|
95
|
-
const tokenAccount = await getAssociatedTokenAddress(USDC_MINT, keypair.publicKey, true, // allowOwnerOffCurve - critical for wallet adapter keys!
|
|
96
|
-
TOKEN_PROGRAM_ID);
|
|
97
|
-
const balance = await connection.getTokenAccountBalance(tokenAccount);
|
|
98
|
-
return parseFloat(balance.value.uiAmount?.toString() || "0");
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
// Token account doesn't exist or other error
|
|
102
|
-
return 0;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=x402Client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/lib/x402Client.ts"],"names":[],"mappings":"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"}
|