@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 +60 -1
- package/dist/signers/raw-solana.d.ts.map +1 -1
- package/dist/signers/raw-solana.js +10 -0
- package/dist/signers/raw-solana.js.map +1 -1
- package/dist/types.d.ts +45 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/use/index.d.ts.map +1 -1
- package/dist/use/index.js +40 -10
- package/dist/use/index.js.map +1 -1
- package/dist/x402/extract.d.ts +9 -1
- package/dist/x402/extract.d.ts.map +1 -1
- package/dist/x402/extract.js +44 -0
- package/dist/x402/extract.js.map +1 -1
- package/dist/x402/svm-payment.d.ts +34 -0
- package/dist/x402/svm-payment.d.ts.map +1 -0
- package/dist/x402/svm-payment.js +60 -0
- package/dist/x402/svm-payment.js.map +1 -0
- package/package.json +4 -1
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.
|
|
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,
|
|
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
|
-
/**
|
|
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
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/use/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
46
|
-
const
|
|
47
|
-
|
|
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
|
-
|
|
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
|
/**
|
package/dist/use/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/use/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/use/index.ts"],"names":[],"mappings":"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"}
|
package/dist/x402/extract.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/x402/extract.js
CHANGED
|
@@ -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;
|
package/dist/x402/extract.js.map
CHANGED
|
@@ -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
|
+
"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",
|