@artblocks/abx-token-api 0.1.0-alpha.5 → 0.1.0-alpha.51

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 (51) hide show
  1. package/CHANGELOG.md +165 -0
  2. package/dist/code.d.ts +33 -12
  3. package/dist/code.d.ts.map +1 -1
  4. package/dist/code.js +68 -56
  5. package/dist/code.js.map +1 -1
  6. package/dist/{art.d.ts → content.d.ts} +5 -5
  7. package/dist/content.d.ts.map +1 -0
  8. package/dist/{art.js → content.js} +6 -6
  9. package/dist/content.js.map +1 -0
  10. package/dist/control-plane.d.ts +24 -13
  11. package/dist/control-plane.d.ts.map +1 -1
  12. package/dist/control-plane.js +289 -43
  13. package/dist/control-plane.js.map +1 -1
  14. package/dist/dashboard.d.ts.map +1 -1
  15. package/dist/dashboard.js +55 -8
  16. package/dist/dashboard.js.map +1 -1
  17. package/dist/deps.d.ts +28 -110
  18. package/dist/deps.d.ts.map +1 -1
  19. package/dist/deps.js +34 -184
  20. package/dist/deps.js.map +1 -1
  21. package/dist/index.d.ts +8 -8
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +13 -11
  24. package/dist/index.js.map +1 -1
  25. package/dist/metadata.d.ts +87 -4
  26. package/dist/metadata.d.ts.map +1 -1
  27. package/dist/metadata.js +343 -105
  28. package/dist/metadata.js.map +1 -1
  29. package/dist/resolve.d.ts +0 -2
  30. package/dist/resolve.d.ts.map +1 -1
  31. package/dist/resolve.js +0 -5
  32. package/dist/resolve.js.map +1 -1
  33. package/dist/server.d.ts +5 -2
  34. package/dist/server.d.ts.map +1 -1
  35. package/dist/server.js +282 -71
  36. package/dist/server.js.map +1 -1
  37. package/dist/watcher.d.ts +1 -1
  38. package/dist/watcher.d.ts.map +1 -1
  39. package/dist/watcher.js +137 -8
  40. package/dist/watcher.js.map +1 -1
  41. package/package.json +9 -8
  42. package/dist/abxjs.d.ts +0 -13
  43. package/dist/abxjs.d.ts.map +0 -1
  44. package/dist/abxjs.js +0 -49
  45. package/dist/abxjs.js.map +0 -1
  46. package/dist/art.d.ts.map +0 -1
  47. package/dist/art.js.map +0 -1
  48. package/dist/inline.d.ts +0 -19
  49. package/dist/inline.d.ts.map +0 -1
  50. package/dist/inline.js +0 -23
  51. package/dist/inline.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * The /v1 control plane + the service descriptor — the resolver's ONE write surface, speaking the
3
- * provider-neutral interface pinned by specs/self-host-toolkit/remote-services.md. Everything here
4
- * is index/metadata control (register, list, deregister, reindex, status, effect publishes): the
3
+ * provider-neutral interface pinned by site/content/docs/using-abx/remote-services.mdx. Everything here
4
+ * is index/metadata control (register, list, deregister, reindex, status, artifact registration): the
5
5
  * bearer token never signs anything on-chain, so the "no signing key on the host" rule is intact.
6
6
  *
7
7
  * This module never imports server.ts (one-way dependency), which is why the shared HTTP helpers
@@ -11,17 +11,64 @@ import { timingSafeEqual } from 'node:crypto';
11
11
  import { readFileSync } from 'node:fs';
12
12
  import { join, resolve } from 'node:path';
13
13
  import { fileURLToPath } from 'node:url';
14
- import { discoverDeployBlock, normalizeAttributes, renderArtifactKey, resolveChain, CONTROL_PLANE_INTERFACE, EFFECTS_PUBLISH_INTERFACE, TOKEN_API_INTERFACE, } from '@artblocks/abx-sdk';
14
+ import { discoverDeployBlock, findAnchorGenerationById, findAnchorGenerationForProject, isBoundOutput, locatorRejectionReason, normalizeAttributes, renderArtifactKey, resolveChain, summarizeAnchorGeneration, BOUND_ARTIFACT_MAX_BYTES, CONTROL_PLANE_INTERFACE, TOKEN_API_INTERFACE, } from '@artblocks/abx-sdk';
15
15
  import { notifyEffects, watchIntervalMs } from './watcher.js';
