@artblocks/abx-cli 0.1.0-alpha.20 → 0.1.0-alpha.22

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 (82) hide show
  1. package/CHANGELOG.md +1081 -0
  2. package/assets/renderer-scaffold/README.md +2 -2
  3. package/assets/renderer-scaffold/src/MyRenderer.sol +2 -2
  4. package/assets/renderer-scaffold/src/interfaces/IAbxFieldRenderer.sol +1 -1
  5. package/assets/renderer-scaffold/src/interfaces/IAbxParams.sol +2 -2
  6. package/assets/renderer-scaffold/test/MyRenderer.t.sol +1 -1
  7. package/dist/commands/deploy.d.ts +30 -17
  8. package/dist/commands/deploy.d.ts.map +1 -1
  9. package/dist/commands/deploy.js +523 -117
  10. package/dist/commands/deploy.js.map +1 -1
  11. package/dist/commands/project.d.ts +16 -0
  12. package/dist/commands/project.d.ts.map +1 -1
  13. package/dist/commands/project.js +171 -15
  14. package/dist/commands/project.js.map +1 -1
  15. package/dist/commands/reads.d.ts.map +1 -1
  16. package/dist/commands/reads.js +35 -5
  17. package/dist/commands/reads.js.map +1 -1
  18. package/dist/commands/scaffold.d.ts +3 -1
  19. package/dist/commands/scaffold.d.ts.map +1 -1
  20. package/dist/commands/scaffold.js +81 -29
  21. package/dist/commands/scaffold.js.map +1 -1
  22. package/dist/commands/service.js +1 -1
  23. package/dist/commands/service.js.map +1 -1
  24. package/dist/commands/storage.d.ts.map +1 -1
  25. package/dist/commands/storage.js +11 -3
  26. package/dist/commands/storage.js.map +1 -1
  27. package/dist/commands/submit-app.d.ts +58 -0
  28. package/dist/commands/submit-app.d.ts.map +1 -0
  29. package/dist/commands/submit-app.js +512 -0
  30. package/dist/commands/submit-app.js.map +1 -0
  31. package/dist/config.d.ts +1 -15
  32. package/dist/config.d.ts.map +1 -1
  33. package/dist/config.js +18 -1
  34. package/dist/config.js.map +1 -1
  35. package/dist/flag-allowlists.d.ts +53 -0
  36. package/dist/flag-allowlists.d.ts.map +1 -0
  37. package/dist/flag-allowlists.js +152 -0
  38. package/dist/flag-allowlists.js.map +1 -0
  39. package/dist/flags.d.ts +6 -2
  40. package/dist/flags.d.ts.map +1 -1
  41. package/dist/flags.js +23 -0
  42. package/dist/flags.js.map +1 -1
  43. package/dist/kind.d.ts +8 -3
  44. package/dist/kind.d.ts.map +1 -1
  45. package/dist/kind.js +25 -0
  46. package/dist/kind.js.map +1 -1
  47. package/dist/main.js +166 -53
  48. package/dist/main.js.map +1 -1
  49. package/dist/mintpage.d.ts.map +1 -1
  50. package/dist/mintpage.js +29 -4
  51. package/dist/mintpage.js.map +1 -1
  52. package/dist/output.d.ts +32 -1
  53. package/dist/output.d.ts.map +1 -1
  54. package/dist/output.js +74 -9
  55. package/dist/output.js.map +1 -1
  56. package/dist/ownerops.d.ts +101 -13
  57. package/dist/ownerops.d.ts.map +1 -1
  58. package/dist/ownerops.js +421 -71
  59. package/dist/ownerops.js.map +1 -1
  60. package/dist/preview.d.ts +1 -1
  61. package/dist/preview.js +1 -1
  62. package/dist/remote.d.ts.map +1 -1
  63. package/dist/remote.js +8 -2
  64. package/dist/remote.js.map +1 -1
  65. package/dist/schema.d.ts +18 -0
  66. package/dist/schema.d.ts.map +1 -1
  67. package/dist/schema.js +37 -2
  68. package/dist/schema.js.map +1 -1
  69. package/dist/served.js +1 -1
  70. package/dist/update-check.d.ts +25 -0
  71. package/dist/update-check.d.ts.map +1 -1
  72. package/dist/update-check.js +49 -9
  73. package/dist/update-check.js.map +1 -1
  74. package/package.json +6 -6
  75. package/skill/SKILL.md +64 -32
  76. package/skill/reference/code-projects.md +98 -22
  77. package/skill/reference/creator-token.md +16 -3
  78. package/skill/reference/decisions.md +83 -11
  79. package/skill/reference/hosting.md +1 -1
  80. package/skill/reference/operating.md +35 -12
  81. package/skill/reference/setup.md +1 -1
  82. package/skill/reference/troubleshooting.md +16 -6
