@artblocks/abx-cli 0.1.0-alpha.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/CHANGELOG.md +402 -0
  2. package/assets/renderer-scaffold/README.md +44 -13
  3. package/assets/renderer-scaffold/foundry.toml +5 -0
  4. package/assets/renderer-scaffold/remappings.txt +1 -1
  5. package/assets/renderer-scaffold/script/DeployHooks.s.sol +24 -0
  6. package/assets/renderer-scaffold/script/Preview.s.sol +99 -0
  7. package/assets/renderer-scaffold/src/MyHooks.sol +20 -0
  8. package/assets/renderer-scaffold/src/MyRenderer.sol +4 -4
  9. package/assets/renderer-scaffold/src/MyTraits.sol +2 -2
  10. package/assets/renderer-scaffold/test/MyRenderer.t.sol +60 -3
  11. package/dist/bin.d.ts +26 -0
  12. package/dist/bin.d.ts.map +1 -0
  13. package/dist/bin.js +63 -0
  14. package/dist/bin.js.map +1 -0
  15. package/dist/capabilities.d.ts +132 -0
  16. package/dist/capabilities.d.ts.map +1 -0
  17. package/dist/capabilities.js +175 -0
  18. package/dist/capabilities.js.map +1 -0
  19. package/dist/commands/auth.d.ts +54 -0
  20. package/dist/commands/auth.d.ts.map +1 -0
  21. package/dist/commands/auth.js +483 -0
  22. package/dist/commands/auth.js.map +1 -0
  23. package/dist/commands/contract.d.ts +19 -0
  24. package/dist/commands/contract.d.ts.map +1 -0
  25. package/dist/commands/contract.js +171 -0
  26. package/dist/commands/contract.js.map +1 -0
  27. package/dist/commands/deploy.d.ts +296 -0
  28. package/dist/commands/deploy.d.ts.map +1 -0
  29. package/dist/commands/deploy.js +5736 -0
  30. package/dist/commands/deploy.js.map +1 -0
  31. package/dist/commands/feedback.d.ts +7 -0
  32. package/dist/commands/feedback.d.ts.map +1 -0
  33. package/dist/commands/feedback.js +154 -0
  34. package/dist/commands/feedback.js.map +1 -0
  35. package/dist/commands/maintenance.d.ts +4 -0
  36. package/dist/commands/maintenance.d.ts.map +1 -0
  37. package/dist/commands/maintenance.js +114 -0
  38. package/dist/commands/maintenance.js.map +1 -0
  39. package/dist/commands/project.d.ts +458 -0
  40. package/dist/commands/project.d.ts.map +1 -0
  41. package/dist/commands/project.js +1837 -0
  42. package/dist/commands/project.js.map +1 -0
  43. package/dist/commands/reads.d.ts +85 -0
  44. package/dist/commands/reads.d.ts.map +1 -0
  45. package/dist/commands/reads.js +881 -0
  46. package/dist/commands/reads.js.map +1 -0
  47. package/dist/commands/scaffold.d.ts +89 -0
  48. package/dist/commands/scaffold.d.ts.map +1 -0
  49. package/dist/commands/scaffold.js +741 -0
  50. package/dist/commands/scaffold.js.map +1 -0
  51. package/dist/commands/service.d.ts +67 -0
  52. package/dist/commands/service.d.ts.map +1 -0
  53. package/dist/commands/service.js +761 -0
  54. package/dist/commands/service.js.map +1 -0
  55. package/dist/commands/storage.d.ts +51 -0
  56. package/dist/commands/storage.d.ts.map +1 -0
  57. package/dist/commands/storage.js +399 -0
  58. package/dist/commands/storage.js.map +1 -0
  59. package/dist/commands/submit-app.d.ts +102 -0
  60. package/dist/commands/submit-app.d.ts.map +1 -0
  61. package/dist/commands/submit-app.js +638 -0
  62. package/dist/commands/submit-app.js.map +1 -0
  63. package/dist/config.d.ts +94 -2
  64. package/dist/config.d.ts.map +1 -1
  65. package/dist/config.js +332 -12
  66. package/dist/config.js.map +1 -1
  67. package/dist/conformance.d.ts +31 -0
  68. package/dist/conformance.d.ts.map +1 -0
  69. package/dist/conformance.js +400 -0
  70. package/dist/conformance.js.map +1 -0
  71. package/dist/contract-read-error.d.ts +5 -0
  72. package/dist/contract-read-error.d.ts.map +1 -0
  73. package/dist/contract-read-error.js +37 -0
  74. package/dist/contract-read-error.js.map +1 -0
  75. package/dist/creator-agent.d.ts +49 -0
  76. package/dist/creator-agent.d.ts.map +1 -0
  77. package/dist/creator-agent.js +363 -0
  78. package/dist/creator-agent.js.map +1 -0
  79. package/dist/creator-keyring.d.ts +26 -0
  80. package/dist/creator-keyring.d.ts.map +1 -0
  81. package/dist/creator-keyring.js +57 -0
  82. package/dist/creator-keyring.js.map +1 -0
  83. package/dist/creator-signer.d.ts +52 -0
  84. package/dist/creator-signer.d.ts.map +1 -0
  85. package/dist/creator-signer.js +267 -0
  86. package/dist/creator-signer.js.map +1 -0
  87. package/dist/deploy-plan.d.ts +218 -0
  88. package/dist/deploy-plan.d.ts.map +1 -0
  89. package/dist/deploy-plan.js +20 -0
  90. package/dist/deploy-plan.js.map +1 -0
  91. package/dist/deps.d.ts +6 -39
  92. package/dist/deps.d.ts.map +1 -1
  93. package/dist/deps.js +4 -68
  94. package/dist/deps.js.map +1 -1
  95. package/dist/errors.d.ts +22 -0
  96. package/dist/errors.d.ts.map +1 -0
  97. package/dist/errors.js +32 -0
  98. package/dist/errors.js.map +1 -0
  99. package/dist/flag-allowlists.d.ts +53 -0
  100. package/dist/flag-allowlists.d.ts.map +1 -0
  101. package/dist/flag-allowlists.js +188 -0
  102. package/dist/flag-allowlists.js.map +1 -0
  103. package/dist/flags.d.ts +53 -0
  104. package/dist/flags.d.ts.map +1 -1
  105. package/dist/flags.js +151 -1
  106. package/dist/flags.js.map +1 -1
  107. package/dist/jsonout.d.ts +37 -0
  108. package/dist/jsonout.d.ts.map +1 -0
  109. package/dist/jsonout.js +79 -0
  110. package/dist/jsonout.js.map +1 -0
  111. package/dist/kind.d.ts +57 -0
  112. package/dist/kind.d.ts.map +1 -0
  113. package/dist/kind.js +122 -0
  114. package/dist/kind.js.map +1 -0
  115. package/dist/main.js +859 -5374
  116. package/dist/main.js.map +1 -1
  117. package/dist/mintpage.d.ts +17 -2
  118. package/dist/mintpage.d.ts.map +1 -1
  119. package/dist/mintpage.js +241 -54
  120. package/dist/mintpage.js.map +1 -1
  121. package/dist/output.d.ts +184 -0
  122. package/dist/output.d.ts.map +1 -0
  123. package/dist/output.js +774 -0
  124. package/dist/output.js.map +1 -0
  125. package/dist/ownerops.d.ts +450 -57
  126. package/dist/ownerops.d.ts.map +1 -1
  127. package/dist/ownerops.js +2219 -358
  128. package/dist/ownerops.js.map +1 -1
  129. package/dist/preview.d.ts +23 -5
  130. package/dist/preview.d.ts.map +1 -1
  131. package/dist/preview.js +95 -43
  132. package/dist/preview.js.map +1 -1
  133. package/dist/provision.d.ts +3 -13
  134. package/dist/provision.d.ts.map +1 -1
  135. package/dist/provision.js +19 -21
  136. package/dist/provision.js.map +1 -1
  137. package/dist/remote.d.ts +116 -9
  138. package/dist/remote.d.ts.map +1 -1
  139. package/dist/remote.js +371 -14
  140. package/dist/remote.js.map +1 -1
  141. package/dist/riskgate.d.ts +101 -0
  142. package/dist/riskgate.d.ts.map +1 -0
  143. package/dist/riskgate.js +343 -0
  144. package/dist/riskgate.js.map +1 -0
  145. package/dist/scaffold.d.ts +12 -0
  146. package/dist/scaffold.d.ts.map +1 -0
  147. package/dist/scaffold.js +56 -0
  148. package/dist/scaffold.js.map +1 -0
  149. package/dist/schema.d.ts +36 -1
  150. package/dist/schema.d.ts.map +1 -1
  151. package/dist/schema.js +121 -26
  152. package/dist/schema.js.map +1 -1
  153. package/dist/script-chunks.d.ts +8 -0
  154. package/dist/script-chunks.d.ts.map +1 -0
  155. package/dist/script-chunks.js +35 -0
  156. package/dist/script-chunks.js.map +1 -0
  157. package/dist/served.d.ts +30 -0
  158. package/dist/served.d.ts.map +1 -0
  159. package/dist/served.js +112 -0
  160. package/dist/served.js.map +1 -0
  161. package/dist/signer.d.ts +20 -1
  162. package/dist/signer.d.ts.map +1 -1
  163. package/dist/signer.js +110 -18
  164. package/dist/signer.js.map +1 -1
  165. package/dist/update-check.d.ts +60 -9
  166. package/dist/update-check.d.ts.map +1 -1
  167. package/dist/update-check.js +105 -18
  168. package/dist/update-check.js.map +1 -1
  169. package/package.json +17 -12
  170. package/skill/SKILL.md +211 -354
  171. package/skill/agents/openai.yaml +4 -0
  172. package/skill/reference/capabilities.md +195 -0
  173. package/skill/reference/code.md +236 -0
  174. package/skill/reference/creator-token.md +94 -0
  175. package/skill/reference/deploy.md +177 -0
  176. package/skill/reference/diagnose.md +178 -0
  177. package/skill/reference/hosting.md +191 -102
  178. package/skill/reference/operate.md +237 -0
  179. package/skill/reference/services.md +173 -0
  180. package/skill/reference/setup.md +221 -42
  181. package/assets/renderer-scaffold/src/interfaces/IAbxFieldRenderer.sol +0 -32
  182. package/assets/renderer-scaffold/src/interfaces/IAbxParams.sol +0 -26
  183. package/dist/inspect.d.ts +0 -48
  184. package/dist/inspect.d.ts.map +0 -1
  185. package/dist/inspect.js +0 -184
  186. package/dist/inspect.js.map +0 -1
  187. package/dist/migrate.d.ts +0 -65
  188. package/dist/migrate.d.ts.map +0 -1
  189. package/dist/migrate.js +0 -180
  190. package/dist/migrate.js.map +0 -1
  191. package/dist/onchain-uri.d.ts +0 -97
  192. package/dist/onchain-uri.d.ts.map +0 -1
  193. package/dist/onchain-uri.js +0 -243
  194. package/dist/onchain-uri.js.map +0 -1
  195. package/dist/upload.d.ts +0 -28
  196. package/dist/upload.d.ts.map +0 -1
  197. package/dist/upload.js +0 -41
  198. package/dist/upload.js.map +0 -1
  199. package/skill/reference/code-projects.md +0 -246
  200. package/skill/reference/operating.md +0 -118
  201. package/skill/reference/troubleshooting.md +0 -28
