@rslsp1/fa-app-tools 9.1.0 → 10.0.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.
package/dist/szenen.d.mts CHANGED
@@ -1,276 +1,11 @@
1
- import { I as ElementSnapshot, Z as PublishFinding, ac as SchemaError, Y as PublishCheckResult, aj as SzenenElementType, a2 as ReferenceResolver, ap as TargetModelResolution, S as PreferredHeadResolution, w as DerivationInputMode, M as ImageProvenance, s as DerivationFailure, n as DerivableType, N as NotDerivable, p as DerivationConflict, u as DerivationFollowUp, B as DraftChainMeta, q as DerivationDiagnostic, o as DerivationAssessment, h as ContextChainPort, a as AuthoritativeSzenenStore, ai as SzenenElementStore, v as DerivationImage, al as SzenenQueries, ah as SzenenCommands, ar as UnusableProposal } from './storeContract-5vApx6VA.mjs';
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, 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-5vApx6VA.mjs';
1
+ import { J as ElementEvent, ad as PublishFinding, av as SchemaError, ac as PublishCheckResult, aC as SzenenElementType, aj as ReferenceResolver, aJ as TargetModelResolution, a3 as PreferredHeadResolution, a0 as PageRequest, X as LibraryTagRef, a8 as PromptRunAnnotation, $ as Page, y as DerivationInputMode, U as ImageProvenance, u as DerivationFailure, p as DerivableType, Y as NotDerivable, r as DerivationConflict, w as DerivationFollowUp, F as DraftChainMeta, s as DerivationDiagnostic, q as DerivationAssessment, j as ContextChainPort, c as AuthoritativeSzenenStore, aB as SzenenElementStore, x as DerivationImage, aE as SzenenQueries, aA as SzenenCommands, aL as UnusableProposal, I as ElementAnnotation } from './storeContract-CJi0fpCA.mjs';
2
+ export { A as ALL_PUBLISH_RULES, a as AngezeigterTag, b as AnnotateRunsOptions, C as CHAIN_EDGES, d as CHAIN_LINK_FIELDS, e as CatalogueEntry, f as ChainLinkField, g as ChainTarget, h as ChainVerdict, i as CompiledSchemas, k as ContractCheck, l as ContractCheckResult, m as ContractRunResult, n as ContractViolation, o as CreateElementInput, D as DERIVABLE_TYPES, t as DerivationEnvelope, v as DerivationFailureClass, z as DerivationPolicyPayload, B as DerivationProposal, E as DraftChainLink, G as DraftFork, H as DraftRecord, K as ElementListFilter, L as ElementMetadata, M as ElementRecord, N as ElementSnapshot, O as ElementStoreContractHarness, P as ElementStoreState, Q as ElementVersionValidation, R as FindingSeverity, S as ImageBatchPersistedImage, T as ImageBatchPersistedPayload, V as KEINE_BILDER, W as LOAD_MORE_PAGE_SIZE, Z as OptionalCommand, _ as PROBE_VERSION_ID, a1 as ParentRelation, a2 as PreferredHeadOutcome, a4 as PreferredHeadSelection, a5 as PreferredHeadSource, a6 as ProjectionState, a7 as ProjectionStatus, a9 as PromptRunPreviewImage, aa as PromptRunTagsSetPayload, ab as PublishCheckInput, ae as PublishRejected, af as PublishVersionInput, ag as PublishedVersion, ah as REFERENCE_FIELD, ai as ReducerFinding, ak as ResolvePreferredHeadOptions, al as ResolvedVersion, am as ReviseMetadataInput, an as STYLE_PAYLOAD, ao as STYLE_PAYLOAD_V2, ap as SZENEN_ELEMENT_TYPES, aq as SZENEN_EVENT_PREFIX, ar as SZENEN_EVENT_TYPES, as as SceneDerivationInput, at as SceneDerivationOutcome, au as SceneDerivationOutput, aw as SchemaValidationResult, ax as SetPreferredHeadInput, ay as StoreAuthority, az as SzenenCommandResult, aD as SzenenProjection, aF as TagHerkunft, aG as TargetModelCandidate, aH as TargetModelQueries, aI as TargetModelQuery, aK as UnsupportedSchemaError, aM as VersionDag, aN as VersionDagError, aO as VersionNode, aP as VersionParentLink, aQ as WriteConflict, aR as WriteDraftInput, aS as annotateElementsFromEvents, aT as annotateRunsFromEvents, aU as assessDerivationResponse, aV as buildDerivationSystemInstruction, aW as buildDerivationUserPrompt, aX as buildVersionDag, aY as checkChainTargets, aZ as checkDerivationResponse, a_ as checkDraftChainMeta, a$ as collectPromptRunTags, b0 as collectVersionRefs, b1 as compileSchemas, b2 as createSimulationSceneDerivationPort, b3 as describeTargetModelFailure, b4 as draftRevisionOf, b5 as elementStoreContractChecks, b6 as formatSchemaErrors, b7 as getSzenenSchemas, b8 as isOk, b9 as isProjectionCurrent, ba as labelsOf, bb as linkFor, bc as listElementsPageOver, bd as logRevisionOf, be as mergeRunTags, bf as pageOf, bg as pageRequestFrom, bh as parseDerivationResponse, bi as preferredHeadRevisionOf, bj as preferredVersionId, bk as promptRunTagsOf, bl as reduceElementEvents, bm as resolvePreferredHead, bn as resolveTargetModelOver, bo as resolverFromQueries, bp as runElementStoreContract, bq as runPublishChecks, br as runSceneDerivation, bs as showChain, bt as tagRefsAus, bu as validateAgainst, bv as validateDerivationInput, bw as validateElementVersion, bx as validatePayload, by as withReference } from './storeContract-CJi0fpCA.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
5
  import { g as HFStateSnapshot, F as FlowGenerateText } from './hfEventTypes-BUztJySs.mjs';
6
6
  export { C as CreateFlowTextGenerationPortOptions, r as createFlowTextGenerationPort } from './hfEventTypes-BUztJySs.mjs';
7
7
  import React__default from 'react';
8
8
 
