@xona-labs/xpay 0.2.23 → 0.2.25
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 +133 -76
- package/README.md +95 -71
- package/SKILL.md +29 -22
- package/dist/agenc/api.d.ts +8 -8
- package/dist/agenc/api.js +11 -11
- package/dist/agenc/hire.d.ts +4 -4
- package/dist/agenc/hire.js +17 -17
- package/dist/agenc/price.d.ts +1 -1
- package/dist/agenc/price.js +1 -1
- package/dist/biometric/index.d.ts +3 -3
- package/dist/biometric/index.js +6 -6
- package/dist/cli/accounts.d.ts +1 -1
- package/dist/cli/accounts.js +1 -1
- package/dist/cli/agenc.d.ts +2 -2
- package/dist/cli/agenc.js +4 -4
- package/dist/cli/balance.d.ts +1 -1
- package/dist/cli/balance.d.ts.map +1 -1
- package/dist/cli/balance.js +11 -10
- package/dist/cli/balance.js.map +1 -1
- package/dist/cli/bento.d.ts +3 -3
- package/dist/cli/bento.js +8 -8
- package/dist/cli/bento.js.map +1 -1
- package/dist/cli/biometric.d.ts +1 -1
- package/dist/cli/biometric.js +8 -8
- package/dist/cli/common.js +6 -6
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/discover.d.ts +2 -2
- package/dist/cli/discover.js +10 -4
- package/dist/cli/discover.js.map +1 -1
- package/dist/cli/guardrail.d.ts +1 -1
- package/dist/cli/guardrail.js +3 -3
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +12 -12
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +2 -2
- package/dist/cli/magicblock.d.ts +1 -1
- package/dist/cli/magicblock.js +4 -4
- package/dist/cli/mcp-server.d.ts +2 -2
- package/dist/cli/mcp-server.js +21 -21
- package/dist/cli/pay.d.ts +1 -1
- package/dist/cli/pay.js +1 -1
- package/dist/cli/report.d.ts +2 -2
- package/dist/cli/report.js +4 -4
- package/dist/cli/report.js.map +1 -1
- package/dist/cli/sana.d.ts +1 -1
- package/dist/cli/sana.js +3 -3
- package/dist/cli/shop.d.ts +1 -1
- package/dist/cli/shop.js +1 -1
- package/dist/cli/swap.d.ts +1 -1
- package/dist/cli/swap.js +3 -3
- package/dist/cli/token.d.ts +2 -2
- package/dist/cli/token.js +2 -2
- package/dist/cli/trade.d.ts +2 -2
- package/dist/cli/trade.js +8 -8
- package/dist/cli/trade.js.map +1 -1
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +1 -1
- package/dist/cli/x.d.ts +1 -1
- package/dist/cli/x.js +1 -1
- package/dist/cli/zauth.d.ts +1 -1
- package/dist/cli/zauth.js +5 -5
- package/dist/discover/cache.js +1 -1
- package/dist/discover/index.d.ts +2 -2
- package/dist/discover/index.d.ts.map +1 -1
- package/dist/discover/index.js +21 -7
- package/dist/discover/index.js.map +1 -1
- package/dist/discover/orbitx402.d.ts +2 -2
- package/dist/discover/orbitx402.js +1 -1
- package/dist/discover/payai.js +1 -1
- package/dist/do/index.d.ts +2 -2
- package/dist/do/index.js +1 -1
- package/dist/guardrail/index.d.ts +4 -4
- package/dist/guardrail/index.js +14 -14
- package/dist/guardrail/index.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +2 -2
- package/dist/magicblock/client.d.ts +2 -2
- package/dist/magicblock/client.js +4 -4
- package/dist/profile/index.d.ts +3 -3
- package/dist/profile/index.d.ts.map +1 -1
- package/dist/profile/index.js +13 -4
- package/dist/profile/index.js.map +1 -1
- package/dist/profile/storage.d.ts +1 -1
- package/dist/profile/storage.js +4 -4
- package/dist/profile/types.d.ts +6 -6
- package/dist/profile/types.js +1 -1
- package/dist/report/index.d.ts +1 -1
- package/dist/report/index.js +2 -2
- package/dist/sana/tools.js +8 -8
- package/dist/signers/raw-evm.d.ts +1 -1
- package/dist/signers/raw-evm.d.ts.map +1 -1
- package/dist/signers/raw-evm.js +22 -7
- package/dist/signers/raw-evm.js.map +1 -1
- package/dist/signers/raw-solana.d.ts +1 -1
- package/dist/signers/raw-solana.js +4 -4
- package/dist/swap/index.d.ts +6 -6
- package/dist/swap/index.js +12 -12
- package/dist/token/index.d.ts +8 -8
- package/dist/token/index.js +14 -14
- package/dist/token/rwa.d.ts +3 -3
- package/dist/token/rwa.js +3 -3
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +46 -41
- package/dist/tools/index.js.map +1 -1
- package/dist/trading/discovery.d.ts +6 -6
- package/dist/trading/discovery.js +7 -7
- package/dist/trading/index.d.ts +6 -6
- package/dist/trading/index.js +13 -13
- package/dist/transfer/index.d.ts +6 -5
- package/dist/transfer/index.d.ts.map +1 -1
- package/dist/transfer/index.js +41 -21
- package/dist/transfer/index.js.map +1 -1
- package/dist/types.d.ts +10 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/use/index.d.ts +5 -5
- package/dist/use/index.js +24 -20
- package/dist/use/index.js.map +1 -1
- package/dist/wallet/index.d.ts +2 -2
- package/dist/wallet/index.d.ts.map +1 -1
- package/dist/wallet/index.js +5 -3
- package/dist/wallet/index.js.map +1 -1
- package/dist/x402/evm-payment.d.ts +4 -4
- package/dist/x402/evm-payment.d.ts.map +1 -1
- package/dist/x402/evm-payment.js +7 -6
- package/dist/x402/evm-payment.js.map +1 -1
- package/dist/x402/extract.d.ts +1 -1
- package/dist/x402/extract.js +1 -1
- package/dist/x402/svm-payment.d.ts +2 -2
- package/dist/x402/svm-payment.js +2 -2
- package/dist/zauth/index.d.ts +4 -4
- package/dist/zauth/index.js +5 -5
- package/package.json +6 -3
package/dist/guardrail/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Spending guardrail
|
|
2
|
+
* Spending guardrail - enforced *before* signing so a hallucinating agent
|
|
3
3
|
* can't sneak past it. This is the security primitive that makes xPay
|
|
4
4
|
* "agentic" rather than just "an SDK with a wallet".
|
|
5
5
|
*
|
|
@@ -21,8 +21,8 @@ export class Guardrail {
|
|
|
21
21
|
async check(args) {
|
|
22
22
|
const usd = await this.estimateUsd(args.requirement);
|
|
23
23
|
// Host whitelist. Skipped for direct transfers and swaps (they target
|
|
24
|
-
// addresses/tokens, not hosts
|
|
25
|
-
// host)
|
|
24
|
+
// addresses/tokens, not hosts, `xpay://swap/...` would parse to a bogus
|
|
25
|
+
// host), amount caps still apply, so a leaked CLI can't drain the wallet.
|
|
26
26
|
if (!["transfer", "swap"].includes(args.resource.type) &&
|
|
27
27
|
this.config.allowedHosts &&
|
|
28
28
|
this.config.allowedHosts.length > 0) {
|
|
@@ -58,7 +58,7 @@ export class Guardrail {
|
|
|
58
58
|
throw new GuardrailError(`Call denied by approval hook`);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
// Bento intent firewall. Runs last
|
|
61
|
+
// Bento intent firewall. Runs last - it's a network round-trip to the
|
|
62
62
|
// Bento relayer, so the cheap deterministic checks above reject the
|
|
63
63
|
// obvious cases first. Only fires when explicitly enabled.
|
|
64
64
|
if (this.config.bento?.enabled) {
|
|
@@ -93,13 +93,13 @@ export class Guardrail {
|
|
|
93
93
|
if (/agent not found|security check failed|not\s+(?:been\s+)?registered/i.test(msg)) {
|
|
94
94
|
throw new GuardrailError("Bento is enabled but this agent wallet isn't registered. Log in to " +
|
|
95
95
|
"https://app.bentoguard.xyz with your owner wallet and register this agent " +
|
|
96
|
-
"address, then retry
|
|
96
|
+
"address, then retry - or run `xpay bento disable`.");
|
|
97
97
|
}
|
|
98
98
|
throw new GuardrailError(`Bento intent check failed: ${msg}`);
|
|
99
99
|
}
|
|
100
100
|
if (verdict.recommendation === "BLOCKED") {
|
|
101
101
|
const risk = verdict.riskScore !== undefined ? ` (risk ${verdict.riskScore}/100)` : "";
|
|
102
|
-
throw new GuardrailError(`Bento blocked this call
|
|
102
|
+
throw new GuardrailError(`Bento blocked this call - ${verdict.reasoning ?? "flagged as malicious intent"}${risk}`);
|
|
103
103
|
}
|
|
104
104
|
if (verdict.recommendation === "ESCALATED") {
|
|
105
105
|
// Ambiguous call. Reuse the same human-in-the-loop hook the local
|
|
@@ -112,8 +112,8 @@ export class Guardrail {
|
|
|
112
112
|
}
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
|
-
// No approver wired
|
|
116
|
-
const where = verdict.approveUrl ? `
|
|
115
|
+
// No approver wired - fail closed (treat ambiguous as blocked).
|
|
116
|
+
const where = verdict.approveUrl ? ` - approve at ${verdict.approveUrl}` : "";
|
|
117
117
|
throw new GuardrailError(`Bento escalated this call for human review${where}. Configure an ` +
|
|
118
118
|
"onApprovalRequired hook to handle escalations, or run `xpay bento disable`.");
|
|
119
119
|
}
|
|
@@ -129,7 +129,7 @@ export class Guardrail {
|
|
|
129
129
|
return 0;
|
|
130
130
|
if (req.scheme === "swap") {
|
|
131
131
|
// The swap module computes the input-side USD (Jupiter's estimate or
|
|
132
|
-
// spot price) and passes it along
|
|
132
|
+
// spot price) and passes it along - same trust boundary as the atomic
|
|
133
133
|
// amounts on any other requirement it builds.
|
|
134
134
|
const est = Number(req.extra?.usdEstimate);
|
|
135
135
|
if (Number.isFinite(est) && est >= 0)
|
|
@@ -147,11 +147,11 @@ export class Guardrail {
|
|
|
147
147
|
}
|
|
148
148
|
catch (err) {
|
|
149
149
|
if (this.hasCaps()) {
|
|
150
|
-
throw new GuardrailError(`cannot price a ${sol} SOL AgenC hire
|
|
150
|
+
throw new GuardrailError(`cannot price a ${sol} SOL AgenC hire - SOL/USD feed unavailable ` +
|
|
151
151
|
`(${err instanceof Error ? err.message : String(err)}). ` +
|
|
152
152
|
`Blocked because spending caps are configured.`);
|
|
153
153
|
}
|
|
154
|
-
return 0; // no caps to enforce
|
|
154
|
+
return 0; // no caps to enforce - nothing to compare against
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
// USDC has 6 decimals on every chain we currently support.
|
|
@@ -172,7 +172,7 @@ export class Guardrail {
|
|
|
172
172
|
return Boolean(this.config.bento?.enabled);
|
|
173
173
|
}
|
|
174
174
|
/**
|
|
175
|
-
* Toggle the Bento firewall on this live instance
|
|
175
|
+
* Toggle the Bento firewall on this live instance - lets the MCP
|
|
176
176
|
* `xpay_bento_enable` tool activate screening for the current session
|
|
177
177
|
* without a server restart. Persisting the flag to disk is separate
|
|
178
178
|
* (the caller does that via `setProfileBento`). Requires
|
|
@@ -191,7 +191,7 @@ export class GuardrailError extends Error {
|
|
|
191
191
|
/**
|
|
192
192
|
* Render a pending spend as the natural-language instruction Bento's
|
|
193
193
|
* `protect()` expects. Bento screens *intent*, so we describe what the call
|
|
194
|
-
* does in plain terms
|
|
194
|
+
* does in plain terms - amount, destination, and whether it's a service call,
|
|
195
195
|
* an escrow hire, or a direct transfer (the case most prone to a drain attempt).
|
|
196
196
|
*/
|
|
197
197
|
function describeSpend(resource, usd) {
|
|
@@ -227,7 +227,7 @@ async function loadBento() {
|
|
|
227
227
|
if (bentoModule)
|
|
228
228
|
return bentoModule;
|
|
229
229
|
// Non-literal specifier keeps TypeScript from resolving the optional package
|
|
230
|
-
// at build time
|
|
230
|
+
// at build time - it may not be installed in every environment.
|
|
231
231
|
const specifier = "@bentoguard/sdk";
|
|
232
232
|
try {
|
|
233
233
|
bentoModule = (await import(specifier));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guardrail/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAuChD,MAAM,OAAO,SAAS;IACH,MAAM,CAAkB;IACxB,OAAO,GAAiB,EAAE,CAAC;IAE5C,YAAY,SAA0B,EAAE;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,IAA6D;QACvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAErD,sEAAsE;QACtE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guardrail/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @xona-labs/xpay
|
|
2
|
+
* @xona-labs/xpay - discovery + usage layer for agentic commerce.
|
|
3
3
|
*
|
|
4
4
|
* Quick start:
|
|
5
5
|
* ```ts
|
|
@@ -49,7 +49,7 @@ export { trendingTokens, newTokens, tokenPriceUsd, robinhoodHoldings, type Disco
|
|
|
49
49
|
/** Options for {@link createXPay}. */
|
|
50
50
|
export interface XPayOptions {
|
|
51
51
|
/**
|
|
52
|
-
* A loaded profile
|
|
52
|
+
* A loaded profile - derives `networks`, `signers`, and `guardrail` from
|
|
53
53
|
* the profile's keyfile and config. Mutually exclusive with the manual
|
|
54
54
|
* `networks` + `signers` shape below.
|
|
55
55
|
*/
|
|
@@ -69,13 +69,13 @@ export interface XPay {
|
|
|
69
69
|
guardrail: Guardrail;
|
|
70
70
|
/** Find paid services across configured catalogs. */
|
|
71
71
|
discover(opts?: DiscoverOptions): Promise<Resource[]>;
|
|
72
|
-
/** Call a specific resource
|
|
72
|
+
/** Call a specific resource - handles payment + retry. */
|
|
73
73
|
use(resource: Resource, opts?: {
|
|
74
74
|
body?: unknown;
|
|
75
75
|
headers?: Record<string, string>;
|
|
76
76
|
}): Promise<UseResult>;
|
|
77
77
|
/**
|
|
78
|
-
* Call any URL that supports x402
|
|
78
|
+
* Call any URL that supports x402 - even one not in the catalog. Probes the
|
|
79
79
|
* URL, follows the 402 challenge, settles, retries.
|
|
80
80
|
*/
|
|
81
81
|
useByUrl(url: string, opts?: {
|
|
@@ -92,7 +92,7 @@ export interface XPay {
|
|
|
92
92
|
/**
|
|
93
93
|
* Direct token transfer (no x402). Subject to the same guardrail.
|
|
94
94
|
* Solana: USDC, USDT, wSOL, BONK, JUP, PYTH, or any mint address.
|
|
95
|
-
* EVM: USDC
|
|
95
|
+
* EVM: the network's stablecoin only - USDC, or USDT0 on Stable.
|
|
96
96
|
* Pass private:true for MagicBlock PER privacy (Solana only).
|
|
97
97
|
*/
|
|
98
98
|
transfer(args: {
|
|
@@ -108,7 +108,7 @@ export interface XPay {
|
|
|
108
108
|
}): Promise<TokenInfo[]>;
|
|
109
109
|
/** List tradable RWA tokens on Solana (tokenized stocks/ETFs + USDY). Read-only, no signing. */
|
|
110
110
|
findRwaTokens(opts?: RwaFindOptions): Promise<RwaToken[]>;
|
|
111
|
-
/** Quote a swap without executing
|
|
111
|
+
/** Quote a swap without executing - no guardrail, no signing, no funds moved. */
|
|
112
112
|
swapQuote(args: {
|
|
113
113
|
amount: number;
|
|
114
114
|
from: string;
|
|
@@ -123,7 +123,7 @@ export interface XPay {
|
|
|
123
123
|
slippageBps?: number;
|
|
124
124
|
}): Promise<SwapResult>;
|
|
125
125
|
/**
|
|
126
|
-
* Quote a Robinhood Chain trade without executing
|
|
126
|
+
* Quote a Robinhood Chain trade without executing - no guardrail, no signing.
|
|
127
127
|
* `from`/`to` are "ETH" or an ERC-20 address / trending symbol (one must be ETH).
|
|
128
128
|
*/
|
|
129
129
|
tradeQuote(args: {
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @xona-labs/xpay
|
|
2
|
+
* @xona-labs/xpay - discovery + usage layer for agentic commerce.
|
|
3
3
|
*
|
|
4
4
|
* Quick start:
|
|
5
5
|
* ```ts
|
|
@@ -65,7 +65,7 @@ export function createXPay(options) {
|
|
|
65
65
|
// Bento intent firewall: thread the enable flag into the guardrail and
|
|
66
66
|
// expose the wallet key to @bentoguard/sdk, which reads it from
|
|
67
67
|
// AGENT_WALLET_PRIVATE_KEY. Bento authenticates by signing a challenge
|
|
68
|
-
// with this key
|
|
68
|
+
// with this key - there is no separate API key.
|
|
69
69
|
if (options.profile.config.bento?.enabled) {
|
|
70
70
|
guardrailConfig = { ...guardrailConfig, bento: { enabled: true } };
|
|
71
71
|
if (!process.env.AGENT_WALLET_PRIVATE_KEY) {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* and recipient on the base chain.
|
|
12
12
|
*
|
|
13
13
|
* Platform model: xpay is the integration layer. End users never need a
|
|
14
|
-
* MagicBlock account
|
|
14
|
+
* MagicBlock account - they pass private:true and xpay handles the rest.
|
|
15
15
|
* The challenge/login uses the user's own wallet key (proving transfer
|
|
16
16
|
* authorization), not a separate username/password account.
|
|
17
17
|
*
|
|
@@ -69,7 +69,7 @@ export interface InitializeMintParams {
|
|
|
69
69
|
/**
|
|
70
70
|
* Register an SPL mint with the MagicBlock ephemeral rollup.
|
|
71
71
|
* Call this once per mint from the platform operator's wallet before enabling
|
|
72
|
-
* private transfers. No auth required
|
|
72
|
+
* private transfers. No auth required - this is a permissionless setup.
|
|
73
73
|
*/
|
|
74
74
|
export declare function magicBlockInitializeMint(params: InitializeMintParams): Promise<string>;
|
|
75
75
|
export declare function magicBlockIsMintInitialized(mint: string, config?: MagicBlockConfig): Promise<boolean>;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* and recipient on the base chain.
|
|
12
12
|
*
|
|
13
13
|
* Platform model: xpay is the integration layer. End users never need a
|
|
14
|
-
* MagicBlock account
|
|
14
|
+
* MagicBlock account - they pass private:true and xpay handles the rest.
|
|
15
15
|
* The challenge/login uses the user's own wallet key (proving transfer
|
|
16
16
|
* authorization), not a separate username/password account.
|
|
17
17
|
*
|
|
@@ -101,7 +101,7 @@ export async function magicBlockPrivateTransfer(params) {
|
|
|
101
101
|
/**
|
|
102
102
|
* Register an SPL mint with the MagicBlock ephemeral rollup.
|
|
103
103
|
* Call this once per mint from the platform operator's wallet before enabling
|
|
104
|
-
* private transfers. No auth required
|
|
104
|
+
* private transfers. No auth required - this is a permissionless setup.
|
|
105
105
|
*/
|
|
106
106
|
export async function magicBlockInitializeMint(params) {
|
|
107
107
|
const api = resolveApi(params.config);
|
|
@@ -136,7 +136,7 @@ export async function magicBlockIsMintInitialized(mint, config) {
|
|
|
136
136
|
// ─── HTTP-only confirmation polling ──────────────────────────────────────────
|
|
137
137
|
/**
|
|
138
138
|
* Poll for transaction confirmation using getSignatureStatuses (pure HTTP).
|
|
139
|
-
* Never calls signatureSubscribe
|
|
139
|
+
* Never calls signatureSubscribe - safe for RPCs that don't support WebSocket.
|
|
140
140
|
* Resolves once confirmed/finalized, throws on on-chain error, times out after
|
|
141
141
|
* ~60 s and resolves anyway (balance was already deducted, tx is in flight).
|
|
142
142
|
*/
|
|
@@ -154,7 +154,7 @@ async function pollConfirmation(connection, signature, intervalMs = 2_000, maxAt
|
|
|
154
154
|
}
|
|
155
155
|
await new Promise((r) => setTimeout(r, intervalMs));
|
|
156
156
|
}
|
|
157
|
-
// Timed out
|
|
157
|
+
// Timed out - transaction was submitted, confirmation just took too long.
|
|
158
158
|
// Caller already has the sig so they can verify on-chain themselves.
|
|
159
159
|
}
|
|
160
160
|
// ─── Base58 encoding ─────────────────────────────────────────────────────────
|
package/dist/profile/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Profile API
|
|
2
|
+
* Profile API - public SDK surface for keyfile management.
|
|
3
3
|
*
|
|
4
4
|
* Programmatic usage:
|
|
5
5
|
* ```ts
|
|
@@ -25,7 +25,7 @@ export interface InitProfileOptions {
|
|
|
25
25
|
name?: string;
|
|
26
26
|
/** Use existing mnemonic (import) instead of generating one. */
|
|
27
27
|
mnemonic?: string;
|
|
28
|
-
/** Encrypt at rest. Strongly recommended
|
|
28
|
+
/** Encrypt at rest. Strongly recommended - omit only for ephemeral dev wallets. */
|
|
29
29
|
passphrase?: string;
|
|
30
30
|
/** Use workspace-local `.xpay/` instead of `~/.xpay/`. */
|
|
31
31
|
workspace?: boolean | string;
|
|
@@ -69,7 +69,7 @@ export declare function setProfileBiometric(name: string, enabled: boolean, opts
|
|
|
69
69
|
export declare function setSanaApiKey(name: string, apiKey: string, opts?: {
|
|
70
70
|
workspace?: boolean | string;
|
|
71
71
|
}): ProfileConfig;
|
|
72
|
-
/** Remove the Sana API key
|
|
72
|
+
/** Remove the Sana API key - sana_* tools will no longer be registered. */
|
|
73
73
|
export declare function clearSanaApiKey(name: string, opts?: {
|
|
74
74
|
workspace?: boolean | string;
|
|
75
75
|
}): ProfileConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAeH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMxE,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC,uHAAuH;IACvH,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmB3F;AAMD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC9B;AAED,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC,CAYvF;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"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"}
|
package/dist/profile/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Profile API
|
|
2
|
+
* Profile API - public SDK surface for keyfile management.
|
|
3
3
|
*
|
|
4
4
|
* Programmatic usage:
|
|
5
5
|
* ```ts
|
|
@@ -71,7 +71,7 @@ export function signersFromProfile(profile) {
|
|
|
71
71
|
rpcUrl: profile.config.rpcs?.solana,
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
|
-
else if (["base", "ethereum", "arbitrum", "optimism", "robinhood"].includes(network)) {
|
|
74
|
+
else if (["base", "ethereum", "arbitrum", "optimism", "robinhood", "stable"].includes(network)) {
|
|
75
75
|
out[network] = rawEvmSigner({
|
|
76
76
|
privateKey: keys.evm.privateKey,
|
|
77
77
|
network,
|
|
@@ -82,13 +82,22 @@ export function signersFromProfile(profile) {
|
|
|
82
82
|
// Always register a Robinhood Chain signer (same derived EVM key) so the
|
|
83
83
|
// trading tools work out of the box on any profile, even one that didn't
|
|
84
84
|
// opt "robinhood" into its `networks`. It's ETH-native with no USDC/x402
|
|
85
|
-
// surface, so this doesn't affect balances or payment routing
|
|
85
|
+
// surface, so this doesn't affect balances or payment routing - it only
|
|
86
86
|
// makes `wallet.has("robinhood")` true so `xpay trade` can sign.
|
|
87
87
|
out.robinhood ??= rawEvmSigner({
|
|
88
88
|
privateKey: keys.evm.privateKey,
|
|
89
89
|
network: "robinhood",
|
|
90
90
|
rpcUrl: profile.config.rpcs?.robinhood,
|
|
91
91
|
});
|
|
92
|
+
// Same for Stable (chain 988): one derived EVM key covers every EIP-155
|
|
93
|
+
// chain, so registering it unconditionally lets any profile read its USDT0
|
|
94
|
+
// balance and pay /stable/* x402 routes without re-running `xpay init`.
|
|
95
|
+
// Payment routing only picks it when a 402 actually quotes eip155:988.
|
|
96
|
+
out.stable ??= rawEvmSigner({
|
|
97
|
+
privateKey: keys.evm.privateKey,
|
|
98
|
+
network: "stable",
|
|
99
|
+
rpcUrl: profile.config.rpcs?.stable,
|
|
100
|
+
});
|
|
92
101
|
return out;
|
|
93
102
|
}
|
|
94
103
|
// -----------------------------------------------------------------------------
|
|
@@ -132,7 +141,7 @@ export function setSanaApiKey(name, apiKey, opts = {}) {
|
|
|
132
141
|
writeConfigFile(dir, current);
|
|
133
142
|
return current;
|
|
134
143
|
}
|
|
135
|
-
/** Remove the Sana API key
|
|
144
|
+
/** Remove the Sana API key - sana_* tools will no longer be registered. */
|
|
136
145
|
export function clearSanaApiKey(name, opts = {}) {
|
|
137
146
|
const dir = profilePath(name, opts);
|
|
138
147
|
const current = readConfigFile(dir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Profile storage
|
|
2
|
+
* Profile storage - read/write `wallet.json` + `config.json` under
|
|
3
3
|
* `~/.xpay/<name>/` (or a workspace path) with passphrase-based encryption.
|
|
4
4
|
*
|
|
5
5
|
* Encryption uses Node's built-in crypto (no new deps): scrypt → AES-256-GCM
|
package/dist/profile/storage.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Profile storage
|
|
2
|
+
* Profile storage - read/write `wallet.json` + `config.json` under
|
|
3
3
|
* `~/.xpay/<name>/` (or a workspace path) with passphrase-based encryption.
|
|
4
4
|
*
|
|
5
5
|
* Encryption uses Node's built-in crypto (no new deps): scrypt → AES-256-GCM
|
|
@@ -10,7 +10,7 @@ import { homedir } from "node:os";
|
|
|
10
10
|
import { join, resolve } from "node:path";
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, chmodSync, statSync } from "node:fs";
|
|
12
12
|
import { randomBytes, scryptSync, createCipheriv, createDecipheriv } from "node:crypto";
|
|
13
|
-
const SCRYPT_N = 1 << 15; // 32768
|
|
13
|
+
const SCRYPT_N = 1 << 15; // 32768 - sane default, tunable.
|
|
14
14
|
const SCRYPT_R = 8;
|
|
15
15
|
const SCRYPT_P = 1;
|
|
16
16
|
const KEY_LEN = 32;
|
|
@@ -102,7 +102,7 @@ export function writeWalletFile(dir, wallet) {
|
|
|
102
102
|
ensureDir(dir);
|
|
103
103
|
const file = join(dir, "wallet.json");
|
|
104
104
|
writeFileSync(file, JSON.stringify(wallet, null, 2));
|
|
105
|
-
// 0600
|
|
105
|
+
// 0600 - readable only by the owner.
|
|
106
106
|
try {
|
|
107
107
|
chmodSync(file, 0o600);
|
|
108
108
|
}
|
|
@@ -156,7 +156,7 @@ export function unlockWalletFile(wallet, passphrase) {
|
|
|
156
156
|
if (!wallet.encrypted)
|
|
157
157
|
throw new Error("Wallet file has neither mnemonic nor encrypted payload");
|
|
158
158
|
if (!passphrase)
|
|
159
|
-
throw new Error("Wallet is encrypted
|
|
159
|
+
throw new Error("Wallet is encrypted - passphrase required");
|
|
160
160
|
return decryptMnemonic(wallet.encrypted, passphrase);
|
|
161
161
|
}
|
|
162
162
|
//# sourceMappingURL=storage.js.map
|
package/dist/profile/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Profile types. A profile is a named set of keys + config persisted under
|
|
3
3
|
* `~/.xpay/<name>/` (or `<workspace>/.xpay/<name>/` when workspace-local).
|
|
4
4
|
*
|
|
5
|
-
* One mnemonic derives both Solana and EVM keys
|
|
5
|
+
* One mnemonic derives both Solana and EVM keys - standard BIP-39 + BIP-44
|
|
6
6
|
* paths so the keys are recoverable in Phantom, MetaMask, Solflare, etc.
|
|
7
7
|
*/
|
|
8
8
|
export interface ProfileAddresses {
|
|
@@ -75,7 +75,7 @@ export interface ProfileConfig {
|
|
|
75
75
|
* Activate with `xpay bento enable` after registering this wallet's address
|
|
76
76
|
* at https://app.bentoguard.xyz. When enabled, every pay / transfer is
|
|
77
77
|
* screened by Bento's protect() for prompt-injection / wallet-drain intent
|
|
78
|
-
* before signing
|
|
78
|
+
* before signing - a second gate on top of the local guardrail caps.
|
|
79
79
|
* Bento authenticates with the wallet's own key, so there is no API key.
|
|
80
80
|
*/
|
|
81
81
|
bento?: {
|
|
@@ -94,7 +94,7 @@ export interface ProfileConfig {
|
|
|
94
94
|
endpoint?: string;
|
|
95
95
|
};
|
|
96
96
|
/**
|
|
97
|
-
* Native token-swap settings (Jupiter). Optional
|
|
97
|
+
* Native token-swap settings (Jupiter). Optional - swaps work keyless with
|
|
98
98
|
* sensible defaults.
|
|
99
99
|
*/
|
|
100
100
|
swap?: {
|
|
@@ -106,7 +106,7 @@ export interface ProfileConfig {
|
|
|
106
106
|
endpoint?: string;
|
|
107
107
|
};
|
|
108
108
|
/**
|
|
109
|
-
* Robinhood Chain token-trading settings (NOXA Fun / Uniswap V3). Optional
|
|
109
|
+
* Robinhood Chain token-trading settings (NOXA Fun / Uniswap V3). Optional -
|
|
110
110
|
* trades work with sensible defaults; the RPC override lives in `rpcs.robinhood`.
|
|
111
111
|
*/
|
|
112
112
|
trading?: {
|
|
@@ -115,7 +115,7 @@ export interface ProfileConfig {
|
|
|
115
115
|
};
|
|
116
116
|
/**
|
|
117
117
|
* MagicBlock Private Ephemeral Rollup integration.
|
|
118
|
-
* Platform-level config
|
|
118
|
+
* Platform-level config - set once by the xpay operator via `xpay magicblock configure`.
|
|
119
119
|
* End users never need a MagicBlock account; they just pass private:true.
|
|
120
120
|
*/
|
|
121
121
|
magicblock?: {
|
|
@@ -133,7 +133,7 @@ export interface LoadedProfile {
|
|
|
133
133
|
path: string;
|
|
134
134
|
addresses: ProfileAddresses;
|
|
135
135
|
config: ProfileConfig;
|
|
136
|
-
/** Decoded mnemonic
|
|
136
|
+
/** Decoded mnemonic - only present while the process holds the unlocked profile. */
|
|
137
137
|
mnemonic: string;
|
|
138
138
|
}
|
|
139
139
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/profile/types.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Profile types. A profile is a named set of keys + config persisted under
|
|
3
3
|
* `~/.xpay/<name>/` (or `<workspace>/.xpay/<name>/` when workspace-local).
|
|
4
4
|
*
|
|
5
|
-
* One mnemonic derives both Solana and EVM keys
|
|
5
|
+
* One mnemonic derives both Solana and EVM keys - standard BIP-39 + BIP-44
|
|
6
6
|
* paths so the keys are recoverable in Phantom, MetaMask, Solflare, etc.
|
|
7
7
|
*/
|
|
8
8
|
export {};
|
package/dist/report/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Report
|
|
2
|
+
* Report - comprehensive USDC activity report fetched from the OrbitX402 API.
|
|
3
3
|
*
|
|
4
4
|
* Replaces the old direct-RPC history module. On-chain data is fetched
|
|
5
5
|
* server-side by OrbitX402; xpay only receives the aggregated report.
|
package/dist/report/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Report
|
|
2
|
+
* Report - comprehensive USDC activity report fetched from the OrbitX402 API.
|
|
3
3
|
*
|
|
4
4
|
* Replaces the old direct-RPC history module. On-chain data is fetched
|
|
5
5
|
* server-side by OrbitX402; xpay only receives the aggregated report.
|
|
@@ -13,7 +13,7 @@ export async function fetchReport(address, opts = {}) {
|
|
|
13
13
|
const res = await fetch(url, { headers: { accept: "application/json" } });
|
|
14
14
|
if (!res.ok) {
|
|
15
15
|
const body = await res.text().catch(() => "");
|
|
16
|
-
throw new Error(`xpay report: ${res.status} ${res.statusText}${body ? `
|
|
16
|
+
throw new Error(`xpay report: ${res.status} ${res.statusText}${body ? ` - ${body}` : ""}`);
|
|
17
17
|
}
|
|
18
18
|
return res.json();
|
|
19
19
|
}
|
package/dist/sana/tools.js
CHANGED
|
@@ -21,18 +21,18 @@ export function forSana(apiKey) {
|
|
|
21
21
|
const tools = [
|
|
22
22
|
{
|
|
23
23
|
name: "sana_card",
|
|
24
|
-
description: "Sana agent wallet card
|
|
24
|
+
description: "Sana agent wallet card - card metadata: type, status, last 4 digits, expiry. " +
|
|
25
25
|
"Use this to check whether the card is active before spending.",
|
|
26
26
|
input_schema: { type: "object", properties: {} },
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
name: "sana_card_balance",
|
|
30
|
-
description: "Sana agent wallet card
|
|
30
|
+
description: "Sana agent wallet card - available spending power / credit balance on the card.",
|
|
31
31
|
input_schema: { type: "object", properties: {} },
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
name: "sana_card_deposit",
|
|
35
|
-
description: "Sana agent wallet card
|
|
35
|
+
description: "Sana agent wallet card - top up the card balance with USDC from the Sana wallet. " +
|
|
36
36
|
"Requires agent signing to be enabled on the API key.",
|
|
37
37
|
input_schema: {
|
|
38
38
|
type: "object",
|
|
@@ -44,7 +44,7 @@ export function forSana(apiKey) {
|
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
name: "sana_card_transactions",
|
|
47
|
-
description: "Sana agent wallet card
|
|
47
|
+
description: "Sana agent wallet card - card spending history, newest first.",
|
|
48
48
|
input_schema: {
|
|
49
49
|
type: "object",
|
|
50
50
|
properties: {
|
|
@@ -55,12 +55,12 @@ export function forSana(apiKey) {
|
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
name: "sana_portfolio",
|
|
58
|
-
description: "Sana wallet
|
|
58
|
+
description: "Sana wallet - total net worth in USD plus all token holdings with 24h price changes.",
|
|
59
59
|
input_schema: { type: "object", properties: {} },
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
name: "sana_price",
|
|
63
|
-
description: "Sana wallet
|
|
63
|
+
description: "Sana wallet - current USD price and 24h change for a token symbol.",
|
|
64
64
|
input_schema: {
|
|
65
65
|
type: "object",
|
|
66
66
|
properties: {
|
|
@@ -71,7 +71,7 @@ export function forSana(apiKey) {
|
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
name: "sana_swap",
|
|
74
|
-
description: "Sana wallet
|
|
74
|
+
description: "Sana wallet - swap tokens inside the Sana wallet. " +
|
|
75
75
|
"Requires agent signing enabled on the API key.",
|
|
76
76
|
input_schema: {
|
|
77
77
|
type: "object",
|
|
@@ -85,7 +85,7 @@ export function forSana(apiKey) {
|
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
87
|
name: "sana_notifications",
|
|
88
|
-
description: "Sana wallet
|
|
88
|
+
description: "Sana wallet - recent wallet activity feed and notifications.",
|
|
89
89
|
input_schema: { type: "object", properties: {} },
|
|
90
90
|
},
|
|
91
91
|
];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Raw EVM signer
|
|
2
|
+
* Raw EVM signer - works for Base, Ethereum, Arbitrum, Optimism, and other
|
|
3
3
|
* EIP-155 chains. Holds a hex private key via `ethers.Wallet`.
|
|
4
4
|
*/
|
|
5
5
|
import type { Network, Signer } from "../types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw-evm.d.ts","sourceRoot":"","sources":["../../src/signers/raw-evm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,EAAgB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"raw-evm.d.ts","sourceRoot":"","sources":["../../src/signers/raw-evm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,EAAgB,MAAM,aAAa,CAAC;AA+ErF,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAwF9D"}
|