@@ -0,0 +1,58 @@
1
+ /**
2
+ * `abx submit-app` — optional post-deploy listing in the ABX App Store.
3
+ *
4
+ * Not part of deploy. A creator (or the agent driving them) opts in after the
5
+ * collection exists: mint one entry token through the store's gated minter, then
6
+ * write catalog copy as the registry's TokenOwner params. Same transactions as
7
+ * the store's `/submit` page; the CLI is the agent path.
8
+ *
9
+ * Catalog copy is NOT the collection's `--name` / `--description`. Those are NFT
10
+ * metadata. The store wants outcome copy — what someone can do — and this command
11
+ * requires those fields on purpose so an agent cannot silently reuse deploy flags.
12
+ */
13
+ import { type Address, type PreparedTx } from '@artblocks/abx-sdk';
14
+ import { type Flags } from '../flags.js';
15
+ /** Matches the App Store registry schema (`lib/submissions.ts` in abx-app-store). */
16
+ export declare const APP_CATEGORIES: readonly ["Create", "Games", "Physical world", "Records", "Coordination", "Utilities", "Developer tools"];
17
+ export declare const APP_STAGES: readonly ["Live", "Prototype", "Concept"];
18
+ export declare const APP_TONES: readonly ["acid", "coral", "blue", "violet", "amber", "mint"];
19
+ export declare const APP_RELATIONSHIP = "built-on-abx";
20
+ declare const PARAM_KEYS: readonly ["name", "summary", "description", "url", "urlLabel", "image", "mark", "tone", "category", "relationships", "stage", "tags"];
21
+ type ParamKey = (typeof PARAM_KEYS)[number];
22
+ /** Sequencer/RPC per-tx gas cap. A full param dump in one multicall exceeds it. */
23
+ export declare const MAX_CALLS_PER_TX = 3;
24
+ export type SubmitAppEntry = {
25
+ name: string;
26
+ summary: string;
27
+ description: string;
28
+ url: string;
29
+ urlLabel: string;
30
+ image: string;
31
+ mark: string;
32
+ tone: (typeof APP_TONES)[number];
33
+ category: (typeof APP_CATEGORIES)[number];
34
+ stage: (typeof APP_STAGES)[number];
35
+ tags: string[];
36
+ };
37
+ export type AppStoreAddresses = {
38
+ registry: Address;
39
+ minter: Address;
40
+ };
41
+ /**
42
+ * Catalog copy from flags. Requires name / summary / description so deploy identity
43
+ * cannot silently become the listing.
44
+ */
45
+ export declare function parseSubmitAppEntry(flags: Flags): SubmitAppEntry;
46
+ export declare function paramValues(entry: SubmitAppEntry): Record<ParamKey, string>;
47
+ export declare function resolveAppStoreAddresses(chainKey: string, flags?: Flags, env?: NodeJS.ProcessEnv): AppStoreAddresses;
48
+ export declare function chunkItems<T>(items: T[], size?: number): T[][];
49
+ export declare function buildParamOps(args: {
50
+ registry: Address;
51
+ tokenId: bigint;
52
+ entry: SubmitAppEntry;
53
+ chainId: number;
54
+ }): PreparedTx[];
55
+ export declare function batchParamOps(ops: PreparedTx[]): PreparedTx[];
56
+ export declare function cmdSubmitApp(address: string | undefined, flags: Flags): Promise<void>;
57
+ export {};
58
+ //# sourceMappingURL=submit-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit-app.d.ts","sourceRoot":"","sources":["../../src/commands/submit-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAOL,KAAK,OAAO,EAEZ,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAC,KAAK,KAAK,EAAW,MAAM,aAAa,CAAC;AAWjD,qFAAqF;AACrF,eAAO,MAAM,cAAc,2GAQjB,CAAC;AAEX,eAAO,MAAM,UAAU,2CAA4C,CAAC;AACpE,eAAO,MAAM,SAAS,+DAAgE,CAAC;AACvF,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,QAAA,MAAM,UAAU,uIAaN,CAAC;AAEX,KAAK,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5C,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAgElC,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAC,CAAC;AA4DrE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAchE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAe3E;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,KAAU,EACjB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,CAenB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,SAAmB,GAAG,CAAC,EAAE,EAAE,CAKxE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,UAAU,EAAE,CA+Bf;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAQ7D;AA2CD,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CA6O3F"}
@@ -0,0 +1,512 @@
1
+ /**
2
+ * `abx submit-app` — optional post-deploy listing in the ABX App Store.
3
+ *
4
+ * Not part of deploy. A creator (or the agent driving them) opts in after the
5
+ * collection exists: mint one entry token through the store's gated minter, then
6
+ * write catalog copy as the registry's TokenOwner params. Same transactions as
7
+ * the store's `/submit` page; the CLI is the agent path.
8
+ *
9
+ * Catalog copy is NOT the collection's `--name` / `--description`. Those are NFT
10
+ * metadata. The store wants outcome copy — what someone can do — and this command
11
+ * requires those fields on purpose so an agent cannot silently reuse deploy flags.
12
+ */
13
+ import { assertChainId, encodeScalarParam, makePublicClient, prepareConfigureTokenParam, prepareConfigureTokenParamData, prepareMulticall, } from '@artblocks/abx-sdk';
14
+ import { encodeFunctionData, getAddress, isAddress, parseEventLogs, toHex } from 'viem';
15
+ import { CHAIN, chainId, explorerBase } from '../config.js';
16
+ import { CliError } from '../errors.js';
17
+ import { isDryRun } from '../flags.js';
18
+ import { withJson } from '../jsonout.js';
19
+ import { bold, dim, g, ok } from '../output.js';
20
+ import { confirmSend, laneFromFlags } from '../riskgate.js';
21
+ import { openWalletSession, signHotSequence, signTx, } from '../signer.js';
22
+ /** Matches the App Store registry schema (`lib/submissions.ts` in abx-app-store). */
23
+ export const APP_CATEGORIES = [
24
+ 'Create',
25
+ 'Games',
26
+ 'Physical world',
27
+ 'Records',
28
+ 'Coordination',
29
+ 'Utilities',
30
+ 'Developer tools',
31
+ ];
32
+ export const APP_STAGES = ['Live', 'Prototype', 'Concept'];
33
+ export const APP_TONES = ['acid', 'coral', 'blue', 'violet', 'amber', 'mint'];
34
+ export const APP_RELATIONSHIP = 'built-on-abx';
35
+ const PARAM_KEYS = [
36
+ 'name',
37
+ 'summary',
38
+ 'description',
39
+ 'url',
40
+ 'urlLabel',
41
+ 'image',
42
+ 'mark',
43
+ 'tone',
44
+ 'category',
45
+ 'relationships',
46
+ 'stage',
47
+ 'tags',
48
+ ];
49
+ /** Sequencer/RPC per-tx gas cap. A full param dump in one multicall exceeds it. */
50
+ export const MAX_CALLS_PER_TX = 3;
51
+ const MINTER_ABI = [
52
+ {
53
+ type: 'function',
54
+ name: 'submit',
55
+ stateMutability: 'nonpayable',
56
+ inputs: [{ name: 'collection', type: 'address' }],
57
+ outputs: [{ name: 'tokenId', type: 'uint256' }],
58
+ },
59
+ {
60
+ type: 'function',
61
+ name: 'claimed',
62
+ stateMutability: 'view',
63
+ inputs: [{ name: 'collection', type: 'address' }],
64
+ outputs: [{ name: '', type: 'bool' }],
65
+ },
66
+ {
67
+ type: 'function',
68
+ name: 'entryOf',
69
+ stateMutability: 'view',
70
+ inputs: [{ name: 'collection', type: 'address' }],
71
+ outputs: [{ name: '', type: 'uint256' }],
72
+ },
73
+ {
74
+ type: 'event',
75
+ name: 'EntrySubmitted',
76
+ inputs: [
77
+ { name: 'collection', type: 'address', indexed: true },
78
+ { name: 'tokenId', type: 'uint256', indexed: true },
79
+ { name: 'owner', type: 'address', indexed: true },
80
+ ],
81
+ },
82
+ ];
83
+ const OWNER_ABI = [
84
+ {
85
+ type: 'function',
86
+ name: 'owner',
87
+ stateMutability: 'view',
88
+ inputs: [],
89
+ outputs: [{ name: '', type: 'address' }],
90
+ },
91
+ {
92
+ type: 'function',
93
+ name: 'ownerOf',
94
+ stateMutability: 'view',
95
+ inputs: [{ name: 'tokenId', type: 'uint256' }],
96
+ outputs: [{ name: '', type: 'address' }],
97
+ },
98
+ ];
99
+ /**
100
+ * Shipped App Store registry + gated minter, per chain. Override with
101
+ * `--registry` / `--minter` or `ABX_APP_STORE_REGISTRY` / `ABX_APP_STORE_MINTER`.
102
+ * A chain with no row is not an error until someone runs this command there.
103
+ */
104
+ const APP_STORE = {
105
+ 'base-sepolia': {
106
+ registry: '0xBD0D5eE35075E62d970467771775c630B9FB87fa',
107
+ minter: '0xBC0aD16F6501424f7028260a5A396b41aa6d9046',
108
+ },
109
+ };
110
+ const USAGE = 'abx submit-app <collection> --name <s> --summary "<s>" --description "<s>" [--mark A/] [--tone acid] [--category Create] [--stage Prototype] [--url https://…] [--url-label "Open app"] [--image https://…] [--tags a,b] [--registry 0x…] [--minter 0x…] [--sign|--unsigned|--dry-run]';
111
+ function requireFlag(flags, name) {
112
+ const v = flags[name];
113
+ if (!v || v === 'true') {
114
+ throw new Error(`missing --${name}\nusage: ${USAGE}`);
115
+ }
116
+ return v;
117
+ }
118
+ function optionalFlag(flags, name) {
119
+ const v = flags[name];
120
+ if (!v || v === 'true')
121
+ return '';
122
+ return v;
123
+ }
124
+ function oneOf(value, options, flag) {
125
+ if (options.includes(value))
126
+ return value;
127
+ throw new Error(`--${flag} must be one of ${options.join(' | ')} (got "${value}").`);
128
+ }
129
+ function requireHttps(value, flag) {
130
+ if (!value)
131
+ return '';
132
+ let url;
133
+ try {
134
+ url = new URL(value);
135
+ }
136
+ catch {
137
+ throw new Error(`--${flag} must be an HTTPS URL.`);
138
+ }
139
+ if (url.protocol !== 'https:')
140
+ throw new Error(`--${flag} must be an HTTPS URL.`);
141
+ return value.trim();
142
+ }
143
+ function parseTags(raw) {
144
+ if (!raw)
145
+ return [];
146
+ const tags = raw
147
+ .split(/[,\n]/)
148
+ .map((t) => t.trim())
149
+ .filter(Boolean);
150
+ if (tags.length > 12)
151
+ throw new Error('--tags accepts at most 12 tags.');
152
+ const seen = new Set();
153
+ for (const tag of tags) {
154
+ if (tag.length > 60)
155
+ throw new Error(`tag "${tag}" is longer than 60 characters.`);
156
+ const key = tag.toLowerCase();
157
+ if (seen.has(key))
158
+ throw new Error(`duplicate tag "${tag}".`);
159
+ seen.add(key);
160
+ }
161
+ return tags;
162
+ }
163
+ function bound(value, flag, max, min = 1) {
164
+ const t = value.trim();
165
+ if (t.length < min)
166
+ throw new Error(`--${flag} is required.`);
167
+ if (t.length > max)
168
+ throw new Error(`--${flag} is longer than ${max} characters.`);
169
+ return t;
170
+ }
171
+ /**
172
+ * Catalog copy from flags. Requires name / summary / description so deploy identity
173
+ * cannot silently become the listing.
174
+ */
175
+ export function parseSubmitAppEntry(flags) {
176
+ return {
177
+ name: bound(requireFlag(flags, 'name'), 'name', 100),
178
+ summary: bound(requireFlag(flags, 'summary'), 'summary', 240),
179
+ description: bound(requireFlag(flags, 'description'), 'description', 2_000),
180
+ url: requireHttps(optionalFlag(flags, 'url'), 'url'),
181
+ urlLabel: optionalFlag(flags, 'url-label').trim().slice(0, 60),
182
+ image: requireHttps(optionalFlag(flags, 'image'), 'image'),
183
+ mark: bound(optionalFlag(flags, 'mark') || 'A/', 'mark', 3),
184
+ tone: oneOf(optionalFlag(flags, 'tone') || 'acid', APP_TONES, 'tone'),
185
+ category: oneOf(optionalFlag(flags, 'category') || 'Create', APP_CATEGORIES, 'category'),
186
+ stage: oneOf(optionalFlag(flags, 'stage') || 'Prototype', APP_STAGES, 'stage'),
187
+ tags: parseTags(optionalFlag(flags, 'tags')),
188
+ };
189
+ }
190
+ export function paramValues(entry) {
191
+ return {
192
+ name: entry.name,
193
+ summary: entry.summary,
194
+ description: entry.description,
195
+ url: entry.url,
196
+ urlLabel: entry.urlLabel,
197
+ image: entry.image,
198
+ mark: entry.mark,
199
+ tone: entry.tone,
200
+ category: entry.category,
201
+ relationships: APP_RELATIONSHIP,
202
+ stage: entry.stage,
203
+ tags: entry.tags.join(','),
204
+ };
205
+ }
206
+ export function resolveAppStoreAddresses(chainKey, flags = {}, env = process.env) {
207
+ const shipped = APP_STORE[chainKey];
208
+ const registryRaw = optionalFlag(flags, 'registry') || env.ABX_APP_STORE_REGISTRY || shipped?.registry;
209
+ const minterRaw = optionalFlag(flags, 'minter') || env.ABX_APP_STORE_MINTER || shipped?.minter;
210
+ if (!registryRaw || !minterRaw) {
211
+ throw new Error(`No ABX App Store registry is shipped for '${chainKey}'. Pass --registry 0x… and --minter 0x… ` +
212
+ `(or set ABX_APP_STORE_REGISTRY / ABX_APP_STORE_MINTER).`);
213
+ }
214
+ if (!isAddress(registryRaw) || !isAddress(minterRaw)) {
215
+ throw new Error('--registry and --minter must be 0x… addresses.');
216
+ }
217
+ return { registry: getAddress(registryRaw), minter: getAddress(minterRaw) };
218
+ }
219
+ export function chunkItems(items, size = MAX_CALLS_PER_TX) {
220
+ if (size < 1)
221
+ throw new Error('chunk size must be ≥ 1');
222
+ const out = [];
223
+ for (let i = 0; i < items.length; i += size)
224
+ out.push(items.slice(i, i + size));
225
+ return out;
226
+ }
227
+ export function buildParamOps(args) {
228
+ const values = paramValues(args.entry);
229
+ const ops = [];
230
+ for (const key of PARAM_KEYS) {
231
+ const value = values[key];
232
+ if (value === '')
233
+ continue;
234
+ if (key === 'tone') {
235
+ const encoded = encodeScalarParam('Select', value, [...APP_TONES]);
236
+ ops.push(prepareConfigureTokenParam({
237
+ contract: args.registry,
238
+ tokenId: args.tokenId,
239
+ key,
240
+ value: encoded.value,
241
+ display: encoded.display,
242
+ chainId: args.chainId,
243
+ }));
244
+ continue;
245
+ }
246
+ ops.push(prepareConfigureTokenParamData({
247
+ contract: args.registry,
248
+ tokenId: args.tokenId,
249
+ key,
250
+ data: toHex(new TextEncoder().encode(value)),
251
+ chainId: args.chainId,
252
+ }));
253
+ }
254
+ return ops;
255
+ }
256
+ export function batchParamOps(ops) {
257
+ return chunkItems(ops, MAX_CALLS_PER_TX).map((group, i, all) => {
258
+ if (group.length === 1)
259
+ return group[0];
260
+ return prepareMulticall({
261
+ ops: group,
262
+ summary: `Write App Store metadata ${i + 1}/${all.length} (${group.length} fields)`,
263
+ });
264
+ });
265
+ }
266
+ function prepareSubmitCollection(args) {
267
+ return {
268
+ op: 'submit-app',
269
+ to: args.minter,
270
+ data: encodeFunctionData({
271
+ abi: MINTER_ABI,
272
+ functionName: 'submit',
273
+ args: [args.collection],
274
+ }),
275
+ value: '0x0',
276
+ chainId: args.chainId,
277
+ summary: `List ${args.collection} in the ABX App Store`,
278
+ fields: { minter: args.minter, collection: args.collection },
279
+ };
280
+ }
281
+ function tokenIdFromMintLogs(logs) {
282
+ try {
283
+ const parsed = parseEventLogs({
284
+ abi: MINTER_ABI,
285
+ logs: logs,
286
+ eventName: 'EntrySubmitted',
287
+ });
288
+ const first = parsed[0];
289
+ return first ? first.args.tokenId : null;
290
+ }
291
+ catch {
292
+ return null;
293
+ }
294
+ }
295
+ function previewTx(tx, expectedSigner) {
296
+ console.log(`\n ${bold('◆ ' + tx.summary)} ${dim('(dry run — nothing sent)')}`);
297
+ for (const [k, v] of Object.entries(tx.fields))
298
+ console.log(` ${dim(k.padEnd(12))} ${v}`);
299
+ console.log(` ${dim('to'.padEnd(12))} ${tx.to ?? dim('(none)')}`);
300
+ if (expectedSigner)
301
+ console.log(` ${dim('signer'.padEnd(12))} ${expectedSigner}`);
302
+ }
303
+ export async function cmdSubmitApp(address, flags) {
304
+ if (!address || address.startsWith('--')) {
305
+ console.error(`usage: ${USAGE}\n`);
306
+ throw new CliError('', 1, true);
307
+ }
308
+ if (!isAddress(address)) {
309
+ throw new Error(`<collection> must be a 0x… address (got "${address}").`);
310
+ }
311
+ const collection = getAddress(address);
312
+ const entry = parseSubmitAppEntry(flags);
313
+ const store = resolveAppStoreAddresses(CHAIN, flags);
314
+ const cid = chainId();
315
+ const publicClient = makePublicClient({ chainKey: CHAIN });
316
+ const claimed = (await publicClient.readContract({
317
+ address: store.minter,
318
+ abi: MINTER_ABI,
319
+ functionName: 'claimed',
320
+ args: [collection],
321
+ }));
322
+ let tokenId = null;
323
+ let expectedSigner;
324
+ if (claimed) {
325
+ tokenId = (await publicClient.readContract({
326
+ address: store.minter,
327
+ abi: MINTER_ABI,
328
+ functionName: 'entryOf',
329
+ args: [collection],
330
+ }));
331
+ expectedSigner = (await publicClient.readContract({
332
+ address: store.registry,
333
+ abi: OWNER_ABI,
334
+ functionName: 'ownerOf',
335
+ args: [tokenId],
336
+ }));
337
+ console.log(dim(` already listed as token #${tokenId.toString()} — skipping mint, writing metadata (same as /update).`));
338
+ }
339
+ else {
340
+ expectedSigner = (await publicClient.readContract({
341
+ address: collection,
342
+ abi: OWNER_ABI,
343
+ functionName: 'owner',
344
+ args: [],
345
+ }));
346
+ }
347
+ const paramOps = tokenId !== null
348
+ ? buildParamOps({ registry: store.registry, tokenId, entry, chainId: cid })
349
+ : buildParamOps({ registry: store.registry, tokenId: 0n, entry, chainId: cid });
350
+ // When the token id isn't known yet, ops are only used to count batches for the sign-page total
351
+ // and the dry-run preview. Calldata is rebuilt after mint with the real id.
352
+ const paramBatches = batchParamOps(paramOps);
353
+ const mintTx = claimed
354
+ ? null
355
+ : prepareSubmitCollection({ minter: store.minter, collection, chainId: cid });
356
+ const approvalCount = (mintTx ? 1 : 0) + paramBatches.length;
357
+ return withJson(flags, async () => {
358
+ if (isDryRun(flags)) {
359
+ if (mintTx)
360
+ previewTx(mintTx, expectedSigner);
361
+ console.log(dim(`\n then ${paramBatches.length} metadata transaction(s) (${paramOps.length} fields, max ${MAX_CALLS_PER_TX} per tx).`));
362
+ for (const key of PARAM_KEYS) {
363
+ const value = paramValues(entry)[key];
364
+ if (value === '')
365
+ continue;
366
+ console.log(` ${dim(key.padEnd(16))} ${value.length > 80 ? value.slice(0, 77) + '…' : value}`);
367
+ }
368
+ console.log(dim(`\n Re-run without --dry-run to send (lane: ${laneFromFlags(flags)}).\n`));
369
+ return {
370
+ collection,
371
+ chainId: cid,
372
+ registry: store.registry,
373
+ minter: store.minter,
374
+ claimed,
375
+ tokenId: tokenId !== null ? tokenId.toString() : null,
376
+ sent: false,
377
+ approvals: approvalCount,
378
+ };
379
+ }
380
+ await confirmSend(claimed
381
+ ? `Update App Store listing #${tokenId.toString()} (${paramBatches.length} metadata tx)`
382
+ : `List ${collection} in the App Store (mint + ${paramBatches.length} metadata tx)`, flags);
383
+ await assertChainId(CHAIN);
384
+ const lane = laneFromFlags(flags);
385
+ let mintHash = null;
386
+ let paramsHashes = [];
387
+ let listedId = tokenId;
388
+ const sendMintThenParams = async (send) => {
389
+ if (mintTx) {
390
+ const minted = await send(mintTx);
391
+ mintHash = minted.txHash;
392
+ listedId = tokenIdFromMintLogs(minted.logs);
393
+ if (listedId === null) {
394
+ throw new Error('Mint succeeded but the entry token id was not in the receipt. The collection is claimed — retry to write metadata onto the existing token.');
395
+ }
396
+ ok(`listed as token #${listedId.toString()}`);
397
+ }
398
+ const ops = buildParamOps({
399
+ registry: store.registry,
400
+ tokenId: listedId,
401
+ entry,
402
+ chainId: cid,
403
+ });
404
+ const batches = batchParamOps(ops);
405
+ for (const [i, tx] of batches.entries()) {
406
+ const sent = await send(tx);
407
+ paramsHashes.push(sent.txHash);
408
+ console.log(dim(` metadata ${i + 1}/${batches.length}`));
409
+ }
410
+ };
411
+ if (lane === 'unsigned') {
412
+ // Cold lane can't do mint-then-params in one shot (the token id is assigned at mint).
413
+ // Print the mint (or the param batches if already claimed) and stop.
414
+ if (mintTx) {
415
+ await signTx(mintTx, {
416
+ lane: 'unsigned',
417
+ chainKey: CHAIN,
418
+ expectedSigner,
419
+ yes: !!flags.yes,
420
+ });
421
+ console.log(dim(' After the mint confirms, re-run this command to write catalog copy onto the new token (configure is an upsert).'));
422
+ }
423
+ else {
424
+ for (const tx of paramBatches) {
425
+ await signTx(tx, {
426
+ lane: 'unsigned',
427
+ chainKey: CHAIN,
428
+ expectedSigner,
429
+ yes: !!flags.yes,
430
+ });
431
+ }
432
+ }
433
+ return {
434
+ collection,
435
+ chainId: cid,
436
+ registry: store.registry,
437
+ minter: store.minter,
438
+ claimed,
439
+ tokenId: listedId !== null ? listedId.toString() : null,
440
+ sent: false,
441
+ mintTx: null,
442
+ paramsTxs: [],
443
+ };
444
+ }
445
+ if (lane === 'send') {
446
+ const results = [];
447
+ if (mintTx) {
448
+ const minted = await signTx(mintTx, {
449
+ lane: 'send',
450
+ chainKey: CHAIN,
451
+ expectedSigner,
452
+ yes: !!flags.yes,
453
+ });
454
+ if (!minted)
455
+ throw new Error('Mint was not sent.');
456
+ results.push(minted);
457
+ mintHash = minted.txHash;
458
+ const receipt = await publicClient.getTransactionReceipt({ hash: minted.txHash });
459
+ listedId = tokenIdFromMintLogs(receipt.logs);
460
+ if (listedId === null) {
461
+ throw new Error('Mint succeeded but the entry token id was not in the receipt. Retry to write metadata onto the existing token.');
462
+ }
463
+ ok(`listed as token #${listedId.toString()}`);
464
+ }
465
+ const ops = buildParamOps({
466
+ registry: store.registry,
467
+ tokenId: listedId,
468
+ entry,
469
+ chainId: cid,
470
+ });
471
+ const batches = batchParamOps(ops);
472
+ if (batches.length > 0) {
473
+ const rest = await signHotSequence(batches, { chainKey: CHAIN, yes: !!flags.yes });
474
+ results.push(...rest);
475
+ paramsHashes = rest.map((r) => r.txHash);
476
+ }
477
+ }
478
+ else {
479
+ const session = await openWalletSession({
480
+ chainKey: CHAIN,
481
+ expectedSigner,
482
+ total: approvalCount,
483
+ port: flags.port ? Number(flags.port) : undefined,
484
+ signUrlFile: flags['sign-url-file'],
485
+ });
486
+ try {
487
+ await session.connect();
488
+ await sendMintThenParams(async (tx) => {
489
+ const { txHash, receipt } = await session.send(tx);
490
+ return { txHash, logs: receipt.logs };
491
+ });
492
+ }
493
+ finally {
494
+ session.close();
495
+ }
496
+ }
497
+ console.log(`\n ${g('Listed.')} token #${listedId.toString()} on ${CHAIN} ${dim(explorerBase() + '/token/' + store.registry + '?a=' + listedId.toString())}`);
498
+ console.log(dim(' The catalog picks it up on the next read. Re-run this command to change the copy (no second mint).'));
499
+ return {
500
+ collection,
501
+ chainId: cid,
502
+ registry: store.registry,
503
+ minter: store.minter,
504
+ claimed,
505
+ tokenId: listedId.toString(),
506
+ sent: true,
507
+ mintTx: mintHash,
508
+ paramsTxs: paramsHashes,
509
+ };
510
+ });
511
+ }
512
+ //# sourceMappingURL=submit-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit-app.js","sourceRoot":"","sources":["../../src/commands/submit-app.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -2,20 +2,6 @@ import { type ArweaveJwk, type ResolveStorageOptions, type StorageBackend } from
2
2
  import { type Address, type ProjectState } from '@artblocks/abx-sdk';
