@artblocks/abx-cli 0.1.0-alpha.31 → 0.1.0-alpha.33
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 +196 -0
- package/dist/capabilities.d.ts +94 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +135 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +25 -29
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/scaffold.d.ts +9 -1
- package/dist/commands/scaffold.d.ts.map +1 -1
- package/dist/commands/scaffold.js +59 -12
- package/dist/commands/scaffold.js.map +1 -1
- package/dist/flag-allowlists.d.ts.map +1 -1
- package/dist/flag-allowlists.js +2 -1
- package/dist/flag-allowlists.js.map +1 -1
- package/dist/flags.d.ts +0 -4
- package/dist/flags.d.ts.map +1 -1
- package/dist/flags.js +0 -6
- package/dist/flags.js.map +1 -1
- package/dist/main.js +36 -20
- package/dist/main.js.map +1 -1
- package/dist/ownerops.d.ts +33 -26
- package/dist/ownerops.d.ts.map +1 -1
- package/dist/ownerops.js +85 -56
- package/dist/ownerops.js.map +1 -1
- package/dist/update-check.d.ts +6 -1
- package/dist/update-check.d.ts.map +1 -1
- package/dist/update-check.js +40 -17
- package/dist/update-check.js.map +1 -1
- package/package.json +6 -6
- package/skill/SKILL.md +164 -499
- package/skill/agents/openai.yaml +4 -0
- package/skill/reference/capabilities.md +187 -0
- package/skill/reference/code.md +210 -0
- package/skill/reference/creator-token.md +90 -95
- package/skill/reference/deploy.md +167 -0
- package/skill/reference/diagnose.md +165 -0
- package/skill/reference/hosting.md +144 -126
- package/skill/reference/operate.md +181 -0
- package/skill/reference/setup.md +105 -62
- package/skill/reference/code-projects.md +0 -368
- package/skill/reference/decisions.md +0 -174
- package/skill/reference/operating.md +0 -220
- package/skill/reference/troubleshooting.md +0 -65
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,201 @@
|
|
|
1
1
|
# @artblocks/abx-cli
|
|
2
2
|
|
|
3
|
+
## 0.1.0-alpha.33
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8f2f78a: Rename and globally refactor the shipped agent skill from `abx-self-host` to `abx` now that managed
|
|
8
|
+
remote hosting, no-host on-chain projects, deployment, and owner operations are all first-class
|
|
9
|
+
lanes. The installer archives recognized legacy skill copies outside the discovery tree before
|
|
10
|
+
installing the new name, preserving user customizations while preventing duplicate triggers. The
|
|
11
|
+
runtime `.abx-self-host/` data directory is unchanged. Scoped install help names the automatic
|
|
12
|
+
legacy archive behavior, and `doctor` prints every legacy copy path before recommending migration.
|
|
13
|
+
|
|
14
|
+
Replace the accumulated custody-first guide with a surfaces-first lifecycle covering collection
|
|
15
|
+
shape, runtime, metadata/image/animation/traits, custody, resolution, rendering, authority,
|
|
16
|
+
mutability, confirmation, verification, and state-driven recovery. The always-loaded router and
|
|
17
|
+
references are substantially smaller, contradictions are removed, and integrity tests now enforce
|
|
18
|
+
Agent Skills metadata limits, router size, reference navigation, known stale claims, and Codex UI
|
|
19
|
+
metadata.
|
|
20
|
+
|
|
21
|
+
Add `abx capabilities [--json]`, a typed product-boundary contract for native deployment lanes,
|
|
22
|
+
canonical extension seams, irreversible choices, and unsupported cases. CLI help and tests consume
|
|
23
|
+
the same contract, including the current EditionCode renderer/dependency support and static-edition
|
|
24
|
+
on-chain-image support. Root help now exposes `ABX_CHAIN`, and param-hook help matches the actual
|
|
25
|
+
SeriesCode/EditionCode contract surface.
|
|
26
|
+
|
|
27
|
+
Redact configured credential-bearing RPC URLs at the CLI's top-level error boundary so upstream
|
|
28
|
+
provider errors cannot echo API keys into terminal or agent transcripts.
|
|
29
|
+
|
|
30
|
+
### Patch Changes
|
|
31
|
+
|
|
32
|
+
- Updated dependencies [8f2f78a]
|
|
33
|
+
- @artblocks/abx-sdk@0.1.0-alpha.25
|
|
34
|
+
- @artblocks/abx-indexer@0.1.0-alpha.26
|
|
35
|
+
- @artblocks/abx-storage@0.1.0-alpha.25
|
|
36
|
+
- @artblocks/abx-token-api@0.1.0-alpha.28
|
|
37
|
+
|
|
38
|
+
## 0.1.0-alpha.32
|
|
39
|
+
|
|
40
|
+
### Patch Changes
|
|
41
|
+
|
|
42
|
+
- 61503c3: On-chain content: measure the RPC instead of guessing, and refuse no size.
|
|
43
|
+
|
|
44
|
+
`deploy --onchain-image`, `deploy-series --onchain-image` and `set-field --file` refused content past
|
|
45
|
+
**100 KB per token**. That threshold was reasoned from geth's 50M `--rpc.gascap` default minus a
|
|
46
|
+
margin, on the stated theory that "hosted providers commonly cap well below geth's default".
|
|
47
|
+
|
|
48
|
+
Measured 2026-08-24, with a state-override `eth_call` that reports the gas a node actually provisions:
|
|
49
|
+
|
|
50
|
+
| Endpoint | `eth_call` cap | Content it serves |
|
|
51
|
+
| ------------------------------------------------------------------ | --------------- | ----------------- |
|
|
52
|
+
| **`sepolia.base.org`** — the default endpoint of our default chain | **600,000,000** | **~729 KB** |
|
|
53
|
+
| `base-sepolia.publicnode.com` · `base-sepolia.drpc.org` | 50,000,000 | ~117 KB |
|
|
54
|
+
| `ethereum-sepolia.publicnode.com` | 50,000,000 | ~117 KB |
|
|
55
|
+
|
|
56
|
+
Providers do not commonly cap lower — **50M is the floor**, and the chain we ship as the default serves
|
|
57
|
+
twelve times that. So the refusal sat _below every endpoint that could be found_: it blocked content all
|
|
58
|
+
of them could read, and was 7x too strict on the default chain. A creator who wanted a 312 KB image
|
|
59
|
+
permanently on-chain was told no by a number about somebody else's infrastructure.
|
|
60
|
+
|
|
61
|
+
**There is now no refusal at any size**, and `--allow-unreadable-onchain` is gone with it (it existed
|
|
62
|
+
only to skip the refusal). In its place the toolkit states both costs and measures the one that varies:
|
|
63
|
+
|
|
64
|
+
- **Write** is chunked into 22,000-byte SSTORE2 transactions, so no block gas limit binds it at any
|
|
65
|
+
size. It is purely money at ~200 gas/byte, and the CLI now says so instead of implying a ceiling.
|
|
66
|
+
- **Read** is one `eth_call`, and whether it succeeds belongs to whoever's endpoint is asking. Below
|
|
67
|
+
~117 KB (~50M gas) every endpoint measured serves it, and the CLI prints a plain note. Above that it
|
|
68
|
+
probes the RPC you are actually on — no transaction, no key, one call — and reports its real
|
|
69
|
+
allowance beside the estimate.
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
⚠ big.png is 312KB on-chain — reading tokenURI costs ~172M gas, which is past the ~50M gas floor
|
|
73
|
+
that every endpoint serves.
|
|
74
|
+
Your RPC allows ~600M gas (sepolia.base.org), so it reads for you — up to ~729KB. A 50M-capped
|
|
75
|
+
provider stops at ~117KB, and marketplaces or indexers on one will see a REVERT rather than your
|
|
76
|
+
token. Writing is unaffected: ~64M gas, chunked, no block-limit issue. This is the
|
|
77
|
+
permanence-vs-reach trade — --backend arweave is the other side of it.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The distinction the output keeps making, because it is the one that matters: **your RPC is not the
|
|
81
|
+
marketplace's RPC.** A measured cap proves _you_ can read the token, never that OpenSea can. Past even
|
|
82
|
+
your own endpoint's cap the CLI says that plainly — and still does not stop you, because bytes someone
|
|
83
|
+
wants permanent are their call, not ours.
|
|
84
|
+
|
|
85
|
+
New in the SDK: `probeEthCallGasCap` / `probeBestEthCallGasCap` (in `probe.ts`, alongside the existing
|
|
86
|
+
getLogs capability probe that already argued this exact principle — measure the endpoint, don't trust a
|
|
87
|
+
table), `ETH_CALL_GAS_FLOOR`, and `readableBytesAtGas`. `classifyOnchainReadSize(bytesLen, capGas?)`
|
|
88
|
+
now returns `'ok' | 'endpoint-dependent' | 'beyond-local-rpc'` — none of them a refusal — and
|
|
89
|
+
`ONCHAIN_READ_REFUSE_BYTES` / `ONCHAIN_READ_GETH_CAP_BYTES` are removed.
|
|
90
|
+
|
|
91
|
+
An endpoint that rejects state overrides yields "unknown", which degrades to the conservative floor and
|
|
92
|
+
is tested to never throw and never block.
|
|
93
|
+
|
|
94
|
+
## Follow-up audit: the other hardcoded third-party assumptions
|
|
95
|
+
|
|
96
|
+
**Three different limits were being called "the gas limit", and they differ by orders of magnitude on
|
|
97
|
+
the same endpoint.** Measured 2026-08-24:
|
|
98
|
+
|
|
99
|
+
| | `eth_call` cap | `eth_estimateGas` cap | block `gasLimit` |
|
|
100
|
+
| --------------------------------- | ------------------------ | --------------------- | ------------------------ |
|
|
101
|
+
| Base Sepolia — `sepolia.base.org` | 600,000,000 | 16,777,216 | 1,200,000,000 |
|
|
102
|
+
| Base Sepolia — publicnode · drpc | 50,000,000 | 16,777,216 | 1,200,000,000 |
|
|
103
|
+
| Sepolia — publicnode | 50,000,000–2,000,000,000 | 16,777,216 | 60,000,000 |
|
|
104
|
+
| Base mainnet · Ethereum mainnet | — | — | 400,000,000 · 60,000,000 |
|
|
105
|
+
|
|
106
|
+
- **"L1 block limits sit in the mid-30-millions"** (SDK, docs) was stale in the direction that makes
|
|
107
|
+
on-chain look worse than it is. It is 60M on Ethereum and Sepolia, 400M on Base, and **1,200M on Base
|
|
108
|
+
Sepolia** — so the claim that _"past ~90 KB no contract can read the token inside a transaction"_ was
|
|
109
|
+
off by more than 12x on our own default chain, where the real figure is ~1,100 KB. Removed everywhere.
|
|
110
|
+
- **`DEFAULT_TX_GAS_BUDGET = 8M` was right for the wrong reason, and the wrong reason was dangerous.**
|
|
111
|
+
It said "comfortably under mainnet's ~30M block limit". The limit that actually binds is
|
|
112
|
+
`eth_estimateGas`, capped at **16,777,216 (2²⁴)** on every endpoint tried — every send estimates
|
|
113
|
+
first, so a batch planned above that fails before anything is sent. Anyone correcting the stale block
|
|
114
|
+
figure would have raised the budget and broken every deploy. The constant is unchanged; its rationale
|
|
115
|
+
now names the limit that holds it, and says not to raise it toward a block limit.
|
|
116
|
+
- **A measured cap is point-in-time, not a property.** Sepolia's publicnode endpoint measured 50M one
|
|
117
|
+
hour and 2,000M the next — pooled endpoints rotate between backends with different configs. The probe
|
|
118
|
+
and the output now say so.
|
|
119
|
+
- **The probe could not tell "capped at exactly my ask" from "not capped at all".** A node that returns
|
|
120
|
+
the full 2,000,000,000 it was asked for did not clamp; reporting that as a 2,000M cap invents a limit
|
|
121
|
+
out of our own request. It now returns `Infinity` and the CLI prints "no eth_call cap at all".
|
|
122
|
+
|
|
123
|
+
## And the reframe that makes the whole question smaller
|
|
124
|
+
|
|
125
|
+
A large read is a **serving** problem, not a preservation one — and the resolver already solves it.
|
|
126
|
+
`resolveFieldBytes` reads `inline` / `inline-gzip` / `reader` / `reader-gzip` with the resolver's own
|
|
127
|
+
RPC and serves the result as ordinary HTTP, so a marketplace fetches a URL and never makes the large
|
|
128
|
+
`eth_call`. `abx set-renderer <addr> --off` points `tokenURI` at it with every byte left where it is.
|
|
129
|
+
|
|
130
|
+
Every warning now says this, because it changes the decision: **storage and serving are separate.**
|
|
131
|
+
On-chain is the strongest storage answer available at any size; self-resolving-versus-a-resolver is a
|
|
132
|
+
serving choice the creator can change later. A token whose read is too large for some endpoint is not a
|
|
133
|
+
lost token — it is one that wants a reader in front of it.
|
|
134
|
+
|
|
135
|
+
And the framing that replaces the old false precision: **we can measure your RPC; we cannot know a
|
|
136
|
+
marketplace's or an indexer's**, and theirs are the ones that decide whether the token displays.
|
|
137
|
+
|
|
138
|
+
- 61503c3: Skill: stop agents declining capabilities ABX has, and teach the four extension seams up front.
|
|
139
|
+
|
|
140
|
+
Three field reports in one week share a shape — an agent told a creator "ABX can't do that" about
|
|
141
|
+
something ABX does:
|
|
142
|
+
|
|
143
|
+
- a **77 KB PNG fully on-chain** was called "not practical" and the creator was routed to another
|
|
144
|
+
protocol's on-chain filesystem. It ships today: the CLI warns once, ~16M gas to write and ~31M to
|
|
145
|
+
read. 100 KB is the refusal; 40 KB is only where reads stop being comfortable.
|
|
146
|
+
- a **transfer-restriction + mutable-state** mechanic was declared impossible, then built in an
|
|
147
|
+
afternoon once the creator said the word "hooks".
|
|
148
|
+
- a bespoke **non-canonical token contract** was written for a mechanic two stock hooks cover,
|
|
149
|
+
permanently forfeiting the `isAbxClone` provenance that is the reason to deploy here at all.
|
|
150
|
+
|
|
151
|
+
None of those agents lacked information. Each answered from the **command list**, and the command list
|
|
152
|
+
is a set of recommended routes, not the edge of the protocol — so falling off the end of a routing
|
|
153
|
+
table read as a "no". Another warning paragraph would not have helped; the skill already had one.
|
|
154
|
+
|
|
155
|
+
What changed, structurally:
|
|
156
|
+
|
|
157
|
+
- **A new `reference/capabilities.md`** — the inverse of the decision tree. It answers "can ABX do X?"
|
|
158
|
+
instead of "what do I run?": the four seams, the three hooks in depth, a mechanic→seam lookup table,
|
|
159
|
+
the on-chain size bands as _costs_ rather than walls, and a short, bounded **genuine no-list** — which
|
|
160
|
+
is what makes "don't say no" safe to follow.
|
|
161
|
+
- **A gate on the utterance, in Read first.** There is no CLI choke point for a wrong answer given in
|
|
162
|
+
chat, so the enforcement analogue is a rule that fires on the words themselves: before _not possible_,
|
|
163
|
+
_not practical_, _you'd need a different_, or the name of another protocol, check the seams and the
|
|
164
|
+
no-list. If it is on neither, it is possible — answer with the cost. And never route a creator to
|
|
165
|
+
another protocol for something ABX does.
|
|
166
|
+
- **The three hooks are taught as power, not just as liability.** Every prior mention sat in the
|
|
167
|
+
lock/disclosure register ("a standing power over whether a collector can sell"), and the **augment
|
|
168
|
+
hook did not appear in SKILL.md at all**. The honest claim is now stated where it is read: ABX runs
|
|
169
|
+
your arbitrary Solidity at write time (`--configure`, vetoes the write), transfer time (`--transfer`,
|
|
170
|
+
vetoes the move, sees mints and burns) and read time (`--augment`, adds and overrides `tokenData` keys
|
|
171
|
+
from anything a `view` can reach, for no gas on the token and no ~24 KB blob ceiling).
|
|
172
|
+
- **The deploy-time precondition is surfaced before the deploy.** Hooks exist only on
|
|
173
|
+
`SeriesCode`/`EditionCode`, the contract type is fixed forever, and that fact previously lived in one
|
|
174
|
+
parenthetical deep in a reference file. A creator who hints at _any_ rule should be deployed with
|
|
175
|
+
`deploy-code` even when the art is a static image — this is the mechanism that corners an agent into
|
|
176
|
+
writing a custom contract later.
|
|
177
|
+
- **"What this toolkit does NOT do" was itself teaching false impossibility.** It listed auctions and
|
|
178
|
+
allowlists next to mainnet. Now split: a genuine no-list, and a "not a flag, but here is the seam"
|
|
179
|
+
list. Auctions, allowlists, raffles, ERC-20 pricing, soulbinding, vesting, escrow, redemption and
|
|
180
|
+
oracle-fed metadata are all seams.
|
|
181
|
+
- **The skill `description` now routes capability questions here.** It listed only deploy/operate verbs,
|
|
182
|
+
so "can I make it soulbound?" or "can I run an auction?" never loaded the skill — the outermost
|
|
183
|
+
membrane was the first place the answer went wrong.
|
|
184
|
+
- **Size guidance reframed as a cost band** in all three places an agent meets it, with the 40–100 KB
|
|
185
|
+
band named as _warns once and ships_.
|
|
186
|
+
|
|
187
|
+
Also fixed, found while checking: **five dead links in `reference/decisions.md`** (sibling references
|
|
188
|
+
written as `reference/hosting.md` from inside `reference/`, resolving to `reference/reference/…`), and a
|
|
189
|
+
link from `reference/code-projects.md` into `docs/research/` that is dead for every installed user,
|
|
190
|
+
since `abx skill install` copies only the skill directory. A new `skill-integrity.test.ts` pins both —
|
|
191
|
+
every reference file is reachable from SKILL.md, and every relative link resolves.
|
|
192
|
+
|
|
193
|
+
- Updated dependencies [61503c3]
|
|
194
|
+
- @artblocks/abx-sdk@0.1.0-alpha.24
|
|
195
|
+
- @artblocks/abx-indexer@0.1.0-alpha.25
|
|
196
|
+
- @artblocks/abx-storage@0.1.0-alpha.24
|
|
197
|
+
- @artblocks/abx-token-api@0.1.0-alpha.27
|
|
198
|
+
|
|
3
199
|
## 0.1.0-alpha.31
|
|
4
200
|
|
|
5
201
|
### Patch Changes
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { Flags } from './flags.js';
|
|
2
|
+
/**
|
|
3
|
+
* The machine-readable ABX capability contract.
|
|
4
|
+
*
|
|
5
|
+
* Keep this deliberately smaller than command help: it records product boundaries and the
|
|
6
|
+
* supported combinations agents routinely get wrong. Command-specific syntax still belongs to
|
|
7
|
+
* `abx help <command>`, while deploy planning belongs to `<deploy-command> --dry-run --json`.
|
|
8
|
+
* Human help, the shipped skill, and tests consume this object instead of maintaining competing
|
|
9
|
+
* matrices in prose.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ABX_CAPABILITIES: {
|
|
12
|
+
readonly schemaVersion: 1;
|
|
13
|
+
readonly supportedChains: readonly string[];
|
|
14
|
+
readonly deploymentCommands: {
|
|
15
|
+
readonly deploy: {
|
|
16
|
+
readonly artifact: "one static work";
|
|
17
|
+
readonly unique: {
|
|
18
|
+
readonly contract: "OneOfOneImage (ERC-721)";
|
|
19
|
+
readonly inputs: readonly ["--image"];
|
|
20
|
+
};
|
|
21
|
+
readonly edition: {
|
|
22
|
+
readonly contract: "OneOfOneEdition (ERC-1155)";
|
|
23
|
+
readonly selector: "--copies <n|open>";
|
|
24
|
+
readonly summary: "one work × copies; supports on-chain bytes, on-chain JSON with external media, or a resolver";
|
|
25
|
+
readonly supported: readonly ["--onchain-image (hot or wallet signing)", "--onchain-uri", "--backend", "--public-base-url"];
|
|
26
|
+
readonly unsupported: readonly ["--onchain-image with --unsigned"];
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
readonly deploySeries: {
|
|
30
|
+
readonly artifact: "a folder of distinct static works";
|
|
31
|
+
readonly unique: {
|
|
32
|
+
readonly contract: "SeriesImage (ERC-721)";
|
|
33
|
+
readonly inputs: readonly ["--dir"];
|
|
34
|
+
};
|
|
35
|
+
readonly edition: {
|
|
36
|
+
readonly contract: "EditionImage (ERC-1155)";
|
|
37
|
+
readonly selector: "--copies <n|open>";
|
|
38
|
+
readonly summary: "N folder items × copies per id; supports on-chain bytes, on-chain JSON with external media, or a resolver";
|
|
39
|
+
readonly supported: readonly ["--onchain-image (hot or wallet signing)", "--onchain-uri", "--backend", "--public-base-url"];
|
|
40
|
+
readonly unsupported: readonly ["--onchain-image with --unsigned"];
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
readonly deployCode: {
|
|
44
|
+
readonly artifact: "a program or field renderer whose output depends on token state";
|
|
45
|
+
readonly unique: {
|
|
46
|
+
readonly contract: "SeriesCode (ERC-721)";
|
|
47
|
+
readonly inputs: readonly ["--script", "--code-dir", "--image-renderer", "--attributes-renderer"];
|
|
48
|
+
};
|
|
49
|
+
readonly edition: {
|
|
50
|
+
readonly contract: "EditionCode (ERC-1155)";
|
|
51
|
+
readonly selector: "--copies <n|open>";
|
|
52
|
+
readonly summary: "N generated ids × copies per id; supports scripts, dependencies, and Solidity image/trait renderers";
|
|
53
|
+
readonly supported: readonly ["--script", "--dep", "--dep-registry", "--image-renderer", "--attributes-renderer", "--onchain-uri", "--public-base-url"];
|
|
54
|
+
readonly unsupported: readonly ["--code-dir", "--image-base", "--resume", "--no-delegation"];
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
readonly extensionRoutes: readonly [{
|
|
59
|
+
readonly route: "custom minter";
|
|
60
|
+
readonly command: "abx set-minter";
|
|
61
|
+
readonly availableOn: "Series and editions";
|
|
62
|
+
readonly useFor: readonly ["auctions", "allowlists", "raffles", "free claims", "ERC-20 pricing"];
|
|
63
|
+
}, {
|
|
64
|
+
readonly route: "configure hook";
|
|
65
|
+
readonly command: "abx set-param-hooks --configure";
|
|
66
|
+
readonly availableOn: "SeriesCode and EditionCode";
|
|
67
|
+
readonly useFor: readonly ["validated writes", "monotonic values", "structured collector input"];
|
|
68
|
+
}, {
|
|
69
|
+
readonly route: "transfer hook";
|
|
70
|
+
readonly command: "abx set-param-hooks --transfer";
|
|
71
|
+
readonly availableOn: "SeriesCode and EditionCode";
|
|
72
|
+
readonly useFor: readonly ["transfer restrictions", "soulbinding", "vesting", "redemption", "escrow"];
|
|
73
|
+
}, {
|
|
74
|
+
readonly route: "augment hook";
|
|
75
|
+
readonly command: "abx set-param-hooks --augment";
|
|
76
|
+
readonly availableOn: "SeriesCode and EditionCode";
|
|
77
|
+
readonly useFor: readonly ["live derived data", "oracle-fed state", "read-time metadata"];
|
|
78
|
+
}, {
|
|
79
|
+
readonly route: "field renderer";
|
|
80
|
+
readonly command: "abx deploy-code --image-renderer/--attributes-renderer";
|
|
81
|
+
readonly availableOn: "SeriesCode and EditionCode";
|
|
82
|
+
readonly useFor: readonly ["on-chain SVG images", "on-chain computed traits"];
|
|
83
|
+
}];
|
|
84
|
+
readonly deployTimeChoices: readonly ["contract shape and token standard (--copies)", "code-capable versus static contract type", "burnability (--burnable)", "ERC-721C/ERC-1155C enrollment (--721c)"];
|
|
85
|
+
readonly unsupportedToday: readonly ["mainnet deployment through the toolkit", "unsupported chains", "secondary-market listings or an order book", "compiling or deploying custom Solidity through abx", "replacing a deployed code project script through the CLI", "retrofitting a deploy-time choice on an existing collection"];
|
|
86
|
+
readonly interpretation: {
|
|
87
|
+
readonly native: "A documented command/flag combination performs the request directly.";
|
|
88
|
+
readonly extension: "A canonical extension seam performs it while the token remains a factory clone.";
|
|
89
|
+
readonly unsupported: "The request is listed under unsupportedToday or is blocked by an irreversible choice already made.";
|
|
90
|
+
readonly unknown: "Do not infer support from absence. Inspect command help, contract type, and this contract; report uncertainty if no route is proven.";
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
export declare function cmdCapabilities(flags: Flags): void;
|
|
94
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAEtC;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmGnB,CAAC;AAEX,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAyBlD"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { KNOWN_CHAIN_KEYS } from '@artblocks/abx-sdk';
|
|
2
|
+
/**
|
|
3
|
+
* The machine-readable ABX capability contract.
|
|
4
|
+
*
|
|
5
|
+
* Keep this deliberately smaller than command help: it records product boundaries and the
|
|
6
|
+
* supported combinations agents routinely get wrong. Command-specific syntax still belongs to
|
|
7
|
+
* `abx help <command>`, while deploy planning belongs to `<deploy-command> --dry-run --json`.
|
|
8
|
+
* Human help, the shipped skill, and tests consume this object instead of maintaining competing
|
|
9
|
+
* matrices in prose.
|
|
10
|
+
*/
|
|
11
|
+
export const ABX_CAPABILITIES = {
|
|
12
|
+
schemaVersion: 1,
|
|
13
|
+
supportedChains: [...KNOWN_CHAIN_KEYS],
|
|
14
|
+
deploymentCommands: {
|
|
15
|
+
deploy: {
|
|
16
|
+
artifact: 'one static work',
|
|
17
|
+
unique: {
|
|
18
|
+
contract: 'OneOfOneImage (ERC-721)',
|
|
19
|
+
inputs: ['--image'],
|
|
20
|
+
},
|
|
21
|
+
edition: {
|
|
22
|
+
contract: 'OneOfOneEdition (ERC-1155)',
|
|
23
|
+
selector: '--copies <n|open>',
|
|
24
|
+
summary: 'one work × copies; supports on-chain bytes, on-chain JSON with external media, or a resolver',
|
|
25
|
+
supported: ['--onchain-image (hot or wallet signing)', '--onchain-uri', '--backend', '--public-base-url'],
|
|
26
|
+
unsupported: ['--onchain-image with --unsigned'],
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
deploySeries: {
|
|
30
|
+
artifact: 'a folder of distinct static works',
|
|
31
|
+
unique: {
|
|
32
|
+
contract: 'SeriesImage (ERC-721)',
|
|
33
|
+
inputs: ['--dir'],
|
|
34
|
+
},
|
|
35
|
+
edition: {
|
|
36
|
+
contract: 'EditionImage (ERC-1155)',
|
|
37
|
+
selector: '--copies <n|open>',
|
|
38
|
+
summary: 'N folder items × copies per id; supports on-chain bytes, on-chain JSON with external media, or a resolver',
|
|
39
|
+
supported: ['--onchain-image (hot or wallet signing)', '--onchain-uri', '--backend', '--public-base-url'],
|
|
40
|
+
unsupported: ['--onchain-image with --unsigned'],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
deployCode: {
|
|
44
|
+
artifact: 'a program or field renderer whose output depends on token state',
|
|
45
|
+
unique: {
|
|
46
|
+
contract: 'SeriesCode (ERC-721)',
|
|
47
|
+
inputs: ['--script', '--code-dir', '--image-renderer', '--attributes-renderer'],
|
|
48
|
+
},
|
|
49
|
+
edition: {
|
|
50
|
+
contract: 'EditionCode (ERC-1155)',
|
|
51
|
+
selector: '--copies <n|open>',
|
|
52
|
+
summary: 'N generated ids × copies per id; supports scripts, dependencies, and Solidity image/trait renderers',
|
|
53
|
+
supported: ['--script', '--dep', '--dep-registry', '--image-renderer', '--attributes-renderer', '--onchain-uri', '--public-base-url'],
|
|
54
|
+
unsupported: ['--code-dir', '--image-base', '--resume', '--no-delegation'],
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
extensionRoutes: [
|
|
59
|
+
{
|
|
60
|
+
route: 'custom minter',
|
|
61
|
+
command: 'abx set-minter',
|
|
62
|
+
availableOn: 'Series and editions',
|
|
63
|
+
useFor: ['auctions', 'allowlists', 'raffles', 'free claims', 'ERC-20 pricing'],
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
route: 'configure hook',
|
|
67
|
+
command: 'abx set-param-hooks --configure',
|
|
68
|
+
availableOn: 'SeriesCode and EditionCode',
|
|
69
|
+
useFor: ['validated writes', 'monotonic values', 'structured collector input'],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
route: 'transfer hook',
|
|
73
|
+
command: 'abx set-param-hooks --transfer',
|
|
74
|
+
availableOn: 'SeriesCode and EditionCode',
|
|
75
|
+
useFor: ['transfer restrictions', 'soulbinding', 'vesting', 'redemption', 'escrow'],
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
route: 'augment hook',
|
|
79
|
+
command: 'abx set-param-hooks --augment',
|
|
80
|
+
availableOn: 'SeriesCode and EditionCode',
|
|
81
|
+
useFor: ['live derived data', 'oracle-fed state', 'read-time metadata'],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
route: 'field renderer',
|
|
85
|
+
command: 'abx deploy-code --image-renderer/--attributes-renderer',
|
|
86
|
+
availableOn: 'SeriesCode and EditionCode',
|
|
87
|
+
useFor: ['on-chain SVG images', 'on-chain computed traits'],
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
deployTimeChoices: [
|
|
91
|
+
'contract shape and token standard (--copies)',
|
|
92
|
+
'code-capable versus static contract type',
|
|
93
|
+
'burnability (--burnable)',
|
|
94
|
+
'ERC-721C/ERC-1155C enrollment (--721c)',
|
|
95
|
+
],
|
|
96
|
+
unsupportedToday: [
|
|
97
|
+
'mainnet deployment through the toolkit',
|
|
98
|
+
'unsupported chains',
|
|
99
|
+
'secondary-market listings or an order book',
|
|
100
|
+
'compiling or deploying custom Solidity through abx',
|
|
101
|
+
'replacing a deployed code project script through the CLI',
|
|
102
|
+
'retrofitting a deploy-time choice on an existing collection',
|
|
103
|
+
],
|
|
104
|
+
interpretation: {
|
|
105
|
+
native: 'A documented command/flag combination performs the request directly.',
|
|
106
|
+
extension: 'A canonical extension seam performs it while the token remains a factory clone.',
|
|
107
|
+
unsupported: 'The request is listed under unsupportedToday or is blocked by an irreversible choice already made.',
|
|
108
|
+
unknown: 'Do not infer support from absence. Inspect command help, contract type, and this contract; report uncertainty if no route is proven.',
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
export function cmdCapabilities(flags) {
|
|
112
|
+
if (flags.json !== undefined) {
|
|
113
|
+
console.log(JSON.stringify(ABX_CAPABILITIES, null, 2));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
console.log('ABX capability contract v1\n');
|
|
117
|
+
console.log('Native deployment lanes:');
|
|
118
|
+
for (const [name, lane] of Object.entries(ABX_CAPABILITIES.deploymentCommands)) {
|
|
119
|
+
console.log(` ${name}: ${lane.artifact}`);
|
|
120
|
+
console.log(` unique ${lane.unique.contract} — ${lane.unique.inputs.join(' | ')}`);
|
|
121
|
+
console.log(` edition ${lane.edition.contract} — ${lane.edition.summary}`);
|
|
122
|
+
if (lane.edition.unsupported.length)
|
|
123
|
+
console.log(` limits ${lane.edition.unsupported.join(' · ')}`);
|
|
124
|
+
}
|
|
125
|
+
console.log('\nCanonical extension routes:');
|
|
126
|
+
for (const seam of ABX_CAPABILITIES.extensionRoutes) {
|
|
127
|
+
console.log(` ${seam.route}: ${seam.availableOn} — ${seam.useFor.join(', ')}`);
|
|
128
|
+
}
|
|
129
|
+
console.log('\nUnsupported today:');
|
|
130
|
+
for (const item of ABX_CAPABILITIES.unsupportedToday)
|
|
131
|
+
console.log(` - ${item}`);
|
|
132
|
+
console.log('\nUse `abx capabilities --json` for the stable machine-readable form,');
|
|
133
|
+
console.log('`abx help <command>` for current flags, and `<deploy-command> --dry-run --json` for a concrete plan.');
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,KAAK,OAAO,EAMZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,YAAY,EAKjB,KAAK,qBAAqB,EAmD3B,MAAM,oBAAoB,CAAC;AAY5B,OAAO,EAAC,KAAK,GAAG,EAAqD,MAAM,MAAM,CAAC;AAClF,OAAO,EAGL,KAAK,gBAAgB,EAmBtB,MAAM,cAAc,CAAC;AAEtB,OAAO,
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,KAAK,OAAO,EAMZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,YAAY,EAKjB,KAAK,qBAAqB,EAmD3B,MAAM,oBAAoB,CAAC;AAY5B,OAAO,EAAC,KAAK,GAAG,EAAqD,MAAM,MAAM,CAAC;AAClF,OAAO,EAGL,KAAK,gBAAgB,EAmBtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAC,KAAK,KAAK,EAA8E,MAAM,aAAa,CAAC;AAgEpH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAC,CAGzE,CAAC;AACF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAQD;;;gEAGgE;AAChE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQ3D;AAED;;;0CAG0C;AAC1C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;oFACoF;AACpF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGzE;AAED;;;;;GAKG;AACH;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAShH;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAC,GAAG,IAAI,CASzG;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAWxD;AAID,wBAAsB,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9F;AAUD,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAkBpE;AAKD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAkB1E;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBxE;AAOD,eAAO,MAAM,gBAAgB,GAAI,OAAO,GAAG,KAAG,iBAI5C,CAAC;AAEH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,iBAO9C,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,iBAI1C,CAAC;AAEH;sFACsF;AACtF,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,iBAIvD,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,MAAM,GAAG,SAAS,EAC3B,WAAW,MAAM,KAChB,iBAID,CAAC;AA6DH,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,KAAG,OAAsC,CAAC;AAEhF;;;;;;;;GAQG;AACH;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAGvF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAY/E;AAED;mGACmG;AACnG,MAAM,MAAM,eAAe,GAAG;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAC,CAAC;AAExG,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,gBAAgB,EAC3B,KAAK,UAAO,EAAE,gEAAgE;AAC9E,OAAO,UAAQ,EAAE,gFAAgF;AACjG,SAAS,CAAC,EAAE,eAAe,EAAE,wEAAwE;AACrG,UAAU,CAAC,EAAE,MAAM,EAAE,uFAAuF;AAC5G,YAAY,GAAE,KAAU,GACvB,OAAO,CAAC;IAAC,WAAW,EAAE,iBAAiB,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAC,CAAC,CAkGlE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB,EAAE,CAQlE;AAED,6GAA6G;AAC7G,eAAO,MAAM,qBAAqB,GAAI,OAAO,gBAAgB,EAAE,KAAG,iBAIhE,CAAC;AAEH;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAY/D;AAED;oEACoE;AACpE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAGtG;AAED;kGACkG;AAClG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAExD;AAED,kGAAkG;AAClG,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAInF;AAGD,wBAAsB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,iBAiBhE;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,iBAyoBhH;AAiBD,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAgX1H;AAgBD,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,EAAE,GAAG,iBAAiB,KAAG,qBAKnE,CAAC;AAEH,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,iBAMjD;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,iBA2jBjG;AAcD,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA+cvH;AAkED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAgB7D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAmB1D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxH;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDlH;AAED;iGACiG;AACjG,eAAO,MAAM,iBAAiB,aAmB5B,CAAC;AAGH,eAAO,MAAM,mBAAmB,UAiB/B,CAAC;AAEF,eAAO,MAAM,YAAY,aAKvB,CAAC;AAEH,eAAO,MAAM,mBAAmB,aAM9B,CAAC;AASH,eAAO,MAAM,oBAAoB,aAAqG,CAAC;AACvI,eAAO,MAAM,2BAA2B,aAAqE,CAAC;AAE9G,wBAAsB,aAAa,CAAC,KAAK,EAAE,KAAK,iBAiB/C;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,iBAioC/F;AAiBD,eAAO,MAAM,yBAAyB,aAkBpC,CAAC;AAEH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ctH;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,OAAO,EACf,QAAQ,GAAE,MAAM,GAAG,OAAgB,GAClC,OAAO,CAAC,OAAO,CAAC,CAmClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAoDlB"}
|