@civitai/app-sdk 0.31.0 → 0.32.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.
@@ -6,19 +6,68 @@
6
6
  */
7
7
  import type { BlockCategory } from './scopes.js';
8
8
  /**
9
- * Per-instance context the host page passes to the block at mount time.
9
+ * The slot ids the host renders a block into TODAY, as a closed union.
10
10
  *
11
- * `slotId` is the only field guaranteed to be present; every other field
12
- * depends on which slot the block is rendered into. Authors who target a
13
- * specific slot should narrow to a slot-specific context type
14
- * (e.g. {@link ModelSlotContext}) rather than reaching into the index
15
- * signature.
11
+ * Mirrors `SLOT_REGISTRY` in civitai/civitai's
12
+ * `src/shared/constants/slot-registry.ts`. Keep in lockstep — the registry is
13
+ * the authority, this is the mirror.
16
14
  *
17
- * Mirrors `SlotContext` in civitai/civitai's `src/components/AppBlocks/types.ts`.
15
+ * `model.actions_extra` is registered and live but has no production producer
16
+ * yet; it is listed because the registry lists it, not because a page emits it.
18
17
  */
19
- export interface BlockContext {
18
+ export type ModelSlotId = 'model.sidebar_top' | 'model.below_images' | 'model.actions_extra';
19
+ /** The single PAGE slot (`<slug>.civit.ai` / `/apps/run/<slug>`). */
20
+ export type PageSlotId = 'app.page';
21
+ /** Every slot id this SDK version knows a context shape for. */
22
+ export type KnownSlotId = ModelSlotId | PageSlotId;
23
+ /**
24
+ * Per-instance context the host page passes to the block at mount time — a
25
+ * DISCRIMINATED UNION keyed on `slotId`.
26
+ *
27
+ * v1 shipped this as `{ slotId: string; [key: string]: unknown }`. An untyped
28
+ * index signature in a public third-party contract can't be relied on (it types
29
+ * every misspelling as a legal `unknown` read) and it leaks by accident (any
30
+ * field a producer happens to set is typed as readable, whether or not the host
31
+ * actually forwards it). It is replaced by named per-slot members:
32
+ *
33
+ * - {@link ModelSlotContext} — the three `model.*` slots.
34
+ * - {@link PageSlotContext} — the `app.page` slot.
35
+ * - {@link UnknownSlotContext} — the FORWARD-COMPAT arm: a slot this SDK
36
+ * version has no shape for. It carries `slotId` and NOTHING else, so a host
37
+ * that adds a slot cannot break a block's typecheck, and reading a field off
38
+ * it requires an explicit, visible cast rather than an accidental
39
+ * index-signature read.
40
+ *
41
+ * NARROW WITH THE GUARDS, not with a bare `===`. {@link isModelSlotContext} /
42
+ * {@link isPageSlotContext} narrow exactly (and are real RUNTIME checks — the
43
+ * value crossed a `postMessage` boundary, so its static type is a claim, not a
44
+ * fact). A bare `ctx.slotId === 'model.sidebar_top'` cannot exclude
45
+ * {@link UnknownSlotContext}, whose `slotId` is a plain `string`, so it narrows
46
+ * to `ModelSlotContext | UnknownSlotContext` and the model fields stay
47
+ * unreadable. That is the cost of staying open to new slots; the guards pay it.
48
+ *
49
+ * Mirrors `BlockSlotContext` in civitai/civitai's
50
+ * `src/components/AppBlocks/types.ts`.
51
+ *
52
+ * @example
53
+ * const { context } = useBlockContext();
54
+ * if (isModelSlotContext(context)) {
55
+ * // context.modelId is `number` here
56
+ * submit({ kind: 'textToImage', modelId: context.modelId, ... });
57
+ * }
58
+ */
59
+ export type BlockContext = ModelSlotContext | PageSlotContext | UnknownSlotContext;
60
+ /**
61
+ * A slot this SDK version has no named shape for — the forward-compat arm of
62
+ * {@link BlockContext}.
63
+ *
64
+ * DELIBERATELY has no index signature. A host that adds a slot id keeps
65
+ * typechecking (the arm absorbs it), but nothing becomes silently readable: to
66
+ * read a field the author must cast, which is a visible, reviewable act rather
67
+ * than the accidental `ctx.whatever` an index signature permits.
68
+ */
69
+ export interface UnknownSlotContext {
20
70
  slotId: string;
21
- [key: string]: unknown;
22
71
  }
23
72
  /**
24
73
  * Snapshot of the effective Checkpoint the block will generate against —
@@ -256,38 +305,41 @@ export interface ShowcaseImage {
256
305
  * The shape the host delivers for the three model-page slots
257
306
  * (`model.sidebar_top`, `model.below_images`, `model.actions_extra`).
258
307
  *
259
- * Optional fields are present when the host has them: `viewerUserId` is
260
- * `null` for anonymous viewers, and `viewerUsername`/`viewerStatus`/`theme`
261
- * are only filled when a viewer is signed in or the host's theme is
262
- * resolved.
308
+ * Every field here is one the host's `projectBlockInitContext` ALLOWLIST
309
+ * actually forwards — see the note below; the v1 shape of this interface named
310
+ * five more that no longer arrive. (They DID arrive once: before the
311
+ * data-minimisation projection landed, `IframeHost` spread the entire producer
312
+ * context onto the wire, which is what the allowlist was written to stop. So the
313
+ * accurate claim is "not forwarded since the projection", not "never sent".)
263
314
  *
264
- * Block authors using these slots should narrow:
315
+ * Narrow to it with {@link isModelSlotContext}:
265
316
  *
266
- * const ctx = useBlockContext().context as ModelSlotContext;
317
+ * const { context } = useBlockContext();
318
+ * if (isModelSlotContext(context)) { context.modelId // number }
267
319
  *
268
- * Mirrors `ModelSlotContext` in civitai/civitai. Keep in lockstep — adding
269
- * a field on either side without the other will silently degrade.
320
+ * Mirrors `ModelSlotContext` in civitai/civitai, INTERSECTED WITH that repo's
321
+ * `CONTEXT_ALLOWLIST` (`src/components/AppBlocks/projectBlockInit.ts`). Keep in
322
+ * lockstep — and note the two sides are not the same set: the host's interface
323
+ * describes what a PRODUCER passes to `<BlockSlot>`, this one describes what
324
+ * survives the projection and reaches the iframe.
270
325
  */
271
- export interface ModelSlotContext extends BlockContext {
272
- slotId: 'model.sidebar_top' | 'model.below_images' | 'model.actions_extra';
326
+ export interface ModelSlotContext {
327
+ slotId: ModelSlotId;
273
328
  modelId: number;
274
329
  modelVersionId: number;
275
330
  modelName: string;
276
331
  modelType: string;
277
332
  modelNsfwLevel: number;
278
- creatorUserId: number;
279
- viewerUserId: number | null;
280
- viewerNsfwEnabled: boolean;
281
- viewerUsername?: string | null;
282
- /** Coarse status surface; authoritative re-check is `/api/v1/blocks/me`. */
283
- viewerStatus?: 'active' | 'banned' | 'muted';
284
333
  /** Host-page color scheme; lets the iframe match without a flicker. */
285
- theme?: 'light' | 'dark';
334
+ theme?: Theme;
286
335
  /**
287
336
  * Effective Checkpoint after publisher-default ∪ viewer-override merge.
288
337
  * `null` when no checkpoint is configured (publisher hasn't set one AND
289
338
  * the bound model isn't a Checkpoint itself) — block should render a
290
339
  * "missing checkpoint" state and prompt the user to ask the model owner.
340
+ *
341
+ * The host sets this EXPLICITLY on every model-slot init (never spread from
342
+ * the producer), so on a model slot it is always present — `null` or a value.
291
343
  */
292
344
  checkpoint?: BlockCheckpointInfo | null;
293
345
  /**
@@ -299,6 +351,76 @@ export interface ModelSlotContext extends BlockContext {
299
351
  */
300
352
  showcaseImages?: ShowcaseImage[];
301
353
  }
354
+ /**
355
+ * The shape the host delivers for the PAGE slot (`app.page`) — a per-app page
356
+ * at `<slug>.civit.ai` / `/apps/run/<slug>`.
357
+ *
358
+ * 🔴 This member is NEW in the SDK, not new on the wire. `PageBlockHost` has
359
+ * been sending exactly this object since the page surface shipped; v1's
360
+ * `BlockContext` index signature simply meant page blocks read it untyped. So
361
+ * adding it changes no runtime behaviour on either side — it only stops page
362
+ * authors from guessing.
363
+ *
364
+ * Unlike the model slots, this context is NOT run through
365
+ * `projectBlockInitContext` — `PageBlockHost.buildContext()` builds it directly,
366
+ * which is why `viewerUserId` / `viewerUsername` DO arrive here even though the
367
+ * model-slot allowlist drops them.
368
+ *
369
+ * Mirrors `PageContext` in civitai/civitai's `src/components/AppBlocks/types.ts`.
370
+ */
371
+ export interface PageSlotContext {
372
+ slotId: PageSlotId;
373
+ /** Always `'none'` — a page slot is not bound to an entity. */
374
+ entityType?: 'none';
375
+ /** The app's slug (the `<slug>` in `<slug>.civit.ai`). */
376
+ slug: string;
377
+ /**
378
+ * The path segment BELOW the app root, from `router.query.path` — `''` on the
379
+ * app's own index. Lets a page app route internally without owning history.
380
+ */
381
+ subPath: string;
382
+ /** `null` for an anonymous viewer. */
383
+ viewerUserId: number | null;
384
+ /** Absent/`null` when the viewer has no handle. */
385
+ viewerUsername?: string | null;
386
+ /** Host-page color scheme; lets the iframe match without a flicker. */
387
+ theme?: Theme;
388
+ }
389
+ /**
390
+ * Narrow a {@link BlockContext} to {@link ModelSlotContext}.
391
+ *
392
+ * A real runtime check, not just a cast: the context arrived over
393
+ * `postMessage`, so its static type is the host's claim about it. Returning
394
+ * `true` here is what lets the block render a useful "wrong slot" state instead
395
+ * of `undefined`-ing its way through a generation body.
396
+ *
397
+ * 🔴 IT CHECKS EVERY FIELD IT ASSERTS, not just `slotId`. A `slotId`-only check
398
+ * is not enough, because {@link UnknownSlotContext} declares `slotId: string` —
399
+ * so a structurally-incomplete known slot (`{ slotId: 'model.sidebar_top' }` and
400
+ * nothing else) is a legal `BlockContext` that COMPILES, passes a `slotId`-only
401
+ * guard, and then hands the block `ctx.modelId` typed `number` and valued
402
+ * `undefined`. The five required fields are asserted individually so the
403
+ * predicate is true exactly when the type it claims is true.
404
+ *
405
+ * No legitimate host payload is rejected by the extra checks. The only
406
+ * production producer of a model slot (civitai/civitai
407
+ * `ModelVersionDetails.tsx`) sets all five unconditionally, and the host's own
408
+ * pinned allowlist test (`__tests__/projectBlockInit.test.ts`) asserts the
409
+ * projected context carries them as an EXACT key set. A payload that somehow
410
+ * lacked one is precisely the case the block must not treat as a model context.
411
+ */
412
+ export declare function isModelSlotContext(ctx: BlockContext): ctx is ModelSlotContext;
413
+ /**
414
+ * Narrow a {@link BlockContext} to {@link PageSlotContext}. Same shape and same
415
+ * reasoning as {@link isModelSlotContext}: the three fields `PageSlotContext`
416
+ * declares REQUIRED are checked, not just `slotId`.
417
+ *
418
+ * `subPath` is checked as a string, not a NON-EMPTY one — `''` is the real value
419
+ * on an app's own index (`PageBlockHost.buildContext()`), and rejecting it would
420
+ * make every app's landing route fail to narrow. `viewerUserId` is `number |
421
+ * null`, and `null` is the genuine anonymous value.
422
+ */
423
+ export declare function isPageSlotContext(ctx: BlockContext): ctx is PageSlotContext;
302
424
  /**
303
425
  * Short-lived, block-scoped JWT minted by civitai.com for a single block
304
426
  * instance. Carries the scopes the user consented to plus an optional
@@ -321,6 +443,38 @@ export interface BlockSettings {
321
443
  /**
322
444
  * The signed-in viewer. `null` in `BlockInitPayload.viewer` means anonymous.
323
445
  *
446
+ * 🔴 DATA-MINIMISATION IN PROGRESS — never read `id`/`username` to answer "is
447
+ * someone signed in?". WHICH sign-in gate to write depends on which host you are
448
+ * against, and {@link ViewerInfo.signedIn} states the rule in full. Short
449
+ * version: gate on `viewer !== null` TODAY (that is what production emits, and
450
+ * it means exactly the same thing); move to `viewer?.signedIn === true` once the
451
+ * host counterpart ships.
452
+ *
453
+ * `BLOCK_INIT` discloses the viewer's identity to EVERY block unconditionally
454
+ * on load, before any interaction. Almost every block only needs to know
455
+ * *whether* someone is signed in (to choose between a real UI and a
456
+ * sign-in CTA) — and for that, a boolean is sufficient. A block that genuinely
457
+ * needs the identity should call {@link BlockViewer} via `GET_VIEWER` /
458
+ * `useViewer()`, which is scope-gated and auditable PER CALL rather than
459
+ * broadcast to everyone on mount.
460
+ *
461
+ * `id` and `username` are therefore `@deprecated` and will be removed in a
462
+ * later release — but they are still SENT, and this interface is still an
463
+ * OBJECT-OR-NULL on the wire. Both of those are load-bearing: the
464
+ * `isValidBlockInitPayload` guard compiled into every already-deployed block
465
+ * bundle rejects a `viewer` that is not `null` and not an object with a numeric
466
+ * `id`. A rejected `BLOCK_INIT` is re-sent — the host re-posts it every
467
+ * `INIT_RETRY_INTERVAL_MS` (400ms) until the block acks `BLOCK_READY`, ~25 times
468
+ * inside one `BLOCK_READY_TIMEOUT_MS` (10s) window — and each re-post carries
469
+ * the FRESHEST payload, not a byte-identical copy (both hosts re-point
470
+ * `buildInitPayloadRef` on every render). That freshness only ever varies
471
+ * query-resolved VALUES, never whether a required FIELD is present, so a guard
472
+ * rejecting for a missing field rejects every retry too. What happens at the end
473
+ * of the window is per-surface: `IframeHost` (model slot) has no auto-retry and
474
+ * renders `null`; `PageBlockHost` auto-retries the whole handshake twice more.
475
+ * See the `BlockInitPayload.blockId` doc in `messages.ts` for the per-surface
476
+ * detail, and the migration note in the changeset.
477
+ *
324
478
  * `status` is OPTIONAL and a coarse surface — `/api/v1/blocks/me` is the
325
479
  * authoritative re-check if the block needs to gate on it. The platform omits
326
480
  * it from BLOCK_INIT to third-party iframes for privacy (civitai #2521), so
@@ -330,8 +484,55 @@ export interface BlockSettings {
330
484
  * side (civitai/civitai `src/components/AppBlocks/types.ts`).
331
485
  */
332
486
  export interface ViewerInfo {
487
+ /**
488
+ * Whether a viewer is signed in. The MINIMAL signal, and the one this
489
+ * contract is migrating TO: it is what replaces `id`/`username` once those
490
+ * are removed. It exists as a field rather than as "non-null means signed in"
491
+ * so that a block reading it keeps compiling, and keeps meaning the same
492
+ * thing, after `id`/`username` go away.
493
+ *
494
+ * 🔴 WHICH GATE TO WRITE, AND HOW TO TELL WHICH WORLD YOU ARE IN.
495
+ *
496
+ * - TODAY, against production: write `viewer !== null`. The field is NOT on
497
+ * the wire yet. `signedIn` appears ZERO times under
498
+ * `src/components/AppBlocks/` on civitai/civitai `main`, and that repo's
499
+ * own contract test (`__tests__/projectBlockInit.test.ts`) pins the
500
+ * BLOCK_INIT viewer key set as exactly `['id', 'username']`. The field
501
+ * arrives with civitai/civitai#3707, which is OPEN and unmerged. A block
502
+ * that gates on `viewer?.signedIn` before that lands reads `undefined` —
503
+ * i.e. false — and renders its anonymous branch to every signed-in user.
504
+ * This is why the migrated starter and `hello-world` use `viewer !== null`.
505
+ * - AFTER #3707 ships: the two gates agree, and `signedIn` becomes the one to
506
+ * write. `viewer: null` stays the anonymous case, so the field is only ever
507
+ * the literal `true` on a present viewer; #3707 moves the host's pinned key
508
+ * set to `['id', 'signedIn', 'username']`.
509
+ * - HOW TO TELL, at runtime: `viewer !== null && viewer.signedIn === undefined`
510
+ * IS the probe — there is no version handshake. 🔴 Do NOT answer it with the
511
+ * dev hosts: `createMockHost` and `createLiveHost` both emit `signedIn`
512
+ * deliberately, ahead of the host, so the field is exercisable locally.
513
+ * Local presence is not evidence of production presence.
514
+ *
515
+ * OPTIONAL for exactly that reason — a host that predates #3707 omits it
516
+ * entirely, and that must stay assignable.
517
+ *
518
+ * A malformed value is not rejected at the trust boundary — see the note on
519
+ * `isValidBlockInitPayload` in `@civitai/blocks-react`: failing the whole init
520
+ * over one advisory flag would cost the block every other field. So a block
521
+ * that reads it should compare to `true` rather than treat it as a boolean.
522
+ */
523
+ signedIn?: true;
524
+ /**
525
+ * @deprecated Init-time identity disclosure. Use `useViewer()` (`GET_VIEWER`)
526
+ * for the viewer id — it is scope-gated and audited per call. Still sent;
527
+ * scheduled for removal once block adoption of `useViewer()` is measured.
528
+ */
333
529
  id: number;
530
+ /**
531
+ * @deprecated Init-time identity disclosure. Use `useViewer()` (`GET_VIEWER`)
532
+ * for the username. Still sent; scheduled for removal alongside `id`.
533
+ */
334
534
  username: string | null;
535
+ /** @deprecated Not sent by the platform to third-party iframes (civitai #2521). */
335
536
  status?: 'active' | 'banned' | 'muted';
336
537
  }
337
538
  /**
@@ -496,20 +697,22 @@ export type WorkflowBodyTextToImage = {
496
697
  params: BlockTextToImageParams;
497
698
  };
498
699
  /**
499
- * The `customComfy` member of the {@link WorkflowBody} discriminated union
500
- * (`kind: 'customComfy'`) — runs a **server-registered, code-reviewed ComfyUI
501
- * recipe** end-to-end. This is a bounded, fail-closed primitive: the iframe
502
- * NEVER sends a Comfy graph. It sends only a registered `recipe` id plus a
503
- * small, per-recipe-validated `params` object; the civitai server owns the
504
- * entire graph (built by object construction, so the prompt is a leaf value
505
- * that cannot perturb graph topology).
506
- *
507
- * Trust / safety model (all SERVER-ENFORCED — mirrors civitai's forthcoming
700
+ * The RECIPE arm of {@link WorkflowBodyCustomComfy} — runs a
701
+ * **server-registered, code-reviewed ComfyUI recipe** end-to-end. The block
702
+ * sends only a registered `recipe` id plus a small, per-recipe-validated
703
+ * `params` object; the civitai server owns the entire graph (built by object
704
+ * construction, so the prompt is a leaf value that cannot perturb graph
705
+ * topology).
706
+ *
707
+ * This is the DEFAULT arm. `mode` is optional here and a body that omits it
708
+ * lands on this arm, so every body written before the inline arm existed is
709
+ * unchanged and keeps working byte-for-byte.
710
+ *
711
+ * Trust / safety model (all SERVER-ENFORCED — mirrors civitai's
508
712
  * `blockCustomComfyBodySchema`):
509
713
  * - `recipe` is a **registered recipe id** resolved against a code-reviewed,
510
714
  * in-repo recipe registry. An unknown id is **rejected server-side, fail-
511
- * closed** (the schema enum is derived from the registry keys) — there is
512
- * no way for a block to run an arbitrary/unreviewed graph.
715
+ * closed** (the schema enum is derived from the registry keys).
513
716
  * - `params` are **bounded and validated per-recipe** by the server's
514
717
  * `.strict()` Zod param schema (extra fields rejected); each recipe pins
515
718
  * its own resources (checkpoint/LoRA/diffusion AIRs) — the block cannot
@@ -525,8 +728,20 @@ export type WorkflowBodyTextToImage = {
525
728
  * the host gates `maxBuzz <= token.buzzBudget` before submit. A single job
526
729
  * therefore cannot exceed the recipe's declared ceiling no matter what.
527
730
  */
528
- export type WorkflowBodyCustomComfy = {
731
+ export type WorkflowBodyCustomComfyRecipe = {
529
732
  kind: 'customComfy';
733
+ /**
734
+ * The arm discriminator, OPTIONAL on this arm. Omit it (the normal case) or
735
+ * set it to `'recipe'`; both land here. It exists so the inline arm can be
736
+ * selected explicitly with `mode: 'inline'`.
737
+ *
738
+ * 🔴 The host's schema declares this `z.literal('recipe').optional()` — NOT
739
+ * `.default('recipe')` — precisely so a body with no `mode` key still parses
740
+ * as a recipe. Do not "helpfully" send `mode: undefined` as a spread from an
741
+ * optional variable if you can avoid it; it parses fine today, but omitting
742
+ * the key entirely is the shape every deployed block sends.
743
+ */
744
+ mode?: 'recipe';
530
745
  /**
531
746
  * A **registered recipe id** (e.g. `'seamless-pano-360'`). Resolved server-
532
747
  * side against the code-reviewed recipe registry; an unknown id is rejected
@@ -554,6 +769,184 @@ export type WorkflowBodyCustomComfy = {
554
769
  accountType?: BuzzAccountType;
555
770
  };
556
771
  };
772
+ /**
773
+ * One node of a ComfyUI `/prompt` graph, as it travels on the wire.
774
+ *
775
+ * Mirrors the host's `inlineComfyNodeSchema`, which is `.strict()` with exactly
776
+ * these two fields — so a node carrying anything else (a `_meta` key from a
777
+ * ComfyUI export, for instance) is REJECTED at the wire, not dropped. Strip
778
+ * extras before submitting.
779
+ *
780
+ * `inputs` values are whatever ComfyUI accepts: literals, or a
781
+ * `[nodeId, outputIndex]` pair wiring this input to another node's output.
782
+ */
783
+ export type InlineComfyNode = {
784
+ /** The ComfyUI node class, e.g. `'KSampler'`, `'CLIPTextEncode'`. */
785
+ class_type: string;
786
+ /** The node's inputs, keyed by input name. */
787
+ inputs: Record<string, unknown>;
788
+ };
789
+ /**
790
+ * The INLINE-GRAPH arm of {@link WorkflowBodyCustomComfy} (`kind:
791
+ * 'customComfy'`, `mode: 'inline'`) — the block ships **the ComfyUI graph
792
+ * itself**, so it can run a workflow the server's recipe registry does not
793
+ * contain.
794
+ *
795
+ * 🔴 THIS IS LIVE IN PRODUCTION. An earlier revision of this doc comment
796
+ * asserted that "there is no way for a block to run an arbitrary/unreviewed
797
+ * graph". That is FALSE and was removed: it predates the inline arm and cost a
798
+ * developer a dogfooding session, who trusted it over a working feature.
799
+ *
800
+ * WHO CAN USE IT. Narrower than the recipe arm, and both gates are server-side:
801
+ * - **App developers only** — the host runs `assertViewerIsAppDeveloper` on
802
+ * every `customComfy` estimate AND submit. A non-developer viewer of your
803
+ * published block cannot submit one.
804
+ * - **Page tokens only** — a model-bound token is rejected.
805
+ * So treat inline as a build/iterate primitive today. If you need a graph
806
+ * available to every viewer, get it registered as a recipe.
807
+ *
808
+ * WHAT REPLACED CODE REVIEW. A recipe is reviewed in-repo, and that review was
809
+ * the trust root. An inline graph has none, so the host substitutes three
810
+ * mechanical, fail-closed gates that all run BEFORE any spend or orchestrator
811
+ * call (a rejection therefore costs nothing):
812
+ * 1. **AIR containment.** Every AIR URN appearing anywhere in the graph —
813
+ * including as an object KEY — must also appear in {@link resources}. The
814
+ * match is whole-string (trimmed, case-insensitive), so an AIR embedded in
815
+ * a longer string does not count as declared and the body is rejected.
816
+ * 2. **Entitlement**, over the declared `resources`. Stricter than the onsite
817
+ * generator: early-access `hasAccess` and Private/epoch subscription are
818
+ * both folded in, an unresolvable version id is a hard `FORBIDDEN`, and a
819
+ * resource the site would silently SUBSTITUTE with a sibling version is
820
+ * REJECTED instead — your graph names one specific AIR and nothing rewrites
821
+ * it.
822
+ * 3. **Moderation sweep.** The audit reads the declared `prompt` AND every
823
+ * distinct string leaf in the graph, because a real graph carries its
824
+ * prompts inside `CLIPTextEncode` nodes. A clean declared `prompt` cannot
825
+ * launder a graph prompt.
826
+ *
827
+ * @example A minimal inline body.
828
+ * ```ts
829
+ * const body: WorkflowBody = {
830
+ * kind: 'customComfy',
831
+ * mode: 'inline',
832
+ * resources: ['urn:air:sdxl:checkpoint:civitai:101055@128078'],
833
+ * workflow: {
834
+ * '1': {
835
+ * class_type: 'CheckpointLoaderSimple',
836
+ * inputs: { ckpt_name: 'urn:air:sdxl:checkpoint:civitai:101055@128078' },
837
+ * },
838
+ * '2': {
839
+ * class_type: 'CLIPTextEncode',
840
+ * inputs: { text: 'a mountain at dawn', clip: ['1', 1] },
841
+ * },
842
+ * // …sampler, VAE decode, SaveImage…
843
+ * },
844
+ * prompt: 'a mountain at dawn',
845
+ * maxBuzz: 60,
846
+ * };
847
+ * ```
848
+ */
849
+ export type WorkflowBodyCustomComfyInline = {
850
+ kind: 'customComfy';
851
+ /**
852
+ * The arm discriminator. REQUIRED and exactly `'inline'` — omitting it does
853
+ * not "default to inline because a `workflow` is present"; it routes the body
854
+ * to the recipe arm, which then rejects it for a missing `recipe`.
855
+ */
856
+ mode: 'inline';
857
+ /**
858
+ * The ComfyUI `/prompt` graph, keyed by node id (the same object shape
859
+ * ComfyUI's "Save (API Format)" export produces).
860
+ *
861
+ * Server-enforced bounds — all three REJECT, none truncates:
862
+ * - at least **1** node, at most **300**;
863
+ * - the serialized graph must be at most **262144 bytes** (256 KB);
864
+ * - nesting at most **128** levels deep (the gate walks the graph, and a
865
+ * graph it cannot finish walking is one it cannot prove safe).
866
+ */
867
+ workflow: Record<string, InlineComfyNode>;
868
+ /**
869
+ * The DECLARED DOWNLOAD MANIFEST: every resource the graph needs, as an AIR
870
+ * URN. This is the array the entitlement gate runs over, and gate 1 above is
871
+ * what makes gating it sufficient.
872
+ *
873
+ * 🔴 **Declaring is not optional and it is not inferred.** Every AIR your
874
+ * graph names must ALSO be listed here or the submit is rejected — and
875
+ * anything the graph references that is missing from this list would fail at
876
+ * load time inside ComfyUI anyway. At most **24** entries, each at most 512
877
+ * characters.
878
+ *
879
+ * A `civitai`-sourced AIR MUST carry a model VERSION id
880
+ * (`urn:air:<ecosystem>:<type>:civitai:<modelId>@<versionId>`) — without one
881
+ * there is no version to check entitlement against and the body is rejected.
882
+ * The AIR grammar is read strictly here: all of
883
+ * `urn:air:<ecosystem>:<type>:<source>:<id>[@<version>]` is required, unlike
884
+ * the lenient parser used elsewhere.
885
+ *
886
+ * The permitted AIR `type`s are model WEIGHTS — `checkpoint`,
887
+ * `diffusion_model`, `unet`, `lora`, `lycoris`, `dora`, `embedding`,
888
+ * `hypernet`, `controlnet`, `vae`, `upscaler`, `clip`, `clipvision`,
889
+ * `text_encoders`, `motion` and a few siblings. An `oci:image` container AIR
890
+ * is NOT permitted. Anything the allowlist does not name is rejected rather
891
+ * than passed through.
892
+ *
893
+ * Duplicate entries are rejected, not deduped.
894
+ */
895
+ resources: string[];
896
+ /**
897
+ * The prompt to surface and to audit alongside the graph sweep. Optional
898
+ * (defaults to `''` server-side) and at most 1500 characters.
899
+ *
900
+ * It is NOT the moderation surface on its own — the graph's own strings are
901
+ * swept too — and it is NOT what generates: the text that generates is
902
+ * whatever your `CLIPTextEncode` node carries. Set it to the same text so
903
+ * what you show the user matches what ran.
904
+ */
905
+ prompt?: string;
906
+ /** Optional declared negative prompt, at most 1500 characters. Same posture as {@link prompt}. */
907
+ negativePrompt?: string;
908
+ /**
909
+ * The per-job Buzz ceiling. Required, an integer in **1…250**.
910
+ *
911
+ * 🔴 **IT IS ALSO THE STEP TIMEOUT, IN SECONDS.** The host stamps
912
+ * `stepTimeoutSeconds = maxBuzz` — there is only one number, which is exactly
913
+ * what makes the ceiling physically enforceable rather than merely asserted.
914
+ * So `maxBuzz: 10` does not buy a cheap generation; it buys a job that is
915
+ * KILLED after 10 seconds and comes back `expired`. Size it to the wall-clock
916
+ * time your graph actually needs, not to what you hope to pay.
917
+ *
918
+ * You are billed the REAL cost. Billing is post-paid against measured GPU
919
+ * seconds and settles to actual, refunding the unused remainder of the
920
+ * ceiling — so a generous `maxBuzz` costs nothing extra when the job finishes
921
+ * early. The only thing a low value guarantees is a timeout.
922
+ *
923
+ * `estimate` on an inline body echoes this number back as `cost.total`. That
924
+ * is an upper bound, not a price — surface it as "up to N Buzz". There is no
925
+ * honest per-graph estimate: the orchestrator forwards the graph opaquely and
926
+ * cannot price it.
927
+ *
928
+ * The host additionally requires `maxBuzz <= token.buzzBudget` before submit;
929
+ * over-budget comes back as a `failed` snapshot naming both numbers.
930
+ */
931
+ maxBuzz: number;
932
+ };
933
+ /**
934
+ * The `customComfy` member of the {@link WorkflowBody} discriminated union
935
+ * (`kind: 'customComfy'`) — itself a discriminated union on `mode`, mirroring
936
+ * the host's `blockCustomComfyMemberSchema`:
937
+ *
938
+ * - {@link WorkflowBodyCustomComfyRecipe} (`mode` omitted, or `'recipe'`) —
939
+ * names a server-registered, code-reviewed recipe. The default.
940
+ * - {@link WorkflowBodyCustomComfyInline} (`mode: 'inline'`) — ships the
941
+ * ComfyUI graph itself. Developer-only, page-tokens-only, and fenced by
942
+ * three server-side gates instead of code review.
943
+ *
944
+ * Both arms are `.strict()` server-side, so a body naming BOTH `recipe` and
945
+ * `workflow` is rejected by both rather than resolved to a winner. Narrow on
946
+ * `body.mode === 'inline'` — NOT on the presence of a `mode` key, and not on
947
+ * the presence of a `workflow` key.
948
+ */
949
+ export type WorkflowBodyCustomComfy = WorkflowBodyCustomComfyRecipe | WorkflowBodyCustomComfyInline;
557
950
  /**
558
951
  * A **registered orchestrator step**, submitted through the host's step
559
952
  * registry — the uniform bridge for step types that are not full generation
@@ -613,9 +1006,11 @@ export type WorkflowBodyStep = {
613
1006
  * discriminated union keyed by `kind`:
614
1007
  * - {@link WorkflowBodyTextToImage} (`kind: 'textToImage'`) — the original
615
1008
  * checkpoint/LoRA/img2img generation body (unchanged, back-compatible).
616
- * - {@link WorkflowBodyCustomComfy} (`kind: 'customComfy'`) — a bounded,
617
- * server-registered ComfyUI recipe (post-paid; the iframe never sends a
618
- * graph).
1009
+ * - {@link WorkflowBodyCustomComfy} (`kind: 'customComfy'`) — post-paid ComfyUI,
1010
+ * itself a union on `mode`: a bounded, server-registered
1011
+ * {@link WorkflowBodyCustomComfyRecipe} (the default), or a
1012
+ * {@link WorkflowBodyCustomComfyInline} graph the block ships itself
1013
+ * (`mode: 'inline'`; developer-only).
619
1014
  * - {@link WorkflowBodyStep} (`kind: 'step'`) — a bounded, server-registered
620
1015
  * orchestrator step (the host's step registry; billing mode and moderation
621
1016
  * posture are declared per entry).
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/blocks/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/blocks/types.ts"],"names":[],"mappings":"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"}