@rslsp1/fa-app-tools 10.1.3 → 10.3.2

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.ts CHANGED
@@ -1,9 +1,9 @@
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-gc2dxews.js';
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-gc2dxews.js';
3
- import { T as TextGenerationPort, Q as QueryResult, C as CommandResult } from './contracts-DdYOMBl9.js';
4
- export { S as SIMULATION_PROVIDER, c as TextGenerationRequest, d as TextGenerationResult, g as createFakeTextGenerationPort, h as createSimulationTextGenerationPort, s as simulatedAnswerFor } from './contracts-DdYOMBl9.js';
5
- import { g as HFStateSnapshot, F as FlowGenerateText } from './hfEventTypes-fAdA-0A9.js';
6
- export { C as CreateFlowTextGenerationPortOptions, r as createFlowTextGenerationPort } from './hfEventTypes-fAdA-0A9.js';
1
+ import { K as ElementEvent, a9 as PromptConstructionTag, G as DraftChainMeta, am as ReferenceResolver, q as DerivableType, a4 as PreferredHeadResolution, ag as PublishFinding, ay as SchemaError, af as PublishCheckResult, aF as SzenenElementType, aM as TargetModelResolution, a1 as PageRequest, Y as LibraryTagRef, aa as PromptRunAnnotation, a0 as Page, Q as ElementStoreState, z as DerivationInputMode, V as ImageProvenance, v as DerivationFailure, Z as NotDerivable, s as DerivationConflict, x as DerivationFollowUp, t as DerivationDiagnostic, r as DerivationAssessment, k as ContextChainPort, d as AuthoritativeSzenenStore, aE as SzenenElementStore, y as DerivationImage, aH as SzenenQueries, aD as SzenenCommands, aO as UnusableProposal, J as ElementAnnotation } from './storeContract-C-em5E61.js';
2
+ export { A as ALL_PUBLISH_RULES, a as AngezeigterTag, b as AnnotateElementsOptions, c as AnnotateRunsOptions, C as CHAIN_EDGES, e as CHAIN_LINK_FIELDS, f as CatalogueEntry, g as ChainLinkField, h as ChainTarget, i as ChainVerdict, j as CompiledSchemas, l as ContractCheck, m as ContractCheckResult, n as ContractRunResult, o as ContractViolation, p as CreateElementInput, D as DERIVABLE_TYPES, u as DerivationEnvelope, w as DerivationFailureClass, B as DerivationPolicyPayload, E as DerivationProposal, F as DraftChainLink, H as DraftFork, I as DraftRecord, L as ElementListFilter, M as ElementMetadata, N as ElementRecord, O as ElementSnapshot, P as ElementStoreContractHarness, R as ElementVersionValidation, S as FindingSeverity, T as ImageBatchPersistedImage, U as ImageBatchPersistedPayload, W as KEINE_BILDER, X as LOAD_MORE_PAGE_SIZE, _ as OptionalCommand, $ as PROBE_VERSION_ID, a2 as ParentRelation, a3 as PreferredHeadOutcome, a5 as PreferredHeadSelection, a6 as PreferredHeadSource, a7 as ProjectionState, a8 as ProjectionStatus, ab as PromptRunPreviewImage, ac as PromptRunTagsSetPayload, ad as PromptTagSelector, ae as PublishCheckInput, ah as PublishRejected, ai as PublishVersionInput, aj as PublishedVersion, ak as REFERENCE_FIELD, al as ReducerFinding, an as ResolvePreferredHeadOptions, ao as ResolvedVersion, ap as ReviseMetadataInput, aq as STYLE_PAYLOAD, ar as STYLE_PAYLOAD_V2, as as SZENEN_ELEMENT_TYPES, at as SZENEN_EVENT_PREFIX, au as SZENEN_EVENT_TYPES, av as SceneDerivationInput, aw as SceneDerivationOutcome, ax as SceneDerivationOutput, az as SchemaValidationResult, aA as SetPreferredHeadInput, aB as StoreAuthority, aC as SzenenCommandResult, aG as SzenenProjection, aI as TagHerkunft, aJ as TargetModelCandidate, aK as TargetModelQueries, aL as TargetModelQuery, aN as UnsupportedSchemaError, aP as VersionDag, aQ as VersionDagError, aR as VersionNode, aS as VersionParentLink, aT as WriteConflict, aU as WriteDraftInput, aV as annotateElementsFromEvents, aW as annotateRunsFromEvents, aX as annotatedElementsPageOver, aY as assessDerivationResponse, aZ as buildDerivationSystemInstruction, a_ as buildDerivationUserPrompt, a$ as buildVersionDag, b0 as checkChainTargets, b1 as checkDerivationResponse, b2 as checkDraftChainMeta, b3 as collectPromptRunTags, b4 as collectVersionRefs, b5 as compileSchemas, b6 as createSimulationSceneDerivationPort, b7 as describeTargetModelFailure, b8 as draftRevisionOf, b9 as effectivePromptVocabulary, ba as elementStoreContractChecks, bb as elementsByActivity, bc as formatSchemaErrors, bd as getSzenenSchemas, be as isOk, bf as isProjectionCurrent, bg as labelsOf, bh as linkFor, bi as listElementsPageOver, bj as logRevisionOf, bk as mergeRunTags, bl as pageOf, bm as pageRequestFrom, bn as parseDerivationResponse, bo as preferredHeadRevisionOf, bp as preferredVersionId, bq as promptRunTagsOf, br as promptTagGroup, bs as reduceElementEvents, bt as resolvePreferredHead, bu as resolvePromptConstructionTags, bv as resolveTargetModelOver, bw as resolverFromQueries, bx as runElementStoreContract, by as runPublishChecks, bz as runSceneDerivation, bA as showChain, bB as tagRefsAus, bC as validateAgainst, bD as validateDerivationInput, bE as validateElementVersion, bF as validatePayload, bG as withReference } from './storeContract-C-em5E61.js';
3
+ import { T as TextGenerationImage, c as TextGenerationPort, Q as QueryResult, C as CommandResult } from './contracts-B3AbzYQ4.js';
4
+ export { S as SIMULATION_PROVIDER, d as TextGenerationRequest, e as TextGenerationResult, h as createFakeTextGenerationPort, i as createSimulationTextGenerationPort, s as simulatedAnswerFor } from './contracts-B3AbzYQ4.js';
5
+ import { e as HFMetadataEntry, g as HFStateSnapshot, F as FlowGenerateText } from './hfEventTypes-DharkVsi.js';
6
+ export { C as CreateFlowTextGenerationPortOptions, r as createFlowTextGenerationPort } from './hfEventTypes-DharkVsi.js';
7
7
  import React__default from 'react';
8
8
 
9
9
  /** Aktuelle Fassung des Dateiformats. */
@@ -104,238 +104,653 @@ declare const SZENEN_SCHEMAS: Readonly<Record<string, RawSchema>>;
104
104
  /** Dateiname des Umschlagschemas — Einstieg jeder Validierung. */
105
105
  declare const ELEMENT_VERSION_SCHEMA_FILE = "element-version.schema.json";
106
106
 
107
+ /** Der Subtyp, der ohne jede weitere Bedingung gilt (Auftrag §1). */
108
+ declare const GENERAL_POLICY_SUBTYPE = "general";
107
109
  /**
108
- * Ist dieses Scene Setup platzierbar?
109
- *
110
- * Genau dann, wenn es ein `coordinate_system` trägt (D-65). Die frühere
111
- * Fassung in `domain-model.md` §9 verlangte „strukturierte Positionen in
112
- * `placements[]` **oder belastbare relative Constraints**" — nicht
113
- * entscheidbar, weil „belastbar" kein Prädikat ist.
114
- *
115
- * **Rein lokal:** liest ein Feld der übergebenen Payload und braucht keinen
116
- * Speicherzugriff. Deshalb lässt sich `can_place` auch ohne `ReferenceResolver`
117
- * widerlegen — der Fähigkeitsbericht nutzt genau das.
110
+ * Eine automatisch aufgeloeste Policy — mit vollstaendiger Provenienz (D-22).
118
111
  *
119
- * **Vertrag: die Payload muss bereits schemavalidiert sein.** Die Funktion
120
- * prüft nur auf Anwesenheit, nicht auf den erlaubten Wert — `coordinate_system:
121
- * 123` gälte hier als platzierbar, ist nach dem Schema aber ungültig. Beide
122
- * Aufrufer halten das ein: Im Publish-Pfad läuft die Schemaprüfung vor P-07,
123
- * und `capabilityReport` validiert selbst, bevor es hierher kommt. Wer die
124
- * Funktion neu aufruft, muss dasselbe tun.
112
+ * `chain_index` ist **nicht** Teil des `RendererInput`: Er ordnet, er ist kein
113
+ * Herkunftsnachweis der Regel. Die entstandene Reihenfolge friert der Lauf
114
+ * ohnehin woertlich ein.
125
115
  */
126
- declare function hasPlacementCapability(setupPayload: unknown): boolean;
127
-
116
+ interface ResolvedScenePolicy {
117
+ element_id: string;
118
+ version_id: string;
119
+ subtype: string;
120
+ rank: number;
121
+ text: string;
122
+ locale: string | null;
123
+ /** Glied der Kontextkette, auf dem das Element liegt. `0` = Arbeitskontext. */
124
+ chain_index: number;
125
+ }
128
126
  /**
129
- * Ein fachlicher Befund des Promptpfads, der den Lauf **nicht** verhindert hat.
127
+ * Das Ergebnis der Aufloesung — drei Ausgaenge, drei Sachverhalte.
130
128
  *
131
- * Er wird im Lauf mit eingefroren (D-22): Wer spaeter fragt, warum ein Prompt
132
- * ohne Kameravorgabe entstand, findet die Antwort im Lauf und nicht in einem
133
- * Logfile, das es nicht mehr gibt.
129
+ * `rejected` ist fachlich (ein Fork, ueber den jemand entscheiden muss),
130
+ * `error` technisch bzw. ein Datenfehler. Sie zusammenzulegen hiesse, einen
131
+ * Speicherdefekt als Normalzustand anzuzeigen.
134
132
  */
