@rslsp1/fa-app-tools 10.0.1 → 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/StageEngine-3MOBM2WX.mjs +590 -0
- package/dist/StageEngine-5VR3KEZB.js +590 -0
- package/dist/chunk-ACB2543O.js +218 -0
- package/dist/chunk-FTLEDU6C.js +157 -0
- package/dist/chunk-HFX6D53W.js +25729 -0
- package/dist/{chunk-UDBGDCKI.mjs → chunk-JP7LIWDR.mjs} +17936 -13232
- package/dist/chunk-QERFD7BY.js +1418 -0
- package/dist/{chunk-C5CGSPP3.mjs → chunk-RFTANBQ5.mjs} +80 -0
- package/dist/chunk-TFWIMFNF.mjs +218 -0
- package/dist/{contracts-DdYOMBl9.d.mts → contracts-B3AbzYQ4.d.mts} +1 -1
- package/dist/{contracts-DdYOMBl9.d.ts → contracts-B3AbzYQ4.d.ts} +1 -1
- package/dist/{hfEventTypes-BUztJySs.d.mts → hfEventTypes-DQPjEP4T.d.mts} +12 -1
- package/dist/{hfEventTypes-fAdA-0A9.d.ts → hfEventTypes-DharkVsi.d.ts} +12 -1
- package/dist/index.d.mts +27 -6
- package/dist/index.d.ts +27 -6
- package/dist/index.js +1831 -22287
- package/dist/index.mjs +173 -67
- package/dist/{storeContract-CJi0fpCA.d.mts → storeContract-C-em5E61.d.ts} +140 -14
- package/dist/{storeContract-gc2dxews.d.ts → storeContract-Cc8tFavd.d.mts} +140 -14
- package/dist/szenen-contract.d.mts +2 -2
- package/dist/szenen-contract.d.ts +2 -2
- package/dist/szenen-contract.js +12 -1474
- package/dist/szenen-contract.mjs +1 -1
- package/dist/szenen.d.mts +1095 -721
- package/dist/szenen.d.ts +1095 -721
- package/dist/szenen.js +1361 -23613
- package/dist/szenen.mjs +95 -128
- package/package.json +4 -2
package/dist/szenen.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { A as ALL_PUBLISH_RULES, a as AngezeigterTag, b as AnnotateRunsOptions, C as CHAIN_EDGES,
|
|
3
|
-
import { T as TextGenerationPort, Q as QueryResult, C as CommandResult } from './contracts-
|
|
4
|
-
export { S as SIMULATION_PROVIDER,
|
|
5
|
-
import { g as HFStateSnapshot, F as FlowGenerateText } from './hfEventTypes-
|
|
6
|
-
export { C as CreateFlowTextGenerationPortOptions, r as createFlowTextGenerationPort } from './hfEventTypes-
|
|
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-Cc8tFavd.mjs';
|
|
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-Cc8tFavd.mjs';
|
|
3
|
+
import { T as TextGenerationImage, c as TextGenerationPort, Q as QueryResult, C as CommandResult } from './contracts-B3AbzYQ4.mjs';
|
|
4
|
+
export { S as SIMULATION_PROVIDER, d as TextGenerationRequest, e as TextGenerationResult, h as createFakeTextGenerationPort, i as createSimulationTextGenerationPort, s as simulatedAnswerFor } from './contracts-B3AbzYQ4.mjs';
|
|
5
|
+
import { e as HFMetadataEntry, g as HFStateSnapshot, F as FlowGenerateText } from './hfEventTypes-DQPjEP4T.mjs';
|
|
6
|
+
export { C as CreateFlowTextGenerationPortOptions, r as createFlowTextGenerationPort } from './hfEventTypes-DQPjEP4T.mjs';
|
|
7
7
|
import React__default from 'react';
|
|
8
8
|
|
|
9
9
|
/** Aktuelle Fassung des Dateiformats. */
|
|
@@ -104,147 +104,562 @@ 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
|
-
*
|
|
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
|
-
* **
|
|
120
|
-
*
|
|
121
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
127
|
+
* Das Ergebnis der Aufloesung — drei Ausgaenge, drei Sachverhalte.
|
|
130
128
|
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
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
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
*
|
|
187
|
+
* Die deterministische Ordnung automatisch gefundener Policies (Auftrag §6).
|
|
146
188
|
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
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
|
-
|
|
194
|
+
declare function sortScenePolicies(policies: readonly ResolvedScenePolicy[]): readonly ResolvedScenePolicy[];
|
|
155
195
|
/**
|
|
156
|
-
*
|
|
196
|
+
* Der Vergleichswert zweier Aufloesungen — fuer die A/B-Stabilitaetspruefung.
|
|
157
197
|
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
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
|
|
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
|
-
*
|
|
206
|
+
* Die allgemeinen Policies, die fuer einen Szene-Direktlauf gelten.
|
|
168
207
|
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
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
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
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
|
|
217
|
+
declare function resolveGeneralScenePolicies(snapshot: PolicySnapshot, contextChain: readonly (string | null)[],
|
|
185
218
|
/**
|
|
186
|
-
*
|
|
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
|
-
*
|
|
198
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
250
|
+
* Warum eine Kette nicht eingefroren werden konnte.
|
|
210
251
|
*
|
|
211
|
-
* `
|
|
212
|
-
*
|
|
213
|
-
*
|
|
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
|
|
216
|
-
|
|
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
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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
|
-
|
|
246
|
-
|
|
247
|
-
|
|
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
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* Die Elemente eines Kettenglieds — fuer die allgemeinen Kontext-Policies
|
|
326
|
+
* des Szene-Direktlaufs (Schritt 03 §3).
|
|
327
|
+
*
|
|
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).
|
|
332
|
+
*
|
|
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).
|
|
336
|
+
*/
|
|
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
|
+
};
|
|
348
|
+
}
|
|
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;
|
|
400
|
+
/**
|
|
401
|
+
* Die automatisch aufgeloesten allgemeinen Kontext-Policies (Schritt 03).
|
|
402
|
+
*
|
|
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`.
|
|
406
|
+
*/
|
|
407
|
+
policies: readonly ResolvedScenePolicy[];
|
|
408
|
+
/**
|
|
409
|
+
* Das eingefrorene Zielmodell, oder `null` fuer einen generischen Lauf.
|
|
410
|
+
*
|
|
411
|
+
* Wie `policies` redundant zu `input` und trotzdem hier: Der Aufrufer sieht
|
|
412
|
+
* die Provenienz, ohne sie aus `renderer_input` zurueckrechnen zu muessen.
|
|
413
|
+
*/
|
|
414
|
+
targetModel: FrozenSceneTargetModel | null;
|
|
415
|
+
}
|
|
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;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Das gewaehlte Zielmodell eines Szene-Direktlaufs — Kette
|
|
434
|
+
* `szenen-direktlauf-target-model-policy`, Schritt 01.
|
|
435
|
+
*
|
|
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.
|
|
445
|
+
*
|
|
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).
|
|
460
|
+
*
|
|
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).
|
|
466
|
+
*
|
|
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.
|
|
471
|
+
*/
|
|
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
|
+
|
|
522
|
+
/**
|
|
523
|
+
* Ist dieses Scene Setup platzierbar?
|
|
524
|
+
*
|
|
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[];
|
|
248
663
|
}
|
|
249
664
|
interface CapabilityReportInput {
|
|
250
665
|
/**
|
|
@@ -391,125 +806,6 @@ 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;
|
|
407
|
-
rank: number;
|
|
408
|
-
text: string;
|
|
409
|
-
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
809
|
/** Ein Beitrag zur Beschreibung eines Knotens, mit Herkunft (D-50). */
|
|
514
810
|
interface NodeContribution {
|
|
515
811
|
source: 'component' | 'node_semantic' | 'setup_override';
|
|
@@ -523,6 +819,18 @@ interface NodeContribution {
|
|
|
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:
|
|
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
|
-
|
|
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
|
-
*
|
|
1284
|
-
*
|
|
1285
|
-
*
|
|
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. */
|
|
@@ -1321,521 +1704,280 @@ interface PromptRunPageInput {
|
|
|
1321
1704
|
tags?: ReadonlyMap<string, readonly LibraryTagRef[]>;
|
|
1322
1705
|
/**
|
|
1323
1706
|
* Bildanzahl, Vorschau und Library-Tags je Lauf — wie
|
|
1324
|
-
* `annotateRunsFromEvents()` sie liefert.
|
|
1325
|
-
*
|
|
1326
|
-
* Auch das geht **hier** hinein und nicht in einen Aufruf je Karte: Die
|
|
1327
|
-
* Bild-Batches liegen in demselben Log wie die Laeufe, und die Seite bringt
|
|
1328
|
-
* die Zahlen ihrer zehn Laeufe mit.
|
|
1329
|
-
*/
|
|
1330
|
-
annotations?: ReadonlyMap<string, PromptRunAnnotation>;
|
|
1331
|
-
/**
|
|
1332
|
-
* Der Titel je **Element**, wie ihn der gefaltete Bestand kennt.
|
|
1333
|
-
*
|
|
1334
|
-
* Aus demselben Grund hier wie Tags und Bildzahlen: Der Name eines Laufs ist
|
|
1335
|
-
* der Titel des Elements, aus dem er entstand (`namingElementOf`), und der
|
|
1336
|
-
* steht in demselben Log. Ihn je Karte einzeln zu lesen hiess bisher, nach
|
|
1337
|
-
* der Seite noch einmal **je Element** eine Abfrage zu stellen — nacheinander,
|
|
1338
|
-
* weil eine Liste sonst zehn gleichzeitig ausloeste.
|
|
1339
|
-
*
|
|
1340
|
-
* Fehlt die Angabe, traegt die Seite keine Titel; die Ansicht loest sie dann
|
|
1341
|
-
* weiterhin selbst auf. Es entsteht keine zweite Namensregel: **welches**
|
|
1342
|
-
* Element benennt, entscheidet nach wie vor `namingElementOf()`.
|
|
1343
|
-
*/
|
|
1344
|
-
titles?: ReadonlyMap<string, string>;
|
|
1345
|
-
}
|
|
1346
|
-
/**
|
|
1347
|
-
* Eine Seite Laeufe, **neueste zuerst**, mit allem, was die Anzeige sonst aus
|
|
1348
|
-
* dem Gesamtbestand hatte.
|
|
1349
|
-
*
|
|
1350
|
-
* Warum die Rundennummern mitkommen: Die Runde ist der Platz eines Laufs unter
|
|
1351
|
-
* seinen Geschwistern (U23) — sie laesst sich aus zehn von achthundert Laeufen
|
|
1352
|
-
* nicht ausrechnen. Statt dafuer wieder alles zu uebertragen, rechnet die Seite
|
|
1353
|
-
* sie dort aus, wo der volle Bestand ohnehin liegt, und schickt genau die
|
|
1354
|
-
* Nummern der gezeigten Laeufe mit. Es entsteht keine zweite Zaehlung: dieselbe
|
|
1355
|
-
* Gruppierung, dieselbe Reihenfolge, derselbe 1-basierte Platz wie
|
|
1356
|
-
* `roundOfRun(lauf, siblingsOf(lauf, alle))`.
|
|
1357
|
-
*/
|
|
1358
|
-
interface PromptRunPage extends Omit<PromptRunListing, 'runs'>, Page<PromptRunPageRecord> {
|
|
1359
|
-
/**
|
|
1360
|
-
* Dieselben Saetze wie `items` — `runs` bleibt der Name der Laufliste.
|
|
1361
|
-
*
|
|
1362
|
-
* Ueber eine Leitung sind es Listenprojektionen (`detail_omitted`), im
|
|
1363
|
-
* lokal faltenden Host volle Saetze. Die Ansicht unterscheidet das mit
|
|
1364
|
-
* `detailFehlt()` und laedt nur im ersten Fall nach.
|
|
1365
|
-
*/
|
|
1366
|
-
runs: readonly PromptRunPageRecord[];
|
|
1367
|
-
/** Rundennummer je `run_id`, nur fuer die Laeufe dieser Seite. */
|
|
1368
|
-
rounds: Readonly<Record<string, number>>;
|
|
1369
|
-
/** Laeufe, die der Herkunftsfilter ausgeblendet hat. */
|
|
1370
|
-
hiddenByOrigin: number;
|
|
1371
|
-
/**
|
|
1372
|
-
* Die **direkten** Tags je `run_id`, nur fuer die Laeufe dieser Seite.
|
|
1373
|
-
*
|
|
1374
|
-
* Ein Lauf ohne Eintrag hat keine Prompt-Tags. Getrennt von `annotations`
|
|
1375
|
-
* gefuehrt, weil diese Tags aus demselben Log stammen wie die Laeufe und
|
|
1376
|
-
* jeder Host sie hat — auch einer ohne Library-Bestand.
|
|
1377
|
-
*/
|
|
1378
|
-
promptTags: Readonly<Record<string, readonly LibraryTagRef[]>>;
|
|
1379
|
-
/**
|
|
1380
|
-
* Der Anzeigename je `run_id`, nur fuer die Laeufe dieser Seite und nur, wo
|
|
1381
|
-
* das benennende Element einen Titel hat.
|
|
1382
|
-
*
|
|
1383
|
-
* Ein Lauf ohne Eintrag bleibt titellos und heisst „Runde n" — ein aus der
|
|
1384
|
-
* `run_id` gebastelter Name saehe aus wie ein echter (D-75).
|
|
1385
|
-
*/
|
|
1386
|
-
titles?: Readonly<Record<string, string>>;
|
|
1387
|
-
/**
|
|
1388
|
-
* Bildanzahl, Vorschau und Library-Tags je `run_id` — nur wenn der Host sie
|
|
1389
|
-
* liefern kann. Fehlt das Feld, weiss die Ansicht es nicht und sagt das.
|
|
1390
|
-
*/
|
|
1391
|
-
annotations?: Readonly<Record<string, PromptRunAnnotation>>;
|
|
1392
|
-
}
|
|
1393
|
-
/**
|
|
1394
|
-
* Die Rundennummer **jedes** Laufs des uebergebenen Bestands.
|
|
1395
|
-
*
|
|
1396
|
-
* Gerechnet auf der chronologischen Reihenfolge, die `collectPromptRuns`
|
|
1397
|
-
* liefert — nicht auf der Anzeigereihenfolge. Die Anzeige dreht sich um; die
|
|
1398
|
-
* Rundenzaehlung tut es nicht, sonst hiesse derselbe Lauf morgen anders.
|
|
1399
|
-
*/
|
|
1400
|
-
declare function roundsOf(alle: readonly PromptRunRecord[]): ReadonlyMap<string, number>;
|
|
1401
|
-
/**
|
|
1402
|
-
* Der eine Seitenschnitt fuer Prompt-Laeufe — Server wie Client.
|
|
1403
|
-
*
|
|
1404
|
-
* Reine Funktion ueber einem bereits gelesenen Bestand, genau wie
|
|
1405
|
-
* `selectPromptRuns`, das sie benutzt. Damit gilt der Bezugsrahmen (Status,
|
|
1406
|
-
* Kontext) an beiden Enden unveraendert; dazu kommen Herkunft, Umkehrung und
|
|
1407
|
-
* Schnitt.
|
|
1408
|
-
*
|
|
1409
|
-
* @param alle Der Bestand in der Reihenfolge von `collectPromptRuns`.
|
|
1410
|
-
* @throws Wenn der Cursor in der gefilterten Liste nicht vorkommt (`pageOf`).
|
|
1411
|
-
*/
|
|
1412
|
-
declare function pagePromptRuns(alle: readonly PromptRunRecord[], input?: PromptRunPageInput): PromptRunPage;
|
|
1413
|
-
/**
|
|
1414
|
-
* Eine Seite, wie sie **ueber eine Leitung** geht — Kette `szenen-promptliste-transport`.
|
|
1415
|
-
*
|
|
1416
|
-
* Zwei Dinge fallen weg, beide gemessen an `GET /api2/szenen/prompt-runs/page`
|
|
1417
|
-
* auf dev mit zehn Laeufen (203 kB):
|
|
1418
|
-
*
|
|
1419
|
-
* 1. **`items`.** Die Seite trug die Laufliste zweimal: einmal als `runs`,
|
|
1420
|
-
* einmal als `items` aus dem `Page<T>`-Vertrag. Im JSON sind das zwei
|
|
1421
|
-
* vollstaendige Kopien — 100 der 203 kB. Der Vertrag bleibt: Der Adapter
|
|
1422
|
-
* auf der anderen Seite setzt `items` aus `runs` wieder zusammen, statt es
|
|
1423
|
-
* zu uebertragen.
|
|
1424
|
-
* 2. **Die Detailfelder** (`PROMPT_RUN_DETAIL_FIELDS`). 74 der uebrigen 100 kB,
|
|
1425
|
-
* und keines davon zeigt die Liste. Was bleibt, ist als
|
|
1426
|
-
* `PromptRunListRecord` **markiert**, damit die Ansicht ein fehlendes Feld
|
|
1427
|
-
* nicht fuer eine Aussage ueber den Lauf haelt.
|
|
1428
|
-
*
|
|
1429
|
-
* Rein und ohne Host: `items` wegzulassen ist eine Transportentscheidung, und
|
|
1430
|
-
* sie gehoert neben den Seitenschnitt, nicht in einen Controller.
|
|
1431
|
-
*/
|
|
1432
|
-
declare function promptRunPageForTransport(seite: PromptRunPage): Omit<PromptRunPage, 'items'>;
|
|
1433
|
-
/**
|
|
1434
|
-
* Die Gegenrichtung: `items` aus `runs` zuruecklegen.
|
|
1435
|
-
*
|
|
1436
|
-
* Der `Page<T>`-Vertrag gilt im Client unveraendert — er wurde nur nicht
|
|
1437
|
-
* uebertragen. Ohne diesen Schritt fehlte `items` still, und jeder kuenftige
|
|
1438
|
-
* Aufrufer von `Page<T>` saehe eine leere Seite statt eines Fehlers.
|
|
1439
|
-
*/
|
|
1440
|
-
declare function promptRunPageFromTransport(roh: Omit<PromptRunPage, 'items'>): PromptRunPage;
|
|
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;
|
|
1707
|
+
* `annotateRunsFromEvents()` sie liefert.
|
|
1708
|
+
*
|
|
1709
|
+
* Auch das geht **hier** hinein und nicht in einen Aufruf je Karte: Die
|
|
1710
|
+
* Bild-Batches liegen in demselben Log wie die Laeufe, und die Seite bringt
|
|
1711
|
+
* die Zahlen ihrer zehn Laeufe mit.
|
|
1712
|
+
*/
|
|
1713
|
+
annotations?: ReadonlyMap<string, PromptRunAnnotation>;
|
|
1567
1714
|
/**
|
|
1568
|
-
*
|
|
1715
|
+
* Der Titel je **Element**, wie ihn der gefaltete Bestand kennt.
|
|
1569
1716
|
*
|
|
1570
|
-
*
|
|
1571
|
-
*
|
|
1572
|
-
*
|
|
1717
|
+
* Aus demselben Grund hier wie Tags und Bildzahlen: Der Name eines Laufs ist
|
|
1718
|
+
* der Titel des Elements, aus dem er entstand (`namingElementOf`), und der
|
|
1719
|
+
* steht in demselben Log. Ihn je Karte einzeln zu lesen hiess bisher, nach
|
|
1720
|
+
* der Seite noch einmal **je Element** eine Abfrage zu stellen — nacheinander,
|
|
1721
|
+
* weil eine Liste sonst zehn gleichzeitig ausloeste.
|
|
1722
|
+
*
|
|
1723
|
+
* Fehlt die Angabe, traegt die Seite keine Titel; die Ansicht loest sie dann
|
|
1724
|
+
* weiterhin selbst auf. Es entsteht keine zweite Namensregel: **welches**
|
|
1725
|
+
* Element benennt, entscheidet nach wie vor `namingElementOf()`.
|
|
1573
1726
|
*/
|
|
1574
|
-
|
|
1575
|
-
results: readonly ProviderCheckResult[];
|
|
1576
|
-
created_at: string;
|
|
1727
|
+
titles?: ReadonlyMap<string, string>;
|
|
1577
1728
|
}
|
|
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
1729
|
/**
|
|
1590
|
-
*
|
|
1730
|
+
* Eine Seite Laeufe, **neueste zuerst**, mit allem, was die Anzeige sonst aus
|
|
1731
|
+
* dem Gesamtbestand hatte.
|
|
1591
1732
|
*
|
|
1592
|
-
*
|
|
1593
|
-
*
|
|
1733
|
+
* Warum die Rundennummern mitkommen: Die Runde ist der Platz eines Laufs unter
|
|
1734
|
+
* seinen Geschwistern (U23) — sie laesst sich aus zehn von achthundert Laeufen
|
|
1735
|
+
* nicht ausrechnen. Statt dafuer wieder alles zu uebertragen, rechnet die Seite
|
|
1736
|
+
* sie dort aus, wo der volle Bestand ohnehin liegt, und schickt genau die
|
|
1737
|
+
* Nummern der gezeigten Laeufe mit. Es entsteht keine zweite Zaehlung: dieselbe
|
|
1738
|
+
* Gruppierung, dieselbe Reihenfolge, derselbe 1-basierte Platz wie
|
|
1739
|
+
* `roundOfRun(lauf, siblingsOf(lauf, alle))`.
|
|
1594
1740
|
*/
|
|
1595
|
-
|
|
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;
|
|
1741
|
+
interface PromptRunPage extends Omit<PromptRunListing, 'runs'>, Page<PromptRunPageRecord> {
|
|
1609
1742
|
/**
|
|
1610
|
-
*
|
|
1743
|
+
* Dieselben Saetze wie `items` — `runs` bleibt der Name der Laufliste.
|
|
1611
1744
|
*
|
|
1612
|
-
*
|
|
1613
|
-
*
|
|
1614
|
-
*
|
|
1745
|
+
* Ueber eine Leitung sind es Listenprojektionen (`detail_omitted`), im
|
|
1746
|
+
* lokal faltenden Host volle Saetze. Die Ansicht unterscheidet das mit
|
|
1747
|
+
* `detailFehlt()` und laedt nur im ersten Fall nach.
|
|
1615
1748
|
*/
|
|
1616
|
-
|
|
1617
|
-
/**
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
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
|
-
};
|
|
1749
|
+
runs: readonly PromptRunPageRecord[];
|
|
1750
|
+
/** Rundennummer je `run_id`, nur fuer die Laeufe dieser Seite. */
|
|
1751
|
+
rounds: Readonly<Record<string, number>>;
|
|
1752
|
+
sceneStates?: Readonly<Record<string, SceneRunState>>;
|
|
1753
|
+
sceneImageCount?: number;
|
|
1754
|
+
/** Laeufe, die der Herkunftsfilter ausgeblendet hat. */
|
|
1755
|
+
hiddenByOrigin: number;
|
|
1693
1756
|
/**
|
|
1694
|
-
* Die
|
|
1695
|
-
* des Szene-Direktlaufs (Schritt 03 §3).
|
|
1757
|
+
* Die **direkten** Tags je `run_id`, nur fuer die Laeufe dieser Seite.
|
|
1696
1758
|
*
|
|
1697
|
-
*
|
|
1698
|
-
*
|
|
1699
|
-
*
|
|
1700
|
-
|
|
1759
|
+
* Ein Lauf ohne Eintrag hat keine Prompt-Tags. Getrennt von `annotations`
|
|
1760
|
+
* gefuehrt, weil diese Tags aus demselben Log stammen wie die Laeufe und
|
|
1761
|
+
* jeder Host sie hat — auch einer ohne Library-Bestand.
|
|
1762
|
+
*/
|
|
1763
|
+
promptTags: Readonly<Record<string, readonly LibraryTagRef[]>>;
|
|
1764
|
+
/**
|
|
1765
|
+
* Der Anzeigename je `run_id`, nur fuer die Laeufe dieser Seite und nur, wo
|
|
1766
|
+
* das benennende Element einen Titel hat.
|
|
1701
1767
|
*
|
|
1702
|
-
*
|
|
1703
|
-
*
|
|
1704
|
-
* Live-Leseweg (Gegenpruefung P2).
|
|
1768
|
+
* Ein Lauf ohne Eintrag bleibt titellos und heisst „Runde n" — ein aus der
|
|
1769
|
+
* `run_id` gebastelter Name saehe aus wie ein echter (D-75).
|
|
1705
1770
|
*/
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
value?: readonly {
|
|
1713
|
-
element_id: string;
|
|
1714
|
-
type: string;
|
|
1715
|
-
}[];
|
|
1716
|
-
};
|
|
1771
|
+
titles?: Readonly<Record<string, string>>;
|
|
1772
|
+
/**
|
|
1773
|
+
* Bildanzahl, Vorschau und Library-Tags je `run_id` — nur wenn der Host sie
|
|
1774
|
+
* liefern kann. Fehlt das Feld, weiss die Ansicht es nicht und sagt das.
|
|
1775
|
+
*/
|
|
1776
|
+
annotations?: Readonly<Record<string, PromptRunAnnotation>>;
|
|
1717
1777
|
}
|
|
1718
1778
|
/**
|
|
1719
|
-
*
|
|
1779
|
+
* Die Rundennummer **jedes** Laufs des uebergebenen Bestands.
|
|
1720
1780
|
*
|
|
1721
|
-
*
|
|
1722
|
-
*
|
|
1723
|
-
*
|
|
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).
|
|
1781
|
+
* Gerechnet auf der chronologischen Reihenfolge, die `collectPromptRuns`
|
|
1782
|
+
* liefert — nicht auf der Anzeigereihenfolge. Die Anzeige dreht sich um; die
|
|
1783
|
+
* Rundenzaehlung tut es nicht, sonst hiesse derselbe Lauf morgen anders.
|
|
1727
1784
|
*/
|
|
1728
|
-
|
|
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
|
-
}
|
|
1785
|
+
declare function roundsOf(alle: readonly PromptRunRecord[]): ReadonlyMap<string, number>;
|
|
1741
1786
|
/**
|
|
1742
|
-
*
|
|
1787
|
+
* Der eine Seitenschnitt fuer Prompt-Laeufe — Server wie Client.
|
|
1743
1788
|
*
|
|
1744
|
-
*
|
|
1745
|
-
*
|
|
1746
|
-
*
|
|
1789
|
+
* Reine Funktion ueber einem bereits gelesenen Bestand, genau wie
|
|
1790
|
+
* `selectPromptRuns`, das sie benutzt. Damit gilt der Bezugsrahmen (Status,
|
|
1791
|
+
* Kontext) an beiden Enden unveraendert; dazu kommen Herkunft, Umkehrung und
|
|
1792
|
+
* Schnitt.
|
|
1793
|
+
*
|
|
1794
|
+
* @param alle Der Bestand in der Reihenfolge von `collectPromptRuns`.
|
|
1795
|
+
* @throws Wenn der Cursor in der gefilterten Liste nicht vorkommt (`pageOf`).
|
|
1747
1796
|
*/
|
|
1748
|
-
declare function
|
|
1797
|
+
declare function pagePromptRuns(alle: readonly PromptRunRecord[], input?: PromptRunPageInput): PromptRunPage;
|
|
1798
|
+
/**
|
|
1799
|
+
* Eine Seite, wie sie **ueber eine Leitung** geht — Kette `szenen-promptliste-transport`.
|
|
1800
|
+
*
|
|
1801
|
+
* Zwei Dinge fallen weg, beide gemessen an `GET /api2/szenen/prompt-runs/page`
|
|
1802
|
+
* auf dev mit zehn Laeufen (203 kB):
|
|
1803
|
+
*
|
|
1804
|
+
* 1. **`items`.** Die Seite trug die Laufliste zweimal: einmal als `runs`,
|
|
1805
|
+
* einmal als `items` aus dem `Page<T>`-Vertrag. Im JSON sind das zwei
|
|
1806
|
+
* vollstaendige Kopien — 100 der 203 kB. Der Vertrag bleibt: Der Adapter
|
|
1807
|
+
* auf der anderen Seite setzt `items` aus `runs` wieder zusammen, statt es
|
|
1808
|
+
* zu uebertragen.
|
|
1809
|
+
* 2. **Die Detailfelder** (`PROMPT_RUN_DETAIL_FIELDS`). 74 der uebrigen 100 kB,
|
|
1810
|
+
* und keines davon zeigt die Liste. Was bleibt, ist als
|
|
1811
|
+
* `PromptRunListRecord` **markiert**, damit die Ansicht ein fehlendes Feld
|
|
1812
|
+
* nicht fuer eine Aussage ueber den Lauf haelt.
|
|
1813
|
+
*
|
|
1814
|
+
* Rein und ohne Host: `items` wegzulassen ist eine Transportentscheidung, und
|
|
1815
|
+
* sie gehoert neben den Seitenschnitt, nicht in einen Controller.
|
|
1816
|
+
*/
|
|
1817
|
+
declare function promptRunPageForTransport(seite: PromptRunPage): Omit<PromptRunPage, 'items'>;
|
|
1818
|
+
/**
|
|
1819
|
+
* Die Gegenrichtung: `items` aus `runs` zuruecklegen.
|
|
1820
|
+
*
|
|
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.
|
|
1824
|
+
*/
|
|
1825
|
+
declare function promptRunPageFromTransport(roh: Omit<PromptRunPage, 'items'>): PromptRunPage;
|
|
1826
|
+
|
|
1749
1827
|
/**
|
|
1750
|
-
*
|
|
1828
|
+
* Ein Vorschlag, so wie er im Ereignis steht.
|
|
1751
1829
|
*
|
|
1752
|
-
*
|
|
1753
|
-
*
|
|
1754
|
-
*
|
|
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
|
|
1757
|
-
|
|
1758
|
-
|
|
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
|
-
*
|
|
1839
|
+
* `complete`: erfüllt das reguläre Element-Schema.
|
|
1840
|
+
* `partial`: erfüllt es bis auf die in `gaps` benannten Pflichtfelder.
|
|
1768
1841
|
*
|
|
1769
|
-
*
|
|
1770
|
-
*
|
|
1771
|
-
*
|
|
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
|
-
|
|
1848
|
+
status?: 'complete' | 'partial';
|
|
1849
|
+
gaps?: readonly {
|
|
1850
|
+
pointer: string;
|
|
1851
|
+
reason: string;
|
|
1852
|
+
}[];
|
|
1774
1853
|
/**
|
|
1775
|
-
*
|
|
1854
|
+
* Der Namensvorschlag des Modells (D-83), sofern es einen brauchbaren gab.
|
|
1776
1855
|
*
|
|
1777
|
-
*
|
|
1778
|
-
*
|
|
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
|
-
|
|
1859
|
+
title?: string;
|
|
1781
1860
|
}
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
1794
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
1813
|
-
*
|
|
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
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
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
|
-
*
|
|
1825
|
-
* (D-135).
|
|
1965
|
+
* Liest alle Provider-Checks aus dem Ereignislog.
|
|
1826
1966
|
*
|
|
1827
|
-
*
|
|
1828
|
-
*
|
|
1829
|
-
*
|
|
1830
|
-
|
|
1831
|
-
|
|
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
|
|
1834
|
-
*
|
|
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
|
|
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;
|
|
@@ -3144,6 +3301,26 @@ interface RequestMoreImagesInput {
|
|
|
3144
3301
|
sourceJobId: string;
|
|
3145
3302
|
/** Wie viele Bilder der **neue** Auftrag anfordert. */
|
|
3146
3303
|
imageCount: number;
|
|
3304
|
+
/**
|
|
3305
|
+
* Ein **anderes** Zielmodell als das des Ausgangsauftrags (Schritt 06).
|
|
3306
|
+
*
|
|
3307
|
+
* Fehlt es, gilt das des Ausgangsauftrags — das ist der Normalfall und die
|
|
3308
|
+
* Vorbelegung der Oberflaeche. Gesetzt heisst: Der Nutzer hat bewusst
|
|
3309
|
+
* gewechselt. Geprueft wird in beiden Faellen gegen dieselbe heute gueltige
|
|
3310
|
+
* Auswahl; ein gewaehltes Modell wird so wenig geraten wie ein uebernommenes.
|
|
3311
|
+
*
|
|
3312
|
+
* `executionProfileId` gehoert dazu — ein Zielmodell kann mehrere Profile
|
|
3313
|
+
* tragen, und welches gemeint ist, entscheidet nicht der Port.
|
|
3314
|
+
*/
|
|
3315
|
+
executionTargetModelKey?: string;
|
|
3316
|
+
executionProfileId?: string;
|
|
3317
|
+
/**
|
|
3318
|
+
* Ein anderes Seitenverhaeltnis. Fehlt es, gilt das des Ausgangsauftrags.
|
|
3319
|
+
*
|
|
3320
|
+
* `null` heisst ausdruecklich **ohne** Seitenverhaeltnis — das ist etwas
|
|
3321
|
+
* anderes als „nicht angegeben" und wird deshalb unterschieden (Regel 4).
|
|
3322
|
+
*/
|
|
3323
|
+
aspectRatio?: string | null;
|
|
3147
3324
|
/** Die Kennung des neuen Auftrags. Ersetzbar, damit ein Test nicht wuerfelt. */
|
|
3148
3325
|
jobId?: string;
|
|
3149
3326
|
}
|
|
@@ -3267,6 +3444,13 @@ interface StartRunInput {
|
|
|
3267
3444
|
}
|
|
3268
3445
|
/** Lesen und Starten von Prompt-Läufen. */
|
|
3269
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
|
+
}>>;
|
|
3270
3454
|
/**
|
|
3271
3455
|
* Alle Läufe einer Shot-Version, chronologisch.
|
|
3272
3456
|
*
|
|
@@ -3476,8 +3660,10 @@ type StartRunFromDraftResult = {
|
|
|
3476
3660
|
kind: 'error';
|
|
3477
3661
|
message: string;
|
|
3478
3662
|
retryable: boolean;
|
|
3663
|
+
storedRunId?: string;
|
|
3479
3664
|
};
|
|
3480
3665
|
interface StartRunFromDraftInput {
|
|
3666
|
+
previewRenderer?: CameraPreviewRenderer;
|
|
3481
3667
|
/** Das Shot-**Element** der Kette. Eine Version gibt es hier gerade nicht. */
|
|
3482
3668
|
shotElementId: string;
|
|
3483
3669
|
userInstruction?: string;
|
|
@@ -3840,6 +4026,17 @@ interface SzenenMediaPort {
|
|
|
3840
4026
|
}): Promise<CommandResult<{
|
|
3841
4027
|
removed: boolean;
|
|
3842
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>>;
|
|
3843
4040
|
}
|
|
3844
4041
|
/**
|
|
3845
4042
|
* Ein Bild eines Batches, wie der Lesepfad es liefert.
|
|
@@ -3851,6 +4048,8 @@ interface SzenenMediaPort {
|
|
|
3851
4048
|
*/
|
|
3852
4049
|
interface PromptBatchImageRef {
|
|
3853
4050
|
asset_id?: string;
|
|
4051
|
+
/** Rolle am Item; `reference` ist ein Kamera-Preview und kein Ergebnisbild. */
|
|
4052
|
+
role?: string;
|
|
3854
4053
|
media_ref: string;
|
|
3855
4054
|
position: number;
|
|
3856
4055
|
file?: string;
|
|
@@ -4213,7 +4412,7 @@ interface HfImageStore {
|
|
|
4213
4412
|
* wäre für jeden Leser ein Fehler; umgekehrt ist es nur eine Datei, die noch
|
|
4214
4413
|
* kein Ereignis kennt.
|
|
4215
4414
|
*/
|
|
4216
|
-
putWithId(id: string, base64: string, mimeType: string,
|
|
4415
|
+
putWithId(id: string, base64: string, mimeType: string, prompt?: string, provenance?: Pick<HFMetadataEntry, 'source' | 'flow_provenance' | 'title'>): Promise<void>;
|
|
4217
4416
|
/** Löst eine Kennung auf. `mimeType` ist ein Hinweis, kein Zwang. */
|
|
4218
4417
|
resolve(id: string, mimeType?: string | null): Promise<AufgeloestesBild>;
|
|
4219
4418
|
/**
|
|
@@ -4364,7 +4563,7 @@ interface LadeVorschauenOptionen {
|
|
|
4364
4563
|
* als ein Wähler ohne Kacheln, und ob das Bild wirklich fehlt, entscheidet der
|
|
4365
4564
|
* Lauf selbst über `resolveImage()`.
|
|
4366
4565
|
*/
|
|
4367
|
-
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>;
|
|
4368
4567
|
|
|
4369
4568
|
/**
|
|
4370
4569
|
* Der Anbieter eines manuell erfassten Laufs.
|
|
@@ -4477,6 +4676,14 @@ interface CreateMemoryViewPortOptions {
|
|
|
4477
4676
|
items?: boolean;
|
|
4478
4677
|
/** Ob der Port Medien anbietet (Stufe 5 vorhanden). */
|
|
4479
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>>;
|
|
4480
4687
|
/**
|
|
4481
4688
|
* Ob der Port einen Bildbestand anbietet (D-94).
|
|
4482
4689
|
*
|
|
@@ -4591,7 +4798,7 @@ declare const FLOW_EXECUTION_PATH = "google_flow";
|
|
|
4591
4798
|
/**
|
|
4592
4799
|
* Ein Provideraufruf je Bild — dieselbe Begründung wie beim React-Adapter
|
|
4593
4800
|
* (`reactImageProvider.ts`): Das SDK kennt keinen Mehrbild-Parameter
|
|
4594
|
-
* (
|
|
4801
|
+
* (the Flow SDK host contract, CONVERGE-Fundstelle „4 Varianten gleichzeitig").
|
|
4595
4802
|
* Teilfehler verwerfen nichts: Bricht der k-te Aufruf ab, werden die ersten
|
|
4596
4803
|
* k-1 Bilder zurückgegeben; nur wenn **kein** Bild zustande kam, wirft der
|
|
4597
4804
|
* Adapter.
|
|
@@ -4615,6 +4822,8 @@ interface CreateFlowSzenenViewPortOptions {
|
|
|
4615
4822
|
textPort?: TextGenerationPort;
|
|
4616
4823
|
/** Existing channel for tests or embedded hosts. Otherwise HF credentials are required. */
|
|
4617
4824
|
channel?: ElementEventChannel;
|
|
4825
|
+
readPromptConstructionTags?: () => Promise<readonly PromptConstructionTag[]>;
|
|
4826
|
+
readReferenceSentenceTags?: () => Promise<readonly ReferenceSentenceTag[]>;
|
|
4618
4827
|
namespace?: string;
|
|
4619
4828
|
token?: string;
|
|
4620
4829
|
context?: ContextChainPort;
|
|
@@ -4711,6 +4920,11 @@ declare function createBrowserTextGenerationPort(options?: CreateBrowserTextGene
|
|
|
4711
4920
|
* Providerantwort und leitet keine Runde ab. Er speichert, was er bekommt.
|
|
4712
4921
|
*/
|
|
4713
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
|
+
}>>;
|
|
4714
4928
|
listForShot(shotVersionId: string): Promise<QueryResult<readonly PromptRunRecord[]>>;
|
|
4715
4929
|
get(runId: string): Promise<QueryResult<PromptRunRecord | null>>;
|
|
4716
4930
|
/** Legt den fertigen Lauf autoritativ ab. Ohne Bestätigung gibt es keinen Lauf. */
|
|
@@ -5000,6 +5214,7 @@ interface SelectableTargetModel {
|
|
|
5000
5214
|
* Kombinationen trifft `executableImageModels()`, nicht diese Datei.
|
|
5001
5215
|
*/
|
|
5002
5216
|
executionProfiles: readonly unknown[];
|
|
5217
|
+
supportedControlInputs?: readonly string[];
|
|
5003
5218
|
/** Glied der Kette, auf dem der Treffer lag. `0` = Arbeitskontext. */
|
|
5004
5219
|
chainIndex: number;
|
|
5005
5220
|
}
|
|
@@ -5449,6 +5664,91 @@ declare function noticeFor(ergebnis: {
|
|
|
5449
5664
|
[k: string]: unknown;
|
|
5450
5665
|
}, was: string): Notice;
|
|
5451
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
|
+
|
|
5452
5752
|
interface SzenenViewProps {
|
|
5453
5753
|
port: SzenenViewPort;
|
|
5454
5754
|
/** Arbeitskontext. Die wirksame Kette löst der Port auf, nicht die View. */
|
|
@@ -5468,6 +5768,15 @@ interface SzenenViewProps {
|
|
|
5468
5768
|
fokus?: SzenenFokus | null;
|
|
5469
5769
|
/** Zurück dorthin, woher der Fokus kam. Fehlt, wenn es kein Zurück gibt. */
|
|
5470
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;
|
|
5471
5780
|
}
|
|
5472
5781
|
/** Das angesteuerte Ziel. Genau eines — nie beides und nie geraten. */
|
|
5473
5782
|
type SzenenFokus = {
|
|
@@ -5489,4 +5798,69 @@ type SzenenFokus = {
|
|
|
5489
5798
|
declare function areaForFokus(fokus: SzenenFokus): SzenenAreaId;
|
|
5490
5799
|
declare const SzenenView: React__default.FC<SzenenViewProps>;
|
|
5491
5800
|
|
|
5492
|
-
|
|
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 };
|