16
16
  export function sendJson(res, status, body) {
17
17
  res.writeHead(status, { 'content-type': 'application/json; charset=utf-8' });
18
18
  res.end(JSON.stringify(body, null, 2));
19
19
  }
20
20
  /** Every non-2xx control-plane response: `{error: <human>, code: <machine>}` — clients key off
21
- * `code`, never off prose (specs/self-host-toolkit/remote-services.md → Errors). */
22
- function sendError(res, status, code, message, extra) {
21
+ * `code`, never off prose (site/content/docs/using-abx/remote-services.mdx → Errors). */
22
+ export function sendError(res, status, code, message, extra) {
23
23
  sendJson(res, status, { error: message, code, ...extra });
24
24
  }
25
+ /**
26
+ * How long a register/reindex may hold the HTTP request open before answering `202 backfilling` and
27
+ * finishing in the background. Registration is durable BEFORE catch-up starts, so the deadline only
28
+ * decides who waits — never whether the add survives.
29
+ *
30
+ * The default keeps the common case synchronous (a fresh deploy is a few-hundred-block window: the
31
+ * client gets real counts, which is the honest answer) and stops the pathological case from holding a
32
+ * socket for minutes (a cold replay of an old contract on a rate-limited RPC — the case where the
33
+ * client used to time out and re-POST, doubling the load on the RPC that was already the problem).
34
+ */
35
+ function registerDeadlineMs() {
36
+ const raw = process.env.ABX_REGISTER_DEADLINE_MS;
37
+ if (raw === undefined || raw === '')
38
+ return 8_000;
39
+ const n = Number(raw);
40
+ return Number.isFinite(n) && n >= 0 ? n : 8_000;
41
+ }
42
+ /** Resolve to the catch-up result if it finishes within the deadline, else `undefined` — the work
43
+ * keeps running either way (the caller must attach its own completion/failure handling). */
44
+ async function withinDeadline(work, ms) {
45
+ let timer;
46
+ const deadline = new Promise((resolve) => {
47
+ timer = setTimeout(() => resolve(undefined), ms);
48
+ });
49
+ try {
50
+ // The rejection case belongs to the caller's handler; here a failure just means "not finished
51
+ // in time with a result", and the caller reports the recorded status instead.
52
+ return await Promise.race([work.catch(() => undefined), deadline]);
53
+ }
54
+ finally {
55
+ clearTimeout(timer);
56
+ }
57
+ }
58
+ /** The lifecycle state to report for a project right now — never a silent nothing (see
59
+ * `SelfHostIndexer.indexStatus` for what an unstamped registration reads as). */
60
+ function indexStatusOf(ctx, address) {
61
+ return ctx.indexer.indexStatus(address).status;
62
+ }
63
+ /** The lifecycle fields shared by the status route and the register/reindex responses. */
64
+ function lifecycle(ctx, address) {
65
+ const row = ctx.indexer.indexStatus(address);
66
+ return {
67
+ status: row.status,
68
+ ...(row.errorClass ? { error: { class: row.errorClass, ...(row.errorMessage ? { message: row.errorMessage } : {}) } } : {}),
69
+ attempts: row.attempts,
70
+ };
71
+ }
25
72
  /**
26
73
  * The ONE bearer guard for every gated route: 404 code `disabled` when no token is configured on
27
74
  * the host (the write surface honestly doesn't exist — the descriptor omits the control-plane
@@ -70,8 +117,67 @@ async function readJsonBody(req, maxBytes = 64 * 1024) {
70
117
  return JSON.parse(Buffer.concat(chunks).toString('utf8'));
71
118
  }
72
119
  const ADDRESS_RE = /^0x[0-9a-fA-F]{40}$/;
120
+ /** Is this an ERC-1155 edition contract type (any of the three)? Mirrors the SDK's own
121
+ * three-way check (`reconstruct.ts`'s `isEdition`) — kept local rather than exported from the
122
+ * SDK, since this phase's SDK edits are additive-only in `service.ts`. */
123
+ function isEditionContractType(contractType) {
124
+ return contractType === '1of1-edition' || contractType === 'edition' || contractType === 'edition-code';
125
+ }
126
+ /** Sum of every token's current supply — the collector-facing "how many copies exist right now"
127
+ * figure, additive alongside `mintedCount` (which keeps meaning unchanged: `supply > 0`).
128
+ * `undefined` for a non-edition project, so a 721 status response is byte-identical to before. */
129
+ function copiesOf(s) {
130
+ if (!isEditionContractType(s.contractType))
131
+ return undefined;
132
+ let total = 0n;
133
+ for (const t of s.tokens)
134
+ total += BigInt(t.supply ?? '0');
135
+ return total.toString();
136
+ }
137
+ /**
138
+ * How many ids are live, and how many were destroyed.
139
+ *
140
+ * `mintedCount` counts live ids, so it decreases when a burnable token is destroyed.
141
+ * `burnedCount` is omitted when zero, deliberately: a project with no burns serves byte-identical
142
+ * JSON to before, which keeps a consumer's fixtures (and their parity audit) honest about what
143
+ * actually changed. Both figures are the same shape the hosted resolver settled on, so the two
144
+ * implementations agree on the wire rather than each inventing a name.
145
+ */
146
+ function tokenCounts(s) {
147
+ let live = 0;
148
+ let burned = 0;
149
+ for (const t of s.tokens) {
150
+ if (t.lifecycle === 'live')
151
+ live++;
152
+ // `'burned'` is terminal and 721-only, so this counts destroyed tokens and nothing else. An
153
+ // edition's zero-supply ids fold to `'no-live-copies'` and are deliberately not counted here:
154
+ // they may mint again, and `copies` already reports live copies for that lane.
155
+ else if (t.lifecycle === 'burned')
156
+ burned++;
157
+ }
158
+ return { mintedCount: live, ...(burned ? { burnedCount: burned } : {}) };
159
+ }
160
+ /** Explicit adapter/support claim for this service build. Append only after its tests pass. */
161
+ export const SUPPORTED_CONTRACT_GENERATION_IDS = ['abx-core-v3', 'abx-core-v2'];
162
+ const supportedGenerationIds = new Set(SUPPORTED_CONTRACT_GENERATION_IDS);
163
+ function supportedContractGenerations() {
164
+ return SUPPORTED_CONTRACT_GENERATION_IDS.map((id) => {
165
+ const generation = findAnchorGenerationById(id);
166
+ if (!generation)
167
+ throw new Error(`Unknown supported contract generation: ${id}`);
168
+ return summarizeAnchorGeneration(generation);
169
+ });
170
+ }
171
+ function contractGenerationOf(s) {
172
+ const generation = findAnchorGenerationForProject(s);
173
+ return generation && supportedGenerationIds.has(generation.id)
174
+ ? summarizeAnchorGeneration(generation)
175
+ : undefined;
176
+ }
73
177
  /** The one-line project summary shared by `GET /api/projects` and the register/reindex responses. */
74
178
  export function summarize(s) {
179
+ const copies = copiesOf(s);
180
+ const contractGeneration = contractGenerationOf(s);
75
181
  return {
76
182
  address: s.address,
77
183
  name: s.name,
@@ -79,10 +185,12 @@ export function summarize(s) {
79
185
  owner: s.owner,
80
186
  abxVersion: s.abxVersion,
81
187
  isCanonical: s.isCanonical,
188
+ ...(contractGeneration ? { contractGeneration } : {}),
82
189
  extensions: s.extensions.map((e) => e.name),
83
190
  eventCount: s.eventCount,
84
191
  tokenCount: s.tokens.length,
85
- mintedCount: s.tokens.filter((t) => t.minted).length,
192
+ ...tokenCounts(s),
193
+ ...(copies !== undefined ? { copies } : {}),
86
194
  reconstructedAt: s.reconstructedAt,
87
195
  };
88
196
  }
@@ -165,21 +273,23 @@ async function probeRunnerEffects(url) {
165
273
  }
166
274
  /**
167
275
  * `GET /.well-known/abx-service` — what this node supports, agent-readably (public, no auth).
168
- * The control-plane + effects-publish interfaces (and `auth`) appear iff the bearer token is
169
- * configured: a token-less self-host node honestly advertises no remote control surface — which
170
- * is how a client tells "disabled" from "wrong URL". `render` appears when a runner rides behind
171
- * this resolver (ABX_EFFECTS_URL); its declared effects come from a best-effort `/health` probe.
172
- * Provider identity (name, signup/docs URLs) is deployment env — no provider ships in this code.
276
+ * The control-plane interface (and `auth`) appears iff the bearer token is configured: a token-less
277
+ * self-host node honestly advertises no remote control surface — which is how a client tells
278
+ * "disabled" from "wrong URL". The artifact-registry routes ride `abx-control-plane/v1` rather than
279
+ * an id of their own: once referenced output is locator-only, accepting a registration is a database
280
+ * insert, so there is no infrastructure a node could lack that would justify a separate capability
281
+ * flag. `render` appears when a runner rides behind this resolver (ABX_EFFECTS_URL); its declared
282
+ * effects come from a best-effort `/health` probe. Provider identity (name, signup/docs URLs) is
283
+ * deployment env — no provider ships in this code.
173
284
  */
174
285
  export async function serviceDescriptor(ctx) {
175
286
  const controlPlane = !!process.env.ABX_RESOLVER_ADMIN_TOKEN;
176
287
  const pkg = packageIdentity();
177
288
  const descriptor = {
178
289
  service: { name: process.env.ABX_SERVICE_NAME ?? pkg.name, version: pkg.version },
179
- interfaces: controlPlane
180
- ? [TOKEN_API_INTERFACE, CONTROL_PLANE_INTERFACE, EFFECTS_PUBLISH_INTERFACE]
181
- : [TOKEN_API_INTERFACE],
290
+ interfaces: controlPlane ? [TOKEN_API_INTERFACE, CONTROL_PLANE_INTERFACE] : [TOKEN_API_INTERFACE],
182
291
  chains: [ctx.chainId],
292
+ contractGenerations: supportedContractGenerations(),
183
293
  baseUrl: ctx.baseUrl,
184
294
  };
185
295
  if (controlPlane) {
@@ -274,8 +384,8 @@ function checkChain(res, ctx, value) {
274
384
  * post-deploy "nudge" that pulls events that landed since.
275
385
  *
276
386
  * We deliberately do NOT factory-scope here: if you operate this node and you tell it a contract,
277
- * it does its best to index it. (Allowlisting by factory is a multi-tenant-provider concern — see
278
- * docs/10-backlog.md B6 — not a self-hosting one.)
387
+ * it does its best to index it. Factory allowlisting is a multi-tenant-provider policy, not a
388
+ * self-hosting requirement.
279
389
  */
280
390
  async function registerProject(req, res, ctx) {
281
391
  const { indexer } = ctx;
@@ -335,6 +445,8 @@ async function registerProject(req, res, ctx) {
335
445
  if (body.contentLocators !== undefined) {
336
446
  contentLocators = mergeLocators(existing?.contentLocators, body.contentLocators);
337
447
  }
448
+ // DURABLE FIRST (normative): the registration is written before any catch-up, so a flaky RPC
449
+ // mid-reconstruct can never lose the add — it becomes a slower backfill, not a failed request.
338
450
  indexer.register({
339
451
  address: address,
340
452
  chainKey: ctx.chainKey,
@@ -347,9 +459,62 @@ async function registerProject(req, res, ctx) {
347
459
  tokenAttributes,
348
460
  contentLocators,
349
461
  });
350
- const { state, elapsedMs, mode } = await indexer.reindex(address, { full });
351
- notifyEffects(address);
352
- return sendJson(res, 200, { ok: true, mode, elapsedMs, project: summarize(state) });
462
+ return catchUpAndRespond(res, ctx, address, { full });
463
+ }
464
+ /**
465
+ * Start (or join) catch-up and answer in one of the two conformant shapes: `200` with the completed
466
+ * summary when it lands inside the deadline, `202` + the lifecycle state when it doesn't. Shared by
467
+ * register and reindex so both branches behave identically.
468
+ *
469
+ * Single process, no queue: the work continues on the same event loop after the 202 goes out, and
470
+ * `reindexShared` guarantees a second POST joins that run instead of starting a rival reconstruct.
471
+ */
472
+ async function catchUpAndRespond(res, ctx, address, opts) {
473
+ const { indexer } = ctx;
474
+ const work = indexer.reindexShared(address, opts);
475
+ // Attach terminal handling ONCE, up front: whichever way we answer, a completed catch-up must
476
+ // notify the effects layer and a failed one must not surface as an unhandled rejection (its status
477
+ // is already recorded by reindex()).
478
+ let finished = false;
479
+ const settled = work.then((r) => {
480
+ finished = true;
481
+ notifyEffects(address);
482
+ return r;
483
+ }, (err) => {
484
+ finished = true;
485
+ console.error(`[control-plane] catch-up failed for ${address}: ${err.message}`);
486
+ return undefined;
487
+ });
488
+ const done = await withinDeadline(settled, registerDeadlineMs());
489
+ if (!done && !finished) {
490
+ // About to tell the client "wait": make sure the stored state says so. An INCREMENTAL catch-up
491
+ // deliberately keeps its prior status (so a live project doesn't flicker on every watcher tick) —
492
+ // but a client polling a run we deferred must not read `live` and stop waiting on stale counts.
493
+ // Guarded by `finished` so a run that just completed keeps its own `live`/`failed`.
494
+ const current = indexStatusOf(ctx, address);
495
+ if (current !== 'backfilling' && current !== 'failed') {
496
+ indexer.store.setIndexStatus(address, { status: 'backfilling' });
497
+ }
498
+ }
499
+ if (done) {
500
+ return sendJson(res, 200, {
501
+ ok: true,
502
+ mode: done.mode,
503
+ elapsedMs: done.elapsedMs,
504
+ project: { ...summarize(done.state), status: indexStatusOf(ctx, address) },
505
+ });
506
+ }
507
+ // Still working (or it failed and the client should read the class from status, not from a 500 that
508
+ // would imply the registration didn't land).
509
+ return sendJson(res, 202, {
510
+ ok: true,
511
+ accepted: true,
512
+ project: {
513
+ address,
514
+ name: indexer.getProject(address)?.name ?? null,
515
+ ...lifecycle(ctx, address),
516
+ },
517
+ });
353
518
  }
354
519
  /** `GET /v1/projects` — the projects visible to this token. Single-tenant reference: the token IS
355
520
  * the node's one credential, so it sees every registration. */
@@ -363,14 +528,23 @@ function listProjects(res, ctx) {
363
528
  catch {
364
529
  /* unknown stored key — fall back to the node's chain */
365
530
  }
531
+ // `status` (+ the error CLASS, never the hint) rides the list so a client renders
532
+ // "3 live, 1 backfilling, 1 failed (rpc_rate_limited)" without a round trip per project.
533
+ const life = lifecycle(ctx, reg.address);
534
+ const copies = state ? copiesOf(state) : undefined;
535
+ const contractGeneration = state ? contractGenerationOf(state) : undefined;
366
536
  return {
367
537
  chainId,
368
538
  address: reg.address,
369
539
  label: reg.label ?? null,
370
540
  name: state?.name ?? null,
541
+ status: life.status,
542
+ ...(life.error ? { error: { class: life.error.class } } : {}),
371
543
  eventCount: state?.eventCount ?? 0,
372
544
  tokenCount: state?.tokens.length ?? 0,
373
- mintedCount: state?.tokens.filter((t) => t.minted).length ?? 0,
545
+ ...(state ? tokenCounts(state) : { mintedCount: 0 }),
546
+ ...(copies !== undefined ? { copies } : {}),
547
+ ...(contractGeneration ? { contractGeneration } : {}),
374
548
  reconstructedAt: state?.reconstructedAt ?? null,
375
549
  };
376
550
  });
@@ -390,50 +564,91 @@ async function reindexProject(res, ctx, address) {
390
564
  if (!ctx.indexer.store.getRegistration(address)) {
391
565
  return sendError(res, 404, 'not_registered', 'not registered');
392
566
  }
393
- const { state, elapsedMs, mode } = await ctx.indexer.reindex(address, { full: true });
394
- notifyEffects(address);
395
- return sendJson(res, 200, { ok: true, mode, elapsedMs, project: summarize(state) });
567
+ return catchUpAndRespond(res, ctx, address, { full: true });
396
568
  }
397
569
  /** `GET /v1/projects/{chainId}/{address}/status` — indexing freshness: the registration's floor,
398
570
  * the projection's watermarks, and the chain watcher's liveness (all already in the store). */
399
- function projectStatus(res, ctx, address) {
571
+ async function projectStatus(res, ctx, address) {
400
572
  const reg = ctx.indexer.store.getRegistration(address);
401
573
  if (!reg)
402
574
  return sendError(res, 404, 'not_registered', 'not registered');
403
575
  const state = ctx.indexer.getProject(address);
404
576
  const pollAt = ctx.indexer.store.getMeta('watch:pollAt');
577
+ // The head the watcher last saw. Top-level (not just under `watcher`) because it's what a client
578
+ // computes lag / "N of M blocks" from, and it must not require knowing this node HAS a watcher.
579
+ const watcherHead = ctx.indexer.store.getMeta(`watch:${reg.chainKey}:head`);
580
+ // No watcher head yet (a fresh node's first backfill — exactly when a client most wants a
581
+ // percentage, and when it's most likely to be polling) ⇒ read head once, cached.
582
+ const head = watcherHead ?? (await cachedHead(ctx, reg.chainKey));
583
+ const copies = state ? copiesOf(state) : undefined;
584
+ const contractGeneration = state ? contractGenerationOf(state) : undefined;
405
585
  return sendJson(res, 200, {
406
586
  chainId: ctx.chainId,
407
587
  address: reg.address,
588
+ ...lifecycle(ctx, address),
408
589
  fromBlock: reg.fromBlock,
409
590
  toBlock: state?.toBlock ?? null,
591
+ headBlock: head,
410
592
  eventCount: state?.eventCount ?? 0,
411
593
  tokenCount: state?.tokens.length ?? 0,
412
- mintedCount: state?.tokens.filter((t) => t.minted).length ?? 0,
594
+ ...(state ? tokenCounts(state) : { mintedCount: 0 }),
595
+ ...(copies !== undefined ? { copies } : {}),
596
+ ...(contractGeneration ? { contractGeneration } : {}),
413
597
  reconstructedAt: state?.reconstructedAt ?? null,
414
598
  watcher: {
415
599
  watching: pollAt !== null,
416
600
  pollAt,
417
- head: ctx.indexer.store.getMeta(`watch:${reg.chainKey}:head`),
601
+ head: watcherHead,
418
602
  intervalMs: watchIntervalMs(),
419
603
  },
420
604
  });
421
605
  }
606
+ // Head is per-chain and moves slowly relative to a client's poll cadence, so one cached read serves
607
+ // a whole wait loop. Best-effort by design: a status read must never fail because the RPC is down —
608
+ // that's precisely when a caller needs the status.
609
+ let headCache = null;
610
+ const HEAD_CACHE_MS = 5_000;
611
+ async function cachedHead(ctx, chainKey) {
612
+ if (headCache && headCache.chainKey === chainKey && Date.now() - headCache.at < HEAD_CACHE_MS)
613
+ return headCache.head;
614
+ try {
615
+ const head = (await ctx.indexer.publicClient(chainKey).getBlockNumber()).toString();
616
+ headCache = { at: Date.now(), chainKey, head };
617
+ return head;
618
+ }
619
+ catch {
620
+ return null;
621
+ }
622
+ }
422
623
  /**
423
624
  * `POST /v1/effect-artifacts {chainId, address, tokenId, inputsHash, output?, effectKey?, locator? |
424
- * bytes_base64?, contentType?}` — a conforming effect runner publishes a render output so a
425
- * resolver that does NOT share the runner's storage disk can serve it. Two modes:
426
- * - `locator` (ipfs://<cid> | ar://<txid> | https://…): stored as a pointer; `/image` 302-redirects.
427
- * - `bytes_base64`: stored in this node's own byte custody (what traits use — they inline into JSON).
428
- * The artifact key is computed from the runner-supplied `inputsHash` — NOT recomputed from current
625
+ * bytes_base64?, contentType?}` — a conforming producer REGISTERS one render output so a resolver
626
+ * that does NOT share the producer's storage disk can serve it. A pointer registry, not an upload
627
+ * endpoint: which form is legal is decided by the output's BINDING, never by the producer
628
+ * (`site/content/docs/protocol/effects.mdx → Bound vs referenced`):
629
+ * - **referenced** (`render/image`, a video, a model, any output this node can't stitch) → `locator`
630
+ * (ipfs://<cid> | ar://<txid> | https://…), stored as a pointer; the read plane 302-redirects to
631
+ * it and never proxies. `bytes_base64` here is a 400: this node would gain no capability from the
632
+ * bytes (it redirects either way) and would acquire an object store, retention and egress.
633
+ * - **bound** (`render/traits`) → `bytes_base64`, ≤64KB, held next to the row. A locator here is
634
+ * also a 400 — the content stitches into the metadata JSON, so a locator would put a third-party
635
+ * fetch on `tokenURI` (and, historically, was recorded and then silently never stitched).
636
+ * Both refusals are loud on purpose: accept-and-drop leaves a token permanently unrenderable, or
637
+ * serves a confidently wrong answer, with nothing for the producer to act on.
638
+ * This node NEVER fetches a locator while handling the request — that would be byte custody through
639
+ * the back door plus an SSRF surface on an authed route.
640
+ * The artifact key is computed from the producer-supplied `inputsHash` — NOT recomputed from current
429
641
  * state — so a render is never re-addressed to a state it doesn't depict (a param change instead makes
430
642
  * it unreachable, the correct self-invalidation). Bearer-gated; never signs on-chain.
431
643
  */
432
644
  async function publishEffectArtifact(req, res, ctx) {
433
- const { indexer, storage } = ctx;
645
+ const { indexer } = ctx;
434
646
  let body;
435
647
  try {
436
- body = await readJsonBody(req, 8 * 1024 * 1024); // a thumbnail pushed as bytes can exceed the 64KB default
648
+ // Bound bytes are capped at 64KB; base64 inflates by 4/3, and the rest of the body is small.
649
+ // (This used to allow 8MB so a thumbnail could be pushed as bytes — exactly the custody this
650
+ // route no longer accepts.)
651
+ body = await readJsonBody(req, Math.ceil((BOUND_ARTIFACT_MAX_BYTES * 4) / 3) + 8 * 1024);
437
652
  }
438
653
  catch (err) {
439
654
  return sendError(res, 400, 'invalid_request', err.message);
@@ -458,22 +673,53 @@ async function publishEffectArtifact(req, res, ctx) {
458
673
  const effectKey = typeof body.effectKey === 'string' && body.effectKey ? body.effectKey : 'render';
459
674
  const contentType = body.contentType ?? (output === 'traits' ? 'application/json' : 'image/png');
460
675
  const key = renderArtifactKey(ctx.chainId, address, tokenId, inputsHashHex, output, effectKey);
461
- // BOTH modes register a row — the row is the `artifacts` manifest's enumeration surface;
462
- // locator NULL on the bytes mode means "the bytes live in this node's custody at the key".
676
+ // BOTH classes register a row — the row is the `artifacts` manifest's enumeration surface. What
677
+ // differs is what rides with it: a locator (referenced) or the content itself (bound).
463
678
  const row = { key, address, tokenId, effectKey, outputKey: output, inputsHash: inputsHashHex, contentType };
679
+ const bound = isBoundOutput(effectKey, output);
464
680
  const locator = typeof body.locator === 'string' && body.locator ? body.locator : undefined;
465
- if (locator) {
466
- indexer.store.putEffectArtifact({ ...row, locator });
467
- return sendJson(res, 200, { ok: true, mode: 'locator', key, output, locator });
468
- }
469
681
  const bytesB64 = typeof body.bytes_base64 === 'string' && body.bytes_base64 ? body.bytes_base64 : undefined;
470
- if (bytesB64) {
682
+ if (bound) {
683
+ // Bound: content only. A locator can never work here — the bytes stitch into the metadata JSON.
684
+ if (locator) {
685
+ return sendError(res, 400, 'invalid_request', `'${effectKey}/${output}' is a BOUND output — its content stitches into the token JSON, so it must be published as body.bytes_base64, not a locator. ` +
686
+ `A locator would be recorded here and then never stitch (a wrong answer served confidently), and it would put a third-party fetch on tokenURI.`);
687
+ }
688
+ if (!bytesB64) {
689
+ return sendError(res, 400, 'invalid_request', `'${effectKey}/${output}' is a BOUND output — provide body.bytes_base64 (≤${BOUND_ARTIFACT_MAX_BYTES} bytes)`);
690
+ }
471
691
  const bytes = new Uint8Array(Buffer.from(bytesB64, 'base64'));
472
- await storage.put(key, { bytes, contentType });
473
- indexer.store.putEffectArtifact({ ...row, locator: null });
692
+ if (bytes.length > BOUND_ARTIFACT_MAX_BYTES) {
693
+ return sendError(res, 400, 'invalid_request', `bound output '${effectKey}/${output}' is ${bytes.length} bytes — the cap is ${BOUND_ARTIFACT_MAX_BYTES}. ` +
694
+ `An output this size belongs in the producer's own storage, registered as a locator.`);
695
+ }
696
+ indexer.store.putEffectArtifact({ ...row, locator: null, bytes });
697
+ // Retention is this node's POLICY, not a conformance rule (the normative half is that superseded
698
+ // content is never served or stitched — so nothing may read it). We drop eagerly: rows at older
699
+ // hashes stay as provenance, their content goes. Otherwise every param change would add another
700
+ // copy and held bytes would grow without bound instead of being capped by supply.
701
+ indexer.store.pruneBoundArtifactBytes(address, tokenId, effectKey, output, inputsHashHex);
474
702
  return sendJson(res, 200, { ok: true, mode: 'bytes', key, output, bytes: bytes.length });
475
703
  }
476
- return sendError(res, 400, 'invalid_request', 'provide body.locator (a durable ipfs://ar://https URL) or body.bytes_base64');
704
+ // Referenced: locator only. We store the pointer and never fetch it — the read plane 302s.
705
+ if (bytesB64) {
706
+ return sendError(res, 400, 'invalid_request', `'${effectKey}/${output}' is a REFERENCED output — publish it as body.locator (an https://, ipfs:// or ar:// URI reachable without your credentials). ` +
707
+ `This node serves referenced output by redirect, so holding its bytes would gain it nothing and cost it object storage. ` +
708
+ `A producer that can't expose a locator needs a storage backend that can (S3/R2, IPFS, Arweave, or its own public base), or to run co-located with the resolver.`);
709
+ }
710
+ if (!locator) {
711
+ return sendError(res, 400, 'invalid_request', `'${effectKey}/${output}' is a REFERENCED output — provide body.locator (an https://, ipfs:// or ar:// URI)`);
712
+ }
713
+ // A locator is a REACHABILITY claim (any scheme; no durability preference — a gateway URL and an
714
+ // ipfs:// are peers here). We can't prove reachability without fetching, and fetching a
715
+ // third-party URL while handling an authed write is exactly the custody/SSRF surface this route
716
+ // refuses — so we reject what's decidable from the string: private hosts, and presigned URLs that
717
+ // would pass today and rot later.
718
+ const bad = locatorRejectionReason(locator);
719
+ if (bad)
720
+ return sendError(res, 400, 'invalid_request', `body.locator rejected: ${bad}`);
721
+ indexer.store.putEffectArtifact({ ...row, locator });
722
+ return sendJson(res, 200, { ok: true, mode: 'locator', key, output, locator });
477
723
  }
478
724
  /**
479
725
  * `POST /v1/effect-status {chainId, key, address, tokenId, effectKey, status, error?, attempts?}` —
@@ -1 +1 @@
1
- {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../src/control-plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../src/control-plane.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAsBlE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ/F;AAED;wFACwF;AACxF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAe9F"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAsBjG;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ/F;AAED;wFACwF;AACxF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAe9F"}