@apify/mcpc 0.3.0 → 0.3.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/CHANGELOG.md +37 -2
- 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/connect.d.ts +63 -0
- package/dist/cli/commands/connect.d.ts.map +1 -0
- package/dist/cli/commands/connect.js +655 -0
- package/dist/cli/commands/connect.js.map +1 -0
- 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 -59
- package/dist/cli/commands/sessions.d.ts.map +1 -1
- package/dist/cli/commands/sessions.js +37 -690
- 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 +117 -31
- 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 +113 -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 +36 -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 +3 -3
- package/dist/lib/bridge-manager.d.ts.map +1 -1
- package/dist/lib/bridge-manager.js +36 -20
- 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 +1 -1
- package/dist/lib/session-client.d.ts.map +1 -1
- package/dist/lib/session-client.js +6 -8
- 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 +150 -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
package/dist/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FetchLike } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
2
2
|
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
-
import { type SignerWallet, type PaymentRequiredAccept } from './signer.js';
|
|
3
|
+
import { type SignerWallet, type PaymentRequiredAccept, type SchemePreference } from './signer.js';
|
|
4
4
|
export interface X402PaymentCache {
|
|
5
5
|
signature: string | null;
|
|
6
6
|
}
|
|
@@ -8,9 +8,10 @@ export interface X402FetchMiddlewareOptions {
|
|
|
8
8
|
wallet: SignerWallet;
|
|
9
9
|
getToolByName?: (name: string) => Tool | undefined;
|
|
10
10
|
paymentCache: X402PaymentCache;
|
|
11
|
+
schemePreference?: SchemePreference;
|
|
11
12
|
}
|
|
12
13
|
export declare function createX402FetchMiddleware(baseFetch: FetchLike, options: X402FetchMiddlewareOptions): FetchLike;
|
|
13
|
-
export declare function extractAcceptFromPaymentRequired(data: unknown): {
|
|
14
|
+
export declare function extractAcceptFromPaymentRequired(data: unknown, schemePreference?: SchemePreference): {
|
|
14
15
|
accept: PaymentRequiredAccept;
|
|
15
16
|
resource?: {
|
|
16
17
|
url?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/fetch-middleware.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"fetch-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/fetch-middleware.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAE1B,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AA4CrB,MAAM,WAAW,gBAAgB;IAE/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAKD,MAAM,WAAW,0BAA0B;IAEzC,MAAM,EAAE,YAAY,CAAC;IAOrB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;IAGnD,YAAY,EAAE,gBAAgB,CAAC;IAG/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAUD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,0BAA0B,GAClC,SAAS,CAqDX;AA2MD,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,EACb,gBAAgB,CAAC,EAAE,gBAAgB,GAEjC;IACE,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE,GACD,SAAS,CAqBZ;AA0BD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAgCrC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { signPayment, parsePaymentRequired, } from './signer.js';
|
|
1
|
+
import { signPayment, parsePaymentRequired, selectAcceptEntry, DEFAULT_PAYMENT_EXPIRY_SECONDS, } from './signer.js';
|
|
2
2
|
import { createLogger } from '../logger.js';
|
|
3
3
|
const logger = createLogger('x402-middleware');
|
|
4
4
|
const MCP_PAYMENT_META_KEY = 'x402/payment';
|
|
5
5
|
export function createX402FetchMiddleware(baseFetch, options) {
|
|
6
|
-
const { wallet, getToolByName, paymentCache } = options;
|
|
6
|
+
const { wallet, getToolByName, paymentCache, schemePreference } = options;
|
|
7
7
|
return async (url, init) => {
|
|
8
|
-
const paymentSignature = await getOrSignPayment(init, wallet, getToolByName, paymentCache);
|
|
8
|
+
const paymentSignature = await getOrSignPayment(init, wallet, getToolByName, paymentCache, schemePreference);
|
|
9
9
|
if (paymentSignature) {
|
|
10
10
|
const enhancedInit = injectPayment(init, paymentSignature);
|
|
11
11
|
const response = await baseFetch(url, enhancedInit);
|
|
@@ -14,16 +14,16 @@ export function createX402FetchMiddleware(baseFetch, options) {
|
|
|
14
14
|
}
|
|
15
15
|
logger.debug('Payment rejected (HTTP 402), invalidating cache');
|
|
16
16
|
paymentCache.signature = null;
|
|
17
|
-
return handle402Fallback(url, init, response, baseFetch, wallet, paymentCache);
|
|
17
|
+
return handle402Fallback(url, init, response, baseFetch, wallet, paymentCache, schemePreference);
|
|
18
18
|
}
|
|
19
19
|
const response = await baseFetch(url, init);
|
|
20
20
|
if (response.status === 402) {
|
|
21
|
-
return handle402Fallback(url, init, response, baseFetch, wallet, paymentCache);
|
|
21
|
+
return handle402Fallback(url, init, response, baseFetch, wallet, paymentCache, schemePreference);
|
|
22
22
|
}
|
|
23
23
|
return response;
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
async function getOrSignPayment(init, wallet, getToolByName, paymentCache) {
|
|
26
|
+
async function getOrSignPayment(init, wallet, getToolByName, paymentCache, schemePreference) {
|
|
27
27
|
if (!getToolByName || !init?.body) {
|
|
28
28
|
return undefined;
|
|
29
29
|
}
|
|
@@ -48,22 +48,14 @@ async function getOrSignPayment(init, wallet, getToolByName, paymentCache) {
|
|
|
48
48
|
logger.debug(`Using cached payment signature for tool "${toolName}"`);
|
|
49
49
|
return paymentCache.signature;
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
const accept = selectAcceptFromToolMeta(x402, schemePreference);
|
|
52
|
+
if (!accept) {
|
|
53
|
+
logger.debug(`Tool "${toolName}" _meta.x402 does not advertise a usable accept for schemePreference=${schemePreference ?? 'auto'}, deferring to 402 fallback`);
|
|
53
54
|
return undefined;
|
|
54
55
|
}
|
|
55
|
-
const accept = {
|
|
56
|
-
scheme: x402.scheme,
|
|
57
|
-
network: x402.network,
|
|
58
|
-
amount: x402.amount,
|
|
59
|
-
asset: x402.asset,
|
|
60
|
-
payTo: x402.payTo,
|
|
61
|
-
maxTimeoutSeconds: x402.maxTimeoutSeconds || 3600,
|
|
62
|
-
...(x402.extra && { extra: x402.extra }),
|
|
63
|
-
};
|
|
64
56
|
try {
|
|
65
57
|
const result = await signPayment({ wallet, accept });
|
|
66
|
-
logger.debug(`Fresh payment signed:
|
|
58
|
+
logger.debug(`Fresh payment signed: scheme=${accept.scheme} amount=$${result.amountUsd.toFixed(6)} to=${result.to} network=${result.networkLabel}`);
|
|
67
59
|
paymentCache.signature = result.paymentSignatureBase64;
|
|
68
60
|
return result.paymentSignatureBase64;
|
|
69
61
|
}
|
|
@@ -72,7 +64,7 @@ async function getOrSignPayment(init, wallet, getToolByName, paymentCache) {
|
|
|
72
64
|
return undefined;
|
|
73
65
|
}
|
|
74
66
|
}
|
|
75
|
-
async function handle402Fallback(url, originalInit, response402, baseFetch, wallet, paymentCache) {
|
|
67
|
+
async function handle402Fallback(url, originalInit, response402, baseFetch, wallet, paymentCache, schemePreference) {
|
|
76
68
|
const paymentRequiredBase64 = response402.headers.get('PAYMENT-REQUIRED') || response402.headers.get('payment-required');
|
|
77
69
|
if (!paymentRequiredBase64) {
|
|
78
70
|
logger.debug('402 response has no PAYMENT-REQUIRED header, passing through');
|
|
@@ -82,7 +74,7 @@ async function handle402Fallback(url, originalInit, response402, baseFetch, wall
|
|
|
82
74
|
let header;
|
|
83
75
|
let accept;
|
|
84
76
|
try {
|
|
85
|
-
({ header, accept } = parsePaymentRequired(paymentRequiredBase64));
|
|
77
|
+
({ header, accept } = parsePaymentRequired(paymentRequiredBase64, schemePreference));
|
|
86
78
|
}
|
|
87
79
|
catch (error) {
|
|
88
80
|
logger.warn('Failed to parse PAYMENT-REQUIRED header:', error);
|
|
@@ -94,7 +86,7 @@ async function handle402Fallback(url, originalInit, response402, baseFetch, wall
|
|
|
94
86
|
accept,
|
|
95
87
|
resource: header.resource,
|
|
96
88
|
});
|
|
97
|
-
logger.debug(`402 fallback payment signed:
|
|
89
|
+
logger.debug(`402 fallback payment signed: scheme=${accept.scheme} amount=$${result.amountUsd.toFixed(6)} to=${result.to} network=${result.networkLabel}`);
|
|
98
90
|
paymentCache.signature = result.paymentSignatureBase64;
|
|
99
91
|
const retryInit = injectPayment(originalInit, result.paymentSignatureBase64);
|
|
100
92
|
return await baseFetch(url, retryInit);
|
|
@@ -129,14 +121,35 @@ function extractToolCallName(body) {
|
|
|
129
121
|
return undefined;
|
|
130
122
|
}
|
|
131
123
|
}
|
|
132
|
-
|
|
124
|
+
function selectAcceptFromToolMeta(x402, schemePreference) {
|
|
125
|
+
const preference = schemePreference ?? 'auto';
|
|
126
|
+
if (Array.isArray(x402.accepts) && x402.accepts.length > 0) {
|
|
127
|
+
return selectAcceptEntry(x402.accepts, preference);
|
|
128
|
+
}
|
|
129
|
+
if (!x402.scheme || !x402.network || !x402.amount || !x402.asset || !x402.payTo) {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
if (preference !== 'auto' && preference !== x402.scheme) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
scheme: x402.scheme,
|
|
137
|
+
network: x402.network,
|
|
138
|
+
amount: x402.amount,
|
|
139
|
+
asset: x402.asset,
|
|
140
|
+
payTo: x402.payTo,
|
|
141
|
+
maxTimeoutSeconds: x402.maxTimeoutSeconds || DEFAULT_PAYMENT_EXPIRY_SECONDS,
|
|
142
|
+
...(x402.extra && { extra: x402.extra }),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
export function extractAcceptFromPaymentRequired(data, schemePreference) {
|
|
133
146
|
if (!data || typeof data !== 'object')
|
|
134
147
|
return undefined;
|
|
135
148
|
const obj = data;
|
|
136
149
|
if (!Array.isArray(obj.accepts) || obj.accepts.length === 0)
|
|
137
150
|
return undefined;
|
|
138
|
-
const accept = obj.accepts
|
|
139
|
-
if (!accept
|
|
151
|
+
const accept = selectAcceptEntry(obj.accepts, schemePreference ?? 'auto');
|
|
152
|
+
if (!accept) {
|
|
140
153
|
return undefined;
|
|
141
154
|
}
|
|
142
155
|
const resource = obj.resource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-middleware.js","sourceRoot":"","sources":["../../../src/lib/x402/fetch-middleware.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,WAAW,EACX,oBAAoB,
|
|
1
|
+
{"version":3,"file":"fetch-middleware.js","sourceRoot":"","sources":["../../../src/lib/x402/fetch-middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { X402SchemePreference } from '../types.js';
|
|
1
2
|
export declare const X402_VERSION = 2;
|
|
3
|
+
export declare const DEFAULT_PAYMENT_EXPIRY_SECONDS = 3600;
|
|
2
4
|
export interface PaymentRequiredAccept {
|
|
3
5
|
scheme: string;
|
|
4
6
|
network: string;
|
|
@@ -9,6 +11,7 @@ export interface PaymentRequiredAccept {
|
|
|
9
11
|
extra?: {
|
|
10
12
|
name?: string;
|
|
11
13
|
version?: string;
|
|
14
|
+
facilitatorAddress?: string;
|
|
12
15
|
};
|
|
13
16
|
}
|
|
14
17
|
export interface PaymentRequiredHeader {
|
|
@@ -20,6 +23,7 @@ export interface PaymentRequiredHeader {
|
|
|
20
23
|
};
|
|
21
24
|
accepts: PaymentRequiredAccept[];
|
|
22
25
|
}
|
|
26
|
+
export type SchemePreference = X402SchemePreference;
|
|
23
27
|
export interface SignerWallet {
|
|
24
28
|
privateKey: string;
|
|
25
29
|
address: string;
|
|
@@ -30,6 +34,7 @@ export interface SignPaymentInput {
|
|
|
30
34
|
resource?: PaymentRequiredHeader['resource'];
|
|
31
35
|
amountOverride?: bigint;
|
|
32
36
|
expiryOverride?: number;
|
|
37
|
+
skipPermit2Approval?: boolean;
|
|
33
38
|
}
|
|
34
39
|
export interface SignPaymentResult {
|
|
35
40
|
paymentSignatureBase64: string;
|
|
@@ -40,7 +45,8 @@ export interface SignPaymentResult {
|
|
|
40
45
|
networkLabel: string;
|
|
41
46
|
expiresAt: Date;
|
|
42
47
|
}
|
|
43
|
-
export declare function
|
|
48
|
+
export declare function selectAcceptEntry(accepts: PaymentRequiredAccept[], preference?: SchemePreference): PaymentRequiredAccept | undefined;
|
|
49
|
+
export declare function parsePaymentRequired(base64Value: string, schemePreference?: SchemePreference): {
|
|
44
50
|
header: PaymentRequiredHeader;
|
|
45
51
|
accept: PaymentRequiredAccept;
|
|
46
52
|
};
|
|
@@ -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
|