@artblocks/abx-cli 0.1.0-alpha.17 → 0.1.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/dist/commands/deploy.d.ts +181 -0
  3. package/dist/commands/deploy.d.ts.map +1 -0
  4. package/dist/commands/deploy.js +2974 -0
  5. package/dist/commands/deploy.js.map +1 -0
  6. package/dist/commands/project.d.ts +134 -0
  7. package/dist/commands/project.d.ts.map +1 -0
  8. package/dist/commands/project.js +919 -0
  9. package/dist/commands/project.js.map +1 -0
  10. package/dist/commands/reads.d.ts +64 -0
  11. package/dist/commands/reads.d.ts.map +1 -0
  12. package/dist/commands/reads.js +635 -0
  13. package/dist/commands/reads.js.map +1 -0
  14. package/dist/commands/scaffold.d.ts +55 -0
  15. package/dist/commands/scaffold.d.ts.map +1 -0
  16. package/dist/commands/scaffold.js +470 -0
  17. package/dist/commands/scaffold.js.map +1 -0
  18. package/dist/commands/service.d.ts +41 -0
  19. package/dist/commands/service.d.ts.map +1 -0
  20. package/dist/commands/service.js +572 -0
  21. package/dist/commands/service.js.map +1 -0
  22. package/dist/commands/storage.d.ts +37 -0
  23. package/dist/commands/storage.d.ts.map +1 -0
  24. package/dist/commands/storage.js +335 -0
  25. package/dist/commands/storage.js.map +1 -0
  26. package/dist/config.d.ts +72 -2
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +201 -4
  29. package/dist/config.js.map +1 -1
  30. package/dist/deps.d.ts +6 -39
  31. package/dist/deps.d.ts.map +1 -1
  32. package/dist/deps.js +4 -68
  33. package/dist/deps.js.map +1 -1
  34. package/dist/errors.d.ts +20 -0
  35. package/dist/errors.d.ts.map +1 -0
  36. package/dist/errors.js +25 -0
  37. package/dist/errors.js.map +1 -0
  38. package/dist/flags.d.ts +34 -0
  39. package/dist/flags.d.ts.map +1 -1
  40. package/dist/flags.js +74 -0
  41. package/dist/flags.js.map +1 -1
  42. package/dist/main.js +57 -6751
  43. package/dist/main.js.map +1 -1
  44. package/dist/mintpage.d.ts.map +1 -1
  45. package/dist/mintpage.js +34 -40
  46. package/dist/mintpage.js.map +1 -1
  47. package/dist/output.d.ts +137 -0
  48. package/dist/output.d.ts.map +1 -0
  49. package/dist/output.js +504 -0
  50. package/dist/output.js.map +1 -0
  51. package/dist/ownerops.d.ts +23 -44
  52. package/dist/ownerops.d.ts.map +1 -1
  53. package/dist/ownerops.js +151 -233
  54. package/dist/ownerops.js.map +1 -1
  55. package/dist/preview.d.ts +8 -4
  56. package/dist/preview.d.ts.map +1 -1
  57. package/dist/preview.js +8 -17
  58. package/dist/preview.js.map +1 -1
  59. package/dist/provision.d.ts.map +1 -1
  60. package/dist/provision.js +10 -7
  61. package/dist/provision.js.map +1 -1
  62. package/dist/remote.d.ts +72 -7
  63. package/dist/remote.d.ts.map +1 -1
  64. package/dist/remote.js +211 -9
  65. package/dist/remote.js.map +1 -1
  66. package/dist/riskgate.d.ts +29 -0
  67. package/dist/riskgate.d.ts.map +1 -0
  68. package/dist/riskgate.js +91 -0
  69. package/dist/riskgate.js.map +1 -0
  70. package/dist/schema.d.ts +6 -0
  71. package/dist/schema.d.ts.map +1 -1
  72. package/dist/schema.js +12 -16
  73. package/dist/schema.js.map +1 -1
  74. package/dist/served.d.ts +1 -17
  75. package/dist/served.d.ts.map +1 -1
  76. package/dist/served.js +47 -0
  77. package/dist/served.js.map +1 -1
  78. package/dist/signer.d.ts +13 -0
  79. package/dist/signer.d.ts.map +1 -1
  80. package/dist/signer.js +42 -19
  81. package/dist/signer.js.map +1 -1
  82. package/dist/update-check.d.ts +27 -0
  83. package/dist/update-check.d.ts.map +1 -1
  84. package/dist/update-check.js +30 -0
  85. package/dist/update-check.js.map +1 -1
  86. package/package.json +6 -6
  87. package/skill/SKILL.md +7 -11
  88. package/skill/reference/code-projects.md +3 -3
  89. package/skill/reference/hosting.md +6 -6
  90. package/skill/reference/operating.md +2 -5
  91. package/skill/reference/setup.md +2 -2
  92. package/skill/reference/troubleshooting.md +1 -1
  93. package/dist/gas.d.ts +0 -63
  94. package/dist/gas.d.ts.map +0 -1
  95. package/dist/gas.js +0 -76
  96. package/dist/gas.js.map +0 -1
  97. package/dist/inspect.d.ts +0 -48
  98. package/dist/inspect.d.ts.map +0 -1
  99. package/dist/inspect.js +0 -290
  100. package/dist/inspect.js.map +0 -1
  101. package/dist/migrate.d.ts +0 -65
  102. package/dist/migrate.d.ts.map +0 -1
  103. package/dist/migrate.js +0 -180
  104. package/dist/migrate.js.map +0 -1
  105. package/dist/onchain-uri.d.ts +0 -81
  106. package/dist/onchain-uri.d.ts.map +0 -1
  107. package/dist/onchain-uri.js +0 -251
  108. package/dist/onchain-uri.js.map +0 -1
  109. package/dist/resume.d.ts +0 -96
  110. package/dist/resume.d.ts.map +0 -1
  111. package/dist/resume.js +0 -95
  112. package/dist/resume.js.map +0 -1
  113. package/dist/upload.d.ts +0 -28
  114. package/dist/upload.d.ts.map +0 -1
  115. package/dist/upload.js +0 -41
  116. package/dist/upload.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reads.js","sourceRoot":"","sources":["../../src/commands/reads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { type Flags } from '../flags.js';
