@xyo-network/wallet-xl1-cli 0.1.21 → 0.1.22

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/README.md CHANGED
@@ -17,7 +17,7 @@ The Aries CLI uses this same package for `aries wallet ...`, so the standalone a
17
17
 
18
18
  ### Prerequisites
19
19
 
20
- - Node.js `>=18.17.1`
20
+ - Node.js `>=22.19.0`
21
21
  - A package manager such as `npm`, `pnpm`, or `yarn`
22
22
 
23
23
  ### Global Install
@@ -59,6 +59,58 @@ aries wallet balance 0
59
59
  aries wallet send 0x0000000000000000000000000000000000000000 1.25 --milli --json
60
60
  ```
61
61
 
62
+ ## Requester-scoped Node signing
63
+
64
+ The supported `@xyo-network/wallet-xl1-cli/signing` entry exposes public wallet
65
+ summaries and short-lived, account-bound signing sessions. Install the package
66
+ locally with its `@xyo-network/xl1-sdk` peer. Consumers select the requester ID,
67
+ exact wallet ID, derivation offset, expected account, chain ID, and independently
68
+ verified genesis hash. The wallet itself confirms that selection and prompts on
69
+ the trusted terminal for its password; this API does not accept a password,
70
+ mnemonic, root wallet, or caller-provided signer.
71
+
72
+ ```ts
73
+ import { listSigningWallets, openWalletSigningSession } from '@xyo-network/wallet-xl1-cli/signing'
74
+
75
+ const wallets = listSigningWallets()
76
+ const session = await openWalletSigningSession(selection)
77
+ try {
78
+ const snapshot = await session.snapshot()
79
+ const signed = await session.signTransaction({ requestId, transaction })
80
+ // Persist signed bytes in the participant publication journal before broadcasting.
81
+ } finally {
82
+ await session.close()
83
+ }
84
+ ```
85
+
86
+ Here `selection` is the complete explicit binding and `transaction` is an SDK
87
+ unsigned hydrated transaction. The session signs without publishing bodies or
88
+ broadcasting. It supports secp256k1 wallets; post-quantum transaction signing is
89
+ not qualified. Sessions expire within five minutes. Lock, close, password
90
+ replacement, and wallet replacement revoke authority for new signing.
91
+
92
+ The wallet persists request intent and encrypted signed results in `signing.json`
93
+ under its existing guarded store lease. Retrying the same request returns the
94
+ same bytes. `signingOutcome(requestId)` recovers a retained result through a fresh
95
+ authorized session with the same complete binding. An uncertain intent blocks
96
+ new same-account signing; an error, timeout, or `4001` is never proof that no
97
+ signature exists. Existing CLI `tx sign` and `send` use this same signing ledger,
98
+ with publication remaining a separate command step. Legacy offline signing has
99
+ an explicitly unasserted genesis scope; it cannot authorize public requester
100
+ sessions. This does not reconstruct pre-upgrade or external-key signing history.
101
+
102
+ Run the isolated packed public import, type, real terminal prompt, and process
103
+ recovery fixture from the repository root after both wallet package builds:
104
+
105
+ ```sh
106
+ node packages/wallet-cli/scripts/verifySigningPacked.mjs /absolute/fresh/evidence-directory
107
+ ```
108
+
109
+ The terminal fixture currently qualifies macOS. It creates only a temporary
110
+ public deterministic wallet. Its strict consumer type check uses `skipLibCheck`;
111
+ the full dependency declaration check is retained separately because upstream SDK
112
+ declarations currently fail that broader check.
113
+
62
114
  ## Wallet Storage
63
115
 
64
116
  Wallet CLI data is stored under `~/.xl1/wallet/cli` by default.