safehands-pharos 1.2.6 → 1.4.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/.env.example +64 -26
- package/README.md +333 -445
- package/dist/cli.d.ts +5 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +124 -98
- package/dist/cli.js.map +1 -1
- package/dist/demo.d.ts +1 -1
- package/dist/demo.js +171 -171
- package/dist/index.d.ts +2 -2
- package/dist/index.js +138 -87
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -1
- package/dist/init.js +65 -65
- package/dist/lib/auditLog.d.ts +9 -0
- package/dist/lib/auditLog.d.ts.map +1 -0
- package/dist/lib/auditLog.js +30 -0
- package/dist/lib/auditLog.js.map +1 -0
- package/dist/lib/constants.d.ts +291 -291
- package/dist/lib/constants.js +292 -292
- package/dist/lib/dodoApi.d.ts +78 -70
- package/dist/lib/dodoApi.d.ts.map +1 -1
- package/dist/lib/dodoApi.js +196 -178
- package/dist/lib/dodoApi.js.map +1 -1
- package/dist/lib/http.d.ts +14 -14
- package/dist/lib/http.js +118 -118
- package/dist/lib/pharosClient.d.ts +58 -58
- package/dist/lib/pharosClient.d.ts.map +1 -1
- package/dist/lib/pharosClient.js +63 -53
- package/dist/lib/pharosClient.js.map +1 -1
- package/dist/lib/policy/actionPolicyEngine.d.ts +53 -53
- package/dist/lib/policy/actionPolicyEngine.js +212 -212
- package/dist/lib/policy/actionPolicyEngine.js.map +1 -1
- package/dist/lib/riskEngine.d.ts +26 -26
- package/dist/lib/riskEngine.js +283 -283
- package/dist/lib/signer/index.d.ts +24 -24
- package/dist/lib/signer/index.d.ts.map +1 -1
- package/dist/lib/signer/index.js +88 -89
- package/dist/lib/signer/index.js.map +1 -1
- package/dist/lib/spendAccumulator.d.ts +10 -0
- package/dist/lib/spendAccumulator.d.ts.map +1 -0
- package/dist/lib/spendAccumulator.js +54 -0
- package/dist/lib/spendAccumulator.js.map +1 -0
- package/dist/lib/testDodoLive.d.ts +1 -1
- package/dist/lib/testDodoLive.js +104 -104
- package/dist/lib/testLiveSafehands.d.ts +1 -1
- package/dist/lib/testLiveSafehands.js +92 -92
- package/dist/lib/testRpc.d.ts +1 -1
- package/dist/lib/testRpc.js +29 -29
- package/dist/lib/testRpcLive.d.ts +1 -1
- package/dist/lib/testRpcLive.js +88 -88
- package/dist/lib/testTools.d.ts +1 -1
- package/dist/lib/testTools.js +397 -397
- package/dist/lib/testX402Live.d.ts +1 -1
- package/dist/lib/testX402Live.js +159 -159
- package/dist/lib/toolResponse.d.ts +25 -25
- package/dist/lib/toolResponse.js +53 -53
- package/dist/lib/wallet/index.d.ts +37 -18
- package/dist/lib/wallet/index.d.ts.map +1 -1
- package/dist/lib/wallet/index.js +128 -70
- package/dist/lib/wallet/index.js.map +1 -1
- package/dist/scripts/checkDeploy.d.ts +1 -1
- package/dist/scripts/checkDeploy.js +24 -24
- package/dist/scripts/deployRegistry.d.ts +1 -1
- package/dist/scripts/deployRegistry.js +100 -100
- package/dist/scripts/testRegistry.d.ts +1 -1
- package/dist/scripts/testRegistry.js +43 -43
- package/dist/tools/approveToken.d.ts +45 -46
- package/dist/tools/approveToken.d.ts.map +1 -1
- package/dist/tools/approveToken.js +85 -83
- package/dist/tools/approveToken.js.map +1 -1
- package/dist/tools/assessRisk.d.ts +79 -79
- package/dist/tools/assessRisk.d.ts.map +1 -1
- package/dist/tools/assessRisk.js +104 -93
- package/dist/tools/assessRisk.js.map +1 -1
- package/dist/tools/checkAllowance.d.ts +43 -36
- package/dist/tools/checkAllowance.d.ts.map +1 -1
- package/dist/tools/checkAllowance.js +56 -42
- package/dist/tools/checkAllowance.js.map +1 -1
- package/dist/tools/checkTokenSecurity.d.ts +46 -46
- package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
- package/dist/tools/checkTokenSecurity.js +95 -88
- package/dist/tools/checkTokenSecurity.js.map +1 -1
- package/dist/tools/createAgentWallet.d.ts +26 -26
- package/dist/tools/createAgentWallet.d.ts.map +1 -1
- package/dist/tools/createAgentWallet.js +58 -59
- package/dist/tools/createAgentWallet.js.map +1 -1
- package/dist/tools/estimateGas.d.ts +79 -79
- package/dist/tools/estimateGas.js +124 -124
- package/dist/tools/executeSwap.d.ts +61 -59
- package/dist/tools/executeSwap.d.ts.map +1 -1
- package/dist/tools/executeSwap.js +141 -129
- package/dist/tools/executeSwap.js.map +1 -1
- package/dist/tools/explainRisk.d.ts +29 -29
- package/dist/tools/explainRisk.js +32 -32
- package/dist/tools/getAgentWallet.d.ts +21 -21
- package/dist/tools/getAgentWallet.js +27 -27
- package/dist/tools/getAgentWalletBalance.d.ts +11 -11
- package/dist/tools/getAgentWalletBalance.js +70 -70
- package/dist/tools/getExecutionHistory.d.ts +49 -51
- package/dist/tools/getExecutionHistory.d.ts.map +1 -1
- package/dist/tools/getExecutionHistory.js +154 -93
- package/dist/tools/getExecutionHistory.js.map +1 -1
- package/dist/tools/getGasPrice.d.ts +43 -43
- package/dist/tools/getGasPrice.js +59 -59
- package/dist/tools/getPoolInfo.d.ts +75 -75
- package/dist/tools/getPoolInfo.js +137 -137
- package/dist/tools/getTokenPrice.d.ts +113 -113
- package/dist/tools/getTokenPrice.js +117 -117
- package/dist/tools/getTransactionStatus.d.ts +43 -57
- package/dist/tools/getTransactionStatus.d.ts.map +1 -1
- package/dist/tools/getTransactionStatus.js +59 -67
- package/dist/tools/getTransactionStatus.js.map +1 -1
- package/dist/tools/getWalletBalance.d.ts +68 -68
- package/dist/tools/getWalletBalance.js +87 -87
- package/dist/tools/publishRiskScore.d.ts +63 -63
- package/dist/tools/publishRiskScore.d.ts.map +1 -1
- package/dist/tools/publishRiskScore.js +88 -85
- package/dist/tools/publishRiskScore.js.map +1 -1
- package/dist/tools/queryRiskRegistry.d.ts +38 -48
- package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
- package/dist/tools/queryRiskRegistry.js +55 -60
- package/dist/tools/queryRiskRegistry.js.map +1 -1
- package/dist/tools/safehandsPreflightCheck.d.ts +77 -77
- package/dist/tools/safehandsPreflightCheck.js +47 -47
- package/dist/tools/safehandsRiskReport.d.ts +81 -81
- package/dist/tools/safehandsRiskReport.js +28 -28
- package/dist/tools/safehandsSafeExecute.d.ts +20 -20
- package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
- package/dist/tools/safehandsSafeExecute.js +81 -75
- package/dist/tools/safehandsSafeExecute.js.map +1 -1
- package/dist/tools/safehandsWalletHealth.d.ts +14 -14
- package/dist/tools/safehandsWalletHealth.js +103 -103
- package/dist/tools/safehandsX402Preflight.d.ts +26 -26
- package/dist/tools/safehandsX402Preflight.js +65 -65
- package/dist/tools/sendPayment.d.ts +57 -58
- package/dist/tools/sendPayment.d.ts.map +1 -1
- package/dist/tools/sendPayment.js +117 -108
- package/dist/tools/sendPayment.js.map +1 -1
- package/dist/tools/simulateTransaction.d.ts +60 -81
- package/dist/tools/simulateTransaction.d.ts.map +1 -1
- package/dist/tools/simulateTransaction.js +83 -88
- package/dist/tools/simulateTransaction.js.map +1 -1
- package/dist/tools/tokenRegistryStatus.d.ts +26 -26
- package/dist/tools/tokenRegistryStatus.js +96 -96
- package/dist/tools/x402PayAndFetch.d.ts +81 -81
- package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
- package/dist/tools/x402PayAndFetch.js +152 -149
- package/dist/tools/x402PayAndFetch.js.map +1 -1
- package/dist/x402Server.d.ts +1 -1
- package/dist/x402Server.js +252 -252
- package/examples/dashboard/index.html +337 -0
- package/package.json +83 -82
- package/skill/SKILL.md +133 -133
|
@@ -1,150 +1,153 @@
|
|
|
1
|
-
// ─── Tool: x402_pay_and_fetch ─────────────────────────────────────────────
|
|
2
|
-
// Enables an agent to fetch protected resources from an x402 server.
|
|
3
|
-
// Automatically executes the payment challenge only after HTTP 402 is returned.
|
|
4
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
|
|
7
|
-
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
8
|
-
import { CHAIN_ID, PHAROS_ENVIRONMENT, RPC_URL, MAX_X402_PAYMENT_USDC, X402_PAYMENT_TOKEN_ADDRESS } from "../lib/constants.js";
|
|
9
|
-
import { assertSafeFetchUrl, fetchWithTimeoutAndRetry } from "../lib/http.js";
|
|
10
|
-
import { fail, ok } from "../lib/toolResponse.js";
|
|
11
|
-
import { getSigner, isSignerFailure } from "../lib/signer/index.js";
|
|
12
|
-
import { evaluateActionPolicy } from "../lib/policy/actionPolicyEngine.js";
|
|
13
|
-
export const x402PayAndFetchSchema = z.object({
|
|
14
|
-
url: z.string().describe("Target URL of the protected resource requiring x402 payment"),
|
|
15
|
-
method: z.enum(["GET", "POST", "PUT", "DELETE"]).optional().default("GET").describe("HTTP method to use"),
|
|
16
|
-
body: z.string().optional().describe("Optional stringified JSON request body"),
|
|
17
|
-
rpcUrl: z.string().optional().describe("Custom RPC URL for payment verification (defaults to Atlantic Testnet RPC)"),
|
|
18
|
-
agentId: z.string().optional().describe("Managed testnet wallet agentId when WALLET_MODE=managed-testnet"),
|
|
19
|
-
maxPaymentUsdc: z.string().optional().default(MAX_X402_PAYMENT_USDC),
|
|
20
|
-
});
|
|
21
|
-
export const x402PayAndFetchTool = {
|
|
22
|
-
name: "x402_pay_and_fetch",
|
|
23
|
-
description: "Fetch resources from an HTTP x402 payment-gated server. " +
|
|
24
|
-
"If the server challenges with HTTP 402, this tool signs the required testnet payment payload and completes the fetch.",
|
|
25
|
-
inputSchema: x402PayAndFetchSchema,
|
|
26
|
-
};
|
|
27
|
-
async function readResponseBody(res) {
|
|
28
|
-
const contentType = res.headers.get("content-type") || "";
|
|
29
|
-
if (contentType.includes("application/json")) {
|
|
30
|
-
try {
|
|
31
|
-
return await res.json();
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return await res.text();
|
|
38
|
-
}
|
|
39
|
-
function buildFetchOptions(input) {
|
|
40
|
-
const fetchOptions = {
|
|
41
|
-
method: input.method,
|
|
42
|
-
headers: {
|
|
43
|
-
"Content-Type": "application/json",
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
if (input.body)
|
|
47
|
-
fetchOptions.body = input.body;
|
|
48
|
-
return fetchOptions;
|
|
49
|
-
}
|
|
50
|
-
export async function handleX402PayAndFetch(raw) {
|
|
51
|
-
const input = x402PayAndFetchSchema.parse(raw);
|
|
52
|
-
try {
|
|
53
|
-
await assertSafeFetchUrl(input.url);
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
return fail("SSRF_BLOCKED", err instanceof Error ? err.message.replace(/^SSRF_BLOCKED:\s*/, "") : String(err), false, "x402_pay_and_fetch");
|
|
57
|
-
}
|
|
58
|
-
const staticPolicy = evaluateActionPolicy({
|
|
59
|
-
actionType: "x402_pay_and_fetch",
|
|
60
|
-
url: input.url,
|
|
61
|
-
paymentAmountUsdc: input.maxPaymentUsdc,
|
|
62
|
-
paymentTokenAddress: X402_PAYMENT_TOKEN_ADDRESS,
|
|
63
|
-
chainId: CHAIN_ID,
|
|
64
|
-
environment: PHAROS_ENVIRONMENT,
|
|
65
|
-
isMainnet: false,
|
|
66
|
-
});
|
|
67
|
-
if (staticPolicy.decision === "BLOCK") {
|
|
68
|
-
return fail("POLICY_BLOCKED", staticPolicy.reasons.join(" ") || "x402 request blocked by SafeHands policy.", false, "x402_pay_and_fetch");
|
|
69
|
-
}
|
|
70
|
-
const fetchOptions = buildFetchOptions(input);
|
|
71
|
-
try {
|
|
72
|
-
const initial = await fetchWithTimeoutAndRetry(input.url, {
|
|
73
|
-
...fetchOptions,
|
|
74
|
-
timeoutMs: 10_000,
|
|
75
|
-
retries: 1,
|
|
76
|
-
retryDelayMs: 250,
|
|
77
|
-
});
|
|
78
|
-
if (initial.status !== 402) {
|
|
79
|
-
const data = await readResponseBody(initial);
|
|
80
|
-
return ok({
|
|
81
|
-
status: initial.status,
|
|
82
|
-
statusText: initial.statusText,
|
|
83
|
-
data,
|
|
84
|
-
paymentExecuted: false,
|
|
85
|
-
paymentDetails: null,
|
|
86
|
-
chainId: CHAIN_ID,
|
|
87
|
-
environment: PHAROS_ENVIRONMENT,
|
|
88
|
-
isMainnet: false,
|
|
89
|
-
policy: staticPolicy,
|
|
90
|
-
source: "x402_fetch",
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
const
|
|
94
|
-
if (
|
|
95
|
-
return
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
|
|
1
|
+
// ─── Tool: x402_pay_and_fetch ─────────────────────────────────────────────
|
|
2
|
+
// Enables an agent to fetch protected resources from an x402 server.
|
|
3
|
+
// Automatically executes the payment challenge only after HTTP 402 is returned.
|
|
4
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
|
|
7
|
+
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
8
|
+
import { CHAIN_ID, PHAROS_ENVIRONMENT, RPC_URL, MAX_X402_PAYMENT_USDC, X402_PAYMENT_TOKEN_ADDRESS } from "../lib/constants.js";
|
|
9
|
+
import { assertSafeFetchUrl, fetchWithTimeoutAndRetry } from "../lib/http.js";
|
|
10
|
+
import { fail, ok, requireWriteToolsEnabled } from "../lib/toolResponse.js";
|
|
11
|
+
import { getSigner, isSignerFailure } from "../lib/signer/index.js";
|
|
12
|
+
import { evaluateActionPolicy } from "../lib/policy/actionPolicyEngine.js";
|
|
13
|
+
export const x402PayAndFetchSchema = z.object({
|
|
14
|
+
url: z.string().describe("Target URL of the protected resource requiring x402 payment"),
|
|
15
|
+
method: z.enum(["GET", "POST", "PUT", "DELETE"]).optional().default("GET").describe("HTTP method to use"),
|
|
16
|
+
body: z.string().optional().describe("Optional stringified JSON request body"),
|
|
17
|
+
rpcUrl: z.string().optional().describe("Custom RPC URL for payment verification (defaults to Atlantic Testnet RPC)"),
|
|
18
|
+
agentId: z.string().optional().describe("Managed testnet wallet agentId when WALLET_MODE=managed-testnet"),
|
|
19
|
+
maxPaymentUsdc: z.string().optional().default(MAX_X402_PAYMENT_USDC),
|
|
20
|
+
});
|
|
21
|
+
export const x402PayAndFetchTool = {
|
|
22
|
+
name: "x402_pay_and_fetch",
|
|
23
|
+
description: "Fetch resources from an HTTP x402 payment-gated server. " +
|
|
24
|
+
"If the server challenges with HTTP 402, this tool signs the required testnet payment payload and completes the fetch.",
|
|
25
|
+
inputSchema: x402PayAndFetchSchema,
|
|
26
|
+
};
|
|
27
|
+
async function readResponseBody(res) {
|
|
28
|
+
const contentType = res.headers.get("content-type") || "";
|
|
29
|
+
if (contentType.includes("application/json")) {
|
|
30
|
+
try {
|
|
31
|
+
return await res.json();
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return await res.text();
|
|
38
|
+
}
|
|
39
|
+
function buildFetchOptions(input) {
|
|
40
|
+
const fetchOptions = {
|
|
41
|
+
method: input.method,
|
|
42
|
+
headers: {
|
|
43
|
+
"Content-Type": "application/json",
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
if (input.body)
|
|
47
|
+
fetchOptions.body = input.body;
|
|
48
|
+
return fetchOptions;
|
|
49
|
+
}
|
|
50
|
+
export async function handleX402PayAndFetch(raw) {
|
|
51
|
+
const input = x402PayAndFetchSchema.parse(raw);
|
|
52
|
+
try {
|
|
53
|
+
await assertSafeFetchUrl(input.url);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
return fail("SSRF_BLOCKED", err instanceof Error ? err.message.replace(/^SSRF_BLOCKED:\s*/, "") : String(err), false, "x402_pay_and_fetch");
|
|
57
|
+
}
|
|
58
|
+
const staticPolicy = evaluateActionPolicy({
|
|
59
|
+
actionType: "x402_pay_and_fetch",
|
|
60
|
+
url: input.url,
|
|
61
|
+
paymentAmountUsdc: input.maxPaymentUsdc,
|
|
62
|
+
paymentTokenAddress: X402_PAYMENT_TOKEN_ADDRESS,
|
|
63
|
+
chainId: CHAIN_ID,
|
|
64
|
+
environment: PHAROS_ENVIRONMENT,
|
|
65
|
+
isMainnet: false,
|
|
66
|
+
});
|
|
67
|
+
if (staticPolicy.decision === "BLOCK") {
|
|
68
|
+
return fail("POLICY_BLOCKED", staticPolicy.reasons.join(" ") || "x402 request blocked by SafeHands policy.", false, "x402_pay_and_fetch");
|
|
69
|
+
}
|
|
70
|
+
const fetchOptions = buildFetchOptions(input);
|
|
71
|
+
try {
|
|
72
|
+
const initial = await fetchWithTimeoutAndRetry(input.url, {
|
|
73
|
+
...fetchOptions,
|
|
74
|
+
timeoutMs: 10_000,
|
|
75
|
+
retries: 1,
|
|
76
|
+
retryDelayMs: 250,
|
|
77
|
+
});
|
|
78
|
+
if (initial.status !== 402) {
|
|
79
|
+
const data = await readResponseBody(initial);
|
|
80
|
+
return ok({
|
|
81
|
+
status: initial.status,
|
|
82
|
+
statusText: initial.statusText,
|
|
83
|
+
data,
|
|
84
|
+
paymentExecuted: false,
|
|
85
|
+
paymentDetails: null,
|
|
86
|
+
chainId: CHAIN_ID,
|
|
87
|
+
environment: PHAROS_ENVIRONMENT,
|
|
88
|
+
isMainnet: false,
|
|
89
|
+
policy: staticPolicy,
|
|
90
|
+
source: "x402_fetch",
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
const writeGuard = requireWriteToolsEnabled("x402_pay_and_fetch");
|
|
94
|
+
if (writeGuard)
|
|
95
|
+
return writeGuard;
|
|
96
|
+
const signer = await getSigner(input.agentId, { purpose: "x402" });
|
|
97
|
+
if (isSignerFailure(signer)) {
|
|
98
|
+
return fail("X402_PAYMENT_REQUIRED", `The resource returned HTTP 402, but no safe x402 signer is available: ${signer.error.message}`, false, "x402_pay_and_fetch");
|
|
99
|
+
}
|
|
100
|
+
const paymentPolicy = evaluateActionPolicy({
|
|
101
|
+
actionType: "x402_pay_and_fetch",
|
|
102
|
+
url: input.url,
|
|
103
|
+
paymentAmountUsdc: input.maxPaymentUsdc,
|
|
104
|
+
paymentTokenAddress: X402_PAYMENT_TOKEN_ADDRESS,
|
|
105
|
+
chainId: CHAIN_ID,
|
|
106
|
+
environment: PHAROS_ENVIRONMENT,
|
|
107
|
+
isMainnet: false,
|
|
108
|
+
signerAvailable: true,
|
|
109
|
+
requiresSigner: true,
|
|
110
|
+
});
|
|
111
|
+
if (paymentPolicy.decision === "BLOCK") {
|
|
112
|
+
return fail("POLICY_BLOCKED", paymentPolicy.reasons.join(" ") || "x402 payment blocked by SafeHands policy.", false, "x402_pay_and_fetch");
|
|
113
|
+
}
|
|
114
|
+
const rpc = input.rpcUrl || process.env.PHAROS_RPC_URL || RPC_URL;
|
|
115
|
+
const client = new x402Client();
|
|
116
|
+
registerExactEvmScheme(client, {
|
|
117
|
+
signer: signer.account,
|
|
118
|
+
schemeOptions: {
|
|
119
|
+
[CHAIN_ID]: { rpcUrl: rpc },
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
const fetchWithPayment = wrapFetchWithPayment(fetch, client);
|
|
123
|
+
const paidResponse = await fetchWithPayment(input.url, fetchOptions);
|
|
124
|
+
const data = await readResponseBody(paidResponse);
|
|
125
|
+
const paymentResponseHeader = paidResponse.headers.get("PAYMENT-RESPONSE");
|
|
126
|
+
return ok({
|
|
127
|
+
status: paidResponse.status,
|
|
128
|
+
statusText: paidResponse.statusText,
|
|
129
|
+
data,
|
|
130
|
+
paymentExecuted: !!paymentResponseHeader,
|
|
131
|
+
paymentDetails: paymentResponseHeader
|
|
132
|
+
? {
|
|
133
|
+
headerRedacted: true,
|
|
134
|
+
note: "PAYMENT-RESPONSE header was present but intentionally not exposed to avoid leaking signed payment data.",
|
|
135
|
+
}
|
|
136
|
+
: null,
|
|
137
|
+
signerMode: signer.mode,
|
|
138
|
+
walletAddress: signer.address,
|
|
139
|
+
paymentToken: X402_PAYMENT_TOKEN_ADDRESS,
|
|
140
|
+
maxPaymentUsdc: input.maxPaymentUsdc,
|
|
141
|
+
chainId: CHAIN_ID,
|
|
142
|
+
environment: PHAROS_ENVIRONMENT,
|
|
143
|
+
isMainnet: false,
|
|
144
|
+
policy: paymentPolicy,
|
|
145
|
+
testnetPayment: true,
|
|
146
|
+
source: "x402_fetch",
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
return fail("X402_PAYMENT_FAILED", err instanceof Error ? err.message : String(err), true, "x402_pay_and_fetch");
|
|
151
|
+
}
|
|
152
|
+
}
|
|
150
153
|
//# sourceMappingURL=x402PayAndFetch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402PayAndFetch.js","sourceRoot":"","sources":["../../src/tools/x402PayAndFetch.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,qEAAqE;AACrE,gFAAgF;AAChF,4EAA4E;AAE5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAC/H,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"x402PayAndFetch.js","sourceRoot":"","sources":["../../src/tools/x402PayAndFetch.ts"],"names":[],"mappings":"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"}
|
package/dist/x402Server.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=x402Server.d.ts.map
|