2
+ /**
3
+ * Doctor's "want me to fix that?" for a missing or stale skill. Three lanes, deliberately:
4
+ * `--fix` install without asking (CI, scripts, an agent running doctor for someone)
5
+ * interactive name the exact directories, then ask — Enter accepts, since doctor's whole job is
6
+ * getting setup right and this is the one check whose fix is a local file copy
7
+ * non-TTY change NOTHING and print how to do it; a diagnostic must never mutate a
8
+ * scripted environment just because nobody was there to say no
9
+ * Honors `--global` / `--agent` so the fix can target the same place an explicit install would.
10
+ */
11
+ export declare function offerSkillInstall(flags: Flags, stale: boolean, indent: string): Promise<void>;
12
+ export declare function cmdDoctor(flags: Flags): Promise<void>;
13
+ export declare function cmdMintPage(address: string | undefined, flags: Flags): Promise<void>;
14
+ /** Locate the skill folder: the bundled copy beside the compiled CLI (published), else the
15
+ * canonical repo copy (dev). Returns null if neither is present. */
16
+ export declare function resolveBundledSkill(): string | null;
17
+ /** Locate the in-chain renderer Foundry scaffold: bundled beside the CLI (published), else the
18
+ * repo copy (dev). Same layout in both — it lives under the CLI package's `assets/`. */
19
+ export declare function resolveRendererScaffold(): string | null;
20
+ /** `abx scaffold-renderer [<dir>]` — write a ready-to-build Foundry project for the in-chain
21
+ * Solidity art lane (a seed + PostParam → SVG renderer + coherent traits + tests + a deploy
22
+ * script). abx doesn't compile/deploy Solidity — the creator runs forge, then hands the deployed
23
+ * address to `deploy-code --image-renderer`. Mirrors how deploy-resolver scaffolds an artifact. */
24
+ export declare function cmdScaffoldRenderer(rest: string[], flags: Flags): void;
25
+ /** Human label for each skills-parent dir — which agents pick the skill up from there. */
26
+ export declare const SKILL_PARENT_LABELS: Record<string, string>;
27
+ /** Resolve which skills-parent dirs `install` should write to. No `--agent` → the whole-ecosystem
28
+ * default (Claude Code + the neutral `.agents/skills` everyone else reads). `--agent a,b` narrows
29
+ * to those agents' dirs (de-duped, since several share `.agents/skills`). */
30
+ export declare function resolveInstallParents(agentFlag: string | undefined): string[];
31
+ /** Copy the bundled skill folder to `dest`, replacing any prior copy so a re-install after an
32
+ * upgrade never leaves stale reference files behind.
33
+ *
34
+ * Returns `'already-canonical'` when destination IS the source, having done nothing. That case is
35
+ * not hypothetical: in a dev checkout of the abx repo `resolveBundledSkill()` resolves to the
36
+ * canonical `.claude/skills/abx-self-host`, which is exactly where a cwd-relative install writes —
37
+ * so the `rmSync` below would delete the canonical skill, and the copy would then have no source.
38
+ * A self-destructing install is a bad way to learn that. */
39
+ export declare function installSkillTo(src: string, dest: string): 'installed' | 'already-canonical';
40
+ /**
41
+ * Install the bundled skill into the default per-agent parents (or `~` with `global`), reporting
42
+ * each destination. Shared by `abx skill install` and `abx doctor`'s offer to fix a missing/stale
43
+ * skill — one implementation, so the two can't drift on where the skill lands or what it prints.
44
+ */
45
+ export declare function installSkillToDefaults(src: string, opts?: {
46
+ global?: boolean;
47
+ agent?: string;
48
+ }): string;
49
+ /** The default skill destinations, as a display string — what doctor's prompt has to name up front. */
50
+ export declare function defaultSkillDests(opts?: {
51
+ global?: boolean;
52
+ agent?: string;
53
+ }): string;
54
+ export declare function cmdSkill(rest: string[], flags: Flags): Promise<void>;
55
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAC,KAAK,KAAK,EAAa,MAAM,aAAa,CAAC;AAkBnD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BnG;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,KAAK,iBAkK3C;AAGD,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,iBAkE1E;AAiBD;qEACqE;AACrE,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAkBnD;AAED;yFACyF;AACzF,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAUvD;AAED;;;oGAGoG;AACpG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,QAuB/D;AAED,0FAA0F;AAC1F,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGtD,CAAC;AAEF;;8EAE8E;AAC9E,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAc7E;AAED;;;;;;;6DAO6D;AAC7D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,mBAAmB,CAM3F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAM,GAAG,MAAM,CAezG;AAED,uGAAuG;AACvG,wBAAgB,iBAAiB,CAAC,IAAI,GAAE;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAM,GAAG,MAAM,CAGvF;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,iBAoC1D"}
@@ -0,0 +1,470 @@
1
+ /**
2
+ * Scaffolding + environment commands: `doctor` (check key/RPC/balance/factory/storage — and offer
3
+ * to install/resync the agent skill), `mint-page` (a self-contained Next.js minting app),
4
+ * `scaffold-renderer` (copy the Solidity on-chain-renderer starting point), and `skill` (install
5
+ * the version-locked abx agent skill into a coding agent).
6
+ */
7
+ import { cpSync, existsSync, mkdirSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
8
+ import { homedir } from 'node:os';
9
+ import { basename, join as joinPath, resolve as resolvePath } from 'node:path';
10
+ import { createInterface } from 'node:readline';
11
+ import { fileURLToPath } from 'node:url';
12
+ import { isCurrentFactory, makePublicClient, makeWalletClient, oneOfOneImageAbi, probeRpcEndpoints, resolveChain, } from '@artblocks/abx-sdk';
13
+ import { arweaveAddress, probeStorageBackend, resolveBackend } from '@artblocks/abx-storage';
14
+ import { formatEther } from 'viem';
15
+ import { CHAIN, activeBackendId, arweaveKeyFilePath, factoryAddress, faucetHint, fixedPriceMinterAddress, loadArweaveJwk, storageOptions, } from '../config.js';
16
+ import { PUBLIC_RPC, mintPageArtifact } from '../mintpage.js';
17
+ import { bold, c, dim, findRepoRoot, g, info, ok, step, warn } from '../output.js';
18
+ import { declinesSkillInstall } from '../prompt.js';
19
+ import { listConfiguredRemotes, misnamedRemoteVars, selfTokenMigrationWarning } from '../remote.js';
20
+ import { copyRendererScaffold } from '../scaffold.js';
21
+ import { AGENT_SKILL_PARENTS, SKILL_DIR_NAME, binaryProvenance, checkForCliUpdate, compareVersions, installedSkillVersions, readCliVersion, readSkillVersion, } from '../update-check.js';
22
+ // ── doctor ────────────────────────────────────────────────────────────────--
23
+ /**
24
+ * Doctor's "want me to fix that?" for a missing or stale skill. Three lanes, deliberately:
25
+ * `--fix` install without asking (CI, scripts, an agent running doctor for someone)
26
+ * interactive name the exact directories, then ask — Enter accepts, since doctor's whole job is
27
+ * getting setup right and this is the one check whose fix is a local file copy
28
+ * non-TTY change NOTHING and print how to do it; a diagnostic must never mutate a
29
+ * scripted environment just because nobody was there to say no
30
+ * Honors `--global` / `--agent` so the fix can target the same place an explicit install would.
31
+ */
32
+ export async function offerSkillInstall(flags, stale, indent) {
33
+ const opts = { global: flags.global !== undefined, agent: flags.agent };
34
+ const src = resolveBundledSkill();
35
+ if (!src)
36
+ return; // no bundled skill to install (dev checkout oddity) — the hint above still stands
37
+ const verb = stale ? 'resync' : 'install';
38
+ const dests = defaultSkillDests(opts);
39
+ if (flags.fix === undefined) {
40
+ if (!process.stdin.isTTY) {
41
+ console.log(`${indent}${dim(`non-interactive — run \`abx doctor --fix\` (or \`abx skill install\`) to ${verb} it.`)}`);
42
+ return;
43
+ }
44
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
45
+ const answer = await new Promise((resolve) => {
46
+ // EOF (Ctrl-D) closes the interface WITHOUT firing the question callback — awaiting only the
47
+ // callback would hang doctor forever. Treat a closed stream as a decline: the safe direction is
48
+ // always "change nothing", never "write files because nobody answered".
49
+ rl.once('close', () => resolve('n'));
50
+ rl.question(`${indent}${verb} the abx skill into ${bold(dests)} now? [Y/n] `, resolve);
51
+ });
52
+ rl.close();
53
+ if (declinesSkillInstall(answer)) {
54
+ console.log(`${indent}${dim(`skipped — \`abx skill install\` when you want it.`)}`);
55
+ return;
56
+ }
57
+ }
58
+ console.log('');
59
+ installSkillToDefaults(src, opts);
60
+ }
61
+ export async function cmdDoctor(flags) {
62
+ console.log(bold('\n abx doctor') + dim(` · ${CHAIN}`) + '\n');
63
+ // Two visual tiers: PASS/FAIL checks (✓/✗) for things that are either working or broken, and an
64
+ // "Optional" block (·) for path-dependent setup that is fine to be unset. We deliberately do NOT
65
+ // use ⚠ for "unset but often fine" — that read as noise; ⚠ is reserved for a real gotcha (a
66
+ // range-capped RPC). Labels are padded so both tiers align.
67
+ const CONT = ' '.repeat(17); // continuation indent: aligns under a check/opt detail column
68
+ const check = (label, pass, detail = '') => console.log(` ${pass ? g('✓') : `${c.red}✗${c.reset}`} ${label.padEnd(13)}${detail ? dim(detail) : ''}`);
69
+ const opt = (label, detail) => console.log(` ${dim('·')} ${label.padEnd(13)}${dim(detail)}`);
70
+ const hasKey = !!process.env.ABX_DEPLOYER_PK;
71
+ // 1. Agent skill — FIRST and prominent. The primary way to use abx is to let a coding agent drive
72
+ // it, so a missing/stale skill is a ✗: not broken infra, but the main UX isn't set up. Its
73
+ // version lives in SKILL.md frontmatter (version-locked to this CLI). Notify-only — no exit code.
74
+ const cliVersion = readCliVersion();
75
+ const skillVersions = installedSkillVersions();
76
+ const staleSkills = skillVersions.filter((v) => compareVersions(cliVersion, v) > 0);
77
+ const skillMissing = skillVersions.length === 0;
78
+ const skillStale = !skillMissing && staleSkills.length > 0;
79
+ if (skillMissing) {
80
+ check('agent skill', false, `not installed — run ${g('abx skill install')}`);
81
+ console.log(`${CONT}${dim('(recommended: let a coding agent drive abx)')}`);
82
+ }
83
+ else if (skillStale) {
84
+ check('agent skill', false, `v${staleSkills.join(', v')} behind CLI v${cliVersion} — run ${g('abx skill install')}`);
85
+ }
86
+ else {
87
+ check('agent skill', true, `in sync (v${cliVersion})`);
88
+ }
89
+ // Offer to fix it here rather than only naming the command. `npm i -g` + `abx skill install` was a
90
+ // two-step install flow where the second step is easy to skip and invisible when skipped (an agent
91
+ // that never learned abx just... doesn't use it). Doctor is already the documented first run, so
92
+ // this collapses the flow without an npm `postinstall` hook — which could not work anyway: npm runs
93
+ // lifecycle scripts with cwd set to the installed package dir (so the skill would land inside
94
+ // node_modules), pnpm gates install scripts by default, and writing to a user's ~/.claude on
95
+ // install is the kind of side effect that belongs to the user, not to us.
96
+ if (skillMissing || skillStale) {
97
+ await offerSkillInstall(flags, skillStale, CONT);
98
+ }
99
+ console.log('');
100
+ // 2. Core environment (✓/✗). Signing-wallet balances are computed here (they need the RPC) but
101
+ // printed in the Optional block below, so buffer them.
102
+ let signingOpt = null;
103
+ let forOpt = null;
104
+ try {
105
+ const publicClient = makePublicClient({ chainKey: CHAIN });
106
+ const bn = await publicClient.getBlockNumber();
107
+ // Collapse the RPC report to one line (best endpoint + head), and only add a ⚠ when there is a
108
+ // genuine problem — a range-capped-only set that will grind a resolver under load.
109
+ const probes = await probeRpcEndpoints({ chainKey: CHAIN });
110
+ const usable = probes.filter((pr) => pr.verdict !== 'unusable');
111
+ const best = probes.find((pr) => pr.verdict === 'best') ?? usable[0];
112
+ if (usable.length > 0) {
113
+ check('RPC', true, `${best.label} · head ${bn} · ${best.verdict === 'best' ? 'wide range + archive' : 'range-capped'}`);
114
+ if (!probes.some((pr) => pr.verdict === 'best')) {
115
+ console.log(`${CONT}${c.orange}⚠${c.reset}${dim(' every endpoint is getLogs-range-capped — add a wide-range archive RPC to ABX_RPC_URLS before running a resolver under load')}`);
116
+ }
117
+ }
118
+ else {
119
+ check('RPC', false, `${CHAIN} — no endpoint usable for reconstruction; add a wide-range archive RPC to ABX_RPC_URLS`);
120
+ }
121
+ const factory = factoryAddress();
122
+ if (factory) {
123
+ const code = await publicClient.getCode({ address: factory });
124
+ if (!code || code === '0x')
125
+ check('factory', false, `${factory} — no code on ${CHAIN}; \`abx deploy\` redeploys`);
126
+ else if (await isCurrentFactory(publicClient, factory))
127
+ check('factory', true, factory);
128
+ else
129
+ check('factory', false, `${factory} — older/incompatible; \`abx deploy\` redeploys`);
130
+ }
131
+ else {
132
+ check('factory', false, 'none yet — `abx demo` deploys one');
133
+ }
134
+ if (hasKey) {
135
+ const { account } = makeWalletClient({ chainKey: CHAIN });
136
+ const bal = await publicClient.getBalance({ address: account.address });
137
+ signingOpt = `env key ${account.address} · ${bal > 0n ? `funded ${formatEther(bal)} ETH` : `empty — fund it (${faucetHint(CHAIN)})`}`;
138
+ }
139
+ if (flags.for) {
140
+ const bal = await publicClient.getBalance({ address: flags.for });
141
+ forOpt = `${flags.for} · ${bal > 0n ? `funded ${formatEther(bal)} ETH` : `empty — ${faucetHint(CHAIN)}`}`;
142
+ }
143
+ }
144
+ catch (err) {
145
+ check('RPC', false, err.message);
146
+ }
147
+ // storage backend — resolve it (catches missing config), then probe liveness/creds. B4: the probe
148
+ // is the fuller `probeStorageBackend` (packages/storage/probe.ts), not a bare `.health()` call —
149
+ // for fs/ipfs that's the SAME check as before (reused, not reimplemented); for cloud it's now a
150
+ // real PUT (API) + GET (public base) round trip — the only thing that catches the R2/S3
151
+ // endpoint-vs-public-base trap `.health()` alone couldn't; arweave adds an identity+balance READ
152
+ // (never a paid upload). Kept fast on purpose: only runs once a backend actually resolves, bounded
153
+ // to 1.5s — the same budget `checkForCliUpdate` below uses for its own network check.
154
+ const backendId = activeBackendId();
155
+ try {
156
+ const backend = resolveBackend(storageOptions());
157
+ const h = await probeStorageBackend(storageOptions(), { timeoutMs: 1500 });
158
+ // Whether this backend can name a public URL for what it stores decides one thing operators hit
159
+ // later: a REMOTE effects runner needs it (the resolver serves referenced output by redirect, so
160
+ // it takes a URL and refuses bytes). Co-located rendering doesn't care — hence a note, not a fail.
161
+ const publishable = backend.locator
162
+ ? 'can publish to a remote resolver'
163
+ : 'local-only — a remote effects runner needs cloud/ipfs/arweave (co-located rendering is fine)';
164
+ check('storage', h.ok, `${backend.id} · ${h.detail} · ${publishable}`);
165
+ // On failure, name BOTH URLs the cloud check touched — the R2/S3 endpoint-vs-public-base trap is
166
+ // only diagnosable with both hosts on screen, not a bare "fetch failed".
167
+ if (!h.ok && (h.putUrl || h.publicUrl)) {
168
+ console.log(`${CONT}${dim(`put ${h.putUrl ?? '(none)'} · get ${h.publicUrl ?? '(none)'}`)}`);
169
+ }
170
+ }
171
+ catch (err) {
172
+ check('storage', false, `${backendId} · ${err.message}`);
173
+ }
174
+ // 2b. Version & provenance — the 3-class drift ladder the skill has long taught in prose
175
+ // ("Resolve the CLI before you install anything"), now checked instead of just explained.
176
+ // `checkForCliUpdate` is already bounded to a ~1.5s network timeout + a 6h disk cache (see
177
+ // update-check.ts), so this never adds a meaningful wait — same budget the RPC probe above uses.
178
+ console.log(`\n ${dim('Version & provenance:')}`);
179
+ const provenance = binaryProvenance();
180
+ if (provenance === 'npx') {
181
+ check('binary', false, 'running via npx — can silently keep serving a stale cached copy after an upgrade');
182
+ console.log(`${CONT}${dim('install instead: `npm install --save-dev @artblocks/abx-cli` (project-local) or `-g` (machine-wide)')}`);
183
+ }
184
+ else {
185
+ check('binary', true, provenance === 'source' ? 'source checkout (pnpm abx)' : 'npm install');
186
+ }
187
+ const latest = await checkForCliUpdate(cliVersion);
188
+ if (latest)
189
+ check('npm', false, `v${cliVersion} → v${latest} available — npm i -g @artblocks/abx-cli@latest`);
190
+ else
191
+ check('npm', true, `v${cliVersion} (or offline — checked at most every 6h)`);
192
+ if (skillMissing)
193
+ check('skill ver', false, 'no installed skill to compare — abx skill install');
194
+ else if (skillStale)
195
+ check('skill ver', false, `v${staleSkills.join(', v')} behind CLI v${cliVersion} — abx skill install`);
196
+ else
197
+ check('skill ver', true, `v${cliVersion} matches the CLI`);
198
+ // 3. Optional — path-dependent setup. Unset is fine; these say WHEN you'll need each, so an unset
199
+ // value never reads as a warning.
200
+ console.log(`\n ${dim('Optional — depends how you deploy:')}`);
201
+ if (signingOpt)
202
+ opt('signing', signingOpt);
203
+ else
204
+ opt('signing', 'no env key → sign in your browser wallet (--sign). Preflight yours: `abx doctor --for 0x<addr>`. Set ABX_DEPLOYER_PK for the unattended hot lane.');
205
+ if (forOpt)
206
+ opt('wallet --for', forOpt);
207
+ const baseUrl = process.env.ABX_PUBLIC_BASE_URL;
208
+ if (baseUrl)
209
+ opt('resolver URL', baseUrl);
210
+ else
211
+ opt('resolver URL', 'ABX_PUBLIC_BASE_URL unset → needed for off-chain/resolver-served deploys; skip if fully on-chain (--onchain-image / --onchain-uri).');
212
+ if (!process.env.ARWEAVE_JWK && existsSync(arweaveKeyFilePath())) {
213
+ const jwk = loadArweaveJwk();
214
+ opt('arweave key', `${jwk ? arweaveAddress(jwk) + ' ' : ''}holds upload credits — back it up: \`abx storage backup-key --out <path>\``);
215
+ }
216
+ // Named remotes: report what's configured, and — the part doctor was missing — flag a credential
217
+ // stored under a name the CLI does NOT read. That fault presents as "it acts like I never gave it a
218
+ // key", and until now it only surfaced from `abx remote <name>`, which a creator reaches later
219
+ // (doctor is the thing they're told to run FIRST).
220
+ const remotes = listConfiguredRemotes();
221
+ if (remotes.length) {
222
+ opt('remotes', remotes.map((r) => `${r.name.toLowerCase()}${r.hasToken ? '' : ` ${c.orange}(no token)${c.reset}`}`).join(' · '));
223
+ }
224
+ for (const bad of misnamedRemoteVars()) {
225
+ check('remote key', false, `${bad.key} is set but is NOT read — the convention is ${bold(bad.suggestion)} (only _URL and _TOKEN). Rename it.`);
226
+ }
227
+ // The self-host default's credential moved to the named-remote grammar (ABX_REMOTE_SELF_TOKEN) —
228
+ // the OLD var is never read now, so flag it here rather than let a creator discover it as a 401
229
+ // that reads like a wrong key. Same condition `requireRemoteToken` hard-stops a real command on.
230
+ const selfTokenMigration = selfTokenMigrationWarning();
231
+ if (selfTokenMigration)
232
+ check('self token', false, selfTokenMigration);
233
+ console.log('');
234
+ }
235
+ // ── mint-page — scaffold a Next.js mint site for a collection (fixed-price minter) ─────────────
236
+ export async function cmdMintPage(address, flags) {
237
+ const usage = 'abx mint-page <token> [--dir mint-page] [--name "…"] [--rpc <public-url>] [--minter-contract 0x..]';
238
+ const token = address;
239
+ if (!token || !token.startsWith('0x')) {
240
+ console.error(`usage: ${usage}\n`);
241
+ process.exitCode = 1;
242
+ return;
243
+ }
244
+ const minter = fixedPriceMinterAddress(flags['minter-contract']);
245
+ if (!minter) {
246
+ throw new Error(`no shared fixed-price minter known for ${CHAIN} — run \`abx minter configure ${token} …\` first (it deploys + records one), or set ABX_FIXED_PRICE_MINTER.`);
247
+ }
248
+ const chain = resolveChain(CHAIN);
249
+ const rpcUrl = flags.rpc && flags.rpc !== 'true' ? flags.rpc : PUBLIC_RPC[chain.id];
250
+ if (!rpcUrl) {
251
+ throw new Error(`no public RPC known for ${CHAIN} (chainId ${chain.id}) — pass --rpc <public-keyless-url> (it is embedded in the public site, so it must not contain a secret key).`);
252
+ }
253
+ // Default the display name from the token's on-chain name (read-only); --name overrides.
254
+ let collectionName = flags.name && flags.name !== 'true' ? flags.name : '';
255
+ if (!collectionName) {
256
+ try {
257
+ collectionName = (await makePublicClient({ chainKey: CHAIN }).readContract({
258
+ address: token,
259
+ abi: oneOfOneImageAbi,
260
+ functionName: 'name',
261
+ }));
262
+ }
263
+ catch {
264
+ collectionName = 'ABX Collection';
265
+ }
266
+ }
267
+ const art = mintPageArtifact({
268
+ token,
269
+ minter,
270
+ chainId: chain.id,
271
+ chainName: chain.name,
272
+ rpcUrl,
273
+ collectionName,
274
+ explorer: chain.blockExplorers?.default?.url,
275
+ });
276
+ const dir = flags.dir && flags.dir !== 'true' ? flags.dir : 'mint-page';
277
+ const outDir = resolvePath(dir);
278
+ console.log(bold('\n ABX Self-Host Toolkit — mint page'));
279
+ info(`collection ${bold(collectionName)} ${dim(token)}`);
280
+ info(`minter ${minter} ${dim('· ' + chain.name + ' · reads via ' + rpcUrl)}`);
281
+ step('Write the mint-page artifact (self-contained Next.js app — reads chain directly, no backend)');
282
+ for (const f of art.files) {
283
+ const dest = joinPath(outDir, f.path);
284
+ mkdirSync(joinPath(dest, '..'), { recursive: true });
285
+ writeFileSync(dest, f.content);
286
+ info(`wrote ${joinPath(dir, f.path)}`);
287
+ }
288
+ step(`Next steps (run from ${bold(dir)}/)`);
289
+ art.steps.forEach((s, i) => console.log(` ${g(`${i + 1}.`)} ${s}`));
290
+ step('Customize — this is a starting point');
291
+ info('Plain React + one CSS file; ask the agent for a bespoke layout per drop. ETH sales + injected wallet by default;');
292
+ info('the README covers RainbowKit (multi-wallet), ERC-20 (add an approve step), and RPC/gallery notes.');
293
+ warn('The RPC in .env.local is PUBLIC (may rate-limit). Never put a secret-keyed RPC in a NEXT_PUBLIC_ var — it ships to the browser.');
294
+ console.log('');
295
+ }
296
+ // ── flags ─────────────────────────────────────────────────────────────────--
297
+ // parseFlags + the Flags type live in flags.ts (unit-testable; repeatable flags like --dep
298
+ // accumulate comma-joined there).
299
+ // ── skill: install the abx agent skill into the user's coding agent ───────────────────────
300
+ // The skill is the agentic half of the toolkit — the CLI is only useful once an agent knows how
301
+ // to drive it. It ships bundled inside the published package (packages/cli/skill/, created at
302
+ // prepack); in dev the same command reads the canonical copy straight from the repo. This is the
303
+ // CANONICAL install path precisely because the bundle is version-locked to the CLI it ships inside
304
+ // (the version lives in SKILL.md frontmatter — see update-check.ts). By default it writes to BOTH
305
+ // `.claude/skills` (Claude Code) and the neutral `.agents/skills` (Cursor · Codex · Gemini ·
306
+ // Copilot all read it), so one command covers the whole ecosystem; `--agent` narrows it. A separate
307
+ // git-based channel, `npx skills add ArtBlocks/abx --skill abx-self-host`, works once the repo is public but is NOT
308
+ // version-locked to a local CLI — prefer `abx skill install`.
309
+ /** Locate the skill folder: the bundled copy beside the compiled CLI (published), else the
310
+ * canonical repo copy (dev). Returns null if neither is present. */
311
+ export function resolveBundledSkill() {
312
+ const here = fileURLToPath(import.meta.url);
313
+ const pkgDir = resolvePath(here, '..', '..');
314
+ const bundled = joinPath(pkgDir, 'skill');
315
+ // Running from SOURCE (`pnpm abx`, tsx on packages/cli/src/**) means we're in the repo working
316
+ // tree, where the canonical skill is the source of truth and `<pkg>/skill` is gitignored PREPACK
317
+ // OUTPUT that may be arbitrarily old. Preferring the bundle there is actively destructive: a
318
+ // leftover `skill/` from a months-old `npm pack` silently overwrote the canonical skill with a
319
+ // copy 8 versions behind (and the drift check then reported the damage as if the user had caused
320
+ // it). In the published layout there is no repo and no canonical copy, so the bundle is correct.
321
+ const fromSource = /[/\\]src[/\\][^/\\]+$/.test(here);
322
+ const root = findRepoRoot();
323
+ const canonical = root ? joinPath(root, '.claude', 'skills', 'abx-self-host') : null;
324
+ if (fromSource && canonical && existsSync(joinPath(canonical, 'SKILL.md')))
325
+ return canonical;
326
+ // Published layout: dist/main.js → <pkg>/skill (see scripts/bundle-skill.mjs).
327
+ if (existsSync(joinPath(bundled, 'SKILL.md')))
328
+ return bundled;
329
+ if (canonical && existsSync(joinPath(canonical, 'SKILL.md')))
330
+ return canonical;
331
+ return null;
332
+ }
333
+ /** Locate the in-chain renderer Foundry scaffold: bundled beside the CLI (published), else the
334
+ * repo copy (dev). Same layout in both — it lives under the CLI package's `assets/`. */
335
+ export function resolveRendererScaffold() {
336
+ const pkgDir = resolvePath(fileURLToPath(import.meta.url), '..', '..');
337
+ const bundled = joinPath(pkgDir, 'assets', 'renderer-scaffold');
338
+ if (existsSync(joinPath(bundled, 'foundry.toml')))
339
+ return bundled;
340
+ const root = findRepoRoot();
341
+ if (root) {
342
+ const canonical = joinPath(root, 'packages', 'cli', 'assets', 'renderer-scaffold');
343
+ if (existsSync(joinPath(canonical, 'foundry.toml')))
344
+ return canonical;
345
+ }
346
+ return null;
347
+ }
348
+ /** `abx scaffold-renderer [<dir>]` — write a ready-to-build Foundry project for the in-chain
349
+ * Solidity art lane (a seed + PostParam → SVG renderer + coherent traits + tests + a deploy
350
+ * script). abx doesn't compile/deploy Solidity — the creator runs forge, then hands the deployed
351
+ * address to `deploy-code --image-renderer`. Mirrors how deploy-resolver scaffolds an artifact. */
352
+ export function cmdScaffoldRenderer(rest, flags) {
353
+ const dir = resolvePath(rest[0] ?? 'my-renderer');
354
+ const src = resolveRendererScaffold();
355
+ if (!src) {
356
+ throw new Error('bundled renderer scaffold not found (expected <pkg>/assets/renderer-scaffold). Reinstall @artblocks/abx-cli.');
357
+ }
358
+ if (existsSync(dir) && readdirSync(dir).length > 0 && flags.force === undefined) {
359
+ throw new Error(`${dir} already exists and is not empty — pass a fresh path, or --force to write into it.`);
360
+ }
361
+ // Copy + assert it landed. Throws rather than printing a success banner over an empty directory —
362
+ // the alpha.9→alpha.14 failure mode. See src/scaffold.ts for why this is not inline.
363
+ copyRendererScaffold(src, dir);
364
+ ok(`in-chain renderer scaffold → ${dir}`);
365
+ step('The in-chain Solidity art lane — nothing to run after deploy, tokenURI resolves from chain forever');
366
+ info(`${bold('src/MyRenderer.sol')} draws an SVG from the token ${bold('seed')} + a ${bold('palette')} HexColor PostParam; ${bold('src/MyTraits.sol')} reads the SAME seed for coherent on-chain traits. Fork the art; keep the invariants in ${bold('src/interfaces/IAbxFieldRenderer.sol')} (above all: render() must NEVER revert).`);
367
+ info('build + test + deploy it yourself with Foundry (abx does not compile/deploy Solidity):');
368
+ console.log(` ${g('cd')} ${basename(dir)}`);
369
+ console.log(` ${g('forge soldeer install')} ${dim('# fetch solady + forge-std (pinned)')}`);
370
+ console.log(` ${g('forge test')} ${dim('# MUST pass — the never-revert cases')}`);
371
+ console.log(` ${g('forge script script/Deploy.s.sol --rpc-url <rpc> --private-key <key> --broadcast')}`);
372
+ info('then wire the printed addresses into your drop:');
373
+ console.log(` ${g('abx deploy-code --image-renderer <MyRenderer> --attributes-renderer <MyTraits> --onchain-uri --schema palette:HexColor:TokenOwner --name "…" --symbol …')}`);
374
+ info(`full walkthrough: ${bold(`${basename(dir)}/README.md`)} · interface + invariants: https://abx.docs.artblocks.io/protocol/renderers/`);
375
+ }
376
+ /** Human label for each skills-parent dir — which agents pick the skill up from there. */
377
+ export const SKILL_PARENT_LABELS = {
378
+ '.claude/skills': 'Claude Code',
379
+ '.agents/skills': 'Cursor · Codex · Gemini · Copilot',
380
+ };
381
+ /** Resolve which skills-parent dirs `install` should write to. No `--agent` → the whole-ecosystem
382
+ * default (Claude Code + the neutral `.agents/skills` everyone else reads). `--agent a,b` narrows
383
+ * to those agents' dirs (de-duped, since several share `.agents/skills`). */
384
+ export function resolveInstallParents(agentFlag) {
385
+ if (!agentFlag || agentFlag === 'true')
386
+ return ['.claude/skills', '.agents/skills'];
387
+ const parents = new Set();
388
+ for (const raw of agentFlag.split(',')) {
389
+ const a = raw.trim().toLowerCase();
390
+ const parent = AGENT_SKILL_PARENTS[a];
391
+ if (!parent) {
392
+ throw new Error(`unknown --agent '${a}'. Use one of: ${Object.keys(AGENT_SKILL_PARENTS).join(', ')} (or omit --agent to install for every agent).`);
393
+ }
394
+ parents.add(parent);
395
+ }
396
+ return [...parents];
397
+ }
398
+ /** Copy the bundled skill folder to `dest`, replacing any prior copy so a re-install after an
399
+ * upgrade never leaves stale reference files behind.
400
+ *
401
+ * Returns `'already-canonical'` when destination IS the source, having done nothing. That case is
402
+ * not hypothetical: in a dev checkout of the abx repo `resolveBundledSkill()` resolves to the
403
+ * canonical `.claude/skills/abx-self-host`, which is exactly where a cwd-relative install writes —
404
+ * so the `rmSync` below would delete the canonical skill, and the copy would then have no source.
405
+ * A self-destructing install is a bad way to learn that. */
406
+ export function installSkillTo(src, dest) {
407
+ if (resolvePath(src) === resolvePath(dest))
408
+ return 'already-canonical';
409
+ mkdirSync(joinPath(dest, '..'), { recursive: true });
410
+ rmSync(dest, { recursive: true, force: true });
411
+ cpSync(src, dest, { recursive: true });
412
+ return 'installed';
413
+ }
414
+ /**
415
+ * Install the bundled skill into the default per-agent parents (or `~` with `global`), reporting
416
+ * each destination. Shared by `abx skill install` and `abx doctor`'s offer to fix a missing/stale
417
+ * skill — one implementation, so the two can't drift on where the skill lands or what it prints.
418
+ */
419
+ export function installSkillToDefaults(src, opts = {}) {
420
+ const version = readSkillVersion(joinPath(src, 'SKILL.md')) ?? readCliVersion();
421
+ const base = opts.global ? homedir() : process.cwd();
422
+ const parents = resolveInstallParents(opts.agent);
423
+ ok(`installed the abx skill v${version}${opts.global ? ' (global, ~)' : ''}:`);
424
+ for (const parent of parents) {
425
+ const dest = joinPath(base, parent, SKILL_DIR_NAME);
426
+ const outcome = installSkillTo(src, dest);
427
+ const label = SKILL_PARENT_LABELS[parent];
428
+ const note = outcome === 'already-canonical' ? dim(' (already the canonical copy — left as is)') : label ? dim(' → ' + label) : '';
429
+ console.log(` ${g(joinPath(parent, SKILL_DIR_NAME))}${note}`);
430
+ }
431
+ info('restart your agent so it loads the skill, then ask it to launch an NFT with abx.');
432
+ info(`the skill is version-locked to this CLI (v${version}); re-run ${g('abx skill install')} after upgrading so the two stay in sync.`);
433
+ return version;
434
+ }
435
+ /** The default skill destinations, as a display string — what doctor's prompt has to name up front. */
436
+ export function defaultSkillDests(opts = {}) {
437
+ const prefix = opts.global ? '~/' : './';
438
+ return resolveInstallParents(opts.agent).map((p) => `${prefix}${p}`).join(' and ');
439
+ }
440
+ export async function cmdSkill(rest, flags) {
441
+ const sub = rest[0] ?? 'install';
442
+ const src = resolveBundledSkill();
443
+ if (!src) {
444
+ throw new Error('bundled skill not found (expected <pkg>/skill or .claude/skills/abx-self-host). ' +
445
+ 'Reinstall @artblocks/abx-cli, or install cross-agent with: npx skills add ArtBlocks/abx --skill abx-self-host');
446
+ }
447
+ if (sub === 'path') {
448
+ console.log(src);
449
+ return;
450
+ }
451
+ if (sub === 'install') {
452
+ const version = readSkillVersion(joinPath(src, 'SKILL.md')) ?? readCliVersion();
453
+ // Escape hatch: --target <dir> writes the skill folder straight under <dir> (for an agent
454
+ // whose skills dir we don't special-case, or a bespoke location).
455
+ if (typeof flags.target === 'string' && flags.target !== 'true') {
456
+ const dest = joinPath(resolvePath(flags.target), SKILL_DIR_NAME);
457
+ if (installSkillTo(src, dest) === 'already-canonical') {
458
+ ok(`${dest} is already the canonical skill v${version} — nothing to install.`);
459
+ return;
460
+ }
461
+ ok(`installed the abx skill v${version} → ${dest}`);
462
+ info('restart your agent so it loads the skill, then ask it to launch an NFT with abx.');
463
+ return;
464
+ }
465
+ installSkillToDefaults(src, { global: flags.global !== undefined, agent: flags.agent });
466
+ return;
467
+ }
468
+ throw new Error('usage: abx skill <install|path> [--agent claude|cursor|codex|gemini|copilot] [--global] [--target <dir>]');
469
+ }
470
+ //# sourceMappingURL=scaffold.js.map