135
- interface PromptDiagnostic {
136
- /** Regel-ID (`P-07`) oder Kennung einer Aufloesungsentscheidung. */
137
- code: string;
138
- /** Woher der Befund stammt. */
139
- origin: 'rule' | 'schema' | 'resolution';
140
- /** JSON-Pointer auf die betroffene Stelle, soweit bestimmbar. */
141
- path: string;
133
+ type ScenePolicyResult = {
134
+ kind: 'ok';
135
+ policies: readonly ResolvedScenePolicy[];
136
+ } | {
137
+ kind: 'rejected';
138
+ message: string;
139
+ element_id: string;
140
+ heads: readonly string[];
141
+ } | {
142
+ kind: 'error';
142
143
  message: string;
144
+ retryable: boolean;
145
+ };
146
+ /** Ein Lesevorgang der Momentaufnahme, so schmal wie moeglich beschrieben. */
147
+ interface SnapshotRead<T> {
148
+ kind: string;
149
+ message?: string;
150
+ value?: T;
151
+ }
152
+ /** Der Ausschnitt einer Momentaufnahme, den diese Aufloesung braucht. */
153
+ interface PolicySnapshot {
154
+ getElement(elementId: string): SnapshotRead<{
155
+ element: {
156
+ element_id: string;
157
+ type: string;
158
+ context_id?: string | null;
159
+ };
160
+ versions?: readonly {
161
+ version_id: string;
162
+ element_id: string;
163
+ payload: unknown;
164
+ }[];
165
+ preferredHeads?: readonly {
166
+ context_id: string | null;
167
+ version_id?: string;
168
+ }[];
169
+ } | null>;
170
+ /**
171
+ * Die Elemente eines Kettenglieds — **optional im Typ, nicht im Betrieb.**
172
+ *
173
+ * Optional, weil der Shot-Pfad dieselbe Momentaufnahme benutzt und dort
174
+ * keine Liste braucht. Fehlt sie im Szene-Direktlauf, ist das ein
175
+ * unvollstaendiger Hostadapter und wird laut gemeldet — nicht als „keine
176
+ * Policy vorhanden" ausgelegt (Grundsatzregel 4).
177
+ */
178
+ listElements?(filter: {
179
+ contextId: string | null;
180
+ type: string;
181
+ }): SnapshotRead<readonly {
182
+ element_id: string;
183
+ type: string;
184
+ }[]>;
143
185
  }
144
186
  /**
145
- * Was ein Regelbefund im **Promptpfad** bewirkt.
187
+ * Die deterministische Ordnung automatisch gefundener Policies (Auftrag §6).
146
188
  *
147
- * `blocker` steht bewusst in keiner Zeile der Tabelle unten: Kein Befund aus
148
- * P-01…P-17 verhindert fuer sich genommen einen Textauftrag. Die echten
149
- * Prompt-Blocker sind keine Regelbefunde, sondern Zustaende — kein
150
- * verwertbarer Inhalt, ein Revisionskonflikt, eine technisch unlesbare
151
- * Eingabe, eine nicht endlich aufloesbare Pflichtstruktur. Sie stehen dort,
152
- * wo sie entstehen (`resolve.ts`, `freezeDraftChain.ts`), nicht hier.
189
+ * Eine automatisch entdeckte Menge hat keine gespeicherte Array-Reihenfolge;
190
+ * `rank` allein reicht deshalb nicht aus, sobald zwei Regeln denselben Rang
191
+ * tragen. Keine Deduplizierung nach `name`: verschiedene Elemente sind
192
+ * verschiedene Regeln.
153
193
  */
154
- type PromptEffect = 'diagnostic' | 'blocker' | 'not_applicable';
194
+ declare function sortScenePolicies(policies: readonly ResolvedScenePolicy[]): readonly ResolvedScenePolicy[];
155
195
  /**
156
- * Die Zielrichtung aus Schritt 07 §6, als ausfuehrbare Tabelle.
196
+ * Der Vergleichswert zweier Aufloesungen — fuer die A/B-Stabilitaetspruefung.
157
197
  *
158
- * Vollstaendig ueber `ALL_PUBLISH_RULES` — ein Test wacht darueber. Eine neue
159
- * Regel muss hier eingeordnet werden, sonst faellt sie im Promptpfad
160
- * stillschweigend unter den Tisch, und genau das war der Fehler, den die
161
- * positive Liste in `capabilities.ts` schon einmal verhindert hat.
198
+ * Verglichen wird Element **und** Version in der entstandenen Reihenfolge:
199
+ * Genau dann ist der Policy-Satz derselbe, den der Nutzer gesehen hat. Der
200
+ * Text gehoert nicht hinein — eine veroeffentlichte Version ist
201
+ * unveraenderlich, und ein abweichender Text bei gleicher Kennung waere ein
202
+ * Speicherdefekt, kein Wettlauf.
162
203
  */
163
- declare const PROMPT_RULE_EFFECT: Readonly<Record<string, PromptEffect>>;
164
- /** Regeln, die weder eingeordnet noch als unzuständig benannt sind. */
165
- declare function rulesWithoutPromptEffect(alleRegeln: readonly string[]): readonly string[];
204
+ declare function scenePolicyFingerprint(policies: readonly ResolvedScenePolicy[]): string;
166
205
  /**
167
- * Macht aus einem Publish-Befund einen Prompt-Diagnostic.
206
+ * Die allgemeinen Policies, die fuer einen Szene-Direktlauf gelten.
168
207
  *
169
- * Der Text des Befundes bleibt woertlich stehen. Ihn umzuformulieren hiesse,
170
- * dieselbe Sache an zwei Stellen zu erklaeren — und die zweite Fassung waere
171
- * irgendwann die falsche.
172
- */
173
- declare function diagnosticOfFinding(finding: PublishFinding): PromptDiagnostic;
174
- /** Macht aus einem Schemabefund einen Prompt-Diagnostic (Schritt 07 §7). */
175
- declare function diagnosticOfSchemaError(error: SchemaError, where: string): PromptDiagnostic;
176
- /**
177
- * Alle Prompt-Diagnostics eines Prueflaufs.
208
+ * Ausgewertet wird die **vollstaendige** Kontextkette: Arbeitskontext, geerbte
209
+ * Kontexte, global. Je sichtbarem `prompt_policy`-Element wird die wirksame
210
+ * Version ausschliesslich mit der vorhandenen Preferred-Head-Logik bestimmt
211
+ * (D-36) — hier wird nichts neu ausgelegt und nichts geraten.
178
212
  *
179
- * `advisory` und `blocking` werden hier **gleich** behandelt: Fuer den
180
- * Promptlauf ist der Unterschied bedeutungslos, weil keiner von beiden ihn
181
- * verhindert. Der Unterschied bleibt dort erhalten, wo er zaehlt — im
182
- * Publish-Pfad, der `PublishCheckResult.ok` liest.
213
+ * Kein Netzzugriff: Gelesen wird genau die uebergebene Momentaufnahme. Das ist
214
+ * die Voraussetzung dafuer, dass die Auswahl in dieselbe Konsistenzgrenze
215
+ * faellt wie das Einfrieren der Szene (Gegenpruefung P2).
183
216
  */
184
- declare function promptDiagnosticsOf(checks: PublishCheckResult): PromptDiagnostic[];
217
+ declare function resolveGeneralScenePolicies(snapshot: PolicySnapshot, contextChain: readonly (string | null)[],
185
218
  /**
186
- * Der **einzige** inhaltliche Prompt-Blocker: Gibt dieser Arbeitsstand
187
- * ueberhaupt etwas her, das sich beschreiben laesst?
188
- *
189
- * „Tolerant" heisst nicht „aus nichts wird ein Lauf" (Goal §5.3). Verwertbar
190
- * ist eine Szene, wenn mindestens **eine** dieser Quellen Text traegt:
191
- *
192
- * * ein Knoten mit `semantic.description`,
193
- * * ein Knoten mit mindestens einer Komponentenreferenz — der Text steht
194
- * dann in der referenzierten Komponente,
195
- * * ein Umgebungstext oder eine Umgebungsreferenz.
219
+ * Das gewaehlte Zielmodell dieses Laufs, oder `null` fuer einen generischen.
196
220
  *
197
- * Bewusst **nicht** die blosse Knotenzahl: Ein Knoten ohne jede Beschreibung
198
- * ist ein Platzhalter, kein Inhalt, und ein Prompt daraus waere die leere
199
- * Behauptung, die §5.3 ausschliesst.
221
+ * Nur seinetwegen kommen `target_model`-Policies ueberhaupt in Betracht;
222
+ * ohne Zielmodell bleibt die Auswahl exakt die von Schritt 03.
200
223
  */
201
- declare function describableContent(scenePayload: unknown): {
202
- ok: true;
203
- } | {
204
- ok: false;
205
- message: string;
206
- };
224
+ targetModelElementId?: string | null): ScenePolicyResult;
207
225
 
226
+ /** Ein eingefrorener Kettenknoten — die Provenienz des Laufs (D-98). */
227
+ interface FrozenChainNode {
228
+ type: DerivableType;
229
+ element_id: string;
230
+ draft_id: string;
231
+ revision: number;
232
+ }
233
+ interface FreezeSuccess {
234
+ kind: 'ok';
235
+ chainId: string;
236
+ nodes: readonly FrozenChainNode[];
237
+ input: RendererInput;
238
+ /**
239
+ * Der Rekonstruktionslauf, aus dem die Kette entstand (D-123, A2).
240
+ *
241
+ * Alle Knoten einer Kette teilen dieselben Kettenmetadaten (D-96) — die
242
+ * Übernahme entsteht aus **einer** Operation aus **einem** Ursprung —, daher
243
+ * genügt der Wert eines beliebigen erfassten Knotens, hier der des Shots.
244
+ */
245
+ sourceRunId?: string;
246
+ /** Gesetzt, wenn der Inhalt der Kette aus einer Recovery-Arbeitsfassung kam. */
247
+ sourceRecoveryId?: string;
248
+ }
208
249
  /**
209
- * Zustand einer Fähigkeit.
250
+ * Warum eine Kette nicht eingefroren werden konnte.
210
251
  *
211
- * `unknown` ist ein eigener Zustand und **kein** `false` (D-64). Ein
212
- * `boolean | null` würde im Aufrufer zu `if (!flag)` und damit still zu „kann
213
- * nicht" — die stille Falschaussage, die Grundsatzregel 5 verbietet.
252
+ * `conflict` ist bewusst von `rejected` getrennt: Das eine ist ein Wettlauf und
253
+ * beim nächsten Versuch weg, das andere ein Mangel der Kette, den jemand
254
+ * beheben muss. Sie gleich zu behandeln hieße, dem Nutzer „nochmal versuchen"
255
+ * für einen unvollständigen Shot anzubieten.
256
+ *
257
+ * `error` kam mit Stufe 6.7.1 (D-125) dazu: **technisch**, nicht fachlich —
258
+ * Netz, Drosselung, Speicher nicht erreichbar. Vor 6.7.1 landete ein solcher
259
+ * Lesefehler beim Einfrieren als `rejected`, und ein HF-429 sah dadurch wie
260
+ * ein Mangel der Kette aus (der reale 429-Durchstich vom 2026-08-13). HF671-10
261
+ * verlangt, dass er stattdessen hier ankommt.
214
262
  */
215
- type CapabilityState = 'yes' | 'no' | 'unknown';
216
- /** Warum ein Flag nicht `yes` ist. Nie leer, solange `state !== 'yes'`. */
217
- type CapabilityReason =
218
- /** Die Payload verletzt das Schema des Elementtyps. */
219
- {
220
- kind: 'schema';
221
- error: SchemaError;
222
- }
223
- /** Eine Publish-Regel blockiert. */
224
- | {
225
- kind: 'blocked';
226
- finding: PublishFinding;
227
- }
228
- /** Eine zuständige Regel konnte nicht geprüft werden. */
229
- | {
230
- kind: 'unchecked';
231
- rule: string;
232
- reason: string;
233
- }
234
- /** Eine Strukturbedingung ist verletzt oder unbestimmt. */
235
- | {
236
- kind: 'structure';
263
+ type FreezeFailure = {
264
+ kind: 'conflict';
237
265
  message: string;
238
- }
239
- /** Das Flag erbt das Ergebnis von `can_describe_scene`. */
240
- | {
241
- kind: 'inherited';
242
- from: 'can_describe_scene';
266
+ /** Der Knoten, der sich zwischen den beiden Lesedurchgängen änderte. */
267
+ node: {
268
+ type: DerivableType;
269
+ element_id: string;
270
+ draft_id: string;
271
+ };
272
+ expectedRevision: number;
273
+ actualRevision: number;
274
+ } | {
275
+ kind: 'rejected';
243
276
  message: string;
244
- };
245
- interface CapabilityFlag {
246
- state: CapabilityState;
247
- reasons: readonly CapabilityReason[];
248
- }
249
- interface CapabilityReportInput {
250
- /**
251
- * Elementtyp der Payload. **Pflicht** — er ist aus einer nackten Payload
252
- * nicht ableitbar: `type` steht im Umschlag (`element-version.schema.json`),
253
- * nicht im Payload-Schema. `runPublishChecks` bekommt ihn aus demselben
254
- * Grund explizit.
255
- */
256
- type: SzenenElementType;
257
- /** Payload eines `scene_setup` — veröffentlicht oder Entwurf. */
258
- setupPayload: unknown;
259
- /** Element, zu dem die Payload gehört; die referenzabhängigen Regeln brauchen es. */
260
- elementId: string;
261
- /** Vorgänger im Versions-DAG; P-03 und P-10 werten sie aus. */
262
- parents?: readonly {
263
- parent_version_id: string;
264
- relation: string;
265
- }[];
266
- /** Fehlt er, ist kein Flag besser als `unknown`. Kein stiller Fallback. */
267
- resolver?: ReferenceResolver;
277
+ failure?: ResolveFailure;
278
+ } | {
279
+ kind: 'error';
280
+ message: string;
281
+ retryable: boolean;
282
+ };
283
+ type FreezeResult = FreezeSuccess | FreezeFailure;
284
+ /** Ein einzelnes Element aus einer Momentaufnahme — kein Netzzugriff mehr. */
285
+ interface ChainSnapshot {
286
+ promptConstructionTags?(): readonly PromptConstructionTag[];
287
+ referenceSentenceTags?(): readonly ReferenceSentenceTag[];
288
+ getElement(elementId: string): {
289
+ kind: string;
290
+ message?: string;
291
+ value?: {
292
+ element: {
293
+ element_id: string;
294
+ type: string;
295
+ context_id?: string | null;
296
+ };
297
+ draft: {
298
+ draft_id: string;
299
+ revision: number;
300
+ payload: unknown;
301
+ chain?: DraftChainMeta;
302
+ } | null;
303
+ draftFork?: unknown | null;
304
+ /**
305
+ * Veröffentlichte Versionen — für den Szene-Direktpfad (D-135).
306
+ *
307
+ * Eine Draft-Kette friert ausschließlich Entwürfe ein; eine Szene kann
308
+ * dagegen längst veröffentlicht sein und gar keinen Entwurf mehr haben.
309
+ * Beide Hosts liefern die Liste bereits mit (`ElementSnapshot`), sie war
310
+ * hier nur nicht deklariert.
311
+ */
312
+ versions?: readonly {
313
+ version_id: string;
314
+ element_id: string;
315
+ payload: unknown;
316
+ parents?: unknown;
317
+ }[];
318
+ preferredHeads?: readonly {
319
+ context_id: string | null;
320
+ version_id?: string;
321
+ }[];
322
+ } | null;
323
+ };
268
324
  /**
269
- * Die Szene, vorab aufgelöst — Stufe 6.6, C1 (D-96).
270
- *
271
- * Ohne dieses Feld holt der Bericht die Szene über `setupPayload.scene_ref`
272
- * aus einer veröffentlichten Version; das ist der bisherige und unveränderte
273
- * Weg.
325
+ * Die Elemente eines Kettenglieds — fuer die allgemeinen Kontext-Policies
326
+ * des Szene-Direktlaufs (Schritt 03 §3).
274
327
  *
275
- * Mit diesem Feld kommt sie von außen: Ein Setup einer Draft-Kette trägt
276
- * `scene_ref` bewusst nicht in seiner Payload, sondern führt den Verweis
277
- * daneben. Der Bericht bekommt dieselbe Szene, nur über einen anderen Weg —
278
- * und dieselbe fehlende Referenz wird dann auch in seiner Schemaprüfung
279
- * nicht als Mangel gewertet.
328
+ * Optional im Typ, weil der Shot-Pfad dieselbe Momentaufnahme benutzt und
329
+ * dort keine Liste braucht. Im Szene-Direktlauf ist sie **Pflicht**: Fehlt
330
+ * sie, meldet die Policy-Aufloesung einen Fehler, statt „keine Policy"
331
+ * zu behaupten (Grundsatzregel 4).
280
332
  *
281
- * **Es bleibt bei einem Regelwerk** (D-64): Die Publish-Prüfungen laufen
282
- * unverändert. Geändert hat sich nur, woher die Szene kommt.
333
+ * Aus **derselben** Momentaufnahme wie `getElement` — genau das haelt die
334
+ * Policy-Auswahl in der A/B-Konsistenzgrenze und verhindert einen dritten
335
+ * Live-Leseweg (Gegenpruefung P2).
283
336
  */
284
- chainScene?: unknown;
337
+ listElements?(filter: {
338
+ contextId: string | null;
339
+ type: string;
340
+ }): {
341
+ kind: string;
342
+ message?: string;
343
+ value?: readonly {
344
+ element_id: string;
345
+ type: string;
346
+ }[];
347
+ };
285
348
  }
286
- interface CapabilityReport {
287
- can_describe_scene: CapabilityFlag;
288
- can_render_prompt: CapabilityFlag;
289
- can_place: CapabilityFlag;
290
- /** Der zugrundeliegende Prüflauf, unverändert weitergereicht. */
291
- checks: PublishCheckResult;
349
+ /**
350
+ * Was das Einfrieren vom Elementspeicher braucht — bewusst schmal.
351
+ *
352
+ * Seit Stufe 6.7.1 (D-125) keine sechs unabhängigen `getElement()`-Aufrufe
353
+ * mehr, sondern genau zwei Momentaufnahmen: `readSnapshot({ fresh: false })`
354
+ * für Durchgang A, `readSnapshot({ fresh: true })` für Durchgang B. „Frisch"
355
+ * heißt dabei D-125 — inkrementell gegen den Kanal synchronisiert, nicht ein
356
+ * zweites Mal aus demselben TTL-Cache bedient (sonst könnte B den Konflikt aus
357
+ * HF671-8/9 nicht mehr sehen).
358
+ */
359
+ interface ChainQueries {
360
+ readSnapshot(options: {
361
+ fresh: boolean;
362
+ withReferenceSentence?: boolean;
363
+ withPromptTags?: boolean;
364
+ }): Promise<ChainSnapshot>;
365
+ }
366
+ interface FreezeDraftChainInput {
367
+ withCameraPreview?: boolean;
368
+ /** Das Shot-**Element** der Kette. Eine Version gibt es hier gerade nicht. */
369
+ shotElementId: string;
370
+ store: ChainQueries;
371
+ resolver: ReferenceResolver;
372
+ contextChain: readonly (string | null)[];
373
+ userInstruction?: string | null;
374
+ }
375
+ /**
376
+ * Friert die vom Shot erreichbare Draft-Kette ein und baut die Renderer-Eingabe.
377
+ *
378
+ * Bei **jedem** Fehlausgang gilt: null Provideraufrufe. Diese Funktion ruft
379
+ * ohnehin kein Modell — sie liefert nur die Eingabe, und der Aufrufer entscheidet
380
+ * danach, ob er sie benutzt.
381
+ */
382
+ declare function freezeDraftChain(input: FreezeDraftChainInput): Promise<FreezeResult>;
383
+ /**
384
+ * Was eingefroren wurde — **eines** von beidem, nie beides und nie erfunden.
385
+ *
386
+ * Ein Entwurf hat `draft_id` und `revision` und keine `version_id`; eine
387
+ * veröffentlichte Version genau umgekehrt. Ein Feld, das ehrlich `null` ist,
388
+ * ist besser als eine Kennung, die wie eine echte aussieht (D-75/D-98).
389
+ */
390
+ interface FrozenSceneState {
391
+ element_id: string;
392
+ draft_id: string | null;
393
+ revision: number | null;
394
+ version_id: string | null;
395
+ }
396
+ interface FreezeSceneSuccess {
397
+ kind: 'ok';
398
+ scene: FrozenSceneState;
399
+ input: RendererInput;
292
400
  /**
293
- * Schemafehler der Payload. Leer, wenn sie dem Typschema entspricht.
401
+ * Die automatisch aufgeloesten allgemeinen Kontext-Policies (Schritt 03).
294
402
  *
295
- * Steht getrennt von `checks`, weil die Schemaprüfung **vor** den
296
- * Publish-Regeln läuft und eine andere Frage beantwortet: nicht „hält dieser
297
- * Stand die Modellregeln ein", sondern „ist das überhaupt ein Scene Setup".
403
+ * Redundant zu `input.policies` und trotzdem hier: Der Aufrufer sieht so den
404
+ * Satz **mit** `chain_index`, ohne die Ordnung nachbauen zu muessen. Der
405
+ * eingefrorene Lauf traegt weiterhin ausschliesslich `input`.
298
406
  */
299
- schemaErrors: readonly SchemaError[];
407
+ policies: readonly ResolvedScenePolicy[];
300
408
  /**
301
- * Was dem Promptpfad auffiel, ohne ihn zu verhindern (D-135).
409
+ * Das eingefrorene Zielmodell, oder `null` fuer einen generischen Lauf.
302
410
  *
303
- * Dieselben Befunde, die `checks` fuehrt — nur in der Wirkung, die sie fuer
304
- * **diese** Operation haben. Ein zweiter Prueflauf entsteht dabei nicht.
411
+ * Wie `policies` redundant zu `input` und trotzdem hier: Der Aufrufer sieht
412
+ * die Provenienz, ohne sie aus `renderer_input` zurueckrechnen zu muessen.
305
413
  */
306
- promptDiagnostics: readonly PromptDiagnostic[];
414
+ targetModel: FrozenSceneTargetModel | null;
307
415
  }
308
- /** Ein falscher Anker ist ein Aufruffehler, kein Befund. */
309
- declare class CapabilityAnchorError extends Error {
416
+ type FreezeSceneResult = FreezeSceneSuccess | FreezeFailure;
417
+ interface FreezeSceneWorkingStateInput {
418
+ /** Das Szenen-**Element**. Ob Entwurf oder Version, entscheidet der Bestand. */
419
+ sceneElementId: string;
420
+ store: ChainQueries;
421
+ resolver: ReferenceResolver;
422
+ contextChain: readonly (string | null)[];
423
+ userInstruction?: string | null;
424
+ /**
425
+ * Das gewaehlte Zielmodell (Kette `szenen-direktlauf-target-model-policy`).
426
+ *
427
+ * Optional: Ohne Angabe bleibt der Ablauf exakt der generische von D-135 —
428
+ * kein Zielmodell im `RendererInput`, keine `target_model`-Policy.
429
+ */
430
+ targetModelElementId?: string | null;
310
431
  }
311
- type CapabilityScope = 'scene' | 'camera_rig' | 'placement' | 'global';
312
- /** Die drei Flags des Berichts — als Name, nicht als Restmenge des Berichts. */
313
- type CapabilityFlagName = 'can_describe_scene' | 'can_render_prompt' | 'can_place';
314
432
  /**
315
- * Welche Bereiche eine Regel beim Anker `scene_setup` abdeckt.
433
+ * Das gewaehlte Zielmodell eines Szene-Direktlaufs — Kette
434
+ * `szenen-direktlauf-target-model-policy`, Schritt 01.
316
435
  *
317
- * **Positive Liste, und das ist der Kern.** `unchecked` vermischt drei
318
- * Sachverhalte — nachweisbar an den Meldungstexten in `publishChecks.ts`:
436
+ * **Warum ueber die `element_id` und nicht ueber den Key.** Der Shot-Pfad sucht
437
+ * ein Zielmodell ueber `prompt_render_settings.target_model_id`, also ueber
438
+ * einen freien Key entlang der Kette — mit allen Ausgaengen, die dazugehoeren
439
+ * (`not_found`, `ambiguous`, `retired`, `fork`). Der Szene-Direktlauf bekommt
440
+ * das Modell dagegen von einem Menschen ausgewaehlt, und der waehlt es aus
441
+ * einer Liste, die schon aufgeloest ist. Die Kennung ist damit eindeutig, und
442
+ * sie ist dieselbe, die eine `target_model`-Policy in
443
+ * `applicable_target_models` nennt. Eine zweite Suche ueber einen geratenen
444
+ * Namen waere fehleranfaelliger als die Kennung, die vorliegt.
319
445
  *
320
- * „kein ReferenceResolver uebergeben" → echt unbestimmt
321
- * „Regel gilt nur fuer shot" → nicht anwendbar
322
- * „Laufzeitregel der Aufloesung" → keine Veröffentlichungsbedingung
446
+ * Die **Version** waehlt trotzdem niemand von Hand: Sie kommt aus derselben
447
+ * D-36-Preferred-Head-Aufloesung wie der Arbeitsstand der Szene daneben.
448
+ */
449
+ interface FrozenSceneTargetModel {
450
+ element_id: string;
451
+ version_id: string;
452
+ /** Glied der Kontextkette, auf dem das Element liegt. `0` = Arbeitskontext. */
453
+ chain_index: number;
454
+ payload: unknown;
455
+ head: PreferredHeadResolution;
456
+ }
457
+ /**
458
+ * Friert den Arbeitsstand **einer Szene** ein und baut die Renderer-Eingabe
459
+ * (D-135).
323
460
  *
324
- * Eine Abbildung `unchecked → unknown` machte den Bericht deshalb **dauerhaft**
325
- * unbestimmt: P-01 und P-12 stehen bei jedem Setup-Lauf unter `unchecked`, auch
326
- * mit vollständig funktionierendem Resolver. Nur was hier steht, wirkt.
461
+ * Dasselbe optimistische Zwei-Durchgang-Verfahren wie bei der Draft-Kette
462
+ * (D-97): lesen, kopieren, frisch nachlesen, Revision vergleichen, und den
463
+ * Snapshot aus den **kopierten** Inhalten bauen. Ein Konflikt bleibt ein
464
+ * echter Blocker — **vor** dem kostenpflichtigen Provideraufruf. Dieser Goal
465
+ * lockert daran nichts (Goal §8.1).
327
466
  *
328
- * Eine Regel kann **mehrere** Bereiche abdecken: P-04 prüft die Szenenreferenz
329
- * und die Preset-Referenzen, P-05 die Node-Referenzen in Overrides, Placements
330
- * und Kamerafeldern. Ein einzelner Scope-Wert je Regel wäre zu grob.
467
+ * Eine veröffentlichte Version ist unveränderlich; für sie kann Durchgang B
468
+ * keinen Revisionskonflikt finden. Er läuft trotzdem: Verschwindet die Version
469
+ * zwischen den Durchgängen aus der wirksamen Sicht — stillgelegt, ein anderer
470
+ * Preferred Head —, ist der Stand nicht mehr der, den der Nutzer gesehen hat.
331
471
  */
332
- declare const RULE_SCOPES: Readonly<Record<string, readonly CapabilityScope[]>>;
472
+ declare function freezeSceneWorkingState(input: FreezeSceneWorkingStateInput): Promise<FreezeSceneResult>;
473
+
474
+ interface ReferenceSentenceTag {
475
+ category: string;
476
+ label: string;
477
+ value: string;
478
+ context_id: string | null;
479
+ }
480
+ interface FrozenReferenceSentence {
481
+ tag: string;
482
+ tag_context_id: string | null;
483
+ /** Historical runs may carry provenance of the former fragment link. */
484
+ element_id?: string;
485
+ version_id?: string;
486
+ template_text: string;
487
+ text: string;
488
+ reference_image_token: string;
489
+ }
490
+
491
+ interface CameraPreviewContext {
492
+ camera_id: string;
493
+ background_color: string;
494
+ composition_reference_sent: boolean;
495
+ reference_image_token: string | null;
496
+ coordinate_system: 'blender_z_up_meters';
497
+ objects: {
498
+ node_id: string;
499
+ label: string;
500
+ type: string;
501
+ preview_color: {
502
+ hex: string;
503
+ name: string;
504
+ };
505
+ proxy: {
506
+ primitive: string;
507
+ dimensions_m: readonly number[];
508
+ position_m: readonly number[];
509
+ rotation_euler_deg: readonly number[];
510
+ scale: readonly number[];
511
+ };
512
+ contributions: RendererInput['scene']['nodes'][number]['contributions'];
513
+ properties: Record<string, unknown>;
514
+ image_references: NonNullable<RendererInput['scene']['nodes'][number]['media_refs']>;
515
+ solid_color_pixels?: number;
516
+ }[];
517
+ excluded_hidden_node_ids: string[];
518
+ }
519
+ /** Built from precisely the same frame and palette as the PNG, without interpreting image contents. */
520
+ declare function buildCameraPreviewContext(input: RendererInput, pixels?: Readonly<Record<string, number>>): CameraPreviewContext;
521
+
333
522
  /**
334
- * Regeln, die beim Anker `scene_setup` bewusst kein Flag beeinflussen —
335
- * jede mit dem Grund, aus dem sie ausgenommen ist.
523
+ * Ist dieses Scene Setup platzierbar?
336
524
  *
337
- * Zusammen mit `RULE_SCOPES` deckt diese Liste `ALL_PUBLISH_RULES` vollständig
338
- * ab; ein Test wacht darüber. P-17 aus Stufe 3 hat ihn genau so zum Scheitern
525
+ * Genau dann, wenn es ein `coordinate_system` trägt (D-65). Die frühere
526
+ * Fassung in `domain-model.md` §9 verlangte „strukturierte Positionen in
527
+ * `placements[]` **oder belastbare relative Constraints**" — nicht
528
+ * entscheidbar, weil „belastbar" kein Prädikat ist.
529
+ *
530
+ * **Rein lokal:** liest ein Feld der übergebenen Payload und braucht keinen
531
+ * Speicherzugriff. Deshalb lässt sich `can_place` auch ohne `ReferenceResolver`
532
+ * widerlegen — der Fähigkeitsbericht nutzt genau das.
533
+ *
534
+ * **Vertrag: die Payload muss bereits schemavalidiert sein.** Die Funktion
535
+ * prüft nur auf Anwesenheit, nicht auf den erlaubten Wert — `coordinate_system:
536
+ * 123` gälte hier als platzierbar, ist nach dem Schema aber ungültig. Beide
537
+ * Aufrufer halten das ein: Im Publish-Pfad läuft die Schemaprüfung vor P-07,
538
+ * und `capabilityReport` validiert selbst, bevor es hierher kommt. Wer die
539
+ * Funktion neu aufruft, muss dasselbe tun.
540
+ */
541
+ declare function hasPlacementCapability(setupPayload: unknown): boolean;
542
+
543
+ /**
544
+ * Ein fachlicher Befund des Promptpfads, der den Lauf **nicht** verhindert hat.
545
+ *
546
+ * Er wird im Lauf mit eingefroren (D-22): Wer spaeter fragt, warum ein Prompt
547
+ * ohne Kameravorgabe entstand, findet die Antwort im Lauf und nicht in einem
548
+ * Logfile, das es nicht mehr gibt.
549
+ */
550
+ interface PromptDiagnostic {
551
+ /** Regel-ID (`P-07`) oder Kennung einer Aufloesungsentscheidung. */
552
+ code: string;
553
+ /** Woher der Befund stammt. */
554
+ origin: 'rule' | 'schema' | 'resolution';
555
+ /** JSON-Pointer auf die betroffene Stelle, soweit bestimmbar. */
556
+ path: string;
557
+ message: string;
558
+ }
559
+ /**
560
+ * Was ein Regelbefund im **Promptpfad** bewirkt.
561
+ *
562
+ * `blocker` steht bewusst in keiner Zeile der Tabelle unten: Kein Befund aus
563
+ * P-01…P-17 verhindert fuer sich genommen einen Textauftrag. Die echten
564
+ * Prompt-Blocker sind keine Regelbefunde, sondern Zustaende — kein
565
+ * verwertbarer Inhalt, ein Revisionskonflikt, eine technisch unlesbare
566
+ * Eingabe, eine nicht endlich aufloesbare Pflichtstruktur. Sie stehen dort,
567
+ * wo sie entstehen (`resolve.ts`, `freezeDraftChain.ts`), nicht hier.
568
+ */
569
+ type PromptEffect = 'diagnostic' | 'blocker' | 'not_applicable';
570
+ /**
571
+ * Die Zielrichtung aus Schritt 07 §6, als ausfuehrbare Tabelle.
572
+ *
573
+ * Vollstaendig ueber `ALL_PUBLISH_RULES` — ein Test wacht darueber. Eine neue
574
+ * Regel muss hier eingeordnet werden, sonst faellt sie im Promptpfad
575
+ * stillschweigend unter den Tisch, und genau das war der Fehler, den die
576
+ * positive Liste in `capabilities.ts` schon einmal verhindert hat.
577
+ */
578
+ declare const PROMPT_RULE_EFFECT: Readonly<Record<string, PromptEffect>>;
579
+ /** Regeln, die weder eingeordnet noch als unzuständig benannt sind. */
580
+ declare function rulesWithoutPromptEffect(alleRegeln: readonly string[]): readonly string[];
581
+ /**
582
+ * Macht aus einem Publish-Befund einen Prompt-Diagnostic.
583
+ *
584
+ * Der Text des Befundes bleibt woertlich stehen. Ihn umzuformulieren hiesse,
585
+ * dieselbe Sache an zwei Stellen zu erklaeren — und die zweite Fassung waere
586
+ * irgendwann die falsche.
587
+ */
588
+ declare function diagnosticOfFinding(finding: PublishFinding): PromptDiagnostic;
589
+ /** Macht aus einem Schemabefund einen Prompt-Diagnostic (Schritt 07 §7). */
590
+ declare function diagnosticOfSchemaError(error: SchemaError, where: string): PromptDiagnostic;
591
+ /**
592
+ * Alle Prompt-Diagnostics eines Prueflaufs.
593
+ *
594
+ * `advisory` und `blocking` werden hier **gleich** behandelt: Fuer den
595
+ * Promptlauf ist der Unterschied bedeutungslos, weil keiner von beiden ihn
596
+ * verhindert. Der Unterschied bleibt dort erhalten, wo er zaehlt — im
597
+ * Publish-Pfad, der `PublishCheckResult.ok` liest.
598
+ */
599
+ declare function promptDiagnosticsOf(checks: PublishCheckResult): PromptDiagnostic[];
600
+ /**
601
+ * Der **einzige** inhaltliche Prompt-Blocker: Gibt dieser Arbeitsstand
602
+ * ueberhaupt etwas her, das sich beschreiben laesst?
603
+ *
604
+ * „Tolerant" heisst nicht „aus nichts wird ein Lauf" (Goal §5.3). Verwertbar
605
+ * ist eine Szene, wenn mindestens **eine** dieser Quellen Text traegt:
606
+ *
607
+ * * ein Knoten mit `semantic.description`,
608
+ * * ein Knoten mit mindestens einer Komponentenreferenz — der Text steht
609
+ * dann in der referenzierten Komponente,
610
+ * * ein Umgebungstext oder eine Umgebungsreferenz.
611
+ *
612
+ * Bewusst **nicht** die blosse Knotenzahl: Ein Knoten ohne jede Beschreibung
613
+ * ist ein Platzhalter, kein Inhalt, und ein Prompt daraus waere die leere
614
+ * Behauptung, die §5.3 ausschliesst.
615
+ */
616
+ declare function describableContent(scenePayload: unknown): {
617
+ ok: true;
618
+ } | {
619
+ ok: false;
620
+ message: string;
621
+ };
622
+
623
+ /**
624
+ * Zustand einer Fähigkeit.
625
+ *
626
+ * `unknown` ist ein eigener Zustand und **kein** `false` (D-64). Ein
627
+ * `boolean | null` würde im Aufrufer zu `if (!flag)` und damit still zu „kann
628
+ * nicht" — die stille Falschaussage, die Grundsatzregel 5 verbietet.
629
+ */
630
+ type CapabilityState = 'yes' | 'no' | 'unknown';
631
+ /** Warum ein Flag nicht `yes` ist. Nie leer, solange `state !== 'yes'`. */
632
+ type CapabilityReason =
633
+ /** Die Payload verletzt das Schema des Elementtyps. */
634
+ {
635
+ kind: 'schema';
636
+ error: SchemaError;
637
+ }
638
+ /** Eine Publish-Regel blockiert. */
639
+ | {
640
+ kind: 'blocked';
641
+ finding: PublishFinding;
642
+ }
643
+ /** Eine zuständige Regel konnte nicht geprüft werden. */
644
+ | {
645
+ kind: 'unchecked';
646
+ rule: string;
647
+ reason: string;
648
+ }
649
+ /** Eine Strukturbedingung ist verletzt oder unbestimmt. */
650
+ | {
651
+ kind: 'structure';
652
+ message: string;
653
+ }
654
+ /** Das Flag erbt das Ergebnis von `can_describe_scene`. */
655
+ | {
656
+ kind: 'inherited';
657
+ from: 'can_describe_scene';
658
+ message: string;
659
+ };
660
+ interface CapabilityFlag {
661
+ state: CapabilityState;
662
+ reasons: readonly CapabilityReason[];
663
+ }
664
+ interface CapabilityReportInput {
665
+ /**
666
+ * Elementtyp der Payload. **Pflicht** — er ist aus einer nackten Payload
667
+ * nicht ableitbar: `type` steht im Umschlag (`element-version.schema.json`),
668
+ * nicht im Payload-Schema. `runPublishChecks` bekommt ihn aus demselben
669
+ * Grund explizit.
670
+ */
671
+ type: SzenenElementType;
672
+ /** Payload eines `scene_setup` — veröffentlicht oder Entwurf. */
673
+ setupPayload: unknown;
674
+ /** Element, zu dem die Payload gehört; die referenzabhängigen Regeln brauchen es. */
675
+ elementId: string;
676
+ /** Vorgänger im Versions-DAG; P-03 und P-10 werten sie aus. */
677
+ parents?: readonly {
678
+ parent_version_id: string;
679
+ relation: string;
680
+ }[];
681
+ /** Fehlt er, ist kein Flag besser als `unknown`. Kein stiller Fallback. */
682
+ resolver?: ReferenceResolver;
683
+ /**
684
+ * Die Szene, vorab aufgelöst — Stufe 6.6, C1 (D-96).
685
+ *
686
+ * Ohne dieses Feld holt der Bericht die Szene über `setupPayload.scene_ref`
687
+ * aus einer veröffentlichten Version; das ist der bisherige und unveränderte
688
+ * Weg.
689
+ *
690
+ * Mit diesem Feld kommt sie von außen: Ein Setup einer Draft-Kette trägt
691
+ * `scene_ref` bewusst nicht in seiner Payload, sondern führt den Verweis
692
+ * daneben. Der Bericht bekommt dieselbe Szene, nur über einen anderen Weg —
693
+ * und dieselbe fehlende Referenz wird dann auch in seiner Schemaprüfung
694
+ * nicht als Mangel gewertet.
695
+ *
696
+ * **Es bleibt bei einem Regelwerk** (D-64): Die Publish-Prüfungen laufen
697
+ * unverändert. Geändert hat sich nur, woher die Szene kommt.
698
+ */
699
+ chainScene?: unknown;
700
+ }
701
+ interface CapabilityReport {
702
+ can_describe_scene: CapabilityFlag;
703
+ can_render_prompt: CapabilityFlag;
704
+ can_place: CapabilityFlag;
705
+ /** Der zugrundeliegende Prüflauf, unverändert weitergereicht. */
706
+ checks: PublishCheckResult;
707
+ /**
708
+ * Schemafehler der Payload. Leer, wenn sie dem Typschema entspricht.
709
+ *
710
+ * Steht getrennt von `checks`, weil die Schemaprüfung **vor** den
711
+ * Publish-Regeln läuft und eine andere Frage beantwortet: nicht „hält dieser
712
+ * Stand die Modellregeln ein", sondern „ist das überhaupt ein Scene Setup".
713
+ */
714
+ schemaErrors: readonly SchemaError[];
715
+ /**
716
+ * Was dem Promptpfad auffiel, ohne ihn zu verhindern (D-135).
717
+ *
718
+ * Dieselben Befunde, die `checks` fuehrt — nur in der Wirkung, die sie fuer
719
+ * **diese** Operation haben. Ein zweiter Prueflauf entsteht dabei nicht.
720
+ */
721
+ promptDiagnostics: readonly PromptDiagnostic[];
722
+ }
723
+ /** Ein falscher Anker ist ein Aufruffehler, kein Befund. */
724
+ declare class CapabilityAnchorError extends Error {
725
+ }
726
+ type CapabilityScope = 'scene' | 'camera_rig' | 'placement' | 'global';
727
+ /** Die drei Flags des Berichts — als Name, nicht als Restmenge des Berichts. */
728
+ type CapabilityFlagName = 'can_describe_scene' | 'can_render_prompt' | 'can_place';
729
+ /**
730
+ * Welche Bereiche eine Regel beim Anker `scene_setup` abdeckt.
731
+ *
732
+ * **Positive Liste, und das ist der Kern.** `unchecked` vermischt drei
733
+ * Sachverhalte — nachweisbar an den Meldungstexten in `publishChecks.ts`:
734
+ *
735
+ * „kein ReferenceResolver uebergeben" → echt unbestimmt
736
+ * „Regel gilt nur fuer shot" → nicht anwendbar
737
+ * „Laufzeitregel der Aufloesung" → keine Veröffentlichungsbedingung
738
+ *
739
+ * Eine Abbildung `unchecked → unknown` machte den Bericht deshalb **dauerhaft**
740
+ * unbestimmt: P-01 und P-12 stehen bei jedem Setup-Lauf unter `unchecked`, auch
741
+ * mit vollständig funktionierendem Resolver. Nur was hier steht, wirkt.
742
+ *
743
+ * Eine Regel kann **mehrere** Bereiche abdecken: P-04 prüft die Szenenreferenz
744
+ * und die Preset-Referenzen, P-05 die Node-Referenzen in Overrides, Placements
745
+ * und Kamerafeldern. Ein einzelner Scope-Wert je Regel wäre zu grob.
746
+ */
747
+ declare const RULE_SCOPES: Readonly<Record<string, readonly CapabilityScope[]>>;
748
+ /**
749
+ * Regeln, die beim Anker `scene_setup` bewusst kein Flag beeinflussen —
750
+ * jede mit dem Grund, aus dem sie ausgenommen ist.
751
+ *
752
+ * Zusammen mit `RULE_SCOPES` deckt diese Liste `ALL_PUBLISH_RULES` vollständig
753
+ * ab; ein Test wacht darüber. P-17 aus Stufe 3 hat ihn genau so zum Scheitern
339
754
  * gebracht, bis sie unten eingeordnet war — eine neue Regel kann nicht
340
755
  * stillschweigend wirkungslos bleiben.
341
756
  */
@@ -391,138 +806,31 @@ declare function sceneOnlyCapabilities(scenePayload: unknown): {
391
806
  can_place: CapabilityFlag;
392
807
  };
393
808
 
394
- /** Der Subtyp, der ohne jede weitere Bedingung gilt (Auftrag §1). */
395
- declare const GENERAL_POLICY_SUBTYPE = "general";
396
- /**
397
- * Eine automatisch aufgeloeste Policy — mit vollstaendiger Provenienz (D-22).
398
- *
399
- * `chain_index` ist **nicht** Teil des `RendererInput`: Er ordnet, er ist kein
400
- * Herkunftsnachweis der Regel. Die entstandene Reihenfolge friert der Lauf
401
- * ohnehin woertlich ein.
402
- */
403
- interface ResolvedScenePolicy {
404
- element_id: string;
405
- version_id: string;
406
- subtype: string;
809
+ /** Ein Beitrag zur Beschreibung eines Knotens, mit Herkunft (D-50). */
810
+ interface NodeContribution {
811
+ source: 'component' | 'node_semantic' | 'setup_override';
812
+ element_id: string | null;
813
+ version_id: string | null;
814
+ role: string | null;
407
815
  rank: number;
408
- text: string;
409
816
  locale: string | null;
410
- /** Glied der Kontextkette, auf dem das Element liegt. `0` = Arbeitskontext. */
411
- chain_index: number;
412
- }
413
- /**
414
- * Das Ergebnis der Aufloesung — drei Ausgaenge, drei Sachverhalte.
415
- *
416
- * `rejected` ist fachlich (ein Fork, ueber den jemand entscheiden muss),
417
- * `error` technisch bzw. ein Datenfehler. Sie zusammenzulegen hiesse, einen
418
- * Speicherdefekt als Normalzustand anzuzeigen.
419
- */
420
- type ScenePolicyResult = {
421
- kind: 'ok';
422
- policies: readonly ResolvedScenePolicy[];
423
- } | {
424
- kind: 'rejected';
425
- message: string;
426
- element_id: string;
427
- heads: readonly string[];
428
- } | {
429
- kind: 'error';
430
- message: string;
431
- retryable: boolean;
432
- };
433
- /** Ein Lesevorgang der Momentaufnahme, so schmal wie moeglich beschrieben. */
434
- interface SnapshotRead<T> {
435
- kind: string;
436
- message?: string;
437
- value?: T;
438
- }
439
- /** Der Ausschnitt einer Momentaufnahme, den diese Aufloesung braucht. */
440
- interface PolicySnapshot {
441
- getElement(elementId: string): SnapshotRead<{
442
- element: {
443
- element_id: string;
444
- type: string;
445
- context_id?: string | null;
446
- };
447
- versions?: readonly {
448
- version_id: string;
449
- element_id: string;
450
- payload: unknown;
451
- }[];
452
- preferredHeads?: readonly {
453
- context_id: string | null;
454
- version_id?: string;
455
- }[];
456
- } | null>;
457
- /**
458
- * Die Elemente eines Kettenglieds — **optional im Typ, nicht im Betrieb.**
459
- *
460
- * Optional, weil der Shot-Pfad dieselbe Momentaufnahme benutzt und dort
461
- * keine Liste braucht. Fehlt sie im Szene-Direktlauf, ist das ein
462
- * unvollstaendiger Hostadapter und wird laut gemeldet — nicht als „keine
463
- * Policy vorhanden" ausgelegt (Grundsatzregel 4).
464
- */
465
- listElements?(filter: {
466
- contextId: string | null;
467
- type: string;
468
- }): SnapshotRead<readonly {
469
- element_id: string;
470
- type: string;
471
- }[]>;
472
- }
473
- /**
474
- * Die deterministische Ordnung automatisch gefundener Policies (Auftrag §6).
475
- *
476
- * Eine automatisch entdeckte Menge hat keine gespeicherte Array-Reihenfolge;
477
- * `rank` allein reicht deshalb nicht aus, sobald zwei Regeln denselben Rang
478
- * tragen. Keine Deduplizierung nach `name`: verschiedene Elemente sind
479
- * verschiedene Regeln.
480
- */
481
- declare function sortScenePolicies(policies: readonly ResolvedScenePolicy[]): readonly ResolvedScenePolicy[];
482
- /**
483
- * Der Vergleichswert zweier Aufloesungen — fuer die A/B-Stabilitaetspruefung.
484
- *
485
- * Verglichen wird Element **und** Version in der entstandenen Reihenfolge:
486
- * Genau dann ist der Policy-Satz derselbe, den der Nutzer gesehen hat. Der
487
- * Text gehoert nicht hinein — eine veroeffentlichte Version ist
488
- * unveraenderlich, und ein abweichender Text bei gleicher Kennung waere ein
489
- * Speicherdefekt, kein Wettlauf.
490
- */
491
- declare function scenePolicyFingerprint(policies: readonly ResolvedScenePolicy[]): string;
492
- /**
493
- * Die allgemeinen Policies, die fuer einen Szene-Direktlauf gelten.
494
- *
495
- * Ausgewertet wird die **vollstaendige** Kontextkette: Arbeitskontext, geerbte
496
- * Kontexte, global. Je sichtbarem `prompt_policy`-Element wird die wirksame
497
- * Version ausschliesslich mit der vorhandenen Preferred-Head-Logik bestimmt
498
- * (D-36) — hier wird nichts neu ausgelegt und nichts geraten.
499
- *
500
- * Kein Netzzugriff: Gelesen wird genau die uebergebene Momentaufnahme. Das ist
501
- * die Voraussetzung dafuer, dass die Auswahl in dieselbe Konsistenzgrenze
502
- * faellt wie das Einfrieren der Szene (Gegenpruefung P2).
503
- */
504
- declare function resolveGeneralScenePolicies(snapshot: PolicySnapshot, contextChain: readonly (string | null)[],
505
- /**
506
- * Das gewaehlte Zielmodell dieses Laufs, oder `null` fuer einen generischen.
507
- *
508
- * Nur seinetwegen kommen `target_model`-Policies ueberhaupt in Betracht;
509
- * ohne Zielmodell bleibt die Auswahl exakt die von Schritt 03.
510
- */
511
- targetModelElementId?: string | null): ScenePolicyResult;
512
-
513
- /** Ein Beitrag zur Beschreibung eines Knotens, mit Herkunft (D-50). */
514
- interface NodeContribution {
515
- source: 'component' | 'node_semantic' | 'setup_override';
516
- element_id: string | null;
517
- version_id: string | null;
518
- role: string | null;
519
- rank: number;
520
- locale: string | null;
521
- text: string;
817
+ text: string;
522
818
  }
523
819
  /** Ein Knoten der aufgelösten Szene. */
524
820
  interface ResolvedNode {
525
821
  node_id: string;
822
+ label?: string;
823
+ media_refs?: readonly {
824
+ asset_id: string;
825
+ role: string;
826
+ position?: number;
827
+ }[];
828
+ /** Die wirksame einfache Geometrie desselben Nodes (#569). */
829
+ proxy_3d?: {
830
+ primitive: string;
831
+ dimensions: readonly number[];
832
+ } | null;
833
+ anchors?: Readonly<Record<string, readonly number[]>>;
526
834
  type: string;
527
835
  /** Additiv nach `rank`, nie vorgemischt (D-50). */
528
836
  contributions: readonly NodeContribution[];
@@ -532,6 +840,19 @@ interface ResolvedNode {
532
840
  /** Vom Shot ausgeblendet (D-40). Der Knoten bleibt im Graphen (D-21). */
533
841
  hidden: boolean;
534
842
  }
843
+ /**
844
+ * Die aufgelöste Umgebung der Szene (#563).
845
+ *
846
+ * Dieselbe Form wie bei einem Knoten: `environment.component_refs` werden zu
847
+ * Beiträgen mit Herkunft aufgelöst, statt als rohe Versionskennungen an den
848
+ * Renderer zu gehen. Mit Kennungen allein kann das Modell nichts formulieren.
849
+ */
850
+ interface ResolvedEnvironment {
851
+ text: string | null;
852
+ /** Nur `source: 'component'`, additiv nach `rank` (D-50). */
853
+ contributions: readonly NodeContribution[];
854
+ properties: Record<string, unknown>;
855
+ }
535
856
  interface ResolvedPlacement {
536
857
  position: readonly number[];
537
858
  rotation_euler_deg?: readonly number[];
@@ -539,6 +860,8 @@ interface ResolvedPlacement {
539
860
  }
540
861
  interface ResolvedCamera {
541
862
  camera_id: string;
863
+ /** Historische Kameras ohne Format behalten die Abwesenheit des Feldes. */
864
+ aspect_ratio?: string;
542
865
  name: string | null;
543
866
  /** `null`, wenn das Preset nicht auflösbar war — kein erfundenes Objektiv. */
544
867
  preset: unknown;
@@ -563,6 +886,10 @@ interface ResolvedCamera {
563
886
  * es nichts zu formulieren (Goal §5.3).
564
887
  */
565
888
  interface RendererInput {
889
+ preview_instruction?: PromptConstructionTag;
890
+ camera_preview_context?: CameraPreviewContext;
891
+ /** Eingefrorener Texttag, nur bei einem Kamera-Referenzlauf (D-22). */
892
+ reference_sentence?: FrozenReferenceSentence;
566
893
  /** `null` bei einem Lauf ohne Shot (Szene-Direktpfad). */
567
894
  shot: {
568
895
  version_id: string;
@@ -597,7 +924,7 @@ interface RendererInput {
597
924
  version_id: string;
598
925
  nodes: readonly ResolvedNode[];
599
926
  relations: readonly unknown[];
600
- environment: unknown | null;
927
+ environment: ResolvedEnvironment | null;
601
928
  unit_system: unknown | null;
602
929
  };
603
930
  /** `null`, wenn der Lauf ohne konkrete Kamera entstand. */
@@ -631,6 +958,7 @@ interface RendererInput {
631
958
  text: string;
632
959
  locale: string | null;
633
960
  }[];
961
+ prompt_tags?: readonly PromptConstructionTag[];
634
962
  fragments: readonly {
635
963
  channel: string;
636
964
  rank: number;
@@ -706,6 +1034,9 @@ interface RendererInput {
706
1034
  * für Aufrufer bildet, die eine Fähigkeit ausdrücklich als Tor benutzen wollen.
707
1035
  */
708
1036
  type ResolveFailure = {
1037
+ class: 'prompt_tags_unresolvable';
1038
+ message: string;
1039
+ } | {
709
1040
  class: 'not_a_shot';
710
1041
  message: string;
711
1042
  type: string;
@@ -896,6 +1227,38 @@ declare function resolveScenePayload(input: ResolveScenePayloadInput): Promise<R
896
1227
  */
897
1228
  declare function capabilityGate(report: CapabilityReport, flag: 'can_render_prompt' | 'can_place'): ResolveFailure | null;
898
1229
 
1230
+ declare const CAMERA_ASPECT_RATIOS: readonly ["1:1", "4:3", "3:4", "16:9", "9:16"];
1231
+ /** Kein Default: Ein historischer Stand ohne Format ist keine 1:1-Kamera. */
1232
+ declare function cameraAspectRatioValue(aspectRatio: string): number;
1233
+ /**
1234
+ * Additiver Leservertrag, strenger Schreibabschluss: Neue/geänderte Kameras
1235
+ * brauchen ein Format. Unveränderte historische Kameras bleiben erhalten.
1236
+ * Eltern sind explizite eigene Basis-/Parent-Payloads, keine geratene Version.
1237
+ * Entwürfe dürfen weiterhin unvollständig sein; spätestens Publish prüft dies.
1238
+ */
1239
+ declare function checkCameraAspectRatioChanges(type: string, payload: unknown, previousPayloads?: readonly unknown[]): SchemaError[];
1240
+ /** Optik ausschließlich aus dem aufgelösten Preset, Format aus der Kamera. */
1241
+ declare function cameraPerspective(camera: ResolvedCamera): {
1242
+ aspect_ratio: string;
1243
+ aspect: number;
1244
+ focal_length_mm: number;
1245
+ sensor_width_mm: number;
1246
+ vertical_fov_deg: number;
1247
+ };
1248
+ /** Das eingefrorene Kameraformat ist autoritativ, auch nach einem Reload. */
1249
+ declare function frozenCameraAspectRatio(input: unknown): string | undefined;
1250
+
1251
+ interface CameraPreview extends TextGenerationImage {
1252
+ solid_color_pixels?: Readonly<Record<string, number>>;
1253
+ width: number;
1254
+ height: number;
1255
+ camera_id: string;
1256
+ sha256: string;
1257
+ }
1258
+ type CameraPreviewDescriptor = Omit<CameraPreview, 'data' | 'solid_color_pixels'>;
1259
+ type CameraPreviewRenderer = (input: RendererInput) => Promise<CameraPreview>;
1260
+ declare function supportsCompositionReference(model: unknown): boolean;
1261
+
899
1262
  interface VisibilityNode {
900
1263
  node_id: string;
901
1264
  state: string;
@@ -991,7 +1354,13 @@ declare function checkRunResponse(value: unknown, input: RendererInput): {
991
1354
  * kein Lauf, sondern ein Betriebsfehler und darf nicht als „das Modell hat
992
1355
  * abgelehnt" gespeichert werden.
993
1356
  */
994
- declare function runPromptDerivation(input: RendererInput, port: TextGenerationPort): Promise<PromptRunOutcome & {
1357
+ /** Shared by the pre-generation inspector and the actual provider call. */
1358
+ declare function preparePromptDerivation(input: RendererInput, preview?: CameraPreview): {
1359
+ input: RendererInput;
1360
+ system_prompt: string;
1361
+ prompt: string;
1362
+ };
1363
+ declare function runPromptDerivation(input: RendererInput, port: TextGenerationPort, preview?: CameraPreview): Promise<PromptRunOutcome & {
995
1364
  system_prompt: string;
996
1365
  }>;
997
1366
 
@@ -1053,6 +1422,7 @@ type PromptRunSource = {
1053
1422
  };
1054
1423
  };
1055
1424
  interface PromptRunRecord {
1425
+ camera_preview?: CameraPreviewDescriptor;
1056
1426
  run_id: string;
1057
1427
  /**
1058
1428
  * Herkunft: die veröffentlichte Shot-Version, aus der der Lauf entstand.
@@ -1200,6 +1570,13 @@ declare function groupKeyOf(run: PromptRunPageRecord): string;
1200
1570
  * zweite Wahrheit.
1201
1571
  */
1202
1572
  declare function siblingsOf(run: PromptRunRecord, alle: readonly PromptRunRecord[]): readonly PromptRunRecord[];
1573
+ /** Index ausschließlich veröffentlichter, unveränderlicher Szenenversionen. */
1574
+ declare function sceneVersionElementsOf(state: ElementStoreState): ReadonlyMap<string, string>;
1575
+ interface SceneRunState {
1576
+ key: string;
1577
+ /** Chronologischer Stand im gesamten Szenenbestand, unabhängig vom Seitenschnitt. */
1578
+ number: number | null;
1579
+ }
1203
1580
  /**
1204
1581
  * Das Element, das einen Lauf **benennt** — oder `null`.
1205
1582
  *
@@ -1280,10 +1657,9 @@ declare function selectPromptRuns(alle: readonly PromptRunRecord[], filter?: Pro
1280
1657
  /**
1281
1658
  * Woher die Laeufe einer Seite kommen.
1282
1659
  *
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.
1660
+ * `scene_history` liest den eingefrorenen Szeneninput über alle Herkünfte.
1661
+ * `scene`, `draft_chain` und `published` behalten ihre bisherige
1662
+ * Herkunftsauswahl über `groupKeyOf`; `all` liest ohne Anker.
1287
1663
  */
1288
1664
  type PromptRunPageSource = {
1289
1665
  kind: 'all';
@@ -1296,6 +1672,11 @@ type PromptRunPageSource = {
1296
1672
  } | {
1297
1673
  kind: 'scene';
1298
1674
  sceneElementId: string;
1675
+ }
1676
+ /** Fachliche Szenenhistorie über alle technischen Herkünfte. */
1677
+ | {
1678
+ kind: 'scene_history';
1679
+ sceneElementId: string;
1299
1680
  };
1300
1681
  /** Der Herkunftsfilter der gemeinsamen Sicht — dieselben Namen wie `PromptRunGroup`. */
1301
1682
  type PromptRunOriginFilter = PromptRunGroup['kind'];
@@ -1304,6 +1685,8 @@ interface PromptRunPageFilter extends PromptRunFilter {
1304
1685
  origin?: PromptRunOriginFilter;
1305
1686
  }
1306
1687
  interface PromptRunPageInput {
1688
+ /** Host-Index für alte eingefrorene Inputs ohne element_id; keine aktuellen Heads. */
1689
+ sceneVersionElements?: ReadonlyMap<string, string>;
1307
1690
  source?: PromptRunPageSource;
1308
1691
  filter?: PromptRunPageFilter;
1309
1692
  /** Ohne Angabe wird nicht geschnitten — dann ist die Seite der ganze Bestand. */
@@ -1366,6 +1749,8 @@ interface PromptRunPage extends Omit<PromptRunListing, 'runs'>, Page<PromptRunPa
1366
1749
  runs: readonly PromptRunPageRecord[];
1367
1750
  /** Rundennummer je `run_id`, nur fuer die Laeufe dieser Seite. */
1368
1751
  rounds: Readonly<Record<string, number>>;
1752
+ sceneStates?: Readonly<Record<string, SceneRunState>>;
1753
+ sceneImageCount?: number;
1369
1754
  /** Laeufe, die der Herkunftsfilter ausgeblendet hat. */
1370
1755
  hiddenByOrigin: number;
1371
1756
  /**
@@ -1433,409 +1818,166 @@ declare function promptRunPageForTransport(seite: PromptRunPage): Omit<PromptRun
1433
1818
  /**
1434
1819
  * Die Gegenrichtung: `items` aus `runs` zuruecklegen.
1435
1820
  *
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;
1441
-
1442
- /**
1443
- * Ein Vorschlag, so wie er im Ereignis steht.
1444
- *
1445
- * `adopted_as` hält fest, ob aus diesem Vorschlag ein Draft geworden ist — es
1446
- * ist die einzige Verbindung vom Lauf zum Elementbestand. Sie zeigt auf das
1447
- * Element, nicht auf eine Version: Welche Version daraus später wird,
1448
- * entscheidet die Veröffentlichung, nicht der Lauf.
1449
- */
1450
- interface RecordedProposal {
1451
- type: DerivableType;
1452
- payload: Record<string, unknown>;
1453
- /**
1454
- * `complete`: erfüllt das reguläre Element-Schema.
1455
- * `partial`: erfüllt es bis auf die in `gaps` benannten Pflichtfelder.
1456
- *
1457
- * Steht im Lauf, nicht nur im Arbeitsspeicher: Wer den Vorschlag später
1458
- * übernimmt, muss wissen, dass er einen unvollständigen Draft bekommt — und
1459
- * welche Stellen er zu ergänzen hat, bevor er veröffentlichen kann.
1460
- * Ältere Läufe tragen das Feld nicht; sie sind sämtlich `complete`, weil es
1461
- * vor dem Proposal-Vertrag nichts anderes geben konnte.
1462
- */
1463
- status?: 'complete' | 'partial';
1464
- gaps?: readonly {
1465
- pointer: string;
1466
- reason: string;
1467
- }[];
1468
- /**
1469
- * Der Namensvorschlag des Modells (D-83), sofern es einen brauchbaren gab.
1470
- *
1471
- * Fehlt bei Läufen vor D-83 und bei jedem Lauf, dessen Titel verworfen wurde
1472
- * — ein Titel ist Beiwerk und lässt den Lauf nie scheitern (D-84).
1473
- */
1474
- title?: string;
1475
- }
1476
- /**
1477
- * Die eingefrorene Eingabe — **ohne Bilddaten** (D-73).
1478
- *
1479
- * Base64 gehört nicht in dieses Log: Es ist der autoritative Speicher (D-62)
1480
- * und wird in Flow-FA Pure vollständig geladen. Ein Lauf bleibt über Digest
1481
- * und Herkunft identifizierbar; wiederherstellbar ist ein reiner Upload
1482
- * dadurch nicht, und das ist bewusst in Kauf genommen.
1483
- */
1484
- interface RecordedDerivationInput {
1485
- mode: DerivationInputMode;
1486
- prompt_text: string | null;
1487
- images: readonly ImageProvenance[];
1488
- }
1489
- /** Ein protokollierter Rekonstruktionslauf. */
1490
- interface SceneDerivationRecord {
1491
- run_id: string;
1492
- /** Herkunft der Regel: die veröffentlichte Policy-Version (Konzept §8). */
1493
- policy_version_id: string;
1494
- policy_element_id: string;
1495
- /** In welchem Kontext der Lauf entstand — er bestimmt, wo Drafts landen. */
1496
- context_id: string | null;
1497
- provider: string;
1498
- model_id: string;
1499
- system_prompt: string;
1500
- /** Die eingefrorene Eingabe (D-22/D-73) — wörtlich, nicht referenziert. */
1501
- input: RecordedDerivationInput;
1502
- /**
1503
- * Der Ausgang. Ein `failed` ist ein **Erfolg des Systems**: der Nachweis,
1504
- * dass diese Kombination beim Provider anstößt (D-23 §6).
1505
- */
1506
- status: 'succeeded' | 'failed';
1507
- failure: DerivationFailure | null;
1508
- /** Bei `succeeded` gesetzt, bei `failed` leer. */
1509
- proposals: readonly RecordedProposal[];
1510
- feedback: string | null;
1511
- assumptions: readonly string[];
1512
- not_derivable: readonly NotDerivable[];
1513
- conflicts: readonly DerivationConflict[];
1514
- /** Die rohe Modellantwort, soweit es eine gab. */
1515
- raw_output: string | null;
1516
- /**
1517
- * Woraus dieser Lauf folgt (D-88). Fehlt bei einem ersten Lauf.
1518
- *
1519
- * Ein Folgelauf ist ein eigener Lauf, kein zweiter Versuch im selben: Ein
1520
- * Lauf ist unveränderlich (D-71) und längst geschrieben, wenn der Mensch
1521
- * gefragt wird, ob eine Korrektur folgen soll.
1522
- */
1523
- follows?: DerivationFollowUp;
1524
- /** Antwort des Modells auf die Beanstandung (D-90). */
1525
- reply?: string;
1526
- created_at: string;
1527
- }
1528
- /** Nutzlast des Ereignisses. Identisch mit dem Datensatz — ein Lauf ändert sich nie. */
1529
- type SceneDerivationRecordedPayload = SceneDerivationRecord;
1530
- /**
1531
- * Liest alle Rekonstruktionsläufe aus dem Ereignislog.
1532
- *
1533
- * Bewusst ohne Reducer-Zustandsmaschine: Läufe sind unveränderlich, es gibt
1534
- * kein späteres Ereignis, das einen früheren Lauf ändert. Ein zweiter Eintrag
1535
- * mit derselben `run_id` wäre ein Datenfehler und wird **nicht** stillschweigend
1536
- * überschrieben — der erste gilt, und das ist ehrlich: er war zuerst da.
1537
- */
1538
- declare function collectSceneDerivations(events: readonly ElementEvent[]): readonly SceneDerivationRecord[];
1539
- /** Ein einzelner Lauf aus dem Log, oder `null`. */
1540
- declare function findSceneDerivation(events: readonly ElementEvent[], runId: string): SceneDerivationRecord | null;
1541
-
1542
- /** Was bei einer einzelnen Prüfung herauskam. */
1543
- interface ProviderCheckResult {
1544
- kind: string;
1545
- /**
1546
- * `skipped` heißt: **vor** dem Modellaufruf abgebrochen, also kostenlos.
1547
- * `error` heißt: technischer Ausfall — möglicherweise trotzdem bezahlt.
1548
- */
1549
- status: 'succeeded' | 'failed' | 'skipped' | 'error';
1550
- message?: string;
1551
- provider?: string;
1552
- model_id?: string;
1553
- /** Der reguläre Lauf, der dabei entstanden ist. */
1554
- run_id?: string | null;
1555
- persisted?: boolean;
1556
- failure?: unknown;
1557
- excerpt?: string | null;
1558
- proposal_types?: readonly string[];
1559
- not_derivable_count?: number;
1560
- conflict_count?: number;
1561
- duration_ms?: number;
1562
- }
1563
- interface ProviderCheckRecord {
1564
- check_id: string;
1565
- triggered_by: string;
1566
- environment: string;
1567
- /**
1568
- * Die Zahl der tatsächlich abgesetzten Modellaufrufe.
1569
- *
1570
- * Bewusst getrennt von `results.length`: Eine übersprungene Prüfung hat
1571
- * nichts gekostet, und wer später Kosten nachvollziehen will, darf beides
1572
- * nicht verwechseln.
1573
- */
1574
- model_calls: number;
1575
- results: readonly ProviderCheckResult[];
1576
- created_at: string;
1577
- }
1578
- type ProviderCheckRecordedPayload = ProviderCheckRecord;
1579
- /**
1580
- * Liest alle Provider-Checks aus dem Ereignislog.
1581
- *
1582
- * Wie bei den Läufen ohne Reducer: ein Check ist unveränderlich, und ein
1583
- * zweiter Eintrag mit derselben `check_id` wäre ein Datenfehler — der erste
1584
- * gilt.
1585
- */
1586
- declare function collectProviderChecks(events: readonly ElementEvent[]): readonly ProviderCheckRecord[];
1587
- /** Ein einzelner Check aus dem Log, oder `null`. */
1588
- declare function findProviderCheck(events: readonly ElementEvent[], checkId: string): ProviderCheckRecord | null;
1589
- /**
1590
- * Die Zahl der Modellaufrufe über eine Menge von Checks.
1591
- *
1592
- * Eine Stelle, an der summiert wird — sonst zählt die UI anders als der
1593
- * Bericht, und niemand weiß, welche Zahl stimmt.
1594
- */
1595
- declare function totalModelCalls(checks: readonly ProviderCheckRecord[]): number;
1596
-
1597
- /** Ein eingefrorener Kettenknoten — die Provenienz des Laufs (D-98). */
1598
- interface FrozenChainNode {
1599
- type: DerivableType;
1600
- element_id: string;
1601
- draft_id: string;
1602
- revision: number;
1603
- }
1604
- interface FreezeSuccess {
1605
- kind: 'ok';
1606
- chainId: string;
1607
- nodes: readonly FrozenChainNode[];
1608
- input: RendererInput;
1609
- /**
1610
- * Der Rekonstruktionslauf, aus dem die Kette entstand (D-123, A2).
1611
- *
1612
- * Alle Knoten einer Kette teilen dieselben Kettenmetadaten (D-96) — die
1613
- * Übernahme entsteht aus **einer** Operation aus **einem** Ursprung —, daher
1614
- * genügt der Wert eines beliebigen erfassten Knotens, hier der des Shots.
1615
- */
1616
- sourceRunId: string;
1617
- /** Gesetzt, wenn der Inhalt der Kette aus einer Recovery-Arbeitsfassung kam. */
1618
- sourceRecoveryId?: string;
1619
- }
1620
- /**
1621
- * Warum eine Kette nicht eingefroren werden konnte.
1622
- *
1623
- * `conflict` ist bewusst von `rejected` getrennt: Das eine ist ein Wettlauf und
1624
- * beim nächsten Versuch weg, das andere ein Mangel der Kette, den jemand
1625
- * beheben muss. Sie gleich zu behandeln hieße, dem Nutzer „nochmal versuchen"
1626
- * für einen unvollständigen Shot anzubieten.
1627
- *
1628
- * `error` kam mit Stufe 6.7.1 (D-125) dazu: **technisch**, nicht fachlich —
1629
- * Netz, Drosselung, Speicher nicht erreichbar. Vor 6.7.1 landete ein solcher
1630
- * Lesefehler beim Einfrieren als `rejected`, und ein HF-429 sah dadurch wie
1631
- * ein Mangel der Kette aus (der reale 429-Durchstich vom 2026-08-13). HF671-10
1632
- * verlangt, dass er stattdessen hier ankommt.
1633
- */
1634
- type FreezeFailure = {
1635
- kind: 'conflict';
1636
- message: string;
1637
- /** Der Knoten, der sich zwischen den beiden Lesedurchgängen änderte. */
1638
- node: {
1639
- type: DerivableType;
1640
- element_id: string;
1641
- draft_id: string;
1642
- };
1643
- expectedRevision: number;
1644
- actualRevision: number;
1645
- } | {
1646
- kind: 'rejected';
1647
- message: string;
1648
- failure?: ResolveFailure;
1649
- } | {
1650
- kind: 'error';
1651
- message: string;
1652
- retryable: boolean;
1653
- };
1654
- type FreezeResult = FreezeSuccess | FreezeFailure;
1655
- /** Ein einzelnes Element aus einer Momentaufnahme — kein Netzzugriff mehr. */
1656
- interface ChainSnapshot {
1657
- getElement(elementId: string): {
1658
- kind: string;
1659
- message?: string;
1660
- value?: {
1661
- element: {
1662
- element_id: string;
1663
- type: string;
1664
- context_id?: string | null;
1665
- };
1666
- draft: {
1667
- draft_id: string;
1668
- revision: number;
1669
- payload: unknown;
1670
- chain?: DraftChainMeta;
1671
- } | null;
1672
- draftFork?: unknown | null;
1673
- /**
1674
- * Veröffentlichte Versionen — für den Szene-Direktpfad (D-135).
1675
- *
1676
- * Eine Draft-Kette friert ausschließlich Entwürfe ein; eine Szene kann
1677
- * dagegen längst veröffentlicht sein und gar keinen Entwurf mehr haben.
1678
- * Beide Hosts liefern die Liste bereits mit (`ElementSnapshot`), sie war
1679
- * hier nur nicht deklariert.
1680
- */
1681
- versions?: readonly {
1682
- version_id: string;
1683
- element_id: string;
1684
- payload: unknown;
1685
- parents?: unknown;
1686
- }[];
1687
- preferredHeads?: readonly {
1688
- context_id: string | null;
1689
- version_id?: string;
1690
- }[];
1691
- } | null;
1692
- };
1693
- /**
1694
- * Die Elemente eines Kettenglieds — fuer die allgemeinen Kontext-Policies
1695
- * des Szene-Direktlaufs (Schritt 03 §3).
1696
- *
1697
- * Optional im Typ, weil der Shot-Pfad dieselbe Momentaufnahme benutzt und
1698
- * dort keine Liste braucht. Im Szene-Direktlauf ist sie **Pflicht**: Fehlt
1699
- * sie, meldet die Policy-Aufloesung einen Fehler, statt „keine Policy"
1700
- * zu behaupten (Grundsatzregel 4).
1701
- *
1702
- * Aus **derselben** Momentaufnahme wie `getElement` — genau das haelt die
1703
- * Policy-Auswahl in der A/B-Konsistenzgrenze und verhindert einen dritten
1704
- * Live-Leseweg (Gegenpruefung P2).
1705
- */
1706
- listElements?(filter: {
1707
- contextId: string | null;
1708
- type: string;
1709
- }): {
1710
- kind: string;
1711
- message?: string;
1712
- value?: readonly {
1713
- element_id: string;
1714
- type: string;
1715
- }[];
1716
- };
1717
- }
1718
- /**
1719
- * Was das Einfrieren vom Elementspeicher braucht — bewusst schmal.
1720
- *
1721
- * Seit Stufe 6.7.1 (D-125) keine sechs unabhängigen `getElement()`-Aufrufe
1722
- * mehr, sondern genau zwei Momentaufnahmen: `readSnapshot({ fresh: false })`
1723
- * für Durchgang A, `readSnapshot({ fresh: true })` für Durchgang B. „Frisch"
1724
- * heißt dabei D-125 — inkrementell gegen den Kanal synchronisiert, nicht ein
1725
- * zweites Mal aus demselben TTL-Cache bedient (sonst könnte B den Konflikt aus
1726
- * HF671-8/9 nicht mehr sehen).
1727
- */
1728
- interface ChainQueries {
1729
- readSnapshot(options: {
1730
- fresh: boolean;
1731
- }): Promise<ChainSnapshot>;
1732
- }
1733
- interface FreezeDraftChainInput {
1734
- /** Das Shot-**Element** der Kette. Eine Version gibt es hier gerade nicht. */
1735
- shotElementId: string;
1736
- store: ChainQueries;
1737
- resolver: ReferenceResolver;
1738
- contextChain: readonly (string | null)[];
1739
- userInstruction?: string | null;
1740
- }
1741
- /**
1742
- * Friert die vom Shot erreichbare Draft-Kette ein und baut die Renderer-Eingabe.
1743
- *
1744
- * Bei **jedem** Fehlausgang gilt: null Provideraufrufe. Diese Funktion ruft
1745
- * ohnehin kein Modell — sie liefert nur die Eingabe, und der Aufrufer entscheidet
1746
- * danach, ob er sie benutzt.
1821
+ * Der `Page<T>`-Vertrag gilt im Client unveraendert — er wurde nur nicht
1822
+ * uebertragen. Ohne diesen Schritt fehlte `items` still, und jeder kuenftige
1823
+ * Aufrufer von `Page<T>` saehe eine leere Seite statt eines Fehlers.
1747
1824
  */
1748
- declare function freezeDraftChain(input: FreezeDraftChainInput): Promise<FreezeResult>;
1825
+ declare function promptRunPageFromTransport(roh: Omit<PromptRunPage, 'items'>): PromptRunPage;
1826
+
1749
1827
  /**
1750
- * Was eingefroren wurde — **eines** von beidem, nie beides und nie erfunden.
1828
+ * Ein Vorschlag, so wie er im Ereignis steht.
1751
1829
  *
1752
- * Ein Entwurf hat `draft_id` und `revision` und keine `version_id`; eine
1753
- * veröffentlichte Version genau umgekehrt. Ein Feld, das ehrlich `null` ist,
1754
- * ist besser als eine Kennung, die wie eine echte aussieht (D-75/D-98).
1830
+ * `adopted_as` hält fest, ob aus diesem Vorschlag ein Draft geworden ist — es
1831
+ * ist die einzige Verbindung vom Lauf zum Elementbestand. Sie zeigt auf das
1832
+ * Element, nicht auf eine Version: Welche Version daraus später wird,
1833
+ * entscheidet die Veröffentlichung, nicht der Lauf.
1755
1834
  */
1756
- interface FrozenSceneState {
1757
- element_id: string;
1758
- draft_id: string | null;
1759
- revision: number | null;
1760
- version_id: string | null;
1761
- }
1762
- interface FreezeSceneSuccess {
1763
- kind: 'ok';
1764
- scene: FrozenSceneState;
1765
- input: RendererInput;
1835
+ interface RecordedProposal {
1836
+ type: DerivableType;
1837
+ payload: Record<string, unknown>;
1766
1838
  /**
1767
- * Die automatisch aufgeloesten allgemeinen Kontext-Policies (Schritt 03).
1839
+ * `complete`: erfüllt das reguläre Element-Schema.
1840
+ * `partial`: erfüllt es bis auf die in `gaps` benannten Pflichtfelder.
1768
1841
  *
1769
- * Redundant zu `input.policies` und trotzdem hier: Der Aufrufer sieht so den
1770
- * Satz **mit** `chain_index`, ohne die Ordnung nachbauen zu muessen. Der
1771
- * eingefrorene Lauf traegt weiterhin ausschliesslich `input`.
1842
+ * Steht im Lauf, nicht nur im Arbeitsspeicher: Wer den Vorschlag später
1843
+ * übernimmt, muss wissen, dass er einen unvollständigen Draft bekommt — und
1844
+ * welche Stellen er zu ergänzen hat, bevor er veröffentlichen kann.
1845
+ * Ältere Läufe tragen das Feld nicht; sie sind sämtlich `complete`, weil es
1846
+ * vor dem Proposal-Vertrag nichts anderes geben konnte.
1772
1847
  */
1773
- policies: readonly ResolvedScenePolicy[];
1848
+ status?: 'complete' | 'partial';
1849
+ gaps?: readonly {
1850
+ pointer: string;
1851
+ reason: string;
1852
+ }[];
1774
1853
  /**
1775
- * Das eingefrorene Zielmodell, oder `null` fuer einen generischen Lauf.
1854
+ * Der Namensvorschlag des Modells (D-83), sofern es einen brauchbaren gab.
1776
1855
  *
1777
- * Wie `policies` redundant zu `input` und trotzdem hier: Der Aufrufer sieht
1778
- * die Provenienz, ohne sie aus `renderer_input` zurueckrechnen zu muessen.
1856
+ * Fehlt bei Läufen vor D-83 und bei jedem Lauf, dessen Titel verworfen wurde
1857
+ * — ein Titel ist Beiwerk und lässt den Lauf nie scheitern (D-84).
1779
1858
  */
1780
- targetModel: FrozenSceneTargetModel | null;
1859
+ title?: string;
1781
1860
  }
1782
- type FreezeSceneResult = FreezeSceneSuccess | FreezeFailure;
1783
- interface FreezeSceneWorkingStateInput {
1784
- /** Das Szenen-**Element**. Ob Entwurf oder Version, entscheidet der Bestand. */
1785
- sceneElementId: string;
1786
- store: ChainQueries;
1787
- resolver: ReferenceResolver;
1788
- contextChain: readonly (string | null)[];
1789
- userInstruction?: string | null;
1861
+ /**
1862
+ * Die eingefrorene Eingabe — **ohne Bilddaten** (D-73).
1863
+ *
1864
+ * Base64 gehört nicht in dieses Log: Es ist der autoritative Speicher (D-62)
1865
+ * und wird in Flow-FA Pure vollständig geladen. Ein Lauf bleibt über Digest
1866
+ * und Herkunft identifizierbar; wiederherstellbar ist ein reiner Upload
1867
+ * dadurch nicht, und das ist bewusst in Kauf genommen.
1868
+ */
1869
+ interface RecordedDerivationInput {
1870
+ mode: DerivationInputMode;
1871
+ prompt_text: string | null;
1872
+ images: readonly ImageProvenance[];
1873
+ }
1874
+ /** Ein protokollierter Rekonstruktionslauf. */
1875
+ interface SceneDerivationRecord {
1876
+ run_id: string;
1877
+ /** Herkunft der Regel: die veröffentlichte Policy-Version (Konzept §8). */
1878
+ policy_version_id: string;
1879
+ policy_element_id: string;
1880
+ /** In welchem Kontext der Lauf entstand — er bestimmt, wo Drafts landen. */
1881
+ context_id: string | null;
1882
+ provider: string;
1883
+ model_id: string;
1884
+ system_prompt: string;
1885
+ /** Die eingefrorene Eingabe (D-22/D-73) — wörtlich, nicht referenziert. */
1886
+ input: RecordedDerivationInput;
1790
1887
  /**
1791
- * Das gewaehlte Zielmodell (Kette `szenen-direktlauf-target-model-policy`).
1888
+ * Der Ausgang. Ein `failed` ist ein **Erfolg des Systems**: der Nachweis,
1889
+ * dass diese Kombination beim Provider anstößt (D-23 §6).
1890
+ */
1891
+ status: 'succeeded' | 'failed';
1892
+ failure: DerivationFailure | null;
1893
+ /** Bei `succeeded` gesetzt, bei `failed` leer. */
1894
+ proposals: readonly RecordedProposal[];
1895
+ feedback: string | null;
1896
+ assumptions: readonly string[];
1897
+ not_derivable: readonly NotDerivable[];
1898
+ conflicts: readonly DerivationConflict[];
1899
+ /** Die rohe Modellantwort, soweit es eine gab. */
1900
+ raw_output: string | null;
1901
+ /**
1902
+ * Woraus dieser Lauf folgt (D-88). Fehlt bei einem ersten Lauf.
1792
1903
  *
1793
- * Optional: Ohne Angabe bleibt der Ablauf exakt der generische von D-135 —
1794
- * kein Zielmodell im `RendererInput`, keine `target_model`-Policy.
1904
+ * Ein Folgelauf ist ein eigener Lauf, kein zweiter Versuch im selben: Ein
1905
+ * Lauf ist unveränderlich (D-71) und längst geschrieben, wenn der Mensch
1906
+ * gefragt wird, ob eine Korrektur folgen soll.
1795
1907
  */
1796
- targetModelElementId?: string | null;
1908
+ follows?: DerivationFollowUp;
1909
+ /** Antwort des Modells auf die Beanstandung (D-90). */
1910
+ reply?: string;
1911
+ created_at: string;
1797
1912
  }
1913
+ /** Nutzlast des Ereignisses. Identisch mit dem Datensatz — ein Lauf ändert sich nie. */
1914
+ type SceneDerivationRecordedPayload = SceneDerivationRecord;
1798
1915
  /**
1799
- * Das gewaehlte Zielmodell eines Szene-Direktlaufs — Kette
1800
- * `szenen-direktlauf-target-model-policy`, Schritt 01.
1801
- *
1802
- * **Warum ueber die `element_id` und nicht ueber den Key.** Der Shot-Pfad sucht
1803
- * ein Zielmodell ueber `prompt_render_settings.target_model_id`, also ueber
1804
- * einen freien Key entlang der Kette — mit allen Ausgaengen, die dazugehoeren
1805
- * (`not_found`, `ambiguous`, `retired`, `fork`). Der Szene-Direktlauf bekommt
1806
- * das Modell dagegen von einem Menschen ausgewaehlt, und der waehlt es aus
1807
- * einer Liste, die schon aufgeloest ist. Die Kennung ist damit eindeutig, und
1808
- * sie ist dieselbe, die eine `target_model`-Policy in
1809
- * `applicable_target_models` nennt. Eine zweite Suche ueber einen geratenen
1810
- * Namen waere fehleranfaelliger als die Kennung, die vorliegt.
1916
+ * Liest alle Rekonstruktionsläufe aus dem Ereignislog.
1811
1917
  *
1812
- * Die **Version** waehlt trotzdem niemand von Hand: Sie kommt aus derselben
1813
- * D-36-Preferred-Head-Aufloesung wie der Arbeitsstand der Szene daneben.
1918
+ * Bewusst ohne Reducer-Zustandsmaschine: Läufe sind unveränderlich, es gibt
1919
+ * kein späteres Ereignis, das einen früheren Lauf ändert. Ein zweiter Eintrag
1920
+ * mit derselben `run_id` wäre ein Datenfehler und wird **nicht** stillschweigend
1921
+ * überschrieben — der erste gilt, und das ist ehrlich: er war zuerst da.
1814
1922
  */
1815
- interface FrozenSceneTargetModel {
1816
- element_id: string;
1817
- version_id: string;
1818
- /** Glied der Kontextkette, auf dem das Element liegt. `0` = Arbeitskontext. */
1819
- chain_index: number;
1820
- payload: unknown;
1821
- head: PreferredHeadResolution;
1923
+ declare function collectSceneDerivations(events: readonly ElementEvent[]): readonly SceneDerivationRecord[];
1924
+ /** Ein einzelner Lauf aus dem Log, oder `null`. */
1925
+ declare function findSceneDerivation(events: readonly ElementEvent[], runId: string): SceneDerivationRecord | null;
1926
+
1927
+ /** Was bei einer einzelnen Prüfung herauskam. */
1928
+ interface ProviderCheckResult {
1929
+ kind: string;
1930
+ /**
1931
+ * `skipped` heißt: **vor** dem Modellaufruf abgebrochen, also kostenlos.
1932
+ * `error` heißt: technischer Ausfall — möglicherweise trotzdem bezahlt.
1933
+ */
1934
+ status: 'succeeded' | 'failed' | 'skipped' | 'error';
1935
+ message?: string;
1936
+ provider?: string;
1937
+ model_id?: string;
1938
+ /** Der reguläre Lauf, der dabei entstanden ist. */
1939
+ run_id?: string | null;
1940
+ persisted?: boolean;
1941
+ failure?: unknown;
1942
+ excerpt?: string | null;
1943
+ proposal_types?: readonly string[];
1944
+ not_derivable_count?: number;
1945
+ conflict_count?: number;
1946
+ duration_ms?: number;
1947
+ }
1948
+ interface ProviderCheckRecord {
1949
+ check_id: string;
1950
+ triggered_by: string;
1951
+ environment: string;
1952
+ /**
1953
+ * Die Zahl der tatsächlich abgesetzten Modellaufrufe.
1954
+ *
1955
+ * Bewusst getrennt von `results.length`: Eine übersprungene Prüfung hat
1956
+ * nichts gekostet, und wer später Kosten nachvollziehen will, darf beides
1957
+ * nicht verwechseln.
1958
+ */
1959
+ model_calls: number;
1960
+ results: readonly ProviderCheckResult[];
1961
+ created_at: string;
1822
1962
  }
1963
+ type ProviderCheckRecordedPayload = ProviderCheckRecord;
1823
1964
  /**
1824
- * Friert den Arbeitsstand **einer Szene** ein und baut die Renderer-Eingabe
1825
- * (D-135).
1965
+ * Liest alle Provider-Checks aus dem Ereignislog.
1826
1966
  *
1827
- * Dasselbe optimistische Zwei-Durchgang-Verfahren wie bei der Draft-Kette
1828
- * (D-97): lesen, kopieren, frisch nachlesen, Revision vergleichen, und den
1829
- * Snapshot aus den **kopierten** Inhalten bauen. Ein Konflikt bleibt ein
1830
- * echter Blocker — **vor** dem kostenpflichtigen Provideraufruf. Dieser Goal
1831
- * lockert daran nichts (Goal §8.1).
1967
+ * Wie bei den Läufen ohne Reducer: ein Check ist unveränderlich, und ein
1968
+ * zweiter Eintrag mit derselben `check_id` wäre ein Datenfehler — der erste
1969
+ * gilt.
1970
+ */
1971
+ declare function collectProviderChecks(events: readonly ElementEvent[]): readonly ProviderCheckRecord[];
1972
+ /** Ein einzelner Check aus dem Log, oder `null`. */
1973
+ declare function findProviderCheck(events: readonly ElementEvent[], checkId: string): ProviderCheckRecord | null;
1974
+ /**
1975
+ * Die Zahl der Modellaufrufe über eine Menge von Checks.
1832
1976
  *
1833
- * Eine veröffentlichte Version ist unveränderlich; für sie kann Durchgang B
1834
- * keinen Revisionskonflikt finden. Er läuft trotzdem: Verschwindet die Version
1835
- * zwischen den Durchgängen aus der wirksamen Sicht — stillgelegt, ein anderer
1836
- * Preferred Head —, ist der Stand nicht mehr der, den der Nutzer gesehen hat.
1977
+ * Eine Stelle, an der summiert wird — sonst zählt die UI anders als der
1978
+ * Bericht, und niemand weiß, welche Zahl stimmt.
1837
1979
  */
1838
- declare function freezeSceneWorkingState(input: FreezeSceneWorkingStateInput): Promise<FreezeSceneResult>;
1980
+ declare function totalModelCalls(checks: readonly ProviderCheckRecord[]): number;
1839
1981
 
1840
1982
  /**
1841
1983
  * Wie brauchbar das Material einer Arbeitsfassung ist.
@@ -2119,6 +2261,7 @@ interface ImageGenerationStartedPayload {
2119
2261
  request: {
2120
2262
  image_count: number;
2121
2263
  aspect_ratio?: string;
2264
+ reference_asset_ids?: readonly string[];
2122
2265
  seeds?: readonly number[];
2123
2266
  callable_model_id: string;
2124
2267
  /**
@@ -2235,6 +2378,9 @@ interface IdFactory {
2235
2378
  newId(): string;
2236
2379
  }
2237
2380
  interface CreateHfElementStoreOptions {
2381
+ readPromptConstructionTags?: () => Promise<readonly PromptConstructionTag[]>;
2382
+ /** Host-injected read of the existing Library vocabulary, no second tag store. */
2383
+ readReferenceSentenceTags?: () => Promise<readonly ReferenceSentenceTag[]>;
2238
2384
  channel: ElementEventChannel;
2239
2385
  ids?: IdFactory;
2240
2386
  /**
@@ -2432,6 +2578,7 @@ declare function checkSetPreferredHeadInput(input: {
2432
2578
  declare function checkReviseMetadataInput(input: {
2433
2579
  elementId: unknown;
2434
2580
  title: unknown;
2581
+ cover_media_ref?: unknown;
2435
2582
  expectedRevision: unknown;
2436
2583
  }): InputError;
2437
2584
  /** Bequemlichkeit für Aufrufer, die den Typ eng brauchen. */
@@ -2524,6 +2671,7 @@ interface ImageExecutionRoute {
2524
2671
  }
2525
2672
  /** Ein Zielmodell, so wie die Auswahl es braucht. */
2526
2673
  interface ExecutionTargetModel {
2674
+ supportedControlInputs?: readonly string[];
2527
2675
  key: string;
2528
2676
  title: string;
2529
2677
  provider: string | null;
@@ -2534,6 +2682,7 @@ interface ExecutionTargetModel {
2534
2682
  }
2535
2683
  /** Eine wirklich ausführbare Kombination aus Zielmodell und Profil. */
2536
2684
  interface ExecutableImageModel {
2685
+ accepts_reference_image?: boolean;
2537
2686
  /** Kennung der Auswahl: Zielmodell **und** Profil, weil beides zählt. */
2538
2687
  selection_id: string;
2539
2688
  target_model_key: string;
@@ -2638,6 +2787,11 @@ interface GeneratedImage {
2638
2787
  }
2639
2788
  /** Die Eingabe an den tatsächlichen Provideraufruf — abgeleitet aus dem eingefrorenen Lauf. */
2640
2789
  interface ImageProviderInput {
2790
+ referenceImages?: readonly {
2791
+ data: string;
2792
+ mime_type: string;
2793
+ asset_id: string;
2794
+ }[];
2641
2795
  /** Das Zielmodell, mit dem ausgeführt wird — die fachliche Kennung (D-131). */
2642
2796
  targetModelKey: string;
2643
2797
  /** Der Aufrufweg aus dem gewählten Profil; der Adapter prüft, ob er ihn hat. */
@@ -2750,6 +2904,9 @@ interface SzenenImageGenerationPort {
2750
2904
  startFromPromptRun(input: StartImageGenerationInput): Promise<ImageGenerationResult>;
2751
2905
  }
2752
2906
  interface CreateImageGenerationPortOptions {
2907
+ loadCameraPreview?(runId: string): Promise<QueryResult<CameraPreview & {
2908
+ asset_id: string;
2909
+ }>>;
2753
2910
  runs: ImageGenerationRunReader;
2754
2911
  provider: ImageGenerationProviderPort;
2755
2912
  batches: ImageGenerationBatchPersistence;
@@ -3287,6 +3444,13 @@ interface StartRunInput {
3287
3444
  }
3288
3445
  /** Lesen und Starten von Prompt-Läufen. */
3289
3446
  interface SzenenRunPort {
3447
+ supportsCameraPreview?: boolean;
3448
+ /** Wiederholt ausschließlich die Medienablage eines bereits gespeicherten Laufs. */
3449
+ retryCameraPreview?(runId: string, render: CameraPreviewRenderer): Promise<CommandResult<PromptRunRecord>>;
3450
+ /** Das gespeicherte Kamera-Preview eines Laufs zum Anzeigen; fehlt, wenn der Host es nicht lesen kann. */
3451
+ loadCameraPreview?(runId: string): Promise<QueryResult<CameraPreview & {
3452
+ asset_id: string;
3453
+ }>>;
3290
3454
  /**
3291
3455
  * Alle Läufe einer Shot-Version, chronologisch.
3292
3456
  *
@@ -3496,8 +3660,10 @@ type StartRunFromDraftResult = {
3496
3660
  kind: 'error';
3497
3661
  message: string;
3498
3662
  retryable: boolean;
3663
+ storedRunId?: string;
3499
3664
  };
3500
3665
  interface StartRunFromDraftInput {
3666
+ previewRenderer?: CameraPreviewRenderer;
3501
3667
  /** Das Shot-**Element** der Kette. Eine Version gibt es hier gerade nicht. */
3502
3668
  shotElementId: string;
3503
3669
  userInstruction?: string;
@@ -3860,6 +4026,17 @@ interface SzenenMediaPort {
3860
4026
  }): Promise<CommandResult<{
3861
4027
  removed: boolean;
3862
4028
  }>>;
4029
+ /**
4030
+ * Eine anzeigbare Vorschau (`<img src>`-faehig) fuer ein Medien-Asset —
4031
+ * Kette `szenen-design`, P4: die Referenzbilder am Szenen-Node
4032
+ * (`sceneNode.media_refs[].asset_id`).
4033
+ *
4034
+ * Optional (R11): Ein Host, der `media_assets` nicht aufloesen kann, laesst
4035
+ * die Operation weg, und die Ansicht nennt dann den Grund statt einer leeren
4036
+ * Kachel. Aufgeloest wird nur, was der Nutzer selbst fuehrt; ein fremdes
4037
+ * oder unbekanntes Asset ist ein `error` mit Begruendung, kein leeres Bild.
4038
+ */
4039
+ loadAssetPreview?(assetId: string): Promise<QueryResult<string>>;
3863
4040
  }
3864
4041
  /**
3865
4042
  * Ein Bild eines Batches, wie der Lesepfad es liefert.
@@ -3871,6 +4048,8 @@ interface SzenenMediaPort {
3871
4048
  */
3872
4049
  interface PromptBatchImageRef {
3873
4050
  asset_id?: string;
4051
+ /** Rolle am Item; `reference` ist ein Kamera-Preview und kein Ergebnisbild. */
4052
+ role?: string;
3874
4053
  media_ref: string;
3875
4054
  position: number;
3876
4055
  file?: string;
@@ -4233,7 +4412,7 @@ interface HfImageStore {
4233
4412
  * wäre für jeden Leser ein Fehler; umgekehrt ist es nur eine Datei, die noch
4234
4413
  * kein Ereignis kennt.
4235
4414
  */
4236
- putWithId(id: string, base64: string, mimeType: string, titel?: string): Promise<void>;
4415
+ putWithId(id: string, base64: string, mimeType: string, prompt?: string, provenance?: Pick<HFMetadataEntry, 'source' | 'flow_provenance' | 'title'>): Promise<void>;
4237
4416
  /** Löst eine Kennung auf. `mimeType` ist ein Hinweis, kein Zwang. */
4238
4417
  resolve(id: string, mimeType?: string | null): Promise<AufgeloestesBild>;
4239
4418
  /**
@@ -4384,7 +4563,7 @@ interface LadeVorschauenOptionen {
4384
4563
  * als ein Wähler ohne Kacheln, und ob das Bild wirklich fehlt, entscheidet der
4385
4564
  * Lauf selbst über `resolveImage()`.
4386
4565
  */
4387
- declare function ladeVorschauen(port: SzenenImageLibraryPort, mediaRefs: readonly string[], fertig: (mediaRef: string, quelle: string) => void, optionen?: LadeVorschauenOptionen): Promise<void>;
4566
+ declare function ladeVorschauen(port: Pick<SzenenImageLibraryPort, 'loadPreview'>, mediaRefs: readonly string[], fertig: (mediaRef: string, quelle: string) => void, optionen?: LadeVorschauenOptionen): Promise<void>;
4388
4567
 
4389
4568
  /**
4390
4569
  * Der Anbieter eines manuell erfassten Laufs.
@@ -4497,6 +4676,14 @@ interface CreateMemoryViewPortOptions {
4497
4676
  items?: boolean;
4498
4677
  /** Ob der Port Medien anbietet (Stufe 5 vorhanden). */
4499
4678
  media?: boolean;
4679
+ /**
4680
+ * Anzeigbare Vorschauen je `asset_id` (Kette `szenen-design`, P4).
4681
+ *
4682
+ * Gesetzt bietet der Medienport `loadAssetPreview()` an und beantwortet eine
4683
+ * unbekannte Kennung mit einem Fehler. Fehlt die Angabe, fehlt auch die
4684
+ * Operation — wie in einem Host, der Assets nicht aufloesen kann (R11).
4685
+ */
4686
+ assetPreviews?: Readonly<Record<string, string>>;
4500
4687
  /**
4501
4688
  * Ob der Port einen Bildbestand anbietet (D-94).
4502
4689
  *
@@ -4611,7 +4798,7 @@ declare const FLOW_EXECUTION_PATH = "google_flow";
4611
4798
  /**
4612
4799
  * Ein Provideraufruf je Bild — dieselbe Begründung wie beim React-Adapter
4613
4800
  * (`reactImageProvider.ts`): Das SDK kennt keinen Mehrbild-Parameter
4614
- * (`howto-flow-sdk.md`, CONVERGE-Fundstelle „4 Varianten gleichzeitig").
4801
+ * (the Flow SDK host contract, CONVERGE-Fundstelle „4 Varianten gleichzeitig").
4615
4802
  * Teilfehler verwerfen nichts: Bricht der k-te Aufruf ab, werden die ersten
4616
4803
  * k-1 Bilder zurückgegeben; nur wenn **kein** Bild zustande kam, wirft der
4617
4804
  * Adapter.
@@ -4635,6 +4822,8 @@ interface CreateFlowSzenenViewPortOptions {
4635
4822
  textPort?: TextGenerationPort;
4636
4823
  /** Existing channel for tests or embedded hosts. Otherwise HF credentials are required. */
4637
4824
  channel?: ElementEventChannel;
4825
+ readPromptConstructionTags?: () => Promise<readonly PromptConstructionTag[]>;
4826
+ readReferenceSentenceTags?: () => Promise<readonly ReferenceSentenceTag[]>;
4638
4827
  namespace?: string;
4639
4828
  token?: string;
4640
4829
  context?: ContextChainPort;
@@ -4731,6 +4920,11 @@ declare function createBrowserTextGenerationPort(options?: CreateBrowserTextGene
4731
4920
  * Providerantwort und leitet keine Runde ab. Er speichert, was er bekommt.
4732
4921
  */
4733
4922
  interface PromptRunPersistencePort {
4923
+ storeCameraPreview?(runId: string, preview: CameraPreview): Promise<CommandResult<void>>;
4924
+ /** Liest genau das am Run-Item gespeicherte Preview (geprüft gegen den Lauf). */
4925
+ loadCameraPreview?(runId: string): Promise<QueryResult<CameraPreview & {
4926
+ asset_id: string;
4927
+ }>>;
4734
4928
  listForShot(shotVersionId: string): Promise<QueryResult<readonly PromptRunRecord[]>>;
4735
4929
  get(runId: string): Promise<QueryResult<PromptRunRecord | null>>;
4736
4930
  /** Legt den fertigen Lauf autoritativ ab. Ohne Bestätigung gibt es keinen Lauf. */
@@ -5020,6 +5214,7 @@ interface SelectableTargetModel {
5020
5214
  * Kombinationen trifft `executableImageModels()`, nicht diese Datei.
5021
5215
  */
5022
5216
  executionProfiles: readonly unknown[];
5217
+ supportedControlInputs?: readonly string[];
5023
5218
  /** Glied der Kette, auf dem der Treffer lag. `0` = Arbeitskontext. */
5024
5219
  chainIndex: number;
5025
5220
  }
@@ -5469,6 +5664,91 @@ declare function noticeFor(ergebnis: {
5469
5664
  [k: string]: unknown;
5470
5665
  }, was: string): Notice;
5471
5666
 
5667
+ /** Was der Host über den Lauf wissen muss, um einen Auftrag anzubieten. */
5668
+ interface SzenenServerJobKontext {
5669
+ cameraAspectRatio?: string;
5670
+ needsCameraReference?: boolean;
5671
+ /** Wie der Prompt das Referenzbild nennt — aus dem eingefrorenen Zielmodell des Laufs. */
5672
+ cameraReferenceToken?: string | null;
5673
+ /** Das gespeicherte Kamera-Preview zum Anzeigen (Data-URL), sobald geladen. */
5674
+ cameraPreviewSrc?: string | null;
5675
+ /** Der Promptlauf — Ziel der kanonischen Speicherung. */
5676
+ runId: string;
5677
+ /** Das Element, aus dem der Lauf stammt — die Herkunft des Auftrags. */
5678
+ elementId: string | null;
5679
+ /** Der eingefrorene positive Prompt dieses Laufs (D-103). */
5680
+ prompt: string;
5681
+ /**
5682
+ * Die auf diesem Host ausführbaren Modelle des Laufs — dieselbe Auswahl,
5683
+ * die auch die eingebaute Bilderzeugung anbietet.
5684
+ *
5685
+ * Der Host bekommt sie **fertig aufgelöst** statt einer Rohliste von
5686
+ * Profilen: `execution_path` und `execution_model_id` stehen darin
5687
+ * unverändert so, wie das Ausführungsprofil sie führt. Was der Host damit
5688
+ * macht — ob er sie auf einen eigenen Katalog abbildet und was passiert,
5689
+ * wenn das nicht aufgeht —, ist seine Sache und nicht die der Domain.
5690
+ */
5691
+ models: readonly ExecutableImageModel[];
5692
+ /**
5693
+ * Sagt der Laufansicht, dass sich ihr Bildbestand geändert hat.
5694
+ *
5695
+ * Der Host speichert außerhalb dieser Ansicht — sein Auftrag läuft auf einem
5696
+ * Server weiter, während der Nutzer hier steht. Ohne diesen Rückruf bliebe
5697
+ * die Ansicht auf dem Stand von vorhin stehen: Das Bild ist gespeichert und
5698
+ * über `listRunBatches` auch abrufbar, aber niemand fragt danach. Genau das
5699
+ * sah in der Abnahme wie „das Bild ist verloren" aus — zwölf Bilder vor dem
5700
+ * Lauf, zwölf danach, obwohl das dreizehnte längst im Bestand lag.
5701
+ *
5702
+ * Der Host ruft ihn, wenn ein Auftrag Bilder kanonisch abgelegt hat.
5703
+ */
5704
+ onBestandGeaendert: () => void;
5705
+ /**
5706
+ * Meldet die Serverauftraege des Hosts an die gemeinsame Zeitleiste der
5707
+ * Laufansicht (Kette `szenen-design`, P5, Entscheidung 4).
5708
+ *
5709
+ * Die Laufansicht kennt den Serverjobpfad nicht; sie zeigt nur, was der
5710
+ * Host hier als fertige Zeilen meldet — neben den Auftraegen aus dem
5711
+ * Order-Log des Ports. Der Host ruft ihn bei jedem neuen Stand seiner
5712
+ * Auftragsliste mit dem **vollstaendigen** Satz, nicht mit einer Differenz.
5713
+ */
5714
+ onAuftraegeGeaendert: (zeilen: readonly ServerAuftragZeile[]) => void;
5715
+ }
5716
+ /** Wie eine Zeile der Auftrags-Zeitleiste ausgegangen ist. */
5717
+ type AuftragZustand = 'fertig' | 'teilweise' | 'fehlgeschlagen' | 'laeuft' | 'abgebrochen';
5718
+ /** Eine Handlung an einer Zeitleistenzeile — etwa einen gesammelten Auftrag freigeben. */
5719
+ interface AuftragAktion {
5720
+ label: string;
5721
+ onAusfuehren: () => void;
5722
+ /** Stabile Kennung fuer Tests und Schluessel. */
5723
+ id: string;
5724
+ }
5725
+ /**
5726
+ * Ein Auftrag, wie die Zeitleiste ihn zeigt — vom Host fertig beschrieben.
5727
+ *
5728
+ * Alles ist Anzeige: Die Zeitleiste deutet keine Felder, sie setzt sie nur.
5729
+ */
5730
+ interface ServerAuftragZeile {
5731
+ /** Die Auftrags-ID des Hosts — Schluessel und Teil der Meldung. */
5732
+ id: string;
5733
+ zustand: AuftragZustand;
5734
+ /** Modell, Format, Anzahl — eine Zeile. */
5735
+ titel: string;
5736
+ /** Das Ergebnis in Worten, etwa „fertig · 1 von 1 Bild gespeichert". */
5737
+ ergebnis: string;
5738
+ /** Die vollstaendige Meldung (Fehlertext, Task-Kennung …), zum Aufklappen. */
5739
+ meldung: readonly string[];
5740
+ aktionen?: readonly AuftragAktion[];
5741
+ /** Das Referenzbild, das dieser Auftrag mitgibt — nur wenn er eines hat. */
5742
+ referenzBild?: {
5743
+ src: string | null;
5744
+ beschriftung: string;
5745
+ };
5746
+ /** Der Prompt genau so, wie der Auftrag ihn eingefroren hat. */
5747
+ prompt?: string;
5748
+ }
5749
+ /** Der Knoten, den der Host am Lauf zeigen will — oder nichts. */
5750
+ type SzenenServerJobSlot = (kontext: SzenenServerJobKontext) => React__default.ReactNode;
5751
+
5472
5752
  interface SzenenViewProps {
5473
5753
  port: SzenenViewPort;
5474
5754
  /** Arbeitskontext. Die wirksame Kette löst der Port auf, nicht die View. */
@@ -5488,6 +5768,15 @@ interface SzenenViewProps {
5488
5768
  fokus?: SzenenFokus | null;
5489
5769
  /** Zurück dorthin, woher der Fokus kam. Fehlt, wenn es kein Zurück gibt. */
5490
5770
  onFokusVerlassen?: () => void;
5771
+ /**
5772
+ * Ein hosteigener Serverauftrag am Promptlauf — optional.
5773
+ *
5774
+ * Die Ansicht ruft ihn nur auf und zeigt, was zurückkommt. Ein Host ohne
5775
+ * eigenen Serverjobpfad (Flow-FA) lässt ihn weg und sieht exakt dieselbe
5776
+ * Oberfläche wie bisher; die Flow-/HF-Ausführung wird dadurch weder
5777
+ * berührt noch umgeleitet.
5778
+ */
5779
+ serverJobSlot?: SzenenServerJobSlot | null;
5491
5780
  }
5492
5781
  /** Das angesteuerte Ziel. Genau eines — nie beides und nie geraten. */
5493
5782
  type SzenenFokus = {
@@ -5509,4 +5798,69 @@ type SzenenFokus = {
5509
5798
  declare function areaForFokus(fokus: SzenenFokus): SzenenAreaId;
5510
5799
  declare const SzenenView: React__default.FC<SzenenViewProps>;
5511
5800
 
5512
- 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 };
5801
+ type StagePlane = 'top' | 'side' | 'camera';
5802
+ type Vec3 = [number, number, number];
5803
+ declare const STAGE_CATALOGUE: readonly [{
5804
+ readonly label: "Mensch";
5805
+ readonly type: "subject";
5806
+ readonly dimensions: readonly [0.55, 0.35, 1.75];
5807
+ }, {
5808
+ readonly label: "Stuhl";
5809
+ readonly type: "object";
5810
+ readonly dimensions: readonly [0.5, 0.5, 0.9];
5811
+ }, {
5812
+ readonly label: "Tisch";
5813
+ readonly type: "surface";
5814
+ readonly dimensions: readonly [1.2, 0.7, 0.75];
5815
+ }, {
5816
+ readonly label: "Lampe";
5817
+ readonly type: "light";
5818
+ readonly dimensions: readonly [0.35, 0.35, 1.5];
5819
+ }];
5820
+ /** Nur die zwei sichtbaren Achsen ändern; die verborgene Tiefe bleibt erhalten. */
5821
+ declare function dragPosition(position: readonly number[], point: readonly number[], plane: StagePlane): Vec3;
5822
+ declare function stageNode(node: ResolvedNode): {
5823
+ node_id: string;
5824
+ type: string;
5825
+ primitive: string;
5826
+ dimensions: Vec3;
5827
+ position: Vec3;
5828
+ rotation: Vec3;
5829
+ scale: Vec3;
5830
+ anchors: Readonly<Record<string, readonly number[]>> | undefined;
5831
+ };
5832
+ /** Rendern ist nur bei vollständigen Daten zulässig, niemals mit geratenen Positionen. */
5833
+ declare function stageFrame(input: RendererInput): {
5834
+ nodes: {
5835
+ preview_color: {
5836
+ hex: string;
5837
+ name: string;
5838
+ };
5839
+ node_id: string;
5840
+ type: string;
5841
+ primitive: string;
5842
+ dimensions: Vec3;
5843
+ position: Vec3;
5844
+ rotation: Vec3;
5845
+ scale: Vec3;
5846
+ anchors: Readonly<Record<string, readonly number[]>> | undefined;
5847
+ }[];
5848
+ camera: {
5849
+ position: Vec3;
5850
+ orientation: Record<string, unknown>;
5851
+ aspect_ratio: string;
5852
+ aspect: number;
5853
+ focal_length_mm: number;
5854
+ sensor_width_mm: number;
5855
+ vertical_fov_deg: number;
5856
+ camera_id: string;
5857
+ name: string | null;
5858
+ preset: unknown;
5859
+ placement: unknown;
5860
+ framing: unknown;
5861
+ focus: unknown;
5862
+ pattern: unknown | null;
5863
+ };
5864
+ };
5865
+
5866
+ export { type AddManualSceneRunInput, type AttachLibraryItemInput, type AttachLibraryItemResult, type AuftragAktion, type AuftragZustand, AuthoritativeSzenenStore, type BestandsGalerieEintrag, type BestandsItem, type BuildManualPromptRunInput, CAMERA_ASPECT_RATIOS, CATALOGUE_TYPES, type CameraPreview, type CameraPreviewContext, type CameraPreviewDescriptor, type CameraPreviewRenderer, 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, 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 FrozenReferenceSentence, 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, PromptConstructionTag, 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 ReferenceSentenceTag, 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, STAGE_CATALOGUE, 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 ServerAuftragZeile, 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 SzenenServerJobKontext, type SzenenServerJobSlot, 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, buildCameraPreviewContext, buildManualPromptRunRecord, buildSystemInstruction, buildSzenenSnapshot, buildUserPrompt, callOptional, cameraAspectRatioValue, cameraPerspective, capabilitiesOf, capabilityGate, capabilityReport, catalogueFor, checkCameraAspectRatioChanges, 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, dragPosition, executableImageModels, findExecutableImageModel, findImageBatch, findImageGenerationOrder, findImageJob, findPromptOperation, findPromptRun, findProviderCheck, findSceneDerivation, findSceneDerivationRecovery, firstError, formatSeedListe, freezeDraftChain, freezeSceneWorkingState, frozenCameraAspectRatio, 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, preparePromptDerivation, preparePromptOperation, promptDiagnosticsOf, promptRunPageForTransport, promptRunPageFromTransport, publishedHeadsOf, recoveriesForRun, recoveryStatusOf, resolveArea, resolveGeneralScenePolicies, resolveScenePayload, resolveShot, resolveShotPayload, responseContractOf, roundOfRun, roundsOf, rulesWithoutPromptEffect, runOfOperation, runPromptDerivation, runStoreDifferential, sameResponseAs, sceneOnlyCapabilities, scenePolicyFingerprint, sceneVersionElementsOf, scopeOfPath, seedFehlerText, selectImageJobs, selectPromptRuns, selectableTargetModels, siblingsOf, sortScenePolicies, sourceOf, stageFrame, stageNode, supportsCompositionReference, szenenSnapshotFilename, totalModelCalls, typAusBytes, unclassifiedPublishRules, unsupportedReason };