@xona-labs/xpay 0.1.16 → 0.1.18
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 +26 -0
- package/README.md +32 -1
- package/dist/biometric/index.d.ts +44 -0
- package/dist/biometric/index.d.ts.map +1 -0
- package/dist/biometric/index.js +243 -0
- package/dist/biometric/index.js.map +1 -0
- package/dist/cli/balance.d.ts.map +1 -1
- package/dist/cli/balance.js +4 -27
- package/dist/cli/balance.js.map +1 -1
- package/dist/cli/biometric.d.ts +14 -0
- package/dist/cli/biometric.d.ts.map +1 -0
- package/dist/cli/biometric.js +121 -0
- package/dist/cli/biometric.js.map +1 -0
- package/dist/cli/common.d.ts +11 -1
- package/dist/cli/common.d.ts.map +1 -1
- package/dist/cli/common.js +86 -6
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/index.js +20 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-server.d.ts.map +1 -1
- package/dist/cli/mcp-server.js +24 -2
- package/dist/cli/mcp-server.js.map +1 -1
- package/dist/cli/pay.js +2 -2
- package/dist/cli/pay.js.map +1 -1
- package/dist/cli/transfer.js +2 -2
- package/dist/cli/transfer.js.map +1 -1
- package/dist/profile/index.d.ts +4 -0
- package/dist/profile/index.d.ts.map +1 -1
- package/dist/profile/index.js +16 -0
- package/dist/profile/index.js.map +1 -1
- package/dist/profile/types.d.ts +8 -0
- package/dist/profile/types.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,32 @@ versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.1.18] – 2026-06-12
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- **`xpay balance` now unlocks via Touch ID** — it had its own inline
|
|
13
|
+
passphrase prompt instead of the shared unlock path, so it never offered
|
|
14
|
+
biometric unlock. It now uses `unlockActive` like every other command.
|
|
15
|
+
|
|
16
|
+
## [0.1.17] – 2026-06-12
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- **Biometric unlock (macOS Touch ID)** — `xpay biometric enable|disable|status`.
|
|
20
|
+
When enabled, the wallet passphrase is stored in the login keychain and
|
|
21
|
+
released by a native LocalAuthentication helper (compiled on first use to
|
|
22
|
+
`~/.xpay/bin/`, requires Xcode Command Line Tools) after a Touch ID check.
|
|
23
|
+
The scrypt/AES wallet encryption is unchanged — the passphrase remains the
|
|
24
|
+
fallback and recovery path. Unlock order is now: `--passphrase` flag →
|
|
25
|
+
`$XPAY_PASSPHRASE` → Touch ID → interactive prompt.
|
|
26
|
+
- **Guardrail approval hook is now wired in the CLI and MCP server.**
|
|
27
|
+
`requireApprovalAbove` previously always threw ("no onApprovalRequired hook
|
|
28
|
+
configured"); `xpay pay` / `xpay transfer` now resolve it via Touch ID (when
|
|
29
|
+
biometric unlock is enabled) or a y/n confirm on a TTY. The MCP server uses
|
|
30
|
+
Touch ID only (no TTY) and denies above-threshold calls otherwise.
|
|
31
|
+
- **MCP server can start without `XPAY_PASSPHRASE`** — when the profile has
|
|
32
|
+
biometric unlock enabled, the server prompts Touch ID once at startup
|
|
33
|
+
instead of requiring the passphrase in plaintext host config.
|
|
34
|
+
|
|
9
35
|
## [0.1.5] – 2026-05-26
|
|
10
36
|
|
|
11
37
|
### Added
|
package/README.md
CHANGED
|
@@ -62,6 +62,7 @@ xpay pay https://orbisapi.com/proxy/image-alt-text-generator-api-1c9472
|
|
|
62
62
|
| `xpay transfer <amount> USDC <to>` | Direct USDC transfer, subject to the guardrail. `--network`, `-y`. |
|
|
63
63
|
| `xpay history` | Recent on-chain USDC activity across all networks. `--network`, `--limit`, `--evm-window`. |
|
|
64
64
|
| `xpay guardrail show \| set \| clear` | Inspect or edit spending caps and allowed hosts. |
|
|
65
|
+
| `xpay biometric status \| enable \| disable` | Touch ID unlock for the wallet passphrase (macOS). |
|
|
65
66
|
| `xpay sana link \| unlink \| status` | Link a Sana API key to activate the agent card (optional). |
|
|
66
67
|
| `xpay mcp` | Start the MCP server on stdio (for Claude Desktop / Cursor / Codex). |
|
|
67
68
|
|
|
@@ -154,6 +155,8 @@ Drop xPay into any MCP host's config — no code changes on the agent side.
|
|
|
154
155
|
|
|
155
156
|
The host sees seven core tools: `xpay_discover`, `xpay_use`, `xpay_do`, `xpay_transfer`, `xpay_balance`, `xpay_history`, `xpay_guardrail`. If you've linked a Sana key (see below), eight additional `sana_*` tools are also registered automatically. The server reads the same `~/.xpay/<profile>/` you created with `xpay init`.
|
|
156
157
|
|
|
158
|
+
On macOS you can omit `XPAY_PASSPHRASE` entirely: with [biometric unlock](#biometric-unlock-macos) enabled, the server shows one Touch ID dialog at startup instead of keeping the passphrase in plaintext host config.
|
|
159
|
+
|
|
157
160
|
## Profiles
|
|
158
161
|
|
|
159
162
|
Each profile is a directory under `~/.xpay/` with:
|
|
@@ -168,6 +171,30 @@ Each profile is a directory under `~/.xpay/` with:
|
|
|
168
171
|
|
|
169
172
|
Override with `XPAY_HOME=/some/path` or `xpay init --workspace` for project-local profiles.
|
|
170
173
|
|
|
174
|
+
## Biometric unlock (macOS)
|
|
175
|
+
|
|
176
|
+
Skip typing the passphrase on every command — unlock with Touch ID instead:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
xpay biometric enable # verifies your passphrase, then stores it Touch ID-gated
|
|
180
|
+
xpay balance # → Touch ID prompt instead of a passphrase prompt
|
|
181
|
+
xpay biometric status # availability + current state
|
|
182
|
+
xpay biometric disable # removes the keychain entry
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
How it works: the wallet's scrypt + AES-256-GCM encryption is unchanged. `enable` places the
|
|
186
|
+
passphrase in your **login keychain**, and a small native helper (compiled on first use to
|
|
187
|
+
`~/.xpay/bin/`, requires the Xcode Command Line Tools) releases it only after a
|
|
188
|
+
LocalAuthentication check. Biometrics never replace the passphrase — they gate access to it.
|
|
189
|
+
|
|
190
|
+
The unlock order for every command is: `--passphrase` flag → `$XPAY_PASSPHRASE` → Touch ID →
|
|
191
|
+
interactive prompt. Your passphrase keeps working everywhere and remains the only recovery
|
|
192
|
+
path — if Touch ID is unavailable (or the stored copy goes stale after a re-encrypt), the CLI
|
|
193
|
+
falls back to asking for it.
|
|
194
|
+
|
|
195
|
+
> macOS asks once to allow keychain access for the helper — choose **"Always Allow"**. It will
|
|
196
|
+
> ask again after package upgrades, since the helper is recompiled.
|
|
197
|
+
|
|
171
198
|
## Guardrail
|
|
172
199
|
|
|
173
200
|
The guardrail runs **before** any signer is touched, so a misbehaving agent (or compromised LLM) cannot bypass it.
|
|
@@ -182,7 +209,11 @@ xpay guardrail set \
|
|
|
182
209
|
|
|
183
210
|
- **`maxPerTx` / `maxPerDay`** — apply to every paid call *and* direct transfers.
|
|
184
211
|
- **`allowedHosts`** — apply only to x402 calls (transfers go to addresses, not hosts).
|
|
185
|
-
- **`requireApprovalAbove`** — calls ≥ threshold
|
|
212
|
+
- **`requireApprovalAbove`** — calls ≥ threshold need explicit approval. In the CLI this is a
|
|
213
|
+
Touch ID prompt when [biometric unlock](#biometric-unlock-macos) is enabled, otherwise a y/n
|
|
214
|
+
confirm; in the MCP server it is Touch ID only (no terminal), so an agent's large payment
|
|
215
|
+
surfaces as a system dialog you physically approve. In the SDK, wire the
|
|
216
|
+
`onApprovalRequired` hook to whatever you like — push notification, biometric, webhook.
|
|
186
217
|
|
|
187
218
|
## Sana agent wallet card (optional)
|
|
188
219
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Biometric unlock (macOS Touch ID / Watch) — gates access to the wallet
|
|
3
|
+
* passphrase, it does not replace it. The passphrase is stored in the user's
|
|
4
|
+
* login keychain and only released by a small native helper after a
|
|
5
|
+
* successful LocalAuthentication check. The scrypt/AES wallet encryption is
|
|
6
|
+
* untouched, so the passphrase always remains the recovery path.
|
|
7
|
+
*
|
|
8
|
+
* The helper is a single Swift file embedded below, compiled on first use to
|
|
9
|
+
* `~/.xpay/bin/xpay-biometric-<hash>` (requires Xcode Command Line Tools).
|
|
10
|
+
* Embedding the source keeps the npm package dependency-free and lets tsc
|
|
11
|
+
* ship it inside dist/ without a native build step at install time.
|
|
12
|
+
*/
|
|
13
|
+
/** Keychain item identity — must match `kService` in the Swift source. */
|
|
14
|
+
export declare const KEYCHAIN_SERVICE = "com.xona-labs.xpay.wallet";
|
|
15
|
+
export type BiometryType = "touchid" | "faceid";
|
|
16
|
+
/** Thrown when biometrics can't work here at all (non-macOS, no swiftc, no enrolled biometry). */
|
|
17
|
+
export declare class BiometricUnavailableError extends Error {
|
|
18
|
+
constructor(message: string);
|
|
19
|
+
}
|
|
20
|
+
export declare function biometricPlatformSupported(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Probe biometry without showing a prompt. Returns the biometry type, or
|
|
23
|
+
* null when the hardware/enrollment is missing. Throws
|
|
24
|
+
* {@link BiometricUnavailableError} when the helper can't even be built.
|
|
25
|
+
*/
|
|
26
|
+
export declare function biometricCheck(): Promise<BiometryType | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Show the system Touch ID sheet and return whether the user passed.
|
|
29
|
+
* Throws {@link BiometricUnavailableError} when biometry can't be evaluated
|
|
30
|
+
* (caller should fall back to its non-biometric path).
|
|
31
|
+
*/
|
|
32
|
+
export declare function biometricPrompt(reason: string): Promise<boolean>;
|
|
33
|
+
/** Save the passphrase for `account` (profile name) in the login keychain. */
|
|
34
|
+
export declare function storeBiometricPassphrase(account: string, passphrase: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Biometric-gated read of the stored passphrase. Returns null when the user
|
|
37
|
+
* cancels/fails the check or no passphrase is stored — both mean "fall back
|
|
38
|
+
* to typing the passphrase". Throws {@link BiometricUnavailableError} when
|
|
39
|
+
* biometry can't be evaluated at all.
|
|
40
|
+
*/
|
|
41
|
+
export declare function readBiometricPassphrase(account: string, reason: string): Promise<string | null>;
|
|
42
|
+
/** Remove the stored passphrase. Returns false if none was stored. */
|
|
43
|
+
export declare function deleteBiometricPassphrase(account: string): Promise<boolean>;
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/biometric/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AA0G5D,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhD,kGAAkG;AAClG,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAiED;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAKnE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKtE;AAED,8EAA8E;AAC9E,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjG;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQrG;AAED,sEAAsE;AACtE,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKjF"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Biometric unlock (macOS Touch ID / Watch) — gates access to the wallet
|
|
3
|
+
* passphrase, it does not replace it. The passphrase is stored in the user's
|
|
4
|
+
* login keychain and only released by a small native helper after a
|
|
5
|
+
* successful LocalAuthentication check. The scrypt/AES wallet encryption is
|
|
6
|
+
* untouched, so the passphrase always remains the recovery path.
|
|
7
|
+
*
|
|
8
|
+
* The helper is a single Swift file embedded below, compiled on first use to
|
|
9
|
+
* `~/.xpay/bin/xpay-biometric-<hash>` (requires Xcode Command Line Tools).
|
|
10
|
+
* Embedding the source keeps the npm package dependency-free and lets tsc
|
|
11
|
+
* ship it inside dist/ without a native build step at install time.
|
|
12
|
+
*/
|
|
13
|
+
import { join } from "node:path";
|
|
14
|
+
import { platform } from "node:os";
|
|
15
|
+
import { existsSync, mkdirSync, writeFileSync, readdirSync, unlinkSync } from "node:fs";
|
|
16
|
+
import { createHash } from "node:crypto";
|
|
17
|
+
import { execFileSync, execFile } from "node:child_process";
|
|
18
|
+
import { xpayHome } from "../profile/storage.js";
|
|
19
|
+
/** Keychain item identity — must match `kService` in the Swift source. */
|
|
20
|
+
export const KEYCHAIN_SERVICE = "com.xona-labs.xpay.wallet";
|
|
21
|
+
const HELPER_BASENAME = "xpay-biometric";
|
|
22
|
+
// Helper exit codes (mirrored in the Swift source).
|
|
23
|
+
const EXIT_OK = 0;
|
|
24
|
+
const EXIT_UNAVAILABLE = 2;
|
|
25
|
+
const EXIT_DENIED = 3;
|
|
26
|
+
const EXIT_NOT_FOUND = 4;
|
|
27
|
+
const SWIFT_SOURCE = `// xpay-biometric — generated by @xona-labs/xpay; do not edit.
|
|
28
|
+
import Foundation
|
|
29
|
+
import LocalAuthentication
|
|
30
|
+
import Security
|
|
31
|
+
|
|
32
|
+
let kService = "com.xona-labs.xpay.wallet"
|
|
33
|
+
|
|
34
|
+
func warn(_ msg: String) {
|
|
35
|
+
FileHandle.standardError.write((msg + "\\n").data(using: .utf8)!)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
func evaluate(_ reason: String) -> Bool {
|
|
39
|
+
let ctx = LAContext()
|
|
40
|
+
var error: NSError?
|
|
41
|
+
guard ctx.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
|
|
42
|
+
warn(error?.localizedDescription ?? "biometry unavailable")
|
|
43
|
+
exit(2)
|
|
44
|
+
}
|
|
45
|
+
let sem = DispatchSemaphore(value: 0)
|
|
46
|
+
var ok = false
|
|
47
|
+
ctx.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) { success, _ in
|
|
48
|
+
ok = success
|
|
49
|
+
sem.signal()
|
|
50
|
+
}
|
|
51
|
+
sem.wait()
|
|
52
|
+
return ok
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
func baseQuery(_ account: String) -> [String: Any] {
|
|
56
|
+
return [
|
|
57
|
+
kSecClass as String: kSecClassGenericPassword,
|
|
58
|
+
kSecAttrService as String: kService,
|
|
59
|
+
kSecAttrAccount as String: account,
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
let args = CommandLine.arguments
|
|
64
|
+
guard args.count >= 2 else {
|
|
65
|
+
warn("usage: xpay-biometric check | prompt <reason> | store <account> | read <account> <reason> | delete <account>")
|
|
66
|
+
exit(1)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
switch args[1] {
|
|
70
|
+
case "check":
|
|
71
|
+
let ctx = LAContext()
|
|
72
|
+
var error: NSError?
|
|
73
|
+
guard ctx.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
|
|
74
|
+
warn(error?.localizedDescription ?? "biometry unavailable")
|
|
75
|
+
exit(2)
|
|
76
|
+
}
|
|
77
|
+
print(ctx.biometryType == .faceID ? "faceid" : "touchid")
|
|
78
|
+
exit(0)
|
|
79
|
+
|
|
80
|
+
case "prompt":
|
|
81
|
+
let reason = args.count > 2 ? args[2] : "approve this action"
|
|
82
|
+
exit(evaluate(reason) ? 0 : 3)
|
|
83
|
+
|
|
84
|
+
case "store":
|
|
85
|
+
guard args.count > 2 else { warn("store: missing account"); exit(1) }
|
|
86
|
+
let secret = FileHandle.standardInput.readDataToEndOfFile()
|
|
87
|
+
guard !secret.isEmpty else { warn("store: empty secret on stdin"); exit(1) }
|
|
88
|
+
SecItemDelete(baseQuery(args[2]) as CFDictionary)
|
|
89
|
+
var add = baseQuery(args[2])
|
|
90
|
+
add[kSecValueData as String] = secret
|
|
91
|
+
add[kSecAttrLabel as String] = "xPay wallet passphrase (\\(args[2]))"
|
|
92
|
+
let status = SecItemAdd(add as CFDictionary, nil)
|
|
93
|
+
guard status == errSecSuccess else { warn("store: keychain error \\(status)"); exit(1) }
|
|
94
|
+
exit(0)
|
|
95
|
+
|
|
96
|
+
case "read":
|
|
97
|
+
guard args.count > 2 else { warn("read: missing account"); exit(1) }
|
|
98
|
+
let reason = args.count > 3 ? args[3] : "unlock your xPay wallet"
|
|
99
|
+
guard evaluate(reason) else { exit(3) }
|
|
100
|
+
var query = baseQuery(args[2])
|
|
101
|
+
query[kSecReturnData as String] = true
|
|
102
|
+
query[kSecMatchLimit as String] = kSecMatchLimitOne
|
|
103
|
+
var out: CFTypeRef?
|
|
104
|
+
let status = SecItemCopyMatching(query as CFDictionary, &out)
|
|
105
|
+
if status == errSecItemNotFound { warn("read: no stored passphrase for \\(args[2])"); exit(4) }
|
|
106
|
+
guard status == errSecSuccess, let data = out as? Data else { warn("read: keychain error \\(status)"); exit(1) }
|
|
107
|
+
FileHandle.standardOutput.write(data)
|
|
108
|
+
exit(0)
|
|
109
|
+
|
|
110
|
+
case "delete":
|
|
111
|
+
guard args.count > 2 else { warn("delete: missing account"); exit(1) }
|
|
112
|
+
let status = SecItemDelete(baseQuery(args[2]) as CFDictionary)
|
|
113
|
+
if status == errSecItemNotFound { exit(4) }
|
|
114
|
+
guard status == errSecSuccess else { warn("delete: keychain error \\(status)"); exit(1) }
|
|
115
|
+
exit(0)
|
|
116
|
+
|
|
117
|
+
default:
|
|
118
|
+
warn("unknown command: \\(args[1])")
|
|
119
|
+
exit(1)
|
|
120
|
+
}
|
|
121
|
+
`;
|
|
122
|
+
/** Thrown when biometrics can't work here at all (non-macOS, no swiftc, no enrolled biometry). */
|
|
123
|
+
export class BiometricUnavailableError extends Error {
|
|
124
|
+
constructor(message) {
|
|
125
|
+
super(message);
|
|
126
|
+
this.name = "BiometricUnavailableError";
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
export function biometricPlatformSupported() {
|
|
130
|
+
return platform() === "darwin";
|
|
131
|
+
}
|
|
132
|
+
function binDir() {
|
|
133
|
+
return join(xpayHome(), "bin");
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Compile the helper if this exact source hasn't been compiled yet. The
|
|
137
|
+
* binary name carries a source hash so upgrades recompile automatically;
|
|
138
|
+
* stale versions are swept. Note: a freshly compiled binary triggers a new
|
|
139
|
+
* macOS "allow keychain access" prompt on its first read — expected.
|
|
140
|
+
*/
|
|
141
|
+
function ensureHelper() {
|
|
142
|
+
if (!biometricPlatformSupported()) {
|
|
143
|
+
throw new BiometricUnavailableError("Biometric unlock is only supported on macOS.");
|
|
144
|
+
}
|
|
145
|
+
const hash = createHash("sha256").update(SWIFT_SOURCE).digest("hex").slice(0, 8);
|
|
146
|
+
const bin = join(binDir(), `${HELPER_BASENAME}-${hash}`);
|
|
147
|
+
if (existsSync(bin))
|
|
148
|
+
return bin;
|
|
149
|
+
mkdirSync(binDir(), { recursive: true, mode: 0o700 });
|
|
150
|
+
const src = join(binDir(), `${HELPER_BASENAME}.swift`);
|
|
151
|
+
writeFileSync(src, SWIFT_SOURCE);
|
|
152
|
+
try {
|
|
153
|
+
execFileSync("swiftc", ["-O", "-o", bin, src], { stdio: ["ignore", "ignore", "pipe"] });
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
throw new BiometricUnavailableError("Could not compile the Touch ID helper — are the Xcode Command Line Tools installed? (xcode-select --install)");
|
|
157
|
+
}
|
|
158
|
+
for (const f of readdirSync(binDir())) {
|
|
159
|
+
if (f.startsWith(`${HELPER_BASENAME}-`) && f !== `${HELPER_BASENAME}-${hash}`) {
|
|
160
|
+
try {
|
|
161
|
+
unlinkSync(join(binDir(), f));
|
|
162
|
+
}
|
|
163
|
+
catch { /* best effort */ }
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return bin;
|
|
167
|
+
}
|
|
168
|
+
function runHelper(args, input) {
|
|
169
|
+
const bin = ensureHelper();
|
|
170
|
+
return new Promise((resolve) => {
|
|
171
|
+
const child = execFile(bin, args, { encoding: "utf8", maxBuffer: 1024 * 1024 }, (error, stdout, stderr) => {
|
|
172
|
+
const code = error
|
|
173
|
+
? typeof error.code === "number"
|
|
174
|
+
? (error.code)
|
|
175
|
+
: 1
|
|
176
|
+
: 0;
|
|
177
|
+
resolve({ code, stdout, stderr });
|
|
178
|
+
});
|
|
179
|
+
if (input !== undefined)
|
|
180
|
+
child.stdin?.write(input, "utf8");
|
|
181
|
+
child.stdin?.end();
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Probe biometry without showing a prompt. Returns the biometry type, or
|
|
186
|
+
* null when the hardware/enrollment is missing. Throws
|
|
187
|
+
* {@link BiometricUnavailableError} when the helper can't even be built.
|
|
188
|
+
*/
|
|
189
|
+
export async function biometricCheck() {
|
|
190
|
+
const r = await runHelper(["check"]);
|
|
191
|
+
if (r.code === EXIT_OK)
|
|
192
|
+
return r.stdout.trim();
|
|
193
|
+
if (r.code === EXIT_UNAVAILABLE)
|
|
194
|
+
return null;
|
|
195
|
+
throw new Error(`biometric check failed: ${r.stderr.trim() || `exit ${r.code}`}`);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Show the system Touch ID sheet and return whether the user passed.
|
|
199
|
+
* Throws {@link BiometricUnavailableError} when biometry can't be evaluated
|
|
200
|
+
* (caller should fall back to its non-biometric path).
|
|
201
|
+
*/
|
|
202
|
+
export async function biometricPrompt(reason) {
|
|
203
|
+
const r = await runHelper(["prompt", reason]);
|
|
204
|
+
if (r.code === EXIT_OK)
|
|
205
|
+
return true;
|
|
206
|
+
if (r.code === EXIT_DENIED)
|
|
207
|
+
return false;
|
|
208
|
+
throw new BiometricUnavailableError(r.stderr.trim() || "biometry unavailable");
|
|
209
|
+
}
|
|
210
|
+
/** Save the passphrase for `account` (profile name) in the login keychain. */
|
|
211
|
+
export async function storeBiometricPassphrase(account, passphrase) {
|
|
212
|
+
const r = await runHelper(["store", account], passphrase);
|
|
213
|
+
if (r.code !== EXIT_OK) {
|
|
214
|
+
throw new Error(`could not store passphrase in keychain: ${r.stderr.trim() || `exit ${r.code}`}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Biometric-gated read of the stored passphrase. Returns null when the user
|
|
219
|
+
* cancels/fails the check or no passphrase is stored — both mean "fall back
|
|
220
|
+
* to typing the passphrase". Throws {@link BiometricUnavailableError} when
|
|
221
|
+
* biometry can't be evaluated at all.
|
|
222
|
+
*/
|
|
223
|
+
export async function readBiometricPassphrase(account, reason) {
|
|
224
|
+
const r = await runHelper(["read", account, reason]);
|
|
225
|
+
if (r.code === EXIT_OK)
|
|
226
|
+
return r.stdout;
|
|
227
|
+
if (r.code === EXIT_DENIED || r.code === EXIT_NOT_FOUND)
|
|
228
|
+
return null;
|
|
229
|
+
if (r.code === EXIT_UNAVAILABLE) {
|
|
230
|
+
throw new BiometricUnavailableError(r.stderr.trim() || "biometry unavailable");
|
|
231
|
+
}
|
|
232
|
+
throw new Error(`keychain read failed: ${r.stderr.trim() || `exit ${r.code}`}`);
|
|
233
|
+
}
|
|
234
|
+
/** Remove the stored passphrase. Returns false if none was stored. */
|
|
235
|
+
export async function deleteBiometricPassphrase(account) {
|
|
236
|
+
const r = await runHelper(["delete", account]);
|
|
237
|
+
if (r.code === EXIT_OK)
|
|
238
|
+
return true;
|
|
239
|
+
if (r.code === EXIT_NOT_FOUND)
|
|
240
|
+
return false;
|
|
241
|
+
throw new Error(`keychain delete failed: ${r.stderr.trim() || `exit ${r.code}`}`);
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/biometric/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAE5D,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAEzC,oDAAoD;AACpD,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8FpB,CAAC;AAIF,kGAAkG;AAClG,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,QAAQ,EAAE,KAAK,QAAQ,CAAC;AACjC,CAAC;AAED,SAAS,MAAM;IACb,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY;IACnB,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,yBAAyB,CAAC,8CAA8C,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,eAAe,IAAI,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAEhC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,eAAe,QAAQ,CAAC,CAAC;IACvD,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,yBAAyB,CACjC,8GAA8G,CAC/G,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,eAAe,IAAI,IAAI,EAAE,EAAE,CAAC;YAC9E,IAAI,CAAC;gBAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAQD,SAAS,SAAS,CAAC,IAAc,EAAE,KAAc;IAC/C,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,QAAQ,CACpB,GAAG,EACH,IAAI,EACJ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,EAC5C,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,KAAK;gBAChB,CAAC,CAAC,OAAQ,KAAoD,CAAC,IAAI,KAAK,QAAQ;oBAC9E,CAAC,CAAC,CAAE,KAAqC,CAAC,IAAI,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC,CAAC;YACN,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC,CACF,CAAC;QACF,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAkB,CAAC;IAC/D,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc;IAClD,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,IAAI,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,sBAAsB,CAAC,CAAC;AACjF,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAe,EAAE,UAAkB;IAChF,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAe,EAAE,MAAc;IAC3E,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAChC,MAAM,IAAI,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,sBAAsB,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAAe;IAC7D,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/cli/balance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/cli/balance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CvE"}
|
package/dist/cli/balance.js
CHANGED
|
@@ -6,34 +6,11 @@
|
|
|
6
6
|
* configured network's USDC balance.
|
|
7
7
|
*/
|
|
8
8
|
import chalk from "chalk";
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import { profileExists } from "../profile/storage.js";
|
|
12
|
-
import { readWalletFile } from "../profile/storage.js";
|
|
13
|
-
import { profilePath } from "../profile/storage.js";
|
|
14
|
-
import { getActiveProfile } from "./accounts.js";
|
|
9
|
+
import { signersFromProfile } from "../profile/index.js";
|
|
10
|
+
import { unlockActive } from "./common.js";
|
|
15
11
|
export async function runBalance(opts) {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
console.error(chalk.red(`✗ Profile "${name}" not found. Run \`xpay init\` first.`));
|
|
19
|
-
process.exit(1);
|
|
20
|
-
}
|
|
21
|
-
const wallet = readWalletFile(profilePath(name));
|
|
22
|
-
let passphrase = opts.passphrase ?? process.env.XPAY_PASSPHRASE;
|
|
23
|
-
if (wallet.encrypted && !passphrase) {
|
|
24
|
-
const a = await inquirer.prompt([
|
|
25
|
-
{ type: "password", name: "p", message: `Passphrase for "${name}":`, mask: "*" },
|
|
26
|
-
]);
|
|
27
|
-
passphrase = a.p;
|
|
28
|
-
}
|
|
29
|
-
let profile;
|
|
30
|
-
try {
|
|
31
|
-
profile = await loadProfile({ name, passphrase });
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
console.error(chalk.red(`✗ ${err.message}`));
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
12
|
+
const profile = await unlockActive(opts);
|
|
13
|
+
const name = profile.name;
|
|
37
14
|
const signers = signersFromProfile(profile);
|
|
38
15
|
const networks = opts.network ? [opts.network] : profile.config.networks;
|
|
39
16
|
console.log("");
|
package/dist/cli/balance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/cli/balance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/cli/balance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC5E,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAElE,IAAI,OAAQ,MAAc,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,MAAO,MAAc,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvD,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5D,8BAA8B;gBAC9B,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;oBAAE,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC;YACzE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,SAAS,IAAI,GAAG,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;AAC5G,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `xpay biometric enable|disable|status` — Touch ID unlock for a profile
|
|
3
|
+
* (macOS only). `enable` verifies the passphrase against the wallet, runs a
|
|
4
|
+
* Touch ID check, then stores the passphrase in the login keychain; from
|
|
5
|
+
* then on `unlockActive` offers Touch ID before falling back to typing.
|
|
6
|
+
*/
|
|
7
|
+
export interface BiometricCmdOptions {
|
|
8
|
+
profile?: string;
|
|
9
|
+
passphrase?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function runBiometricEnable(opts: BiometricCmdOptions): Promise<void>;
|
|
12
|
+
export declare function runBiometricDisable(opts: BiometricCmdOptions): Promise<void>;
|
|
13
|
+
export declare function runBiometricStatus(profileName?: string): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=biometric.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"biometric.d.ts","sourceRoot":"","sources":["../../src/cli/biometric.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAWD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEjF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAalF;AAED,wBAAsB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B5E"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `xpay biometric enable|disable|status` — Touch ID unlock for a profile
|
|
3
|
+
* (macOS only). `enable` verifies the passphrase against the wallet, runs a
|
|
4
|
+
* Touch ID check, then stores the passphrase in the login keychain; from
|
|
5
|
+
* then on `unlockActive` offers Touch ID before falling back to typing.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
import inquirer from "inquirer";
|
|
9
|
+
import { BiometricUnavailableError, biometricCheck, biometricPlatformSupported, biometricPrompt, deleteBiometricPassphrase, storeBiometricPassphrase, } from "../biometric/index.js";
|
|
10
|
+
import { setProfileBiometric, readProfileConfig } from "../profile/index.js";
|
|
11
|
+
import { profileExists, profilePath, readWalletFile, unlockWalletFile } from "../profile/storage.js";
|
|
12
|
+
import { getActiveProfile } from "./accounts.js";
|
|
13
|
+
function resolveProfileOrExit(profileName) {
|
|
14
|
+
const name = profileName ?? getActiveProfile();
|
|
15
|
+
if (!profileExists(name)) {
|
|
16
|
+
console.error(chalk.red(`✗ Profile "${name}" not found. Run \`xpay init\` first.`));
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
return name;
|
|
20
|
+
}
|
|
21
|
+
export async function runBiometricEnable(opts) {
|
|
22
|
+
const name = resolveProfileOrExit(opts.profile);
|
|
23
|
+
if (!biometricPlatformSupported()) {
|
|
24
|
+
console.error(chalk.red("✗ Biometric unlock is only supported on macOS (Touch ID)."));
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
const wallet = readWalletFile(profilePath(name));
|
|
28
|
+
if (!wallet.encrypted) {
|
|
29
|
+
console.error(chalk.red(`✗ Profile "${name}" is unencrypted (dev wallet) — there is no passphrase to protect.`));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
let biometry;
|
|
33
|
+
try {
|
|
34
|
+
biometry = await biometricCheck();
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
console.error(chalk.red(`✗ ${err.message}`));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
if (!biometry) {
|
|
41
|
+
console.error(chalk.red("✗ No usable biometry — enroll Touch ID in System Settings first."));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
// Verify the passphrase actually unlocks this wallet before storing it.
|
|
45
|
+
let passphrase = opts.passphrase ?? process.env.XPAY_PASSPHRASE;
|
|
46
|
+
if (!passphrase) {
|
|
47
|
+
const a = await inquirer.prompt([
|
|
48
|
+
{ type: "password", name: "p", message: `Passphrase for "${name}":`, mask: "*" },
|
|
49
|
+
]);
|
|
50
|
+
passphrase = a.p;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
unlockWalletFile(wallet, passphrase);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
console.error(chalk.red(`✗ ${err.message}`));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const ok = await biometricPrompt(`enable Touch ID unlock for the xPay profile "${name}"`);
|
|
61
|
+
if (!ok) {
|
|
62
|
+
console.log(chalk.yellow("Cancelled — biometric unlock not enabled."));
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
await storeBiometricPassphrase(name, passphrase);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
const msg = err instanceof BiometricUnavailableError
|
|
69
|
+
? `${err.message} — biometric unlock not enabled.`
|
|
70
|
+
: err.message;
|
|
71
|
+
console.error(chalk.red(`✗ ${msg}`));
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
setProfileBiometric(name, true);
|
|
75
|
+
console.log("");
|
|
76
|
+
console.log(chalk.green(`✔ Touch ID unlock enabled for "${name}".`));
|
|
77
|
+
console.log(chalk.dim(" The passphrase now lives in your login keychain, gated by Touch ID."));
|
|
78
|
+
console.log(chalk.dim(" macOS may ask once to allow keychain access — choose \"Always Allow\"."));
|
|
79
|
+
console.log(chalk.dim(" Your passphrase still works everywhere and remains the recovery path."));
|
|
80
|
+
}
|
|
81
|
+
export async function runBiometricDisable(opts) {
|
|
82
|
+
const name = resolveProfileOrExit(opts.profile);
|
|
83
|
+
try {
|
|
84
|
+
await deleteBiometricPassphrase(name);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
if (!(err instanceof BiometricUnavailableError)) {
|
|
88
|
+
console.error(chalk.red(`✗ ${err.message}`));
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
// Helper unbuildable (e.g. CLT removed) — still clear the config flag.
|
|
92
|
+
}
|
|
93
|
+
setProfileBiometric(name, false);
|
|
94
|
+
console.log(chalk.green(`✔ Touch ID unlock disabled for "${name}" — keychain entry removed.`));
|
|
95
|
+
}
|
|
96
|
+
export async function runBiometricStatus(profileName) {
|
|
97
|
+
const name = resolveProfileOrExit(profileName);
|
|
98
|
+
const config = readProfileConfig(name);
|
|
99
|
+
console.log(chalk.bold(`Biometric unlock for "${name}"`));
|
|
100
|
+
if (!biometricPlatformSupported()) {
|
|
101
|
+
console.log(chalk.yellow(" unsupported platform (macOS only)"));
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
let biometry = null;
|
|
105
|
+
let unavailableReason;
|
|
106
|
+
try {
|
|
107
|
+
biometry = await biometricCheck();
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
unavailableReason = err.message;
|
|
111
|
+
}
|
|
112
|
+
const hardware = biometry
|
|
113
|
+
? chalk.green(biometry === "faceid" ? "Face ID" : "Touch ID")
|
|
114
|
+
: chalk.yellow(unavailableReason ?? "not available (no enrolled biometry?)");
|
|
115
|
+
console.log(` biometry ${hardware}`);
|
|
116
|
+
console.log(` enabled ${config.biometric?.enabled ? chalk.green("yes") : chalk.dim("no")}`);
|
|
117
|
+
if (!config.biometric?.enabled && biometry) {
|
|
118
|
+
console.log(chalk.dim(" Enable with: xpay biometric enable"));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=biometric.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"biometric.js","sourceRoot":"","sources":["../../src/cli/biometric.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/common.d.ts
CHANGED
|
@@ -2,15 +2,25 @@
|
|
|
2
2
|
* Shared CLI helpers: unlock the active profile, format addresses + amounts.
|
|
3
3
|
*/
|
|
4
4
|
import type { LoadedProfile } from "../profile/index.js";
|
|
5
|
+
import type { GuardrailConfig } from "../guardrail/index.js";
|
|
5
6
|
export interface UnlockOptions {
|
|
6
7
|
profile?: string;
|
|
7
8
|
passphrase?: string;
|
|
8
9
|
}
|
|
9
10
|
/**
|
|
10
11
|
* Resolve + unlock the active profile, prompting for passphrase if needed.
|
|
11
|
-
*
|
|
12
|
+
* Order: explicit option → $XPAY_PASSPHRASE → biometric (Touch ID, when
|
|
13
|
+
* enabled via `xpay biometric enable`) → interactive prompt.
|
|
12
14
|
*/
|
|
13
15
|
export declare function unlockActive(opts?: UnlockOptions): Promise<LoadedProfile>;
|
|
16
|
+
/**
|
|
17
|
+
* Guardrail config with the approval hook wired up: Touch ID when the
|
|
18
|
+
* profile has biometric unlock enabled, otherwise a y/n prompt on a TTY.
|
|
19
|
+
* Without either, calls above `requireApprovalAbove` are denied.
|
|
20
|
+
*/
|
|
21
|
+
export declare function guardrailWithApproval(profile: LoadedProfile, opts?: {
|
|
22
|
+
interactive?: boolean;
|
|
23
|
+
}): GuardrailConfig;
|
|
14
24
|
/** Compact display for long addresses: `7RB7...f5ph`. */
|
|
15
25
|
export declare function shortAddress(addr: string, head?: number, tail?: number): string;
|
|
16
26
|
/** "$0.0123 USDC", consistent width. */
|
package/dist/cli/common.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CA4CnF;AAyBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,eAAe,CAiCjB;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,IAAI,SAAI,GAAG,MAAM,CAGrE;AAED,wCAAwC;AACxC,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,sCAAsC;AACtC,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAOjD"}
|
package/dist/cli/common.js
CHANGED
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
import inquirer from "inquirer";
|
|
6
6
|
import { loadProfile } from "../profile/index.js";
|
|
7
|
-
import { profileExists, readWalletFile, profilePath } from "../profile/storage.js";
|
|
7
|
+
import { profileExists, readWalletFile, readConfigFile, profilePath } from "../profile/storage.js";
|
|
8
|
+
import { BiometricUnavailableError, biometricPrompt, readBiometricPassphrase, } from "../biometric/index.js";
|
|
8
9
|
import { getActiveProfile } from "./accounts.js";
|
|
9
10
|
/**
|
|
10
11
|
* Resolve + unlock the active profile, prompting for passphrase if needed.
|
|
11
|
-
*
|
|
12
|
+
* Order: explicit option → $XPAY_PASSPHRASE → biometric (Touch ID, when
|
|
13
|
+
* enabled via `xpay biometric enable`) → interactive prompt.
|
|
12
14
|
*/
|
|
13
15
|
export async function unlockActive(opts = {}) {
|
|
14
16
|
const name = opts.profile ?? getActiveProfile();
|
|
@@ -18,20 +20,98 @@ export async function unlockActive(opts = {}) {
|
|
|
18
20
|
}
|
|
19
21
|
const wallet = readWalletFile(profilePath(name));
|
|
20
22
|
let passphrase = opts.passphrase ?? process.env.XPAY_PASSPHRASE;
|
|
23
|
+
let viaBiometric = false;
|
|
21
24
|
if (wallet.encrypted && !passphrase) {
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
const fromKeychain = await tryBiometricUnlock(name);
|
|
26
|
+
if (fromKeychain) {
|
|
27
|
+
passphrase = fromKeychain;
|
|
28
|
+
viaBiometric = true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (wallet.encrypted && !passphrase) {
|
|
32
|
+
passphrase = await promptPassphrase(name);
|
|
26
33
|
}
|
|
27
34
|
try {
|
|
28
35
|
return await loadProfile({ name, passphrase });
|
|
29
36
|
}
|
|
30
37
|
catch (err) {
|
|
38
|
+
// The keychain copy can go stale if the wallet was re-encrypted with a
|
|
39
|
+
// new passphrase — give the user one interactive retry instead of dying.
|
|
40
|
+
if (viaBiometric && process.stdin.isTTY) {
|
|
41
|
+
console.error(chalk.yellow(`⚠ The passphrase stored for Touch ID no longer unlocks "${name}" — run \`xpay biometric enable\` to refresh it.`));
|
|
42
|
+
try {
|
|
43
|
+
return await loadProfile({ name, passphrase: await promptPassphrase(name) });
|
|
44
|
+
}
|
|
45
|
+
catch (err2) {
|
|
46
|
+
console.error(chalk.red(`✗ ${err2.message}`));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
31
50
|
console.error(chalk.red(`✗ ${err.message}`));
|
|
32
51
|
process.exit(1);
|
|
33
52
|
}
|
|
34
53
|
}
|
|
54
|
+
async function promptPassphrase(name) {
|
|
55
|
+
const a = await inquirer.prompt([
|
|
56
|
+
{ type: "password", name: "p", message: `Passphrase for "${name}":`, mask: "*" },
|
|
57
|
+
]);
|
|
58
|
+
return a.p;
|
|
59
|
+
}
|
|
60
|
+
/** Touch ID keychain read; resolves undefined whenever falling back to typing is the answer. */
|
|
61
|
+
async function tryBiometricUnlock(name) {
|
|
62
|
+
const config = readConfigFile(profilePath(name));
|
|
63
|
+
if (!config.biometric?.enabled)
|
|
64
|
+
return undefined;
|
|
65
|
+
try {
|
|
66
|
+
const passphrase = await readBiometricPassphrase(name, `unlock the xPay profile "${name}"`);
|
|
67
|
+
if (!passphrase && process.stdin.isTTY) {
|
|
68
|
+
console.log(chalk.dim(" (biometric unlock cancelled — enter the passphrase instead)"));
|
|
69
|
+
}
|
|
70
|
+
return passphrase ?? undefined;
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
if (err instanceof BiometricUnavailableError)
|
|
74
|
+
return undefined;
|
|
75
|
+
throw err;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Guardrail config with the approval hook wired up: Touch ID when the
|
|
80
|
+
* profile has biometric unlock enabled, otherwise a y/n prompt on a TTY.
|
|
81
|
+
* Without either, calls above `requireApprovalAbove` are denied.
|
|
82
|
+
*/
|
|
83
|
+
export function guardrailWithApproval(profile, opts = {}) {
|
|
84
|
+
const interactive = opts.interactive ?? true;
|
|
85
|
+
return {
|
|
86
|
+
...profile.config.guardrail,
|
|
87
|
+
onApprovalRequired: async ({ resource, usd }) => {
|
|
88
|
+
const target = resource.type === "transfer" ? "a direct transfer" : resource.resource;
|
|
89
|
+
if (profile.config.biometric?.enabled) {
|
|
90
|
+
try {
|
|
91
|
+
return await biometricPrompt(`approve a $${usd.toFixed(2)} xPay payment to ${target}`);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
if (!(err instanceof BiometricUnavailableError))
|
|
95
|
+
throw err;
|
|
96
|
+
// Biometry unavailable right now (e.g. lid closed) — fall through.
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (interactive && process.stdin.isTTY) {
|
|
100
|
+
const { ok } = await inquirer.prompt([
|
|
101
|
+
{
|
|
102
|
+
type: "confirm",
|
|
103
|
+
name: "ok",
|
|
104
|
+
message: `Approve ${formatUsd(usd)} for ${chalk.cyan(target)}? (above your approval threshold)`,
|
|
105
|
+
default: false,
|
|
106
|
+
},
|
|
107
|
+
]);
|
|
108
|
+
return ok;
|
|
109
|
+
}
|
|
110
|
+
console.error(chalk.yellow(`⚠ $${usd.toFixed(2)} call needs approval but no biometric or interactive terminal is available — denying.`));
|
|
111
|
+
return false;
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
35
115
|
/** Compact display for long addresses: `7RB7...f5ph`. */
|
|
36
116
|
export function shortAddress(addr, head = 4, tail = 4) {
|
|
37
117
|
if (!addr || addr.length <= head + tail + 3)
|
package/dist/cli/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -28,6 +28,7 @@ import { runPay } from "./pay.js";
|
|
|
28
28
|
import { runHistory } from "./history.js";
|
|
29
29
|
import { runTransfer } from "./transfer.js";
|
|
30
30
|
import { runGuardrailShow, runGuardrailSet, runGuardrailClear } from "./guardrail.js";
|
|
31
|
+
import { runBiometricEnable, runBiometricDisable, runBiometricStatus } from "./biometric.js";
|
|
31
32
|
import { runSanaLink, runSanaUnlink, runSanaStatus, runSanaCard, runSanaCardBalance, runSanaCardDeposit, runSanaCardTransactions, runSanaPortfolio, runSanaPrice, runSanaSwap, runSanaNotifications, } from "./sana.js";
|
|
32
33
|
import { runMagicBlockStatus, runMagicBlockInitMint, runMagicBlockConfigure, } from "./magicblock.js";
|
|
33
34
|
import { startMcpServer } from "./mcp-server.js";
|
|
@@ -134,6 +135,25 @@ guardrail
|
|
|
134
135
|
.command("clear [profile]")
|
|
135
136
|
.description("Remove the guardrail entirely.")
|
|
136
137
|
.action((profile) => runGuardrailClear(profile));
|
|
138
|
+
// ---------------------------------------------------------------- biometric
|
|
139
|
+
const biometric = program
|
|
140
|
+
.command("biometric")
|
|
141
|
+
.description("Touch ID unlock for profile passphrases (macOS only).");
|
|
142
|
+
biometric
|
|
143
|
+
.command("status [profile]", { isDefault: true })
|
|
144
|
+
.description("Show biometric availability + whether unlock is enabled.")
|
|
145
|
+
.action(async (profile) => runBiometricStatus(profile));
|
|
146
|
+
biometric
|
|
147
|
+
.command("enable")
|
|
148
|
+
.description("Store the wallet passphrase in the keychain, gated by Touch ID.")
|
|
149
|
+
.option("--profile <name>", "Profile to enable (defaults to active)")
|
|
150
|
+
.option("--passphrase <value>", "Non-interactive passphrase (scripts/tests)")
|
|
151
|
+
.action(async (opts) => runBiometricEnable(opts));
|
|
152
|
+
biometric
|
|
153
|
+
.command("disable")
|
|
154
|
+
.description("Remove the keychain entry and turn Touch ID unlock off.")
|
|
155
|
+
.option("--profile <name>", "Profile to disable (defaults to active)")
|
|
156
|
+
.action(async (opts) => runBiometricDisable(opts));
|
|
137
157
|
// ---------------------------------------------------------------- balance
|
|
138
158
|
program
|
|
139
159
|
.command("balance")
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AACrF,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EACL,WAAW,EAAE,aAAa,EAAE,aAAa,EACzC,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAC5E,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,GAClE,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvB,wEAAwE;AACxE,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,UAAU,EAAE,8DAA8D,CAAC;KAClF,MAAM,CAAC,cAAc,EAAE,+CAA+C,CAAC;KACvE,MAAM,CAAC,aAAa,EAAE,8CAA8C,CAAC;KACrE,MAAM,CAAC,aAAa,EAAE,gDAAgD,CAAC;KACvE,MAAM,CAAC,sBAAsB,EAAE,4CAA4C,CAAC;KAC5E,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;KACzE,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAI,EAAE,EAAE;IAC/C,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,4EAA4E;AAC5E,MAAM,QAAQ,GAAG,OAAO;KACrB,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,wBAAwB,CAAC,CAAC;AAEzC,QAAQ;KACL,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACpC,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;AAEnC,QAAQ;KACL,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpD,QAAQ;KACL,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAElD,4EAA4E;AAC5E,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,yCAAyC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,KAAyB,EAAE,IAAI,EAAE,EAAE;IAChD,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEL,uEAAuE;AACvE,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;KACtE,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,cAAc,EAAE,6DAA6D,CAAC;KACrF,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;KACtE,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8BAA8B,CAAC;KACnD,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,IAAI,EAAE,EAAE;IAClC,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,2EAA2E;AAC3E,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,kBAAkB,EAAE,uCAAuC,CAAC;KACnE,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,uBAAuB,EAAE,6CAA6C,CAAC;KAC9E,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC;KACjC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,4EAA4E;AAC5E,OAAO;KACJ,OAAO,CAAC,gCAAgC,CAAC;KACzC,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;KACvE,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;KACxE,MAAM,CAAC,WAAW,EAAE,iEAAiE,CAAC;KACtF,MAAM,CAAC,WAAW,EAAE,8BAA8B,CAAC;KACnD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,KAAa,EAAE,EAAU,EAAE,IAAI,EAAE,EAAE;IAChE,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,6EAA6E;AAC7E,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,uDAAuD,CAAC,CAAC;AAExE,SAAS;KACN,OAAO,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAC9C,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3D,SAAS;KACN,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,sCAAsC,CAAC;KAClE,MAAM,CAAC,oBAAoB,EAAE,gCAAgC,CAAC;KAC9D,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC;KAC/D,MAAM,CAAC,gCAAgC,EAAE,mDAAmD,CAAC;KAC7F,MAAM,CAAC,wBAAwB,EAAE,mDAAmD,CAAC;KACrF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAE3C,SAAS;KACN,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE5D,2EAA2E;AAC3E,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,kBAAkB,EAAE,uCAAuC,CAAC;KACnE,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;KACxE,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,wEAAwE;AACxE,MAAM,IAAI,GAAG,OAAO;KACjB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2DAA2D,CAAC,CAAC;AAE5E,IAAI;KACD,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,kBAAkB,EAAE,yCAAyC,CAAC;KACrE,MAAM,CAAC,CAAC,MAAc,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAE/D,IAAI;KACD,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,kBAAkB,EAAE,6CAA6C,CAAC;KACzE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAEzC,IAAI;KACD,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACtC,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,kBAAkB,EAAE,uCAAuC,CAAC;KACnE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAEzC,IAAI;KACD,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,kBAAkB,CAAC;KAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvC,IAAI;KACD,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,kBAAkB,CAAC;KAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9C,IAAI;KACD,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,kBAAkB,CAAC;KAC1B,MAAM,CAAC,CAAC,MAAc,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAEtE,IAAI;KACD,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,kBAAkB,CAAC;KAC1B,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC;KACpC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AAEnD,IAAI;KACD,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,kBAAkB,CAAC;KAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAE5C,IAAI;KACD,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,kBAAkB,CAAC;KAC1B,MAAM,CAAC,CAAC,KAAa,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAE9D,IAAI;KACD,OAAO,CAAC,qCAAqC,CAAC;KAC9C,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,kBAAkB,CAAC;KAC1B,MAAM,CAAC,CAAC,IAAY,EAAE,EAAU,EAAE,MAAc,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAEnG,IAAI;KACD,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,kBAAkB,CAAC;KAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhD,8EAA8E;AAC9E,MAAM,UAAU,GAAG,OAAO;KACvB,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,yFAAyF,CAAC,CAAC;AAE1G,UAAU;KACP,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACtC,WAAW,CAAC,uEAAuE,CAAC;KACpF,MAAM,CAAC,kBAAkB,EAAE,uCAAuC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAErD,UAAU;KACP,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,wFAAwF,CAAC;KACrG,MAAM,CAAC,kBAAkB,EAAE,qCAAqC,CAAC;KACjE,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;KAC/E,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvD,UAAU;KACP,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,6FAA6F,CAAC;KAC1G,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;KACvE,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;KAC7D,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,CAAC;KAChE,MAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC;KAChE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;AAElD,uEAAuE;AACvE,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAsB,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,uEAAuE;AACvE,+EAA+E;AAC/E,uEAAuE;AACvE,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAClD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAgCH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA8HpD"}
|
package/dist/cli/mcp-server.js
CHANGED
|
@@ -32,6 +32,7 @@ import { rawSolanaSigner } from "../signers/raw-solana.js";
|
|
|
32
32
|
import { rawEvmSigner } from "../signers/raw-evm.js";
|
|
33
33
|
import { forClaude } from "../tools/index.js";
|
|
34
34
|
import { getActiveProfile } from "./accounts.js";
|
|
35
|
+
import { guardrailWithApproval } from "./common.js";
|
|
35
36
|
/** Pending transfers waiting for user confirmation. Keyed by 6-digit code. */
|
|
36
37
|
const pendingTransfers = new Map();
|
|
37
38
|
const TRANSFER_EXPIRY_MS = 5 * 60 * 1000; // 5 minutes
|
|
@@ -154,9 +155,11 @@ async function buildXPay() {
|
|
|
154
155
|
if (profileExists(profileName)) {
|
|
155
156
|
const profile = await loadProfile({
|
|
156
157
|
name: profileName,
|
|
157
|
-
passphrase: process.env.XPAY_PASSPHRASE,
|
|
158
|
+
passphrase: process.env.XPAY_PASSPHRASE ?? (await biometricMcpPassphrase(profileName)),
|
|
158
159
|
});
|
|
159
|
-
|
|
160
|
+
// No TTY here — approvals above the guardrail threshold surface as a
|
|
161
|
+
// system Touch ID dialog when the profile has biometric unlock enabled.
|
|
162
|
+
return createXPay({ profile, guardrail: guardrailWithApproval(profile, { interactive: false }) });
|
|
160
163
|
}
|
|
161
164
|
// Fallback: ephemeral raw signers.
|
|
162
165
|
const networks = (process.env.XPAY_NETWORKS ?? "solana,base").split(",");
|
|
@@ -202,6 +205,25 @@ async function resolveSanaApiKey() {
|
|
|
202
205
|
}
|
|
203
206
|
return process.env.SANABOT_API_KEY || undefined;
|
|
204
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Touch ID unlock at MCP startup — lets hosts omit XPAY_PASSPHRASE from
|
|
210
|
+
* their config when the profile has `xpay biometric enable` set. Shows one
|
|
211
|
+
* system dialog as the server boots; resolves undefined on any failure so
|
|
212
|
+
* loadProfile produces its normal "passphrase required" error.
|
|
213
|
+
*/
|
|
214
|
+
async function biometricMcpPassphrase(profileName) {
|
|
215
|
+
try {
|
|
216
|
+
const { readProfileConfig } = await import("../profile/index.js");
|
|
217
|
+
if (!readProfileConfig(profileName).biometric?.enabled)
|
|
218
|
+
return undefined;
|
|
219
|
+
const { readBiometricPassphrase } = await import("../biometric/index.js");
|
|
220
|
+
return ((await readBiometricPassphrase(profileName, `unlock the xPay profile "${profileName}"`)) ??
|
|
221
|
+
undefined);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
205
227
|
function numericEnv(name) {
|
|
206
228
|
const v = process.env[name];
|
|
207
229
|
if (v === undefined || v === "")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/cli/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/cli/mcp-server.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/pay.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
import inquirer from "inquirer";
|
|
9
9
|
import { createXPay } from "../index.js";
|
|
10
|
-
import { unlockActive, formatUsd } from "./common.js";
|
|
10
|
+
import { unlockActive, guardrailWithApproval, formatUsd } from "./common.js";
|
|
11
11
|
export async function runPay(url, opts) {
|
|
12
12
|
if (!url) {
|
|
13
13
|
console.error(chalk.red("✗ usage: xpay pay <url> [--max-usd N] [--body '{...}']"));
|
|
@@ -21,7 +21,7 @@ export async function runPay(url, opts) {
|
|
|
21
21
|
maxPerTx: Number(opts.maxUsd),
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
const xpay = createXPay({ profile });
|
|
24
|
+
const xpay = createXPay({ profile, guardrail: guardrailWithApproval(profile) });
|
|
25
25
|
// Pre-flight: parse the body if supplied.
|
|
26
26
|
let body;
|
|
27
27
|
if (opts.body) {
|
package/dist/cli/pay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../../src/cli/pay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../../src/cli/pay.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/transfer.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import chalk from "chalk";
|
|
15
15
|
import inquirer from "inquirer";
|
|
16
16
|
import { createXPay } from "../index.js";
|
|
17
|
-
import { unlockActive, shortAddress } from "./common.js";
|
|
17
|
+
import { unlockActive, guardrailWithApproval, shortAddress } from "./common.js";
|
|
18
18
|
export async function runTransfer(amountArg, tokenArg, to, opts) {
|
|
19
19
|
const amount = Number(amountArg);
|
|
20
20
|
if (!(amount > 0)) {
|
|
@@ -27,7 +27,7 @@ export async function runTransfer(amountArg, tokenArg, to, opts) {
|
|
|
27
27
|
process.exit(1);
|
|
28
28
|
}
|
|
29
29
|
const profile = await unlockActive(opts);
|
|
30
|
-
const xpay = createXPay({ profile });
|
|
30
|
+
const xpay = createXPay({ profile, guardrail: guardrailWithApproval(profile) });
|
|
31
31
|
// Confirm.
|
|
32
32
|
if (process.stdin.isTTY && !opts.yes) {
|
|
33
33
|
const { go } = await inquirer.prompt([
|
package/dist/cli/transfer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAa,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":"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"}
|
package/dist/profile/index.d.ts
CHANGED
|
@@ -61,6 +61,10 @@ export declare function signersFromProfile(profile: LoadedProfile): Partial<Reco
|
|
|
61
61
|
export declare function setProfileGuardrail(name: string, guardrail: NonNullable<ProfileConfig["guardrail"]>, opts?: {
|
|
62
62
|
workspace?: boolean | string;
|
|
63
63
|
}): ProfileConfig;
|
|
64
|
+
/** Toggle the biometric-unlock flag. The keychain item itself is managed by the CLI. */
|
|
65
|
+
export declare function setProfileBiometric(name: string, enabled: boolean, opts?: {
|
|
66
|
+
workspace?: boolean | string;
|
|
67
|
+
}): ProfileConfig;
|
|
64
68
|
/** Persist a Sana API key for the profile. MCP picks it up on next start. */
|
|
65
69
|
export declare function setSanaApiKey(name: string, apiKey: string, opts?: {
|
|
66
70
|
workspace?: boolean | string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"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"}
|
|
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
|
@@ -96,6 +96,22 @@ export function setProfileGuardrail(name, guardrail, opts = {}) {
|
|
|
96
96
|
return current;
|
|
97
97
|
}
|
|
98
98
|
// -----------------------------------------------------------------------------
|
|
99
|
+
// Biometric unlock
|
|
100
|
+
// -----------------------------------------------------------------------------
|
|
101
|
+
/** Toggle the biometric-unlock flag. The keychain item itself is managed by the CLI. */
|
|
102
|
+
export function setProfileBiometric(name, enabled, opts = {}) {
|
|
103
|
+
const dir = profilePath(name, opts);
|
|
104
|
+
const current = readConfigFile(dir);
|
|
105
|
+
if (enabled) {
|
|
106
|
+
current.biometric = { enabled: true };
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
delete current.biometric;
|
|
110
|
+
}
|
|
111
|
+
writeConfigFile(dir, current);
|
|
112
|
+
return current;
|
|
113
|
+
}
|
|
114
|
+
// -----------------------------------------------------------------------------
|
|
99
115
|
// Sana integration
|
|
100
116
|
// -----------------------------------------------------------------------------
|
|
101
117
|
/** Persist a Sana API key for the profile. MCP picks it up on next start. */
|
|
@@ -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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"}
|
package/dist/profile/types.d.ts
CHANGED
|
@@ -49,6 +49,14 @@ export interface ProfileConfig {
|
|
|
49
49
|
allowedHosts?: string[];
|
|
50
50
|
requireApprovalAbove?: number;
|
|
51
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* Biometric unlock (macOS Touch ID). When enabled, the wallet passphrase is
|
|
54
|
+
* held in the login keychain and released after a biometric check via
|
|
55
|
+
* `xpay biometric enable`. The passphrase itself remains the recovery path.
|
|
56
|
+
*/
|
|
57
|
+
biometric?: {
|
|
58
|
+
enabled: boolean;
|
|
59
|
+
};
|
|
52
60
|
/** Linked API key for opt-in dashboard sync. */
|
|
53
61
|
link?: {
|
|
54
62
|
apiKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/profile/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,aAAa,CAAC;QACtB,GAAG,EAAE;YAAE,IAAI,EAAE,QAAQ,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvE,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,yCAAyC;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,wEAAwE;IACxE,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,gDAAgD;IAChD,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;OAIG;IACH,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF;;;;OAIG;IACH,UAAU,CAAC,EAAE;QACX,qDAAqD;QACrD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,kDAAkD;QAClD,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/profile/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,aAAa,CAAC;QACtB,GAAG,EAAE;YAAE,IAAI,EAAE,QAAQ,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvE,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,yCAAyC;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,wEAAwE;IACxE,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,gDAAgD;IAChD,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;OAIG;IACH,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF;;;;OAIG;IACH,UAAU,CAAC,EAAE;QACX,qDAAqD;QACrD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,kDAAkD;QAClD,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xona-labs/xpay",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.18",
|
|
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",
|