9
- /** Präfix aller Events dieser Domain im gemeinsamen HF-Event-Kanal. */
10
- declare const SZENEN_EVENT_PREFIX = "szenen.";
11
- declare const SZENEN_EVENT_TYPES: {
12
- readonly elementCreated: "szenen.element_created";
13
- readonly elementRetired: "szenen.element_retired";
14
- readonly metadataRevised: "szenen.element_metadata_revised";
15
- readonly draftWritten: "szenen.element_draft_written";
16
- readonly versionPublished: "szenen.element_version_published";
17
- readonly preferredHeadSelected: "szenen.element_preferred_head_selected";
18
- /**
19
- * Ein Prompt-Ableitungslauf — Stufe 3, S6 (E-3b).
20
- *
21
- * Ein Lauf ist **kein Element**: keine Version, kein DAG, nicht
22
- * referenzierbar. Er liegt trotzdem im selben autoritativen Log, weil er
23
- * append-only und unveränderlich ist — genau die Form, die ein Ereignislog
24
- * nativ trägt — und weil MySQL sonst zu einem zweiten fachlichen Speicher
25
- * würde, den D-62 abgeschafft hat.
26
- *
27
- * Der Elementreducer ignoriert diesen Typ (`default:`-Zweig); die Läufe
28
- * werden mit `collectPromptRuns` gelesen.
29
- */
30
- readonly promptRunRecorded: "szenen.prompt_run_recorded";
31
- /**
32
- * Ein Szenen-Rekonstruktionslauf — Stufe 6.5 (D-71).
33
- *
34
- * Derselbe Bauplan und dieselbe Begründung wie beim Prompt-Lauf: append-only,
35
- * unveränderlich, **kein Element** — keine Version, kein DAG, nicht
36
- * referenzierbar. Er liegt im autoritativen Log, weil er genau die Form hat,
37
- * die ein Ereignislog nativ trägt.
38
- *
39
- * Bewusst ein zweiter Lauftyp und **kein** gemeinsamer: Ein Prompt-Lauf geht
40
- * von einer veröffentlichten Shot-Version aus, ein Rekonstruktionslauf von
41
- * einer Referenz, die noch zu gar keinem Element gehört. Sie in einen Typ zu
42
- * zwingen hieße, beiden ihre Herkunftsfelder zu nehmen.
43
- *
44
- * Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig).
45
- */
46
- readonly sceneDerivationRecorded: "szenen.scene_derivation_recorded";
47
- /**
48
- * Ein ausdrücklich ausgelöster Lauf gegen den **echten** Provider.
49
- *
50
- * Er kostet Geld und wird deshalb nie beiläufig gefahren. Das Ereignis hält
51
- * fest, was tatsächlich bezahlt wurde: wie viele Modellaufrufe, mit welchem
52
- * Ausgang, in welcher Umgebung und von wem ausgelöst.
53
- *
54
- * Es ersetzt **nicht** die einzelnen Läufe — die werden regulär als
55
- * `prompt_run_recorded` bzw. `scene_derivation_recorded` protokolliert. Es
56
- * ist die Klammer darüber und der Grund, warum jemand später nachlesen kann,
57
- * ob der Durchstich stattgefunden hat, ohne ihn erneut zu bezahlen.
58
- */
59
- readonly providerCheckRecorded: "szenen.provider_check_recorded";
60
- /**
61
- * Eine geprüfte Arbeitsfassung eines fehlgeschlagenen Rekonstruktionslaufs —
62
- * Stufe 6.6 (D-99).
63
- *
64
- * Sie ist **kein Lauf**: kein Provideraufruf, keine Kosten, kein Zielmodell.
65
- * Sie ist die lokal geprüfte Korrektur eines bereits bezahlten Ergebnisses
66
- * und zeigt über `run_id` auf ihren Ursprung. Der `raw_output` jenes Laufs
67
- * bleibt unangetastet — deshalb ein eigenes Ereignis statt einer Änderung am
68
- * bestehenden, das es ohnehin nicht geben dürfte (D-71).
69
- *
70
- * Mehrere Rettungen zum selben Lauf sind zulässig und erwartet: Jede
71
- * Korrekturrunde ist nachvollziehbare Arbeit, kein Update der vorigen.
72
- *
73
- * Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig).
74
- */
75
- readonly sceneDerivationRecoveryRecorded: "szenen.scene_derivation_recovery_recorded";
76
- /**
77
- * Ein bezahlter Bildgenerierungsauftrag beginnt — Stufe 6.7 (D-119).
78
- *
79
- * Append-only wie jedes andere Ereignis dieser Domain, geschrieben **vor**
80
- * dem Provideraufruf. Es traegt **keine Bilddaten** — nur die Kennung, mit
81
- * der die spaetere kanonische Batch-Persistenz (`saveGeneratedAssetBatch`,
82
- * Teil C) wiedergefunden wird. Ein Crash zwischen diesem Ereignis und
83
- * `imageGenerationFinished` loescht den Auftrag nicht: Er bleibt lesbar,
84
- * ohne dass irgendein automatischer Retry darauf reagiert.
85
- *
86
- * Gilt nur fuer `generated_in_app` — ein externer Import (D-108/D-117)
87
- * ruft keinen Provider und braucht deshalb kein `started`; sein Nachweis
88
- * ist das gespeicherte Library-Item selbst.
89
- *
90
- * Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig); gelesen
91
- * wird mit `collectImageGenerationOrders`.
92
- */
93
- readonly imageGenerationStarted: "szenen.image_generation_started";
94
- /**
95
- * Derselbe Bildgenerierungsauftrag endet — Stufe 6.7 (D-119).
96
- *
97
- * Erscheint erst **nach** der kanonischen Batch-Persistenz: Ein technischer
98
- * Fehler zwischen Provideraufruf und Speichern darf nie als `succeeded`
99
- * protokolliert werden, nur weil der Provider geantwortet hat. Traegt
100
- * ebenfalls keine Bilddaten — nur Status, Zaehlung und die Item-Kennung,
101
- * falls eine entstand.
102
- */
103
- readonly imageGenerationFinished: "szenen.image_generation_finished";
104
- /**
105
- * Ein Bild-Batch ist kanonisch gespeichert — Stufe 6.9.2, Gate D
106
- * (D-6.9.2-6).
107
- *
108
- * Erscheint erst, **nachdem** jedes Bild des Batches im Bildbestand liegt
109
- * (`hfUploadImage` + `image_added`, dieselbe Reihenfolge wie
110
- * `hfImageLibrary.putImage`) — kein Bild gilt als vorhanden, bevor sein
111
- * Upload bestätigt ist (R3). Trägt bewusst **keine Bilddaten**, nur den
112
- * vollständigen Metadatennachweis, den `listBatchesForPromptRun()` /
113
- * `getBatch()` ohne MySQL rekonstruieren können müssen: `item_id`,
114
- * `prompt_run_id`, `generation_batch_id`, `source_kind`, je Bild
115
- * `position`, `media_ref`, `asset_id`, `model`, `seed`, `width`/`height`.
116
- *
117
- * Additiv wie jedes Ereignis dieser Domain: ein zweiter Batch desselben
118
- * Laufs ist ein **weiteres** Ereignis mit derselben `item_id`, nicht eine
119
- * Änderung am ersten (D-113/D-121 — ein Lauf bleibt ein Item). Gilt für
120
- * `generated_in_app` **und** `external_import` — nur `source_kind`
121
- * unterscheidet die beiden Schreiber (D-116/D-117/D-120).
122
- *
123
- * Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig); gelesen
124
- * wird mit `collectImageBatches` (`imageBatchStore.ts`).
125
- */
126
- readonly imageBatchPersisted: "szenen.image_batch_persisted";
127
- /**
128
- * Ein vorbereiteter Promptvorgang — der Durchstich „Szene → ChatGPT → Lauf".
129
- *
130
- * Der bestehende Promptpfad ruft das Modell selbst
131
- * (`runPromptDerivation()`); ein aufrufendes Chatmodell formuliert dagegen
132
- * **zwischen** zwei Werkzeugaufrufen. Damit zerfaellt der eine Vorgang in
133
- * zwei, und der zweite braucht genau den Stand, den der erste eingefroren
134
- * hat — sonst loeste der Abschluss die inzwischen geaenderte Szene neu auf
135
- * und der Lauf behauptete eine Herkunft, die er nicht hat (D-22).
136
- *
137
- * Deshalb ein eigenes Ereignis und **kein** fluechtiger Prozesszustand: Der
138
- * Snapshot ueberlebt Neustart, Hostwechsel und Sitzungsende, weil er im
139
- * selben autoritativen Log liegt wie der Lauf, der daraus entsteht.
140
- *
141
- * Der Elementreducer ignoriert diesen Typ (`default:`-Zweig); gelesen wird
142
- * mit `collectPromptOperations` (`scenePromptOperation.ts`).
143
- */
144
- readonly promptOperationPrepared: "szenen.prompt_operation_prepared";
145
- /**
146
- * Ein Bildauftrag wartet auf einen ausfuehrenden Flow-Host.
147
- *
148
- * Die vorhandene Auftragshistorie (`imageGenerationStarted`) beginnt
149
- * **unmittelbar vor** dem Provideraufruf und kennt deshalb keinen wartenden
150
- * Auftrag. Genau der entsteht hier: Ein Chatmodell beauftragt ueber MCP ein
151
- * Bild, der Auftrag wird dauerhaft abgelegt, und der Werkzeugaufruf endet
152
- * sofort mit seiner Kennung — er haelt keine Antwort minutenlang offen.
153
- *
154
- * Traegt **keinen** Prompt: Der steht im referenzierten Lauf, und ihn hier
155
- * zu kopieren waere eine zweite Wahrheit ueber denselben eingefrorenen Text
156
- * (D-103).
157
- */
158
- readonly imageJobRequested: "szenen.image_job_requested";
159
- /**
160
- * Ein Flow-Host beansprucht einen wartenden Bildauftrag.
161
- *
162
- * Ein append-only Log kennt kein Lock: Zwei Tabs koennen beide anhaengen.
163
- * Deshalb ist die Uebernahme **nicht** der Append, sondern das Ergebnis
164
- * einer deterministischen Schiedsregel darueber (`winningClaimOf`) — der
165
- * erste Anspruch in Logreihenfolge gewinnt, und jeder Host liest nach
166
- * seinem Append erneut, bevor er einen bezahlten Provideraufruf startet.
167
- * Ein unterlegener Anspruch bleibt sichtbar stehen; er wird nicht geloescht,
168
- * weil das Log das nicht kann und weil der Versuch ein Beleg ist.
169
- */
170
- readonly imageJobClaimed: "szenen.image_job_claimed";
171
- /**
172
- * Der Bildauftrag ist erledigt — mit dem Ausgang, den der Host gesehen hat.
173
- *
174
- * Getrennt von `imageGenerationFinished`: Jenes gehoert zum bezahlten
175
- * Provideraufruf, dieses zur Zustellung. Ein Auftrag kann fehlschlagen,
176
- * **bevor** ein Provider gerufen wurde (abgelehntes Profil), und dann gibt
177
- * es kein `imageGenerationFinished`, das den Wartenden erloesen wuerde.
178
- */
179
- readonly imageJobSettled: "szenen.image_job_settled";
180
- };
181
- /** Ein einzelnes Bild innerhalb von `ImageBatchPersistedPayload` (D-6.9.2-6). */
182
- interface ImageBatchPersistedImage {
183
- position: number;
184
- /** Im aktuellen Host auflösbarer Locator — hier die HF-Bildkennung (D-93). */
185
- media_ref: string;
186
- /** Fachlich stabile Identität, soweit bekannt — hier identisch mit `media_ref` (D-118). */
187
- asset_id?: string;
188
- /**
189
- * Der **bestätigte** MIME-Typ der abgelegten Datei — Review 2026-08-18 §5 P2.
190
- *
191
- * Additiv nachgetragen, weil der Batch ihn beim Schreiben kennt, ihn aber
192
- * nicht führte: Der Lesepfad musste die Dateiendung deshalb über zwei
193
- * Varianten erraten. Geraten wird nichts mehr — der Typ stammt aus den
194
- * tatsächlichen Bildbytes (`typAusBytes`), nicht aus einer Annahme, und
195
- * bestimmt den Pfad `images/<id>.<ext>`, unter dem die Datei liegt.
196
- *
197
- * Optional, weil ältere Ereignisse ihn nicht tragen; für die fällt der
198
- * Lesepfad auf den Bestandseintrag zurück.
199
- */
200
- mime_type?: string | null;
201
- model?: string | null;
202
- /** Nur gesetzt, wenn der Provider ihn tatsächlich zurückliefert (D-107). */
203
- seed?: number | null;
204
- width?: number | null;
205
- height?: number | null;
206
- }
207
- /** Nutzlast von `imageBatchPersisted` — geschrieben nach bestätigtem Bild-Upload. */
208
- interface ImageBatchPersistedPayload {
209
- item_id: string;
210
- prompt_run_id: string;
211
- generation_batch_id: string;
212
- source_kind: 'generated_in_app' | 'external_import';
213
- title: string;
214
- images: readonly ImageBatchPersistedImage[];
215
- created_at: string;
216
- }
217
- /**
218
- * Ein Event, wie der Reducer es sieht.
219
- *
220
- * Nur `type`, `payload` und `clientId` sind fachlich. `ts` dient allein der
221
- * **Lesereihenfolge** des Logs und darf nie eine fachliche Vorrangfrage
222
- * entscheiden — sonst wäre es `MAX(ts)` durch die Hintertür (§2.5, R-3).
223
- */
224
- interface ElementEvent<P = unknown> {
225
- type: string;
226
- payload: P;
227
- clientId: string;
228
- ts: number;
229
- }
230
- /** Ein Befund beim Falten: etwas ist widersprüchlich, aber der Zustand bleibt lesbar. */
231
- interface ReducerFinding {
232
- code: 'unbekanntes_element' | 'version_doppelt' | 'version_veraendert' | 'draft_fork' | 'metadata_fork' | 'preferred_head_fork' | 'element_doppelt';
233
- element_id: string;
234
- message: string;
235
- }
236
- /** Abgeleiteter Zustand über alle Elemente. */
237
- interface ElementStoreState {
238
- elements: ReadonlyMap<string, ElementSnapshot>;
239
- findings: readonly ReducerFinding[];
240
- }
241
- /**
242
- * Faltet den Event-Log zum Elementzustand.
243
- *
244
- * Der Reducer ist rein: gleiche Events, gleicher Zustand — unabhängig von der
245
- * Eingabereihenfolge.
246
- *
247
- * @param events Alle bekannten Szenen-Events; fremde Typen werden übergangen.
248
- */
249
- declare function reduceElementEvents(events: readonly ElementEvent[]): ElementStoreState;
250
- /** Aktuelle Revision des Entwurfs. `0`, wenn keiner existiert. */
251
- declare function draftRevisionOf(snapshot: ElementSnapshot | null | undefined): number;
252
- /**
253
- * Quellrevision eines gelesenen Event-Logs (D-62 §2.4, D-63 §1.1.2).
254
- *
255
- * Die Projektion darf sich nur dann `current` nennen, wenn sie belegen kann,
256
- * **bis wohin** sie reicht. Dieser Beleg ist die Quellrevision, und sie muss
257
- * zwei Eigenschaften haben: aus dem Log allein berechenbar (sonst wäre sie eine
258
- * zweite Buchführung) und für zwei verschiedene Logstände verschieden.
259
- *
260
- * Beides leistet `Anzahl@größter-Zeitstempel`. Der Log ist append-only — es
261
- * verschwindet nie ein Event —, also wächst die Anzahl bei jedem Schreibvorgang.
262
- * Der Zeitstempel kommt dazu, weil er den Stand für einen Menschen lesbar macht;
263
- * entscheidend ist die Anzahl.
264
- *
265
- * Bewusst **kein** Hash über die Payloads: der wäre teurer und würde
266
- * Gleichheit über die Zeit versprechen, die der Log ohnehin schon garantiert.
267
- * Und bewusst hier, nicht im Server: der Projektor rechnet damit, und wer den
268
- * Stand prüfen will, soll dieselbe Rechnung fahren (R-2).
269
- */
270
- declare function logRevisionOf(events: readonly ElementEvent[]): string;
271
- /** Aktuelle Revision der Preferred-Head-Auswahl eines Kontexts. `0`, wenn keine existiert. */
272
- declare function preferredHeadRevisionOf(events: readonly ElementEvent[], elementId: string, contextId: string): number;
273
-
274
9
  /** Aktuelle Fassung des Dateiformats. */
275
10
  declare const SZENEN_SNAPSHOT_SCHEMA_VERSION = 1;
276
11
  /** Namenspräfix des Snapshots im Namensraum bzw. im Dateilog. */
@@ -1362,6 +1097,41 @@ interface PromptRunRecord {
1362
1097
  source?: PromptRunSource;
1363
1098
  created_at: string;
1364
1099
  }
