@xona-labs/xpay 0.1.3 → 0.1.5

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 CHANGED
@@ -6,6 +6,63 @@ versioning follows [Semantic Versioning](https://semver.org/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.5] – 2026-05-26
10
+
11
+ ### Added
12
+ - **`UseResult.txSig` is now populated on SVM v2 calls** — extracted from
13
+ the facilitator's `PAYMENT-RESPONSE` (or `X-PAYMENT-RESPONSE`) header,
14
+ which carries the canonical `SettleResponse` envelope (base64 JSON).
15
+ Previously `useByUrl()` returned `txSig: undefined` for v2 because the
16
+ facilitator (not the client) broadcasts the transaction.
17
+ - **`UseResult.settlement?: SettleEnvelope`** — full settle envelope from
18
+ the facilitator when present: `{ transaction, payer?, network, amount?,
19
+ success?, extensions?, extra? }`. Useful for reconciliation
20
+ (payer address, actual settled amount in `upto`-style schemes, etc.).
21
+
22
+ ### Verified
23
+ - Live against `api.xona-agent.com/audio/x-text-to-speech` — 200 OK,
24
+ $0.01 USDC settled, real on-chain signature
25
+ (`3puHTvEY…EpEHi`) returned in both `txSig` and `settlement.transaction`.
26
+
27
+ ## [0.1.4] – 2026-05-26
28
+
29
+ ### Fixed
30
+ - **`useByUrl()` against canonical x402 SVM v2 servers** — the SDK now signs
31
+ but does **not** broadcast the USDC transfer, and sends the canonical
32
+ `PaymentPayloadV2` envelope (`{ x402Version, accepted, payload: { transaction } }`)
33
+ base64-encoded in the `X-Payment` header. The facilitator verifies + settles.
34
+ Verified live against `api.xona-agent.com` (200 OK, $0.01 USDC settled, real
35
+ upstream response returned).
36
+ - 0.1.3 was sending a v1-style `txSig`-only header after a client-side
37
+ broadcast, which spec-compliant facilitators (incl. `api.xona-agent.com`)
38
+ reject with `"Unsupported x402 payload"`.
39
+
40
+ ### Added
41
+ - New `Signer.getKitSigner?()` (optional, additive) — returns a `@solana/kit`
42
+ `TransactionSigner`. `rawSolanaSigner` implements it out of the box.
43
+ Custom signers (KMS/MPC) implementing it gain canonical x402 v2 support
44
+ for SVM endpoints; existing custom signers without it keep working via
45
+ the legacy broadcast-then-`txSig` path for non-SVM networks.
46
+ - New module `src/x402/svm-payment.ts` — wraps `@x402/svm`'s
47
+ `ExactSvmScheme.createPaymentPayload` and assembles the canonical
48
+ `PaymentPayloadV2` envelope. Used by `useByUrl()` for any network matching
49
+ `solana` / `solana:*` / `solana-*`.
50
+
51
+ ### Dependencies
52
+ - `@x402/core`, `@x402/svm` — canonical x402 encoding (no spec drift).
53
+ - `@solana/kit` — pulled in transitively by `@x402/svm`; used to construct
54
+ `TransactionSigner` instances from existing `@solana/web3.js` Keypairs via
55
+ `createKeyPairSignerFromBytes`.
56
+
57
+ ### Notes
58
+ - `txSig` in the returned `UseResult` is **undefined** for SVM v2 calls (the
59
+ facilitator broadcasts; we never see the resulting signature client-side).
60
+ Downstream reconciliation can still use the upstream response + your own
61
+ correlationId in your DB.
62
+ - Direct `transfer()` is unchanged — still uses `signer.pay()` (broadcasts
63
+ client-side, returns the real `txSig`), since there's no facilitator in
64
+ the direct-transfer path.
65
+
9
66
  ## [0.1.3] – 2026-05-26
10
67
 
11
68
  ### Fixed
@@ -74,7 +131,9 @@ Initial public release.
74
131
  Desktop, Cursor, Codex.
75
132
  - LLM tool exporters: `forClaude(xpay)`, `forOpenAI(xpay)`, `forGemini(xpay)`.
76
133
 
77
- [Unreleased]: https://github.com/xona-labs/xpay/compare/v0.1.3...HEAD
134
+ [Unreleased]: https://github.com/xona-labs/xpay/compare/v0.1.5...HEAD
135
+ [0.1.5]: https://github.com/xona-labs/xpay/compare/v0.1.4...v0.1.5
136
+ [0.1.4]: https://github.com/xona-labs/xpay/compare/v0.1.3...v0.1.4
78
137
  [0.1.3]: https://github.com/xona-labs/xpay/compare/v0.1.2...v0.1.3
79
138
  [0.1.2]: https://github.com/xona-labs/xpay/compare/v0.1.0...v0.1.2
80
139
  [0.1.0]: https://github.com/xona-labs/xpay/releases/tag/v0.1.0
@@ -1 +1 @@
1
- {"version":3,"file":"raw-solana.d.ts","sourceRoot":"","sources":["../../src/signers/raw-solana.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EAAsB,MAAM,EAAE,MAAM,aAAa,CAAC;AAO9D,MAAM,WAAW,sBAAsB;IACrC,4DAA4D;IAC5D,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CA6DpE"}
1
+ {"version":3,"file":"raw-solana.d.ts","sourceRoot":"","sources":["../../src/signers/raw-solana.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EAAsB,MAAM,EAAE,MAAM,aAAa,CAAC;AAO9D,MAAM,WAAW,sBAAsB;IACrC,4DAA4D;IAC5D,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAwEpE"}
@@ -23,6 +23,16 @@ export function rawSolanaSigner(opts) {
23
23
  const sig = nacl.sign.detached(message, keypair.secretKey);
24
24
  return sig;
25
25
  },
26
+ /**
27
+ * Provide a `@solana/kit` TransactionSigner derived from our Keypair so
28
+ * `useByUrl()` can use `@x402/svm` for canonical x402 SVM v2 payloads.
29
+ */
30
+ async getKitSigner() {
31
+ // Dynamic import — keeps @solana/signers off the hot path for users
32
+ // who never call useByUrl against an SVM endpoint.
33
+ const { createKeyPairSignerFromBytes } = await import("@solana/signers");
34
+ return createKeyPairSignerFromBytes(keypair.secretKey);
35
+ },
26
36
  async balance() {
27
37
  try {
28
38
  const mint = new PublicKey(USDC_MINT_MAINNET);
@@ -1 +1 @@
1
- {"version":3,"file":"raw-solana.js","sourceRoot":"","sources":["../../src/signers/raw-solana.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raw-solana.js","sourceRoot":"","sources":["../../src/signers/raw-solana.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -154,6 +154,29 @@ export declare const ResourceSchema: z.ZodObject<{
154
154
  outputSchema?: Record<string, unknown> | null | undefined;
155
155
  }>;
156
156
  export type Resource = z.infer<typeof ResourceSchema>;
157
+ /**
158
+ * Facilitator settle envelope, mirrored from the canonical x402
159
+ * `PAYMENT-RESPONSE` header. Present on x402 v2 calls when the facilitator
160
+ * echoes settlement details back to the client; absent on legacy v1 calls.
161
+ */
162
+ export interface SettleEnvelope {
163
+ /** Settlement signature / on-chain tx hash. */
164
+ transaction: string;
165
+ /** Address that paid (typically the wallet that signed). */
166
+ payer?: string;
167
+ /** Network identifier in the form the facilitator reports (often CAIP-2). */
168
+ network: string;
169
+ /**
170
+ * Actual amount settled in atomic token units. Equal to the requested
171
+ * amount for `exact` schemes; may differ for `upto` etc.
172
+ */
173
+ amount?: string;
174
+ /** Indicator from the facilitator. */
175
+ success?: boolean;
176
+ /** Provider-specific extensions / extra metadata. */
177
+ extensions?: Record<string, unknown>;
178
+ extra?: Record<string, unknown>;
179
+ }
157
180
  /** Result returned by {@link XPay.use}. */
158
181
  export interface UseResult {
159
182
  /** Decoded response body (JSON if possible, else string). */
@@ -164,8 +187,17 @@ export interface UseResult {
164
187
  network: Network;
165
188
  /** Atomic amount paid. */
166
189
  amountPaid: string;
167
- /** Settlement signature / tx hash, if available. */
190
+ /**
191
+ * Settlement signature. For SVM v2 calls this comes from the facilitator
192
+ * via the `PAYMENT-RESPONSE` header (we never broadcast client-side).
193
+ * For legacy / EVM v1 calls this is the client-broadcast tx signature.
194
+ */
168
195
  txSig?: string;
196
+ /**
197
+ * Full settle envelope from the facilitator, when present in the response.
198
+ * Useful for reconciliation (payer address, actual settled amount, …).
199
+ */
200
+ settlement?: SettleEnvelope;
169
201
  }
170
202
  /** Options passed to {@link XPay.discover}. */
171
203
  export interface DiscoverOptions {
@@ -195,5 +227,17 @@ export interface Signer {
195
227
  * the signer doesn't implement it.
196
228
  */
197
229
  balance?(): Promise<number>;
230
+ /**
231
+ * Optional: return a `@solana/kit` `TransactionSigner` for canonical x402
232
+ * SVM v2 payment payloads. When present, `useByUrl()` will sign the
233
+ * payment transaction without broadcasting and let the facilitator settle;
234
+ * when absent, it falls back to the legacy `pay()` (sign + broadcast,
235
+ * txSig in `X-Payment`).
236
+ *
237
+ * For built-in `rawSolanaSigner` this is implemented out of the box. Custom
238
+ * signers (KMS / MPC) that want v2 support implement it against their
239
+ * signing service.
240
+ */
241
+ getKitSigner?(): Promise<unknown>;
198
242
  }
199
243
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8FAA8F;AAC9F,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE/F;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;IACnC,qDAAqD;;IAErD,yBAAyB;;IAEzB,sEAAsE;;IAEtE,wCAAwC;;IAExC,mFAAmF;;IAEnF,iDAAiD;;;;IAIjD,wEAAwE;;;;;;;;;;;;;;;;;;;;;;EAExE,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;IACzB,sDAAsD;;IAEtD,6DAA6D;;IAE7D,6BAA6B;;IAE7B,6CAA6C;;IAE7C,oCAAoC;;QAnCpC,qDAAqD;;QAErD,yBAAyB;;QAEzB,sEAAsE;;QAEtE,wCAAwC;;QAExC,mFAAmF;;QAEnF,iDAAiD;;;;QAIjD,wEAAwE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BxE,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,6DAA6D;IAC7D,IAAI,EAAE,OAAO,CAAC;IACd,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8FAA8F;AAC9F,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE/F;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;IACnC,qDAAqD;;IAErD,yBAAyB;;IAEzB,sEAAsE;;IAEtE,wCAAwC;;IAExC,mFAAmF;;IAEnF,iDAAiD;;;;IAIjD,wEAAwE;;;;;;;;;;;;;;;;;;;;;;EAExE,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;IACzB,sDAAsD;;IAEtD,6DAA6D;;IAE7D,6BAA6B;;IAE7B,6CAA6C;;IAE7C,oCAAoC;;QAnCpC,qDAAqD;;QAErD,yBAAyB;;QAEzB,sEAAsE;;QAEtE,wCAAwC;;QAExC,mFAAmF;;QAEnF,iDAAiD;;;;QAIjD,wEAAwE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BxE,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,6DAA6D;IAC7D,IAAI,EAAE,OAAO,CAAC;IACd,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,YAAY,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/use/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAO3D;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAcrE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/use/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIvD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAO3D;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAcrE"}
package/dist/use/index.js CHANGED
@@ -11,7 +11,8 @@
11
11
  *
12
12
  * Both paths converge on the same {@link UseResult}.
13
13
  */
14
- import { extractRequirements } from "../x402/extract.js";
14
+ import { extractRequirements, extractSettleEnvelope } from "../x402/extract.js";
15
+ import { buildSvmPaymentHeader, isSvmNetwork } from "../x402/svm-payment.js";
15
16
  export async function use(args) {
16
17
  // If we have accepts up front, take the fast path.
17
18
  if (args.resource.accepts.length > 0) {
@@ -42,11 +43,9 @@ async function useWithRequirements(args, reqs) {
42
43
  }
43
44
  // Guardrail runs *before* signing — this is the security boundary.
44
45
  await args.guardrail.check({ resource: args.resource, requirement: req });
45
- const network = normalizeNetwork(req.network);
46
- const signer = args.wallet.signer(network);
47
- const txSig = await signer.pay(req);
48
- const res = await callResource(args, paymentHeader(req, txSig, args.resource.x402Version ?? 1));
49
- return finalize(res, network, req.amount ?? "0", txSig);
46
+ const settled = await settle(args, req, args.resource.x402Version ?? 1);
47
+ const res = await callResource(args, settled.header);
48
+ return finalize(res, settled.network, req.amount ?? "0", settled.txSig);
50
49
  }
51
50
  async function useWithLiveChallenge(args) {
52
51
  // Step 1: probe without payment.
@@ -66,12 +65,38 @@ async function useWithLiveChallenge(args) {
66
65
  throw new Error(`xpay.use: ${args.resource.resource} accepts ${reqs.map((r) => r.network).join(", ")} but wallet has no matching signer`);
67
66
  }
68
67
  await args.guardrail.check({ resource: args.resource, requirement: req });
68
+ const settled = await settle(args, req, 2);
69
+ // Step 3: retry with X-Payment.
70
+ const res = await callResource(args, settled.header);
71
+ return finalize(res, settled.network, req.amount ?? "0", settled.txSig);
72
+ }
73
+ /**
74
+ * Sign/settle a payment per the requirement and return the X-Payment header
75
+ * value plus accounting fields. Picks the right encoding by network:
76
+ *
77
+ * SVM (solana / solana:*) + signer has getKitSigner →
78
+ * canonical x402 v2 — sign-but-don't-broadcast, header carries the
79
+ * signed tx, facilitator settles. Returns header only (no txSig until
80
+ * the upstream call comes back).
81
+ *
82
+ * Anything else (EVM facilitators, legacy v1 SVM) →
83
+ * legacy path: signer.pay() broadcasts, header carries the txSig.
84
+ */
85
+ async function settle(args, req, x402Version) {
69
86
  const network = normalizeNetwork(req.network);
70
87
  const signer = args.wallet.signer(network);
88
+ if (isSvmNetwork(req.network) && typeof signer.getKitSigner === "function") {
89
+ const kitSigner = await signer.getKitSigner();
90
+ const header = await buildSvmPaymentHeader({
91
+ kitSigner,
92
+ requirement: req,
93
+ x402Version,
94
+ });
95
+ return { header, network };
96
+ }
97
+ // Legacy path — sign + broadcast on our side, send txSig in the header.
71
98
  const txSig = await signer.pay(req);
72
- // Step 3: retry with X-Payment.
73
- const res = await callResource(args, paymentHeader(req, txSig, 2));
74
- return finalize(res, network, req.amount ?? "0", txSig);
99
+ return { header: paymentHeader(req, txSig, x402Version), network, txSig };
75
100
  }
76
101
  async function callResource(args, paymentHeader) {
77
102
  const headers = {
@@ -104,12 +129,17 @@ function finalize(raw, network, amountPaid, txSig) {
104
129
  if (!raw.res.ok) {
105
130
  throw new Error(`xpay.use: ${raw.res.status} ${raw.res.statusText} — ${typeof raw.data === "string" ? raw.data : JSON.stringify(raw.data)}`);
106
131
  }
132
+ // For SVM v2 calls the facilitator broadcasts and echoes settlement details
133
+ // in the `PAYMENT-RESPONSE` header. If present, prefer its signature over
134
+ // any locally-broadcast `txSig` (which only exists on the legacy v1 path).
135
+ const settlement = extractSettleEnvelope(raw.res.headers);
107
136
  return {
108
137
  data: raw.data,
109
138
  status: raw.res.status,
110
139
  network,
111
140
  amountPaid,
112
- txSig,
141
+ txSig: settlement?.transaction ?? txSig,
142
+ settlement,
113
143
  };
114
144
  }
115
145
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/use/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/use/index.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@
14
14
  *
15
15
  * Shared by `probe()` and `useByUrl()`.
16
16
  */
17
- import type { PaymentRequirement } from "../types.js";
17
+ import type { PaymentRequirement, SettleEnvelope } from "../types.js";
18
18
  export interface ExtractedRequirements {
19
19
  accepts: PaymentRequirement[];
20
20
  source?: "body" | "header";
@@ -26,5 +26,13 @@ export declare function extractRequirements(headers: Headers, body: unknown): Ex
26
26
  * envelopes, single objects, and field-name variants.
27
27
  */
28
28
  export declare function parseChallenge(data: unknown): PaymentRequirement[];
29
+ /**
30
+ * Decode the facilitator's settle envelope from the upstream response headers.
31
+ * Returns undefined when no recognized header is present or parsing fails.
32
+ *
33
+ * Header value is base64-encoded JSON of `SettleResponse`. Falls back to raw
34
+ * JSON if base64 decode fails (some facilitators ship it un-encoded).
35
+ */
36
+ export declare function extractSettleEnvelope(headers: Headers): SettleEnvelope | undefined;
29
37
  export declare function detectVersion(data: unknown): number | undefined;
30
38
  //# sourceMappingURL=extract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/x402/extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAaD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,qBAAqB,CAmB1F;AAwCD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAIlE;AAsDD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQ/D"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/x402/extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAaD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,qBAAqB,CAmB1F;AAwCD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAIlE;AA4DD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CA8BlF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQ/D"}
@@ -142,6 +142,50 @@ function normalizeRequirement(o) {
142
142
  extra: isObj(o.extra) ? o.extra : undefined,
143
143
  };
144
144
  }
145
+ /** Header names a facilitator might use to echo the settle response back. */
146
+ const SETTLE_HEADER_CANDIDATES = [
147
+ "payment-response",
148
+ "x-payment-response",
149
+ ];
150
+ /**
151
+ * Decode the facilitator's settle envelope from the upstream response headers.
152
+ * Returns undefined when no recognized header is present or parsing fails.
153
+ *
154
+ * Header value is base64-encoded JSON of `SettleResponse`. Falls back to raw
155
+ * JSON if base64 decode fails (some facilitators ship it un-encoded).
156
+ */
157
+ export function extractSettleEnvelope(headers) {
158
+ for (const name of SETTLE_HEADER_CANDIDATES) {
159
+ const raw = headers.get(name);
160
+ if (!raw)
161
+ continue;
162
+ let decoded;
163
+ try {
164
+ decoded = JSON.parse(Buffer.from(raw, "base64").toString("utf8"));
165
+ }
166
+ catch {
167
+ try {
168
+ decoded = JSON.parse(raw);
169
+ }
170
+ catch {
171
+ continue;
172
+ }
173
+ }
174
+ if (isObj(decoded) && typeof decoded.transaction === "string" && decoded.transaction.length > 0) {
175
+ const d = decoded;
176
+ return {
177
+ transaction: d.transaction,
178
+ payer: typeof d.payer === "string" ? d.payer : undefined,
179
+ network: typeof d.network === "string" ? d.network : "",
180
+ amount: typeof d.amount === "string" ? d.amount : undefined,
181
+ success: typeof d.success === "boolean" ? d.success : undefined,
182
+ extensions: isObj(d.extensions) ? d.extensions : undefined,
183
+ extra: isObj(d.extra) ? d.extra : undefined,
184
+ };
185
+ }
186
+ }
187
+ return undefined;
188
+ }
145
189
  export function detectVersion(data) {
146
190
  if (isObj(data)) {
147
191
  const v = data.x402Version;
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/x402/extract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/x402/extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Build the canonical x402 SVM v2 `X-Payment` header value using `@x402/svm`.
3
+ *
4
+ * Spec flow:
5
+ * client signs (does NOT broadcast) → header carries the signed tx →
6
+ * facilitator verifies + broadcasts on the server side.
7
+ *
8
+ * This is the path xPay 0.1.4+ takes for Solana endpoints reporting
9
+ * `x402Version >= 2` (CAIP networks like `solana:5eykt4…`). Legacy 0.1.x
10
+ * sent a sign-and-broadcast `txSig` header which is *not* what the
11
+ * canonical x402 servers expect — your endpoint would 4xx on the retry.
12
+ *
13
+ * Inputs (the `PaymentRequirement` xPay parsed from the 402 challenge) are
14
+ * normalized into `@x402/core/types`'s `PaymentRequirements` shape.
15
+ */
16
+ import type { PaymentRequirement } from "../types.js";
17
+ export interface BuildSvmPaymentArgs {
18
+ /** A `@solana/kit` TransactionSigner — from `signer.getKitSigner()`. */
19
+ kitSigner: unknown;
20
+ /** What the server's 402 told us we owe. */
21
+ requirement: PaymentRequirement;
22
+ /** Optional override RPC URL passed through to `@x402/svm`. */
23
+ rpcUrl?: string;
24
+ /** x402 protocol version observed in the challenge. Defaults to 2. */
25
+ x402Version?: number;
26
+ }
27
+ /**
28
+ * Returns the value of the `X-Payment` header (base64 of canonical JSON
29
+ * envelope), ready to attach to the retry request.
30
+ */
31
+ export declare function buildSvmPaymentHeader(args: BuildSvmPaymentArgs): Promise<string>;
32
+ /** True when this network requires the canonical x402 SVM v2 payload. */
33
+ export declare function isSvmNetwork(network: string): boolean;
34
+ //# sourceMappingURL=svm-payment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svm-payment.d.ts","sourceRoot":"","sources":["../../src/x402/svm-payment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,WAAW,EAAE,kBAAkB,CAAC;IAChC,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCtF;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Build the canonical x402 SVM v2 `X-Payment` header value using `@x402/svm`.
3
+ *
4
+ * Spec flow:
5
+ * client signs (does NOT broadcast) → header carries the signed tx →
6
+ * facilitator verifies + broadcasts on the server side.
7
+ *
8
+ * This is the path xPay 0.1.4+ takes for Solana endpoints reporting
9
+ * `x402Version >= 2` (CAIP networks like `solana:5eykt4…`). Legacy 0.1.x
10
+ * sent a sign-and-broadcast `txSig` header which is *not* what the
11
+ * canonical x402 servers expect — your endpoint would 4xx on the retry.
12
+ *
13
+ * Inputs (the `PaymentRequirement` xPay parsed from the 402 challenge) are
14
+ * normalized into `@x402/core/types`'s `PaymentRequirements` shape.
15
+ */
16
+ import { ExactSvmScheme } from "@x402/svm";
17
+ /**
18
+ * Returns the value of the `X-Payment` header (base64 of canonical JSON
19
+ * envelope), ready to attach to the retry request.
20
+ */
21
+ export async function buildSvmPaymentHeader(args) {
22
+ const version = args.x402Version ?? 2;
23
+ // Canonical v2 PaymentRequirements (per @x402/core/schemas):
24
+ // { payTo, amount, asset, network, scheme, maxTimeoutSeconds, extra? }
25
+ // Note resource/description/mimeType are on the outer PaymentRequired
26
+ // envelope in v2, NOT on the requirements item itself.
27
+ const requirements = {
28
+ payTo: args.requirement.payTo,
29
+ amount: args.requirement.amount ?? "0",
30
+ asset: args.requirement.asset,
31
+ network: args.requirement.network,
32
+ scheme: args.requirement.scheme || "exact",
33
+ maxTimeoutSeconds: args.requirement.maxTimeoutSeconds ?? 300,
34
+ extra: args.requirement.extra ?? undefined,
35
+ };
36
+ // ExactSvmScheme's signer type is the @solana/kit TransactionSigner. Our
37
+ // public Signer surface keeps it as `unknown` so non-SVM signers don't
38
+ // have to pull @solana/kit's types.
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ const scheme = new ExactSvmScheme(args.kitSigner, args.rpcUrl ? { rpcUrl: args.rpcUrl } : undefined);
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
+ const partial = await scheme.createPaymentPayload(version, requirements);
43
+ // partial = { x402Version, payload: { transaction: <base64 signed tx> } }
44
+ // Assemble the FULL canonical PaymentPayloadV2 envelope:
45
+ // { x402Version, accepted: <the requirement we're paying>, payload }
46
+ // The `accepted` field is REQUIRED in v2 — it tells the facilitator which
47
+ // of its advertised `accepts[]` items we picked. (Loose top-level
48
+ // scheme/network is v1; v2 nests them inside `accepted`.)
49
+ const envelope = {
50
+ x402Version: partial.x402Version ?? version,
51
+ accepted: requirements,
52
+ payload: partial.payload,
53
+ };
54
+ return Buffer.from(JSON.stringify(envelope), "utf8").toString("base64");
55
+ }
56
+ /** True when this network requires the canonical x402 SVM v2 payload. */
57
+ export function isSvmNetwork(network) {
58
+ return network === "solana" || network.startsWith("solana:") || network.startsWith("solana-");
59
+ }
60
+ //# sourceMappingURL=svm-payment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svm-payment.js","sourceRoot":"","sources":["../../src/x402/svm-payment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAc3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAyB;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;IAEtC,6DAA6D;IAC7D,yEAAyE;IACzE,sEAAsE;IACtE,uDAAuD;IACvD,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;QAC7B,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,GAAG;QACtC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;QAC7B,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;QACjC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO;QAC1C,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB,IAAI,GAAG;QAC5D,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS;KAC3C,CAAC;IAEF,yEAAyE;IACzE,uEAAuE;IACvE,oCAAoC;IACpC,8DAA8D;IAC9D,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE5G,8DAA8D;IAC9D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,YAAmB,CAAC,CAAC;IAChF,0EAA0E;IAE1E,yDAAyD;IACzD,uEAAuE;IACvE,0EAA0E;IAC1E,kEAAkE;IAClE,0DAA0D;IAC1D,MAAM,QAAQ,GAAG;QACf,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO;QAC3C,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;IAEF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAChG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xona-labs/xpay",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Discovery and usage layer for agentic commerce — multi-network wallet, x402 payments, 20k+ services via PayAI and other catalogs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -42,8 +42,11 @@
42
42
  "license": "MIT",
43
43
  "dependencies": {
44
44
  "@modelcontextprotocol/sdk": "^1.0.0",
45
+ "@solana/kit": "^5.5.1",
45
46
  "@solana/spl-token": "^0.4.14",
46
47
  "@solana/web3.js": "^1.95.0",
48
+ "@x402/core": "^2.13.0",
49
+ "@x402/svm": "^2.13.0",
47
50
  "bip39": "^3.1.0",
48
51
  "chalk": "^5.4.1",
49
52
  "commander": "^13.1.0",