@artblocks/abx-effects 0.1.0-alpha.2 → 0.1.0-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/harness.d.ts CHANGED
@@ -35,6 +35,21 @@ export interface EffectContext {
35
35
  export interface EffectOutputDecl {
36
36
  key: string;
37
37
  mimeType: string;
38
+ /**
39
+ * This output's content stitches into the metadata JSON (`specs/protocol/effects.md → Bound vs
40
+ * referenced`) — `traits` today. Bound output is published as capped inline **bytes**, because a
41
+ * locator can't work: the resolver assembles the content into `tokenURI`, so a pointer there would
42
+ * put a third-party fetch on its hottest read.
43
+ *
44
+ * Everything else is **referenced**: the PRODUCER holds the bytes and publishes a reachable
45
+ * locator. The resolver serves referenced output by redirect either way, so handing it the bytes
46
+ * buys no capability and costs it an object store — it refuses them with a `400`.
47
+ *
48
+ * Declared here, next to the mimeType, for the same reason the type is: the serving side must not
49
+ * have to guess. A declaration the resolver doesn't share (an effect whose bindings it doesn't
50
+ * implement) is refused loudly rather than stored unservable.
51
+ */
52
+ bound?: boolean;
38
53
  }
39
54
  export interface EffectModule {
40
55
  /** Lowercase dot-namespaced effect key (`render`, `inference.caption`, …). */
@@ -44,9 +59,10 @@ export interface EffectModule {
44
59
  run(ctx: EffectContext): Promise<Record<string, EffectOutput | null>>;
45
60
  }
46
61
  /** One artifact registration — the row a runner records (co-located, via `recordArtifact`) or
47
- * publishes (`/v1/effect-artifacts`) per declared output, so the resolver can enumerate the
48
- * token's data plane without learning any effect's internals. `locator === null` means the bytes
49
- * live in custody at `key` (shared disk, or published bytes held by the resolver). */
62
+ * registers (`/v1/effect-artifacts`) per declared output, so the resolver can enumerate the
63
+ * token's data plane without learning any effect's internals. `locator === null` means the content
64
+ * isn't reached by pointer: a BOUND output (held with the row / stitched into the JSON), or a
65
+ * co-located producer's bytes in the shared backend at `key`. */
50
66
  export interface EffectArtifactRecord {
51
67
  key: Hex;
52
68
  address: string;
@@ -64,13 +80,17 @@ export interface RunnerOptions {
64
80
  storage: StorageBackend;
65
81
  effects: EffectModule[];
66
82
  environmentId?: string;
67
- /** When set, publish each stored artifact to the resolver's control plane
83
+ /** When set, register each artifact with the resolver's control plane
68
84
  * (POST /v1/effect-artifacts) so a resolver that does NOT share this backend's disk can serve it
69
- * — a durable locator (ipfs/ar) when the backend exposes one, else the raw bytes. Bearer only;
70
- * never signs on-chain. Omit for the co-located topology (runner + resolver share one backend). */
85
+ * — a locator for referenced output, capped content for bound output
86
+ * (`specs/protocol/effects.md Bound vs referenced`). Requires a backend that exposes a locator;
87
+ * the constructor refuses otherwise. Bearer only; never signs on-chain. Omit for the co-located
88
+ * topology (runner + resolver share one backend). */
71
89
  adminToken?: string;
72
- /** Also (re)publish artifacts that already exist in storage (not just freshly-rendered ones) — the
73
- * idempotent republish that restores a resolver which lost its volume. Requires `adminToken`. */
90
+ /** Re-register artifacts that already exist in storage (not just freshly-rendered ones) — the
91
+ * idempotent repair that restores a resolver which lost its rows, and that lands a publish which
92
+ * failed transiently after the bytes were stored. **Default on** with `adminToken` (it costs a
93
+ * presence probe and a locator string); pass `false` to opt out. */
74
94
  republish?: boolean;
75
95
  /** Co-located topology: record each declared output into the resolver's artifact registry
76
96
  * directly (the shared SQLite store) — the enumeration surface the manifest lists. Recorded on
@@ -109,6 +129,17 @@ export declare class EffectRunner {
109
129
  private readonly pending;
110
130
  private draining;
111
131
  private idleWaiters;
132
+ /**
133
+ * Set once a publish fails for a reason retrying can't fix (a 4xx, an unusable locator). While
134
+ * latched, the runner renders NOTHING: a render whose publish can't land is a render that this
135
+ * runner's own idempotency probe will ask for again on the next sweep, and every sweep after —
136
+ * so continuing would burn Chromium and storage indefinitely to produce an artifact nobody can
137
+ * serve. One actionable error beats an infinite quiet loop. Cleared by fixing the config and
138
+ * restarting, or by an explicit `force` (the operator asserting they've fixed it).
139
+ */
140
+ private publishLatch;
141
+ /** The startup handshake, run once and reused (see {@link preflight}). */
142
+ private preflightOnce;
112
143
  constructor(opts: RunnerOptions);
113
144
  /** Merge a notification into the queue and kick the drain. Returns the queue depth. */
114
145
  enqueue(address: string, tokenIds?: string[], force?: boolean): number;
@@ -121,9 +152,23 @@ export declare class EffectRunner {
121
152
  private drain;
122
153
  /** All projects the resolver serves → sweep each code project. */
123
154
  sweepAll(): Promise<SweepStats>;
155
+ /**
156
+ * The startup handshake for the publish topology — run once, before any render, so a
157
+ * misconfiguration costs a round trip instead of a Chromium launch. Checks the two things a
158
+ * producer can know up front:
159
+ *
160
+ * - the descriptor declares `abx-control-plane/v1` (which now carries the artifact-registry
161
+ * routes — there is no separate publish capability to negotiate) and serves our chain;
162
+ * - our credential actually works, via one authenticated control-plane read.
163
+ *
164
+ * A service's capabilities and a caller's permissions should never be discoverable only by
165
+ * crashing after the expensive part. Descriptor trouble is a WARNING (a node may be older than
166
+ * this field, and the publish still works); a definitive credential rejection latches.
167
+ */
168
+ private preflight;
124
169
  /** Sweep one project: run every effect for every token whose current output is missing.
125
170
  * `opts.force` re-renders even when the current output already exists (the repair lane for a
126
- * bad/blank/timed-out capture — the art is otherwise deterministic, so a normal sweep skips it). */
171
+ * bad/blank/timed-out capture — the render is otherwise deterministic, so a normal sweep skips it). */
127
172
  sweepProject(address: string, tokenIds?: string[], opts?: {
128
173
  force?: boolean;
129
174
  }): Promise<SweepStats>;
@@ -135,17 +180,30 @@ export declare class EffectRunner {
135
180
  * is never here — it stays artifact-presence at the settled inputsHash. */
136
181
  private reportStatus;
137
182
  /**
138
- * Publish one stored output to the resolver's control plane so a node that doesn't share this
139
- * backend's disk can serve it. Inline-bound outputs (`INLINE_OUTPUTS` they stitch into the
140
- * metadata JSON, so the resolver needs the content, not a redirect) → always bytes. Everything
141
- * else a durable locator when the backend exposes one (ipfs/ar), so the resolver 302-redirects;
142
- * else raw bytes. `contentType` is the DECLARED mimeType.
183
+ * Register one stored output with the resolver's control plane so a node that doesn't share this
184
+ * backend's disk can serve it. The form follows the output's DECLARED class
185
+ * (`specs/protocol/effects.md → Bound vs referenced`), and the resolver enforces the same rule
186
+ * from its side this is one contract, not a preference on either end:
187
+ *
188
+ * - **bound** (`traits`) → the content, capped. The resolver stitches it into the token JSON.
189
+ * - **referenced** (`image`, `print`, …) → a reachable locator from THIS backend. We hold the
190
+ * bytes; the resolver holds a pointer and redirects. If the backend can't produce a locator
191
+ * there is no legal publish, and that is a configuration error we refuse to paper over —
192
+ * the constructor's boot guard normally catches it before a single render is spent.
193
+ *
194
+ * `contentType` is the DECLARED mimeType.
143
195
  */
144
196
  private publishArtifact;
145
197
  /** Record one artifact row into the co-located registry (`RunnerOptions.recordArtifact`). */
146
198
  private record;
147
- /** Re-publish already-stored outputs for (effect, token) at the current inputsHash — no re-render.
148
- * Restores a resolver that lost its volume (the bytes still live in this backend). */
199
+ /**
200
+ * Re-register already-stored outputs for (effect, token) at the current inputsHash no re-render.
201
+ * Cheap now that referenced output travels as a pointer: a presence probe plus a locator string,
202
+ * no byte read (only a bound output's small content is read). That is why it runs on every skip in
203
+ * the publish topology rather than being opt-in: it self-heals a resolver that lost its rows AND —
204
+ * the case that matters more — a publish that failed transiently after the bytes had already
205
+ * landed here, which the "is the artifact stored?" ledger would otherwise mark done forever.
206
+ */
149
207
  private republishFromStorage;
150
208
  /** Re-record registry rows for outputs already stored at the current inputsHash — presence probes
151
209
  * only, no byte reads, no re-render. The deterministic-image lane records its stable public URL
@@ -170,7 +228,7 @@ export declare class EffectRunner {
170
228
  * substituted URL lives under that public base. Then the still is written to the exact object the
171
229
  * on-chain pointer names (`<publicBase>/<objectKey>`) — marketplaces read the on-chain tokenURI →
172
230
  * this URL, never a resolver, and the URL is stable across re-renders (the pixels change, the
173
- * pointer doesn't → no chain write to update art). Any other host → null (the normal locator lane).
231
+ * pointer doesn't → no chain write to update content). Any other host → null (the normal locator lane).
174
232
  */
175
233
  private deterministicImageTarget;
176
234
  private getState;
@@ -1 +1 @@
1
- {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,MAAM,EAAC,MAAM,WAAW,CAAC;AAEpD,OAAO,EAYL,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,eAAe,CAAC;IAC3B,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;2EAG2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;IACZ,uFAAuF;IACvF,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;CACvE;AAED;;;;kEAIkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,GAAG,CAAC;IAChB,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;0DAKsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;yEAGqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;2FAGuF;IACvF,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,sFAAsF;IACtF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/D,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B;4EACwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;2FAEuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyB;IAC7C,kGAAkG;IAClG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD;;;6EAGyE;IACzE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqE;IAC7F,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAyB;IAC5C;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,CAAuB;IAC3C,0EAA0E;IAC1E,OAAO,CAAC,aAAa,CAA8B;gBAEvC,IAAI,EAAE,aAAa;IAkB/B,uFAAuF;IACvF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,UAAQ,GAAG,MAAM;IAWpE,gEAAgE;IAChE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB;;;2CAGuC;YACzB,KAAK;IA0BnB,kEAAkE;IAC5D,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAerC;;;;;;;;;;;;OAYG;YACW,SAAS;IAiCvB;;4GAEwG;IAClG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IA2DvG;2FACuF;IACjF,QAAQ,CACZ,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,UAAU,EACjB,KAAK,UAAQ,GACZ,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAoF7B;;gFAE4E;YAC9D,YAAY;IA0B1B;;;;;;;;;;;;;OAaG;YACW,eAAe;IAiE7B,6FAA6F;YAC/E,MAAM;IAuBpB;;;;;;;OAOG;YACW,oBAAoB;IAgBlC;;oFAEgF;YAClE,iBAAiB;IAiB/B;;;;;;;6FAOyF;IACzF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAiD/B,2FAA2F;IAC3F,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO;IAgB7C,OAAO,CAAC,WAAW;IAUnB;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;YAiBlB,QAAQ;YAKR,SAAS;CAyBxB"}
package/dist/harness.js CHANGED
@@ -1,14 +1,15 @@
1
1
  import { createServer } from 'node:http';
2
2
  import { hexToString } from 'viem';
3
- import { AbxServiceClient, buildTokenData, contentDigestOf, inputsHash, isCodeProject, renderArtifactKey, } from '@artblocks/abx-sdk';
3
+ import { AbxServiceClient, BOUND_ARTIFACT_MAX_BYTES, CONTROL_PLANE_INTERFACE, buildTokenData, contentDigestOf, inputsHash, isCodeProject, linearBackoffDelay, locatorRejectionReason, renderArtifactKey, sleep, } from '@artblocks/abx-sdk';
4
4
  /** Give up on an artifact key after this many failed runs (a deterministically-crashing script
5
5
  * must not hot-loop). In-memory: a runner restart, a NEW inputsHash (the state changed), or an
6
6
  * explicit `force` all reset it. The failure itself is reported to the resolver with the error. */
7
7
  const MAX_ATTEMPTS = 3;
8
- /** Outputs that BIND into the metadata JSON itself (the resolver needs the content, not a
9
- * redirect) published/recorded as bytes, never as a locator. Everything else prefers the
10
- * backend's durable locator (ipfs/ar/https) and falls back to bytes. */
11
- const INLINE_OUTPUTS = new Set(['traits']);
8
+ /** A publish that failed for a reason retrying can't fix (400/403/404 the wrong shape, a token
9
+ * that isn't allowed to write, a route the service doesn't serve). Distinct from a transient one
10
+ * because the response is opposite: stop, don't back off. See {@link EffectRunner.publishLatch}. */
11
+ class PublishConfigError extends Error {
12
+ }
12
13
  export class EffectRunner {
13
14
  opts;
14
15
  log;
@@ -23,10 +24,31 @@ export class EffectRunner {
23
24
  pending = new Map();
24
25
  draining = false;
25
26
  idleWaiters = [];
27
+ /**
28
+ * Set once a publish fails for a reason retrying can't fix (a 4xx, an unusable locator). While
29
+ * latched, the runner renders NOTHING: a render whose publish can't land is a render that this
30
+ * runner's own idempotency probe will ask for again on the next sweep, and every sweep after —
31
+ * so continuing would burn Chromium and storage indefinitely to produce an artifact nobody can
32
+ * serve. One actionable error beats an infinite quiet loop. Cleared by fixing the config and
33
+ * restarting, or by an explicit `force` (the operator asserting they've fixed it).
34
+ */
35
+ publishLatch = null;
36
+ /** The startup handshake, run once and reused (see {@link preflight}). */
37
+ preflightOnce = null;
26
38
  constructor(opts) {
27
39
  this.opts = opts;
28
40
  this.log = opts.log ?? ((line) => console.log(`[effects] ${line}`));
29
41
  this.service = opts.adminToken ? new AbxServiceClient({ baseUrl: opts.resolverUrl, token: opts.adminToken }) : null;
42
+ // Boot guard: in the publish topology (we don't share the resolver's disk), referenced output
43
+ // can ONLY reach it as a locator — so a backend that can't produce one has no lane, and every
44
+ // render would be wasted work ending in a 400. Refuse at construction, where the fix is cheap,
45
+ // rather than after the first expensive capture. (Enforcing beats warning: the prose version of
46
+ // this was the trap agents kept walking into.)
47
+ if (opts.adminToken && !opts.storage.locator) {
48
+ throw new Error(`this storage backend exposes no locator, so a remote resolver could never serve the renders it holds. ` +
49
+ `Either point the runner at a backend that does — cloud/S3 or R2 with a public base, ipfs, or arweave (peers; pick on operational grounds, not durability dogma) — ` +
50
+ `or run co-located with the resolver, sharing one backend and no admin token.`);
51
+ }
30
52
  }
31
53
  /** Merge a notification into the queue and kick the drain. Returns the queue depth. */
32
54
  enqueue(address, tokenIds, force = false) {
@@ -95,11 +117,70 @@ export class EffectRunner {
95
117
  }
96
118
  return total;
97
119
  }
120
+ /**
121
+ * The startup handshake for the publish topology — run once, before any render, so a
122
+ * misconfiguration costs a round trip instead of a Chromium launch. Checks the two things a
123
+ * producer can know up front:
124
+ *
125
+ * - the descriptor declares `abx-control-plane/v1` (which now carries the artifact-registry
126
+ * routes — there is no separate publish capability to negotiate) and serves our chain;
127
+ * - our credential actually works, via one authenticated control-plane read.
128
+ *
129
+ * A service's capabilities and a caller's permissions should never be discoverable only by
130
+ * crashing after the expensive part. Descriptor trouble is a WARNING (a node may be older than
131
+ * this field, and the publish still works); a definitive credential rejection latches.
132
+ */
133
+ async preflight() {
134
+ if (!this.service)
135
+ return;
136
+ if (!this.preflightOnce) {
137
+ this.preflightOnce = (async () => {
138
+ try {
139
+ const d = await this.service.descriptor();
140
+ if (!d.interfaces?.includes(CONTROL_PLANE_INTERFACE)) {
141
+ this.log(`warning: ${this.opts.resolverUrl} declares no ${CONTROL_PLANE_INTERFACE} — publishes may be refused ` +
142
+ `(interfaces: ${d.interfaces?.join(', ') || 'none'})`);
143
+ }
144
+ }
145
+ catch (err) {
146
+ this.log(`warning: could not read the service descriptor (${err.message}) — continuing`);
147
+ }
148
+ try {
149
+ await this.service.listProjects();
150
+ }
151
+ catch (err) {
152
+ const status = err.status;
153
+ if (status === 401 || status === 403 || status === 404) {
154
+ this.publishLatch =
155
+ `the resolver at ${this.opts.resolverUrl} rejected our control-plane credential (${status}) — ` +
156
+ `renders would be published nowhere. Check the admin/remote token; nothing has been rendered.`;
157
+ this.log(`publish lane unavailable: ${this.publishLatch}`);
158
+ }
159
+ else {
160
+ this.log(`warning: control-plane preflight failed (${err.message}) — treating as transient`);
161
+ }
162
+ }
163
+ })();
164
+ }
165
+ return this.preflightOnce;
166
+ }
98
167
  /** Sweep one project: run every effect for every token whose current output is missing.
99
168
  * `opts.force` re-renders even when the current output already exists (the repair lane for a
100
- * bad/blank/timed-out capture — the art is otherwise deterministic, so a normal sweep skips it). */
169
+ * bad/blank/timed-out capture — the render is otherwise deterministic, so a normal sweep skips it). */
101
170
  async sweepProject(address, tokenIds, opts) {
102
171
  const stats = { ran: 0, skipped: 0, failed: 0, errors: [] };
172
+ if (opts?.force)
173
+ this.publishLatch = null; // the operator asserting the config is fixed
174
+ await this.preflight();
175
+ // Latched: render nothing and say why once. Reporting it as a failure (rather than a silent
176
+ // skip) is the point — `abx render` surfaces it, and a hosted runner's logs carry one
177
+ // actionable line instead of a re-render loop nobody notices until the bill arrives.
178
+ if (this.publishLatch) {
179
+ stats.failed += 1;
180
+ stats.errors.push(this.publishLatch);
181
+ this.log(`skipping ${address}: ${this.publishLatch}`);
182
+ return stats;
183
+ }
103
184
  const state = await this.getState(address);
104
185
  if (!state || !isCodeProject(state))
105
186
  return stats;
@@ -133,6 +214,13 @@ export class EffectRunner {
133
214
  const line = `${item.effect.key} ${address}/${item.token.tokenId}: ${err.message}`;
134
215
  stats.errors.push(line);
135
216
  this.log(`${line} (failed)`);
217
+ // A publish that can't succeed by retrying stops the whole pool: every remaining token
218
+ // would render, fail the same way, and be re-rendered next sweep. Fix the config, restart.
219
+ if (err instanceof PublishConfigError) {
220
+ this.publishLatch = `${err.message} — rendering stopped; fix this and restart (or re-run with force)`;
221
+ this.log(`publish lane unavailable: ${this.publishLatch}`);
222
+ return;
223
+ }
136
224
  }
137
225
  }
138
226
  };
@@ -162,7 +250,7 @@ export class EffectRunner {
162
250
  // current output exists — idempotent (no re-render). Republish from storage on request so a
163
251
  // resolver that lost its volume can be restored without re-rendering (RunnerOptions.republish).
164
252
  // (No republish in the deterministic lane: the bytes already live at the public S3 key.)
165
- if (!detImg && this.opts.adminToken && this.opts.republish)
253
+ if (!detImg && this.opts.adminToken && this.opts.republish !== false)
166
254
  await this.republishFromStorage(effect, state, token, hash);
167
255
  // Registry repair lane: re-record rows for whatever is stored at the current hash — a cheap
168
256
  // local upsert per output, so a wiped artifact registry self-heals on the next sweep.
@@ -254,14 +342,41 @@ export class EffectRunner {
254
342
  }
255
343
  }
256
344
  /**
257
- * Publish one stored output to the resolver's control plane so a node that doesn't share this
258
- * backend's disk can serve it. Inline-bound outputs (`INLINE_OUTPUTS` they stitch into the
259
- * metadata JSON, so the resolver needs the content, not a redirect) → always bytes. Everything
260
- * else a durable locator when the backend exposes one (ipfs/ar), so the resolver 302-redirects;
261
- * else raw bytes. `contentType` is the DECLARED mimeType.
345
+ * Register one stored output with the resolver's control plane so a node that doesn't share this
346
+ * backend's disk can serve it. The form follows the output's DECLARED class
347
+ * (`specs/protocol/effects.md → Bound vs referenced`), and the resolver enforces the same rule
348
+ * from its side this is one contract, not a preference on either end:
349
+ *
350
+ * - **bound** (`traits`) → the content, capped. The resolver stitches it into the token JSON.
351
+ * - **referenced** (`image`, `print`, …) → a reachable locator from THIS backend. We hold the
352
+ * bytes; the resolver holds a pointer and redirects. If the backend can't produce a locator
353
+ * there is no legal publish, and that is a configuration error we refuse to paper over —
354
+ * the constructor's boot guard normally catches it before a single render is spent.
355
+ *
356
+ * `contentType` is the DECLARED mimeType.
262
357
  */
263
358
  async publishArtifact(state, token, hash, effect, decl, output, key) {
264
- const locator = INLINE_OUTPUTS.has(decl.key) ? null : ((await this.opts.storage.locator?.(key)) ?? null);
359
+ let body;
360
+ if (decl.bound) {
361
+ if (output.bytes.length > BOUND_ARTIFACT_MAX_BYTES) {
362
+ throw new PublishConfigError(`bound output '${effect.key}/${decl.key}' is ${output.bytes.length}B — over the ${BOUND_ARTIFACT_MAX_BYTES}B cap a resolver accepts. ` +
363
+ `An output this size is referenced, not bound: drop \`bound\` from its declaration so it publishes as a locator.`);
364
+ }
365
+ body = { bytes_base64: Buffer.from(output.bytes).toString('base64') };
366
+ }
367
+ else {
368
+ const locator = (await this.opts.storage.locator?.(key)) ?? null;
369
+ if (!locator) {
370
+ throw new PublishConfigError(`no locator for '${effect.key}/${decl.key}' from this storage backend — a resolver that doesn't share this disk can only serve referenced output by redirect, so it needs a URL. ` +
371
+ `Use a backend that exposes one (cloud/S3 or R2 with a public base, ipfs, arweave), or run this runner co-located with the resolver (drop the admin token and share the backend).`);
372
+ }
373
+ const bad = locatorRejectionReason(locator);
374
+ if (bad) {
375
+ throw new PublishConfigError(`this backend's locator for '${effect.key}/${decl.key}' (${locator}) won't be accepted: ${bad}. ` +
376
+ `A locator must resolve for anyone — check the public base / gateway this backend is configured with.`);
377
+ }
378
+ body = { locator };
379
+ }
265
380
  try {
266
381
  await this.service.publishEffectArtifact({
267
382
  chainId: state.chainId,
@@ -271,18 +386,29 @@ export class EffectRunner {
271
386
  output: decl.key,
272
387
  effectKey: effect.key,
273
388
  contentType: decl.mimeType,
274
- ...(locator ? { locator } : { bytes_base64: Buffer.from(output.bytes).toString('base64') }),
389
+ ...body,
275
390
  });
276
391
  }
277
392
  catch (err) {
278
- throw new Error(`publish ${decl.key} ${state.address}/${token.tokenId} ${err.message}`);
393
+ // Classify, because the two cases want opposite behavior. A 4xx will never succeed by
394
+ // retrying, and swallowing it is expensive in a way a log line hides: the work ledger is
395
+ // "custody lacks the artifact at the current hash", so an unpublished render re-renders on
396
+ // EVERY sweep, forever. A 5xx/network failure is transient — leave the artifact missing and
397
+ // let the next sweep retry it.
398
+ const status = err.status;
399
+ const detail = `publish ${decl.key} ${state.address}/${token.tokenId} → ${err.message}`;
400
+ if (status !== undefined && status >= 400 && status < 500 && status !== 408 && status !== 429) {
401
+ throw new PublishConfigError(detail);
402
+ }
403
+ throw new Error(detail);
279
404
  }
280
- this.log(`published ${decl.key} ${state.address}/${token.tokenId} (${locator ? `locator ${locator}` : `${output.bytes.length}B`})`);
405
+ this.log(`registered ${decl.key} ${state.address}/${token.tokenId} ` +
406
+ `(${'locator' in body ? `locator ${body.locator}` : `${output.bytes.length}B bound`})`);
281
407
  }
282
408
  /** Record one artifact row into the co-located registry (`RunnerOptions.recordArtifact`). */
283
409
  async record(state, token, hash, effect, decl, key, locatorOverride) {
284
- const locator = locatorOverride ??
285
- (INLINE_OUTPUTS.has(decl.key) ? null : ((await this.opts.storage.locator?.(key)) ?? null));
410
+ // A bound output's content is served from the registry row / shared custody, never a pointer.
411
+ const locator = locatorOverride ?? (decl.bound ? null : ((await this.opts.storage.locator?.(key)) ?? null));
286
412
  await this.opts.recordArtifact({
287
413
  key,
288
414
  address: state.address.toLowerCase(),
@@ -294,14 +420,28 @@ export class EffectRunner {
294
420
  locator,
295
421
  });
296
422
  }
297
- /** Re-publish already-stored outputs for (effect, token) at the current inputsHash — no re-render.
298
- * Restores a resolver that lost its volume (the bytes still live in this backend). */
423
+ /**
424
+ * Re-register already-stored outputs for (effect, token) at the current inputsHash no re-render.
425
+ * Cheap now that referenced output travels as a pointer: a presence probe plus a locator string,
426
+ * no byte read (only a bound output's small content is read). That is why it runs on every skip in
427
+ * the publish topology rather than being opt-in: it self-heals a resolver that lost its rows AND —
428
+ * the case that matters more — a publish that failed transiently after the bytes had already
429
+ * landed here, which the "is the artifact stored?" ledger would otherwise mark done forever.
430
+ */
299
431
  async republishFromStorage(effect, state, token, hash) {
300
432
  for (const decl of effect.outputs) {
301
433
  const key = this.artifactKey(state, token, hash, effect, decl.key);
302
- const stored = await this.opts.storage.get(key);
303
- if (stored)
304
- await this.publishArtifact(state, token, hash, effect, decl, stored, key);
434
+ if (decl.bound) {
435
+ const stored = await this.opts.storage.get(key);
436
+ if (stored)
437
+ await this.publishArtifact(state, token, hash, effect, decl, stored, key);
438
+ continue;
439
+ }
440
+ if (await this.opts.storage.has(key)) {
441
+ // The bytes never leave this backend, so an empty placeholder is all publishArtifact needs
442
+ // for a referenced output — it publishes the locator, not the content.
443
+ await this.publishArtifact(state, token, hash, effect, decl, { bytes: new Uint8Array(), contentType: decl.mimeType }, key);
444
+ }
305
445
  }
306
446
  }
307
447
  /** Re-record registry rows for outputs already stored at the current inputsHash — presence probes
@@ -403,7 +543,7 @@ export class EffectRunner {
403
543
  * substituted URL lives under that public base. Then the still is written to the exact object the
404
544
  * on-chain pointer names (`<publicBase>/<objectKey>`) — marketplaces read the on-chain tokenURI →
405
545
  * this URL, never a resolver, and the URL is stable across re-renders (the pixels change, the
406
- * pointer doesn't → no chain write to update art). Any other host → null (the normal locator lane).
546
+ * pointer doesn't → no chain write to update content). Any other host → null (the normal locator lane).
407
547
  */
408
548
  deterministicImageTarget(state, token) {
409
549
  const publicBase = this.opts.storage.publicBase;
@@ -452,7 +592,7 @@ export class EffectRunner {
452
592
  lastErr = err;
453
593
  }
454
594
  if (attempt < 3)
455
- await new Promise((r) => setTimeout(r, 750 * (attempt + 1)));
595
+ await sleep(linearBackoffDelay(attempt + 1, 750));
456
596
  }
457
597
  throw new Error(`resolver unreachable at ${url} — ${lastErr?.message ?? String(lastErr)} ` +
458
598
  `(is \`abx serve\` running there?)`);
@@ -1 +1 @@
1
- {"version":3,"file":"harness.js","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}
package/dist/main.js CHANGED
@@ -1,15 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import { createPublicClient, http } from 'viem';
3
- import { loadDotEnv } from '@artblocks/abx-sdk';
2
+ import { loadDotEnv } from '@artblocks/abx-sdk/node';
3
+ import { makePublicClient, readEnv } from '@artblocks/abx-sdk';
4
4
  import { resolveBackend } from '@artblocks/abx-storage';
5
5
  import { EffectRunner } from './harness.js';
6
6
  import { renderEffect } from './render.js';
7
7
  /**
8
- * The effect runner entrypoint — the deployed, long-running form (an artist runs this
8
+ * The effect runner entrypoint — the deployed, long-running form (a creator runs this
9
9
  * beside their resolver during a drop; `docker compose` or a bare `pnpm abx-effects`).
10
10
  *
11
11
  * Config (env): ABX_RESOLVER_URL (required) · ABX_RPC_URL (recommended — augment hooks
12
- * + data-backed params need reads) · ABX_EFFECTS_PORT (default 8788) ·
12
+ * + data-backed params need reads; a comma/whitespace-separated list gets the SDK's
13
+ * fallback-transport failover across endpoints — the same primitive the CLI/indexer use via
14
+ * `resolveRpcUrls` — a single URL behaves exactly as before) · ABX_EFFECTS_PORT (default 8788) ·
13
15
  * ABX_EFFECTS_INTERVAL_MS (default 300000 — the SAFETY FLOOR: the resolver's chain watcher
14
16
  * `POST /notify` is the primary trigger; the sweep only catches a missed ping / cold start) ·
15
17
  * ABX_EFFECTS_CONCURRENCY (default 1 — parallel renders while draining) ·
@@ -28,20 +30,25 @@ import { renderEffect } from './render.js';
28
30
  */
29
31
  async function main() {
30
32
  loadDotEnv();
31
- const resolverUrl = (process.env.ABX_RESOLVER_URL ?? 'http://localhost:8787').replace(/\/$/, '');
32
- const rpc = process.env.ABX_RPC_URL;
33
- const client = rpc ? createPublicClient({ transport: http(rpc) }) : null;
33
+ const resolverUrl = (readEnv('ABX_RESOLVER_URL') ?? 'http://localhost:8787').replace(/\/$/, '');
34
+ // Unset no client (this runner tolerates that — only augment hooks + data-backed params need
35
+ // reads). Set the SDK's makePublicClient, which gives a viem `fallback` transport across every
36
+ // endpoint when the value holds more than one (comma/whitespace-separated) — a single URL is
37
+ // still just `http(url)`, identical to before. An explicit `rpcUrls` override short-circuits the
38
+ // SDK's own env resolution entirely, so this stays the ONE place ABX_RPC_URL is read.
39
+ const rpcUrl = readEnv('ABX_RPC_URL');
40
+ const client = rpcUrl ? makePublicClient({ rpcUrls: rpcUrl.split(/[\s,]+/).filter(Boolean) }) : null;
34
41
  const runner = new EffectRunner({
35
42
  resolverUrl,
36
43
  client,
37
44
  storage: resolveBackend(),
38
45
  effects: [renderEffect()],
39
- environmentId: process.env.ABX_ENVIRONMENT_ID ?? 'web:any',
46
+ environmentId: readEnv('ABX_ENVIRONMENT_ID') ?? 'web:any',
40
47
  // With a token, publish each render to the resolver's control plane (locator bridge) so a runner
41
48
  // that doesn't share the resolver's disk still lands the thumbnail. Omit ⇒ co-located shared store.
42
- adminToken: process.env.ABX_RESOLVER_ADMIN_TOKEN,
43
- concurrency: Number(process.env.ABX_EFFECTS_CONCURRENCY ?? 1),
44
- authToken: process.env.ABX_EFFECTS_TOKEN,
49
+ adminToken: readEnv('ABX_RESOLVER_ADMIN_TOKEN'),
50
+ concurrency: Number(readEnv('ABX_EFFECTS_CONCURRENCY') ?? 1),
51
+ authToken: readEnv('ABX_EFFECTS_TOKEN'),
45
52
  });
46
53
  const args = process.argv.slice(2);
47
54
  if (args[0] === '--once') {
@@ -52,10 +59,10 @@ async function main() {
52
59
  console.log(`[effects] once: ran=${stats.ran} skipped=${stats.skipped} failed=${stats.failed}`);
53
60
  return;
54
61
  }
55
- const port = Number(process.env.ABX_EFFECTS_PORT ?? 8788);
62
+ const port = Number(readEnv('ABX_EFFECTS_PORT') ?? 8788);
56
63
  // 300s: the sweep is the SAFETY FLOOR (missed ping / cold start / new project), not the trigger —
57
64
  // the resolver's chain watcher POSTs /notify the moment settled state changes.
58
- const intervalMs = Number(process.env.ABX_EFFECTS_INTERVAL_MS ?? 300_000);
65
+ const intervalMs = Number(readEnv('ABX_EFFECTS_INTERVAL_MS') ?? 300_000);
59
66
  runner.startHttp(port);
60
67
  runner.startLoop(intervalMs);
61
68
  console.log(`[effects] runner up — resolver=${resolverUrl} port=${port} sweep=${intervalMs}ms (safety floor) ` +
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,kBAAkB,EAAE,IAAI,EAAC,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,KAAK,UAAU,IAAI;IACjB,UAAU,EAAE,CAAC;IACb,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjG,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACpC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvE,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC9B,WAAW;QACX,MAAM;QACN,OAAO,EAAE,cAAc,EAAE;QACzB,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS;QAC1D,iGAAiG;QACjG,oGAAoG;QACpG,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;QAChD,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,CAAC;QAC7D,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;KACzC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,OAAO,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAChG,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;IAC1D,kGAAkG;IAClG,+EAA+E;IAC/E,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,CAAC;IAC1E,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CACT,kCAAkC,WAAW,SAAS,IAAI,UAAU,UAAU,oBAAoB;QAChG,4FAA4F,CAC/F,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,oBAAqB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAC,gBAAgB,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,KAAK,UAAU,IAAI;IACjB,UAAU,EAAE,CAAC;IACb,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChG,+FAA+F;IAC/F,iGAAiG;IACjG,6FAA6F;IAC7F,iGAAiG;IACjG,sFAAsF;IACtF,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnG,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC9B,WAAW;QACX,MAAM;QACN,OAAO,EAAE,cAAc,EAAE;QACzB,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC,oBAAoB,CAAC,IAAI,SAAS;QACzD,iGAAiG;QACjG,oGAAoG;QACpG,UAAU,EAAE,OAAO,CAAC,0BAA0B,CAAC;QAC/C,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAC5D,SAAS,EAAE,OAAO,CAAC,mBAAmB,CAAC;KACxC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,OAAO,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAChG,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,CAAC;IACzD,kGAAkG;IAClG,+EAA+E;IAC/E,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,OAAO,CAAC,CAAC;IACzE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CACT,kCAAkC,WAAW,SAAS,IAAI,UAAU,UAAU,oBAAoB;QAChG,4FAA4F,CAC/F,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,oBAAqB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,YAAY,EAAe,MAAM,cAAc,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,GAAE;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAM,GAAG,YAAY,CAuC9F"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,YAAY,EAAe,MAAM,cAAc,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,GAAE;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAM,GAAG,YAAY,CAyC9F"}
package/dist/render.js CHANGED
@@ -25,8 +25,10 @@ export function renderEffect(defaults = {}) {
25
25
  return {
26
26
  key: 'render',
27
27
  outputs: [
28
+ // `traits` is the one BOUND output (its content stitches into `attributes`); `image` and
29
+ // `print` are referenced — the producer holds those bytes and publishes a locator.
28
30
  { key: 'image', mimeType: 'image/png' },
29
- { key: 'traits', mimeType: 'application/json' },
31
+ { key: 'traits', mimeType: 'application/json', bound: true },
30
32
  { key: 'print', mimeType: 'image/png' },
31
33
  ],
32
34
  async run(ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@artblocks/abx-effects",
3
- "version": "0.1.0-alpha.2",
3
+ "version": "0.1.0-alpha.20",
4
4
  "license": "MIT",
5
5
  "description": "ABX Self-Host Toolkit (Layer 3) — the reference effect runner. A deployed, long-running service hosting spine-subscribing effects (render first) behind one harness; stateless via inputsHash addressing. The playwright npm package is a normal (small, browserless) dependency pinned EXACTLY to the Dockerfile.effects base-image tag; browsers install only where captures run (`npx playwright install chromium`).",
6
6
  "type": "module",
@@ -40,8 +40,8 @@
40
40
  "dependencies": {
41
41
  "playwright": "1.61.1",
42
42
  "viem": "^2.21.0",
43
- "@artblocks/abx-storage": "0.1.0-alpha.2",
44
- "@artblocks/abx-sdk": "0.1.0-alpha.2"
43
+ "@artblocks/abx-sdk": "0.1.0-alpha.20",
44
+ "@artblocks/abx-storage": "0.1.0-alpha.20"
45
45
  },
46
46
  "scripts": {
47
47
  "build": "tsc -b tsconfig.build.json"