1100
+ /**
1101
+ * Die Felder, die **nur** das Detail eines Laufs braucht.
1102
+ *
1103
+ * Alle drei sind gross und keines davon steht in einer Liste: `system_prompt`
1104
+ * wird nirgends angezeigt, `raw_output` nur im Diagnosebereich der
1105
+ * aufgeklappten Runde, `input_payload` nur dort, wo aus dem eingefrorenen Lauf
1106
+ * Bilder entstehen. Auf dev machten sie bei zehn Laeufen 74 von 100 kB der
1107
+ * uebertragenen Laufdaten aus.
1108
+ */
1109
+ declare const PROMPT_RUN_DETAIL_FIELDS: readonly ["system_prompt", "input_payload", "raw_output"];
1110
+ /**
1111
+ * Ein Lauf, wie ihn eine Liste **ueber eine Leitung** bekommt.
1112
+ *
1113
+ * Kein gekuerzter `PromptRunRecord`, sondern ein eigener Typ mit einer
1114
+ * ausdruecklichen Marke: Wer `detail_omitted` sieht, weiss, dass die drei
1115
+ * Felder fehlen, **weil sie nicht mitgeschickt wurden** — und nicht, weil der
1116
+ * Lauf sie nicht hat. Genau diese Unterscheidung ginge verloren, wenn die
1117
+ * Felder am `PromptRunRecord` optional wuerden: Ein leeres `raw_output` saehe
1118
+ * dann aus wie ein Lauf ohne Modellantwort (Regel 4).
1119
+ *
1120
+ * Ein Host, der seinen Bestand **ohne** Transport faltet (der Ereignislog in
1121
+ * Flow), setzt die Marke nicht und liefert weiterhin volle Saetze. Die Ansicht
1122
+ * braucht dafuer keinen zweiten Weg: Sie laedt das Detail nach, wenn die Marke
1123
+ * steht, und sonst nicht.
1124
+ */
1125
+ interface PromptRunListRecord extends Omit<PromptRunRecord, 'system_prompt' | 'input_payload' | 'raw_output'> {
1126
+ detail_omitted: true;
1127
+ system_prompt?: undefined;
1128
+ input_payload?: undefined;
1129
+ raw_output?: undefined;
1130
+ }
1131
+ /** Ein Lauf in einer Seite — voll, oder als Listenprojektion. */
1132
+ type PromptRunPageRecord = PromptRunRecord | PromptRunListRecord;
1133
+ /** Ob einem Lauf die Detailfelder fehlen, weil die Liste sie nicht uebertraegt. */
1134
+ declare function detailFehlt(run: PromptRunPageRecord): run is PromptRunListRecord;
1365
1135
  /**
1366
1136
  * Die Herkunft eines Laufs, auch bei einem Satz von vor 6.6.
1367
1137
  *
@@ -1370,7 +1140,7 @@ interface PromptRunRecord {
1370
1140
  * Damit muss kein Konsument zwei Datenformen kennen — und trotzdem wurde kein
1371
1141
  * einziges Ereignis angefasst.
1372
1142
  */
1373
- declare function sourceOf(run: PromptRunRecord): PromptRunSource;
1143
+ declare function sourceOf(run: PromptRunPageRecord): PromptRunSource;
1374
1144
  /** Nutzlast des Ereignisses. Identisch mit dem Datensatz — ein Lauf ändert sich nie. */
1375
1145
  type PromptRunRecordedPayload = PromptRunRecord;
1376
1146
  /**
@@ -1418,9 +1188,9 @@ type PromptRunGroup = {
1418
1188
  * zusammenführt. Es entsteht **kein** neues Herkunftsfeld am Lauf; die Gruppe
1419
1189
  * wird bei jedem Lesen aus dem berechnet, was ohnehin dasteht.
1420
1190
  */
1421
- declare function groupOf(run: PromptRunRecord): PromptRunGroup;
1191
+ declare function groupOf(run: PromptRunPageRecord): PromptRunGroup;
1422
1192
  /** Nur der Schlüssel der Bezugsgruppe — für Vergleiche und Filter. */
1423
- declare function groupKeyOf(run: PromptRunRecord): string;
1193
+ declare function groupKeyOf(run: PromptRunPageRecord): string;
1424
1194
  /**
1425
1195
  * Die Geschwister eines Laufs: alle Läufe **seiner** Bezugsgruppe.
1426
1196
  *
@@ -1447,7 +1217,7 @@ declare function siblingsOf(run: PromptRunRecord, alle: readonly PromptRunRecord
1447
1217
  * `null` heisst: Es gibt kein benennbares Element. Dann bleibt es bei „Runde
1448
1218
  * n" — ein erfundener Titel wäre schlimmer als keiner (D-75).
1449
1219
  */
1450
- declare function namingElementOf(run: PromptRunRecord): string | null;
1220
+ declare function namingElementOf(run: PromptRunPageRecord): string | null;
1451
1221
  /**
1452
1222
  * Der Arbeitskontext, in dem ein Lauf entstanden ist.
1453
1223
  *
@@ -1507,6 +1277,167 @@ interface PromptRunListing {
1507
1277
  * Eingabe bleibt erhalten.
1508
1278
  */
1509
1279
  declare function selectPromptRuns(alle: readonly PromptRunRecord[], filter?: PromptRunFilter): PromptRunListing;
1280
+ /**
1281
+ * Woher die Laeufe einer Seite kommen.
1282
+ *
1283
+ * Genau die vier Einstiege, die es ohnehin gibt — `listAllRuns` und die drei
1284
+ * verankerten Abfragen. Hier entsteht **keine** fuenfte Herkunft und keine
1285
+ * neue Zuordnungsregel: `'all'` heisst „ohne Anker", die drei anderen
1286
+ * vergleichen denselben `groupKeyOf`, den auch die Geschwister benutzen.
1287
+ */
1288
+ type PromptRunPageSource = {
1289
+ kind: 'all';
1290
+ } | {
1291
+ kind: 'published';
1292
+ shotVersionId: string;
1293
+ } | {
1294
+ kind: 'draft_chain';
1295
+ chainId: string;
1296
+ } | {
1297
+ kind: 'scene';
1298
+ sceneElementId: string;
1299
+ };
1300
+ /** Der Herkunftsfilter der gemeinsamen Sicht — dieselben Namen wie `PromptRunGroup`. */
1301
+ type PromptRunOriginFilter = PromptRunGroup['kind'];
1302
+ interface PromptRunPageFilter extends PromptRunFilter {
1303
+ /** Nur Laeufe dieser Herkunft. Weglassen heisst „alle Herkuenfte". */
1304
+ origin?: PromptRunOriginFilter;
1305
+ }
1306
+ interface PromptRunPageInput {
1307
+ source?: PromptRunPageSource;
1308
+ filter?: PromptRunPageFilter;
1309
+ /** Ohne Angabe wird nicht geschnitten — dann ist die Seite der ganze Bestand. */
1310
+ page?: PageRequest | null;
1311
+ /**
1312
+ * Die direkten Prompt-Tags des **ganzen** Bestands, wie
1313
+ * `collectPromptRunTags()` sie aus demselben Log faltet.
1314
+ *
1315
+ * Sie gehen hier hinein und nicht in einen zweiten Aufruf, weil die Seite
1316
+ * genau die Tags ihrer zehn Laeufe mitbringen soll — ein Nachschlagen je
1317
+ * Karte waere die N+1-Abfrage, die diese Kette ausdruecklich vermeidet.
1318
+ * Fehlt die Angabe, traegt die Seite einen leeren Tagsatz; das heisst „nicht
1319
+ * mitgeliefert", und die Ansicht zeigt dann nur, was sie hat.
1320
+ */
1321
+ tags?: ReadonlyMap<string, readonly LibraryTagRef[]>;
1322
+ /**
1323
+ * Bildanzahl, Vorschau und Library-Tags je Lauf — wie
1324
+ * `annotateRunsFromEvents()` sie liefert.
1325
+ *
1326
+ * Auch das geht **hier** hinein und nicht in einen Aufruf je Karte: Die
1327
+ * Bild-Batches liegen in demselben Log wie die Laeufe, und die Seite bringt
1328
+ * die Zahlen ihrer zehn Laeufe mit.
1329
+ */
1330
+ annotations?: ReadonlyMap<string, PromptRunAnnotation>;
1331
+ /**
1332
+ * Der Titel je **Element**, wie ihn der gefaltete Bestand kennt.
1333
+ *
1334
+ * Aus demselben Grund hier wie Tags und Bildzahlen: Der Name eines Laufs ist
1335
+ * der Titel des Elements, aus dem er entstand (`namingElementOf`), und der
1336
+ * steht in demselben Log. Ihn je Karte einzeln zu lesen hiess bisher, nach
1337
+ * der Seite noch einmal **je Element** eine Abfrage zu stellen — nacheinander,
1338
+ * weil eine Liste sonst zehn gleichzeitig ausloeste.
1339
+ *
1340
+ * Fehlt die Angabe, traegt die Seite keine Titel; die Ansicht loest sie dann
1341
+ * weiterhin selbst auf. Es entsteht keine zweite Namensregel: **welches**
1342
+ * Element benennt, entscheidet nach wie vor `namingElementOf()`.
1343
+ */
1344
+ titles?: ReadonlyMap<string, string>;
1345
+ }
1346
+ /**
1347
+ * Eine Seite Laeufe, **neueste zuerst**, mit allem, was die Anzeige sonst aus
1348
+ * dem Gesamtbestand hatte.
1349
+ *
1350
+ * Warum die Rundennummern mitkommen: Die Runde ist der Platz eines Laufs unter
1351
+ * seinen Geschwistern (U23) — sie laesst sich aus zehn von achthundert Laeufen
1352
+ * nicht ausrechnen. Statt dafuer wieder alles zu uebertragen, rechnet die Seite
1353
+ * sie dort aus, wo der volle Bestand ohnehin liegt, und schickt genau die
1354
+ * Nummern der gezeigten Laeufe mit. Es entsteht keine zweite Zaehlung: dieselbe
1355
+ * Gruppierung, dieselbe Reihenfolge, derselbe 1-basierte Platz wie
1356
+ * `roundOfRun(lauf, siblingsOf(lauf, alle))`.
1357
+ */
1358
+ interface PromptRunPage extends Omit<PromptRunListing, 'runs'>, Page<PromptRunPageRecord> {
1359
+ /**
1360
+ * Dieselben Saetze wie `items` — `runs` bleibt der Name der Laufliste.
1361
+ *
1362
+ * Ueber eine Leitung sind es Listenprojektionen (`detail_omitted`), im
1363
+ * lokal faltenden Host volle Saetze. Die Ansicht unterscheidet das mit
1364
+ * `detailFehlt()` und laedt nur im ersten Fall nach.
1365
+ */
1366
+ runs: readonly PromptRunPageRecord[];
1367
+ /** Rundennummer je `run_id`, nur fuer die Laeufe dieser Seite. */
1368
+ rounds: Readonly<Record<string, number>>;
1369
+ /** Laeufe, die der Herkunftsfilter ausgeblendet hat. */
1370
+ hiddenByOrigin: number;
1371
+ /**
1372
+ * Die **direkten** Tags je `run_id`, nur fuer die Laeufe dieser Seite.
1373
+ *
1374
+ * Ein Lauf ohne Eintrag hat keine Prompt-Tags. Getrennt von `annotations`
1375
+ * gefuehrt, weil diese Tags aus demselben Log stammen wie die Laeufe und
1376
+ * jeder Host sie hat — auch einer ohne Library-Bestand.
1377
+ */
1378
+ promptTags: Readonly<Record<string, readonly LibraryTagRef[]>>;
1379
+ /**
1380
+ * Der Anzeigename je `run_id`, nur fuer die Laeufe dieser Seite und nur, wo
1381
+ * das benennende Element einen Titel hat.
1382
+ *
1383
+ * Ein Lauf ohne Eintrag bleibt titellos und heisst „Runde n" — ein aus der
1384
+ * `run_id` gebastelter Name saehe aus wie ein echter (D-75).
1385
+ */
1386
+ titles?: Readonly<Record<string, string>>;
1387
+ /**
1388
+ * Bildanzahl, Vorschau und Library-Tags je `run_id` — nur wenn der Host sie
1389
+ * liefern kann. Fehlt das Feld, weiss die Ansicht es nicht und sagt das.
1390
+ */
1391
+ annotations?: Readonly<Record<string, PromptRunAnnotation>>;
1392
+ }
1393
+ /**
1394
+ * Die Rundennummer **jedes** Laufs des uebergebenen Bestands.
1395
+ *
1396
+ * Gerechnet auf der chronologischen Reihenfolge, die `collectPromptRuns`
1397
+ * liefert — nicht auf der Anzeigereihenfolge. Die Anzeige dreht sich um; die
1398
+ * Rundenzaehlung tut es nicht, sonst hiesse derselbe Lauf morgen anders.
1399
+ */
1400
+ declare function roundsOf(alle: readonly PromptRunRecord[]): ReadonlyMap<string, number>;
1401
+ /**
1402
+ * Der eine Seitenschnitt fuer Prompt-Laeufe — Server wie Client.
1403
+ *
1404
+ * Reine Funktion ueber einem bereits gelesenen Bestand, genau wie
1405
+ * `selectPromptRuns`, das sie benutzt. Damit gilt der Bezugsrahmen (Status,
1406
+ * Kontext) an beiden Enden unveraendert; dazu kommen Herkunft, Umkehrung und
1407
+ * Schnitt.
1408
+ *
1409
+ * @param alle Der Bestand in der Reihenfolge von `collectPromptRuns`.
1410
+ * @throws Wenn der Cursor in der gefilterten Liste nicht vorkommt (`pageOf`).
1411
+ */
1412
+ declare function pagePromptRuns(alle: readonly PromptRunRecord[], input?: PromptRunPageInput): PromptRunPage;
1413
+ /**
1414
+ * Eine Seite, wie sie **ueber eine Leitung** geht — Kette `szenen-promptliste-transport`.
1415
+ *
1416
+ * Zwei Dinge fallen weg, beide gemessen an `GET /api2/szenen/prompt-runs/page`
1417
+ * auf dev mit zehn Laeufen (203 kB):
1418
+ *
1419
+ * 1. **`items`.** Die Seite trug die Laufliste zweimal: einmal als `runs`,
1420
+ * einmal als `items` aus dem `Page<T>`-Vertrag. Im JSON sind das zwei
1421
+ * vollstaendige Kopien — 100 der 203 kB. Der Vertrag bleibt: Der Adapter
1422
+ * auf der anderen Seite setzt `items` aus `runs` wieder zusammen, statt es
1423
+ * zu uebertragen.
1424
+ * 2. **Die Detailfelder** (`PROMPT_RUN_DETAIL_FIELDS`). 74 der uebrigen 100 kB,
1425
+ * und keines davon zeigt die Liste. Was bleibt, ist als
1426
+ * `PromptRunListRecord` **markiert**, damit die Ansicht ein fehlendes Feld
1427
+ * nicht fuer eine Aussage ueber den Lauf haelt.
1428
+ *
1429
+ * Rein und ohne Host: `items` wegzulassen ist eine Transportentscheidung, und
1430
+ * sie gehoert neben den Seitenschnitt, nicht in einen Controller.
1431
+ */
1432
+ declare function promptRunPageForTransport(seite: PromptRunPage): Omit<PromptRunPage, 'items'>;
1433
+ /**
1434
+ * Die Gegenrichtung: `items` aus `runs` zuruecklegen.
1435
+ *
1436
+ * Der `Page<T>`-Vertrag gilt im Client unveraendert — er wurde nur nicht
1437
+ * uebertragen. Ohne diesen Schritt fehlte `items` still, und jeder kuenftige
1438
+ * Aufrufer von `Page<T>` saehe eine leere Seite statt eines Fehlers.
1439
+ */
1440
+ declare function promptRunPageFromTransport(roh: Omit<PromptRunPage, 'items'>): PromptRunPage;
1510
1441
 
