@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 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
- verify.payload,
711
- verify.requirements
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
- verify.payload,
677
- verify.requirements
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.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.1.1",
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.1.1",
50
+ "mppx": "^0.2.0",
51
51
  "next": "^15.0.0",
52
52
  "prettier": "^3.8.1",
53
53
  "react": "^19.0.0",