@certen.io/cli 0.4.0 → 0.5.0
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 +33 -0
- package/dist/commands/billing.d.ts +2 -0
- package/dist/commands/billing.js +174 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/transaction.js +5 -0
- package/dist/commands/transaction.js.map +1 -1
- package/dist/index.js +13 -8
- package/dist/index.js.map +1 -1
- package/dist/output.js +44 -0
- package/dist/output.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# Changelog — @certen.io/cli
|
|
2
2
|
|
|
3
|
+
## 0.5.0 — money commands, and a refusal that tells you how to fix it
|
|
4
|
+
|
|
5
|
+
### Added — `certen balance` and `certen fund`
|
|
6
|
+
|
|
7
|
+
`balance` prints available, held, credit line, spendable, and **left to commit** — spendable minus
|
|
8
|
+
what pending intents have already claimed. Showing only the balance would tell you that you can
|
|
9
|
+
afford work that is already spoken for.
|
|
10
|
+
|
|
11
|
+
`fund <amount> --chain <chain>` prints where to send stablecoin and waits until it is credited.
|
|
12
|
+
It never touches a wallet or a key: signing and sending stay with you. `--no-wait` prints the
|
|
13
|
+
details and exits; `--poll-interval` and `--timeout` control the wait. An uncredited or expired
|
|
14
|
+
payment exits non-zero, because a funding script must not read one as paid.
|
|
15
|
+
|
|
16
|
+
Every option is validated before the network call — a typo in `--timeout` used to open a real
|
|
17
|
+
payment intent first.
|
|
18
|
+
|
|
19
|
+
### Changed — a 402 now prints the way out
|
|
20
|
+
|
|
21
|
+
A refusal for lack of funds shows the shortfall, the address, the exact amount, the reference, both
|
|
22
|
+
`certen fund …` and the portal link, and the quote id to retry with — then states plainly that
|
|
23
|
+
nothing was charged and no work was started. All on stderr; stdout is untouched.
|
|
24
|
+
|
|
25
|
+
In `--json`, the failure envelope gains `shortfall_usd`, `quote_id` and `resolve` on payment
|
|
26
|
+
failures only. They are absent on every other error rather than present as nulls. See
|
|
27
|
+
docs/CLI-CONTRACT.md.
|
|
28
|
+
|
|
29
|
+
### Fixed — the error reporter no longer flattens SDK errors
|
|
30
|
+
|
|
31
|
+
`handleError` copied a `CertenError` into an object literal before reporting it. The values
|
|
32
|
+
survived; the class identity did not — so a payment refusal could not be recognised and its payment
|
|
33
|
+
target was silently dropped. The fields it copied are all readable on the instance, `isRetryable`
|
|
34
|
+
getter included, so nothing was gained by the copy.
|
|
35
|
+
|
|
3
36
|
## 0.4.0 — `--json` is a machine contract
|
|
4
37
|
|
|
5
38
|
Adds a stable, tested output contract for scripts and AI agents. **Human output is unchanged**: if
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { CertenClient } from '@certen.io/sdk';
|
|
2
|
+
import { getApiKey, getApiUrl } from '../config.js';
|
|
3
|
+
import { printOutput, human, hint, isJsonMode } from '../output.js';
|
|
4
|
+
import { CliError, EXIT } from '../errors.js';
|
|
5
|
+
/**
|
|
6
|
+
* Money commands.
|
|
7
|
+
*
|
|
8
|
+
* These exist because the gateway enforces payment on every execution path while
|
|
9
|
+
* no client surface could add funds — so usage accrued against a credit line with
|
|
10
|
+
* no way to settle it. A developer refused for lack of funds needs the fix in the
|
|
11
|
+
* terminal they were already in, not a link to go and read.
|
|
12
|
+
*
|
|
13
|
+
* `fund` never touches a wallet or a private key. It asks the gateway where to
|
|
14
|
+
* send stablecoin, prints that, and waits. Signing and sending stay entirely with
|
|
15
|
+
* the customer's own wallet.
|
|
16
|
+
*/
|
|
17
|
+
async function getClient() {
|
|
18
|
+
return new CertenClient({ apiKey: await getApiKey(), baseUrl: getApiUrl() });
|
|
19
|
+
}
|
|
20
|
+
/** "12.340000" -> "$12.34". Trims the string; never parses money into a float. */
|
|
21
|
+
function usd(amount) {
|
|
22
|
+
const [whole, frac = ''] = String(amount).split('.');
|
|
23
|
+
const neg = whole.startsWith('-');
|
|
24
|
+
return `${neg ? '-$' : '$'}${neg ? whole.slice(1) : whole}.${(frac + '00').slice(0, 2)}`;
|
|
25
|
+
}
|
|
26
|
+
function minutesUntil(iso) {
|
|
27
|
+
return Math.max(0, Math.round((new Date(iso).getTime() - Date.now()) / 60_000));
|
|
28
|
+
}
|
|
29
|
+
export function registerBillingCommands(program) {
|
|
30
|
+
program
|
|
31
|
+
.command('balance')
|
|
32
|
+
.description('Show your balance and what pending work has already claimed')
|
|
33
|
+
.action(async () => {
|
|
34
|
+
const client = await getClient();
|
|
35
|
+
// Both, because either alone misleads: the balance looks healthy while
|
|
36
|
+
// every cent of it is committed to intents awaiting quorum.
|
|
37
|
+
const [balance, obligations] = await Promise.all([
|
|
38
|
+
client.billing.balance(),
|
|
39
|
+
client.billing.obligations(),
|
|
40
|
+
]);
|
|
41
|
+
printOutput({
|
|
42
|
+
currency: balance.currency,
|
|
43
|
+
available_usd: balance.available_usd,
|
|
44
|
+
held_usd: balance.held_usd,
|
|
45
|
+
credit_limit_usd: balance.credit_limit_usd,
|
|
46
|
+
spendable_usd: balance.spendable_usd,
|
|
47
|
+
remaining_usd: obligations.remaining_usd,
|
|
48
|
+
pending_intents: obligations.pending_intents,
|
|
49
|
+
uncovered_usd: obligations.uncovered_usd,
|
|
50
|
+
status: balance.status,
|
|
51
|
+
});
|
|
52
|
+
if (isJsonMode())
|
|
53
|
+
return;
|
|
54
|
+
human('');
|
|
55
|
+
human(` Available ${usd(balance.available_usd)}`);
|
|
56
|
+
human(` Held for in-flight ${usd(balance.held_usd)}`);
|
|
57
|
+
if (balance.credit_limit_usd !== '0.000000') {
|
|
58
|
+
human(` Credit line ${usd(balance.credit_limit_usd)}`);
|
|
59
|
+
}
|
|
60
|
+
human(` Spendable ${usd(balance.spendable_usd)}`);
|
|
61
|
+
human(` Left to commit ${usd(obligations.remaining_usd)}`);
|
|
62
|
+
human('');
|
|
63
|
+
if (obligations.pending_intents > 0) {
|
|
64
|
+
human(` ${obligations.pending_intents} pending intent(s) have claimed `
|
|
65
|
+
+ `${usd(obligations.uncovered_usd)} of that.`);
|
|
66
|
+
}
|
|
67
|
+
if (Number(obligations.remaining_usd) <= 0) {
|
|
68
|
+
human(' You cannot start new work until you add funds.');
|
|
69
|
+
hint('certen fund <amount> --chain <chain>');
|
|
70
|
+
}
|
|
71
|
+
if (balance.status !== 'active') {
|
|
72
|
+
human(` Account status: ${balance.status}.`);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
program
|
|
76
|
+
.command('fund')
|
|
77
|
+
.argument('<amount>', 'Amount in USD to send, e.g. 25 or 25.50')
|
|
78
|
+
.description('Get payment details for adding funds, and wait until they are credited')
|
|
79
|
+
.option('--chain <chain>', 'Chain to send stablecoin on (e.g. base)')
|
|
80
|
+
.option('--no-wait', 'Print the payment details and exit instead of waiting')
|
|
81
|
+
.option('--timeout <minutes>', 'How long to wait for the deposit', '60')
|
|
82
|
+
// Scripted callers legitimately want a different cadence — a CI job funding a
|
|
83
|
+
// test account should not sit on a 5-second loop, and a long unattended wait
|
|
84
|
+
// should poll gently. Exposed rather than hard-coded.
|
|
85
|
+
.option('--poll-interval <seconds>', 'How often to check for the deposit', '5')
|
|
86
|
+
.action(async (amount, opts) => {
|
|
87
|
+
if (!/^\d+(\.\d{1,6})?$/.test(amount) || Number(amount) <= 0) {
|
|
88
|
+
throw new CliError(`"${amount}" is not a valid amount. Use a number of dollars, e.g. 25 or 25.50`, 'INVALID_AMOUNT', EXIT.USAGE);
|
|
89
|
+
}
|
|
90
|
+
if (!opts.chain) {
|
|
91
|
+
throw new CliError('Which chain will you send on? Pass --chain (e.g. --chain base)', 'CHAIN_REQUIRED', EXIT.USAGE);
|
|
92
|
+
}
|
|
93
|
+
// Every option is validated BEFORE the network call. Checking after would
|
|
94
|
+
// mean a typo in --timeout had already opened a real payment intent that the
|
|
95
|
+
// customer then has to wait out or abandon.
|
|
96
|
+
const timeoutMin = Number(opts.timeout);
|
|
97
|
+
if (!Number.isFinite(timeoutMin) || timeoutMin <= 0) {
|
|
98
|
+
throw new CliError('--timeout must be a positive number of minutes', 'INVALID_TIMEOUT', EXIT.USAGE);
|
|
99
|
+
}
|
|
100
|
+
const pollSec = Number(opts.pollInterval);
|
|
101
|
+
if (!Number.isFinite(pollSec) || pollSec <= 0) {
|
|
102
|
+
throw new CliError('--poll-interval must be a positive number of seconds', 'INVALID_POLL_INTERVAL', EXIT.USAGE);
|
|
103
|
+
}
|
|
104
|
+
const client = await getClient();
|
|
105
|
+
const target = await client.billing.openPayment({ chain: opts.chain, amountUsd: amount });
|
|
106
|
+
const intent = target.deposit_intent;
|
|
107
|
+
if (!intent) {
|
|
108
|
+
// Defensive: an amount was supplied, so the gateway should have opened one.
|
|
109
|
+
throw new CliError('The gateway did not open a payment for that amount. Nothing was sent; try again.', 'PAYMENT_NOT_OPENED', EXIT.FAILED);
|
|
110
|
+
}
|
|
111
|
+
printOutput({
|
|
112
|
+
reference: intent.reference,
|
|
113
|
+
amount_usd: intent.amount_usd,
|
|
114
|
+
expires_at: intent.expires_at,
|
|
115
|
+
chain: target.chain,
|
|
116
|
+
chain_id: target.chain_id,
|
|
117
|
+
token_symbol: target.token_symbol,
|
|
118
|
+
token_address: target.token_address,
|
|
119
|
+
deposit_address: target.deposit_address,
|
|
120
|
+
min_confirmations: target.min_confirmations,
|
|
121
|
+
});
|
|
122
|
+
if (!isJsonMode()) {
|
|
123
|
+
human('');
|
|
124
|
+
human(` Send exactly ${intent.amount_usd} ${target.token_symbol} on ${target.chain} to:`);
|
|
125
|
+
human('');
|
|
126
|
+
human(` ${target.deposit_address}`);
|
|
127
|
+
human('');
|
|
128
|
+
human(` Reference ${intent.reference} · expires in ${minutesUntil(intent.expires_at)} min`);
|
|
129
|
+
human(' The exact amount is how we know the payment is yours, so send it to the cent.');
|
|
130
|
+
human(` Credited after ${target.min_confirmations} confirmation(s).`);
|
|
131
|
+
human('');
|
|
132
|
+
}
|
|
133
|
+
if (!opts.wait) {
|
|
134
|
+
hint('certen fund --no-wait was used; check later with certen balance');
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (!isJsonMode()) {
|
|
138
|
+
human(' Waiting for your deposit. Ctrl-C is safe — the payment stays open.');
|
|
139
|
+
}
|
|
140
|
+
let lastSeen = '';
|
|
141
|
+
const final = await client.billing.waitForPayment(intent.reference, {
|
|
142
|
+
intervalMs: pollSec * 1_000,
|
|
143
|
+
timeoutMs: timeoutMin * 60_000,
|
|
144
|
+
onPoll: (s) => {
|
|
145
|
+
// Only speak when something changed, so a long wait is not a wall of text.
|
|
146
|
+
if (!isJsonMode() && s.status !== lastSeen) {
|
|
147
|
+
lastSeen = s.status;
|
|
148
|
+
if (s.status !== 'open')
|
|
149
|
+
human(` Payment ${s.status}.`);
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
if (final.status === 'matched') {
|
|
154
|
+
if (!isJsonMode()) {
|
|
155
|
+
const balance = await client.billing.balance().catch(() => null);
|
|
156
|
+
human(` Credited ${usd(final.amount_usd)}.`);
|
|
157
|
+
if (balance)
|
|
158
|
+
human(` Available now ${usd(balance.available_usd)}.`);
|
|
159
|
+
human('');
|
|
160
|
+
hint('Paying from this wallet again? Register it once in the portal and every '
|
|
161
|
+
+ 'future deposit credits automatically: /portal');
|
|
162
|
+
}
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// Not credited. This is an ordinary outcome, not a crash — but the exit code
|
|
166
|
+
// has to say so, or a script will treat an expired payment as funded.
|
|
167
|
+
const why = final.status === 'open'
|
|
168
|
+
? `still waiting after ${timeoutMin} min`
|
|
169
|
+
: `payment ${final.status}`;
|
|
170
|
+
throw new CliError(`Deposit not credited (${why}). Nothing was charged. `
|
|
171
|
+
+ 'Check with: certen balance', 'DEPOSIT_NOT_CREDITED', EXIT.FAILED);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=billing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Option } from 'commander';
|
|
1
2
|
import { readFileSync } from 'node:fs';
|
|
2
3
|
import { CertenClient } from '@certen.io/sdk';
|
|
3
4
|
import { getApiKey, getApiUrl } from '../config.js';
|
|
@@ -42,6 +43,9 @@ export function registerTransactionCommands(program) {
|
|
|
42
43
|
.option('--contract-address <addr...>', 'Contract addresses this intent touches')
|
|
43
44
|
.option('--signer-key-page <url>', 'Which key page signs, e.g. acc://org.acme/book/2')
|
|
44
45
|
.option('--signer-public-key <hex>', 'Which seat on the page signs (64 hex)')
|
|
46
|
+
// Validated here so a typo is caught before a request goes out, rather than surfacing from the
|
|
47
|
+
// proof service later with no obvious connection to the flag that caused it.
|
|
48
|
+
.addOption(new Option('--proof-class <class>', 'When the proof runs: on_demand starts now (~60-110s); on_cadence batches it (cheaper, slower)').choices(['on_demand', 'on_cadence']))
|
|
45
49
|
.option('--idempotency-key <key>', 'Idempotency key (one is generated if omitted)')
|
|
46
50
|
.option('--sign-with <key>', 'Local key: sign the returned hash and submit it in one step')
|
|
47
51
|
.action(async (opts) => {
|
|
@@ -75,6 +79,7 @@ export function registerTransactionCommands(program) {
|
|
|
75
79
|
intent,
|
|
76
80
|
contractAddresses: opts.contractAddress,
|
|
77
81
|
signerKeyPage: opts.signerKeyPage,
|
|
82
|
+
proofClass: opts.proofClass,
|
|
78
83
|
signerPublicKey: opts.signerPublicKey ?? signer?.publicKey,
|
|
79
84
|
idempotencyKey: opts.idempotencyKey,
|
|
80
85
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/commands/transaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/commands/transaction.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,7 @@ import { registerPendingCommands } from './commands/pending.js';
|
|
|
25
25
|
import { registerGovernanceCommands } from './commands/governance.js';
|
|
26
26
|
import { registerPortfolioCommands } from './commands/portfolio.js';
|
|
27
27
|
import { registerAdminCommands } from './commands/admin.js';
|
|
28
|
+
import { registerBillingCommands } from './commands/billing.js';
|
|
28
29
|
const VERSION = readVersion();
|
|
29
30
|
export function buildProgram() {
|
|
30
31
|
const program = new Command();
|
|
@@ -44,6 +45,7 @@ export function buildProgram() {
|
|
|
44
45
|
registerPendingCommands(program);
|
|
45
46
|
registerGovernanceCommands(program);
|
|
46
47
|
registerPortfolioCommands(program);
|
|
48
|
+
registerBillingCommands(program);
|
|
47
49
|
registerAdminCommands(program);
|
|
48
50
|
// Every command, not just the root. `exitOverride()` is NOT inherited by subcommands, so without
|
|
49
51
|
// this walk a missing required flag on `identity create` called process.exit(1) inside commander:
|
|
@@ -77,14 +79,17 @@ function handleError(err) {
|
|
|
77
79
|
});
|
|
78
80
|
}
|
|
79
81
|
if (err instanceof CertenError) {
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
// Pass the ERROR, not a copy of its fields.
|
|
83
|
+
//
|
|
84
|
+
// This used to flatten it into an object literal. The literal carried the same
|
|
85
|
+
// values but destroyed the class identity, so a 402 reached the reporter as an
|
|
86
|
+
// anonymous shape and its payment target was silently dropped — the refusal
|
|
87
|
+
// printed a code and a message while the fix sat unread on the error.
|
|
88
|
+
//
|
|
89
|
+
// Nothing is lost by passing the instance: message, code, status and requestId
|
|
90
|
+
// are all readable on it, and `isRetryable` is a getter, so the SDK's own retry
|
|
91
|
+
// judgement still reaches both transports.
|
|
92
|
+
return emitFailure(err);
|
|
88
93
|
}
|
|
89
94
|
return emitFailure(err);
|
|
90
95
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAiB,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,oFAAoF;AACpF,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAiB,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC;AACD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/output.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CertenPaymentRequiredError } from '@certen.io/sdk';
|
|
1
2
|
import { getOutputFormat } from './config.js';
|
|
2
3
|
import { CliError, EXIT } from './errors.js';
|
|
3
4
|
/**
|
|
@@ -85,6 +86,10 @@ export function emitFailure(err) {
|
|
|
85
86
|
const code = e.code ?? 'UNKNOWN_ERROR';
|
|
86
87
|
const retryable = e instanceof CliError ? e.retryable : Boolean(e.isRetryable);
|
|
87
88
|
const exitCode = resolveExitCode(e);
|
|
89
|
+
// A refusal for lack of funds is the one failure that carries its own fix, so it
|
|
90
|
+
// is rendered rather than reduced to a code and a message. The developer is
|
|
91
|
+
// already in a terminal; the next command belongs there, not in documentation.
|
|
92
|
+
const payment = err instanceof CertenPaymentRequiredError ? err : null;
|
|
88
93
|
if (jsonMode) {
|
|
89
94
|
flushed = true;
|
|
90
95
|
process.stdout.write(`${JSON.stringify({
|
|
@@ -95,14 +100,53 @@ export function emitFailure(err) {
|
|
|
95
100
|
retryable,
|
|
96
101
|
...(e.status !== undefined ? { status: e.status } : {}),
|
|
97
102
|
...(e.requestId ? { requestId: e.requestId } : {}),
|
|
103
|
+
// Additive: a consumer that ignores unknown keys is unaffected, and one
|
|
104
|
+
// that wants to settle automatically no longer has to parse prose.
|
|
105
|
+
...(payment
|
|
106
|
+
? {
|
|
107
|
+
shortfall_usd: payment.shortfallUsd,
|
|
108
|
+
quote_id: payment.quoteId,
|
|
109
|
+
resolve: payment.resolution,
|
|
110
|
+
}
|
|
111
|
+
: {}),
|
|
98
112
|
},
|
|
99
113
|
})}\n`);
|
|
100
114
|
}
|
|
101
115
|
else {
|
|
102
116
|
console.error(code === 'UNKNOWN_ERROR' ? `Error: ${message}` : `Error [${code}]: ${message}`);
|
|
117
|
+
if (payment)
|
|
118
|
+
emitPaymentFix(payment);
|
|
103
119
|
}
|
|
104
120
|
return exitCode;
|
|
105
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Print the way out of a 402.
|
|
124
|
+
*
|
|
125
|
+
* All on stderr: it is guidance, not the result of the command, and a caller
|
|
126
|
+
* piping stdout must still get clean output (or, in JSON mode, exactly one
|
|
127
|
+
* envelope). The closing line matters as much as the address — a developer whose
|
|
128
|
+
* request was refused needs to know nothing was charged and nothing started.
|
|
129
|
+
*/
|
|
130
|
+
function emitPaymentFix(payment) {
|
|
131
|
+
console.error('');
|
|
132
|
+
console.error(` ${payment.summary}`);
|
|
133
|
+
const r = payment.resolution;
|
|
134
|
+
if (r) {
|
|
135
|
+
console.error('');
|
|
136
|
+
console.error(` Send exactly ${r.amount_usd} USD on ${r.chain} to:`);
|
|
137
|
+
console.error(` ${r.to_address}`);
|
|
138
|
+
console.error(` Reference ${r.payment_intent}`);
|
|
139
|
+
console.error('');
|
|
140
|
+
console.error(` Or run: ${r.cli_command}`);
|
|
141
|
+
console.error(` Portal: ${r.portal_url}`);
|
|
142
|
+
}
|
|
143
|
+
if (payment.quoteId) {
|
|
144
|
+
console.error('');
|
|
145
|
+
console.error(` Then retry with --quote-id ${payment.quoteId} to keep this price.`);
|
|
146
|
+
}
|
|
147
|
+
console.error('');
|
|
148
|
+
console.error(' Nothing was charged and no work was started.');
|
|
149
|
+
}
|
|
106
150
|
function resolveExitCode(e) {
|
|
107
151
|
if (typeof e.exitCode === 'number')
|
|
108
152
|
return e.exitCode;
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@certen.io/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Command line for the CERTEN Gateway API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"//dependencies": "@certen.io/sdk MUST be a version range, not file:../sdk. A published package carrying a file: dependency installs and then fails to resolve on the consumer's machine, because that path does not exist there. Local development uses `npm link` or a workspace instead.",
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@certen.io/sdk": "^0.
|
|
48
|
+
"@certen.io/sdk": "^0.5.0",
|
|
49
49
|
"commander": "^12.0.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|