1511
1442
  /**
1512
1443
  * Ein Vorschlag, so wie er im Ereignis steht.
@@ -2942,6 +2873,174 @@ declare function claimWon(job: ImageJob | null, claimId: string): boolean;
2942
2873
  */
2943
2874
  declare function generationBatchIdOf(jobId: string): string;
2944
2875
 
2876
+ /**
2877
+ * Die Statusgruppen, nach denen der Bereich filtert (§3).
2878
+ *
2879
+ * Bewusst **Gruppen** und nicht die rohen Auftragszustaende: Fuer die
2880
+ * Bedienung zaehlt „offen / laeuft / fertig / fehlgeschlagen", und
2881
+ * `succeeded` von `partial` zu trennen waere ein Filter, den niemand braucht.
2882
+ * Die genauen Zustaende stehen weiterhin an jedem Auftrag.
2883
+ */
2884
+ type ImageJobStatusFilter = 'pending' | 'claimed' | 'done' | 'failed' | 'all';
2885
+ /** Ob ein Auftrag noch auf Uebernahme wartet — der Arbeitsvorrat. */
2886
+ declare function istOffen(job: ImageJob): boolean;
2887
+ /**
2888
+ * Die Herkunft eines Auftrags, soweit **aus derselben Faltung** sicher
2889
+ * auflösbar (§3, §8 Regel 3).
2890
+ *
2891
+ * `null`-Felder heissen „steht nicht im Bestand", nicht „unbekannt geraten":
2892
+ * Ein Auftrag, dessen Lauf hier nicht liegt, bekommt keinen erfundenen Titel
2893
+ * (Regel 4).
2894
+ */
2895
+ interface ImageJobHerkunft {
2896
+ run_id: string;
2897
+ /** Der Titel des benennenden Elements — meist die Szene. */
2898
+ szene_titel: string | null;
2899
+ /** Die Kennung dieses Elements, auch wenn kein Titel auflösbar war. */
2900
+ szene_element_id: string | null;
2901
+ /** Ein kurzer Ausschnitt des eingefrorenen positiven Prompts. */
2902
+ prompt_auszug: string | null;
2903
+ /** Ob der Lauf selbst im Bestand liegt. `false` → alle Felder oben sind leer. */
2904
+ lauf_gefunden: boolean;
2905
+ /**
2906
+ * Wie viele Bilder zu diesem **Promptlauf** bisher gesichert sind — ueber
2907
+ * alle Auftraege und Batches (Schritt 03 §4.1).
2908
+ *
2909
+ * Aus **demselben** Durchgang wie die Liste, nicht aus einer Abfrage je
2910
+ * Zeile: Die Zahl steht im Log, und eine Frage je Auftrag waere das
2911
+ * N+1-Problem, das §8 Regel 3 ausschliesst.
2912
+ */
2913
+ bilder_im_lauf: number;
2914
+ }
2915
+ /** Ein Auftrag mit seiner gemeinsam geladenen Herkunft. */
2916
+ interface ImageJobEintrag {
2917
+ job: ImageJob;
2918
+ herkunft: ImageJobHerkunft;
2919
+ }
2920
+ /** Wie viele Zeichen des Prompts in einer Zeile stehen. */
2921
+ declare const PROMPT_AUSZUG_ZEICHEN = 160;
2922
+ interface ImageJobQuery {
2923
+ /** Vorgabe: `pending` — der Bereich ist eine Arbeitsqueue, kein Archiv. */
2924
+ status?: ImageJobStatusFilter;
2925
+ /** Hoechstens so viele Eintraege je Seite. Fehlt: alle. */
2926
+ limit?: number;
2927
+ /** Die Auftragskennung, **nach** der weitergelesen wird. */
2928
+ cursor?: string | null;
2929
+ }
2930
+ interface ImageJobSeite {
2931
+ eintraege: readonly ImageJobEintrag[];
2932
+ /** Die Kennung fuer die naechste Seite, oder `null` — dann ist es vollstaendig. */
2933
+ nextCursor: string | null;
2934
+ /** Wie viele Auftraege der Filter insgesamt trifft, unabhaengig vom Schnitt. */
2935
+ gesamt: number;
2936
+ /**
2937
+ * Wie viele Auftraege des Bestands **offen** sind — unabhaengig von Filter
2938
+ * und Seitenschnitt.
2939
+ *
2940
+ * Der Arbeitsvorrat muss vollstaendig ablesbar bleiben, auch wenn die Seite
2941
+ * ihn nicht ganz zeigt (§8 Regel 4).
2942
+ */
2943
+ offen: number;
2944
+ }
2945
+ /**
2946
+ * Die bestandsweite Auftragsliste aus **einem** Ereignisstrom.
2947
+ *
2948
+ * `storeId` schneidet auf den Bestand dieses Hosts zu — dieselbe Bindung, an
2949
+ * der `claimAndRun()` eine fremde Uebernahme ablehnt. Ein Auftrag eines
2950
+ * anderen Bestands gehoert nicht in diese Liste: Er waere hier weder
2951
+ * ausfuehrbar noch auffindbar.
2952
+ *
2953
+ * Ein unbekannter `cursor` ist ein **Fehler** und kein leeres Ergebnis
2954
+ * (Regel 4): Er bedeutet, dass die Seite auf einem Stand aufsetzt, den es
2955
+ * nicht mehr gibt.
2956
+ */
2957
+ declare function selectImageJobs(events: readonly ElementEvent[], storeId: string, query?: ImageJobQuery): ImageJobSeite;
2958
+ /**
2959
+ * Ein einzelnes gesichertes Bild mit seinem **Ausfuehrungsnachweis** —
2960
+ * Schritt 03 §3.
2961
+ *
2962
+ * Batch und Auftrag bleiben daran ablesbar. Die Bildkontrolle blaettert ueber
2963
+ * eine gemeinsame Betrachtungsebene, sie verschmilzt die Persistenzobjekte
2964
+ * aber nicht: Zwei Batches desselben Laufs sind zwei bezahlte Aufrufe, und
2965
+ * genau das steht hier an jedem Bild (§3.2, §7 Kriterium 7).
2966
+ */
2967
+ interface RunBild {
2968
+ bild: PromptBatchImageRef;
2969
+ prompt_run_id: string;
2970
+ item_id: string;
2971
+ generation_batch_id: string;
2972
+ /** Der Auftrag dieses Batches — `null` bei einem Batch ohne Auftrag. */
2973
+ job_id: string | null;
2974
+ /** Die Stelle im **Batch**, 1-basiert, und die Batchgroesse — „2 / 4". */
2975
+ position_im_batch: number;
2976
+ anzahl_im_batch: number;
2977
+ /** Der Zeitpunkt aus dem Ereignis, nicht aus einer lokalen Uhr. */
2978
+ gespeichert_am: string | null;
2979
+ /** Das Zielmodell des Auftrags, soweit es einen gibt. */
2980
+ execution_target_model_key: string | null;
2981
+ }
2982
+ /**
2983
+ * Die Bildfolge **eines** Promptlaufs, ueber alle seine Auftraege und Batches
2984
+ * hinweg (Schritt 03 §3.2).
2985
+ *
2986
+ * Der Zuschnitt auf den Bestand laeuft wie in `letztesErzeugtesBild` ueber das
2987
+ * Log selbst: Ein fremder Bestand hat sein eigenes Log. `storeId` bestimmt
2988
+ * hier nur, welchen Auftraegen die Batches zugeordnet werden.
2989
+ */
2990
+ declare function bilderDesLaufs(events: readonly ElementEvent[], storeId: string, runId: string): readonly RunBild[];
2991
+ /**
2992
+ * Der Stand der Bildkontrolle: das neueste gesicherte Bild des Bestands und
2993
+ * die **vollstaendige Bildfolge seines Promptlaufs** (Schritt 03 §3).
2994
+ *
2995
+ * Bis Schritt 02 war das eine Ein-Bild-Anzeige. Der Name bleibt, weil der
2996
+ * Einstieg derselbe ist — das neueste Bild —, aber die Auskunft traegt jetzt
2997
+ * die Folge mit: Ohne sie muesste die Oberflaeche je Blaetterschritt neu
2998
+ * fragen, und das waere genau die Dauerabfrage, die §2 abschafft.
2999
+ */
3000
+ interface LetztesErzeugtesBild {
3001
+ /** Der Auftrag, aus dem dieser Batch stammt — `null` bei einem Batch ohne Auftrag. */
3002
+ job: ImageJob | null;
3003
+ prompt_run_id: string;
3004
+ item_id: string;
3005
+ generation_batch_id: string;
3006
+ /** Das **letzte** Bild dieses Batches — das zuletzt entstandene. */
3007
+ bild: PromptBatchImageRef;
3008
+ /** Seine Stelle im Batch, 1-basiert, und die Batchgroesse — „4 / 4". */
3009
+ position: number;
3010
+ anzahl: number;
3011
+ /** Der Zeitpunkt aus dem Ereignis, nicht aus einer lokalen Uhr. */
3012
+ gespeichert_am: string | null;
3013
+ /** Das Zielmodell des Auftrags, soweit es einen gibt. */
3014
+ execution_target_model_key: string | null;
3015
+ /** Die Herkunft des Laufs, in derselben Form wie in der Liste. */
3016
+ herkunft: ImageJobHerkunft | null;
3017
+ /**
3018
+ * Alle Bilder **dieses Promptlaufs** in autoritativer Erfassungsreihenfolge
3019
+ * — das Blaettermaterial der Bildkontrolle (§3.1/§3.2).
3020
+ *
3021
+ * Das letzte Element ist `bild`; die Oberflaeche steht beim Oeffnen dort.
3022
+ */
3023
+ folge: readonly RunBild[];
3024
+ }
3025
+ /**
3026
+ * Das zuletzt gesicherte Bild dieses Bestands, mit der Bildfolge seines Laufs.
3027
+ *
3028
+ * **Bestimmt ueber die Ereignisreihenfolge**, nicht ueber Dateinamen oder
3029
+ * lokale Zeitstempel (§5.1): Das letzte `image_batch_persisted` im Log ist
3030
+ * das zuletzt gesicherte, auch wenn eine Hostuhr falsch geht.
3031
+ *
3032
+ * Der Zuschnitt auf den Bestand laeuft ueber die Auftraege: Ein Batch, dessen
3033
+ * `generation_batch_id` zu einem Auftrag dieses Bestands gehoert, zaehlt
3034
+ * sicher dazu. Ein Batch ohne Auftrag — etwa aus „Bilder erzeugen" im Lauf —
3035
+ * zaehlt ebenfalls, denn er steht im Log **dieses** Bestands; ein fremder
3036
+ * Bestand hat sein eigenes Log.
3037
+ *
3038
+ * Ein Lesevorgang, eine Antwort: Die Folge entsteht aus **demselben**
3039
+ * Durchgang. Sie je Blaetterschritt nachzuladen waere eine zweite Abfrage fuer
3040
+ * eine Bewegung, die keine neuen Tatsachen erzeugt.
3041
+ */
3042
+ declare function letztesErzeugtesBild(events: readonly ElementEvent[], storeId: string): LetztesErzeugtesBild | null;
3043
+
2945
3044
  /**
2946
3045
  * Was der Auftragskanal braucht.
2947
3046
  *
@@ -2999,7 +3098,72 @@ interface SzenenImageJobPort {
2999
3098
  listJobs(runId: string): Promise<QueryResult<readonly ImageJob[]>>;
3000
3099
  /** Beansprucht einen wartenden Auftrag und fuehrt ihn als Gewinner aus. */
