@agentcash/router 0.4.4 → 0.4.6
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/dist/index.cjs +26 -2
- package/dist/index.js +26 -2
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -354,6 +354,12 @@ async function verifyX402Payment(server, request, routeEntry, price, payeeAddres
|
|
|
354
354
|
}
|
|
355
355
|
async function settleX402Payment(server, payload, requirements) {
|
|
356
356
|
const { encodePaymentResponseHeader } = await import("@x402/core/http");
|
|
357
|
+
const payloadKeys = typeof payload === "object" && payload !== null ? Object.keys(payload).sort().join(",") : "n/a";
|
|
358
|
+
const reqKeys = typeof requirements === "object" && requirements !== null ? Object.keys(requirements).sort().join(",") : "n/a";
|
|
359
|
+
console.info("x402 settle input", {
|
|
360
|
+
payloadKeys,
|
|
361
|
+
requirementsKeys: reqKeys
|
|
362
|
+
});
|
|
357
363
|
const result = await server.settlePayment(payload, requirements);
|
|
358
364
|
const encoded = encodePaymentResponseHeader(result);
|
|
359
365
|
return { encoded, result };
|
|
@@ -688,6 +694,7 @@ function createRequestHandler(routeEntry, handler, deps) {
|
|
|
688
694
|
deps.network
|
|
689
695
|
);
|
|
690
696
|
if (!verify?.valid) return await build402(request, routeEntry, deps, meta, pluginCtx);
|
|
697
|
+
const { payload: verifyPayload, requirements: verifyRequirements } = verify;
|
|
691
698
|
pluginCtx.setVerifiedWallet(verify.payer);
|
|
692
699
|
firePluginHook(deps.plugin, "onPaymentVerified", pluginCtx, {
|
|
693
700
|
protocol: "x402",
|
|
@@ -705,10 +712,19 @@ function createRequestHandler(routeEntry, handler, deps) {
|
|
|
705
712
|
);
|
|
706
713
|
if (response.status < 400) {
|
|
707
714
|
try {
|
|
715
|
+
const payloadFingerprint = typeof verifyPayload === "object" && verifyPayload !== null ? {
|
|
716
|
+
keys: Object.keys(verifyPayload).sort().join(","),
|
|
717
|
+
payloadType: typeof verifyPayload
|
|
718
|
+
} : { payloadType: typeof verifyPayload };
|
|
719
|
+
console.info("Settlement attempt", {
|
|
720
|
+
route: routeEntry.key,
|
|
721
|
+
network: deps.network,
|
|
722
|
+
...payloadFingerprint
|
|
723
|
+
});
|
|
708
724
|
const settle = await settleX402Payment(
|
|
709
725
|
deps.x402Server,
|
|
710
|
-
|
|
711
|
-
|
|
726
|
+
verifyPayload,
|
|
727
|
+
verifyRequirements
|
|
712
728
|
);
|
|
713
729
|
response.headers.set("PAYMENT-RESPONSE", settle.encoded);
|
|
714
730
|
firePluginHook(deps.plugin, "onPaymentSettled", pluginCtx, {
|
|
@@ -718,6 +734,14 @@ function createRequestHandler(routeEntry, handler, deps) {
|
|
|
718
734
|
network: deps.network
|
|
719
735
|
});
|
|
720
736
|
} catch (err) {
|
|
737
|
+
const errObj = err;
|
|
738
|
+
console.error("Settlement failed", {
|
|
739
|
+
message: err instanceof Error ? err.message : String(err),
|
|
740
|
+
route: routeEntry.key,
|
|
741
|
+
network: deps.network,
|
|
742
|
+
facilitatorStatus: errObj.response?.status,
|
|
743
|
+
facilitatorBody: errObj.response?.data ?? errObj.response?.body
|
|
744
|
+
});
|
|
721
745
|
firePluginHook(deps.plugin, "onAlert", pluginCtx, {
|
|
722
746
|
level: "critical",
|
|
723
747
|
message: `Settlement failed: ${err instanceof Error ? err.message : String(err)}`,
|
package/dist/index.js
CHANGED
|
@@ -320,6 +320,12 @@ async function verifyX402Payment(server, request, routeEntry, price, payeeAddres
|
|
|
320
320
|
}
|
|
321
321
|
async function settleX402Payment(server, payload, requirements) {
|
|
322
322
|
const { encodePaymentResponseHeader } = await import("@x402/core/http");
|
|
323
|
+
const payloadKeys = typeof payload === "object" && payload !== null ? Object.keys(payload).sort().join(",") : "n/a";
|
|
324
|
+
const reqKeys = typeof requirements === "object" && requirements !== null ? Object.keys(requirements).sort().join(",") : "n/a";
|
|
325
|
+
console.info("x402 settle input", {
|
|
326
|
+
payloadKeys,
|
|
327
|
+
requirementsKeys: reqKeys
|
|
328
|
+
});
|
|
323
329
|
const result = await server.settlePayment(payload, requirements);
|
|
324
330
|
const encoded = encodePaymentResponseHeader(result);
|
|
325
331
|
return { encoded, result };
|
|
@@ -654,6 +660,7 @@ function createRequestHandler(routeEntry, handler, deps) {
|
|
|
654
660
|
deps.network
|
|
655
661
|
);
|
|
656
662
|
if (!verify?.valid) return await build402(request, routeEntry, deps, meta, pluginCtx);
|
|
663
|
+
const { payload: verifyPayload, requirements: verifyRequirements } = verify;
|
|
657
664
|
pluginCtx.setVerifiedWallet(verify.payer);
|
|
658
665
|
firePluginHook(deps.plugin, "onPaymentVerified", pluginCtx, {
|
|
659
666
|
protocol: "x402",
|
|
@@ -671,10 +678,19 @@ function createRequestHandler(routeEntry, handler, deps) {
|
|
|
671
678
|
);
|
|
672
679
|
if (response.status < 400) {
|
|
673
680
|
try {
|
|
681
|
+
const payloadFingerprint = typeof verifyPayload === "object" && verifyPayload !== null ? {
|
|
682
|
+
keys: Object.keys(verifyPayload).sort().join(","),
|
|
683
|
+
payloadType: typeof verifyPayload
|
|
684
|
+
} : { payloadType: typeof verifyPayload };
|
|
685
|
+
console.info("Settlement attempt", {
|
|
686
|
+
route: routeEntry.key,
|
|
687
|
+
network: deps.network,
|
|
688
|
+
...payloadFingerprint
|
|
689
|
+
});
|
|
674
690
|
const settle = await settleX402Payment(
|
|
675
691
|
deps.x402Server,
|
|
676
|
-
|
|
677
|
-
|
|
692
|
+
verifyPayload,
|
|
693
|
+
verifyRequirements
|
|
678
694
|
);
|
|
679
695
|
response.headers.set("PAYMENT-RESPONSE", settle.encoded);
|
|
680
696
|
firePluginHook(deps.plugin, "onPaymentSettled", pluginCtx, {
|
|
@@ -684,6 +700,14 @@ function createRequestHandler(routeEntry, handler, deps) {
|
|
|
684
700
|
network: deps.network
|
|
685
701
|
});
|
|
686
702
|
} catch (err) {
|
|
703
|
+
const errObj = err;
|
|
704
|
+
console.error("Settlement failed", {
|
|
705
|
+
message: err instanceof Error ? err.message : String(err),
|
|
706
|
+
route: routeEntry.key,
|
|
707
|
+
network: deps.network,
|
|
708
|
+
facilitatorStatus: errObj.response?.status,
|
|
709
|
+
facilitatorBody: errObj.response?.data ?? errObj.response?.body
|
|
710
|
+
});
|
|
687
711
|
firePluginHook(deps.plugin, "onAlert", pluginCtx, {
|
|
688
712
|
level: "critical",
|
|
689
713
|
message: `Settlement failed: ${err instanceof Error ? err.message : String(err)}`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentcash/router",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"description": "Unified route builder for Next.js App Router APIs with x402, MPP, SIWX, and API key auth",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@x402/core": "^2.3.0",
|
|
29
29
|
"@x402/evm": "^2.3.0",
|
|
30
30
|
"@x402/extensions": "^2.3.0",
|
|
31
|
-
"mppx": "^0.
|
|
31
|
+
"mppx": "^0.2.0",
|
|
32
32
|
"next": ">=15.0.0",
|
|
33
33
|
"zod": "^4.0.0",
|
|
34
34
|
"zod-openapi": "^5.0.0"
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@x402/evm": "^2.3.0",
|
|
48
48
|
"@x402/extensions": "^2.3.0",
|
|
49
49
|
"eslint": "^10.0.0",
|
|
50
|
-
"mppx": "^0.
|
|
50
|
+
"mppx": "^0.2.0",
|
|
51
51
|
"next": "^15.0.0",
|
|
52
52
|
"prettier": "^3.8.1",
|
|
53
53
|
"react": "^19.0.0",
|