@artblocks/abx-cli 0.1.0-alpha.3 → 0.1.0-alpha.30
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 +3663 -0
- package/assets/renderer-scaffold/README.md +2 -2
- package/assets/renderer-scaffold/src/MyRenderer.sol +2 -2
- package/assets/renderer-scaffold/src/interfaces/IAbxFieldRenderer.sol +1 -1
- package/assets/renderer-scaffold/src/interfaces/IAbxParams.sol +17 -0
- package/assets/renderer-scaffold/test/MyRenderer.t.sol +51 -2
- package/dist/commands/deploy.d.ts +242 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +4764 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/project.d.ts +257 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +1299 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/reads.d.ts +64 -0
- package/dist/commands/reads.d.ts.map +1 -0
- package/dist/commands/reads.js +701 -0
- package/dist/commands/reads.js.map +1 -0
- package/dist/commands/scaffold.d.ts +73 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +674 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/service.d.ts +41 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +618 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/storage.d.ts +51 -0
- package/dist/commands/storage.d.ts.map +1 -0
- package/dist/commands/storage.js +370 -0
- package/dist/commands/storage.js.map +1 -0
- package/dist/commands/submit-app.d.ts +58 -0
- package/dist/commands/submit-app.d.ts.map +1 -0
- package/dist/commands/submit-app.js +512 -0
- package/dist/commands/submit-app.js.map +1 -0
- package/dist/config.d.ts +90 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +285 -11
- package/dist/config.js.map +1 -1
- package/dist/conformance.d.ts +31 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +393 -0
- package/dist/conformance.js.map +1 -0
- package/dist/deps.d.ts +6 -39
- package/dist/deps.d.ts.map +1 -1
- package/dist/deps.js +4 -68
- package/dist/deps.js.map +1 -1
- package/dist/errors.d.ts +20 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +25 -0
- package/dist/errors.js.map +1 -0
- package/dist/flag-allowlists.d.ts +53 -0
- package/dist/flag-allowlists.d.ts.map +1 -0
- package/dist/flag-allowlists.js +157 -0
- package/dist/flag-allowlists.js.map +1 -0
- package/dist/flags.d.ts +45 -0
- package/dist/flags.d.ts.map +1 -1
- package/dist/flags.js +117 -1
- package/dist/flags.js.map +1 -1
- package/dist/jsonout.d.ts +37 -0
- package/dist/jsonout.d.ts.map +1 -0
- package/dist/jsonout.js +68 -0
- package/dist/jsonout.js.map +1 -0
- package/dist/kind.d.ts +61 -0
- package/dist/kind.d.ts.map +1 -0
- package/dist/kind.js +111 -0
- package/dist/kind.js.map +1 -0
- package/dist/main.js +699 -4736
- package/dist/main.js.map +1 -1
- package/dist/mintpage.d.ts +17 -2
- package/dist/mintpage.d.ts.map +1 -1
- package/dist/mintpage.js +241 -54
- package/dist/mintpage.js.map +1 -1
- package/dist/output.d.ts +179 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +756 -0
- package/dist/output.js.map +1 -0
- package/dist/ownerops.d.ts +302 -51
- package/dist/ownerops.d.ts.map +1 -1
- package/dist/ownerops.js +1780 -357
- package/dist/ownerops.js.map +1 -1
- package/dist/preview.d.ts +81 -0
- package/dist/preview.d.ts.map +1 -0
- package/dist/preview.js +535 -0
- package/dist/preview.js.map +1 -0
- package/dist/prompt.d.ts +17 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +19 -0
- package/dist/prompt.js.map +1 -0
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +16 -8
- package/dist/provision.js.map +1 -1
- package/dist/remote.d.ts +153 -52
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +406 -46
- package/dist/remote.js.map +1 -1
- package/dist/riskgate.d.ts +58 -0
- package/dist/riskgate.d.ts.map +1 -0
- package/dist/riskgate.js +212 -0
- package/dist/riskgate.js.map +1 -0
- package/dist/scaffold.d.ts +10 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +52 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/schema.d.ts +36 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +121 -26
- package/dist/schema.js.map +1 -1
- package/dist/script-chunks.d.ts +8 -0
- package/dist/script-chunks.d.ts.map +1 -0
- package/dist/script-chunks.js +35 -0
- package/dist/script-chunks.js.map +1 -0
- package/dist/served.d.ts +30 -0
- package/dist/served.d.ts.map +1 -0
- package/dist/served.js +112 -0
- package/dist/served.js.map +1 -0
- package/dist/signer.d.ts +13 -0
- package/dist/signer.d.ts.map +1 -1
- package/dist/signer.js +84 -15
- package/dist/signer.js.map +1 -1
- package/dist/update-check.d.ts +83 -4
- package/dist/update-check.d.ts.map +1 -1
- package/dist/update-check.js +140 -19
- package/dist/update-check.js.map +1 -1
- package/package.json +10 -6
- package/skill/SKILL.md +350 -150
- package/skill/reference/code-projects.md +183 -26
- package/skill/reference/creator-token.md +99 -0
- package/skill/reference/decisions.md +174 -0
- package/skill/reference/hosting.md +63 -19
- package/skill/reference/operating.md +116 -12
- package/skill/reference/setup.md +55 -6
- package/skill/reference/troubleshooting.md +42 -5
- package/dist/inspect.d.ts +0 -48
- package/dist/inspect.d.ts.map +0 -1
- package/dist/inspect.js +0 -184
- package/dist/inspect.js.map +0 -1
- package/dist/migrate.d.ts +0 -65
- package/dist/migrate.d.ts.map +0 -1
- package/dist/migrate.js +0 -180
- package/dist/migrate.js.map +0 -1
- package/dist/onchain-uri.d.ts +0 -97
- package/dist/onchain-uri.d.ts.map +0 -1
- package/dist/onchain-uri.js +0 -243
- package/dist/onchain-uri.js.map +0 -1
- package/dist/upload.d.ts +0 -28
- package/dist/upload.d.ts.map +0 -1
- package/dist/upload.js +0 -41
- package/dist/upload.js.map +0 -1
package/dist/provision.js
CHANGED
|
@@ -150,8 +150,10 @@ primary_region = "iad"
|
|
|
150
150
|
`fly volumes create abx_data --size 1 --region iad # BEFORE first deploy — the SQLite projection lives here; skip it and a redeploy/restart loses the index (and any published render locators)`,
|
|
151
151
|
loadEnv,
|
|
152
152
|
`fly secrets set ABX_RPC_URLS="$ABX_RPC_URLS" # read-only RPC for this chain; NO signing key on the host`,
|
|
153
|
-
// The admin token authorizes remote `abx add`/index (NOT signing).
|
|
154
|
-
|
|
153
|
+
// The admin token authorizes remote `abx add`/index (NOT signing). LHS is the resolver's OWN
|
|
154
|
+
// var name (server-side, unchanged); RHS pulls the value from your local ABX_REMOTE_SELF_TOKEN
|
|
155
|
+
// (the named-remote grammar's "self" entry — `abx deploy-resolver` generated + saved it).
|
|
156
|
+
`fly secrets set ABX_RESOLVER_ADMIN_TOKEN="$ABX_REMOTE_SELF_TOKEN" # index-control only, never signing`,
|
|
155
157
|
`fly deploy`,
|
|
156
158
|
o.domain ? `fly certs add ${o.domain}` : `# (add a custom domain: fly certs add meta.yourproject.xyz)`,
|
|
157
159
|
],
|
|
@@ -188,7 +190,7 @@ services:
|
|
|
188
190
|
- key: ABX_RPC_URLS
|
|
189
191
|
sync: false # set in the dashboard (secret); read-only RPC for this chain, NO signing key
|
|
190
192
|
- key: ABX_RESOLVER_ADMIN_TOKEN
|
|
191
|
-
sync: false # set in the dashboard; authorizes remote \`abx add\`/index (NOT signing). Match your .env.
|
|
193
|
+
sync: false # set in the dashboard; authorizes remote \`abx add\`/index (NOT signing). Match ABX_REMOTE_SELF_TOKEN in your local .env.
|
|
192
194
|
`;
|
|
193
195
|
return {
|
|
194
196
|
baseUrl: baseUrlFor(o),
|
|
@@ -200,7 +202,7 @@ services:
|
|
|
200
202
|
steps: [
|
|
201
203
|
`commit render.yaml + the emitted Dockerfile, then in the Render dashboard: New → Blueprint → pick this repo`,
|
|
202
204
|
`set ABX_RPC_URLS in the service's Environment (read-only RPC for this chain; NO signing key)`,
|
|
203
|
-
`set ABX_RESOLVER_ADMIN_TOKEN to the value in your local .env (lets you remote-register contracts)`,
|
|
205
|
+
`set ABX_RESOLVER_ADMIN_TOKEN to the value of ABX_REMOTE_SELF_TOKEN in your local .env (lets you remote-register contracts)`,
|
|
204
206
|
o.domain ? `Settings → Custom Domains → add ${o.domain}, then add the DNS record below` : `# add a custom domain in Settings → Custom Domains`,
|
|
205
207
|
],
|
|
206
208
|
dns: o.domain ? `${o.domain} CNAME ${o.app}.onrender.com` : undefined,
|
|
@@ -238,7 +240,7 @@ set -euo pipefail
|
|
|
238
240
|
DOMAIN="${domain}"
|
|
239
241
|
RPC_URL="\${ABX_RPC_URLS:?set ABX_RPC_URLS to your read-only RPC endpoint(s) for this chain}"
|
|
240
242
|
# Authorizes remote \`abx add\`/index (NOT on-chain signing). Must match your workstation's .env.
|
|
241
|
-
ADMIN_TOKEN="\${ABX_RESOLVER_ADMIN_TOKEN:?set ABX_RESOLVER_ADMIN_TOKEN (the value abx deploy-resolver saved to your .env)}"
|
|
243
|
+
ADMIN_TOKEN="\${ABX_RESOLVER_ADMIN_TOKEN:?set ABX_RESOLVER_ADMIN_TOKEN (the value of ABX_REMOTE_SELF_TOKEN that abx deploy-resolver saved to your .env)}"
|
|
242
244
|
|
|
243
245
|
# 1. Docker
|
|
244
246
|
curl -fsSL https://get.docker.com | sh
|
|
@@ -274,7 +276,7 @@ echo "Resolver up at https://\${DOMAIN} (point the domain's A record at this dr
|
|
|
274
276
|
steps: [
|
|
275
277
|
`create a droplet, point ${domain}'s A record at its IP`,
|
|
276
278
|
`copy THIS artifact dir (deploy/vps — it is self-contained) to the droplet`,
|
|
277
|
-
`ABX_RPC_URLS=<your-rpc-url> ABX_RESOLVER_ADMIN_TOKEN=<from
|
|
279
|
+
`ABX_RPC_URLS=<your-rpc-url> ABX_RESOLVER_ADMIN_TOKEN=<ABX_REMOTE_SELF_TOKEN from your .env> bash setup.sh # read-only RPC; NO signing key`,
|
|
278
280
|
],
|
|
279
281
|
dns: `${domain} A <droplet-ip>`,
|
|
280
282
|
hardening: 'Caddy auto-TLS; compose runs only `abx serve` (read-only); no signing key; app port loopback-only.',
|
|
@@ -348,11 +350,17 @@ primary_region = "iad"
|
|
|
348
350
|
`fly launch --no-deploy --copy-config --name ${o.app} # uses Dockerfile.effects + fly.toml in THIS dir`,
|
|
349
351
|
loadEnv,
|
|
350
352
|
`fly secrets set ABX_RPC_URLS="$ABX_RPC_URLS" # augment hooks / data-backed params need reads`,
|
|
351
|
-
|
|
353
|
+
// LHS is the resolver's OWN var name (server-side); RHS is your local ABX_REMOTE_SELF_TOKEN.
|
|
354
|
+
`fly secrets set ABX_RESOLVER_ADMIN_TOKEN="$ABX_REMOTE_SELF_TOKEN" # the SAME token as the resolver — publishing is admin-gated`,
|
|
352
355
|
`fly secrets set ABX_EFFECTS_TOKEN="$ABX_EFFECTS_TOKEN" # gates this PUBLIC runner's /run + /notify (an open force-render endpoint burns Chromium/storage)`,
|
|
353
356
|
`# set your storage-home secrets so renders land where the resolver can read them, e.g.:`,
|
|
354
357
|
`# fly secrets set PINATA_JWT="$PINATA_JWT" (ipfs)`,
|
|
355
|
-
|
|
358
|
+
// ARWEAVE_JWK (the JWK inline), NOT ABX_ARWEAVE_KEY — no such var is read anywhere, so the
|
|
359
|
+
// old line was a silent no-op for anyone who pasted it: the runner would come up with no
|
|
360
|
+
// Arweave identity and fail at its first upload, pointing at a variable that was "set".
|
|
361
|
+
// The hosted runner cannot use the CLI's managed key file (that lives on the operator's
|
|
362
|
+
// machine), so the inline form is the one that applies here.
|
|
363
|
+
`# fly secrets set ARWEAVE_JWK="$(cat .abx-self-host/arweave-key.json)" (arweave — the JWK itself; ABX_ARWEAVE_KEY_FILE is a local path and won't help a remote host)`,
|
|
356
364
|
`# fly secrets set ABX_S3_ACCESS_KEY_ID="$ABX_S3_ACCESS_KEY_ID" ABX_S3_SECRET_ACCESS_KEY="$ABX_S3_SECRET_ACCESS_KEY" (s3/cloud)`,
|
|
357
365
|
`fly deploy`,
|
|
358
366
|
`# WIRE THE WATCHER — on the RESOLVER app, point its chain watcher at this runner (this is what`,
|
package/dist/provision.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAiCH,MAAM,IAAI,GAAG,IAAI,CAAC;AAElB;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAC,CAAkB,EAAU,EAAE;IAChD,IAAI,CAAC,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3C,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC;IAC5D,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC,CAAC,GAAG,eAAe,CAAC;IACpE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,2CAA2C,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF,yFAAyF;AACzF,SAAS,aAAa,CAAC,CAAkB;IACvC,OAAO;;;;;;;;kCAQyB,IAAI,cAAc,CAAC,CAAC,KAAK,IAAI,cAAc;;SAEpE,IAAI;;CAEZ,CAAC;AACF,CAAC;AAED;sGACsG;AACtG,SAAS,gBAAgB,CAAC,CAAkB;IAC1C,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrG,OAAO;;;;+CAIsC,CAAC,CAAC,WAAW,IAAI,SAAS;;;;;EAKvE,aAAa;;;;;kCAKmB,IAAI,cAAc,CAAC,CAAC,KAAK,IAAI,cAAc;;SAEpE,IAAI;;CAEZ,CAAC;AACF,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,CAAkB,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9G,MAAM,YAAY,GAAG;;;;;;;;CAQpB,CAAC;AAEF,yGAAyG;AACzG,yGAAyG;AACzG,MAAM,OAAO,GAAG,+FAA+F,CAAC;AAEhH,sGAAsG;AACtG,SAAS,GAAG,CAAC,CAAkB;IAC7B,MAAM,IAAI,GAAG;SACN,CAAC,CAAC,GAAG;;;;;;;iBAOG,CAAC,CAAC,KAAK,IAAI,cAAc;gBAC1B,IAAI;;;;2BAIO,UAAU,CAAC,CAAC,CAAC;;;oBAGpB,IAAI;;;;;;;;;;;;;;;CAevB,CAAC;IACA,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QACtB,KAAK,EAAE;YACL,EAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAC;YAC/C,EAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAC;YAC9C,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAC;SAClC;QACD,KAAK,EAAE;YACL,yHAAyH;YACzH,+CAA+C,CAAC,CAAC,GAAG,iDAAiD;YACrG,kMAAkM;YAClM,OAAO;YACP,2GAA2G;YAC3G,
|
|
1
|
+
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
|
package/dist/remote.d.ts
CHANGED
|
@@ -1,58 +1,159 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* this
|
|
5
|
-
* contract you deploy here is registered with the *local* store; the resolver baked
|
|
6
|
-
* into your on-chain tokenURI is a *different* store and must be told separately, or
|
|
7
|
-
* it answers "unknown project". These helpers do the telling.
|
|
2
|
+
* Remote-resolver resolution — which service `--remote` means, and whose credential drives it.
|
|
3
|
+
* The HTTP client itself lives in the SDK (`AbxServiceClient`, speaking the /v1 control plane from
|
|
4
|
+
* specs/self-host-toolkit/remote-services.md); this module owns the CLI conventions around it:
|
|
8
5
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
|
|
6
|
+
* --remote <name> a NAMED remote — `ABX_REMOTE_<NAME>_URL` + `ABX_REMOTE_<NAME>_TOKEN` in .env
|
|
7
|
+
* (same env-name normalization as ABX_RPC_URLS_<CHAIN>). "self" is just a name
|
|
8
|
+
* under this SAME convention — the node YOU run reads ABX_REMOTE_SELF_URL/_TOKEN
|
|
9
|
+
* with zero special-casing below. A managed provider's per-account API key lives
|
|
10
|
+
* under its own name — and deliberately NEVER falls back to ABX_REMOTE_SELF_TOKEN,
|
|
11
|
+
* so your node-admin secret can't silently go to a third party.
|
|
12
|
+
* --remote <url> an ad-hoc URL — token from --remote-token or ABX_REMOTE_SELF_TOKEN (the local
|
|
13
|
+
* client credential for a node you run; `abx deploy-resolver` generates it).
|
|
14
|
+
* --remote bare: the self-host default — ABX_PUBLIC_BASE_URL (the URL baked on-chain,
|
|
15
|
+
* else ABX_RESOLVER_URL) + ABX_REMOTE_SELF_TOKEN.
|
|
16
|
+
*
|
|
17
|
+
* Every token here authorizes indexing/metadata control only — never on-chain signing — so the
|
|
18
|
+
* "no signing key on the host" rule is intact. (`--remote-token`, not `--token`: `--token` already
|
|
19
|
+
* means a token ID across the owner ops.)
|
|
20
|
+
*
|
|
21
|
+
* The RESOLVER's own env var — what gates ITS control plane, server-side (packages/token-api/src/
|
|
22
|
+
* control-plane.ts) — is unchanged: still `ABX_RESOLVER_ADMIN_TOKEN`. Only the CLIENT-side lookup
|
|
23
|
+
* for a self-run node moved to the named-remote grammar above; `abx deploy-resolver` prints the exact
|
|
24
|
+
* command that carries the value across the name boundary (fly secrets set ABX_RESOLVER_ADMIN_TOKEN
|
|
25
|
+
* from your local ABX_REMOTE_SELF_TOKEN).
|
|
26
|
+
*/
|
|
27
|
+
import { AbxServiceClient, type Address, type IndexError, type IndexErrorClass, type IndexStatus, type ProvenanceResult, type RegisterProjectResult, type RemoteProjectStatus } from '@artblocks/abx-sdk';
|
|
28
|
+
import { type Flags } from './flags.js';
|
|
29
|
+
export type RemoteSource = 'url' | 'named' | 'default';
|
|
30
|
+
export interface RemoteTarget {
|
|
31
|
+
/** Base URL, trailing slashes stripped. */
|
|
32
|
+
url: string;
|
|
33
|
+
token?: string;
|
|
34
|
+
/** The normalized remote name (named form only). */
|
|
35
|
+
name?: string;
|
|
36
|
+
source: RemoteSource;
|
|
37
|
+
/** The env var that should hold this target's token — every error/skip message names it. */
|
|
38
|
+
tokenVar: string;
|
|
39
|
+
/** WHERE the token in hand actually came from. A 401 that blames the env var when the caller
|
|
40
|
+
* passed `--remote-token` makes the override look ignored — which is exactly the moment someone
|
|
41
|
+
* is testing a replacement key. */
|
|
42
|
+
tokenFrom?: 'flag' | 'env';
|
|
39
43
|
}
|
|
40
|
-
|
|
44
|
+
/** How to refer to the credential this target is using, in an error the creator has to act on. */
|
|
45
|
+
export declare function tokenSourceLabel(t: RemoteTarget): string;
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the `--remote` flag value (undefined = local op → null). Pure: pass `env` in tests.
|
|
48
|
+
* `tokenFlag` is `--remote-token` and wins over any env token for this invocation.
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveRemote(spec: string | undefined, tokenFlag?: string, env?: NodeJS.ProcessEnv): RemoteTarget | null;
|
|
51
|
+
/**
|
|
52
|
+
* The OLD client-side var (`ABX_RESOLVER_ADMIN_TOKEN`) sitting unused in `.env` because the
|
|
53
|
+
* self-host default's credential moved to the named-remote grammar (`ABX_REMOTE_SELF_TOKEN`) — a
|
|
54
|
+
* silent fallback would mean an operator's `.env` never gets renamed, so this is the ONE place both
|
|
55
|
+
* {@link requireRemoteToken} (the hard-stop for a real command) and `abx doctor` (the same fault,
|
|
56
|
+
* surfaced before a command needs it) decide whether to flag it — sharing the check means they can
|
|
57
|
+
* never drift on the condition. `null` when there's nothing to flag (old var absent, or the new one
|
|
58
|
+
* is already set and simply wins).
|
|
59
|
+
*/
|
|
60
|
+
export declare function selfTokenMigrationWarning(env?: NodeJS.ProcessEnv): string | null;
|
|
61
|
+
/** The token, when the remote is the command's OBJECT (add/index/forget/render/migrate-dest) —
|
|
62
|
+
* a missing credential is a hard stop that names the exact var to set. */
|
|
63
|
+
export declare function requireRemoteToken(t: RemoteTarget, env?: NodeJS.ProcessEnv): string;
|
|
64
|
+
/** Every named remote configured in the env (`ABX_REMOTE_<NAME>_URL`). The normalized name is
|
|
65
|
+
* canonical — the env convention is lossy, so enumeration reads the env, never inverts it. */
|
|
66
|
+
export declare function listConfiguredRemotes(env?: NodeJS.ProcessEnv): Array<{
|
|
67
|
+
name: string;
|
|
68
|
+
url: string;
|
|
69
|
+
hasToken: boolean;
|
|
70
|
+
}>;
|
|
71
|
+
/**
|
|
72
|
+
* `ABX_REMOTE_*` vars that follow no recognized suffix — i.e. a typo. The convention has exactly two
|
|
73
|
+
* suffixes (`_URL`, `_TOKEN`), and anything else (`_KEY`, `_APIKEY`, `_SECRET`) is silently ignored:
|
|
74
|
+
* the CLI reports "no token" while the value sits right there in `.env`. Cheap to detect, so detect
|
|
75
|
+
* it rather than leaving the creator to compare strings by eye.
|
|
76
|
+
*/
|
|
77
|
+
export declare function misnamedRemoteVars(env?: NodeJS.ProcessEnv): Array<{
|
|
78
|
+
key: string;
|
|
79
|
+
suggestion: string;
|
|
80
|
+
}>;
|
|
81
|
+
/** The SDK service client bound to this target (call {@link requireRemoteToken} first when the
|
|
82
|
+
* operation needs auth). */
|
|
83
|
+
export declare function serviceClient(t: RemoteTarget): AbxServiceClient;
|
|
84
|
+
/**
|
|
85
|
+
* Is this named remote's stored credential actually accepted? One cheap authed read, so `doctor` can
|
|
86
|
+
* report capability instead of mere presence.
|
|
87
|
+
*
|
|
88
|
+
* Doctor is the command a creator runs FIRST, and it used to print a clean `remotes: meridian` for a
|
|
89
|
+
* key the service rejects — the 401 only surfaced later, from `abx remote <name>`, after they had
|
|
90
|
+
* already trusted the line. Same class as an RPC that answers `[]` because it pruned its logs: an
|
|
91
|
+
* empty success is not evidence of capability.
|
|
92
|
+
*
|
|
93
|
+
* Never throws and never blocks doctor for long: a short per-attempt timeout, and anything that is
|
|
94
|
+
* not a definitive rejection is reported as a soft note rather than a ✗, because a slow or briefly
|
|
95
|
+
* unreachable provider is not a misconfiguration the creator can act on.
|
|
96
|
+
*/
|
|
97
|
+
export declare function probeRemoteCredential(name: string, timeoutMs?: number): Promise<{
|
|
41
98
|
ok: boolean;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
99
|
+
fatal: boolean;
|
|
100
|
+
detail: string;
|
|
101
|
+
}>;
|
|
102
|
+
/** The env var a named remote's token is read from — the one to name when it is rejected. */
|
|
103
|
+
export declare function tokenVarFor(name: string): string;
|
|
104
|
+
/**
|
|
105
|
+
* Map a control-plane failure to an actionable CLI error. Keys off `AbxServiceError.code`/status,
|
|
106
|
+
* never off message prose (the machine-code half of the interface spec):
|
|
107
|
+
* 401 — the credential itself was rejected → name the var that supplied it.
|
|
108
|
+
* 403 — credential fine, not authorized for this resource → provider scoping, don't retry.
|
|
109
|
+
* `disabled` — the node has no control-plane token configured at all.
|
|
110
|
+
* bare 404 on /v1 — no control plane at this URL (pre-/v1 node, or not an ABX service).
|
|
111
|
+
*/
|
|
112
|
+
export declare function describeRemoteError(err: unknown, t: RemoteTarget, label: string): Error;
|
|
113
|
+
export declare function remoteFlag(flags: Flags): RemoteTarget | null;
|
|
114
|
+
/**
|
|
115
|
+
* The factory-verification tri-state, said plainly. `null` means the check never ran (no factory
|
|
116
|
+
* configured, or the configured one has no code on this chain — common on a local/dev chain), which
|
|
117
|
+
* is NOT the same as the chain telling us this contract isn't a clone of it.
|
|
118
|
+
*/
|
|
119
|
+
export declare function canonicalLabel(isCanonical: boolean | null | undefined, provenance?: ProvenanceResult): string;
|
|
120
|
+
/** How a lifecycle state reads at a glance — the same word everywhere it's printed. */
|
|
121
|
+
export declare function statusLabel(s: IndexStatus): string;
|
|
122
|
+
/** `label value` with only the label dimmed — status values carry their own color, and wrapping
|
|
123
|
+
* them in `info()` would fight it. */
|
|
124
|
+
export declare const statusRow: (label: string, value: string) => void;
|
|
125
|
+
/**
|
|
126
|
+
* What to DO about a failure class — whose problem it is and whether waiting is the answer.
|
|
127
|
+
* The class alone told an agent enough to reason it out; it does not tell a creator, and "whose
|
|
128
|
+
* problem is this" is the single question a failed catch-up has to answer.
|
|
129
|
+
*/
|
|
130
|
+
export declare function indexErrorAction(cls: IndexErrorClass): string;
|
|
131
|
+
/** The one wording for "registered, but catch-up failed" — shared by add/index so both say the same
|
|
132
|
+
* thing: what failed, whose problem it is, and that the registration survived. */
|
|
133
|
+
export declare function failedCatchUpMessage(address: Address, remote: RemoteTarget, err: IndexError | undefined, check: string): string;
|
|
134
|
+
/**
|
|
135
|
+
* One human line for a status read: where it is, how far along, and why if it's unhappy.
|
|
136
|
+
*
|
|
137
|
+
* What "where" means depends on the state, so say the right thing rather than one number that reads
|
|
138
|
+
* differently in each: a percentage is only honest while BACKFILLING (see indexProgress). A `live`
|
|
139
|
+
* project's `toBlock` only advances when that project has events, so on a busy chain a perfectly
|
|
140
|
+
* current project sits far below head — printing that as a ratio makes healthy look broken.
|
|
141
|
+
*/
|
|
142
|
+
export declare function statusLine(s: RemoteProjectStatus): string;
|
|
143
|
+
/**
|
|
144
|
+
* Report a register/reindex answer, whichever of the two conformant shapes the service used.
|
|
145
|
+
*
|
|
146
|
+
* A `200` already carries the counts. A `202` means the registration is durable and catch-up is still
|
|
147
|
+
* running — so by default we poll to a terminal state and print the SAME summary line, giving the
|
|
148
|
+
* human the "waits, then tells you what happened" UX without the service holding a socket open for
|
|
149
|
+
* minutes. `--no-wait` stops at the 202 and names the command that checks later.
|
|
150
|
+
*/
|
|
151
|
+
export declare function reportRemoteIndexing(remote: RemoteTarget, chainId: number, address: Address, r: RegisterProjectResult, flags: Flags, verb: string): Promise<void>;
|
|
152
|
+
/** "3 live, 1 backfilling, 1 failed (rpc_rate_limited)" — the one-line answer to "is my stuff ok?" */
|
|
153
|
+
export declare function rollUp(projects: Array<{
|
|
154
|
+
status?: IndexStatus;
|
|
155
|
+
error?: {
|
|
156
|
+
class: string;
|
|
50
157
|
};
|
|
51
|
-
}
|
|
52
|
-
/** Normalize a resolver base URL to its `/admin/projects` control-plane endpoint. */
|
|
53
|
-
export declare function adminProjectsUrl(base: string): string;
|
|
54
|
-
/** Register + index a project with a remote resolver (remote `abx add`/`index`). */
|
|
55
|
-
export declare function remoteAddProject(base: string, token: string, body: RemoteAddBody): Promise<RemoteAddResult>;
|
|
56
|
-
/** Stop a remote resolver from indexing a project (remote `abx forget`). */
|
|
57
|
-
export declare function remoteRemoveProject(base: string, token: string, address: string): Promise<void>;
|
|
158
|
+
}>): string;
|
|
58
159
|
//# sourceMappingURL=remote.d.ts.map
|
package/dist/remote.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
|