@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.
Files changed (106) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/README.md +171 -48
  3. package/dist/bridge/index.js +32 -40
  4. package/dist/bridge/index.js.map +1 -1
  5. package/dist/cli/commands/clean.d.ts.map +1 -1
  6. package/dist/cli/commands/clean.js +3 -2
  7. package/dist/cli/commands/clean.js.map +1 -1
  8. package/dist/cli/commands/logs.d.ts +8 -0
  9. package/dist/cli/commands/logs.d.ts.map +1 -0
  10. package/dist/cli/commands/logs.js +143 -0
  11. package/dist/cli/commands/logs.js.map +1 -0
  12. package/dist/cli/commands/sessions.d.ts +6 -4
  13. package/dist/cli/commands/sessions.d.ts.map +1 -1
  14. package/dist/cli/commands/sessions.js +141 -85
  15. package/dist/cli/commands/sessions.js.map +1 -1
  16. package/dist/cli/commands/skills.d.ts +20 -0
  17. package/dist/cli/commands/skills.d.ts.map +1 -0
  18. package/dist/cli/commands/skills.js +160 -0
  19. package/dist/cli/commands/skills.js.map +1 -0
  20. package/dist/cli/commands/x402.d.ts.map +1 -1
  21. package/dist/cli/commands/x402.js +14 -4
  22. package/dist/cli/commands/x402.js.map +1 -1
  23. package/dist/cli/index.js +113 -24
  24. package/dist/cli/index.js.map +1 -1
  25. package/dist/cli/output.d.ts +13 -0
  26. package/dist/cli/output.d.ts.map +1 -1
  27. package/dist/cli/output.js +114 -20
  28. package/dist/cli/output.js.map +1 -1
  29. package/dist/cli/parser.d.ts +1 -1
  30. package/dist/cli/parser.d.ts.map +1 -1
  31. package/dist/cli/parser.js +25 -2
  32. package/dist/cli/parser.js.map +1 -1
  33. package/dist/cli/shell.js.map +1 -1
  34. package/dist/core/capabilities.d.ts +3 -0
  35. package/dist/core/capabilities.d.ts.map +1 -0
  36. package/dist/core/capabilities.js +14 -0
  37. package/dist/core/capabilities.js.map +1 -0
  38. package/dist/core/index.d.ts +1 -0
  39. package/dist/core/index.d.ts.map +1 -1
  40. package/dist/core/index.js +1 -0
  41. package/dist/core/index.js.map +1 -1
  42. package/dist/core/mcp-client.d.ts +4 -0
  43. package/dist/core/mcp-client.d.ts.map +1 -1
  44. package/dist/core/mcp-client.js +34 -12
  45. package/dist/core/mcp-client.js.map +1 -1
  46. package/dist/lib/bridge-client.d.ts +4 -1
  47. package/dist/lib/bridge-client.d.ts.map +1 -1
  48. package/dist/lib/bridge-client.js +29 -3
  49. package/dist/lib/bridge-client.js.map +1 -1
  50. package/dist/lib/bridge-manager.d.ts +2 -2
  51. package/dist/lib/bridge-manager.d.ts.map +1 -1
  52. package/dist/lib/bridge-manager.js +31 -15
  53. package/dist/lib/bridge-manager.js.map +1 -1
  54. package/dist/lib/cleanup.d.ts.map +1 -1
  55. package/dist/lib/cleanup.js +20 -19
  56. package/dist/lib/cleanup.js.map +1 -1
  57. package/dist/lib/config.d.ts +14 -0
  58. package/dist/lib/config.d.ts.map +1 -1
  59. package/dist/lib/config.js +41 -27
  60. package/dist/lib/config.js.map +1 -1
  61. package/dist/lib/errors.d.ts +0 -1
  62. package/dist/lib/errors.d.ts.map +1 -1
  63. package/dist/lib/errors.js +2 -4
  64. package/dist/lib/errors.js.map +1 -1
  65. package/dist/lib/index.d.ts +1 -0
  66. package/dist/lib/index.d.ts.map +1 -1
  67. package/dist/lib/index.js +1 -0
  68. package/dist/lib/index.js.map +1 -1
  69. package/dist/lib/log-reader.d.ts +28 -0
  70. package/dist/lib/log-reader.d.ts.map +1 -0
  71. package/dist/lib/log-reader.js +278 -0
  72. package/dist/lib/log-reader.js.map +1 -0
  73. package/dist/lib/session-client.d.ts.map +1 -1
  74. package/dist/lib/session-client.js +3 -5
  75. package/dist/lib/session-client.js.map +1 -1
  76. package/dist/lib/stderr-tail.d.ts +10 -0
  77. package/dist/lib/stderr-tail.d.ts.map +1 -0
  78. package/dist/lib/stderr-tail.js +28 -0
  79. package/dist/lib/stderr-tail.js.map +1 -0
  80. package/dist/lib/types.d.ts +6 -1
  81. package/dist/lib/types.d.ts.map +1 -1
  82. package/dist/lib/types.js +1 -0
  83. package/dist/lib/types.js.map +1 -1
  84. package/dist/lib/utils.d.ts +1 -0
  85. package/dist/lib/utils.d.ts.map +1 -1
  86. package/dist/lib/utils.js +12 -2
  87. package/dist/lib/utils.js.map +1 -1
  88. package/dist/lib/x402/fetch-middleware.d.ts +3 -2
  89. package/dist/lib/x402/fetch-middleware.d.ts.map +1 -1
  90. package/dist/lib/x402/fetch-middleware.js +37 -24
  91. package/dist/lib/x402/fetch-middleware.js.map +1 -1
  92. package/dist/lib/x402/signer.d.ts +7 -1
  93. package/dist/lib/x402/signer.d.ts.map +1 -1
  94. package/dist/lib/x402/signer.js +249 -5
  95. package/dist/lib/x402/signer.js.map +1 -1
  96. package/docs/README.md +1 -0
  97. package/docs/claude-skill/SKILL.md +151 -117
  98. package/docs/examples/company-lookup.sh +6 -6
  99. package/docs/vhs/README.md +79 -0
  100. package/docs/vhs/grep.tape +56 -0
  101. package/docs/vhs/mcpc-demo.tape +179 -0
  102. package/docs/vhs/proxy.tape +69 -0
  103. package/docs/vhs/quickstart.tape +59 -0
  104. package/docs/vhs/scripting.tape +69 -0
  105. package/docs/vhs/tools.tape +66 -0
  106. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/signer.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,YAAY,IAAI,CAAC;AA4C9B,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,CAAA;KAAE,CAAC;CAC7C;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;AAGD,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;CACzB;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;AAoBD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG;IACzD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,qBAAqB,CAAC;CAC/B,CAiCA;AASD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6FrF"}
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"}
@@ -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
- export function parsePaymentRequired(base64Value) {
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.find((a) => a.scheme === 'exact');
129
+ const accept = selectAcceptEntry(header.accepts, schemePreference);
55
130
  if (!accept) {
56
- throw new ClientError(`No "exact" scheme found in PAYMENT-REQUIRED accepts. Available: ${header.accepts.map((a) => a.scheme).join(', ')}`);
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) || 3600;
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