@rslsp1/fa-app-tools 2.0.85 → 2.0.86

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/index.js CHANGED
@@ -297,8 +297,8 @@ async function mitGeduld(anfrage) {
297
297
  letzte = res;
298
298
  if (versuch === DROSSEL_VERSUCHE - 1) break;
299
299
  const angesagt = Number(res.headers.get("retry-after"));
300
- const warten = Number.isFinite(angesagt) && angesagt > 0 ? angesagt * 1e3 : DROSSEL_BASIS_MS * 2 ** versuch;
301
- await schlafen(warten);
300
+ const warten2 = Number.isFinite(angesagt) && angesagt > 0 ? angesagt * 1e3 : DROSSEL_BASIS_MS * 2 ** versuch;
301
+ await schlafen(warten2);
302
302
  }
303
303
  return letzte;
304
304
  }
@@ -801,7 +801,7 @@ __export(index_exports, {
801
801
  module.exports = __toCommonJS(index_exports);
802
802
 
803
803
  // package.json
804
- var version = "2.0.85";
804
+ var version = "2.0.86";
805
805
 
806
806
  // src/hooks/useOnClickOutside.ts
807
807
  var import_react = require("react");
@@ -12007,8 +12007,8 @@ var BestandsBild = ({ port, mediaRef }) => {
12007
12007
  };
12008
12008
  var BatchBild = ({ port, bild }) => {
12009
12009
  const [phase] = usePortQuery(
12010
- () => port.imageLibrary ? port.imageLibrary.resolveImage(bild.media_ref) : Promise.resolve({ kind: "ok", value: null }),
12011
- [port, bild.media_ref]
12010
+ () => port.imageLibrary ? port.imageLibrary.resolveImage(bild.media_ref, bild.mime_type ?? null) : Promise.resolve({ kind: "ok", value: null }),
12011
+ [port, bild.media_ref, bild.mime_type]
12012
12012
  );
12013
12013
  return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("li", { "data-testid": `batchbild-${bild.media_ref}`, children: [
12014
12014
  phase.status === "ready" && phase.value && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
@@ -17438,9 +17438,113 @@ function createClientRunPort(options) {
17438
17438
  };
17439
17439
  }
17440
17440
 
17441
- // src/lib/szenen/hfImageLibrary.ts
17441
+ // src/lib/szenen/hfImageStore.ts
17442
17442
  init_hfStateService();
17443
17443
  init_hfEventLog();
17444
+ var LEERER_BESTAND = {
17445
+ metadata: [],
17446
+ tags: { by_category: {}, all: [] },
17447
+ meta: { consolidatedAt: 0, version: 1 }
17448
+ };
17449
+ function endungFuer(mimeType) {
17450
+ return mimeType === "image/png" ? "png" : "jpg";
17451
+ }
17452
+ function bildPfad(id, mimeType) {
17453
+ return `images/${id}.${endungFuer(mimeType)}`;
17454
+ }
17455
+ function typAusBytes(base64, vorgabe = "image/png") {
17456
+ const kopf = base64.slice(0, 16);
17457
+ if (kopf.startsWith("iVBORw0KGgo")) return "image/png";
17458
+ if (kopf.startsWith("/9j/")) return "image/jpeg";
17459
+ if (kopf.startsWith("UklGR")) return "image/webp";
17460
+ if (kopf.startsWith("R0lGOD")) return "image/gif";
17461
+ return vorgabe;
17462
+ }
17463
+ var warten = (ms) => new Promise((r) => setTimeout(r, ms));
17464
+ function createHfImageStore(options) {
17465
+ const { namespace, token } = options;
17466
+ const now = options.now ?? (() => Date.now());
17467
+ const versuche = options.leseVersuche ?? 4;
17468
+ const basisMs = options.leseBasisMs ?? 400;
17469
+ const schlafen2 = options.schlafen ?? warten;
17470
+ const abgelegt = /* @__PURE__ */ new Map();
17471
+ const bekanntePfade = /* @__PURE__ */ new Set();
17472
+ let gefalteterBestand = null;
17473
+ let laufenderAbgleich = null;
17474
+ async function bestandLesen() {
17475
+ const grundlage = gefalteterBestand ?? await loadHFState(namespace, token) ?? LEERER_BESTAND;
17476
+ const neue = await loadPendingEvents(
17477
+ namespace,
17478
+ token,
17479
+ grundlage.meta.consolidatedAt,
17480
+ bekanntePfade
17481
+ );
17482
+ const danach = neue.filter((e) => e.ts > grundlage.meta.consolidatedAt);
17483
+ gefalteterBestand = danach.length ? applyEvents(grundlage, danach) : grundlage;
17484
+ return gefalteterBestand;
17485
+ }
17486
+ function bestandAbgleichen() {
17487
+ if (!laufenderAbgleich) {
17488
+ laufenderAbgleich = bestandLesen().finally(() => {
17489
+ laufenderAbgleich = null;
17490
+ });
17491
+ }
17492
+ return laufenderAbgleich;
17493
+ }
17494
+ return {
17495
+ bestand: bestandAbgleichen,
17496
+ async putWithId(id, base64, mimeType, titel) {
17497
+ const echterTyp = typAusBytes(base64, mimeType);
17498
+ await hfUploadImage(base64, id, token, echterTyp);
17499
+ await writeHFEvent(namespace, token, "image_added", {
17500
+ id,
17501
+ prompt: titel ?? id,
17502
+ tags: [],
17503
+ timestamp: now(),
17504
+ mimeType: echterTyp
17505
+ }, []);
17506
+ abgelegt.set(id, { data: base64, mimeType: echterTyp });
17507
+ },
17508
+ async resolve(id, mimeType) {
17509
+ const eben = abgelegt.get(id);
17510
+ if (eben) return eben;
17511
+ const zustand = await bestandAbgleichen();
17512
+ const eintrag = zustand.metadata.find((e) => e.id === id);
17513
+ const typ = eintrag?.mimeType || mimeType || null;
17514
+ if (eintrag) {
17515
+ const base64 = await hfLoadImageAsBase64(
17516
+ id,
17517
+ token,
17518
+ void 0,
17519
+ eintrag.filename,
17520
+ void 0,
17521
+ eintrag.mimeType,
17522
+ false
17523
+ );
17524
+ if (base64) return { data: base64, mimeType: eintrag.mimeType || "image/jpeg" };
17525
+ }
17526
+ const pfadTyp = typ ?? "image/png";
17527
+ for (let versuch = 0; versuch < versuche; versuch += 1) {
17528
+ if (versuch > 0) await schlafen2(basisMs * 2 ** (versuch - 1));
17529
+ const base64 = await hfLoadImageAsBase64(
17530
+ id,
17531
+ token,
17532
+ void 0,
17533
+ void 0,
17534
+ void 0,
17535
+ pfadTyp,
17536
+ false
17537
+ );
17538
+ if (base64) return { data: base64, mimeType: pfadTyp };
17539
+ }
17540
+ throw new Error(
17541
+ `Das Bild ${id} ist auf HF nicht auffindbar. Geprueft: ${bildPfad(id, pfadTyp)} in ${versuche} Versuchen` + (eintrag ? " (im Bestand verzeichnet, aber nicht ladbar)." : " (nicht im Bestand verzeichnet).")
17542
+ );
17543
+ }
17544
+ };
17545
+ }
17546
+
17547
+ // src/lib/szenen/hfImageLibrary.ts
17444
17548
  function fehler2(nachricht, retryable = false) {
17445
17549
  return { kind: "error", message: nachricht, retryable };
17446
17550
  }
@@ -17455,14 +17559,16 @@ function alsBild(eintrag) {
17455
17559
  };
17456
17560
  }
17457
17561
  function createHfImageLibrary(options) {
17458
- const { namespace, token } = options;
17459
17562
  const newImageId = options.newImageId ?? (() => crypto.randomUUID());
17460
- const now = options.now ?? (() => Date.now());
17461
- const frisch = /* @__PURE__ */ new Map();
17563
+ const store = options.store ?? createHfImageStore({
17564
+ namespace: options.namespace,
17565
+ token: options.token,
17566
+ ...options.now ? { now: options.now } : {}
17567
+ });
17462
17568
  return {
17463
17569
  async listImages(query) {
17464
17570
  try {
17465
- const zustand = await loadHFState(namespace, token);
17571
+ const zustand = await store.bestand();
17466
17572
  const eintraege = zustand?.metadata ?? [];
17467
17573
  const gesucht = query?.search?.trim().toLowerCase();
17468
17574
  const gefiltert = gesucht ? eintraege.filter((e) => (e.prompt ?? "").toLowerCase().includes(gesucht) || e.id.toLowerCase().includes(gesucht)) : eintraege;
@@ -17476,54 +17582,18 @@ function createHfImageLibrary(options) {
17476
17582
  );
17477
17583
  }
17478
17584
  },
17479
- async resolveImage(mediaRef) {
17480
- const eben = frisch.get(mediaRef);
17481
- if (eben) return { kind: "ok", value: { data: eben.data, mime_type: eben.mimeType } };
17585
+ async resolveImage(mediaRef, mimeTypeHinweis) {
17482
17586
  try {
17483
- const zustand = await loadHFState(namespace, token);
17484
- const eintrag = (zustand?.metadata ?? []).find((e) => e.id === mediaRef);
17485
- if (eintrag) {
17486
- const base64 = await hfLoadImageAsBase64(
17487
- mediaRef,
17488
- token,
17489
- void 0,
17490
- eintrag.filename,
17491
- void 0,
17492
- eintrag.mimeType,
17493
- false
17494
- );
17495
- if (!base64) {
17496
- return fehler2(`Das Bild ${mediaRef} ist im Bestand verzeichnet, aber nicht ladbar.`, true);
17497
- }
17498
- return { kind: "ok", value: { data: base64, mime_type: eintrag.mimeType || "image/jpeg" } };
17499
- }
17500
- for (const mimeType of ["image/png", "image/jpeg"]) {
17501
- const base64 = await hfLoadImageAsBase64(mediaRef, token, void 0, void 0, void 0, mimeType, false);
17502
- if (base64) return { kind: "ok", value: { data: base64, mime_type: mimeType } };
17503
- }
17504
- return fehler2(
17505
- `Das Bild ${mediaRef} steht nicht im Bestand. Moeglicherweise hat der Abgleich es noch nicht uebertragen.`,
17506
- true
17507
- );
17587
+ const bild = await store.resolve(mediaRef, mimeTypeHinweis);
17588
+ return { kind: "ok", value: { data: bild.data, mime_type: bild.mimeType } };
17508
17589
  } catch (error) {
17509
- return fehler2(
17510
- `Das Bild ${mediaRef} konnte nicht geladen werden: ${error instanceof Error ? error.message : String(error)}`,
17511
- true
17512
- );
17590
+ return fehler2(error instanceof Error ? error.message : String(error), true);
17513
17591
  }
17514
17592
  },
17515
17593
  async putImage(input) {
17516
17594
  const id = newImageId();
17517
17595
  try {
17518
- await hfUploadImage(input.data, id, token, input.mime_type);
17519
- await writeHFEvent(namespace, token, "image_added", {
17520
- id,
17521
- prompt: input.title,
17522
- tags: [],
17523
- timestamp: now(),
17524
- mimeType: input.mime_type
17525
- }, []);
17526
- frisch.set(id, { mimeType: input.mime_type, data: input.data });
17596
+ await store.putWithId(id, input.data, input.mime_type, input.title);
17527
17597
  return {
17528
17598
  kind: "ok",
17529
17599
  value: { mediaRef: id, title: input.title, mimeType: input.mime_type, thumbUrl: null }
@@ -17650,6 +17720,11 @@ function alsBilder(rohe) {
17650
17720
  media_ref: b.media_ref,
17651
17721
  position: b.position,
17652
17722
  ...istText3(b.asset_id) ? { asset_id: b.asset_id } : {},
17723
+ // Der bestätigte MIME-Typ (Review 2026-08-18 §5 P2) muss durch das
17724
+ // Rücklesen hindurch: Genau hier braucht ihn der Lesepfad, um den
17725
+ // Dateipfad `images/<id>.<ext>` zu bilden, statt ihn zu erraten. Nur
17726
+ // gesetzt, wenn er im Ereignis steht — ältere Batches tragen ihn nicht.
17727
+ ...istText3(b.mime_type) ? { mime_type: b.mime_type } : {},
17653
17728
  model: b.model ?? null,
17654
17729
  seed: b.seed ?? null,
17655
17730
  width: b.width ?? null,
@@ -17731,8 +17806,6 @@ function createHfImageBatchHistory(options) {
17731
17806
  }
17732
17807
 
17733
17808
  // src/lib/szenen/hfImageBatchPersistence.ts
17734
- init_hfStateService();
17735
- init_hfEventLog();
17736
17809
  function fehler3(nachricht, retryable = true) {
17737
17810
  return { kind: "error", message: nachricht, retryable };
17738
17811
  }
@@ -17740,6 +17813,7 @@ async function legeBatchAb(options, input) {
17740
17813
  const { namespace, token, channel } = options;
17741
17814
  const newImageId = options.newImageId ?? ((batchId, position) => `${batchId}-${position}`);
17742
17815
  const now = options.now ?? (() => /* @__PURE__ */ new Date());
17816
+ const store = options.store ?? createHfImageStore({ namespace, token });
17743
17817
  const itemId = itemIdForRun(input.runId);
17744
17818
  let vorhandeneEvents;
17745
17819
  try {
@@ -17758,15 +17832,14 @@ async function legeBatchAb(options, input) {
17758
17832
  for (let offset = 0; offset < input.images.length; offset++) {
17759
17833
  const bild = input.images[offset];
17760
17834
  const id = newImageId(input.generationBatchId, startPosition + offset);
17835
+ const echterTyp = typAusBytes(bild.imageBase64, bild.mimeType);
17761
17836
  try {
17762
- await hfUploadImage(bild.imageBase64, id, token, bild.mimeType);
17763
- await writeHFEvent(namespace, token, "image_added", {
17837
+ await store.putWithId(
17764
17838
  id,
17765
- prompt: input.title ?? `Batch ${input.generationBatchId}`,
17766
- tags: [],
17767
- timestamp: now().getTime(),
17768
- mimeType: bild.mimeType
17769
- }, []);
17839
+ bild.imageBase64,
17840
+ echterTyp,
17841
+ input.title ?? `Batch ${input.generationBatchId}`
17842
+ );
17770
17843
  } catch (error) {
17771
17844
  return fehler3(
17772
17845
  `Bild ${offset + 1}/${input.images.length} des Batches ${input.generationBatchId} konnte nicht im Bildbestand abgelegt werden: ${error instanceof Error ? error.message : String(error)}. Bereits abgelegte Bilder dieses Versuchs (${abgelegt.length}) bleiben im Bestand, geh\xF6ren aber zu keinem Batch, solange das Batch-Ereignis nicht geschrieben ist.`
@@ -17776,6 +17849,7 @@ async function legeBatchAb(options, input) {
17776
17849
  position: startPosition + offset,
17777
17850
  media_ref: id,
17778
17851
  asset_id: id,
17852
+ mime_type: echterTyp,
17779
17853
  model: bild.model ?? null,
17780
17854
  seed: bild.seed ?? null,
17781
17855
  width: bild.width ?? null,
@@ -17819,8 +17893,11 @@ function createHfImageGenerationBatchPersistence(options) {
17819
17893
  images: input.images.map((bild) => ({
17820
17894
  imageBase64: bild.imageBase64,
17821
17895
  // Flow liefert PNG-Base64 (bestehende Konvention, s. AvatarArchitectApp.tsx
17822
- // `data:image/png;base64,${base64}`); der gemeinsame Vertrag führt
17823
- // keinen MIME-Typ je Bild.
17896
+ // `data:image/png;base64,${base64}`), und der gemeinsame Vertrag führt
17897
+ // keinen MIME-Typ je Bild. Das ist deshalb nur die **Vorgabe**:
17898
+ // Entschieden wird nach den echten Bytes (Review §5 P2) — ein künftig
17899
+ // anders kodiertes Bild läge sonst unter einer Endung, unter der es
17900
+ // niemand sucht.
17824
17901
  mimeType: "image/png",
17825
17902
  model: bild.model ?? null,
17826
17903
  seed: bild.seed ?? null,
@@ -17841,6 +17918,8 @@ function createHfImageBatchWrite(options) {
17841
17918
  title: input.title,
17842
17919
  images: input.images.map((bild) => ({
17843
17920
  imageBase64: bild.imageBase64,
17921
+ // Vorgabe, kein Urteil — der Import bringt beliebig kodierte Bilder
17922
+ // mit, und der Typ wird aus den Bytes bestimmt (Review §5 P2).
17844
17923
  mimeType: "image/png",
17845
17924
  model: bild.model ?? null,
17846
17925
  seed: bild.seed ?? null,
@@ -18129,7 +18208,17 @@ function createFlowSzenenViewPort(options) {
18129
18208
  ...options.newRunId ? { newRunId: options.newRunId } : {},
18130
18209
  ...options.now ? { now: options.now } : {}
18131
18210
  });
18132
- const imageLibrary = options.imageLibrary ?? (options.namespace?.trim() && options.token?.trim() ? createHfImageLibrary({ namespace: options.namespace, token: options.token }) : void 0);
18211
+ const hatHfZugangsdaten = Boolean(options.namespace?.trim() && options.token?.trim());
18212
+ const bildSpeicher = hatHfZugangsdaten ? createHfImageStore({
18213
+ namespace: options.namespace,
18214
+ token: options.token,
18215
+ ...options.now ? { now: () => options.now().getTime() } : {}
18216
+ }) : void 0;
18217
+ const imageLibrary = options.imageLibrary ?? (bildSpeicher ? createHfImageLibrary({
18218
+ namespace: options.namespace,
18219
+ token: options.token,
18220
+ store: bildSpeicher
18221
+ }) : void 0);
18133
18222
  const derivation = createClientDerivationPort({
18134
18223
  store: elements,
18135
18224
  derivations: createEventLogDerivationPersistence(channel),
@@ -18139,11 +18228,11 @@ function createFlowSzenenViewPort(options) {
18139
18228
  ...options.now ? { now: options.now } : {}
18140
18229
  });
18141
18230
  const imageBatchHistory = createHfImageBatchHistory({ channel });
18142
- const hatHfZugangsdaten = Boolean(options.namespace?.trim() && options.token?.trim());
18143
- const imageBatchWrite = hatHfZugangsdaten ? createHfImageBatchWrite({
18231
+ const imageBatchWrite = bildSpeicher ? createHfImageBatchWrite({
18144
18232
  namespace: options.namespace,
18145
18233
  token: options.token,
18146
18234
  channel,
18235
+ store: bildSpeicher,
18147
18236
  ...options.newBatchImageId ? { newImageId: options.newBatchImageId } : {},
18148
18237
  ...options.now ? { now: options.now } : {}
18149
18238
  }) : void 0;
@@ -18157,6 +18246,9 @@ function createFlowSzenenViewPort(options) {
18157
18246
  namespace: options.namespace,
18158
18247
  token: options.token,
18159
18248
  channel,
18249
+ // Dieselbe Instanz wie der Bildbestand — sonst wäre das gerade
18250
+ // erzeugte Bild in der Laufansicht wieder unauffindbar (R1).
18251
+ store: bildSpeicher,
18160
18252
  ...options.newBatchImageId ? { newImageId: options.newBatchImageId } : {},
18161
18253
  ...options.now ? { now: options.now } : {}
18162
18254
  }),
package/dist/index.mjs CHANGED
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  SzenenView,
3
+ applyEvents,
3
4
  createFlowSzenenViewPort
4
- } from "./chunk-MILMVOK7.mjs";
5
+ } from "./chunk-DGFMONWO.mjs";
5
6
  import "./chunk-FUY2OCVC.mjs";
6
7
  import {
7
8
  exportProjectToZip,
@@ -30,7 +31,7 @@ import {
30
31
  } from "./chunk-LFPOXNOZ.mjs";
31
32
 
32
33
  // package.json
33
- var version = "2.0.85";
34
+ var version = "2.0.86";
34
35
 
35
36
  // src/hooks/useOnClickOutside.ts
36
37
  import { useEffect } from "react";
@@ -2532,75 +2533,6 @@ function toPromptImages(images) {
2532
2533
  // src/hooks/useHFState.ts
2533
2534
  import { useState as useState11, useEffect as useEffect7, useRef as useRef8, useCallback } from "react";
2534
2535
 
2535
- // src/lib/hfReducer.ts
2536
- function applyEvent(state, event) {
2537
- if (event.v.major > 1) return state;
2538
- switch (event.type) {
2539
- // SPEZ: image_added (state/spez/hf-state.spez.yaml)
2540
- case "image_added": {
2541
- const p = event.payload;
2542
- if (state.metadata.some((m) => m.id === p.id)) return state;
2543
- return { ...state, metadata: [...state.metadata, p] };
2544
- }
2545
- // SPEZ: task_requested (global/spez/task-queue.spez.yaml)
2546
- case "task_requested": {
2547
- const p = event.payload;
2548
- if (p.expiresAt && p.expiresAt < event.ts) return state;
2549
- const openTasks = { ...state.openTasks || {} };
2550
- openTasks[p.taskId] = p;
2551
- return { ...state, openTasks };
2552
- }
2553
- // SPEZ: task_completed (global/spez/task-queue.spez.yaml)
2554
- case "task_completed": {
2555
- const p = event.payload;
2556
- if (!state.openTasks || !state.openTasks[p.taskId]) return state;
2557
- const openTasks = { ...state.openTasks };
2558
- delete openTasks[p.taskId];
2559
- return { ...state, openTasks };
2560
- }
2561
- // SPEZ: tag_upserted (state/spez/hf-state.spez.yaml) — Legacy, wird nicht mehr erzeugt
2562
- case "tag_upserted": {
2563
- const p = event.payload;
2564
- const tags = state.tags;
2565
- const cat = tags.by_category[p.category] || [];
2566
- const existing = cat.find((t) => t.value === p.value);
2567
- const updated = { label: p.label, value: p.value, is_user_created: p.is_user_created, is_deleted: p.is_deleted };
2568
- const newCat = existing ? cat.map((t) => t.value === p.value ? { ...t, ...updated } : t) : [...cat, updated];
2569
- const newAll = tags.all.some((t) => t.value === p.value && t.category === p.category) ? tags.all.map((t) => t.value === p.value && t.category === p.category ? { ...t, ...updated, category: p.category } : t) : [...tags.all, { ...updated, category: p.category }];
2570
- return { ...state, tags: { by_category: { ...tags.by_category, [p.category]: newCat }, all: newAll } };
2571
- }
2572
- // SPEZ: thumb_added (state/spez/hf-state.spez.yaml)
2573
- case "thumb_added": {
2574
- const p = event.payload;
2575
- return {
2576
- ...state,
2577
- metadata: state.metadata.map((m) => m.id === p.id ? { ...m, hasThumb: true } : m)
2578
- };
2579
- }
2580
- // SPEZ: metadata_updated (state/spez/hf-state.spez.yaml)
2581
- case "metadata_updated": {
2582
- const p = event.payload;
2583
- return {
2584
- ...state,
2585
- metadata: state.metadata.map((m) => m.id === p.id ? { ...m, ...p.delta } : m)
2586
- };
2587
- }
2588
- // SPEZ: title_set (state/spez/hf-state.spez.yaml)
2589
- case "title_set": {
2590
- const p = event.payload;
2591
- return {
2592
- ...state,
2593
- metadata: state.metadata.map((m) => m.id === p.id ? { ...m, titleTs: event.ts } : m)
2594
- };
2595
- }
2596
- default:
2597
- return state;
2598
- }
2599
- }
2600
- function applyEvents(state, events) {
2601
- return events.reduce(applyEvent, state);
2602
- }
2603
-
2604
2536
  // src/lib/hfDag.ts
2605
2537
  function buildDag(events) {
2606
2538
  const dag = /* @__PURE__ */ new Map();
package/dist/szenen.d.mts CHANGED
@@ -2,8 +2,8 @@ import { ac as SchemaError, Z as PublishFinding, Y as PublishCheckResult, aj as
2
2
  export { A as ALL_PUBLISH_RULES, C as CHAIN_EDGES, b as CHAIN_LINK_FIELDS, c as CatalogueEntry, d as ChainLinkField, e as ChainTarget, f as ChainVerdict, g as CompiledSchemas, i as ContractCheck, j as ContractCheckResult, k as ContractRunResult, l as ContractViolation, m as CreateElementInput, D as DERIVABLE_TYPES, r as DerivationEnvelope, t as DerivationFailureClass, x as DerivationPolicyPayload, y as DerivationProposal, z as DraftChainLink, E as DraftFork, F as DraftRecord, G as ElementMetadata, H as ElementRecord, J as ElementStoreContractHarness, K as ElementVersionValidation, L as FindingSeverity, O as OptionalCommand, P as PROBE_VERSION_ID, Q as ParentRelation, R as PreferredHeadOutcome, S as PreferredHeadResolution, T as PreferredHeadSelection, U as PreferredHeadSource, V as ProjectionState, W as ProjectionStatus, X as PublishCheckInput, _ as PublishRejected, $ as PublishVersionInput, a0 as PublishedVersion, a1 as REFERENCE_FIELD, a3 as ResolvePreferredHeadOptions, a4 as ResolvedVersion, a5 as ReviseMetadataInput, a6 as STYLE_PAYLOAD, a7 as STYLE_PAYLOAD_V2, a8 as SZENEN_ELEMENT_TYPES, a9 as SceneDerivationInput, aa as SceneDerivationOutcome, ab as SceneDerivationOutput, ad as SchemaValidationResult, ae as SetPreferredHeadInput, af as StoreAuthority, ag as SzenenCommandResult, ak as SzenenProjection, am as TargetModelCandidate, an as TargetModelQueries, ao as TargetModelQuery, aq as UnsupportedSchemaError, as as VersionDag, at as VersionDagError, au as VersionNode, av as VersionParentLink, aw as WriteConflict, ax as WriteDraftInput, ay as assessDerivationResponse, az as buildDerivationSystemInstruction, aA as buildDerivationUserPrompt, aB as buildVersionDag, aC as checkChainTargets, aD as checkDerivationResponse, aE as checkDraftChainMeta, aF as collectVersionRefs, aG as compileSchemas, aH as createSimulationSceneDerivationPort, aI as describeTargetModelFailure, aJ as elementStoreContractChecks, aK as formatSchemaErrors, aL as getSzenenSchemas, aM as isOk, aN as isProjectionCurrent, aO as linkFor, aP as parseDerivationResponse, aQ as preferredVersionId, aR as resolvePreferredHead, aS as resolveTargetModelOver, aT as resolverFromQueries, aU as runElementStoreContract, aV as runPublishChecks, aW as runSceneDerivation, aX as showChain, aY as validateAgainst, aZ as validateDerivationInput, a_ as validateElementVersion, a$ as validatePayload, b0 as withReference } from './storeContract-B2BDgvhN.mjs';
3
3
  import { T as TextGenerationPort, Q as QueryResult, C as CommandResult } from './contracts-DdYOMBl9.mjs';
4
4
  export { S as SIMULATION_PROVIDER, c as TextGenerationRequest, d as TextGenerationResult, g as createFakeTextGenerationPort, h as createSimulationTextGenerationPort, s as simulatedAnswerFor } from './contracts-DdYOMBl9.mjs';
5
- import { F as FlowGenerateText } from './flowTextGenerationPort-CeDUFutP.mjs';
6
- export { C as CreateFlowTextGenerationPortOptions, i as createFlowTextGenerationPort } from './flowTextGenerationPort-CeDUFutP.mjs';
5
+ import { g as HFStateSnapshot, F as FlowGenerateText } from './hfEventTypes-Dkfrcd_t.mjs';
6
+ export { C as CreateFlowTextGenerationPortOptions, t as createFlowTextGenerationPort } from './hfEventTypes-Dkfrcd_t.mjs';
7
7
  import React__default from 'react';
8
8
 
9
9
  /** Rohes JSON-Schema, wie es in der Spezifikation steht. */
@@ -662,6 +662,19 @@ interface ImageBatchPersistedImage {
662
662
  media_ref: string;
663
663
  /** Fachlich stabile Identität, soweit bekannt — hier identisch mit `media_ref` (D-118). */
664
664
  asset_id?: string;
665
+ /**
666
+ * Der **bestätigte** MIME-Typ der abgelegten Datei — Review 2026-08-18 §5 P2.
667
+ *
668
+ * Additiv nachgetragen, weil der Batch ihn beim Schreiben kennt, ihn aber
669
+ * nicht führte: Der Lesepfad musste die Dateiendung deshalb über zwei
670
+ * Varianten erraten. Geraten wird nichts mehr — der Typ stammt aus den
671
+ * tatsächlichen Bildbytes (`typAusBytes`), nicht aus einer Annahme, und
672
+ * bestimmt den Pfad `images/<id>.<ext>`, unter dem die Datei liegt.
673
+ *
674
+ * Optional, weil ältere Ereignisse ihn nicht tragen; für die fällt der
675
+ * Lesepfad auf den Bestandseintrag zurück.
676
+ */
677
+ mime_type?: string | null;
665
678
  model?: string | null;
666
679
  /** Nur gesetzt, wenn der Provider ihn tatsächlich zurückliefert (D-107). */
667
680
  seed?: number | null;
@@ -2121,8 +2134,16 @@ interface SzenenImageLibraryPort {
2121
2134
  search?: string;
2122
2135
  limit?: number;
2123
2136
  }): Promise<QueryResult<readonly LibraryImage[]>>;
2124
- /** Base64 **ohne** `data:`-Präfix und der MIME-Typ — die Modelleingabe. */
2125
- resolveImage(mediaRef: string): Promise<QueryResult<{
2137
+ /**
2138
+ * Base64 **ohne** `data:`-Präfix und der MIME-Typ — die Modelleingabe.
2139
+ *
2140
+ * `mimeTypeHinweis` ist ein **Hinweis**, kein Zwang: Kennt der Aufrufer den
2141
+ * bestätigten Typ aus dem Batch-Nachweis (`PromptBatchImageRef.mime_type`,
2142
+ * Review 2026-08-18 §5 P2), erspart er dem Host das Raten der Dateiendung,
2143
+ * solange der Bestand das Bild noch nicht führt. Ein Host, der ihn nicht
2144
+ * braucht, ignoriert ihn.
2145
+ */
2146
+ resolveImage(mediaRef: string, mimeTypeHinweis?: string | null): Promise<QueryResult<{
2126
2147
  data: string;
2127
2148
  mime_type: string;
2128
2149
  }>>;
@@ -2183,6 +2204,14 @@ interface PromptBatchImageRef {
2183
2204
  media_ref: string;
2184
2205
  position: number;
2185
2206
  file?: string;
2207
+ /**
2208
+ * Der bestätigte MIME-Typ der abgelegten Datei, soweit der Nachweis ihn führt
2209
+ * (Review 2026-08-18 §5 P2).
2210
+ *
2211
+ * Der Lesepfad bildet daraus den Dateipfad, statt zwischen den Endungen zu
2212
+ * raten. Optional, weil ältere Batches ihn nicht tragen.
2213
+ */
2214
+ mime_type?: string | null;
2186
2215
  model?: string | null;
2187
2216
  seed?: number | null;
2188
2217
  width?: number | null;
@@ -2391,6 +2420,54 @@ declare function unsupportedReason(capability: string): string;
2391
2420
  */
2392
2421
  declare function callOptional<T>(capability: string, operation: (() => Promise<CommandResult<T>>) | undefined): Promise<CommandResult<T>>;
2393
2422
 
2423
+ interface HfImageStoreOptions {
2424
+ namespace: string;
2425
+ token: string;
2426
+ now?: () => number;
2427
+ /**
2428
+ * Wie oft ein Bild, das im Bestand fehlt, direkt von HF geholt wird, und wie
2429
+ * lange dazwischen gewartet wird.
2430
+ *
2431
+ * Der Verzug ist real, aber kurz. Ersetzbar, damit ein Test ihn nicht
2432
+ * aussitzen muss.
2433
+ */
2434
+ leseVersuche?: number;
2435
+ leseBasisMs?: number;
2436
+ schlafen?: (ms: number) => Promise<void>;
2437
+ }
2438
+ interface AufgeloestesBild {
2439
+ data: string;
2440
+ mimeType: string;
2441
+ }
2442
+ interface HfImageStore {
2443
+ /**
2444
+ * Legt ein Bild unter einer **vorgegebenen** Kennung ab.
2445
+ *
2446
+ * Reihenfolge zwingend: erst die Datei, dann das Ereignis (R3 der
2447
+ * 6.9.2-Spezifikation). Ein Nachweis, der auf eine fehlende Datei zeigt,
2448
+ * wäre für jeden Leser ein Fehler; umgekehrt ist es nur eine Datei, die noch
2449
+ * kein Ereignis kennt.
2450
+ */
2451
+ putWithId(id: string, base64: string, mimeType: string, titel?: string): Promise<void>;
2452
+ /** Löst eine Kennung auf. `mimeType` ist ein Hinweis, kein Zwang. */
2453
+ resolve(id: string, mimeType?: string | null): Promise<AufgeloestesBild>;
2454
+ /** Der aktuelle Bestand — Schnappschuss plus die Ereignisse danach. */
2455
+ bestand(): Promise<HFStateSnapshot>;
2456
+ }
2457
+ /** Der HF-Pfad einer Bildkennung — für die Fehlermeldung, die ihn nennen muss (R7). */
2458
+ declare function bildPfad(id: string, mimeType: string | null | undefined): string;
2459
+ /**
2460
+ * Der MIME-Typ aus den tatsächlichen Bildbytes.
2461
+ *
2462
+ * Review §5 P2: `image/png` einfach anzunehmen genügt nicht — für importierte
2463
+ * oder künftig anders kodierte Bilder wäre der Typ dann falsch deklariert, und
2464
+ * die Datei läge unter einer Endung, unter der sie niemand sucht. Geprüft
2465
+ * werden die Signaturen am Anfang der Daten; nur wenn keine passt, bleibt es
2466
+ * bei der Angabe des Aufrufers.
2467
+ */
2468
+ declare function typAusBytes(base64: string, vorgabe?: string): string;
2469
+ declare function createHfImageStore(options: HfImageStoreOptions): HfImageStore;
2470
+
2394
2471
  interface CreateHfImageLibraryOptions {
2395
2472
  namespace: string;
2396
2473
  token: string;
@@ -2398,6 +2475,15 @@ interface CreateHfImageLibraryOptions {
2398
2475
  newImageId?: () => string;
2399
2476
  /** Die Uhr — dieselbe Begründung. */
2400
2477
  now?: () => number;
2478
+ /**
2479
+ * Der gemeinsame Bildspeicher (Review §5 P1).
2480
+ *
2481
+ * Wird er übergeben, teilen sich Bildbestand und Batch-Persistenz **eine**
2482
+ * Instanz — nur dann ist ein gerade erzeugtes Bild hier sofort auflösbar.
2483
+ * Fehlt er, baut dieser Adapter sich einen eigenen; das ist für den
2484
+ * Alleinbetrieb richtig und für den Flow-Port ausdrücklich nicht gewollt.
2485
+ */
2486
+ store?: HfImageStore;
2401
2487
  }
2402
2488
  declare function createHfImageLibrary(options: CreateHfImageLibraryOptions): SzenenImageLibraryPort;
2403
2489
 
@@ -2836,6 +2922,14 @@ interface CreateHfImageBatchPersistenceOptions {
2836
2922
  /** Kennung je abgelegtem Bild. Ersetzbar, damit ein Test nicht würfelt. */
2837
2923
  newImageId?: (generationBatchId: string, position: number) => string;
2838
2924
  now?: () => Date;
2925
+ /**
2926
+ * Der gemeinsame Bildspeicher (Review §5 P1).
2927
+ *
2928
+ * Dieselbe Instanz wie im Bildbestand: nur dadurch ist ein hier abgelegtes
2929
+ * Bild dort sofort auflösbar. Fehlt er, entsteht ein eigener — dann gilt die
2930
+ * Sofortauflösung nur innerhalb dieses Adapters.
2931
+ */
2932
+ store?: HfImageStore;
2839
2933
  }
2840
2934
  /**
2841
2935
  * `ImageGenerationBatchPersistence` für Flow — derselbe kanonische Weg wie
@@ -2929,4 +3023,4 @@ interface SzenenViewProps {
2929
3023
  }
2930
3024
  declare const SzenenView: React__default.FC<SzenenViewProps>;
2931
3025
 
2932
- export { type AttachLibraryItemInput, type AttachLibraryItemResult, AuthoritativeSzenenStore, CATALOGUE_TYPES, type CallableImageModel, CapabilityAnchorError, type CapabilityFlag, type CapabilityReason, type CapabilityReport, type CapabilityReportInput, type CapabilityScope, type CapabilityState, type ChainQueries, type ClientDerivationChannel, type ClientDerivationStore, ContextChainPort, type CreateBrowserTextGenerationPortOptions, type CreateClientDerivationPortOptions, type CreateClientRunPortOptions, type CreateFlowSzenenViewPortOptions, type CreateHfElementStoreOptions, type CreateHfEventChannelOptions, type CreateHfImageBatchHistoryOptions, type CreateHfImageBatchPersistenceOptions, type CreateImageGenerationPortOptions, type CreateMemoryViewPortOptions, DerivableType, DerivationAssessment, DerivationConflict, DerivationDiagnostic, DerivationFailure, DerivationImage, DerivationInputMode, type DeriveItemInput, type DerivedItem, type DerivedLineage, type DerivedRelationship, type DerivedSzenenReference, type DifferentialResult, type DifferentialStep, type Divergence, DraftChainMeta, ELEMENT_VERSION_SCHEMA_FILE, type ElementEvent, type ElementEventChannel, ElementSnapshot, type ElementStoreState, type ExistingSzenenItem, FLOW_MODEL_DISPLAY_NAMES, type FlowGenerateImage, type FlowGenerateImageParams, FlowGenerateText, type FreezeDraftChainInput, type FreezeFailure, type FreezeResult, type FreezeSuccess, type FrozenChainNode, type GeneratedImage, type IdFactory, type ImageBatchPersistedImage, type ImageBatchPersistedPayload, type ImageGenerationBatchPersistence, type ImageGenerationCapability, type ImageGenerationEventChannel, type ImageGenerationFinishedPayload, type ImageGenerationOrder, type ImageGenerationProviderPort, type ImageGenerationResult, type ImageGenerationRunReader, type ImageGenerationStartedPayload, ImageProvenance, type ImageProviderAccessCheck, type ImageProviderInput, type ImportBatchImageInput, type ImportBatchInput, type InMemoryEventChannel, type InputError, type IntegrityVerdict, type ItemDerivationFailure, type ItemDerivationFailureClass, type ItemDerivationResult, type ItemMedium, type LibraryImage, type NodeContribution, NotDerivable, type Notice, type NoticeTone, type PromptBatchImageRef, type PromptImageBatch, type PromptRunOutcome, type PromptRunOutput, type PromptRunPersistencePort, type PromptRunRecord, type PromptRunRecordedPayload, type ProviderCheckRecord, type ProviderCheckRecordedPayload, type ProviderCheckResult, PublishCheckResult, PublishFinding, RULES_WITHOUT_CAPABILITY_EFFECT, RULE_SCOPES, type RawSchema, type RecordedDerivationInput, type RecordedProposal, type RecoveryStatus, type ReducerFinding, ReferenceResolver, type RendererInput, type ResolveFailure, type ResolveResult, type ResolveShotInput, type ResolveShotPayloadInput, ResolveTechnicalError, type ResolvedCamera, type ResolvedNode, type ResolvedPlacement, type RunEventChannel, type RunFailure, type RunFailureClass, type RunItemReference, SZENEN_EVENT_PREFIX, SZENEN_EVENT_TYPES, SZENEN_ITEM_PREFIX, SZENEN_SCHEMAS, type SaveRunAsItemInput, type SceneDerivationPersistencePort, type SceneDerivationRecord, type SceneDerivationRecordedPayload, type SceneDerivationRecoveryRecord, type SceneDerivationRecoveryRecordedPayload, SchemaError, type StartImageGenerationInput, type StartRunInput, type StepState, type SzenenArea, type SzenenAreaId, type SzenenBatchOrigin, type SzenenBatchOriginFailure, type SzenenBatchOriginVerdict, SzenenCommands, SzenenElementStore, SzenenElementType, type SzenenImageBatchHistoryPort, type SzenenImageBatchWritePort, type SzenenImageGenerationPort as SzenenImageGenerationPortContract, type SzenenImageLibraryPort, type SzenenItemPort, type SzenenMediaPort, SzenenQueries, type SzenenRunPort, SzenenView, type SzenenViewCapabilities, type SzenenViewPort, type SzenenViewProps, TargetModelResolution, TextGenerationPort, UNCHECKED_PUBLISH_RULES, UnusableProposal, type VersionMedium, type VisibilityNode, areasFor, batchesForPromptRun, buildSystemInstruction, buildUserPrompt, callOptional, callableImageModelFor, capabilitiesOf, capabilityForTargetModel, capabilityGate, capabilityReport, catalogueFor, checkCreateElementInput, checkElementType, checkOptionalId, checkParents, checkPayloadPresent, checkPromptRunRecord, checkPublishVersionInput, checkRequiredId, checkReviseMetadataInput, checkRevision, checkRunResponse, checkSceneDerivationRecord, checkSceneDerivationRecoveryRecord, checkSetPreferredHeadInput, checkSzenenBatchOrigin, checkTitle, checkWriteDraftInput, collectImageBatches, collectImageGenerationOrders, collectPromptRuns, collectProviderChecks, collectSceneDerivationRecoveries, collectSceneDerivations, createBrowserTextGenerationPort, createClientDerivationPort, createClientRunPort, createEventLogDerivationPersistence, createEventLogRunPersistence, createFlowImageProvider, createFlowSzenenViewPort, createHfElementStore, createHfEventChannel, createHfImageBatchHistory, createHfImageBatchWrite, createHfImageGenerationBatchPersistence, createHfImageLibrary, createImageGenerationPort, createInMemoryEventChannel, createMemoryViewPort, derivationPoliciesOf, deriveItemFromRun, deriveLineage, differentialSteps, draftRevisionOf, findImageBatch, findImageGenerationOrder, findPromptRun, findProviderCheck, findSceneDerivation, findSceneDerivationRecovery, firstError, flowImageProviderHasAccess, freezeDraftChain, hasPlacementCapability, isKnownElementType, isSzenenItemId, itemIdForRun, logRevisionOf, mergeSzenenBatchOrigin, noticeFor, ordersForPromptRun, parseRunResponse, preferredHeadRevisionOf, publishedHeadsOf, recoveriesForRun, recoveryStatusOf, reduceElementEvents, resolveArea, resolveShot, resolveShotPayload, roundOfRun, runPromptDerivation, runStoreDifferential, scopeOfPath, totalModelCalls, unclassifiedPublishRules, unsupportedReason };
3026
+ export { type AttachLibraryItemInput, type AttachLibraryItemResult, AuthoritativeSzenenStore, CATALOGUE_TYPES, type CallableImageModel, CapabilityAnchorError, type CapabilityFlag, type CapabilityReason, type CapabilityReport, type CapabilityReportInput, type CapabilityScope, type CapabilityState, type ChainQueries, type ClientDerivationChannel, type ClientDerivationStore, ContextChainPort, type CreateBrowserTextGenerationPortOptions, type CreateClientDerivationPortOptions, type CreateClientRunPortOptions, type CreateFlowSzenenViewPortOptions, type CreateHfElementStoreOptions, type CreateHfEventChannelOptions, type CreateHfImageBatchHistoryOptions, type CreateHfImageBatchPersistenceOptions, type CreateImageGenerationPortOptions, type CreateMemoryViewPortOptions, DerivableType, DerivationAssessment, DerivationConflict, DerivationDiagnostic, DerivationFailure, DerivationImage, DerivationInputMode, type DeriveItemInput, type DerivedItem, type DerivedLineage, type DerivedRelationship, type DerivedSzenenReference, type DifferentialResult, type DifferentialStep, type Divergence, DraftChainMeta, ELEMENT_VERSION_SCHEMA_FILE, type ElementEvent, type ElementEventChannel, ElementSnapshot, type ElementStoreState, type ExistingSzenenItem, FLOW_MODEL_DISPLAY_NAMES, type FlowGenerateImage, type FlowGenerateImageParams, FlowGenerateText, type FreezeDraftChainInput, type FreezeFailure, type FreezeResult, type FreezeSuccess, type FrozenChainNode, type GeneratedImage, type HfImageStore, type HfImageStoreOptions, type IdFactory, type ImageBatchPersistedImage, type ImageBatchPersistedPayload, type ImageGenerationBatchPersistence, type ImageGenerationCapability, type ImageGenerationEventChannel, type ImageGenerationFinishedPayload, type ImageGenerationOrder, type ImageGenerationProviderPort, type ImageGenerationResult, type ImageGenerationRunReader, type ImageGenerationStartedPayload, ImageProvenance, type ImageProviderAccessCheck, type ImageProviderInput, type ImportBatchImageInput, type ImportBatchInput, type InMemoryEventChannel, type InputError, type IntegrityVerdict, type ItemDerivationFailure, type ItemDerivationFailureClass, type ItemDerivationResult, type ItemMedium, type LibraryImage, type NodeContribution, NotDerivable, type Notice, type NoticeTone, type PromptBatchImageRef, type PromptImageBatch, type PromptRunOutcome, type PromptRunOutput, type PromptRunPersistencePort, type PromptRunRecord, type PromptRunRecordedPayload, type ProviderCheckRecord, type ProviderCheckRecordedPayload, type ProviderCheckResult, PublishCheckResult, PublishFinding, RULES_WITHOUT_CAPABILITY_EFFECT, RULE_SCOPES, type RawSchema, type RecordedDerivationInput, type RecordedProposal, type RecoveryStatus, type ReducerFinding, ReferenceResolver, type RendererInput, type ResolveFailure, type ResolveResult, type ResolveShotInput, type ResolveShotPayloadInput, ResolveTechnicalError, type ResolvedCamera, type ResolvedNode, type ResolvedPlacement, type RunEventChannel, type RunFailure, type RunFailureClass, type RunItemReference, SZENEN_EVENT_PREFIX, SZENEN_EVENT_TYPES, SZENEN_ITEM_PREFIX, SZENEN_SCHEMAS, type SaveRunAsItemInput, type SceneDerivationPersistencePort, type SceneDerivationRecord, type SceneDerivationRecordedPayload, type SceneDerivationRecoveryRecord, type SceneDerivationRecoveryRecordedPayload, SchemaError, type StartImageGenerationInput, type StartRunInput, type StepState, type SzenenArea, type SzenenAreaId, type SzenenBatchOrigin, type SzenenBatchOriginFailure, type SzenenBatchOriginVerdict, SzenenCommands, SzenenElementStore, SzenenElementType, type SzenenImageBatchHistoryPort, type SzenenImageBatchWritePort, type SzenenImageGenerationPort as SzenenImageGenerationPortContract, type SzenenImageLibraryPort, type SzenenItemPort, type SzenenMediaPort, SzenenQueries, type SzenenRunPort, SzenenView, type SzenenViewCapabilities, type SzenenViewPort, type SzenenViewProps, TargetModelResolution, TextGenerationPort, UNCHECKED_PUBLISH_RULES, UnusableProposal, type VersionMedium, type VisibilityNode, areasFor, batchesForPromptRun, bildPfad, buildSystemInstruction, buildUserPrompt, callOptional, callableImageModelFor, capabilitiesOf, capabilityForTargetModel, capabilityGate, capabilityReport, catalogueFor, checkCreateElementInput, checkElementType, checkOptionalId, checkParents, checkPayloadPresent, checkPromptRunRecord, checkPublishVersionInput, checkRequiredId, checkReviseMetadataInput, checkRevision, checkRunResponse, checkSceneDerivationRecord, checkSceneDerivationRecoveryRecord, checkSetPreferredHeadInput, checkSzenenBatchOrigin, checkTitle, checkWriteDraftInput, collectImageBatches, collectImageGenerationOrders, collectPromptRuns, collectProviderChecks, collectSceneDerivationRecoveries, collectSceneDerivations, createBrowserTextGenerationPort, createClientDerivationPort, createClientRunPort, createEventLogDerivationPersistence, createEventLogRunPersistence, createFlowImageProvider, createFlowSzenenViewPort, createHfElementStore, createHfEventChannel, createHfImageBatchHistory, createHfImageBatchWrite, createHfImageGenerationBatchPersistence, createHfImageLibrary, createHfImageStore, createImageGenerationPort, createInMemoryEventChannel, createMemoryViewPort, derivationPoliciesOf, deriveItemFromRun, deriveLineage, differentialSteps, draftRevisionOf, findImageBatch, findImageGenerationOrder, findPromptRun, findProviderCheck, findSceneDerivation, findSceneDerivationRecovery, firstError, flowImageProviderHasAccess, freezeDraftChain, hasPlacementCapability, isKnownElementType, isSzenenItemId, itemIdForRun, logRevisionOf, mergeSzenenBatchOrigin, noticeFor, ordersForPromptRun, parseRunResponse, preferredHeadRevisionOf, publishedHeadsOf, recoveriesForRun, recoveryStatusOf, reduceElementEvents, resolveArea, resolveShot, resolveShotPayload, roundOfRun, runPromptDerivation, runStoreDifferential, scopeOfPath, totalModelCalls, typAusBytes, unclassifiedPublishRules, unsupportedReason };