@@ -0,0 +1,267 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { spawn } from 'node:child_process';
3
+ import { AbxServiceClient, CREATOR_WALLET_INTERFACE, CreatorApiClient, makePublicClient, pinGas, resolveChain, resolveServiceInterfaceEndpoint, sleep, TxRevertedError, waitForCodeAt, } from '@artblocks/abx-sdk';
4
+ import { CreatorAgentAuthorization, CreatorAuthorizationError } from './creator-agent.js';
5
+ import { CreatorKeyringStore } from './creator-keyring.js';
6
+ import { warn } from './output.js';
7
+ import { ABX_SERVICES_URL } from './remote.js';
8
+ const SPONSORABLE_BASE_CHAINS = new Set([8_453, 84_532]);
9
+ const CREATOR_GRANTS_URL = 'https://services.abx.io/authorize';
10
+ /** Preserve the exact RPC estimate across the JSON service boundary. This is a serialization
11
+ * guard, not a sponsorship-policy ceiling; real EVM transaction limits are many orders of
12
+ * magnitude below Number.MAX_SAFE_INTEGER. */
13
+ export function sponsoredGasLimit(gas) {
14
+ const limit = Number(gas);
15
+ if (!Number.isSafeInteger(limit) || limit <= 0) {
16
+ throw new Error(`Sponsored transaction gas estimate ${gas} cannot be represented safely.`);
17
+ }
18
+ return limit;
19
+ }
20
+ /** Synchronous preflight for commands that may upload content before opening the signing lane. */
21
+ export function assertSponsorConfigured(chainKey) {
22
+ assertSponsorConfiguredWithEnv(chainKey, process.env);
23
+ }
24
+ function assertSponsorConfiguredWithEnv(chainKey, env) {
25
+ if (!SPONSORABLE_BASE_CHAINS.has(resolveChain(chainKey).id)) {
26
+ throw new Error('--sponsor is supported on eligible Base networks (Base and Base Sepolia only) and still requires live provider and account eligibility. Use --send, --sign, or --unsigned on this network.');
27
+ }
28
+ if (!env.ABX_SERVICES_API_KEY) {
29
+ throw new Error('--sponsor needs ABX_SERVICES_API_KEY in your ignored .env. Run `abx auth login` first.');
30
+ }
31
+ }
32
+ /**
33
+ * Resolve the existing account-bound creator wallet for a sponsored preview without provisioning
34
+ * a wallet or opening an authorization grant. A dry run must use the signer that the real send
35
+ * will use; silently falling back to a local env key changes the CREATE2 salt, owner, royalty
36
+ * receiver, and mint recipient shown in the preview.
37
+ */
38
+ export async function sponsoredPreviewAddress(chainKey, options = {}) {
39
+ return sponsoredWalletAddress(chainKey, { ...options, provision: false });
40
+ }
41
+ /** Resolve the account-bound creator wallet for a transaction plan. Real sponsored sends may
42
+ * provision the stable wallet just as `openSponsoredSession` does; dry runs call the wrapper above
43
+ * and remain strictly read-only. */
44
+ export async function sponsoredWalletAddress(chainKey, options = {}) {
45
+ const env = options.env ?? process.env;
46
+ const chain = resolveChain(chainKey);
47
+ assertSponsorConfiguredWithEnv(chainKey, env);
48
+ const apiKey = env.ABX_SERVICES_API_KEY;
49
+ const api = new CreatorApiClient({
50
+ baseUrl: await creatorApiUrl(chain.id, env),
51
+ token: apiKey,
52
+ fetchImpl: options.fetchImpl,
53
+ });
54
+ let account = await api.account();
55
+ if (!account.wallet && options.provision) {
56
+ await api.provisionWallet();
57
+ account = await api.account();
58
+ }
59
+ if (!account.wallet || !account.capabilities.wallet) {
60
+ throw new Error(options.provision
61
+ ? 'ABX Services did not return the creator wallet after provisioning.'
62
+ : 'Sponsored dry run needs an existing ABX creator wallet, but this account has not provisioned one yet. ' +
63
+ 'Provision the wallet through ABX Services first, then rerun; the preview will not create external state.');
64
+ }
65
+ if (!account.capabilities.sponsorship || !account.capabilities.sponsoredChains.includes(chain.id)) {
66
+ throw new Error(`ABX gas sponsorship is not enabled for ${chain.name} on this account.`);
67
+ }
68
+ return account.wallet.address;
69
+ }
70
+ /** Pure boundary check shared by every sponsored operation. Privy's sponsored relay requires a
71
+ * call target, so custom-contract deployments must already be expressed as a call to the keyless
72
+ * CREATE2 proxy before they reach this boundary. */
73
+ export function assertSponsoredPreparedTx(tx, chainId) {
74
+ if (tx.chainId !== chainId) {
75
+ throw new Error(`Refusing sponsored transaction for chain ${tx.chainId}; expected ${chainId}.`);
76
+ }
77
+ if (BigInt(tx.value) !== 0n) {
78
+ throw new Error('ABX sponsorship never covers a transaction that transfers ETH.');
79
+ }
80
+ if (tx.to === null) {
81
+ throw new Error('ABX sponsorship requires a call target; use `abx deploy-contract --sponsor` to route exact initcode through CREATE2.');
82
+ }
83
+ }
84
+ function checkedCreatorApiUrl(raw) {
85
+ const parsed = new URL(raw);
86
+ const local = parsed.hostname === 'localhost' || parsed.hostname === '127.0.0.1' || parsed.hostname === '[::1]';
87
+ if (parsed.username ||
88
+ parsed.password ||
89
+ parsed.search ||
90
+ parsed.hash ||
91
+ (parsed.protocol !== 'https:' && !(local && parsed.protocol === 'http:'))) {
92
+ throw new Error('ABX_CREATORS_API_URL must be HTTPS (or localhost HTTP for development) without credentials, a query, or a fragment.');
93
+ }
94
+ return parsed.toString().replace(/\/+$/, '');
95
+ }
96
+ /** Resolve the first-party wallet API from its public remote catalog. The env override is an
97
+ * explicit local/staging escape hatch; production callers discover the interface from the
98
+ * services catalog and do not need to know a deployment hostname. */
99
+ export async function creatorApiUrl(chainId, env = process.env) {
100
+ if (env.ABX_CREATORS_API_URL)
101
+ return checkedCreatorApiUrl(env.ABX_CREATORS_API_URL);
102
+ const descriptor = await new AbxServiceClient({ baseUrl: ABX_SERVICES_URL, timeoutMs: 10_000 }).descriptor();
103
+ const endpoint = resolveServiceInterfaceEndpoint(ABX_SERVICES_URL, descriptor, CREATOR_WALLET_INTERFACE);
104
+ if (!endpoint) {
105
+ throw new Error('The ABX remote does not advertise an account-bound creator-wallet service. Use --send, --sign, or --unsigned.');
106
+ }
107
+ if (!endpoint.chains.includes(chainId)) {
108
+ throw new Error(`The ABX creator-wallet service does not support chain ${chainId}. Use --send, --sign, or --unsigned.`);
109
+ }
110
+ return endpoint.baseUrl;
111
+ }
112
+ function openBrowser(url) {
113
+ if (process.env.CI)
114
+ return;
115
+ try {
116
+ const command = process.platform === 'darwin'
117
+ ? { file: 'open', args: [url] }
118
+ : process.platform === 'win32'
119
+ ? { file: 'rundll32', args: ['url.dll,FileProtocolHandler', url] }
120
+ : { file: 'xdg-open', args: [url] };
121
+ const child = spawn(command.file, command.args, { detached: true, stdio: 'ignore' });
122
+ child.on('error', () => { });
123
+ child.unref();
124
+ }
125
+ catch {
126
+ // The complete URL and code are always printed below.
127
+ }
128
+ }
129
+ /**
130
+ * Open a creator authorization session. Privy's rotating grant is retained in the user's native OS
131
+ * credential store and reused across CLI invocations. The decrypted request-signing key remains
132
+ * memory-only and every exact transaction is still prepared, signed, and reconciled independently.
133
+ */
134
+ export async function openSponsoredSession(chainKey) {
135
+ const chain = resolveChain(chainKey);
136
+ assertSponsorConfigured(chainKey);
137
+ const apiKey = process.env.ABX_SERVICES_API_KEY;
138
+ if (!apiKey)
139
+ throw new Error('ABX Services API key disappeared after sponsorship preflight.');
140
+ const api = new CreatorApiClient({ baseUrl: await creatorApiUrl(chain.id), token: apiKey });
141
+ const wallet = await api.provisionWallet();
142
+ const account = await api.account();
143
+ if (!account.wallet || account.wallet.address.toLowerCase() !== wallet.address.toLowerCase()) {
144
+ throw new Error('ABX Creators returned inconsistent wallet binding. Nothing was signed.');
145
+ }
146
+ if (!account.capabilities.sponsorship || !account.capabilities.sponsoredChains.includes(chain.id)) {
147
+ throw new Error(`ABX gas sponsorship is not enabled for ${chain.name} on this account.`);
148
+ }
149
+ let persistenceWarningShown = false;
150
+ const persistenceWarning = () => {
151
+ if (persistenceWarningShown)
152
+ return;
153
+ persistenceWarningShown = true;
154
+ warn('Could not use the OS credential store. This authorization works for the current command only.');
155
+ };
156
+ const store = new CreatorKeyringStore(wallet.providerAppId, wallet.address);
157
+ let authorization = new CreatorAgentAuthorization({
158
+ appId: wallet.providerAppId,
159
+ store,
160
+ onPersistenceError: persistenceWarning,
161
+ });
162
+ try {
163
+ let canPersist = true;
164
+ let newlyApproved = false;
165
+ let wallets;
166
+ try {
167
+ wallets = await authorization.restore();
168
+ }
169
+ catch (error) {
170
+ if (error instanceof CreatorAuthorizationError)
171
+ throw error;
172
+ persistenceWarning();
173
+ canPersist = false;
174
+ authorization.dispose();
175
+ authorization = new CreatorAgentAuthorization({ appId: wallet.providerAppId });
176
+ wallets = null;
177
+ }
178
+ if (!wallets) {
179
+ newlyApproved = true;
180
+ const device = await authorization.start();
181
+ const verificationUrl = device.verificationUriComplete ?? device.verificationUri;
182
+ console.log(`\n Authorize this agent to use your ABX creator wallet:`);
183
+ console.log(` ${verificationUrl}`);
184
+ console.log(` Code: ${device.userCode}\n`);
185
+ openBrowser(verificationUrl);
186
+ wallets = await authorization.wait();
187
+ }
188
+ const authorized = wallets.find((candidate) => candidate.chainType === 'ethereum' && candidate.address.toLowerCase() === wallet.address.toLowerCase());
189
+ if (!authorized)
190
+ throw new Error(`Privy authorized a different wallet; expected ${wallet.address}.`);
191
+ if (newlyApproved && canPersist) {
192
+ try {
193
+ await authorization.remember();
194
+ console.log(` Agent access saved in your OS credential store. Manage or revoke it at ${CREATOR_GRANTS_URL}.\n`);
195
+ }
196
+ catch {
197
+ persistenceWarning();
198
+ }
199
+ }
200
+ const publicClient = makePublicClient({ chainKey });
201
+ let closed = false;
202
+ return {
203
+ address: wallet.address,
204
+ async send(tx) {
205
+ if (closed)
206
+ throw new Error('The creator authorization session is closed.');
207
+ assertSponsoredPreparedTx(tx, chain.id);
208
+ if (tx.gasFloor && tx.to)
209
+ await waitForCodeAt(publicClient, tx.to);
210
+ const gas = await pinGas(publicClient, {
211
+ from: wallet.address,
212
+ to: tx.to,
213
+ data: tx.data,
214
+ value: tx.value,
215
+ gasFloor: tx.gasFloor,
216
+ });
217
+ const operationId = `op_${randomUUID().replaceAll('-', '')}`;
218
+ const prepared = await api.prepare({
219
+ operationId,
220
+ chainId: chain.id,
221
+ to: tx.to,
222
+ value: tx.value,
223
+ data: tx.data,
224
+ gasLimit: sponsoredGasLimit(gas),
225
+ });
226
+ const signed = await authorization.sign({
227
+ walletId: prepared.signingRequest.walletId,
228
+ body: prepared.signingRequest.body,
229
+ idempotencyKey: prepared.signingRequest.idempotencyKey,
230
+ requestExpiry: prepared.signingRequest.requestExpiry,
231
+ });
232
+ let operation = await api.submit(operationId, {
233
+ requestExpiry: prepared.signingRequest.requestExpiry,
234
+ data: tx.data,
235
+ signed,
236
+ });
237
+ const deadline = Date.now() + 180_000;
238
+ while (operation.state === 'prepared' ||
239
+ operation.state === 'submitting' ||
240
+ operation.state === 'pending' ||
241
+ operation.state === 'unknown') {
242
+ if (Date.now() >= deadline) {
243
+ throw new Error(`Sponsored operation ${operationId} could not be reconciled. It may have been submitted; check its status before doing anything else and do not retry it.`);
244
+ }
245
+ await sleep(1_500);
246
+ operation = await api.getOperation(operationId);
247
+ }
248
+ if (operation.state !== 'confirmed' || !operation.transactionHash) {
249
+ throw new Error(`Sponsored operation ${operationId} failed${operation.errorCode ? ` (${operation.errorCode})` : ''}.`);
250
+ }
251
+ const receipt = await publicClient.waitForTransactionReceipt({ hash: operation.transactionHash });
252
+ if (receipt.status !== 'success')
253
+ throw new TxRevertedError(tx.op, operation.transactionHash);
254
+ return { txHash: operation.transactionHash, receipt };
255
+ },
256
+ close() {
257
+ closed = true;
258
+ authorization.dispose();
259
+ },
260
+ };
261
+ }
262
+ catch (error) {
263
+ authorization.dispose();
264
+ throw error;
265
+ }
266
+ }
267
+ //# sourceMappingURL=creator-signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creator-signer.js","sourceRoot":"","sources":["../src/creator-signer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * The structured `--dry-run --json` / `--json` deploy plan.
3
+ *
4
+ * The JSON payload and human prose are rendered from the same values but remain separate surfaces.
5
+ * Deploy is a high-stakes command family (real gas, address pinning, salt reservation), its exact
6
+ * dry-run prose is covered extensively, and the end-user skill depends on that prose. This module
7
+ * therefore provides a versioned, typed object populated from the SAME locals `commands/deploy.ts`
8
+ * uses for human narration at every `emit(jsonSafe({...}))` call site.
9
+ *
10
+ * A field a lane genuinely has no answer for is explicit `null`, never silently absent — that
11
+ * distinction (present-but-empty vs. not-applicable-here) is the whole point of a schema. See each
12
+ * `deploy.ts` call site for the specific reasoning behind its nulls.
13
+ */
14
+ import type { Address } from '@artblocks/abx-sdk';
15
+ /** Bump whenever a field is added, renamed, or reinterpreted — a consumer keys behavior off this,
16
+ * not off the CLI's own package version (that changes for reasons unrelated to this shape).
17
+ *
18
+ * `as const` is load-bearing, not decoration: a plain `= 1` is a WIDENING literal, so the moment it
19
+ * is read into an un-annotated intermediate object (the resume lane builds one and spreads it into
20
+ * several emits) the property degrades to `number` and stops satisfying `DeployPlan`. Keep it.
21
+ *
22
+ * v2 (this change): added `custody.renderer` and `custody.image`; reinterpreted `transactions.legs`
23
+ * to end with `'deploy'` whenever it is non-null (previously silent about the deploy tx itself —
24
+ * see each field's own doc comment). A consumer keying behavior off `legs`' shape needs to know
25
+ * which version it's reading. */
26
+ export declare const DEPLOY_PLAN_SCHEMA_VERSION: 2;
27
+ /** The six product lanes `deploy.ts` implements — a stable discriminator independent of the legacy
28
+ * `command`/`kind` fields already on the payload (which exist for backward compat and don't fully
29
+ * agree with each other across lanes: `kind: 'edition-code'` vs. this union's `'code-edition'`). */
30
+ export type DeployPlanFamily = '1of1' | '1of1-edition' | 'series' | 'series-edition' | 'code' | 'code-edition';
31
+ /** The signing lanes `laneFromFlags` resolves to, reused verbatim. */
32
+ export type DeployPlanLane = 'send' | 'sign' | 'sponsor' | 'unsigned';
33
+ export interface DeployPlanTransactions {
34
+ /** Wallet TX SIGNATURES this run needs — the exact same count the lane's own dry-run/confirm
35
+ * "approvals" line reports (an off-chain storage upload is a separate signature class, never
36
+ * counted here — see the `approvals` local at each call site). */
37
+ approvals: number;
38
+ /**
39
+ * The ordered, NAMED stages this run signs, ending with `'deploy'` itself — e.g.
40
+ * `['onchain-image-staging', 'deploy']` for an image lane staging bytes into the chunk store first,
41
+ * or `['chunks', 'param-schemas', 'dependencies', 'onchain-uri', 'mints', 'deploy']` for a code
42
+ * project whose setup rides one or more gas-bounded transactions ahead of the deploy tx. `null`
43
+ * when the deploy is a single, self-contained transaction with no named stage worth calling out.
44
+ *
45
+ * A stage name is a GROUP, not a 1:1 tx count: `'chunks'`/`'onchain-image-staging'` can be one
46
+ * atomic write or SEVERAL gas-bounded batch transactions (a 60KB+ script's setup, in particular —
47
+ * see `commands/deploy.ts`'s `planCodeSetupBatches`), and `approvals` is what reports the real
48
+ * total signature count — `legs.length` never needs to equal `approvals`. The one invariant this
49
+ * schema DOES hold: `legs === null` iff `approvals` is exactly the trivial case for that lane (1 for
50
+ * a fresh deploy with nothing riding ahead of it; the resume lane's own fixed count when everything
51
+ * is already done) — i.e. non-null legs always means "something happens beyond the bare minimum."
52
+ *
53
+ * EXCEPTION: the `--resume` lane never deploys (the contract already exists), so its legs name only
54
+ * the groups riding the setup transaction(s) it sends (one or more, gas-bounded, same as a fresh
55
+ * deploy) and never include `'deploy'` — see the `resumeLegs` call sites in `commands/deploy.ts` for
56
+ * why that lane's unit model differs.
57
+ */
58
+ legs: string[] | null;
59
+ }
60
+ export interface DeployPlanRoles {
61
+ /** The address that signs this deploy. `null` only when genuinely unknown yet (a dry run with no
62
+ * `--for` and no resolvable wallet key — the plan is still previewable; just not addressed to
63
+ * anyone in particular). */
64
+ signer: string | null;
65
+ /** Always equal to `signer` in this codebase — every lane sets `owner: deployer` — carried as its
66
+ * own field because a consumer reasoning about roles shouldn't have to know that fact. */
67
+ owner: string | null;
68
+ royaltyReceiver: string | null;
69
+ /** `null` when no `--primary-payee` was given (sale proceeds go to the owner) — the lanes with no
70
+ * concept of a delegated payee at all (the plain 1/1) also report `null` here. */
71
+ primaryPayee: string | null;
72
+ /** `null` when no `--minter` was given (only the owner can mint) — same "no concept" case as
73
+ * `primaryPayee` on the plain 1/1 lane. */
74
+ minter: string | null;
75
+ }
76
+ export interface DeployPlanRoyalty {
77
+ bps: number;
78
+ capBps: number;
79
+ burnable: boolean;
80
+ }
81
+ export interface DeployPlanCustody {
82
+ /** Does `tokenURI`/`contractURI` (or `uri`/`contractURI` on an edition) resolve on-chain via the
83
+ * canonical renderer, vs. through a resolver base baked on-chain. */
84
+ onChainUri: boolean;
85
+ /** Are the IMAGE bytes themselves on-chain (a chunk-store `reader` field) — distinct from
86
+ * `onChainUri`, which only says the metadata JSON resolves on-chain (see deploy.ts's own
87
+ * "puts the metadata JSON on-chain, not the image" warning). `null` on the code lanes, where an
88
+ * image is one of several independently-disposed surfaces — see `surfaces.thumbnail` instead. */
89
+ imageOnChain: boolean | null;
90
+ /** The off-chain storage backend holding bytes this deploy custodies (e.g. `ipfs`, `arweave`,
91
+ * `fs`) — `null` when nothing is stored off-chain (fully on-chain content, or a code project
92
+ * whose script chunks are on-chain and carries no directory build). */
93
+ backend: string | null;
94
+ /** The on-chain `tokenURIBase`/`contractURIBase` this deploy writes — `null`, not `''`, when the
95
+ * lane deliberately leaves it empty because the on-chain renderer is authoritative (baking a
96
+ * base anyway would be misleading: nothing ever reads it while a renderer is set). */
97
+ tokenUriBase: string | null;
98
+ contractUriBase: string | null;
99
+ /** The on-chain renderer address serving `tokenURI`/`contractURI` — the SAME address the "On-chain
100
+ * renderer" step already prints (`would use renderer 0x…` on a dry run, `using renderer 0x…` on a
101
+ * real send). The zero address there means "would deploy the canonical renderer fresh," never
102
+ * "no renderer" — a consumer reading this field needs the same caveat the prose carries. `null`
103
+ * when `onChainUri` is false: off-chain custody has no renderer question to answer. On a
104
+ * `--resume` emit this is always `null` too — the renderer is an InitParams field fixed at the
105
+ * ORIGINAL deploy (like `royalty`/`mint`, see their own doc comments), and a resume doesn't
106
+ * re-read or re-decide it here. */
107
+ renderer: Address | null;
108
+ /** File-level facts about the `--onchain-image` bytes THIS deploy stages, read locally (no chain
109
+ * call) from the exact path `--image` names — `null` unless `imageOnChain` is `true` on a lane
110
+ * that stages a SINGLE file (the 1/1 and 1/1-edition lanes). `null` on `series`/`series-edition`
111
+ * too even when `imageOnChain` is `true` there: those lanes stage ONE FILE PER TOKEN, so no
112
+ * single-file shape fits — the per-token detail is prose-only today (see the `previewImageStaging`
113
+ * loop in `commands/deploy.ts`). */
114
+ image: DeployPlanImageFile | null;
115
+ }
116
+ export interface DeployPlanImageFile {
117
+ /** Raw size of the file on disk, in bytes — the same number the "Stage on-chain image" step's
118
+ * `NNNB → …` line already prints. */
119
+ bytes: number;
120
+ /** Size after the staging plan's chunking/compression (`--compress fastlz` shrinks per chunk;
121
+ * `gzip` shrinks the whole file; `none` leaves it unchanged) — the same number that line's
122
+ * `[fastlz NNN→MMMB]` bracket already prints. */
123
+ stagedBytes: number;
124
+ /** MIME type sniffed from the file's extension (the same `contentTypeFromPath` helper every other
125
+ * content-type-aware line in this file uses) — not itself printed by the staging preview line,
126
+ * but a deterministic fact about the exact file already opened for that preview, computed locally
127
+ * with no chain read, so reporting it costs nothing and fabricates nothing. */
128
+ mimeType: string;
129
+ /** keccak256 of the RAW (pre-compression) file bytes. This is NOT an on-chain commitment — a
130
+ * reader-backed on-chain image has none; the bytes themselves ARE the on-chain content, so there
131
+ * is nothing to commit to separately. It is a content-addressing fact about the LOCAL file,
132
+ * computed the same way (no chain read) for a `--json` consumer that wants to verify provenance
133
+ * later against what actually got staged. */
134
+ contentHash: string;
135
+ }
136
+ export interface DeployPlanMint {
137
+ /** True when nothing mints at deploy (mint later, or via a delegated minter/sale). */
138
+ deferred: boolean;
139
+ /** How many distinct tokens/ids mint at deploy — `0` when deferred. */
140
+ count: number;
141
+ /** Copies PER id (edition lanes only) — `null` on a unique-token lane, where the concept doesn't
142
+ * exist (every id is exactly one copy by construction). A bigint, stringified (see jsonSafe). */
143
+ amountPerId: string | null;
144
+ recipient: string | null;
145
+ }
146
+ export interface DeployPlanEstimate {
147
+ /**
148
+ * A rough, hedged order-of-magnitude ETH/gas figure for THIS deploy's on-chain write cost.
149
+ *
150
+ * `null` is not "not implemented yet" here — it is the honest answer on every lane that genuinely
151
+ * computes no such number today, including the image lanes' `--onchain-image` staging (1/1,
152
+ * 1/1-edition, series, series-edition all skip this: verified directly — none of them prices gas or
153
+ * prints an "est. on-chain cost" line anywhere on the dry-run path). The ONE lane that does compute
154
+ * and print one is the fresh `code` family's on-chain-byte-storage guidance (a best-effort
155
+ * `~200 gas/byte` heuristic priced at the live gas price, wrapped in a try/catch that skips silently
156
+ * if the RPC can't price gas) — see the `planEstimate` local in `commands/deploy.ts`.
157
+ *
158
+ * This field NEVER re-derives or newly computes a number for the plan — it only carries over the
159
+ * exact estimate the human readout already printed. Do not extend this to a lane that doesn't
160
+ * already print one without saying so explicitly wherever that change is made: an estimate implies
161
+ * an RPC gas-price read, which is a new class of work for a dry run that today makes none.
162
+ */
163
+ ethApprox: string | null;
164
+ gasApprox: string | null;
165
+ }
166
+ export interface DeployPlanSurface {
167
+ ok: boolean;
168
+ detail: string;
169
+ }
170
+ /** The code lane's "every marketplace-facing dimension, resolved now" block — `null` on every other
171
+ * lane (an image lane's thumbnail is fully covered by `custody`; it has no separate traits/postParam
172
+ * disposition to report). */
173
+ export interface DeployPlanSurfaces {
174
+ thumbnail: DeployPlanSurface;
175
+ traits: DeployPlanSurface;
176
+ postParams: DeployPlanSurface;
177
+ }
178
+ /** `null` on the image lanes, which have no dependency-registry concept. */
179
+ export interface DeployPlanDependencies {
180
+ count: number;
181
+ registry: string | null;
182
+ }
183
+ /** Present only on a `deploy-code --resume` emit — `null` on a fresh deploy. */
184
+ export interface DeployPlanResume {
185
+ target: string;
186
+ sentLegs: number;
187
+ complete: boolean;
188
+ }
189
+ export interface DeployPlan {
190
+ schemaVersion: typeof DEPLOY_PLAN_SCHEMA_VERSION;
191
+ family: DeployPlanFamily;
192
+ lane: DeployPlanLane;
193
+ transactions: DeployPlanTransactions;
194
+ roles: DeployPlanRoles;
195
+ /** `null` on a `--resume` emit: royalty is an InitParams field fixed at the ORIGINAL deploy, and a
196
+ * resume never touches it — reporting the flags passed to `--resume` here would misleadingly
197
+ * imply this run writes them. */
198
+ royalty: DeployPlanRoyalty | null;
199
+ custody: DeployPlanCustody;
200
+ /** `null` on a `--resume` emit — see the field's own module doc for why the mint plan isn't
201
+ * cleanly reducible to one shape there (edition resume mints are a PER-ID list, not a count). */
202
+ mint: DeployPlanMint | null;
203
+ estimate: DeployPlanEstimate;
204
+ /** Every `warn()` line this invocation raised, ANSI-stripped, in print order — see
205
+ * `beginPlanWarnings`/the local `warn` wrapper in deploy.ts. Not exhaustive of every warning this
206
+ * FILE can print (a trust-anchor bootstrap warning from `output.ts`'s `ensureFactory`/etc. isn't
207
+ * captured — those only fire on a real send that also stands up a fresh trust anchor, and are
208
+ * file-scoped to a different module), but covers every warning the LANE ITSELF raises, which is
209
+ * what a dry-run consumer cares about. */
210
+ warnings: string[];
211
+ surfaces: DeployPlanSurfaces | null;
212
+ dependencies: DeployPlanDependencies | null;
213
+ resume: DeployPlanResume | null;
214
+ }
215
+ /** Strip the tiny ANSI color wrappers (`bold`/`dim`/`g` from output.ts) so a warning captured for the
216
+ * plan reads as plain text — a JSON consumer has no terminal to render escape codes against. */
217
+ export declare function stripAnsiForPlan(s: string): string;
218
+ //# sourceMappingURL=deploy-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-plan.d.ts","sourceRoot":"","sources":["../src/deploy-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** Bump whenever a field is added, renamed, or reinterpreted — a consumer keys behavior off this,
2
+ * not off the CLI's own package version (that changes for reasons unrelated to this shape).
3
+ *
4
+ * `as const` is load-bearing, not decoration: a plain `= 1` is a WIDENING literal, so the moment it
5
+ * is read into an un-annotated intermediate object (the resume lane builds one and spreads it into
6
+ * several emits) the property degrades to `number` and stops satisfying `DeployPlan`. Keep it.
7
+ *
8
+ * v2 (this change): added `custody.renderer` and `custody.image`; reinterpreted `transactions.legs`
9
+ * to end with `'deploy'` whenever it is non-null (previously silent about the deploy tx itself —
10
+ * see each field's own doc comment). A consumer keying behavior off `legs`' shape needs to know
11
+ * which version it's reading. */
12
+ export const DEPLOY_PLAN_SCHEMA_VERSION = 2;
13
+ // eslint-disable-next-line no-control-regex
14
+ const ANSI = /\x1b\[[0-9;]*m/g;
15
+ /** Strip the tiny ANSI color wrappers (`bold`/`dim`/`g` from output.ts) so a warning captured for the
16
+ * plan reads as plain text — a JSON consumer has no terminal to render escape codes against. */
17
+ export function stripAnsiForPlan(s) {
18
+ return s.replace(ANSI, '');
19
+ }
20
+ //# sourceMappingURL=deploy-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-plan.js","sourceRoot":"","sources":["../src/deploy-plan.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;kCAUkC;AAClC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAU,CAAC;AA4MrD,4CAA4C;AAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAC;AAE/B;iGACiG;AACjG,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC"}
package/dist/deps.d.ts CHANGED
@@ -1,46 +1,13 @@
1
- import { type Address, type DependencyReadClient, type Hex, type ParsedDependencyRef, type RegistryDependencyDetails } from '@artblocks/abx-sdk';
1
+ /**
2
+ * The `--dep` flag grammar for `abx deploy-code` — the one CLI-local piece of the dependency
3
+ * lane. Everything downstream of a parsed ref (registry-pointer resolution, setup-multicall leg
4
+ * composition, the selection-time registry check) lives in `@artblocks/abx-sdk`'s `deps.ts`.
5
+ */
6
+ import { type ParsedDependencyRef } from '@artblocks/abx-sdk';
2
7
  /**
3
8
  * Parse the accumulated `--dep` flag value (repeats comma-join — see flags.ts — and each
4
9
  * value may itself be comma-separated) into ordered refs. Order is load-bearing: the first
5
10
  * ref becomes dependency index 0 — the runtime, by convention.
6
11
  */
7
12
  export declare function parseDepFlag(value: string | undefined): ParsedDependencyRef[];
8
- /**
9
- * The registry pointer a deploy with ≥1 Registry-resolution dep should set: an explicit
10
- * `--dep-registry` wins (validated), else the chain's known AB registry (env-overridable),
11
- * else none — the caller WARNS and skips the leg (soft pointer; the resolver falls back to
12
- * its built-in CDN map). Never a blocker.
13
- */
14
- export declare function resolveDepRegistryPointer(flagValue: string | undefined, chainId: number): {
15
- registry: Address | null;
16
- source: 'flag' | 'default' | 'none';
17
- };
18
- /**
19
- * The dependency legs of the setup multicall: one `setDependency(i, resolution, ref)` per
20
- * dep in index order, plus the `setDependencyRegistry` leg when a pointer resolved. These
21
- * ride the SAME atomic setup multicall as script chunks/schemas/mints, in every signing lane.
22
- */
23
- export declare function dependencySetupCalls(deps: ParsedDependencyRef[], registry: Address | null): Hex[];
24
- /** One dep's selection-time verdict (Registry-resolution deps only — OnChain refs never touch a registry). */
25
- export type DepCheck = {
26
- dep: string;
27
- status: 'found';
28
- details: RegistryDependencyDetails;
29
- } | {
30
- dep: string;
31
- status: 'not-found';
32
- } | {
33
- dep: string;
34
- status: 'skipped';
35
- };
36
- /**
37
- * Best-effort existence/on-chain-ness check of every Registry-resolution dep against the
38
- * pointer registry. A revert or an empty record ⇒ `not-found` (a warning — the owner may
39
- * intend a custom registry). A transport failure ⇒ the remaining checks are `skipped` and
40
- * `rpcOk: false` — one info line, never an error: the deploy proceeds regardless.
41
- */
42
- export declare function checkRegistryDeps(client: DependencyReadClient, registry: Address, deps: ParsedDependencyRef[]): Promise<{
43
- checks: DepCheck[];
44
- rpcOk: boolean;
45
- }>;
46
13
  //# sourceMappingURL=deps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAOA,OAAO,EAML,KAAK,OAAO,EACZ,KAAK,oBAAoB,EACzB,KAAK,GAAG,EACR,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC/B,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,EAAE,CAW7E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GACd;IAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;CAAC,CASjE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,GAAG,EAAE,CAQjG;AAED,8GAA8G;AAC9G,MAAM,MAAM,QAAQ,GAChB;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAC,GAClE;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAC,GAClC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAC,CAAC;AAErC;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,mBAAmB,EAAE,GAC1B,OAAO,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAC,CAAC,CAyB/C"}
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAqB,KAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,EAAE,CAW7E"}