@apify/mcpc 0.3.0 → 0.3.1-beta.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 +24 -1
- package/README.md +171 -48
- package/dist/bridge/index.js +32 -40
- package/dist/bridge/index.js.map +1 -1
- package/dist/cli/commands/clean.d.ts.map +1 -1
- package/dist/cli/commands/clean.js +3 -2
- package/dist/cli/commands/clean.js.map +1 -1
- package/dist/cli/commands/logs.d.ts +8 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +143 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/sessions.d.ts +6 -4
- package/dist/cli/commands/sessions.d.ts.map +1 -1
- package/dist/cli/commands/sessions.js +141 -85
- package/dist/cli/commands/sessions.js.map +1 -1
- package/dist/cli/commands/skills.d.ts +20 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +160 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/x402.d.ts.map +1 -1
- package/dist/cli/commands/x402.js +14 -4
- package/dist/cli/commands/x402.js.map +1 -1
- package/dist/cli/index.js +113 -24
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +13 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +114 -20
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/parser.d.ts +1 -1
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +25 -2
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/shell.js.map +1 -1
- package/dist/core/capabilities.d.ts +3 -0
- package/dist/core/capabilities.d.ts.map +1 -0
- package/dist/core/capabilities.js +14 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/mcp-client.d.ts +4 -0
- package/dist/core/mcp-client.d.ts.map +1 -1
- package/dist/core/mcp-client.js +34 -12
- package/dist/core/mcp-client.js.map +1 -1
- package/dist/lib/bridge-client.d.ts +4 -1
- package/dist/lib/bridge-client.d.ts.map +1 -1
- package/dist/lib/bridge-client.js +29 -3
- package/dist/lib/bridge-client.js.map +1 -1
- package/dist/lib/bridge-manager.d.ts +2 -2
- package/dist/lib/bridge-manager.d.ts.map +1 -1
- package/dist/lib/bridge-manager.js +31 -15
- package/dist/lib/bridge-manager.js.map +1 -1
- package/dist/lib/cleanup.d.ts.map +1 -1
- package/dist/lib/cleanup.js +20 -19
- package/dist/lib/cleanup.js.map +1 -1
- package/dist/lib/config.d.ts +14 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +41 -27
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +0 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +2 -4
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/log-reader.d.ts +28 -0
- package/dist/lib/log-reader.d.ts.map +1 -0
- package/dist/lib/log-reader.js +278 -0
- package/dist/lib/log-reader.js.map +1 -0
- package/dist/lib/session-client.d.ts.map +1 -1
- package/dist/lib/session-client.js +3 -5
- package/dist/lib/session-client.js.map +1 -1
- package/dist/lib/stderr-tail.d.ts +10 -0
- package/dist/lib/stderr-tail.d.ts.map +1 -0
- package/dist/lib/stderr-tail.js +28 -0
- package/dist/lib/stderr-tail.js.map +1 -0
- package/dist/lib/types.d.ts +6 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +1 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +12 -2
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/x402/fetch-middleware.d.ts +3 -2
- package/dist/lib/x402/fetch-middleware.d.ts.map +1 -1
- package/dist/lib/x402/fetch-middleware.js +37 -24
- package/dist/lib/x402/fetch-middleware.js.map +1 -1
- package/dist/lib/x402/signer.d.ts +7 -1
- package/dist/lib/x402/signer.d.ts.map +1 -1
- package/dist/lib/x402/signer.js +249 -5
- package/dist/lib/x402/signer.js.map +1 -1
- package/docs/README.md +1 -0
- package/docs/claude-skill/SKILL.md +151 -117
- package/docs/examples/company-lookup.sh +6 -6
- package/docs/vhs/README.md +79 -0
- package/docs/vhs/grep.tape +56 -0
- package/docs/vhs/mcpc-demo.tape +179 -0
- package/docs/vhs/proxy.tape +69 -0
- package/docs/vhs/quickstart.tape +59 -0
- package/docs/vhs/scripting.tape +69 -0
- package/docs/vhs/tools.tape +66 -0
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/signer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/signer.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAQxD,eAAO,MAAM,YAAY,IAAI,CAAC;AAI9B,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAqGnD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAGpD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAE7C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,cAAc,CAAC,EAAE,MAAM,CAAC;IAQxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAEhC,sBAAsB,EAAE,MAAM,CAAC;IAE/B,IAAI,EAAE,MAAM,CAAC;IAEb,EAAE,EAAE,MAAM,CAAC;IAEX,SAAS,EAAE,MAAM,CAAC;IAElB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,IAAI,CAAC;CACjB;AAmDD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,qBAAqB,EAAE,EAChC,UAAU,GAAE,gBAAyB,GACpC,qBAAqB,GAAG,SAAS,CAWnC;AAUD,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,gBAAgB,GAAE,gBAAyB,GAC1C;IACD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,qBAAqB,CAAC;CAC/B,CAmCA;AAUD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAYrF"}
|
package/dist/lib/x402/signer.js
CHANGED
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
2
|
-
import { createWalletClient, http } from 'viem';
|
|
2
|
+
import { createPublicClient, createWalletClient, encodeFunctionData, getAddress, http, } from 'viem';
|
|
3
3
|
import { base, baseSepolia } from 'viem/chains';
|
|
4
4
|
import { ClientError } from '../errors.js';
|
|
5
|
+
import { createLogger } from '../logger.js';
|
|
6
|
+
const logger = createLogger('x402-signer');
|
|
5
7
|
export const X402_VERSION = 2;
|
|
6
8
|
const USDC_DECIMALS = 6;
|
|
9
|
+
export const DEFAULT_PAYMENT_EXPIRY_SECONDS = 3600;
|
|
10
|
+
const PERMIT2_ADDRESS = '0x000000000022D473030F116dDEE9F6B43aC78BA3';
|
|
11
|
+
const X402_UPTO_PERMIT2_PROXY = '0x4020A4f3b7b90ccA423B9fabCc0CE57C6C240002';
|
|
12
|
+
const VALID_AFTER_CLOCK_SKEW_SECONDS = 600;
|
|
13
|
+
const MAX_UINT256 = BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');
|
|
14
|
+
const ERC20_ALLOWANCE_ABI = [
|
|
15
|
+
{
|
|
16
|
+
type: 'function',
|
|
17
|
+
name: 'allowance',
|
|
18
|
+
stateMutability: 'view',
|
|
19
|
+
inputs: [
|
|
20
|
+
{ name: 'owner', type: 'address' },
|
|
21
|
+
{ name: 'spender', type: 'address' },
|
|
22
|
+
],
|
|
23
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
const ERC20_APPROVE_ABI = [
|
|
27
|
+
{
|
|
28
|
+
type: 'function',
|
|
29
|
+
name: 'approve',
|
|
30
|
+
stateMutability: 'nonpayable',
|
|
31
|
+
inputs: [
|
|
32
|
+
{ name: 'spender', type: 'address' },
|
|
33
|
+
{ name: 'amount', type: 'uint256' },
|
|
34
|
+
],
|
|
35
|
+
outputs: [{ type: 'bool' }],
|
|
36
|
+
},
|
|
37
|
+
];
|
|
7
38
|
const TRANSFER_WITH_AUTHORIZATION_TYPES = {
|
|
8
39
|
TransferWithAuthorization: [
|
|
9
40
|
{ name: 'from', type: 'address' },
|
|
@@ -14,6 +45,24 @@ const TRANSFER_WITH_AUTHORIZATION_TYPES = {
|
|
|
14
45
|
{ name: 'nonce', type: 'bytes32' },
|
|
15
46
|
],
|
|
16
47
|
};
|
|
48
|
+
const UPTO_PERMIT2_WITNESS_TYPES = {
|
|
49
|
+
PermitWitnessTransferFrom: [
|
|
50
|
+
{ name: 'permitted', type: 'TokenPermissions' },
|
|
51
|
+
{ name: 'spender', type: 'address' },
|
|
52
|
+
{ name: 'nonce', type: 'uint256' },
|
|
53
|
+
{ name: 'deadline', type: 'uint256' },
|
|
54
|
+
{ name: 'witness', type: 'Witness' },
|
|
55
|
+
],
|
|
56
|
+
TokenPermissions: [
|
|
57
|
+
{ name: 'token', type: 'address' },
|
|
58
|
+
{ name: 'amount', type: 'uint256' },
|
|
59
|
+
],
|
|
60
|
+
Witness: [
|
|
61
|
+
{ name: 'to', type: 'address' },
|
|
62
|
+
{ name: 'facilitator', type: 'address' },
|
|
63
|
+
{ name: 'validAfter', type: 'uint256' },
|
|
64
|
+
],
|
|
65
|
+
};
|
|
17
66
|
const NETWORKS = {
|
|
18
67
|
[`eip155:${base.id}`]: {
|
|
19
68
|
chain: base,
|
|
@@ -33,7 +82,33 @@ function randomBytes32() {
|
|
|
33
82
|
crypto.getRandomValues(bytes);
|
|
34
83
|
return ('0x' + [...bytes].map((b) => b.toString(16).padStart(2, '0')).join(''));
|
|
35
84
|
}
|
|
36
|
-
|
|
85
|
+
function randomPermit2Nonce() {
|
|
86
|
+
const bytes = new Uint8Array(32);
|
|
87
|
+
crypto.getRandomValues(bytes);
|
|
88
|
+
const hex = '0x' + [...bytes].map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
89
|
+
return BigInt(hex).toString();
|
|
90
|
+
}
|
|
91
|
+
function isValidExactAccept(a) {
|
|
92
|
+
return a.scheme === 'exact' && Boolean(a.payTo && a.amount && a.network && a.asset);
|
|
93
|
+
}
|
|
94
|
+
function isValidUptoAccept(a) {
|
|
95
|
+
return (a.scheme === 'upto' &&
|
|
96
|
+
Boolean(a.payTo && a.amount && a.network && a.asset) &&
|
|
97
|
+
Boolean(a.extra?.facilitatorAddress));
|
|
98
|
+
}
|
|
99
|
+
export function selectAcceptEntry(accepts, preference = 'auto') {
|
|
100
|
+
if (preference === 'upto') {
|
|
101
|
+
return accepts.find(isValidUptoAccept);
|
|
102
|
+
}
|
|
103
|
+
if (preference === 'exact') {
|
|
104
|
+
return accepts.find(isValidExactAccept);
|
|
105
|
+
}
|
|
106
|
+
const upto = accepts.find(isValidUptoAccept);
|
|
107
|
+
if (upto)
|
|
108
|
+
return upto;
|
|
109
|
+
return accepts.find(isValidExactAccept);
|
|
110
|
+
}
|
|
111
|
+
export function parsePaymentRequired(base64Value, schemePreference = 'auto') {
|
|
37
112
|
let decoded;
|
|
38
113
|
try {
|
|
39
114
|
decoded = Buffer.from(base64Value, 'base64').toString('utf-8');
|
|
@@ -51,9 +126,11 @@ export function parsePaymentRequired(base64Value) {
|
|
|
51
126
|
if (!header.accepts || !Array.isArray(header.accepts) || header.accepts.length === 0) {
|
|
52
127
|
throw new ClientError('PAYMENT-REQUIRED header has no "accepts" entries.');
|
|
53
128
|
}
|
|
54
|
-
const accept = header.accepts
|
|
129
|
+
const accept = selectAcceptEntry(header.accepts, schemePreference);
|
|
55
130
|
if (!accept) {
|
|
56
|
-
|
|
131
|
+
const requested = schemePreference === 'auto' ? 'exact or upto' : schemePreference;
|
|
132
|
+
const available = header.accepts.map((a) => a.scheme).join(', ');
|
|
133
|
+
throw new ClientError(`No valid "${requested}" scheme found in PAYMENT-REQUIRED accepts. Available: ${available}`);
|
|
57
134
|
}
|
|
58
135
|
if (!accept.payTo || !accept.amount || !accept.network || !accept.asset) {
|
|
59
136
|
throw new ClientError('PAYMENT-REQUIRED accept entry is missing required fields (payTo, amount, network, asset).');
|
|
@@ -61,6 +138,17 @@ export function parsePaymentRequired(base64Value) {
|
|
|
61
138
|
return { header, accept };
|
|
62
139
|
}
|
|
63
140
|
export async function signPayment(input) {
|
|
141
|
+
const { accept } = input;
|
|
142
|
+
logger.debug(`Signing x402 payment: scheme=${accept.scheme} network=${accept.network} amount=${accept.amount} asset=${accept.asset} payTo=${accept.payTo} facilitator=${accept.extra?.facilitatorAddress ?? '<n/a>'}`);
|
|
143
|
+
if (accept.scheme === 'upto') {
|
|
144
|
+
return signUptoPayment(input);
|
|
145
|
+
}
|
|
146
|
+
if (accept.scheme === 'exact') {
|
|
147
|
+
return signExactPayment(input);
|
|
148
|
+
}
|
|
149
|
+
throw new ClientError(`Unsupported x402 scheme: ${accept.scheme}`);
|
|
150
|
+
}
|
|
151
|
+
async function signExactPayment(input) {
|
|
64
152
|
const { wallet, accept, resource } = input;
|
|
65
153
|
const networkConfig = NETWORKS[accept.network];
|
|
66
154
|
if (!networkConfig) {
|
|
@@ -68,7 +156,7 @@ export async function signPayment(input) {
|
|
|
68
156
|
}
|
|
69
157
|
const amountAtomicUnits = input.amountOverride ?? BigInt(accept.amount);
|
|
70
158
|
const amountUsd = Number(amountAtomicUnits) / 10 ** USDC_DECIMALS;
|
|
71
|
-
const expirySeconds = (input.expiryOverride ?? accept.maxTimeoutSeconds) ||
|
|
159
|
+
const expirySeconds = (input.expiryOverride ?? accept.maxTimeoutSeconds) || DEFAULT_PAYMENT_EXPIRY_SECONDS;
|
|
72
160
|
const eip3009Name = accept.extra?.name ?? 'USDC';
|
|
73
161
|
const eip3009Version = accept.extra?.version ?? '2';
|
|
74
162
|
const account = privateKeyToAccount(wallet.privateKey);
|
|
@@ -136,4 +224,160 @@ export async function signPayment(input) {
|
|
|
136
224
|
expiresAt: new Date(Number(validBefore) * 1000),
|
|
137
225
|
};
|
|
138
226
|
}
|
|
227
|
+
async function ensurePermit2Allowance(params) {
|
|
228
|
+
const { wallet, tokenAddress, requiredAmount, networkConfig } = params;
|
|
229
|
+
const walletAddress = getAddress(wallet.address);
|
|
230
|
+
const permit2 = getAddress(PERMIT2_ADDRESS);
|
|
231
|
+
const publicClient = createPublicClient({
|
|
232
|
+
chain: networkConfig.chain,
|
|
233
|
+
transport: http(networkConfig.rpcUrl),
|
|
234
|
+
});
|
|
235
|
+
const currentAllowance = (await publicClient.readContract({
|
|
236
|
+
address: tokenAddress,
|
|
237
|
+
abi: ERC20_ALLOWANCE_ABI,
|
|
238
|
+
functionName: 'allowance',
|
|
239
|
+
args: [walletAddress, permit2],
|
|
240
|
+
}));
|
|
241
|
+
if (currentAllowance >= requiredAmount) {
|
|
242
|
+
logger.debug(`Permit2 allowance sufficient (${currentAllowance.toString()} >= ${requiredAmount.toString()})`);
|
|
243
|
+
return { previousAllowance: currentAllowance, newAllowance: currentAllowance };
|
|
244
|
+
}
|
|
245
|
+
logger.info(`Permit2 allowance is ${currentAllowance.toString()} < ${requiredAmount.toString()} required. Submitting one-time approve(MAX_UINT256) transaction…`);
|
|
246
|
+
const account = privateKeyToAccount(wallet.privateKey);
|
|
247
|
+
const walletClient = createWalletClient({
|
|
248
|
+
account,
|
|
249
|
+
chain: networkConfig.chain,
|
|
250
|
+
transport: http(networkConfig.rpcUrl),
|
|
251
|
+
});
|
|
252
|
+
const approveData = encodeFunctionData({
|
|
253
|
+
abi: ERC20_APPROVE_ABI,
|
|
254
|
+
functionName: 'approve',
|
|
255
|
+
args: [permit2, MAX_UINT256],
|
|
256
|
+
});
|
|
257
|
+
const approveTxHash = await walletClient.sendTransaction({
|
|
258
|
+
to: tokenAddress,
|
|
259
|
+
data: approveData,
|
|
260
|
+
});
|
|
261
|
+
logger.info(`Permit2 approve tx submitted: ${approveTxHash}. Waiting for confirmation…`);
|
|
262
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash: approveTxHash });
|
|
263
|
+
if (receipt.status !== 'success') {
|
|
264
|
+
throw new ClientError(`Permit2 approve transaction reverted on-chain: ${approveTxHash}. Inspect at ${networkConfig.label} explorer.`);
|
|
265
|
+
}
|
|
266
|
+
const newAllowance = (await publicClient.readContract({
|
|
267
|
+
address: tokenAddress,
|
|
268
|
+
abi: ERC20_ALLOWANCE_ABI,
|
|
269
|
+
functionName: 'allowance',
|
|
270
|
+
args: [walletAddress, permit2],
|
|
271
|
+
}));
|
|
272
|
+
logger.info(`Permit2 approve confirmed in block ${receipt.blockNumber}. New allowance: ${newAllowance.toString()}`);
|
|
273
|
+
return { approveTxHash, previousAllowance: currentAllowance, newAllowance };
|
|
274
|
+
}
|
|
275
|
+
async function signUptoPayment(input) {
|
|
276
|
+
const { wallet, accept, resource } = input;
|
|
277
|
+
const networkConfig = NETWORKS[accept.network];
|
|
278
|
+
if (!networkConfig) {
|
|
279
|
+
throw new ClientError(`Unknown network "${accept.network}" in payment requirements. Supported: ${Object.keys(NETWORKS).join(', ')}`);
|
|
280
|
+
}
|
|
281
|
+
const amountAtomicUnits = input.amountOverride ?? BigInt(accept.amount);
|
|
282
|
+
const amountUsd = Number(amountAtomicUnits) / 10 ** USDC_DECIMALS;
|
|
283
|
+
const expirySeconds = (input.expiryOverride ?? accept.maxTimeoutSeconds) || DEFAULT_PAYMENT_EXPIRY_SECONDS;
|
|
284
|
+
const facilitatorAddress = accept.extra?.facilitatorAddress;
|
|
285
|
+
if (!facilitatorAddress) {
|
|
286
|
+
throw new ClientError('upto scheme requires facilitatorAddress in paymentRequirements.extra. ' +
|
|
287
|
+
'Ensure the server is configured with an upto facilitator.');
|
|
288
|
+
}
|
|
289
|
+
const tokenName = accept.extra?.name ?? 'USDC';
|
|
290
|
+
const tokenVersion = accept.extra?.version ?? '2';
|
|
291
|
+
if (!input.skipPermit2Approval) {
|
|
292
|
+
await ensurePermit2Allowance({
|
|
293
|
+
wallet,
|
|
294
|
+
tokenAddress: getAddress(accept.asset),
|
|
295
|
+
requiredAmount: amountAtomicUnits,
|
|
296
|
+
networkConfig,
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
const account = privateKeyToAccount(wallet.privateKey);
|
|
300
|
+
const walletClient = createWalletClient({
|
|
301
|
+
account,
|
|
302
|
+
chain: networkConfig.chain,
|
|
303
|
+
transport: http(networkConfig.rpcUrl),
|
|
304
|
+
});
|
|
305
|
+
const nonce = randomPermit2Nonce();
|
|
306
|
+
const now = Math.floor(Date.now() / 1000);
|
|
307
|
+
const validAfter = (now - VALID_AFTER_CLOCK_SKEW_SECONDS).toString();
|
|
308
|
+
const deadline = (now + expirySeconds).toString();
|
|
309
|
+
if (BigInt(deadline) <= BigInt(validAfter)) {
|
|
310
|
+
throw new ClientError(`Invalid time window: deadline (${deadline}) must be after validAfter (${validAfter}). ` +
|
|
311
|
+
`Check that maxTimeoutSeconds (${accept.maxTimeoutSeconds}) is positive.`);
|
|
312
|
+
}
|
|
313
|
+
const chainId = networkConfig.chain.id;
|
|
314
|
+
const signature = await walletClient.signTypedData({
|
|
315
|
+
domain: {
|
|
316
|
+
name: 'Permit2',
|
|
317
|
+
chainId,
|
|
318
|
+
verifyingContract: PERMIT2_ADDRESS,
|
|
319
|
+
},
|
|
320
|
+
types: UPTO_PERMIT2_WITNESS_TYPES,
|
|
321
|
+
primaryType: 'PermitWitnessTransferFrom',
|
|
322
|
+
message: {
|
|
323
|
+
permitted: {
|
|
324
|
+
token: getAddress(accept.asset),
|
|
325
|
+
amount: amountAtomicUnits,
|
|
326
|
+
},
|
|
327
|
+
spender: getAddress(X402_UPTO_PERMIT2_PROXY),
|
|
328
|
+
nonce: BigInt(nonce),
|
|
329
|
+
deadline: BigInt(deadline),
|
|
330
|
+
witness: {
|
|
331
|
+
to: getAddress(accept.payTo),
|
|
332
|
+
facilitator: getAddress(facilitatorAddress),
|
|
333
|
+
validAfter: BigInt(validAfter),
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
});
|
|
337
|
+
const paymentPayload = {
|
|
338
|
+
x402Version: X402_VERSION,
|
|
339
|
+
resource: resource ?? {
|
|
340
|
+
url: 'https://mcp.apify.com/mcp',
|
|
341
|
+
description: 'MCP Server',
|
|
342
|
+
mimeType: 'application/json',
|
|
343
|
+
},
|
|
344
|
+
payload: {
|
|
345
|
+
signature,
|
|
346
|
+
permit2Authorization: {
|
|
347
|
+
permitted: {
|
|
348
|
+
token: getAddress(accept.asset),
|
|
349
|
+
amount: amountAtomicUnits.toString(),
|
|
350
|
+
},
|
|
351
|
+
from: account.address,
|
|
352
|
+
spender: X402_UPTO_PERMIT2_PROXY,
|
|
353
|
+
nonce,
|
|
354
|
+
deadline,
|
|
355
|
+
witness: {
|
|
356
|
+
to: getAddress(accept.payTo),
|
|
357
|
+
facilitator: getAddress(facilitatorAddress),
|
|
358
|
+
validAfter,
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
},
|
|
362
|
+
accepted: {
|
|
363
|
+
scheme: 'upto',
|
|
364
|
+
network: networkConfig.networkId,
|
|
365
|
+
asset: accept.asset,
|
|
366
|
+
amount: amountAtomicUnits.toString(),
|
|
367
|
+
payTo: accept.payTo,
|
|
368
|
+
maxTimeoutSeconds: expirySeconds,
|
|
369
|
+
extra: { name: tokenName, version: tokenVersion, facilitatorAddress },
|
|
370
|
+
},
|
|
371
|
+
};
|
|
372
|
+
const paymentSignatureBase64 = Buffer.from(JSON.stringify(paymentPayload)).toString('base64');
|
|
373
|
+
return {
|
|
374
|
+
paymentSignatureBase64,
|
|
375
|
+
from: account.address,
|
|
376
|
+
to: accept.payTo,
|
|
377
|
+
amountUsd,
|
|
378
|
+
amountAtomicUnits,
|
|
379
|
+
networkLabel: networkConfig.label,
|
|
380
|
+
expiresAt: new Date(Number(deadline) * 1000),
|
|
381
|
+
};
|
|
382
|
+
}
|
|
139
383
|
//# sourceMappingURL=signer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/lib/x402/signer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/lib/x402/signer.ts"],"names":[],"mappings":"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"}
|
package/docs/README.md
CHANGED
|
@@ -5,6 +5,7 @@ Additional documentation for mcpc.
|
|
|
5
5
|
## Contents
|
|
6
6
|
|
|
7
7
|
- [Claude Skill](./claude-skill/) - Claude Code skill for AI agents using mcpc
|
|
8
|
+
- [VHS demos](./vhs/) - VHS tape files for recording demo GIFs of mcpc
|
|
8
9
|
- [CONTRIBUTING.md](../CONTRIBUTING.md) - Development, contributing, and publishing guide
|
|
9
10
|
|
|
10
11
|
## Main documentation
|