3
3
  import { SelfHostIndexer } from '@artblocks/abx-indexer';
4
4
  import { type Flags } from './flags.js';
5
- /**
6
- * Runtime resolution for the CLI — deliberately **stateless about decisions**. There is no
7
- * tool-written config file: every choice is resolved fresh per invocation from explicit flags,
8
- * the operator's environment, and shipped constants, so a command's behavior is a pure function
9
- * of its inputs (nothing a previous command silently mutated feeds a later one).
10
- *
11
- * - Canonical infra (factory / renderer / chunk store): resolved from the SDK's shipped
12
- * {@link resolveFactory} manifest, overridable by flag or env. See `@artblocks/abx-sdk` deployments.
13
- * - Storage backend + non-secret settings: resolved here as **override → env → default**.
14
- * - Secrets (signing keys, S3 creds, the Pinata JWT, the Arweave key): env / the key file only.
15
- *
16
- * The only thing that persists on disk is the project-local, chain-rebuildable projection
17
- * (the indexer's SQLite store under the data dir) — that's DATA, not config.
18
- */
19
5
  /**
20
6
  * The active chain key — the ONE place it's derived (`ABX_CHAIN` → the shipped default). main.ts
21
7
  * and ownerops.ts each used to carry their own identical `process.env.ABX_CHAIN ?? DEFAULT_CHAIN_KEY`
@@ -60,7 +46,7 @@ export declare function chunkStoreAddress(override?: string): Address | null;
60
46
  export declare function fixedPriceMinterAddress(override?: string): Address | null;
61
47
  /** Canonical 1/1-edition clone factory — flag override → `ABX_ONE_OF_ONE_EDITION_FACTORY` → manifest. */
62
48
  export declare function oneOfOneEditionFactoryAddress(override?: string): Address | null;
63
- /** Canonical multi-artwork edition clone factory — flag override → `ABX_EDITION_FACTORY` → manifest. */
49
+ /** Canonical multi-work edition clone factory — flag override → `ABX_EDITION_FACTORY` → manifest. */
64
50
  export declare function editionFactoryAddress(override?: string): Address | null;
65
51
  /** Canonical code-project edition clone factory — flag override → `ABX_EDITION_CODE_FACTORY` → manifest. */
66
52
  export declare function editionCodeFactoryAddress(override?: string): Address | null;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}