3001
3100
  claimAndRun(jobId: string): Promise<ClaimAndRunResult>;
3101
+ /**
3102
+ * Die Auftraege des **Bestands**, unabhaengig vom Prompt-Lauf — Kette
3103
+ * `szenen-bildauftraege-arbeitsqueue`, §8.
3104
+ *
3105
+ * Sie entsteht aus **einem** Lesevorgang derselben autoritativen Projektion,
3106
+ * die `listJobs()` benutzt. Der Weg ueber alle Laeufe plus `listJobs(runId)`
3107
+ * je Lauf waere dieselbe Liste zum N+1-fachen Preis (§8 Regel 1) — und die
3108
+ * Auftraege stehen ohnehin im Log, nicht am Lauf.
3109
+ *
3110
+ * Optional wie jede Portoperation dieses Projekts: Ein Host ohne sie
3111
+ * bekommt den Arbeitsbereich nicht, statt einen leeren zu bekommen.
3112
+ */
3113
+ listAllJobs?(query?: ImageJobQuery): Promise<QueryResult<ImageJobSeite>>;
3114
+ /**
3115
+ * Das zuletzt gesicherte Bild dieses Bestands — die Vorschau „Letztes
3116
+ * erzeugtes Bild" (§5).
3117
+ *
3118
+ * Bestimmt ueber die **Ereignisreihenfolge** des autoritativen Logs, nicht
3119
+ * ueber Dateinamen oder lokale Zeitstempel (§5.1). Erzwingt **keine** Kopie
3120
+ * in die Library: Gelesen wird der vorhandene Batch-Nachweis (§5.2).
3121
+ */
3122
+ latestImage?(): Promise<QueryResult<LetztesErzeugtesBild | null>>;
3123
+ /**
3124
+ * „Weitere Bilder" zu einem bereits abgeschlossenen Auftrag — Schritt 03 §4.
3125
+ *
3126
+ * **Ein neuer Auftrag, nie ein zweiter Lauf des alten.** Der abgeschlossene
3127
+ * Auftrag bleibt unveraendert; was hier entsteht, ist ein eigenes
3128
+ * `imageJobRequested` mit eigener Kennung und — ueber `generationBatchIdOf`
3129
+ * — eigenem Batchnachweis. Ausgefuehrt wird es danach durch **denselben**
3130
+ * `claimAndRun()` wie jeder andere Auftrag; es gibt keinen
3131
+ * „Generate-more"-Providerpfad (§4.3).
3132
+ *
3133
+ * Modell, Profil und Format kommen aus dem Ausgangsauftrag und werden
3134
+ * **gegen die heute gueltige Auswahl geprueft** — nicht uebernommen, weil
3135
+ * sie dastanden. Ist das Profil nicht mehr ausfuehrbar oder passt die
3136
+ * Bildanzahl nicht zu seinem `max_images`, ist das eine Ablehnung mit
3137
+ * Begruendung und kein Ersatzwert (§4.2, Regel 4).
3138
+ */
3139
+ requestMoreImages?(input: RequestMoreImagesInput): Promise<RequestMoreImagesResult>;
3002
3140
  }
