@capxul/cli 4.20.0-beta.24 → 4.20.0-beta.27
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 +313 -262
- package/dist/browser/signer.js +154 -112
- package/dist/browser/signer.js.map +1 -1
- package/dist/{entry-DVob5Y9P.mjs → entry-GLdITgH4.mjs} +8902 -8630
- package/dist/entry-GLdITgH4.mjs.map +1 -0
- package/dist/{fast-BqLZA9eV.mjs → fast-BQEiHMyp.mjs} +3 -3
- package/dist/fast-BQEiHMyp.mjs.map +1 -0
- package/dist/main.mjs +2 -2
- package/dist/{where-view-CPYOxIxM.mjs → where-view-Csv4lEES.mjs} +23 -15
- package/dist/{where-view-CPYOxIxM.mjs.map → where-view-Csv4lEES.mjs.map} +1 -1
- package/package.json +4 -4
- package/dist/entry-DVob5Y9P.mjs.map +0 -1
- package/dist/fast-BqLZA9eV.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -10,9 +10,9 @@ capxul --help
|
|
|
10
10
|
capxul --version
|
|
11
11
|
capxul --completions bash
|
|
12
12
|
capxul doctor --json
|
|
13
|
-
capxul telemetry status --json
|
|
14
|
-
capxul telemetry
|
|
15
|
-
capxul telemetry
|
|
13
|
+
capxul config telemetry status --json
|
|
14
|
+
capxul config telemetry off --json
|
|
15
|
+
capxul config telemetry on --json
|
|
16
16
|
capxul doctor --online --timeout-ms 30000 --json
|
|
17
17
|
```
|
|
18
18
|
|
|
@@ -24,6 +24,49 @@ machinery and collection controls send no observation records.
|
|
|
24
24
|
check uses the public Capxul SDK and verifies the backend response nonce.
|
|
25
25
|
It does not authenticate a person or submit a transaction.
|
|
26
26
|
|
|
27
|
+
## Agent plugin
|
|
28
|
+
|
|
29
|
+
[`plugin/`](plugin/README.md) is the Claude Code plugin: one `capxul` skill that
|
|
30
|
+
makes an agent act as the person's Capxul through this CLI, with journeys as
|
|
31
|
+
references, local memory under `~/.capxul/`, and the paste-a-prompt. The
|
|
32
|
+
marketplace entry is the repository root `.claude-plugin/marketplace.json`.
|
|
33
|
+
|
|
34
|
+
## Command schema
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
capxul schema
|
|
38
|
+
capxul schema payment send
|
|
39
|
+
capxul schema org payroll
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`capxul schema` prints every command as JSON: its name, what it does and whether
|
|
43
|
+
it moves money, with the global flags and what each exit code means.
|
|
44
|
+
`capxul schema <command…>` prints one command: usage, arguments, flags, global
|
|
45
|
+
flags and examples, read from the command's own definition (Effect's help
|
|
46
|
+
document, so `--help` and the schema always agree), plus `movesMoney`, `output`
|
|
47
|
+
(what `data` is) and `errors` (the codes it can answer with). A group lists its
|
|
48
|
+
commands. Agents look commands up here instead of copying flags.
|
|
49
|
+
|
|
50
|
+
## Home screen
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
capxul
|
|
54
|
+
capxul --json
|
|
55
|
+
capxul --org acme
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Bare `capxul` is the home screen. It prints where you are at once, from this
|
|
59
|
+
machine: who you are, who you act as and the Safe. Then one backend read
|
|
60
|
+
(`accounts.summaries.home`) returns your balances (or the Organization
|
|
61
|
+
treasury) and what needs you, each with the command that resolves it (requests
|
|
62
|
+
to pay, payroll runs to approve, payments to retry), and it shows a few
|
|
63
|
+
commands to try. A backend without that read gets the separate reads instead.
|
|
64
|
+
A read that fails shows its section as unavailable, never as empty. Signed out,
|
|
65
|
+
it prints `Not signed in · capxul auth login` without a network call. `--json`
|
|
66
|
+
returns the same as data: `where`, `signedIn`, `balances` (the asset
|
|
67
|
+
positions), `needsYou` (each with `next.argv`) and `try`. `capxul --help` is
|
|
68
|
+
the command list.
|
|
69
|
+
|
|
27
70
|
## Where you are
|
|
28
71
|
|
|
29
72
|
```sh
|
|
@@ -52,7 +95,7 @@ Red is only used for errors. JSON output has no header.
|
|
|
52
95
|
The environment comes from `--env <name>`, then `CAPXUL_ENV`, then
|
|
53
96
|
`CAPXUL_BOOTSTRAP_URL`, then the environment `use env` saved, then staging. The
|
|
54
97
|
names are `staging` and `devnet`; production is not available in this CLI yet.
|
|
55
|
-
The devnet
|
|
98
|
+
The devnet uses its fixed test key, so it needs no `CAPXUL_PUBLISHABLE_KEY`.
|
|
56
99
|
|
|
57
100
|
`use org <handle>` finds the Organization among those you belong to and saves
|
|
58
101
|
it for this environment. It grants no authority; the backend checks every
|
|
@@ -72,7 +115,7 @@ a time:
|
|
|
72
115
|
```sh
|
|
73
116
|
capxul org permission change
|
|
74
117
|
capxul org member invite
|
|
75
|
-
capxul
|
|
118
|
+
capxul payment get
|
|
76
119
|
capxul document get
|
|
77
120
|
```
|
|
78
121
|
|
|
@@ -93,74 +136,80 @@ one final version 1 result on stdout. Account setup reports public signer states
|
|
|
93
136
|
Activity shows that the CLI is waiting. It does not prove settlement or a healthy
|
|
94
137
|
connection. A deadline stops observation; it does not cancel a submitted operation.
|
|
95
138
|
|
|
96
|
-
##
|
|
139
|
+
## Sending money through the approval page
|
|
97
140
|
|
|
98
141
|
```sh
|
|
99
|
-
capxul
|
|
100
|
-
capxul
|
|
101
|
-
capxul
|
|
142
|
+
capxul payment send rex@example.com 50
|
|
143
|
+
capxul payment send @rex 12.5 --asset USDT
|
|
144
|
+
capxul payment send 0x91f2…aa10 40
|
|
145
|
+
capxul payment send rex@example.com 50 --json
|
|
146
|
+
capxul payment send rex@example.com 50 --org acme [--budget BUDGET_ID]
|
|
147
|
+
capxul payment send --input payment.json [--org acme] [--request-key K]
|
|
148
|
+
capxul payment wait APPROVAL_ID [--org acme] [--timeout-seconds N] [--json]
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
`send` prepares the payment and opens its approval page. The page is the one
|
|
152
|
+
and only confirmation: there is no `[y/N]` and no `--confirm`. Nothing moves
|
|
153
|
+
until a person approves it there with their own key; the CLI never signs.
|
|
154
|
+
|
|
155
|
+
`<to>` is an email, a @handle or an 0x address (an address you type is your
|
|
156
|
+
own choice, and the page shows it again). `<amount>` is in `--asset`, a symbol
|
|
157
|
+
the payer holds (USDC by default). With `--org`, the payment spends from a
|
|
158
|
+
Budget you hold in that Organization: the one Budget for the asset, or the one
|
|
159
|
+
`--budget` names. `--input FILE|-` takes the SDK's payment JSON instead, with
|
|
160
|
+
documents; an Organization's adds its `permissionId`.
|
|
161
|
+
|
|
162
|
+
A person sees what they are approving (who pays and what is left, who receives
|
|
163
|
+
it, the amount, and that there is no fee: every operation is sponsored). The
|
|
164
|
+
CLI opens the page on a terminal, prints the link, and follows it: `✓ Signed`
|
|
165
|
+
when the person approves, `✓ Confirmed` when the payment settles, then the paid
|
|
166
|
+
amount, the transaction and the receipt command. A rejection on the page ends
|
|
167
|
+
`✗ Not sent` with exit 130; an approval that lapses sends nothing (exit 2).
|
|
168
|
+
Ctrl-C stops following; the link still works, and `payment wait` follows it.
|
|
169
|
+
|
|
170
|
+
With `--json`, `send` returns at once:
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"status": "awaiting_approval",
|
|
175
|
+
"approvalId": "approval_01JA…",
|
|
176
|
+
"approvalUrl": "https://app.staging.capxul.com/approve/approval_01JA…",
|
|
177
|
+
"paymentIds": ["payment_01JB…"],
|
|
178
|
+
"expiresAt": 1791359237000,
|
|
179
|
+
"next": { "argv": ["capxul", "payment", "wait", "approval_01JA…", "--json"] }
|
|
180
|
+
}
|
|
102
181
|
```
|
|
103
182
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
not change the overview's personal scope.
|
|
110
|
-
|
|
111
|
-
Each source read retains its own state. An unavailable balance or Inbox is
|
|
112
|
-
not an empty balance or Inbox. Indexed Activity fallback is marked incomplete.
|
|
113
|
-
JSON returns `state: "partial"` when a read fails or Activity is incomplete.
|
|
114
|
-
Document counts include known references from available request and Payment
|
|
115
|
-
reads. Activity detail can have additional documents. The overview does not
|
|
116
|
-
render or download PDFs and does not prepare or submit Payments. Showing an
|
|
117
|
-
existing scheduled or streaming Payment does not add recurring billing.
|
|
183
|
+
An agent gives the person the link and runs `next.argv`. `payment wait
|
|
184
|
+
APPROVAL_ID` follows the approval: once it is approved it sends it (unless the
|
|
185
|
+
page already did; only one send can claim it) and waits for the payment to
|
|
186
|
+
settle. Its result is the SDK's `{ approval, payments }`. An Organization
|
|
187
|
+
payment's wait carries `--org`.
|
|
118
188
|
|
|
119
189
|
## Personal Payments
|
|
120
190
|
|
|
121
191
|
```sh
|
|
122
|
-
capxul payment
|
|
123
|
-
capxul payment send --resume REQUEST_KEY --confirm --json
|
|
124
|
-
capxul payment retry --payment-id PAYMENT_ID --confirm --json
|
|
192
|
+
capxul payment retry PAYMENT_ID --json
|
|
125
193
|
capxul payment list --json
|
|
126
|
-
capxul payment get
|
|
127
|
-
capxul payment wait
|
|
194
|
+
capxul payment get PAYMENT_ID --json
|
|
195
|
+
capxul payment wait PAYMENT_ID --timeout-seconds 120 --json
|
|
128
196
|
```
|
|
129
197
|
|
|
130
198
|
These commands use the current authenticated session. Add `--email EMAIL` to
|
|
131
199
|
select a saved session. In a terminal, omit the required Payment ID to enter it.
|
|
132
|
-
`
|
|
133
|
-
|
|
134
|
-
status, amount, counterparty and available receipt.
|
|
200
|
+
`get` refuses when the Payment is absent or unavailable to the session. Human
|
|
201
|
+
output shows the full ID, status, amount, counterparty and available receipt.
|
|
135
202
|
|
|
136
203
|
`wait` observes the exact Payment until it reaches a terminal state or needs an
|
|
137
204
|
action. A failed Payment can be a completed observation. The timeout accepts
|
|
138
205
|
1–3600 seconds and includes session restoration. A timeout or unavailable read
|
|
139
206
|
prints exact get/wait commands. Waiting never resubmits a Payment.
|
|
140
207
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
The CLI saves the exact input in protected local state before preparation. It
|
|
148
|
-
prints the request key and resume command, then prints prepared Payment IDs
|
|
149
|
-
before signing. `--resume` uses that saved input and key; it refuses input or key
|
|
150
|
-
overrides. Keep the same CLI home and authenticated person for recovery.
|
|
151
|
-
A different input cannot replace the saved input for the same key.
|
|
152
|
-
|
|
153
|
-
Send returns `{ payment, requestKey }` with the observed Payment state. Retry
|
|
154
|
-
returns `{ payments }` and addresses the existing Payment command. It never
|
|
155
|
-
creates a replacement send. Uncertain results keep exact read/wait or same-key
|
|
156
|
-
resume guidance. A submitted result does not prove settlement.
|
|
157
|
-
|
|
158
|
-
For an external address, JSON input must include
|
|
159
|
-
`"externalAddressAcknowledged": true`. `--confirm` alone does not acknowledge
|
|
160
|
-
the address. Human input shows the exact address and an unverified-recipient
|
|
161
|
-
warning before one default-No confirmation. Known Capxul Parties resolved from
|
|
162
|
-
addresses remain supported. Resume keeps the saved reference and acknowledgement.
|
|
163
|
-
A saved key cannot gain new acknowledgement; use fresh input and a fresh key.
|
|
208
|
+
Retry prepares the retry of the exact Payment and hands over to the approval
|
|
209
|
+
page, exactly as `payment send` does: the page is the one and only
|
|
210
|
+
confirmation, and `--json` returns `awaiting_approval`, the link and
|
|
211
|
+
`next.argv` for `payment wait <approval id>`. It addresses the existing Payment
|
|
212
|
+
command and never creates a replacement send.
|
|
164
213
|
|
|
165
214
|
## Activity
|
|
166
215
|
|
|
@@ -189,25 +238,25 @@ In a terminal, omit required fields for guided flags and annotation input.
|
|
|
189
238
|
```sh
|
|
190
239
|
capxul request list
|
|
191
240
|
capxul request issue --input invoice.json --confirm
|
|
192
|
-
capxul request get
|
|
193
|
-
capxul request cancel
|
|
241
|
+
capxul request get REQUEST_ID
|
|
242
|
+
capxul request cancel REQUEST_ID --confirm
|
|
194
243
|
capxul inbox list
|
|
195
|
-
capxul inbox get
|
|
196
|
-
capxul inbox pay
|
|
197
|
-
capxul inbox decline
|
|
198
|
-
capxul
|
|
199
|
-
capxul
|
|
200
|
-
capxul
|
|
201
|
-
capxul
|
|
202
|
-
capxul
|
|
203
|
-
capxul
|
|
204
|
-
capxul
|
|
205
|
-
capxul
|
|
244
|
+
capxul inbox get REQUEST_ID
|
|
245
|
+
capxul inbox pay REQUEST_ID
|
|
246
|
+
capxul inbox decline REQUEST_ID --confirm
|
|
247
|
+
capxul request list --org ORGANIZATION_ID
|
|
248
|
+
capxul request issue --org ORGANIZATION_ID --input invoice.json --confirm
|
|
249
|
+
capxul request get --org ORGANIZATION_ID REQUEST_ID
|
|
250
|
+
capxul request cancel --org ORGANIZATION_ID REQUEST_ID --confirm
|
|
251
|
+
capxul inbox list --org ORGANIZATION_ID
|
|
252
|
+
capxul inbox get --org ORGANIZATION_ID REQUEST_ID
|
|
253
|
+
capxul inbox pay --org ORGANIZATION_ID REQUEST_ID --permission-id PERMISSION_ID
|
|
254
|
+
capxul inbox decline --org ORGANIZATION_ID REQUEST_ID --confirm
|
|
206
255
|
```
|
|
207
256
|
|
|
208
|
-
`request` reads the
|
|
209
|
-
|
|
210
|
-
|
|
257
|
+
`request` reads the issued Invoice and payment requests of whoever you act as:
|
|
258
|
+
you, or the Organization `--org`, `CAPXUL_ORG` or `use org` names. `inbox` reads
|
|
259
|
+
payment requests addressed to that actor. Add `--email EMAIL` to select a saved
|
|
211
260
|
session. No signer is required for these reads.
|
|
212
261
|
|
|
213
262
|
For human reads, start with `capxul request --help` or `capxul inbox --help`.
|
|
@@ -222,9 +271,9 @@ stderr, and the process exit code separately. A refusal is still a version 1
|
|
|
222
271
|
result on stdout. Inspect `outcome` and `error.code`; do not infer success from
|
|
223
272
|
valid JSON. Missing required input exits 2. A missing authenticated session exits 3. Noninteractive human refusals use stderr. These runs do not prompt.
|
|
224
273
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
274
|
+
Agents pass `--org` on every Organization command, so a saved choice never
|
|
275
|
+
decides whose money a command touches. `--org` takes a handle or an
|
|
276
|
+
Organization ID.
|
|
228
277
|
|
|
229
278
|
Local help, refusal, and cancellation checks do not prove authenticated
|
|
230
279
|
request reads, document output, issuance, or payment; those are separate
|
|
@@ -335,7 +384,8 @@ capxul document export --document-hash H --content-hash C --out original.bin
|
|
|
335
384
|
|
|
336
385
|
Each command uses the current authenticated session. Add `--email EMAIL` to
|
|
337
386
|
select a saved session. In a terminal, omit required fields to enter them.
|
|
338
|
-
`get` returns document metadata and
|
|
387
|
+
`get` returns document metadata and the `render` command for it; it writes no
|
|
388
|
+
file and does not print source bytes.
|
|
339
389
|
`verify` reports `ok: false` when verification fails. `render` saves a PDF and its
|
|
340
390
|
self-contained HTML source in the `documents` directory next to CLI settings.
|
|
341
391
|
Use `--output-dir` to change this directory. Human and JSON output contain
|
|
@@ -343,36 +393,29 @@ file metadata. Each render uses a new private directory and preserves earlier
|
|
|
343
393
|
files. `export` writes the original bytes to a new file.
|
|
344
394
|
It refuses an existing output file.
|
|
345
395
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
Pending or unavailable documents retain that state. A document failure
|
|
351
|
-
not change the Payment result or start another Payment.
|
|
396
|
+
Reads never write files. Payment `get`, `wait` and `list`, Activity detail and
|
|
397
|
+
Payroll `get` and `wait` name each document with the `document render` command
|
|
398
|
+
that saves it. Payment `send` and `retry`, Payroll `run` and Inbox `pay` still
|
|
399
|
+
save available documents as PDFs in the same directory and report them in their
|
|
400
|
+
result. Pending or unavailable documents retain that state. A document failure
|
|
401
|
+
does not change the Payment result or start another Payment.
|
|
352
402
|
|
|
353
403
|
## Contact commands
|
|
354
404
|
|
|
355
405
|
```sh
|
|
356
406
|
capxul contact list [--include-hidden]
|
|
357
|
-
capxul contact get
|
|
407
|
+
capxul contact get PARTY_ID
|
|
358
408
|
capxul contact add --input FILE|- [--confirm]
|
|
359
|
-
capxul contact label
|
|
360
|
-
capxul contact hide
|
|
361
|
-
capxul contact unhide
|
|
362
|
-
|
|
363
|
-
capxul org contact list --org ORGANIZATION_ID [--include-hidden]
|
|
364
|
-
capxul org contact get --org ORGANIZATION_ID --entry-id PARTY_ID
|
|
365
|
-
capxul org contact add --org ORGANIZATION_ID --input FILE|- [--confirm]
|
|
366
|
-
capxul org contact label --org ORGANIZATION_ID --entry-id PARTY_ID --label TEXT [--confirm]
|
|
367
|
-
capxul org contact hide --org ORGANIZATION_ID --entry-id PARTY_ID [--confirm]
|
|
368
|
-
capxul org contact unhide --org ORGANIZATION_ID --entry-id PARTY_ID [--confirm]
|
|
409
|
+
capxul contact label PARTY_ID --label TEXT [--confirm]
|
|
410
|
+
capxul contact hide PARTY_ID [--confirm]
|
|
411
|
+
capxul contact unhide PARTY_ID [--confirm]
|
|
412
|
+
capxul contact list --org acme
|
|
369
413
|
```
|
|
370
414
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
Organization read default. `list` omits hidden entries unless
|
|
415
|
+
Contacts belong to whoever you act as: your Account's address book, or the
|
|
416
|
+
Organization `--org`, `CAPXUL_ORG` or `use org` names. `list` omits hidden entries unless
|
|
374
417
|
`--include-hidden` is present. `get`, `label`, `hide`, and `unhide` address one
|
|
375
|
-
stable Party
|
|
418
|
+
stable Party by its ID.
|
|
376
419
|
|
|
377
420
|
`add --input` reads the existing `AddressBookAddInput` JSON shape. For example:
|
|
378
421
|
|
|
@@ -398,35 +441,42 @@ relationships, hidden state, and last activity time.
|
|
|
398
441
|
## Personal Account reads
|
|
399
442
|
|
|
400
443
|
```bash
|
|
401
|
-
capxul account
|
|
402
|
-
capxul
|
|
403
|
-
capxul
|
|
444
|
+
capxul account show --email person@example.com
|
|
445
|
+
capxul balance --json
|
|
446
|
+
capxul address --wizard
|
|
404
447
|
```
|
|
405
448
|
|
|
406
449
|
These commands reuse your verified current session unless you provide an email.
|
|
407
|
-
They do not start setup or open a signer.
|
|
408
|
-
readiness; a failed lifecycle exposes its stage and error code.
|
|
409
|
-
|
|
410
|
-
|
|
450
|
+
They do not start setup or open a signer. `account show` shows lifecycle and
|
|
451
|
+
transaction readiness; a failed lifecycle exposes its stage and error code.
|
|
452
|
+
`balance` and `address` act for whoever you act as: your Account, or the
|
|
453
|
+
Organization's treasury with `--org`. Balance shows exact asset quantities and
|
|
454
|
+
available fiat valuations. An unavailable valuation or failed read is not zero.
|
|
455
|
+
`address` uses the SDK's address and network.
|
|
456
|
+
|
|
457
|
+
`account retry --display-name NAME --country CC --handle HANDLE` is the first
|
|
458
|
+
setup: it creates the Profile, the personal Account and its wallet, as
|
|
459
|
+
`auth login` offers to on a terminal. Without Profile fields, `account retry`
|
|
460
|
+
resumes the setup of the existing Account.
|
|
411
461
|
|
|
412
462
|
## Organization commands
|
|
413
463
|
|
|
414
464
|
```sh
|
|
415
465
|
capxul org list --json
|
|
416
|
-
capxul org
|
|
417
|
-
capxul org
|
|
466
|
+
capxul org show --org acme --json
|
|
467
|
+
capxul org show --json
|
|
418
468
|
capxul org me --json
|
|
419
|
-
capxul org members --json
|
|
420
469
|
capxul org member list --json
|
|
421
|
-
capxul org member get
|
|
470
|
+
capxul org member get ACCOUNT_ID --json
|
|
422
471
|
capxul org wait --timeout-seconds 120 --json
|
|
423
472
|
capxul org create --name NAME --handle HANDLE --country CC [--bio TEXT] [--size TEXT] [--confirm]
|
|
424
473
|
capxul org retry --org ORGANIZATION_ID [--confirm]
|
|
425
474
|
```
|
|
426
475
|
|
|
427
476
|
These commands accept `--email`. Without it, they restore the protected current
|
|
428
|
-
session.
|
|
429
|
-
|
|
477
|
+
session. `org` commands act as the Organization `--org` names (a handle or an
|
|
478
|
+
ID), then `CAPXUL_ORG`, then the one `use org` saved. Two different `--org`
|
|
479
|
+
values are refused.
|
|
430
480
|
|
|
431
481
|
A read without --org uses the Organization `use org` saved, then this machine's
|
|
432
482
|
recovery ID, then the one unfinished setup returned by the backend. org list
|
|
@@ -440,10 +490,9 @@ setup section and explicit empty results. Members without an Account ID remain
|
|
|
440
490
|
visible. `org me` shows backend capabilities and exact per-payment Budget caps;
|
|
441
491
|
these caps are not available balances. `--json` keeps the structured SDK data.
|
|
442
492
|
|
|
443
|
-
Member lookup uses an exact AccountId. In a human terminal, omit
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
requires --account-id. Reads do not sign or change
|
|
493
|
+
Member lookup uses an exact AccountId. In a human terminal, omit the ID to
|
|
494
|
+
select an attached Account from the authorized member list. Members without an
|
|
495
|
+
Account ID cannot be selected. Scripted and JSON lookup requires the ID. Reads do not sign or change
|
|
447
496
|
setup state.
|
|
448
497
|
|
|
449
498
|
org wait opens one exact setup subscription. It continues when needsAttention
|
|
@@ -452,40 +501,16 @@ or attention without a next check. It does not request a check or poll. The
|
|
|
452
501
|
timeout accepts 1 to 3600 seconds and defaults to 120. A deadline returns
|
|
453
502
|
CLI_DEADLINE at exit 5; Ctrl-C returns CANCELLED at exit 130.
|
|
454
503
|
|
|
455
|
-
## Organization Payment send
|
|
456
|
-
|
|
457
|
-
```sh
|
|
458
|
-
capxul org payment send --org O --input payment.json --request-key K --confirm --json
|
|
459
|
-
capxul org payment send --org O --resume K --confirm --json
|
|
460
|
-
capxul org payment send
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
The Organization input adds its exact Budget ID as `permissionId`. It supports
|
|
464
|
-
the same recipient, amount, and document fields as Personal send. It rejects
|
|
465
|
-
`timing` and payload actor, Organization, key, and lineage overrides. Scripted
|
|
466
|
-
calls require an explicit Organization, request identity, and `--confirm`.
|
|
467
|
-
A human terminal collects missing input and previews the selected actor, exact
|
|
468
|
-
Organization, Budget, treasury asset position, recipient, and document summary.
|
|
469
|
-
A saved read default does not select this write.
|
|
470
|
-
|
|
471
|
-
One default-No confirmation precedes signing. The protected input binds actor,
|
|
472
|
-
Organization, and key. Resume uses that input and forbids source/key overrides.
|
|
473
|
-
Prepared IDs reach stderr before the next signature. Send reports submission;
|
|
474
|
-
exact scoped get/wait establishes later state. JSON preview includes safe
|
|
475
|
-
summary fields and omits document bytes. External recipients use the same
|
|
476
|
-
literal-true input field and human warning as Personal send. Resume preserves
|
|
477
|
-
the saved reference even when the current lookup resolves to a Party.
|
|
478
|
-
|
|
479
504
|
## Organization Payment reads
|
|
480
505
|
|
|
481
506
|
```sh
|
|
482
|
-
capxul
|
|
483
|
-
capxul
|
|
484
|
-
capxul
|
|
507
|
+
capxul payment list --org O [--json]
|
|
508
|
+
capxul payment get P --org O [--json]
|
|
509
|
+
capxul payment wait P --org O [--timeout-seconds N] [--json]
|
|
485
510
|
```
|
|
486
511
|
|
|
487
|
-
|
|
488
|
-
read
|
|
512
|
+
With `--org`, `CAPXUL_ORG` or `use org`, these commands read the Organization's
|
|
513
|
+
Payments; without one they read yours. The backend checks current Organization participation and returns
|
|
489
514
|
only that Organization's outgoing, incoming, and self Payments. Get refuses
|
|
490
515
|
a missing or mismatched Payment ID. Reads do not need a signer.
|
|
491
516
|
|
|
@@ -498,37 +523,25 @@ instructions with both Organization and Payment IDs.
|
|
|
498
523
|
## Organization Payment retry
|
|
499
524
|
|
|
500
525
|
```sh
|
|
501
|
-
capxul
|
|
502
|
-
capxul org payment retry
|
|
526
|
+
capxul payment retry P --org O --json
|
|
503
527
|
```
|
|
504
528
|
|
|
505
529
|
Retry addresses the original command and every Payment in that command. It
|
|
506
|
-
creates no replacement send or request key.
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
Before signing, the preview shows every original Payment, recipient, exact
|
|
512
|
-
asset and quantity, timing, and state. It also shows the original command and
|
|
513
|
-
stored Budget. A human terminal asks one default-no question, including when
|
|
514
|
-
`--confirm` is supplied. The signer starts after this step. A changed prepared cohort
|
|
515
|
-
or actor refuses before signature.
|
|
516
|
-
|
|
517
|
-
The result is `{ payments }` in the SDK's original order. Submitted Payments
|
|
518
|
-
can still be pending. A failure, timeout, or interruption retains the selected
|
|
519
|
-
Organization, Payment, and verified sibling IDs with same-scope get/wait
|
|
520
|
-
commands. Retry does not claim settlement from a submission hash.
|
|
530
|
+
creates no replacement send or request key. The Organization's retry is
|
|
531
|
+
prepared for your own key and handed over to the approval page; the page
|
|
532
|
+
shows the whole cohort. `--json` returns the link and `next.argv` for
|
|
533
|
+
`payment wait <approval id> --org O`, which follows every Payment to its end.
|
|
521
534
|
|
|
522
535
|
## Permissions
|
|
523
536
|
|
|
524
537
|
```sh
|
|
525
538
|
capxul org permission list [--org O] [--json]
|
|
526
|
-
capxul org permission get
|
|
539
|
+
capxul org permission get B [--org O] [--json]
|
|
527
540
|
capxul org permission create --org O --input budget.json --request-key K --confirm [--json]
|
|
528
|
-
capxul org permission change --org O --
|
|
541
|
+
capxul org permission change B --org O --input budget.json --request-key K --confirm [--json]
|
|
529
542
|
```
|
|
530
543
|
|
|
531
|
-
These commands use
|
|
544
|
+
These commands use `--org`, then `CAPXUL_ORG`, then the Organization `use org` saved.
|
|
532
545
|
A human terminal can select an accessible Organization when neither exists.
|
|
533
546
|
Each read checks current Organization access. `get` requires an exact Permission
|
|
534
547
|
ID and refuses a missing or mismatched result. Reads do not need a signer.
|
|
@@ -577,21 +590,23 @@ Invitation rights. Human mode guides missing scope and shows the full frozen
|
|
|
577
590
|
before/after snapshot before one default-no approval. Machine mode requires
|
|
578
591
|
scope, key, and confirmation. A changed snapshot refuses before staging or
|
|
579
592
|
signature. Unfinished Invitation configuration must complete or cancel first.
|
|
580
|
-
Submission remains pending application.
|
|
581
|
-
|
|
593
|
+
Submission remains pending application. After an uncertain result, follow the
|
|
594
|
+
exact command with `org permission command get` or `org permission command wait`
|
|
595
|
+
and the request key (not listed in the help); the command does not promise
|
|
596
|
+
unconditional replacement replay.
|
|
582
597
|
|
|
583
598
|
## Payroll runs, rosters, and reads
|
|
584
599
|
|
|
585
600
|
```sh
|
|
586
601
|
capxul org payroll groups list --org O [--json]
|
|
587
602
|
capxul org payroll groups save --org O --input group.json --confirm [--json]
|
|
588
|
-
capxul org payroll groups remove --org O --
|
|
603
|
+
capxul org payroll groups remove G --org O --confirm [--json]
|
|
589
604
|
capxul org payroll terms --org O [--json]
|
|
590
605
|
capxul org payroll list --org O [--json]
|
|
591
|
-
capxul org payroll run --org O --input run.json --request-key K
|
|
592
|
-
capxul org payroll run --org O --resume K
|
|
593
|
-
capxul org payroll get --org O
|
|
594
|
-
capxul org payroll wait --org O
|
|
606
|
+
capxul org payroll run --org O --input run.json --request-key K [--json]
|
|
607
|
+
capxul org payroll run --org O --resume K [--json]
|
|
608
|
+
capxul org payroll get --org O R [--json]
|
|
609
|
+
capxul org payroll wait --org O R --timeout-seconds 120 [--json]
|
|
595
610
|
```
|
|
596
611
|
|
|
597
612
|
Group input contains `name`, `tone`, and `members`. Each member supplies a
|
|
@@ -616,16 +631,18 @@ refuse before client work.
|
|
|
616
631
|
In a human terminal, `capxul org payroll run` guides the current Organization,
|
|
617
632
|
Budget, settlement asset, date, roster or known Parties, and actual payout
|
|
618
633
|
quantities. Roster amounts and terms are reference data. The complete preview
|
|
619
|
-
shows each recipient and Safe, quantity, raw units, and adjustment.
|
|
620
|
-
|
|
621
|
-
Machine runs require exact scope, input
|
|
634
|
+
shows each recipient and Safe, quantity, raw units, and adjustment. The run
|
|
635
|
+
is then prepared and handed over to the approval page, the one and only
|
|
636
|
+
confirmation. Machine runs require exact scope, input and key; `--json`
|
|
637
|
+
returns the approval link and `next.argv` for `payment wait <approval id> --org O`.
|
|
622
638
|
|
|
623
639
|
The command saves the exact input in protected storage under the verified actor,
|
|
624
640
|
Organization, and key before execution. `--resume K` restores that snapshot.
|
|
625
641
|
It requires the same explicit Organization and cannot combine fresh input or
|
|
626
642
|
another key. Payroll accepts email and Party references. Raw external addresses
|
|
627
643
|
are outside the current run contract.
|
|
628
|
-
|
|
644
|
+
`--resume K` prepares the same run again, so it reopens a pending approval
|
|
645
|
+
rather than paying twice.
|
|
629
646
|
|
|
630
647
|
Get returns the full authorized run detail, command, ordered items, and recorded
|
|
631
648
|
times. Wait observes the exact run without polling or submitting. It keeps
|
|
@@ -636,69 +653,50 @@ Recovery retains exact Organization, run, and any observed request key.
|
|
|
636
653
|
## Invitation commands
|
|
637
654
|
|
|
638
655
|
```sh
|
|
639
|
-
capxul
|
|
640
|
-
capxul
|
|
641
|
-
capxul
|
|
642
|
-
capxul org invite
|
|
643
|
-
capxul org invite
|
|
644
|
-
capxul org invite
|
|
645
|
-
capxul org invite
|
|
646
|
-
capxul org invite resend --invitation-id I --org O [--confirm]
|
|
647
|
-
capxul org invite retry --invitation-id I --org O [--confirm]
|
|
648
|
-
capxul org member invite (--to-email E | --account-id ID) [--budget-id B ...] [--permission-id M ...] [--new-budget-name N --asset A (--limit Q | --unlimited) (--recipient-account ID ... | --any-recipient) --actions pay[,commitments]] --org O [--request-key K] [--preview] [--confirm]
|
|
656
|
+
capxul invite list [--limit N] [--after C] [--phase PHASE ...]
|
|
657
|
+
capxul invite accept [ID] --offer-digest D [--confirm] [--timeout-seconds N]
|
|
658
|
+
capxul invite decline [ID] [--confirm]
|
|
659
|
+
capxul org invite list [--limit N] [--after C] [--phase PHASE ...]
|
|
660
|
+
capxul org invite cancel [ID] [--confirm]
|
|
661
|
+
capxul org invite resend [ID] [--confirm]
|
|
662
|
+
capxul org member invite [EMAIL | --account-id ID] [--budget-id B ...] [--permission-id M ...] [--new-budget-name N --asset A (--limit Q | --unlimited) (--recipient-account ID ... | --any-recipient) --actions pay[,commitments]] [--request-key K] [--preview] [--confirm]
|
|
649
663
|
```
|
|
650
664
|
|
|
651
|
-
`
|
|
652
|
-
|
|
653
|
-
`
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
`org invite
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
and
|
|
665
|
+
`invite` holds the invitations you received; `org invite` holds the invitations
|
|
666
|
+
the Organization you act as sent. `invite list` returns your own offers.
|
|
667
|
+
`org invite list` returns that Organization's invitations for a current Admin.
|
|
668
|
+
Both accept `--limit` (1--100), `--after`, and repeated `--phase` values, and
|
|
669
|
+
their result carries `invitations`, `nextCursor`, and `observedAt`: pass
|
|
670
|
+
`nextCursor` back as `--after`, and change no other filter between the two calls.
|
|
671
|
+
|
|
672
|
+
A received invitation names its own Organization: `invite accept` and
|
|
673
|
+
`invite decline` walk your own-offer pages, 100 rows per request, to find it.
|
|
674
|
+
`org invite cancel` and `org invite resend` act in the Organization `--org`,
|
|
675
|
+
`CAPXUL_ORG` or `use org` names.
|
|
676
|
+
|
|
677
|
+
Recovery guidance can also name `invite get`, `invite review`, `invite wait`,
|
|
678
|
+
`org invite get`, `org invite wait` and `org invite retry`. They work as before
|
|
679
|
+
but are not listed in the help: `get` and `review` read one offer, `wait`
|
|
680
|
+
follows it until it settles with one SDK subscription, and `retry` resumes the
|
|
681
|
+
backend's own recovery action. None of them writes a new offer.
|
|
665
682
|
|
|
666
683
|
Invitation lists label own-offer or Organization Admin scope and the verified
|
|
667
|
-
actor. They show an explicit empty page, next cursor, or end of results.
|
|
668
|
-
filters and cursor values stay in their selected scope.
|
|
684
|
+
actor. They show an explicit empty page, next cursor, or end of results.
|
|
669
685
|
|
|
670
686
|
Invitation human output shows the authoritative phase, delivery, expiry, and
|
|
671
687
|
offered policies. An offer does not prove active membership. Manual resend/retry commands come only
|
|
672
688
|
from the backend action projection, with exact scope/session and earliest time.
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
unavailable before authoring. The native authoring wizard asks for Organization,
|
|
677
|
-
recipient, grants and policy before session email. New-Budget labels identify
|
|
678
|
-
policy inputs; skip them for existing grants. Wizard answers use the same request
|
|
679
|
-
validation as flags. Every authoring write prints its request key
|
|
680
|
-
before submission. JSON result data stays unchanged.
|
|
689
|
+
Member-invite previews show exact per-payment caps and allowed recipients/actions;
|
|
690
|
+
expiry is unavailable before authoring. Every authoring write prints its request
|
|
691
|
+
key before submission. JSON result data stays unchanged.
|
|
681
692
|
|
|
682
693
|
Uncertain decline/cancel/resend/retry failures and transition deadlines print an
|
|
683
|
-
exact `
|
|
684
|
-
before another transition; a lost response does not authorize replay.
|
|
685
|
-
|
|
686
|
-
`org invite wait` uses one exact SDK subscription after resolving scope. It
|
|
687
|
-
finishes when the offer settles or lifecycle recovery asks a person to act.
|
|
688
|
-
Manual recovery options do not stop the wait. It never polls, retries, resends,
|
|
689
|
-
or accepts. The deadline covers resolution and observation; completion, failure
|
|
690
|
-
and interruption release the subscription, including a handle that arrives late.
|
|
691
|
-
|
|
692
|
-
Native invitation target prompts ask Organization and invitation IDs before
|
|
693
|
-
session email. Transition confirmation shows the verified actor and the current
|
|
694
|
-
resolved offer, including grants and expiry, before the default-No question.
|
|
694
|
+
exact `get` command for the offer with the resolved session. Read the current
|
|
695
|
+
offer before another transition; a lost response does not authorize replay.
|
|
695
696
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
The four transitions require `--org` in both modes, as `accept` does. They never
|
|
700
|
-
author a new offer. A noninteractive or JSON run requires `--confirm`. An
|
|
701
|
-
interactive run shows the resolved current offer and asks a default-no question.
|
|
697
|
+
The transitions never author a new offer. A noninteractive or JSON run requires
|
|
698
|
+
`--confirm`. An interactive run shows the resolved current offer and asks a
|
|
699
|
+
default-no question.
|
|
702
700
|
|
|
703
701
|
`org member invite` authorizes one exact offer. `--preview` writes nothing and
|
|
704
702
|
needs neither a request key nor confirmation. A noninteractive write requires
|
|
@@ -706,7 +704,7 @@ needs neither a request key nor confirmation. A noninteractive write requires
|
|
|
706
704
|
used before it submits, so a lost response is recoverable with the same
|
|
707
705
|
identity. At most one `--new-budget-name` is accepted per command.
|
|
708
706
|
|
|
709
|
-
`
|
|
707
|
+
`invite accept` is the exact grantee's consent commit. It takes the exact
|
|
710
708
|
digest the offer shows as `--offer-digest`: a noninteractive or JSON run must
|
|
711
709
|
supply it, and without it the command refuses with exit 2 before it creates a
|
|
712
710
|
client. An interactive run may omit it, and then reads the offer and fills the
|
|
@@ -716,9 +714,7 @@ spellings must match when supplied together. The command returns the
|
|
|
716
714
|
`InvitationView` directly in `data`. The grant is executed by the deployment's
|
|
717
715
|
technical executor, so the command needs no browser bridge and works in a
|
|
718
716
|
headless or CI session. A repeat with the stored digest returns the same
|
|
719
|
-
accepted result; a different digest refuses and cannot overwrite consent.
|
|
720
|
-
returned view is the authorization-time view of the consent commit
|
|
721
|
-
(`pending_grant`); read the settled `active` state with `get` or `wait`.
|
|
717
|
+
accepted result; a different digest refuses and cannot overwrite consent.
|
|
722
718
|
|
|
723
719
|
## Organization writes
|
|
724
720
|
|
|
@@ -777,9 +773,9 @@ ordinary local and online commands, help, version, and safely attributed argumen
|
|
|
777
773
|
refusals. Parser refusals produce a completion without a start. Early native
|
|
778
774
|
global errors with no resolved command route send nothing, because the CLI
|
|
779
775
|
cannot determine whether they belong to a silent collection control.
|
|
780
|
-
`telemetry
|
|
776
|
+
`config telemetry off` saves one preference for the OS user and sends no final
|
|
781
777
|
remote event. Already running CLI processes check the current preference before
|
|
782
|
-
each export. Requests already sent cannot be recalled. `telemetry status`
|
|
778
|
+
each export. Requests already sent cannot be recalled. `config telemetry status`
|
|
783
779
|
reports the stored preference, effective policy, configuration, and reason.
|
|
784
780
|
`--log-level` controls normal diagnostic output, not collection. An eligible
|
|
785
781
|
invocation still produces its remote completion unless collection is disabled.
|
|
@@ -802,13 +798,41 @@ Organization setup failures include a copyable command with the exact ID and
|
|
|
802
798
|
selected email. When state is uncertain, read status first. A supported retry
|
|
803
799
|
includes `--confirm`; terminal runs still ask for confirmation. If no ID is
|
|
804
800
|
known, the command lists your Organizations instead of guessing one.
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
801
|
+
`--json` writes one version 1 envelope to stdout. Success contains `data`: the
|
|
802
|
+
SDK's own value for the command, with no CLI wrapper. A list is the SDK page,
|
|
803
|
+
`{ items, nextCursor }`; pass `nextCursor` back as `--after` where the command
|
|
804
|
+
takes one. `--fields a,b` keeps only those fields of `data` (`amount.value`
|
|
805
|
+
reaches inside an object; a list keeps `nextCursor` and picks from each item).
|
|
806
|
+
`--fields` without `--json` refuses.
|
|
807
|
+
|
|
808
|
+
A failure contains `error`:
|
|
808
809
|
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
810
|
+
```json
|
|
811
|
+
{
|
|
812
|
+
"code": "CLI_USAGE",
|
|
813
|
+
"message": "Unknown command \"paymnt\".",
|
|
814
|
+
"hint": "Did you mean: capxul payment list",
|
|
815
|
+
"next": { "argv": ["capxul", "payment", "list"] }
|
|
816
|
+
}
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
`code` and `message` are always present. `hint` says what to do when a sentence
|
|
820
|
+
helps, `field` names the refused input, and `next.argv` is the command that
|
|
821
|
+
fixes it or reads where an interrupted command stands: `capxul auth login` when
|
|
822
|
+
no one is signed in, the corrected command for a typo, or the exact `get` for an
|
|
823
|
+
uncertain write. `next` preserves the same scope as the human command; it does
|
|
824
|
+
not grant authority or bypass current checks. `error.details.recovery` keeps
|
|
825
|
+
its `kind` (`read` or `retry`) next to the same `argv`.
|
|
826
|
+
|
|
827
|
+
A person sees one red line for what happened and one for what fixes it (on the
|
|
828
|
+
same line when both fit in 80 columns):
|
|
829
|
+
|
|
830
|
+
```text
|
|
831
|
+
✗ Unknown command "paymnt". Did you mean: capxul payment list
|
|
832
|
+
✗ Not signed in. Try: capxul auth login
|
|
833
|
+
```
|
|
834
|
+
|
|
835
|
+
A wallet failure
|
|
812
836
|
also includes its known `error.mode` and allowed `error.details`: wallet stage,
|
|
813
837
|
operation, provider, provider code, and HTTP status. An unknown browser failure
|
|
814
838
|
uses mode `unknown`. No provider message, token, signature, or native cause enters
|
|
@@ -871,6 +895,32 @@ all `telemetry` commands receive no notice. The optional check has one 500 ms
|
|
|
871
895
|
budget. Safe failed attempts are cached. Storage or network failures remain
|
|
872
896
|
silent and do not change the command result. This check sends no telemetry.
|
|
873
897
|
|
|
898
|
+
## Sandbox: `capxul dev`
|
|
899
|
+
|
|
900
|
+
`capxul dev` is for building and testing on Capxul, agents included, without real
|
|
901
|
+
money. It works on a test deployment: staging, or a local DevNet
|
|
902
|
+
(`capxul-devnet up --browser-origin http://localhost:3000` in this repository, then
|
|
903
|
+
`capxul use env devnet`). Production refuses both commands.
|
|
904
|
+
|
|
905
|
+
```sh
|
|
906
|
+
capxul dev fund 100 # test money into your own Safe (default 100 USDC)
|
|
907
|
+
capxul dev fund 50 --asset USDT
|
|
908
|
+
capxul dev key # a test publishable key for http://localhost:3000, into .env.local
|
|
909
|
+
capxul dev key --origin http://localhost:3100 --print
|
|
910
|
+
```
|
|
911
|
+
|
|
912
|
+
`dev fund` needs you signed in and funds only your own Safe. `dev key` needs no
|
|
913
|
+
sign-in; it sets `NEXT_PUBLIC_CAPXUL_PUBLISHABLE_KEY` and `CAPXUL_SITE_URL` in
|
|
914
|
+
`.env.local` and keeps every other line. On staging, sign-in works only from
|
|
915
|
+
`http://localhost:3000` or `http://localhost:3100`.
|
|
916
|
+
|
|
917
|
+
[`tests/dev-journeys.mjs`](tests/dev-journeys.mjs) runs the agent plugin's
|
|
918
|
+
journeys with the built CLI against the local DevNet: sign in, `dev fund`, the home
|
|
919
|
+
screen, a payment (refused with its fix while the wallet setup is unfinished, as
|
|
920
|
+
it is on a DevNet with no wallet provider), requests, offers, Inbox, Organizations,
|
|
921
|
+
the account, `schema`, a typo's fix and `dev key`. The `capxul dev journeys` job in
|
|
922
|
+
`.github/workflows/devnet-integration.yml` starts the DevNet and runs it.
|
|
923
|
+
|
|
874
924
|
## Development commands
|
|
875
925
|
|
|
876
926
|
```sh
|
|
@@ -892,11 +942,11 @@ This CLI establishes a first-party BetterAuth session. An older native
|
|
|
892
942
|
Logout clears the selected email's session and attempts to revoke any native
|
|
893
943
|
grant that was stored before the first-party flow replaced it.
|
|
894
944
|
|
|
895
|
-
`capxul auth login` and `capxul
|
|
945
|
+
`capxul auth login` and `capxul account retry` stay separate commands. On a
|
|
896
946
|
terminal, each command is a wizard. `auth login` asks for the email and a masked
|
|
897
947
|
OTP. It accepts the code as a paste. It retries an invalid code at most three
|
|
898
948
|
times for one request. After sign-in, an incomplete account gets one offer to
|
|
899
|
-
continue setup in the same command. `
|
|
949
|
+
continue setup in the same command. `account retry` authenticates first, then asks
|
|
900
950
|
for the Profile fields: display name, two-letter country code, and handle. A
|
|
901
951
|
known value is the prompt default, so Enter keeps it.
|
|
902
952
|
|
|
@@ -924,7 +974,7 @@ verification has no waiting sign-in, the error names `capxul auth login`.
|
|
|
924
974
|
Neither command prints the code itself.
|
|
925
975
|
|
|
926
976
|
If account setup or its final read fails recoverably, the CLI prints an exact
|
|
927
|
-
`
|
|
977
|
+
`account retry` continuation with your email and Profile fields. Run it with the
|
|
928
978
|
same protected CLI home to resume the saved session. Explicit access/input
|
|
929
979
|
refusals and non-retryable failures require their stated correction first.
|
|
930
980
|
|
|
@@ -943,13 +993,13 @@ Profile field; a missing field refuses with exit 2:
|
|
|
943
993
|
|
|
944
994
|
```sh
|
|
945
995
|
# Supply only the delivered OTP through stdin.
|
|
946
|
-
capxul
|
|
996
|
+
capxul account retry --email "$TEST_EMAIL" --otp-stdin \
|
|
947
997
|
--display-name "Test Person" --country GH --handle test_person --json
|
|
948
998
|
```
|
|
949
999
|
|
|
950
1000
|
`--otp-stdin` reads up to 64 bytes, ending at EOF. Pipe from a secret provider or
|
|
951
1001
|
use input redirection from a protected file. An invalid value refuses with exit 2.
|
|
952
|
-
For `
|
|
1002
|
+
For `account retry`, a missing `--otp-stdin` refuses with exit 2 before the command
|
|
953
1003
|
starts client work. Only `auth verify <code>` accepts a code as an argument: the
|
|
954
1004
|
code is single-use and expires in minutes. Codes are never persisted in the
|
|
955
1005
|
continuation or included in output.
|
|
@@ -957,11 +1007,11 @@ continuation or included in output.
|
|
|
957
1007
|
The local page binds to an OS-selected loopback port. A random launch capability
|
|
958
1008
|
is redeemed once and removed from the URL before Openfort starts. The page receives
|
|
959
1009
|
only the authenticated wallet token and encryption session in memory. Closing it
|
|
960
|
-
ends the current wallet attempt. Re-run `
|
|
1010
|
+
ends the current wallet attempt. Re-run `account retry` with the same CLI home to
|
|
961
1011
|
resume the same Profile and Account without another OTP while the backend session
|
|
962
1012
|
remains valid.
|
|
963
1013
|
|
|
964
|
-
`
|
|
1014
|
+
`account retry` returns only two readiness results. `setupState: "ready"` is a
|
|
965
1015
|
personal Account that the Account readiness owner reads as ready and deployed,
|
|
966
1016
|
and its data carries the public identifiers: the Profile, the public wallet
|
|
967
1017
|
address (`smartAccount.signerAddress`), the personal Smart Account address
|
|
@@ -994,7 +1044,7 @@ local sign-out remains in effect.
|
|
|
994
1044
|
|
|
995
1045
|
`auth profile` returns a backend-read Profile and account lifecycle without opening
|
|
996
1046
|
the browser. Successful email authentication can return `setupState: "setup-required"`.
|
|
997
|
-
`
|
|
1047
|
+
`account retry` returns `setupState: "ready"` only after Core reads a ready Account.
|
|
998
1048
|
After logout, profile reads refuse with `NOT_AUTHENTICATED` and exit 3. An invalid
|
|
999
1049
|
or expired OTP refuses with exit 2.
|
|
1000
1050
|
|
|
@@ -1007,15 +1057,15 @@ capxul account retry --email you@example.com --wizard
|
|
|
1007
1057
|
|
|
1008
1058
|
The terminal shows the verified session, Account ID and current lifecycle before
|
|
1009
1059
|
confirmation. A ready Account starts no wallet work. Missing Account or Profile
|
|
1010
|
-
state directs to `
|
|
1060
|
+
state directs to `account retry`. A deadline stops waiting; check `account status`
|
|
1011
1061
|
for the same session before retrying.
|
|
1012
1062
|
|
|
1013
1063
|
Read an Organization treasury or deposit target:
|
|
1014
1064
|
|
|
1015
1065
|
```sh
|
|
1016
|
-
capxul
|
|
1017
|
-
capxul
|
|
1018
|
-
capxul
|
|
1066
|
+
capxul balance --org org_example --email you@example.com
|
|
1067
|
+
capxul address --org org_example --email you@example.com
|
|
1068
|
+
capxul balance --wizard
|
|
1019
1069
|
```
|
|
1020
1070
|
|
|
1021
1071
|
These commands use the existing Organization read selection. Balances require
|
|
@@ -1027,11 +1077,11 @@ relationships and hidden state. JSON keeps the existing array, entry or null.
|
|
|
1027
1077
|
|
|
1028
1078
|
```sh
|
|
1029
1079
|
capxul contact list --include-hidden
|
|
1030
|
-
capxul contact get
|
|
1031
|
-
capxul
|
|
1080
|
+
capxul contact get party_example
|
|
1081
|
+
capxul contact get --org org_example --wizard
|
|
1032
1082
|
```
|
|
1033
1083
|
|
|
1034
|
-
In a terminal, omit
|
|
1084
|
+
In a terminal, omit the ID to select a contact, including hidden contacts.
|
|
1035
1085
|
In a script, provide the exact Party ID. Organization contacts always require
|
|
1036
1086
|
an explicit `--org`; they never use the personal book as a fallback.
|
|
1037
1087
|
|
|
@@ -1040,17 +1090,17 @@ Without an input file, the wizard asks for these values. On an uncertain respons
|
|
|
1040
1090
|
use the printed list command to check the same address book before adding again.
|
|
1041
1091
|
Adding an existing contact can unhide it or change its label.
|
|
1042
1092
|
|
|
1043
|
-
Change a contact label with `contact label
|
|
1093
|
+
Change a contact label with `contact label party_example --label
|
|
1044
1094
|
"New label" --confirm`. In a terminal, omit the Party ID to select from the
|
|
1045
1095
|
same book, including hidden contacts. Organization labels require `--org`.
|
|
1046
1096
|
After an uncertain response, use the exact get command printed by the CLI.
|
|
1047
1097
|
|
|
1048
|
-
`contact hide` can select a contact in a terminal when
|
|
1098
|
+
`contact hide` can select a contact in a terminal when the ID is omitted.
|
|
1049
1099
|
It confirms the hidden state, then prints the exact `contact unhide` command for
|
|
1050
1100
|
the same Party, session and scope. The contact's history remains available.
|
|
1051
1101
|
|
|
1052
1102
|
`contact unhide` uses the same scoped selector, including hidden contacts, when
|
|
1053
|
-
a terminal omits
|
|
1103
|
+
a terminal omits the ID. It confirms the change and shows the visible
|
|
1054
1104
|
contact. Scripts provide the exact Party ID and `--confirm`.
|
|
1055
1105
|
|
|
1056
1106
|
## Fixed offers
|
|
@@ -1061,10 +1111,10 @@ These commands do not sign payments or create checkout purchases.
|
|
|
1061
1111
|
```sh
|
|
1062
1112
|
capxul offer create --input offer.json --request-key consulting-001 --confirm
|
|
1063
1113
|
capxul offer list
|
|
1064
|
-
capxul offer get
|
|
1065
|
-
capxul offer revise
|
|
1066
|
-
capxul offer deactivate
|
|
1067
|
-
capxul
|
|
1114
|
+
capxul offer get OFFER_ID
|
|
1115
|
+
capxul offer revise OFFER_ID --expected-revision 1 --input offer.json --confirm
|
|
1116
|
+
capxul offer deactivate OFFER_ID --expected-revision 2 --confirm
|
|
1117
|
+
capxul offer list --org ORG_ID
|
|
1068
1118
|
```
|
|
1069
1119
|
|
|
1070
1120
|
Use `org offer` and `--org ORG_ID` for each Organization command. Use `--email`
|
|
@@ -1105,7 +1155,7 @@ reference. Separate purchasers receive separate checkout and settlement IDs.
|
|
|
1105
1155
|
Alice issues a basic request or an Invoice to Bob with `request issue`. For an Organization issuer,
|
|
1106
1156
|
Alice uses `org request issue --org ORGANIZATION_ID`. Issuance saves Alice's PDF
|
|
1107
1157
|
by default and returns the request ID, document references, and checkout URL.
|
|
1108
|
-
Bob runs `inbox list`, then `inbox get
|
|
1158
|
+
Bob runs `inbox list`, then `inbox get REQUEST_ID`. An Organization
|
|
1109
1159
|
payer uses the equivalent `org inbox` commands with its explicit Organization.
|
|
1110
1160
|
|
|
1111
1161
|
Bob's Inbox contains the request and document references. It does not receive a
|
|
@@ -1148,9 +1198,10 @@ External funding requires the correct network, balance, gas, and any exact token
|
|
|
1148
1198
|
approval. Payment goes through the Payments contract with the validated snapshot.
|
|
1149
1199
|
Inspect the resulting state and receipt before reporting payment complete.
|
|
1150
1200
|
|
|
1151
|
-
CLI `inbox pay`
|
|
1152
|
-
|
|
1153
|
-
|
|
1201
|
+
CLI `inbox pay` prepares the request's Payment and hands over to the approval
|
|
1202
|
+
page, as `payment send` does. It does not depend on the hosted checkout page.
|
|
1203
|
+
A rejection on the approval page is not permission to send another Payment.
|
|
1204
|
+
`--resume` reopens the approval of a request whose Payment is already prepared.
|
|
1154
1205
|
|
|
1155
1206
|
Checkout links do not create recurring billing, automatic debits, booking,
|
|
1156
1207
|
refunds, or QR codes.
|