x402-agent-pay 2.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/LICENSE +21 -0
- package/README.md +403 -0
- package/SKILL.md +125 -0
- package/dist/scripts/generate-pdf.d.ts +6 -0
- package/dist/scripts/generate-pdf.d.ts.map +1 -0
- package/dist/scripts/generate-pdf.js +179 -0
- package/dist/scripts/generate-pdf.js.map +1 -0
- package/dist/scripts/x402-fetch.d.ts +7 -0
- package/dist/scripts/x402-fetch.d.ts.map +1 -0
- package/dist/scripts/x402-fetch.js +162 -0
- package/dist/scripts/x402-fetch.js.map +1 -0
- package/dist/src/balance.d.ts +29 -0
- package/dist/src/balance.d.ts.map +1 -0
- package/dist/src/balance.js +94 -0
- package/dist/src/balance.js.map +1 -0
- package/dist/src/client.d.ts +90 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +235 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/config.d.ts +91 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +58 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/discovery.d.ts +98 -0
- package/dist/src/discovery.d.ts.map +1 -0
- package/dist/src/discovery.js +156 -0
- package/dist/src/discovery.js.map +1 -0
- package/dist/src/facilitator.d.ts +30 -0
- package/dist/src/facilitator.d.ts.map +1 -0
- package/dist/src/facilitator.js +50 -0
- package/dist/src/facilitator.js.map +1 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +52 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcp-server.d.ts +16 -0
- package/dist/src/mcp-server.d.ts.map +1 -0
- package/dist/src/mcp-server.js +268 -0
- package/dist/src/mcp-server.js.map +1 -0
- package/dist/src/policy.d.ts +73 -0
- package/dist/src/policy.d.ts.map +1 -0
- package/dist/src/policy.js +271 -0
- package/dist/src/policy.js.map +1 -0
- package/dist/src/receipts.d.ts +52 -0
- package/dist/src/receipts.d.ts.map +1 -0
- package/dist/src/receipts.js +134 -0
- package/dist/src/receipts.js.map +1 -0
- package/mcp.json +41 -0
- package/package.json +65 -0
- package/registry.json +96 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
#!/usr/bin/env npx ts-node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Generate PDF summary of x402-agent-pay
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
const pdfkit_1 = __importDefault(require("pdfkit"));
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const doc = new pdfkit_1.default({
|
|
46
|
+
size: 'A4',
|
|
47
|
+
margins: { top: 50, bottom: 50, left: 50, right: 50 }
|
|
48
|
+
});
|
|
49
|
+
const outputPath = process.argv[2] || './x402-agent-pay-summary.pdf';
|
|
50
|
+
doc.pipe(fs.createWriteStream(outputPath));
|
|
51
|
+
// Colors
|
|
52
|
+
const blue = '#0066cc';
|
|
53
|
+
const gray = '#666666';
|
|
54
|
+
const darkGray = '#333333';
|
|
55
|
+
// Header
|
|
56
|
+
doc.fontSize(28).fillColor(blue).text('💸 x402-agent-pay', { align: 'center' });
|
|
57
|
+
doc.moveDown(0.3);
|
|
58
|
+
doc.fontSize(14).fillColor(gray).text('Seamless USDC payments for AI agents using the x402 protocol', { align: 'center' });
|
|
59
|
+
doc.moveDown(0.5);
|
|
60
|
+
doc.fontSize(10).fillColor(blue).text('MIT License | x402 Protocol | USDC Hackathon 2026', { align: 'center' });
|
|
61
|
+
doc.moveDown(1);
|
|
62
|
+
// Horizontal line
|
|
63
|
+
doc.moveTo(50, doc.y).lineTo(545, doc.y).strokeColor(blue).lineWidth(2).stroke();
|
|
64
|
+
doc.moveDown(1);
|
|
65
|
+
// Executive Summary
|
|
66
|
+
doc.fontSize(16).fillColor(blue).text('📋 Executive Summary');
|
|
67
|
+
doc.moveDown(0.5);
|
|
68
|
+
doc.fontSize(11).fillColor(darkGray).text('x402-agent-pay is a TypeScript library that enables autonomous AI agents to make USDC payments automatically when encountering paid APIs (HTTP 402 responses). Built on Coinbase\'s official @x402/fetch SDK, it adds critical safety guardrails that prevent wallet drain from bugs, prompt injections, or infinite loops.', { align: 'justify' });
|
|
69
|
+
doc.moveDown(1);
|
|
70
|
+
// Key Value Prop box
|
|
71
|
+
doc.rect(50, doc.y, 495, 50).fillColor('#fff3cd').fill();
|
|
72
|
+
doc.fillColor(darkGray).fontSize(10);
|
|
73
|
+
doc.text('Key Value Proposition: Purpose-built for autonomous OpenClaw agents with spending controls, velocity limits, and full audit trails — the missing safety layer between AI agents and real money.', 60, doc.y - 40, { width: 475 });
|
|
74
|
+
doc.moveDown(1.5);
|
|
75
|
+
// Problem & Solution
|
|
76
|
+
doc.fontSize(16).fillColor(blue).text('🎯 Problem & Solution');
|
|
77
|
+
doc.moveDown(0.5);
|
|
78
|
+
doc.fontSize(12).fillColor(darkGray).text('The Problem:', { continued: false });
|
|
79
|
+
doc.fontSize(11).fillColor(gray);
|
|
80
|
+
doc.list([
|
|
81
|
+
'Bugs can trigger infinite payment loops',
|
|
82
|
+
'Prompt injections can redirect payments to attackers',
|
|
83
|
+
'No visibility into what agents are spending',
|
|
84
|
+
'No way to set spending limits or control recipients'
|
|
85
|
+
], { bulletRadius: 2, textIndent: 20 });
|
|
86
|
+
doc.moveDown(0.5);
|
|
87
|
+
doc.fontSize(12).fillColor(darkGray).text('The Solution:', { continued: false });
|
|
88
|
+
doc.fontSize(11).fillColor(gray).text('x402-agent-pay wraps the official Coinbase SDK with policy enforcement that happens before any payment is signed.');
|
|
89
|
+
doc.moveDown(1);
|
|
90
|
+
// Key Features
|
|
91
|
+
doc.fontSize(16).fillColor(blue).text('✨ Key Features');
|
|
92
|
+
doc.moveDown(0.5);
|
|
93
|
+
doc.fontSize(11).fillColor(darkGray);
|
|
94
|
+
doc.text('🛡️ Spending Controls', { continued: true }).fillColor(gray).text(' — Per-transaction, daily, weekly, monthly limits');
|
|
95
|
+
doc.fillColor(darkGray).text('⚡ Velocity Limits', { continued: true }).fillColor(gray).text(' — Max transactions per hour to prevent loops');
|
|
96
|
+
doc.fillColor(darkGray).text('📋 Recipient Controls', { continued: true }).fillColor(gray).text(' — Whitelist + blacklist for approved addresses');
|
|
97
|
+
doc.fillColor(darkGray).text('📜 Audit Trail', { continued: true }).fillColor(gray).text(' — Every payment attempt logged with full details');
|
|
98
|
+
doc.fillColor(darkGray).text('🔌 Official SDK', { continued: true }).fillColor(gray).text(' — Built on Coinbase\'s @x402/fetch');
|
|
99
|
+
doc.moveDown(1);
|
|
100
|
+
// Feature Comparison Table
|
|
101
|
+
doc.fontSize(16).fillColor(blue).text('📊 Feature Comparison');
|
|
102
|
+
doc.moveDown(0.5);
|
|
103
|
+
const tableTop = doc.y;
|
|
104
|
+
const tableLeft = 50;
|
|
105
|
+
const colWidths = [180, 120, 195];
|
|
106
|
+
const rowHeight = 25;
|
|
107
|
+
// Table header
|
|
108
|
+
doc.rect(tableLeft, tableTop, 495, rowHeight).fillColor('#f5f5f5').fill();
|
|
109
|
+
doc.fillColor(darkGray).fontSize(10);
|
|
110
|
+
doc.text('Feature', tableLeft + 5, tableTop + 8);
|
|
111
|
+
doc.text('Raw @x402/fetch', tableLeft + colWidths[0] + 5, tableTop + 8);
|
|
112
|
+
doc.text('x402-agent-pay', tableLeft + colWidths[0] + colWidths[1] + 5, tableTop + 8);
|
|
113
|
+
// Table rows
|
|
114
|
+
const rows = [
|
|
115
|
+
['Auto-402 handling', '✅', '✅'],
|
|
116
|
+
['Spending limits', '❌', '✅ Per-tx, daily, weekly, monthly'],
|
|
117
|
+
['Velocity limits', '❌', '✅ Max tx/hour'],
|
|
118
|
+
['Recipient controls', '❌', '✅ Whitelist + blacklist'],
|
|
119
|
+
['Receipt logging', '❌', '✅ Full audit trail'],
|
|
120
|
+
['Policy enforcement', '❌', '✅ Block before signing'],
|
|
121
|
+
];
|
|
122
|
+
let yPos = tableTop + rowHeight;
|
|
123
|
+
rows.forEach(row => {
|
|
124
|
+
doc.fillColor(gray).fontSize(9);
|
|
125
|
+
doc.text(row[0], tableLeft + 5, yPos + 8);
|
|
126
|
+
doc.text(row[1], tableLeft + colWidths[0] + 5, yPos + 8);
|
|
127
|
+
doc.text(row[2], tableLeft + colWidths[0] + colWidths[1] + 5, yPos + 8);
|
|
128
|
+
yPos += rowHeight;
|
|
129
|
+
});
|
|
130
|
+
// Draw table borders
|
|
131
|
+
doc.strokeColor('#ddd').lineWidth(0.5);
|
|
132
|
+
for (let i = 0; i <= rows.length + 1; i++) {
|
|
133
|
+
doc.moveTo(tableLeft, tableTop + i * rowHeight).lineTo(tableLeft + 495, tableTop + i * rowHeight).stroke();
|
|
134
|
+
}
|
|
135
|
+
doc.moveTo(tableLeft, tableTop).lineTo(tableLeft, yPos).stroke();
|
|
136
|
+
doc.moveTo(tableLeft + colWidths[0], tableTop).lineTo(tableLeft + colWidths[0], yPos).stroke();
|
|
137
|
+
doc.moveTo(tableLeft + colWidths[0] + colWidths[1], tableTop).lineTo(tableLeft + colWidths[0] + colWidths[1], yPos).stroke();
|
|
138
|
+
doc.moveTo(tableLeft + 495, tableTop).lineTo(tableLeft + 495, yPos).stroke();
|
|
139
|
+
doc.y = yPos + 15;
|
|
140
|
+
doc.moveDown(1);
|
|
141
|
+
// Technical Stack
|
|
142
|
+
doc.fontSize(16).fillColor(blue).text('🔧 Technical Stack');
|
|
143
|
+
doc.moveDown(0.5);
|
|
144
|
+
doc.fontSize(10).fillColor(gray);
|
|
145
|
+
doc.list([
|
|
146
|
+
'Language: TypeScript',
|
|
147
|
+
'SDK: @x402/fetch, @x402/evm, @x402/core (official Coinbase)',
|
|
148
|
+
'Blockchain: viem for Ethereum interactions',
|
|
149
|
+
'Networks: Base, Ethereum, Arbitrum, Optimism, Polygon + testnets',
|
|
150
|
+
'Testing: 29 unit tests passing with Vitest'
|
|
151
|
+
], { bulletRadius: 2, textIndent: 20 });
|
|
152
|
+
doc.moveDown(1);
|
|
153
|
+
// Security
|
|
154
|
+
doc.fontSize(16).fillColor(blue).text('🔐 Security Model');
|
|
155
|
+
doc.moveDown(0.5);
|
|
156
|
+
doc.fontSize(10).fillColor(gray);
|
|
157
|
+
doc.list([
|
|
158
|
+
'Private keys never logged or transmitted',
|
|
159
|
+
'Policy enforcement happens before any transaction is signed',
|
|
160
|
+
'Blacklist checked before whitelist (security priority)',
|
|
161
|
+
'Full audit trail enables post-hoc review',
|
|
162
|
+
'Built on audited Coinbase SDK infrastructure'
|
|
163
|
+
], { bulletRadius: 2, textIndent: 20 });
|
|
164
|
+
doc.moveDown(1);
|
|
165
|
+
// Links
|
|
166
|
+
doc.fontSize(16).fillColor(blue).text('🔗 Links');
|
|
167
|
+
doc.moveDown(0.5);
|
|
168
|
+
doc.fontSize(10).fillColor(blue);
|
|
169
|
+
doc.text('GitHub: https://github.com/Omnivalent/x402-agent-pay');
|
|
170
|
+
doc.text('x402 Protocol: https://x402.org');
|
|
171
|
+
doc.text('Coinbase SDK: https://github.com/coinbase/x402');
|
|
172
|
+
doc.moveDown(1);
|
|
173
|
+
// Footer
|
|
174
|
+
doc.moveTo(50, doc.y).lineTo(545, doc.y).strokeColor('#ddd').lineWidth(1).stroke();
|
|
175
|
+
doc.moveDown(0.5);
|
|
176
|
+
doc.fontSize(10).fillColor(gray).text('Built by ClawMD 🩺 | February 2026 | MIT License', { align: 'center' });
|
|
177
|
+
doc.end();
|
|
178
|
+
console.log(`PDF generated: ${outputPath}`);
|
|
179
|
+
//# sourceMappingURL=generate-pdf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-pdf.js","sourceRoot":"","sources":["../../scripts/generate-pdf.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-fetch.d.ts","sourceRoot":"","sources":["../../scripts/x402-fetch.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
#!/usr/bin/env npx ts-node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* CLI for x402-agent-pay
|
|
5
|
+
* Make payment-enabled HTTP requests with policy enforcement
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const client_1 = require("../src/client");
|
|
9
|
+
const balance_1 = require("../src/balance");
|
|
10
|
+
const config_1 = require("../src/config");
|
|
11
|
+
const args = process.argv.slice(2);
|
|
12
|
+
function printUsage() {
|
|
13
|
+
console.log(`
|
|
14
|
+
x402-agent-pay CLI
|
|
15
|
+
|
|
16
|
+
Usage:
|
|
17
|
+
x402-fetch.ts <url> [options] Make a payment-enabled request
|
|
18
|
+
x402-fetch.ts balance <wallet> Check USDC balance
|
|
19
|
+
x402-fetch.ts status Show spending status
|
|
20
|
+
x402-fetch.ts history [limit] Show payment history
|
|
21
|
+
|
|
22
|
+
Options:
|
|
23
|
+
--method <METHOD> HTTP method (default: GET)
|
|
24
|
+
--body <JSON> Request body
|
|
25
|
+
--network <NETWORK> Network: base, ethereum, arbitrum, optimism, polygon, baseSepolia
|
|
26
|
+
--dry-run Show payment details without paying
|
|
27
|
+
--skip-policy Skip policy checks (dangerous!)
|
|
28
|
+
--max-per-tx <USD> Override max per transaction (default: ${config_1.DEFAULT_POLICY.maxPerTransaction})
|
|
29
|
+
--daily-limit <USD> Override daily limit (default: ${config_1.DEFAULT_POLICY.dailyLimit})
|
|
30
|
+
|
|
31
|
+
Environment:
|
|
32
|
+
WALLET_PRIVATE_KEY Required: Your wallet private key (0x...)
|
|
33
|
+
|
|
34
|
+
Examples:
|
|
35
|
+
# Make a paid request
|
|
36
|
+
x402-fetch.ts https://api.example.com/paid-endpoint
|
|
37
|
+
|
|
38
|
+
# Check balance on Base
|
|
39
|
+
x402-fetch.ts balance 0xYourWallet --network base
|
|
40
|
+
|
|
41
|
+
# Custom limits
|
|
42
|
+
x402-fetch.ts https://api.example.com/data --max-per-tx 5 --daily-limit 50
|
|
43
|
+
`);
|
|
44
|
+
}
|
|
45
|
+
async function main() {
|
|
46
|
+
if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
|
|
47
|
+
printUsage();
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
const privateKey = process.env.WALLET_PRIVATE_KEY;
|
|
51
|
+
if (!privateKey && args[0] !== 'balance') {
|
|
52
|
+
console.error('Error: WALLET_PRIVATE_KEY environment variable is required');
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
const command = args[0];
|
|
56
|
+
// Balance command
|
|
57
|
+
if (command === 'balance') {
|
|
58
|
+
const wallet = args[1];
|
|
59
|
+
if (!wallet) {
|
|
60
|
+
console.error('Error: wallet address required');
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
const networkIdx = args.indexOf('--network');
|
|
64
|
+
const network = (networkIdx > -1 ? args[networkIdx + 1] : 'base');
|
|
65
|
+
const result = await (0, balance_1.checkBalance)(wallet, network);
|
|
66
|
+
console.log(`\n💰 Balance for ${wallet} on ${network}:`);
|
|
67
|
+
console.log(` ${result.balanceUsdc} USDC`);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Status command
|
|
71
|
+
if (command === 'status') {
|
|
72
|
+
const client = new client_1.AgentPayClient({ privateKey: privateKey });
|
|
73
|
+
const status = client.getSpendingStatus();
|
|
74
|
+
console.log('\n📊 Spending Status:');
|
|
75
|
+
console.log(` Today: $${status.daily.spent.toFixed(2)} spent (${status.daily.transactions} transactions)`);
|
|
76
|
+
console.log(` Remaining: $${status.daily.remaining.toFixed(2)} of $${status.policy.dailyLimit.toFixed(2)} daily limit`);
|
|
77
|
+
console.log(` Max per tx: $${status.policy.maxPerTransaction.toFixed(2)}`);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// History command
|
|
81
|
+
if (command === 'history') {
|
|
82
|
+
const limit = parseInt(args[1]) || 10;
|
|
83
|
+
const client = new client_1.AgentPayClient({ privateKey: privateKey });
|
|
84
|
+
const history = client.getHistory(limit);
|
|
85
|
+
console.log(`\n📜 Last ${limit} payments:`);
|
|
86
|
+
if (history.length === 0) {
|
|
87
|
+
console.log(' No payments recorded yet.');
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
for (const r of history) {
|
|
91
|
+
const status = r.status === 'success' ? '✅' : r.status === 'blocked' ? '🚫' : '⏳';
|
|
92
|
+
console.log(` ${status} ${r.timestamp} | ${r.amount} USDC | ${r.url.substring(0, 50)}...`);
|
|
93
|
+
if (r.txHash)
|
|
94
|
+
console.log(` tx: ${r.txHash}`);
|
|
95
|
+
if (r.blockReason)
|
|
96
|
+
console.log(` reason: ${r.blockReason}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// Default: fetch URL
|
|
102
|
+
const url = command;
|
|
103
|
+
// Parse options
|
|
104
|
+
const methodIdx = args.indexOf('--method');
|
|
105
|
+
const method = methodIdx > -1 ? args[methodIdx + 1] : 'GET';
|
|
106
|
+
const bodyIdx = args.indexOf('--body');
|
|
107
|
+
const body = bodyIdx > -1 ? args[bodyIdx + 1] : undefined;
|
|
108
|
+
const networkIdx = args.indexOf('--network');
|
|
109
|
+
const network = (networkIdx > -1 ? args[networkIdx + 1] : 'base');
|
|
110
|
+
const dryRun = args.includes('--dry-run');
|
|
111
|
+
const skipPolicy = args.includes('--skip-policy');
|
|
112
|
+
const maxPerTxIdx = args.indexOf('--max-per-tx');
|
|
113
|
+
const maxPerTransaction = maxPerTxIdx > -1 ? parseFloat(args[maxPerTxIdx + 1]) : config_1.DEFAULT_POLICY.maxPerTransaction;
|
|
114
|
+
const dailyLimitIdx = args.indexOf('--daily-limit');
|
|
115
|
+
const dailyLimit = dailyLimitIdx > -1 ? parseFloat(args[dailyLimitIdx + 1]) : config_1.DEFAULT_POLICY.dailyLimit;
|
|
116
|
+
console.log(`[x402] Requesting: ${method} ${url}`);
|
|
117
|
+
console.log(`[x402] Network: ${network}`);
|
|
118
|
+
console.log(`[x402] Policy: max $${maxPerTransaction}/tx, $${dailyLimit}/day`);
|
|
119
|
+
const client = new client_1.AgentPayClient({
|
|
120
|
+
privateKey: privateKey,
|
|
121
|
+
network,
|
|
122
|
+
policy: {
|
|
123
|
+
maxPerTransaction,
|
|
124
|
+
dailyLimit,
|
|
125
|
+
},
|
|
126
|
+
onPayment: (receipt) => {
|
|
127
|
+
console.log(`\n✅ Payment successful!`);
|
|
128
|
+
console.log(` Amount: ${receipt.amount} USDC`);
|
|
129
|
+
console.log(` Recipient: ${receipt.recipient}`);
|
|
130
|
+
if (receipt.txHash)
|
|
131
|
+
console.log(` TX: ${receipt.txHash}`);
|
|
132
|
+
},
|
|
133
|
+
onBlocked: (reason) => {
|
|
134
|
+
console.log(`\n🚫 Payment blocked: ${reason}`);
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
try {
|
|
138
|
+
const response = await client.fetch(url, {
|
|
139
|
+
method,
|
|
140
|
+
body,
|
|
141
|
+
headers: body ? { 'Content-Type': 'application/json' } : undefined,
|
|
142
|
+
}, {
|
|
143
|
+
network,
|
|
144
|
+
skipPolicyCheck: skipPolicy,
|
|
145
|
+
});
|
|
146
|
+
console.log(`[x402] Response: ${response.status} ${response.statusText}`);
|
|
147
|
+
const text = await response.text();
|
|
148
|
+
console.log('\n--- Response ---');
|
|
149
|
+
console.log(text.substring(0, 2000));
|
|
150
|
+
if (text.length > 2000)
|
|
151
|
+
console.log('... (truncated)');
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
if (error.name === 'PaymentBlockedError') {
|
|
155
|
+
console.error(`\n🚫 Payment blocked by policy: ${error.message}`);
|
|
156
|
+
process.exit(1);
|
|
157
|
+
}
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
main().catch(console.error);
|
|
162
|
+
//# sourceMappingURL=x402-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-fetch.js","sourceRoot":"","sources":["../../scripts/x402-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Balance checking utilities for x402 payments
|
|
3
|
+
*/
|
|
4
|
+
import { NetworkName } from './config';
|
|
5
|
+
export interface BalanceResult {
|
|
6
|
+
wallet: string;
|
|
7
|
+
network: NetworkName;
|
|
8
|
+
balanceRaw: bigint;
|
|
9
|
+
balanceUsdc: string;
|
|
10
|
+
sufficient: boolean;
|
|
11
|
+
requiredAmount?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get USDC address for a network
|
|
15
|
+
*/
|
|
16
|
+
export declare function getUsdcAddress(network: NetworkName): `0x${string}`;
|
|
17
|
+
/**
|
|
18
|
+
* Check USDC balance for a wallet on a specific network
|
|
19
|
+
*/
|
|
20
|
+
export declare function checkBalance(wallet: string, network?: NetworkName, requiredAmount?: string): Promise<BalanceResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Check if wallet has sufficient balance for a payment
|
|
23
|
+
*/
|
|
24
|
+
export declare function hasSufficientBalance(wallet: string, amount: string, network?: NetworkName): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* Get balances across all supported networks
|
|
27
|
+
*/
|
|
28
|
+
export declare function checkAllBalances(wallet: string): Promise<Record<NetworkName, BalanceResult>>;
|
|
29
|
+
//# sourceMappingURL=balance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/balance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAA0B,WAAW,EAAE,MAAM,UAAU,CAAC;AAY/D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,KAAK,MAAM,EAAE,CAMlE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAoB,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,CAAC,CAoCxB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAoB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAqB7C"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Balance checking utilities for x402 payments
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getUsdcAddress = getUsdcAddress;
|
|
7
|
+
exports.checkBalance = checkBalance;
|
|
8
|
+
exports.hasSufficientBalance = hasSufficientBalance;
|
|
9
|
+
exports.checkAllBalances = checkAllBalances;
|
|
10
|
+
const viem_1 = require("viem");
|
|
11
|
+
const config_1 = require("./config");
|
|
12
|
+
const ERC20_BALANCE_ABI = [
|
|
13
|
+
{
|
|
14
|
+
inputs: [{ name: 'account', type: 'address' }],
|
|
15
|
+
name: 'balanceOf',
|
|
16
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
17
|
+
stateMutability: 'view',
|
|
18
|
+
type: 'function',
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Get USDC address for a network
|
|
23
|
+
*/
|
|
24
|
+
function getUsdcAddress(network) {
|
|
25
|
+
const address = config_1.USDC_ADDRESSES[network];
|
|
26
|
+
if (!address) {
|
|
27
|
+
throw new Error(`Unsupported network: ${network}`);
|
|
28
|
+
}
|
|
29
|
+
return address;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check USDC balance for a wallet on a specific network
|
|
33
|
+
*/
|
|
34
|
+
async function checkBalance(wallet, network = 'base', requiredAmount) {
|
|
35
|
+
const chain = config_1.CHAINS[network];
|
|
36
|
+
if (!chain) {
|
|
37
|
+
throw new Error(`Unsupported network: ${network}`);
|
|
38
|
+
}
|
|
39
|
+
const client = (0, viem_1.createPublicClient)({
|
|
40
|
+
chain,
|
|
41
|
+
transport: (0, viem_1.http)(),
|
|
42
|
+
});
|
|
43
|
+
const usdcAddress = config_1.USDC_ADDRESSES[network];
|
|
44
|
+
const balanceRaw = await client.readContract({
|
|
45
|
+
address: usdcAddress,
|
|
46
|
+
abi: ERC20_BALANCE_ABI,
|
|
47
|
+
functionName: 'balanceOf',
|
|
48
|
+
args: [wallet],
|
|
49
|
+
});
|
|
50
|
+
const balanceUsdc = (0, viem_1.formatUnits)(balanceRaw, 6); // USDC has 6 decimals
|
|
51
|
+
let sufficient = true;
|
|
52
|
+
if (requiredAmount) {
|
|
53
|
+
const required = BigInt(Math.floor(parseFloat(requiredAmount) * 1e6));
|
|
54
|
+
sufficient = balanceRaw >= required;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
wallet,
|
|
58
|
+
network,
|
|
59
|
+
balanceRaw,
|
|
60
|
+
balanceUsdc,
|
|
61
|
+
sufficient,
|
|
62
|
+
requiredAmount,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if wallet has sufficient balance for a payment
|
|
67
|
+
*/
|
|
68
|
+
async function hasSufficientBalance(wallet, amount, network = 'base') {
|
|
69
|
+
const result = await checkBalance(wallet, network, amount);
|
|
70
|
+
return result.sufficient;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get balances across all supported networks
|
|
74
|
+
*/
|
|
75
|
+
async function checkAllBalances(wallet) {
|
|
76
|
+
const networks = ['base', 'ethereum', 'arbitrum', 'optimism', 'polygon'];
|
|
77
|
+
const results = {};
|
|
78
|
+
await Promise.all(networks.map(async (network) => {
|
|
79
|
+
try {
|
|
80
|
+
results[network] = await checkBalance(wallet, network);
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
results[network] = {
|
|
84
|
+
wallet,
|
|
85
|
+
network,
|
|
86
|
+
balanceRaw: 0n,
|
|
87
|
+
balanceUsdc: '0',
|
|
88
|
+
sufficient: false,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}));
|
|
92
|
+
return results;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=balance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/balance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* x402 Agent Pay Client
|
|
3
|
+
* Wraps official @x402/fetch with spending controls and receipt tracking
|
|
4
|
+
*/
|
|
5
|
+
import { AgentPayConfig, PaymentReceipt, NetworkName } from './config';
|
|
6
|
+
export interface PaymentDetails {
|
|
7
|
+
amount: string;
|
|
8
|
+
amountRaw: string;
|
|
9
|
+
recipient: string;
|
|
10
|
+
network: NetworkName;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Agent Pay Client with policy enforcement
|
|
14
|
+
*/
|
|
15
|
+
export declare class AgentPayClient {
|
|
16
|
+
private fetchWithPayment;
|
|
17
|
+
private policy;
|
|
18
|
+
private receipts;
|
|
19
|
+
private config;
|
|
20
|
+
private account;
|
|
21
|
+
private protocolFeesEnabled;
|
|
22
|
+
constructor(config: AgentPayConfig);
|
|
23
|
+
/**
|
|
24
|
+
* Transfer protocol fee to x402-agent-pay maintainers
|
|
25
|
+
* Called automatically after each successful payment
|
|
26
|
+
*/
|
|
27
|
+
private transferProtocolFee;
|
|
28
|
+
/**
|
|
29
|
+
* Get wallet address
|
|
30
|
+
*/
|
|
31
|
+
getAddress(): string;
|
|
32
|
+
/**
|
|
33
|
+
* Make a payment-enabled request with policy enforcement
|
|
34
|
+
*/
|
|
35
|
+
fetch(url: string, init?: RequestInit, options?: {
|
|
36
|
+
skipPolicyCheck?: boolean;
|
|
37
|
+
network?: NetworkName;
|
|
38
|
+
}): Promise<Response>;
|
|
39
|
+
/**
|
|
40
|
+
* Get spending status
|
|
41
|
+
*/
|
|
42
|
+
getSpendingStatus(): {
|
|
43
|
+
daily: {
|
|
44
|
+
spent: number;
|
|
45
|
+
limit: number;
|
|
46
|
+
remaining: number;
|
|
47
|
+
transactions: number;
|
|
48
|
+
};
|
|
49
|
+
weekly?: {
|
|
50
|
+
spent: number;
|
|
51
|
+
limit: number;
|
|
52
|
+
remaining: number;
|
|
53
|
+
};
|
|
54
|
+
monthly?: {
|
|
55
|
+
spent: number;
|
|
56
|
+
limit: number;
|
|
57
|
+
remaining: number;
|
|
58
|
+
};
|
|
59
|
+
velocity?: {
|
|
60
|
+
count: number;
|
|
61
|
+
limit: number;
|
|
62
|
+
remaining: number;
|
|
63
|
+
};
|
|
64
|
+
policy: import("./config").PaymentPolicy;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Get payment history
|
|
68
|
+
*/
|
|
69
|
+
getHistory(limit?: number): PaymentReceipt[];
|
|
70
|
+
/**
|
|
71
|
+
* Get today's receipts
|
|
72
|
+
*/
|
|
73
|
+
getTodayReceipts(): PaymentReceipt[];
|
|
74
|
+
/**
|
|
75
|
+
* Export receipts as CSV
|
|
76
|
+
*/
|
|
77
|
+
exportReceiptsCsv(): string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Error thrown when payment is blocked by policy
|
|
81
|
+
*/
|
|
82
|
+
export declare class PaymentBlockedError extends Error {
|
|
83
|
+
receipt: PaymentReceipt;
|
|
84
|
+
constructor(reason: string, receipt: PaymentReceipt);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create a simple wrapped fetch (no policy, direct SDK usage)
|
|
88
|
+
*/
|
|
89
|
+
export declare function createSimpleFetch(privateKey: string): typeof fetch;
|
|
90
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EAOZ,MAAM,UAAU,CAAC;AAIlB,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,mBAAmB,CAAU;gBAEzB,MAAM,EAAE,cAAc;IAkBlC;;;OAGG;YACW,mBAAmB;IA8DjC;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACG,KAAK,CACT,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE,GAC7D,OAAO,CAAC,QAAQ,CAAC;IAoGpB;;OAEG;IACH,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;IAIjB;;OAEG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM;IAIzB;;OAEG;IACH,gBAAgB;IAIhB;;OAEG;IACH,iBAAiB,IAAI,MAAM;CAG5B;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IACrC,OAAO,EAAE,cAAc,CAAC;gBAEnB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;CAKpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,KAAK,CAWlE"}
|