3141
+ /** Was „Weitere Bilder" braucht: den Ausgangsauftrag und die neue Anzahl. */
3142
+ interface RequestMoreImagesInput {
3143
+ /** Der abgeschlossene Auftrag, dessen Ausfuehrungsparameter uebernommen werden. */
3144
+ sourceJobId: string;
3145
+ /** Wie viele Bilder der **neue** Auftrag anfordert. */
3146
+ imageCount: number;
3147
+ /** Die Kennung des neuen Auftrags. Ersetzbar, damit ein Test nicht wuerfelt. */
3148
+ jobId?: string;
3149
+ }
3150
+ type RequestMoreImagesResult =
3151
+ /** Angelegt — der neue Auftrag wartet auf Uebernahme. */
3152
+ {
3153
+ kind: 'ok';
3154
+ job: ImageJob;
3155
+ }
3156
+ /** Fachlich abgelehnt; es wurde nichts geschrieben und nichts bezahlt. */
3157
+ | {
3158
+ kind: 'rejected';
3159
+ message: string;
3160
+ }
3161
+ /** Technisch gescheitert; der Bestand ist in Ordnung, der Zugriff nicht. */
3162
+ | {
3163
+ kind: 'error';
3164
+ message: string;
3165
+ retryable: boolean;
3166
+ };
3003
3167
  interface CreateImageJobPortOptions {
3004
3168
  channel: ImageJobChannel;
3005
3169
  /** Der bestehende Bildgenerierungs-Port dieses Hosts (D-116/D-119). */
@@ -3015,6 +3179,8 @@ interface CreateImageJobPortOptions {
3015
3179
  /** Diese Sitzung. Zwei Tabs sind zwei Clients — sonst sind sie ununterscheidbar. */
3016
3180
  clientId: string;
3017
3181
  newClaimId?: () => string;
3182
+ /** Kennung eines **neu angelegten** Auftrags. Ersetzbar, damit ein Test nicht wuerfelt. */
3183
+ newJobId?: () => string;
3018
3184
  now?: () => Date;
3019
3185
  }
3020
3186
  /** Der Uebernahmeweg als Port. */
@@ -3196,6 +3362,48 @@ interface SzenenRunPort {
3196
3362
  * Schnittstelle gebrochen.
3197
3363
  */
3198
3364
  addManualSceneRun?(input: AddManualSceneRunInput): Promise<StartRunFromDraftResult>;
3365
+ /**
3366
+ * **Eine Seite** Laeufe, neueste zuerst — Kette `szenen-listen-pagination`.
3367
+ *
3368
+ * Sie ersetzt die vier Abfragen darueber nicht, sie schneidet sie: derselbe
3369
+ * Bestand, derselbe Bezugsrahmen (`selectPromptRuns`), dieselbe
3370
+ * Gruppierungsregel — nur nicht mehr alles auf einmal. Welcher Einstieg
3371
+ * gemeint ist, steht in `source`; damit gibt es **eine** seitenweise
3372
+ * Operation statt vier, und die Ansicht hat eine Ladefunktion statt vier.
3373
+ *
3374
+ * Die Rundennummern kommen mit (`PromptRunPage.rounds`). Ohne sie muesste die
3375
+ * Ansicht wieder den vollen Bestand lesen, um den Platz eines Laufs unter
3376
+ * seinen Geschwistern zu kennen (U23) — genau das, was der Seitenschnitt
3377
+ * vermeiden soll. Es entsteht keine zweite Zaehlung: gerechnet wird mit
3378
+ * derselben Regel, dort wo der volle Bestand ohnehin liegt.
3379
+ *
3380
+ * Optional wie `listAllRuns`, und aus demselben Grund: Ein Pflichtmitglied
3381
+ * haette jeden bestehenden Implementierer der oeffentlichen Schnittstelle
3382
+ * gebrochen. Fehlt die Operation, meldet `capabilitiesOf()`
3383
+ * `pagedRuns: false`, und die Ansicht laedt wie bisher vollstaendig — sie
3384
+ * zeigt keinen „Mehr laden"-Knopf, den niemand bedienen koennte.
3385
+ */
3386
+ listRunsPage?(input: PromptRunPageInput): Promise<QueryResult<PromptRunPage>>;
3387
+ /**
3388
+ * Setzt die **direkten** Tags eines Laufs — Kette
3389
+ * `szenen-prompt-anzeige-bilder-tags`.
3390
+ *
3391
+ * Uebergeben wird der vollstaendige Satz an Labels, nicht ein Delta:
3392
+ * Entfernen ist ein kuerzerer Satz. Aufgeloest werden die Labels gegen die
3393
+ * bestehende Library-Vokabel (`resolveTagLabels`) — ein unbekanntes Label
3394
+ * wird abgelehnt und nicht nebenbei angelegt, genau wie im Library-Weg.
3395
+ *
3396
+ * Beruehrt **ausschliesslich** die Prompt-Tags. Die Tags zugeordneter
3397
+ * Library-Items sind abgeleitet und liegen an ihren Items; dieser Aufruf
3398
+ * kann sie weder schreiben noch loeschen, und das ist die Zusage, wegen der
3399
+ * die Anzeige beide Herkuenfte mischen darf.
3400
+ *
3401
+ * Optional wie `listRunsPage`: Ein Host ohne autoritativen Schreibweg
3402
+ * bekommt die Operation nicht, `capabilitiesOf()` meldet `runTags: false`,
3403
+ * und die Ansicht zeigt die Tags dann nur an, statt einen Editor
3404
+ * anzubieten, der nichts ablegen kann (§8).
3405
+ */
3406
+ setRunTags?(runId: string, labels: readonly string[]): Promise<CommandResult<readonly LibraryTagRef[]>>;
3199
3407
  }
3200
3408
  interface StartRunFromSceneInput {
3201
3409
  /** Das Szenen-**Element**. Ob Entwurf oder Version gilt, entscheidet der Bestand. */
@@ -3719,6 +3927,10 @@ interface PromptImageBatch {
3719
3927
  * heute nicht — der reguläre `unsupported`-Fall, keine Zeile Sondercode
3720
3928
  * (D-115-Analogie: keine Host-Verzweigung im gemeinsamen Code).
3721
3929
  */
3930
+ /** Die bestehende Library-Tag-Vokabel, nur lesend. */
3931
+ interface SzenenTagVocabularyPort {
3932
+ listTags(): Promise<QueryResult<readonly LibraryTagRef[]>>;
3933
+ }
3722
3934
  interface SzenenImageBatchHistoryPort {
3723
3935
  /** Alle Batches eines Prompt-Laufs — gesucht über IDs, nicht über Titel/Zeit (D-109). */
3724
3936
  listBatchesForPromptRun(runId: string): Promise<QueryResult<readonly PromptImageBatch[]>>;
@@ -3866,6 +4078,17 @@ interface SzenenViewPort {
3866
4078
  * Ereignislog. Flow liefert sie deshalb unabhängig von Bildprovider und
3867
4079
  * Batch-Schreibweg — React liefert sie zusätzlich über MySQL als Index.
3868
4080
  */
4081
+ /**
4082
+ * Die Tag-Vokabel des Hosts — Kette `szenen-prompt-anzeige-bilder-tags`.
4083
+ *
4084
+ * Sie existiert nur, damit der Tag-Editor **vorschlagen** kann, was es
4085
+ * bereits gibt. Geprueft wird trotzdem beim Schreiben, und zwar dort, wo die
4086
+ * Vokabel liegt: Eine Vorschlagsliste im Browser ist keine Zusage.
4087
+ *
4088
+ * Optional wie alles hier: Ein Host ohne sie zeigt ein Freitextfeld, und ein
4089
+ * unbekanntes Label wird beim Speichern mit Namen abgelehnt (Regel 11).
4090
+ */
4091
+ tags?: SzenenTagVocabularyPort;
3869
4092
  imageBatchHistory?: SzenenImageBatchHistoryPort;
3870
4093
  /**
3871
4094
  * Bild-Batch-Schreiben — fehlt ohne sicheren, hostübergreifenden
@@ -3921,10 +4144,28 @@ interface SzenenViewCapabilities {
3921
4144
  imageGeneration: boolean;
3922
4145
  /** Bildauftraege aus dem Chat uebernehmen (Kette szenen-mcp-chatgpt-flow). */
3923
4146
  imageJobs: boolean;
4147
+ /**
4148
+ * Die bestandsweite Auftragsqueue — Bereich `Bildauftraege` (Kette
4149
+ * `szenen-bildauftraege-arbeitsqueue`).
4150
+ *
4151
+ * Getrennt von `imageJobs`: Ein Host kann Auftraege eines Laufs lesen und
4152
+ * uebernehmen, ohne die globale Projektion zu liefern. Dann bleibt die
4153
+ * bestehende Laufansicht vollstaendig und nur der Arbeitsbereich fehlt —
4154
+ * statt leer dazustehen (§2).
4155
+ */
4156
+ imageJobQueue: boolean;
3924
4157
  /** Die herkunftsuebergreifende Prompt-Sicht (P1-A) — Bereich `Prompts`. */
3925
4158
  promptOverview: boolean;
3926
4159
  /** „Promptlauf manuell hinzufuegen" — Kette szenen-manuell-angepasste-promptlaeufe. */
3927
4160
  manualPromptRun: boolean;
4161
+ /** Seitenweises Laden der Laufliste (Kette szenen-listen-pagination). */
4162
+ pagedRuns: boolean;
4163
+ /** Seitenweises Laden der Elementliste (Kette szenen-listen-pagination). */
4164
+ pagedElements: boolean;
4165
+ /** Prompt-Tags bearbeiten (Kette szenen-prompt-anzeige-bilder-tags). */
4166
+ runTags: boolean;
4167
+ /** Vorschlagsliste aus der bestehenden Library-Tag-Vokabel. */
4168
+ tagVocabulary: boolean;
3928
4169
  }
3929
4170
  declare function capabilitiesOf(port: SzenenViewPort): SzenenViewCapabilities;
3930
4171
  /**
@@ -4198,9 +4439,35 @@ type BuildManualPromptRunResult = {
4198
4439
  */
4199
4440
  declare function buildManualPromptRunRecord(eingabe: BuildManualPromptRunInput): BuildManualPromptRunResult;
4200
4441
  /** Der Handeingabe-Block eines Laufs, oder `null` bei jedem anderen Lauf. */
4201
- declare function manualEntryOf(run: PromptRunRecord): ManualPromptEntry | null;
4442
+ declare function manualEntryOf(run: PromptRunPageRecord): ManualPromptEntry | null;
4202
4443
 
4203
4444
  interface CreateMemoryViewPortOptions {
4445
+ /**
4446
+ * Die **direkten** Tags je Lauf — Kette `szenen-prompt-anzeige-bilder-tags`.
4447
+ *
4448
+ * Der Speicherhost fuehrt sie als Zustand und laesst sie auch schreiben:
4449
+ * Anders als der Ereignislog-Weg braucht er dafuer keine Vokabel-Tabelle,
4450
+ * und ein Editor, der im Test nichts ablegen kann, prueft nichts.
4451
+ */
4452
+ runTags?: Record<string, readonly string[]>;
4453
+ /**
4454
+ * Bildanzahl, Vorschau und Library-Tags je Lauf.
4455
+ *
4456
+ * Vorbelegt statt aus Ereignissen gefaltet: Dieser Port haelt Laeufe als
4457
+ * Liste, nicht als Log. Die Faltung selbst prueft
4458
+ * `promptKarte.test.ts` gegen `annotateRunsFromEvents`.
4459
+ */
4460
+ runAnnotations?: Record<string, PromptRunAnnotation>;
4461
+ /** Die Vorschlagsliste des Tag-Editors. Fehlt sie, bietet der Port keine an. */
4462
+ tagVocabulary?: readonly string[];
4463
+ /**
4464
+ * Bildanzahl, Deckbild und Tags je **Element**.
4465
+ *
4466
+ * Vorbelegt wie `runAnnotations` und aus demselben Grund: Dieser Port haelt
4467
+ * keinen Laufbestand, aus dem sich die Ableitung falten liesse. Die Faltung
4468
+ * selbst prueft `promptKarte.test.ts` gegen `annotateElementsFromEvents`.
4469
+ */
4470
+ elementAnnotations?: Record<string, ElementAnnotation>;
4204
4471
  /**
4205
4472
  * Ob der Port Items anbietet. `false` bildet Flow-Pure nach: das Feld fehlt
4206
4473
  * dann ganz, statt eine Operation zu haben, die `unsupported` zurückgibt.
@@ -4478,6 +4745,30 @@ interface PromptRunPersistencePort {
4478
4745
  * leeren Bereich zu zeigen (§8).
4479
4746
  */
4480
4747
  listAll?(): Promise<QueryResult<readonly PromptRunRecord[]>>;
4748
+ /**
4749
+ * **Eine Seite** Laeufe — Kette `szenen-listen-pagination`.
4750
+ *
4751
+ * Optional, und zwar mit einer klaren Aufgabenteilung: Eine Persistenz, die
4752
+ * ihren Bestand **ohne Transport** faltet (der Ereignislog in Flow), braucht
4753
+ * sie nicht — dort schneidet der Port selbst, und das Ergebnis ist
4754
+ * identisch. Eine Persistenz **hinter einer Leitung** (REST) braucht sie,
4755
+ * denn dort ist die Uebertragungsmenge genau das Problem: Nachtraeglich im
4756
+ * Browser zu schneiden hiesse, vorher alles geholt zu haben.
4757
+ */
4758
+ listPage?(input: PromptRunPageInput): Promise<QueryResult<PromptRunPage>>;
4759
+ /**
4760
+ * Setzt die direkten Tags eines Laufs — Kette
4761
+ * `szenen-prompt-anzeige-bilder-tags`.
4762
+ *
4763
+ * Optional, und zwar nicht aus Bequemlichkeit: Ein Prompt-Tag ist eine
4764
+ * **Library-Vokabel**, und die steht in `tags` (MySQL). Eine Persistenz ohne
4765
+ * Zugang zu dieser Vokabel koennte ein Label nicht pruefen — sie muesste es
4766
+ * entweder nebenbei anlegen (was der Library-Weg ausdruecklich nicht tut)
4767
+ * oder ungeprueft anhaengen. Beides waere ein zweites Tag-System. Deshalb
4768
+ * bietet nur die REST-Persistenz diese Operation an; der Ereignislog-Weg
4769
+ * zeigt Tags an, ohne sie schreiben zu koennen (§8).
4770
+ */
4771
+ setTags?(runId: string, labels: readonly string[]): Promise<CommandResult<readonly LibraryTagRef[]>>;
4481
4772
  }
4482
4773
  /** Was der Eventlog-Adapter vom Kanal braucht — lesen und anhängen. */
4483
4774
  interface RunEventChannel {
@@ -4925,6 +5216,89 @@ declare function runOfOperation(runs: readonly PromptRunRecord[], operationId: s
4925
5216
  /** Ob eine eingereichte Antwort woertlich die des bereits gespeicherten Laufs ist. */
4926
5217
  declare function sameResponseAs(run: PromptRunRecord, response: string): boolean;
4927
5218
 
5219
+ /** Die waehlbaren Pausen zwischen zwei Auftraegen, in Sekunden (§4). */
5220
+ declare const PAUSE_SEKUNDEN_OPTIONEN: readonly number[];
5221
+ /** Die Vorgabe, wenn der Nutzer nichts waehlt (§4). */
5222
+ declare const PAUSE_SEKUNDEN_VORGABE = 3;
5223
+ /** Ob ein Wert eine angebotene Pause ist — die Liste ist die Wahrheit. */
5224
+ declare function istGueltigePause(sekunden: number): boolean;
5225
+ /** Wie ein einzelner Auftrag des Snapshots ausgegangen ist. */
5226
+ type QueueAusgang =
5227
+ /** Uebernommen und bis zu einem sicheren Ausgang ausgefuehrt. */
5228
+ {
5229
+ kind: 'ausgefuehrt';
5230
+ jobId: string;
5231
+ status: ImageJob['status'];
5232
+ text: string;
5233
+ }
5234
+ /**
5235
+ * Nicht mehr offen — ein anderer Host hatte ihn, oder er wurde fachlich
5236
+ * abgelehnt. **Nichts wurde bezahlt**, und die Queue laeuft weiter (§4.3).
5237
+ */
5238
+ | {
5239
+ kind: 'uebersprungen';
5240
+ jobId: string;
5241
+ text: string;
5242
+ }
5243
+ /**
5244
+ * Der Ausgang steht **nicht** sicher fest. Die Queue haelt an, damit sie
5245
+ * nicht neben einem moeglicherweise laufenden Providerjob einen zweiten
5246
+ * startet (§4.3, letzter Punkt).
5247
+ */
5248
+ | {
5249
+ kind: 'unbekannt';
5250
+ jobId: string;
5251
+ text: string;
5252
+ };
5253
+ type QueueZustand =
5254
+ /** Ein Auftrag laeuft gerade. */
5255
+ 'laeuft'
5256
+ /** Zwischen zwei Auftraegen — die eingestellte Pause laeuft. */
5257
+ | 'pause'
5258
+ /** Der Snapshot ist vollstaendig abgearbeitet. */
5259
+ | 'fertig'
5260
+ /** Der Nutzer hat abgebrochen; der zuletzt gestartete Auftrag lief zu Ende. */
5261
+ | 'abgebrochen'
5262
+ /** Angehalten wegen unsicherem Ausgang (§4.3). */
5263
+ | 'gestoppt';
5264
+ interface QueueFortschritt {
5265
+ /** Die Kennungen dieses Laufs, in Startreihenfolge — fest ab dem Klick. */
5266
+ snapshot: readonly string[];
5267
+ /** „Job n von m": 1-basiert, `0` solange noch keiner gestartet wurde. */
5268
+ nummer: number;
5269
+ /** Der gerade bearbeitete Auftrag, oder `null` zwischen zwei Auftraegen. */
5270
+ aktuell: string | null;
5271
+ zustand: QueueZustand;
5272
+ /** Der letzte sicher bekannte Ausgang (§4.2). */
5273
+ letzterAusgang: QueueAusgang | null;
5274
+ /** Warum die Queue angehalten hat — gesetzt bei `gestoppt` und `abgebrochen`. */
5275
+ grund: string | null;
5276
+ /** Die eingestellte Pause, damit die Laufanzeige sie nennen kann (§4.2). */
5277
+ pauseSekunden: number;
5278
+ }
5279
+ interface QueueLaufOptionen {
5280
+ /** Die beim Klick offenen Auftraege, aelteste zuerst (§4.1). */
5281
+ snapshot: readonly string[];
5282
+ pauseSekunden: number;
5283
+ /** Der **eine** Ausfuehrungsweg — derselbe wie beim Einzelstart. */
5284
+ claimAndRun: (jobId: string) => Promise<ClaimAndRunResult>;
5285
+ /** Warten. Einspeisbar, damit ein Test nicht zehn Sekunden schlaeft. */
5286
+ warte: (ms: number) => Promise<void>;
5287
+ /** Jeder Zustandswechsel, fuer die Laufanzeige. */
5288
+ melde: (fortschritt: QueueFortschritt) => void;
5289
+ /** Ob der Nutzer inzwischen abgebrochen hat — vor jedem Start gefragt. */
5290
+ abgebrochen: () => boolean;
5291
+ }
5292
+ /**
5293
+ * Arbeitet den Snapshot streng seriell ab.
5294
+ *
5295
+ * Der Rueckgabewert ist der Endstand; jeder Zwischenstand kam vorher ueber
5296
+ * `melde()`. Die Funktion wirft nicht: Ein geworfener Fehler aus
5297
+ * `claimAndRun()` ist genau der unsichere Ausgang, wegen dem angehalten wird,
5298
+ * und er gehoert in den Fortschritt, nicht in einen Stacktrace.
5299
+ */
5300
+ declare function fuehreQueueAus(optionen: QueueLaufOptionen): Promise<QueueFortschritt>;
5301
+
4928
5302
  interface CreateHfImageBatchPersistenceOptions {
4929
5303
  namespace: string;
4930
5304
  token: string;
@@ -5031,7 +5405,7 @@ declare function istZipDatei(datei: {
5031
5405
  */
5032
5406
  declare function leseBilderAusZip(datei: File | Blob): Promise<readonly ZipBild[]>;
5033
5407
 
5034
- type SzenenAreaId = 'scene' | 'prompts' | 'elements' | 'advanced' | 'media';
5408
+ type SzenenAreaId = 'scene' | 'prompts' | 'imageJobs' | 'elements' | 'advanced' | 'media';
5035
5409
  interface SzenenArea {
5036
5410
  id: SzenenAreaId;
5037
5411
  title: string;
@@ -5083,7 +5457,36 @@ interface SzenenViewProps {
5083
5457
  initialArea?: SzenenAreaId;
5084
5458
  /** Meldet Bereichswechsel nach außen, damit der Host sie merken kann. */
5085
5459
  onAreaChange?: (area: SzenenAreaId) => void;
5460
+ /**
5461
+ * Ein von außen angesteuertes Ziel — der Einstieg aus der Library
5462
+ * („Promptlauf öffnen" / „Szene öffnen").
5463
+ *
5464
+ * Es gibt dafür **kein** zweites Routing: Der Fokus wählt den vorhandenen
5465
+ * Bereich und reicht die Kennung an die vorhandene Liste weiter, die ihn
5466
+ * wie jede andere Auswahl behandelt.
5467
+ */
5468
+ fokus?: SzenenFokus | null;
5469
+ /** Zurück dorthin, woher der Fokus kam. Fehlt, wenn es kein Zurück gibt. */
5470
+ onFokusVerlassen?: () => void;
5086
5471
  }
5472
+ /** Das angesteuerte Ziel. Genau eines — nie beides und nie geraten. */
5473
+ type SzenenFokus = {
5474
+ kind: 'run';
5475
+ runId: string;
5476
+ } | {
5477
+ kind: 'scene';
5478
+ elementId: string;
5479
+ /**
5480
+ * Der Lauf, aus dem der Sprung kam — optional.
5481
+ *
5482
+ * Er macht das Ziel nicht mehrdeutig: Angesteuert ist die Szene. Er
5483
+ * sagt nur, welche Runde ihrer Historie gemeint ist, damit dort nicht
5484
+ * die neueste aufgeht und wie die Antwort auf den Sprung aussieht.
5485
+ */
5486
+ runId?: string | null;
5487
+ };
5488
+ /** Der Bereich, in dem ein Fokusziel zu Hause ist. */
5489
+ declare function areaForFokus(fokus: SzenenFokus): SzenenAreaId;
5087
5490
  declare const SzenenView: React__default.FC<SzenenViewProps>;
5088
5491
 
5089
- export { type AddManualSceneRunInput, type AttachLibraryItemInput, type AttachLibraryItemResult, AuthoritativeSzenenStore, type BestandsGalerieEintrag, type BestandsItem, type BuildManualPromptRunInput, CATALOGUE_TYPES, CapabilityAnchorError, type CapabilityFlag, type CapabilityFlagName, type CapabilityReason, type CapabilityReport, type CapabilityReportInput, type CapabilityScope, type CapabilityState, type ChainQueries, type ClaimAndRunResult, type ClientDerivationChannel, type ClientDerivationStore, type CompletePromptOperationInput, type CompletePromptOperationResult, ContextChainPort, type CreateBrowserTextGenerationPortOptions, type CreateClientDerivationPortOptions, type CreateClientRunPortOptions, type CreateFlowSzenenViewPortOptions, type CreateHfElementStoreOptions, type CreateHfEventChannelOptions, type CreateHfImageBatchHistoryOptions, type CreateHfImageBatchPersistenceOptions, type CreateImageGenerationPortOptions, type CreateImageJobPortOptions, type CreateMemoryViewPortOptions, DEFAULT_SEED_VORLAGE, 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 ExecutableImageModel, type ExecutionTargetModel, type ExistingSzenenItem, FLOW_EXECUTION_PATH, type FlowGenerateImage, type FlowGenerateImageParams, FlowGenerateText, type FreezeDraftChainInput, type FreezeFailure, type FreezeResult, type FreezeSceneResult, type FreezeSceneSuccess, type FreezeSceneWorkingStateInput, type FreezeSuccess, type FrozenChainNode, type FrozenSceneState, GENERAL_POLICY_SUBTYPE, type GeneratedImage, type GruppierbaresBild, type HfImageStore, type HfImageStoreOptions, type IdFactory, type ImageBatchPersistedImage, type ImageBatchPersistedPayload, type ImageExecutionProfile, type ImageExecutionRoute, type ImageExecutionTargetModelReader, type ImageGenerationBatchPersistence, type ImageGenerationEventChannel, type ImageGenerationFinishedPayload, type ImageGenerationOrder, type ImageGenerationProviderPort, type ImageGenerationResult, type ImageGenerationRunReader, type ImageGenerationStartedPayload, type ImageHostCapability, type ImageJob, type ImageJobChannel, type ImageJobClaimedPayload, type ImageJobRequestedPayload, type ImageJobSettledPayload, type ImageModelChoice, type ImageModelParameters, ImageProvenance, type ImageProviderInput, type ImportBatchImageInput, type ImportBatchInput, type InMemoryEventChannel, type InputError, type IntegrityVerdict, type ItemDerivationFailure, type ItemDerivationFailureClass, type ItemDerivationResult, type ItemMedium, type LibraryImage, type LibraryImageItem, MANUAL_MODEL_ID, MANUAL_NODE_STATE, MANUAL_PROVIDER, MANUAL_VISIBILITY_BASIS, MCP_CLIENT_PROVIDER, type ManualPromptEntry, type ManualPromptRunRecord, type NodeContribution, NotDerivable, type Notice, type NoticeTone, PROMPT_RULE_EFFECT, type PolicySnapshot, PreferredHeadResolution, type PreparePromptOperationInput, type PreparePromptOperationResult, type PreparedPromptOperation, type PromptBatchImageRef, type PromptBatchOrigin, type PromptDiagnostic, type PromptEffect, type PromptExecutionOrigin, type PromptImageBatch, type PromptOperationPreparedPayload, type PromptResponseContract, type PromptRunFilter, type PromptRunGroup, type PromptRunListing, type PromptRunOutcome, type PromptRunOutput, type PromptRunPersistencePort, type PromptRunRecord, type PromptRunRecordedPayload, type PromptRunSource, type PromptRunStatusFilter, 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 ResolveScenePayloadInput, type ResolveShotInput, type ResolveShotPayloadInput, ResolveTechnicalError, type ResolvedCamera, type ResolvedNode, type ResolvedPlacement, type ResolvedScenePolicy, type RunEventChannel, type RunFailure, type RunFailureClass, type RunItemReference, SZENEN_EVENT_PREFIX, SZENEN_EVENT_TYPES, SZENEN_ITEM_PREFIX, SZENEN_SCHEMAS, SZENEN_SNAPSHOT_FILE, SZENEN_SNAPSHOT_PREFIX, SZENEN_SNAPSHOT_SCHEMA_VERSION, type SaveRunAsItemInput, type SceneDerivationPersistencePort, type SceneDerivationRecord, type SceneDerivationRecordedPayload, type SceneDerivationRecoveryRecord, type SceneDerivationRecoveryRecordedPayload, type ScenePolicyResult, SchemaError, type SeedVorlage, type SeedZuordnung, type SeedZuordnungEintrag, type SelectableTargetModel, type StartImageGenerationInput, type StartRunFromSceneInput, type StartRunInput, type StepState, type SzenenArea, type SzenenAreaId, type SzenenBatchOrigin, type SzenenBatchOriginFailure, type SzenenBatchOriginVerdict, type SzenenBatchSourceKind, SzenenCommands, SzenenElementStore, SzenenElementType, type SzenenImageBatchHistoryPort, type SzenenImageBatchWritePort, type SzenenImageGenerationPort as SzenenImageGenerationPortContract, type SzenenImageJobPort, type SzenenImageLibraryPort, type SzenenItemPort, type SzenenLeseErgebnis, type SzenenMediaPort, SzenenQueries, type SzenenRunPort, type SzenenSeedTemplatePort, type SzenenSnapshot, SzenenView, type SzenenViewCapabilities, type SzenenViewPort, type SzenenViewProps, TargetModelResolution, TextGenerationPort, UNCHECKED_PUBLISH_RULES, UNVERIFIED_MODEL_ID, UPLOAD_MAX_BYTES, type UnselectableTargetModel, UnusableProposal, type VersionMedium, type VisibilityNode, type ZipBild, areasFor, batchesForPromptRun, bildPfad, buildManualPromptRunRecord, buildSystemInstruction, buildSzenenSnapshot, buildUserPrompt, callOptional, capabilitiesOf, capabilityGate, capabilityReport, catalogueFor, checkCreateElementInput, checkElementType, checkImageExecutionProfile, checkImageExecutionProfiles, checkImageModelParameters, checkOptionalId, checkParents, checkPayloadPresent, checkPromptRunRecord, checkPublishVersionInput, checkRequiredId, checkReviseMetadataInput, checkRevision, checkRunResponse, checkSceneDerivationRecord, checkSceneDerivationRecoveryRecord, checkSetPreferredHeadInput, checkSzenenBatchOrigin, checkTitle, checkWriteDraftInput, claimWon, collectImageBatches, collectImageGenerationOrders, collectImageJobs, collectPromptOperations, collectPromptRuns, collectProviderChecks, collectSceneDerivationRecoveries, collectSceneDerivations, completePromptOperation, contextOfRun, createBrowserTextGenerationPort, createClientDerivationPort, createClientRunPort, createEventLogDerivationPersistence, createEventLogRunPersistence, createFlowImageProvider, createFlowSzenenViewPort, createHfElementStore, createHfEventChannel, createHfImageBatchHistory, createHfImageBatchWrite, createHfImageGenerationBatchPersistence, createHfImageLibrary, createHfImageStore, createImageGenerationPort, createImageJobPort, createInMemoryEventChannel, createMemoryViewPort, derivationPoliciesOf, deriveItemFromRun, deriveLineage, describableContent, diagnosticOfFinding, diagnosticOfSchemaError, differentialSteps, draftRevisionOf, executableImageModels, findExecutableImageModel, findImageBatch, findImageGenerationOrder, findImageJob, findPromptOperation, findPromptRun, findProviderCheck, findSceneDerivation, findSceneDerivationRecovery, firstError, formatSeedListe, freezeDraftChain, freezeSceneWorkingState, generationBatchIdOf, gesamtHerkunft, groupKeyOf, groupOf, gruppiereZuItems, hasPlacementCapability, isKnownElementType, isSzenenItemId, istSzenenSnapshotDatei, istZipDatei, itemIdForRun, itemsAusBestand, jobsForPromptRun, ladeVorschauen, leseBilderAusZip, locatorAus, locatorTeile, logRevisionOf, manualEntryOf, mergeSnapshotAndPending, mergeSzenenBatchOrigin, mimeTypAus, mitDefaultVorlage, namingElementOf, noticeFor, ordersForPromptRun, ordneSeedsZu, parseRunResponse, parseSeedListe, parseSzenenSnapshot, preferredHeadRevisionOf, preparePromptOperation, promptDiagnosticsOf, publishedHeadsOf, recoveriesForRun, recoveryStatusOf, reduceElementEvents, resolveArea, resolveGeneralScenePolicies, resolveScenePayload, resolveShot, resolveShotPayload, responseContractOf, roundOfRun, rulesWithoutPromptEffect, runOfOperation, runPromptDerivation, runStoreDifferential, sameResponseAs, sceneOnlyCapabilities, scenePolicyFingerprint, scopeOfPath, seedFehlerText, selectPromptRuns, selectableTargetModels, siblingsOf, sortScenePolicies, sourceOf, szenenSnapshotFilename, totalModelCalls, typAusBytes, unclassifiedPublishRules, unsupportedReason };
5492
+ export { type AddManualSceneRunInput, type AttachLibraryItemInput, type AttachLibraryItemResult, AuthoritativeSzenenStore, type BestandsGalerieEintrag, type BestandsItem, type BuildManualPromptRunInput, CATALOGUE_TYPES, CapabilityAnchorError, type CapabilityFlag, type CapabilityFlagName, type CapabilityReason, type CapabilityReport, type CapabilityReportInput, type CapabilityScope, type CapabilityState, type ChainQueries, type ClaimAndRunResult, type ClientDerivationChannel, type ClientDerivationStore, type CompletePromptOperationInput, type CompletePromptOperationResult, ContextChainPort, type CreateBrowserTextGenerationPortOptions, type CreateClientDerivationPortOptions, type CreateClientRunPortOptions, type CreateFlowSzenenViewPortOptions, type CreateHfElementStoreOptions, type CreateHfEventChannelOptions, type CreateHfImageBatchHistoryOptions, type CreateHfImageBatchPersistenceOptions, type CreateImageGenerationPortOptions, type CreateImageJobPortOptions, type CreateMemoryViewPortOptions, DEFAULT_SEED_VORLAGE, 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, ElementAnnotation, ElementEvent, type ElementEventChannel, type ExecutableImageModel, type ExecutionTargetModel, type ExistingSzenenItem, FLOW_EXECUTION_PATH, type FlowGenerateImage, type FlowGenerateImageParams, FlowGenerateText, type FreezeDraftChainInput, type FreezeFailure, type FreezeResult, type FreezeSceneResult, type FreezeSceneSuccess, type FreezeSceneWorkingStateInput, type FreezeSuccess, type FrozenChainNode, type FrozenSceneState, GENERAL_POLICY_SUBTYPE, type GeneratedImage, type GruppierbaresBild, type HfImageStore, type HfImageStoreOptions, type IdFactory, type ImageExecutionProfile, type ImageExecutionRoute, type ImageExecutionTargetModelReader, type ImageGenerationBatchPersistence, type ImageGenerationEventChannel, type ImageGenerationFinishedPayload, type ImageGenerationOrder, type ImageGenerationProviderPort, type ImageGenerationResult, type ImageGenerationRunReader, type ImageGenerationStartedPayload, type ImageHostCapability, type ImageJob, type ImageJobChannel, type ImageJobClaimedPayload, type ImageJobEintrag, type ImageJobHerkunft, type ImageJobQuery, type ImageJobRequestedPayload, type ImageJobSeite, type ImageJobSettledPayload, type ImageJobStatusFilter, type ImageModelChoice, type ImageModelParameters, ImageProvenance, type ImageProviderInput, type ImportBatchImageInput, type ImportBatchInput, type InMemoryEventChannel, type InputError, type IntegrityVerdict, type ItemDerivationFailure, type ItemDerivationFailureClass, type ItemDerivationResult, type ItemMedium, type LetztesErzeugtesBild, type LibraryImage, type LibraryImageItem, LibraryTagRef, MANUAL_MODEL_ID, MANUAL_NODE_STATE, MANUAL_PROVIDER, MANUAL_VISIBILITY_BASIS, MCP_CLIENT_PROVIDER, type ManualPromptEntry, type ManualPromptRunRecord, type NodeContribution, NotDerivable, type Notice, type NoticeTone, PAUSE_SEKUNDEN_OPTIONEN, PAUSE_SEKUNDEN_VORGABE, PROMPT_AUSZUG_ZEICHEN, PROMPT_RULE_EFFECT, PROMPT_RUN_DETAIL_FIELDS, Page, PageRequest, type PolicySnapshot, PreferredHeadResolution, type PreparePromptOperationInput, type PreparePromptOperationResult, type PreparedPromptOperation, type PromptBatchImageRef, type PromptBatchOrigin, type PromptDiagnostic, type PromptEffect, type PromptExecutionOrigin, type PromptImageBatch, type PromptOperationPreparedPayload, type PromptResponseContract, PromptRunAnnotation, type PromptRunFilter, type PromptRunGroup, type PromptRunListRecord, type PromptRunListing, type PromptRunOriginFilter, type PromptRunOutcome, type PromptRunOutput, type PromptRunPage, type PromptRunPageFilter, type PromptRunPageInput, type PromptRunPageRecord, type PromptRunPageSource, type PromptRunPersistencePort, type PromptRunRecord, type PromptRunRecordedPayload, type PromptRunSource, type PromptRunStatusFilter, type ProviderCheckRecord, type ProviderCheckRecordedPayload, type ProviderCheckResult, PublishCheckResult, PublishFinding, type QueueAusgang, type QueueFortschritt, type QueueLaufOptionen, type QueueZustand, RULES_WITHOUT_CAPABILITY_EFFECT, RULE_SCOPES, type RawSchema, type RecordedDerivationInput, type RecordedProposal, type RecoveryStatus, ReferenceResolver, type RendererInput, type RequestMoreImagesInput, type RequestMoreImagesResult, type ResolveFailure, type ResolveResult, type ResolveScenePayloadInput, type ResolveShotInput, type ResolveShotPayloadInput, ResolveTechnicalError, type ResolvedCamera, type ResolvedNode, type ResolvedPlacement, type ResolvedScenePolicy, type RunBild, type RunEventChannel, type RunFailure, type RunFailureClass, type RunItemReference, SZENEN_ITEM_PREFIX, SZENEN_SCHEMAS, SZENEN_SNAPSHOT_FILE, SZENEN_SNAPSHOT_PREFIX, SZENEN_SNAPSHOT_SCHEMA_VERSION, type SaveRunAsItemInput, type SceneDerivationPersistencePort, type SceneDerivationRecord, type SceneDerivationRecordedPayload, type SceneDerivationRecoveryRecord, type SceneDerivationRecoveryRecordedPayload, type ScenePolicyResult, SchemaError, type SeedVorlage, type SeedZuordnung, type SeedZuordnungEintrag, type SelectableTargetModel, type StartImageGenerationInput, type StartRunFromSceneInput, type StartRunInput, type StepState, type SzenenArea, type SzenenAreaId, type SzenenBatchOrigin, type SzenenBatchOriginFailure, type SzenenBatchOriginVerdict, type SzenenBatchSourceKind, SzenenCommands, SzenenElementStore, SzenenElementType, type SzenenFokus, type SzenenImageBatchHistoryPort, type SzenenImageBatchWritePort, type SzenenImageGenerationPort as SzenenImageGenerationPortContract, type SzenenImageJobPort, type SzenenImageLibraryPort, type SzenenItemPort, type SzenenLeseErgebnis, type SzenenMediaPort, SzenenQueries, type SzenenRunPort, type SzenenSeedTemplatePort, type SzenenSnapshot, SzenenView, type SzenenViewCapabilities, type SzenenViewPort, type SzenenViewProps, TargetModelResolution, TextGenerationPort, UNCHECKED_PUBLISH_RULES, UNVERIFIED_MODEL_ID, UPLOAD_MAX_BYTES, type UnselectableTargetModel, UnusableProposal, type VersionMedium, type VisibilityNode, type ZipBild, areaForFokus, areasFor, batchesForPromptRun, bildPfad, bilderDesLaufs, buildManualPromptRunRecord, buildSystemInstruction, buildSzenenSnapshot, buildUserPrompt, callOptional, capabilitiesOf, capabilityGate, capabilityReport, catalogueFor, checkCreateElementInput, checkElementType, checkImageExecutionProfile, checkImageExecutionProfiles, checkImageModelParameters, checkOptionalId, checkParents, checkPayloadPresent, checkPromptRunRecord, checkPublishVersionInput, checkRequiredId, checkReviseMetadataInput, checkRevision, checkRunResponse, checkSceneDerivationRecord, checkSceneDerivationRecoveryRecord, checkSetPreferredHeadInput, checkSzenenBatchOrigin, checkTitle, checkWriteDraftInput, claimWon, collectImageBatches, collectImageGenerationOrders, collectImageJobs, collectPromptOperations, collectPromptRuns, collectProviderChecks, collectSceneDerivationRecoveries, collectSceneDerivations, completePromptOperation, contextOfRun, createBrowserTextGenerationPort, createClientDerivationPort, createClientRunPort, createEventLogDerivationPersistence, createEventLogRunPersistence, createFlowImageProvider, createFlowSzenenViewPort, createHfElementStore, createHfEventChannel, createHfImageBatchHistory, createHfImageBatchWrite, createHfImageGenerationBatchPersistence, createHfImageLibrary, createHfImageStore, createImageGenerationPort, createImageJobPort, createInMemoryEventChannel, createMemoryViewPort, derivationPoliciesOf, deriveItemFromRun, deriveLineage, describableContent, detailFehlt, diagnosticOfFinding, diagnosticOfSchemaError, differentialSteps, executableImageModels, findExecutableImageModel, findImageBatch, findImageGenerationOrder, findImageJob, findPromptOperation, findPromptRun, findProviderCheck, findSceneDerivation, findSceneDerivationRecovery, firstError, formatSeedListe, freezeDraftChain, freezeSceneWorkingState, fuehreQueueAus, generationBatchIdOf, gesamtHerkunft, groupKeyOf, groupOf, gruppiereZuItems, hasPlacementCapability, isKnownElementType, isSzenenItemId, istGueltigePause, istOffen, istSzenenSnapshotDatei, istZipDatei, itemIdForRun, itemsAusBestand, jobsForPromptRun, ladeVorschauen, leseBilderAusZip, letztesErzeugtesBild, locatorAus, locatorTeile, manualEntryOf, mergeSnapshotAndPending, mergeSzenenBatchOrigin, mimeTypAus, mitDefaultVorlage, namingElementOf, noticeFor, ordersForPromptRun, ordneSeedsZu, pagePromptRuns, parseRunResponse, parseSeedListe, parseSzenenSnapshot, preparePromptOperation, promptDiagnosticsOf, promptRunPageForTransport, promptRunPageFromTransport, publishedHeadsOf, recoveriesForRun, recoveryStatusOf, resolveArea, resolveGeneralScenePolicies, resolveScenePayload, resolveShot, resolveShotPayload, responseContractOf, roundOfRun, roundsOf, rulesWithoutPromptEffect, runOfOperation, runPromptDerivation, runStoreDifferential, sameResponseAs, sceneOnlyCapabilities, scenePolicyFingerprint, scopeOfPath, seedFehlerText, selectImageJobs, selectPromptRuns, selectableTargetModels, siblingsOf, sortScenePolicies, sourceOf, szenenSnapshotFilename, totalModelCalls, typAusBytes, unclassifiedPublishRules, unsupportedReason };