aether-agent-sdk 2.1.3 → 3.0.1
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 +8 -3
- package/dist/src/agents/SettlementAgent.d.ts +3 -0
- package/dist/src/agents/SettlementAgent.d.ts.map +1 -1
- package/dist/src/agents/SettlementAgent.js +58 -44
- package/dist/src/agents/SettlementAgent.js.map +1 -1
- package/dist/src/facilitator/X402FacilitatorServer.d.ts +8 -0
- package/dist/src/facilitator/X402FacilitatorServer.d.ts.map +1 -1
- package/dist/src/facilitator/X402FacilitatorServer.js +202 -74
- package/dist/src/facilitator/X402FacilitatorServer.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/marketplace/MarketplaceConsumer.d.ts +3 -1
- package/dist/src/marketplace/MarketplaceConsumer.d.ts.map +1 -1
- package/dist/src/marketplace/MarketplaceConsumer.js +34 -30
- package/dist/src/marketplace/MarketplaceConsumer.js.map +1 -1
- package/dist/src/marketplace/MarketplaceProvider.d.ts +2 -1
- package/dist/src/marketplace/MarketplaceProvider.d.ts.map +1 -1
- package/dist/src/marketplace/MarketplaceProvider.js +26 -24
- package/dist/src/marketplace/MarketplaceProvider.js.map +1 -1
- package/dist/src/utils/index.d.ts +4 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +12 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/logger.d.ts +7 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +27 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/solana.d.ts +11 -0
- package/dist/src/utils/solana.d.ts.map +1 -0
- package/dist/src/utils/solana.js +33 -0
- package/dist/src/utils/solana.js.map +1 -0
- package/dist/src/utils/wallet.d.ts +14 -0
- package/dist/src/utils/wallet.d.ts.map +1 -0
- package/dist/src/utils/wallet.js +85 -0
- package/dist/src/utils/wallet.js.map +1 -0
- package/package.json +4 -14
package/README.md
CHANGED
|
@@ -88,7 +88,7 @@ const paymentHeader = await agent.createSignedPayment(
|
|
|
88
88
|
|
|
89
89
|
See the complete working demo with AI weather agents:
|
|
90
90
|
|
|
91
|
-
👉 **[github.com/
|
|
91
|
+
👉 **[github.com/AETHER-SDK/aether-sdk-demo](https://github.com/AETHER-SDK/aether-sdk-demo)**
|
|
92
92
|
|
|
93
93
|
The demo shows:
|
|
94
94
|
- x402 payment-gated weather API
|
|
@@ -105,8 +105,13 @@ Create a `.env` file:
|
|
|
105
105
|
```env
|
|
106
106
|
SOLANA_NETWORK=devnet
|
|
107
107
|
SOLANA_RPC_URL=https://api.devnet.solana.com
|
|
108
|
-
|
|
108
|
+
# Preferred: path to keypair file generated by solana-keygen
|
|
109
|
+
AGENT_WALLET_PATH=./agent-wallet.json
|
|
110
|
+
# Or base58/JSON in SOLANA_WALLET / legacy AGENT_PRIVATE_KEY
|
|
111
|
+
SOLANA_WALLET=
|
|
112
|
+
# AGENT_PRIVATE_KEY=
|
|
109
113
|
MERCHANT_WALLET_ADDRESS=merchant_wallet
|
|
114
|
+
# Devnet USDC mint by default (mainnet: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v)
|
|
110
115
|
USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
|
|
111
116
|
DEFAULT_PAYMENT_AMOUNT_USDC=1.0
|
|
112
117
|
```
|
|
@@ -176,7 +181,7 @@ MIT License - see [LICENSE](./LICENSE) for details.
|
|
|
176
181
|
|
|
177
182
|
## 🔗 Links
|
|
178
183
|
|
|
179
|
-
- **GitHub**: [github.com/
|
|
184
|
+
- **GitHub**: [github.com/AETHER-SDK/aether-sdk](https://github.com/AETHER-SDK/aether-sdk)
|
|
180
185
|
- **Documentation**: [docs/](./docs/)
|
|
181
186
|
- **x402 Protocol**: [solana.com/x402](https://solana.com/x402/what-is-x402)
|
|
182
187
|
- **Solana Docs**: [solana.com/developers](https://solana.com/developers)
|
|
@@ -4,6 +4,9 @@ export declare class SettlementAgent {
|
|
|
4
4
|
private agentWallet?;
|
|
5
5
|
private facilitator;
|
|
6
6
|
private merchantWallet?;
|
|
7
|
+
private networkId;
|
|
8
|
+
private network;
|
|
9
|
+
private logger;
|
|
7
10
|
constructor(merchantWallet?: string);
|
|
8
11
|
triggerSettlement(verification: any): Promise<void>;
|
|
9
12
|
init(wallet?: Keypair): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettlementAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/SettlementAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,OAAO,EAAe,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"SettlementAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/SettlementAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,OAAO,EAAe,MAAM,iBAAiB,CAAA;AAU7E,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAQ;IAC/B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAkC;gBAEpC,cAAc,CAAC,EAAE,MAAM;IA0B7B,iBAAiB,CAAC,YAAY,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB3C;;OAEG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM;IAIxC,OAAO,CAAC,yBAAyB;YAqBnB,iBAAiB;IAsC/B,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACG,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA6FzF"}
|
|
@@ -7,18 +7,23 @@ exports.SettlementAgent = void 0;
|
|
|
7
7
|
const web3_js_1 = require("@solana/web3.js");
|
|
8
8
|
const spl_token_1 = require("@solana/spl-token");
|
|
9
9
|
const X402FacilitatorServer_1 = require("../facilitator/X402FacilitatorServer");
|
|
10
|
-
const
|
|
10
|
+
const solana_1 = require("../utils/solana");
|
|
11
|
+
const wallet_1 = require("../utils/wallet");
|
|
12
|
+
const logger_1 = require("../utils/logger");
|
|
11
13
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
12
|
-
const bs58_1 = __importDefault(require("bs58"));
|
|
13
14
|
dotenv_1.default.config();
|
|
14
15
|
class SettlementAgent {
|
|
15
16
|
connection;
|
|
16
17
|
agentWallet;
|
|
17
18
|
facilitator;
|
|
18
19
|
merchantWallet;
|
|
20
|
+
networkId;
|
|
21
|
+
network;
|
|
22
|
+
logger = (0, logger_1.createLogger)('SettlementAgent');
|
|
19
23
|
constructor(merchantWallet) {
|
|
20
|
-
const rpcUrl =
|
|
21
|
-
|
|
24
|
+
const { network, rpcUrl, networkId } = (0, solana_1.resolveSolanaNetwork)();
|
|
25
|
+
this.network = network;
|
|
26
|
+
this.networkId = networkId;
|
|
22
27
|
// Allow merchant wallet from parameter or env variable
|
|
23
28
|
if (merchantWallet) {
|
|
24
29
|
this.merchantWallet = merchantWallet;
|
|
@@ -28,19 +33,19 @@ class SettlementAgent {
|
|
|
28
33
|
}
|
|
29
34
|
this.connection = new web3_js_1.Connection(rpcUrl, 'confirmed');
|
|
30
35
|
this.facilitator = new X402FacilitatorServer_1.X402FacilitatorServer();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.agentWallet =
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
console.error(chalk_1.default.red('❌ Failed to load agent wallet:'), error);
|
|
36
|
+
try {
|
|
37
|
+
const { keypair } = (0, wallet_1.loadKeypairFromEnv)();
|
|
38
|
+
if (keypair) {
|
|
39
|
+
this.agentWallet = keypair;
|
|
40
|
+
this.logger.info(`Settlement Agent initialized with wallet ${this.agentWallet.publicKey.toBase58()}`);
|
|
39
41
|
}
|
|
40
42
|
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
this.logger.error('Failed to load agent wallet', error);
|
|
45
|
+
}
|
|
41
46
|
}
|
|
42
47
|
async triggerSettlement(verification) {
|
|
43
|
-
|
|
48
|
+
this.logger.info('Triggering settlement flow');
|
|
44
49
|
await this.executeSettlement(verification);
|
|
45
50
|
}
|
|
46
51
|
async init(wallet) {
|
|
@@ -48,19 +53,20 @@ class SettlementAgent {
|
|
|
48
53
|
// If a wallet is provided, use it instead of loading from env
|
|
49
54
|
if (wallet) {
|
|
50
55
|
this.agentWallet = wallet;
|
|
51
|
-
|
|
56
|
+
this.logger.info(`Settlement Agent initialized with provided wallet ${wallet.publicKey.toBase58()}`);
|
|
52
57
|
}
|
|
53
58
|
else if (!this.agentWallet) {
|
|
54
|
-
|
|
59
|
+
this.logger.warn('AGENT_PRIVATE_KEY not configured. Some features will be unavailable.');
|
|
55
60
|
}
|
|
56
61
|
const agentId = process.env.SETTLEMENT_AGENT_ID;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
this.logger.info('Initializing settlement agent');
|
|
63
|
+
this.logger.info('SettlementAgent ready');
|
|
64
|
+
this.logger.info(`Agent ID: ${agentId}`);
|
|
65
|
+
this.logger.info(`RPC URL: ${process.env.SOLANA_RPC_URL}`);
|
|
66
|
+
this.logger.info(`Network: ${this.network}`);
|
|
61
67
|
}
|
|
62
68
|
catch (error) {
|
|
63
|
-
|
|
69
|
+
this.logger.error('Failed to initialize SettlementAgent', error);
|
|
64
70
|
throw error;
|
|
65
71
|
}
|
|
66
72
|
}
|
|
@@ -78,7 +84,7 @@ class SettlementAgent {
|
|
|
78
84
|
const amountInMicroUsdc = Math.floor(paymentAmount * 1_000_000);
|
|
79
85
|
return {
|
|
80
86
|
scheme: 'exact',
|
|
81
|
-
network:
|
|
87
|
+
network: this.networkId,
|
|
82
88
|
asset: process.env.USDC_MINT || '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU',
|
|
83
89
|
payTo: this.merchantWallet,
|
|
84
90
|
maxAmountRequired: amountInMicroUsdc.toString(),
|
|
@@ -90,29 +96,30 @@ class SettlementAgent {
|
|
|
90
96
|
}
|
|
91
97
|
async executeSettlement(verification) {
|
|
92
98
|
try {
|
|
93
|
-
|
|
99
|
+
this.logger.info('Initiating settlement flow on Solana');
|
|
94
100
|
const requirements = this.createPaymentRequirements();
|
|
95
|
-
|
|
101
|
+
this.logger.info('Step 1: Creating payment authorization');
|
|
96
102
|
const paymentPayload = this.createPaymentPayload(requirements);
|
|
97
103
|
const paymentHeader = Buffer.from(JSON.stringify(paymentPayload)).toString('base64');
|
|
98
|
-
|
|
99
|
-
|
|
104
|
+
this.logger.debug('Payment payload structure', JSON.stringify(paymentPayload, null, 2));
|
|
105
|
+
this.logger.info('Step 2: Verifying payment');
|
|
100
106
|
const verificationResult = await this.facilitator.verify(paymentHeader, requirements);
|
|
101
107
|
if (!verificationResult.isValid) {
|
|
102
108
|
throw new Error(`Payment verification failed: ${verificationResult.invalidReason}`);
|
|
103
109
|
}
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
this.logger.info('Payment verification successful');
|
|
111
|
+
this.logger.info('Step 3: Settling payment and executing USDC transfer');
|
|
106
112
|
const settlementResult = await this.facilitator.settle(paymentHeader, requirements);
|
|
107
113
|
if (!settlementResult.success) {
|
|
108
114
|
throw new Error(`Payment settlement failed: ${settlementResult.error}`);
|
|
109
115
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
116
|
+
this.logger.info('Payment settled successfully');
|
|
117
|
+
if (settlementResult.txHash) {
|
|
118
|
+
this.logger.info(`Transaction signature: ${settlementResult.txHash}`);
|
|
119
|
+
}
|
|
113
120
|
}
|
|
114
121
|
catch (error) {
|
|
115
|
-
|
|
122
|
+
this.logger.error('Error executing settlement', error);
|
|
116
123
|
throw error;
|
|
117
124
|
}
|
|
118
125
|
}
|
|
@@ -131,7 +138,8 @@ class SettlementAgent {
|
|
|
131
138
|
to: requirements.payTo,
|
|
132
139
|
value: requirements.maxAmountRequired,
|
|
133
140
|
asset: requirements.asset,
|
|
134
|
-
validBefore: validBefore
|
|
141
|
+
validBefore: validBefore,
|
|
142
|
+
nonce: (0, solana_1.createNonce)()
|
|
135
143
|
}
|
|
136
144
|
}
|
|
137
145
|
};
|
|
@@ -144,9 +152,9 @@ class SettlementAgent {
|
|
|
144
152
|
if (!this.agentWallet) {
|
|
145
153
|
throw new Error('Agent wallet not initialized');
|
|
146
154
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
155
|
+
this.logger.info('Creating signed x402 payment');
|
|
156
|
+
this.logger.info(`Amount: ${amountUsdc} USDC`);
|
|
157
|
+
this.logger.info(`Recipient: ${recipientAddress}`);
|
|
150
158
|
const amountInMicroUsdc = Math.floor(amountUsdc * 1_000_000);
|
|
151
159
|
const recipientPubkey = new web3_js_1.PublicKey(recipientAddress);
|
|
152
160
|
const usdcMint = new web3_js_1.PublicKey(process.env.USDC_MINT || '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU');
|
|
@@ -155,43 +163,49 @@ class SettlementAgent {
|
|
|
155
163
|
// Get or create token accounts
|
|
156
164
|
const fromTokenAccount = await token.getOrCreateAssociatedAccountInfo(this.agentWallet.publicKey);
|
|
157
165
|
const toTokenAccount = await token.getOrCreateAssociatedAccountInfo(recipientPubkey);
|
|
158
|
-
|
|
159
|
-
|
|
166
|
+
this.logger.debug(`From: ${this.agentWallet.publicKey.toBase58()}`);
|
|
167
|
+
this.logger.debug(`To: ${recipientAddress}`);
|
|
160
168
|
// Create transfer instruction
|
|
161
169
|
const transferInstruction = spl_token_1.Token.createTransferInstruction(spl_token_1.TOKEN_PROGRAM_ID, fromTokenAccount.address, toTokenAccount.address, this.agentWallet.publicKey, [], amountInMicroUsdc);
|
|
162
170
|
// Create transaction
|
|
163
171
|
const transaction = new web3_js_1.Transaction().add(transferInstruction);
|
|
164
172
|
// Get recent blockhash
|
|
165
|
-
const { blockhash } = await this.connection.
|
|
173
|
+
const { blockhash, lastValidBlockHeight } = await this.connection.getLatestBlockhash('confirmed');
|
|
166
174
|
transaction.recentBlockhash = blockhash;
|
|
175
|
+
transaction.lastValidBlockHeight = lastValidBlockHeight;
|
|
167
176
|
transaction.feePayer = this.agentWallet.publicKey;
|
|
168
177
|
// Sign transaction
|
|
169
178
|
transaction.sign(this.agentWallet);
|
|
170
|
-
|
|
179
|
+
this.logger.info('Transaction signed');
|
|
171
180
|
// Create x402 payload with signed transaction
|
|
172
181
|
const validBefore = Math.floor(Date.now() / 1000) + 300; // 5 minutes
|
|
173
182
|
const paymentPayload = {
|
|
174
183
|
x402Version: 1,
|
|
175
184
|
scheme: 'exact',
|
|
176
|
-
network:
|
|
185
|
+
network: this.networkId,
|
|
177
186
|
payload: {
|
|
178
187
|
authorization: {
|
|
179
188
|
from: this.agentWallet.publicKey.toBase58(),
|
|
180
189
|
to: recipientAddress,
|
|
181
190
|
value: amountInMicroUsdc.toString(),
|
|
182
191
|
asset: usdcMint.toBase58(),
|
|
183
|
-
validBefore: validBefore
|
|
192
|
+
validBefore: validBefore,
|
|
193
|
+
nonce: (0, solana_1.createNonce)()
|
|
184
194
|
},
|
|
185
|
-
signedTransaction: transaction.serialize().toString('base64')
|
|
195
|
+
signedTransaction: transaction.serialize().toString('base64'),
|
|
196
|
+
transactionMeta: {
|
|
197
|
+
blockhash,
|
|
198
|
+
lastValidBlockHeight
|
|
199
|
+
}
|
|
186
200
|
}
|
|
187
201
|
};
|
|
188
202
|
// Encode to base64
|
|
189
203
|
const paymentHeader = Buffer.from(JSON.stringify(paymentPayload)).toString('base64');
|
|
190
|
-
|
|
204
|
+
this.logger.info('x402 payment created (signed transaction included)');
|
|
191
205
|
return paymentHeader;
|
|
192
206
|
}
|
|
193
207
|
catch (error) {
|
|
194
|
-
|
|
208
|
+
this.logger.error('Error creating signed payment', error);
|
|
195
209
|
throw error;
|
|
196
210
|
}
|
|
197
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettlementAgent.js","sourceRoot":"","sources":["../../../src/agents/SettlementAgent.ts"],"names":[],"mappings":";;;;;;AAAA,6CAA6E;AAC7E,iDAA2D;AAC3D,gFAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"SettlementAgent.js","sourceRoot":"","sources":["../../../src/agents/SettlementAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,19 @@ export declare class X402FacilitatorServer {
|
|
|
2
2
|
private connection;
|
|
3
3
|
private agentWallet?;
|
|
4
4
|
private usdcMint;
|
|
5
|
+
private networkId;
|
|
6
|
+
private seenNonces;
|
|
7
|
+
private logger;
|
|
5
8
|
constructor();
|
|
6
9
|
verify(paymentHeader: string, paymentRequirements: any): Promise<any>;
|
|
7
10
|
private validatePaymentLocally;
|
|
8
11
|
settle(paymentHeader: string, paymentRequirements: any): Promise<any>;
|
|
9
12
|
private executeUSDCTransfer;
|
|
13
|
+
private validateMintDecimals;
|
|
14
|
+
private cleanupNonces;
|
|
15
|
+
private validateSignedTransaction;
|
|
16
|
+
private readU64;
|
|
17
|
+
private sendTransactionWithRetry;
|
|
10
18
|
getSupportedSchemes(): {
|
|
11
19
|
kinds: Array<{
|
|
12
20
|
scheme: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"X402FacilitatorServer.d.ts","sourceRoot":"","sources":["../../../src/facilitator/X402FacilitatorServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"X402FacilitatorServer.d.ts","sourceRoot":"","sources":["../../../src/facilitator/X402FacilitatorServer.ts"],"names":[],"mappings":"AASA,qBAAa,qBAAqB;IAChC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,MAAM,CAAkC;;IAwB1C,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAwB7D,sBAAsB;IAwF9B,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAuC7D,mBAAmB;YAoFnB,oBAAoB;IAalC,OAAO,CAAC,aAAa;YASP,yBAAyB;IA6DvC,OAAO,CAAC,OAAO;YAID,wBAAwB;IAqCtC,mBAAmB,IAAI;QAAE,KAAK,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;CAO7E"}
|