@rslsp1/fa-app-tools 7.0.1 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-B2YV4TNI.mjs → chunk-HUGUH4VB.mjs} +704 -46
- package/dist/index.d.mts +26 -4
- package/dist/index.d.ts +26 -4
- package/dist/index.js +654 -101
- package/dist/index.mjs +25 -55
- package/dist/szenen.d.mts +894 -301
- package/dist/szenen.d.ts +894 -301
- package/dist/szenen.js +879 -70
- package/dist/szenen.mjs +162 -3
- package/package.json +6 -2
package/dist/szenen.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Z as PublishFinding, ac as SchemaError, Y as PublishCheckResult, aj as SzenenElementType, a2 as ReferenceResolver, ap as TargetModelResolution,
|
|
1
|
+
import { I as ElementSnapshot, Z as PublishFinding, ac as SchemaError, Y as PublishCheckResult, aj as SzenenElementType, a2 as ReferenceResolver, ap as TargetModelResolution, w as DerivationInputMode, M as ImageProvenance, s as DerivationFailure, n as DerivableType, N as NotDerivable, p as DerivationConflict, u as DerivationFollowUp, B as DraftChainMeta, q as DerivationDiagnostic, o as DerivationAssessment, h as ContextChainPort, a as AuthoritativeSzenenStore, ai as SzenenElementStore, v as DerivationImage, al as SzenenQueries, ah as SzenenCommands, ar as UnusableProposal } from './storeContract-DNggXiZl.js';
|
|
2
2
|
export { A as ALL_PUBLISH_RULES, C as CHAIN_EDGES, b as CHAIN_LINK_FIELDS, c as CatalogueEntry, d as ChainLinkField, e as ChainTarget, f as ChainVerdict, g as CompiledSchemas, i as ContractCheck, j as ContractCheckResult, k as ContractRunResult, l as ContractViolation, m as CreateElementInput, D as DERIVABLE_TYPES, r as DerivationEnvelope, t as DerivationFailureClass, x as DerivationPolicyPayload, y as DerivationProposal, z as DraftChainLink, E as DraftFork, F as DraftRecord, G as ElementMetadata, H as ElementRecord, J as ElementStoreContractHarness, K as ElementVersionValidation, L as FindingSeverity, O as OptionalCommand, P as PROBE_VERSION_ID, Q as ParentRelation, R as PreferredHeadOutcome, S as PreferredHeadResolution, T as PreferredHeadSelection, U as PreferredHeadSource, V as ProjectionState, W as ProjectionStatus, X as PublishCheckInput, _ as PublishRejected, $ as PublishVersionInput, a0 as PublishedVersion, a1 as REFERENCE_FIELD, a3 as ResolvePreferredHeadOptions, a4 as ResolvedVersion, a5 as ReviseMetadataInput, a6 as STYLE_PAYLOAD, a7 as STYLE_PAYLOAD_V2, a8 as SZENEN_ELEMENT_TYPES, a9 as SceneDerivationInput, aa as SceneDerivationOutcome, ab as SceneDerivationOutput, ad as SchemaValidationResult, ae as SetPreferredHeadInput, af as StoreAuthority, ag as SzenenCommandResult, ak as SzenenProjection, am as TargetModelCandidate, an as TargetModelQueries, ao as TargetModelQuery, aq as UnsupportedSchemaError, as as VersionDag, at as VersionDagError, au as VersionNode, av as VersionParentLink, aw as WriteConflict, ax as WriteDraftInput, ay as assessDerivationResponse, az as buildDerivationSystemInstruction, aA as buildDerivationUserPrompt, aB as buildVersionDag, aC as checkChainTargets, aD as checkDerivationResponse, aE as checkDraftChainMeta, aF as collectVersionRefs, aG as compileSchemas, aH as createSimulationSceneDerivationPort, aI as describeTargetModelFailure, aJ as elementStoreContractChecks, aK as formatSchemaErrors, aL as getSzenenSchemas, aM as isOk, aN as isProjectionCurrent, aO as linkFor, aP as parseDerivationResponse, aQ as preferredVersionId, aR as resolvePreferredHead, aS as resolveTargetModelOver, aT as resolverFromQueries, aU as runElementStoreContract, aV as runPublishChecks, aW as runSceneDerivation, aX as showChain, aY as validateAgainst, aZ as validateDerivationInput, a_ as validateElementVersion, a$ as validatePayload, b0 as withReference } from './storeContract-DNggXiZl.js';
|
|
3
3
|
import { T as TextGenerationPort, Q as QueryResult, C as CommandResult } from './contracts-DdYOMBl9.js';
|
|
4
4
|
export { S as SIMULATION_PROVIDER, c as TextGenerationRequest, d as TextGenerationResult, g as createFakeTextGenerationPort, h as createSimulationTextGenerationPort, s as simulatedAnswerFor } from './contracts-DdYOMBl9.js';
|
|
@@ -6,6 +6,362 @@ import { g as HFStateSnapshot, F as FlowGenerateText } from './hfEventTypes-fAdA
|
|
|
6
6
|
export { C as CreateFlowTextGenerationPortOptions, r as createFlowTextGenerationPort } from './hfEventTypes-fAdA-0A9.js';
|
|
7
7
|
import React__default from 'react';
|
|
8
8
|
|
|
9
|
+
/** Präfix aller Events dieser Domain im gemeinsamen HF-Event-Kanal. */
|
|
10
|
+
declare const SZENEN_EVENT_PREFIX = "szenen.";
|
|
11
|
+
declare const SZENEN_EVENT_TYPES: {
|
|
12
|
+
readonly elementCreated: "szenen.element_created";
|
|
13
|
+
readonly elementRetired: "szenen.element_retired";
|
|
14
|
+
readonly metadataRevised: "szenen.element_metadata_revised";
|
|
15
|
+
readonly draftWritten: "szenen.element_draft_written";
|
|
16
|
+
readonly versionPublished: "szenen.element_version_published";
|
|
17
|
+
readonly preferredHeadSelected: "szenen.element_preferred_head_selected";
|
|
18
|
+
/**
|
|
19
|
+
* Ein Prompt-Ableitungslauf — Stufe 3, S6 (E-3b).
|
|
20
|
+
*
|
|
21
|
+
* Ein Lauf ist **kein Element**: keine Version, kein DAG, nicht
|
|
22
|
+
* referenzierbar. Er liegt trotzdem im selben autoritativen Log, weil er
|
|
23
|
+
* append-only und unveränderlich ist — genau die Form, die ein Ereignislog
|
|
24
|
+
* nativ trägt — und weil MySQL sonst zu einem zweiten fachlichen Speicher
|
|
25
|
+
* würde, den D-62 abgeschafft hat.
|
|
26
|
+
*
|
|
27
|
+
* Der Elementreducer ignoriert diesen Typ (`default:`-Zweig); die Läufe
|
|
28
|
+
* werden mit `collectPromptRuns` gelesen.
|
|
29
|
+
*/
|
|
30
|
+
readonly promptRunRecorded: "szenen.prompt_run_recorded";
|
|
31
|
+
/**
|
|
32
|
+
* Ein Szenen-Rekonstruktionslauf — Stufe 6.5 (D-71).
|
|
33
|
+
*
|
|
34
|
+
* Derselbe Bauplan und dieselbe Begründung wie beim Prompt-Lauf: append-only,
|
|
35
|
+
* unveränderlich, **kein Element** — keine Version, kein DAG, nicht
|
|
36
|
+
* referenzierbar. Er liegt im autoritativen Log, weil er genau die Form hat,
|
|
37
|
+
* die ein Ereignislog nativ trägt.
|
|
38
|
+
*
|
|
39
|
+
* Bewusst ein zweiter Lauftyp und **kein** gemeinsamer: Ein Prompt-Lauf geht
|
|
40
|
+
* von einer veröffentlichten Shot-Version aus, ein Rekonstruktionslauf von
|
|
41
|
+
* einer Referenz, die noch zu gar keinem Element gehört. Sie in einen Typ zu
|
|
42
|
+
* zwingen hieße, beiden ihre Herkunftsfelder zu nehmen.
|
|
43
|
+
*
|
|
44
|
+
* Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig).
|
|
45
|
+
*/
|
|
46
|
+
readonly sceneDerivationRecorded: "szenen.scene_derivation_recorded";
|
|
47
|
+
/**
|
|
48
|
+
* Ein ausdrücklich ausgelöster Lauf gegen den **echten** Provider.
|
|
49
|
+
*
|
|
50
|
+
* Er kostet Geld und wird deshalb nie beiläufig gefahren. Das Ereignis hält
|
|
51
|
+
* fest, was tatsächlich bezahlt wurde: wie viele Modellaufrufe, mit welchem
|
|
52
|
+
* Ausgang, in welcher Umgebung und von wem ausgelöst.
|
|
53
|
+
*
|
|
54
|
+
* Es ersetzt **nicht** die einzelnen Läufe — die werden regulär als
|
|
55
|
+
* `prompt_run_recorded` bzw. `scene_derivation_recorded` protokolliert. Es
|
|
56
|
+
* ist die Klammer darüber und der Grund, warum jemand später nachlesen kann,
|
|
57
|
+
* ob der Durchstich stattgefunden hat, ohne ihn erneut zu bezahlen.
|
|
58
|
+
*/
|
|
59
|
+
readonly providerCheckRecorded: "szenen.provider_check_recorded";
|
|
60
|
+
/**
|
|
61
|
+
* Eine geprüfte Arbeitsfassung eines fehlgeschlagenen Rekonstruktionslaufs —
|
|
62
|
+
* Stufe 6.6 (D-99).
|
|
63
|
+
*
|
|
64
|
+
* Sie ist **kein Lauf**: kein Provideraufruf, keine Kosten, kein Zielmodell.
|
|
65
|
+
* Sie ist die lokal geprüfte Korrektur eines bereits bezahlten Ergebnisses
|
|
66
|
+
* und zeigt über `run_id` auf ihren Ursprung. Der `raw_output` jenes Laufs
|
|
67
|
+
* bleibt unangetastet — deshalb ein eigenes Ereignis statt einer Änderung am
|
|
68
|
+
* bestehenden, das es ohnehin nicht geben dürfte (D-71).
|
|
69
|
+
*
|
|
70
|
+
* Mehrere Rettungen zum selben Lauf sind zulässig und erwartet: Jede
|
|
71
|
+
* Korrekturrunde ist nachvollziehbare Arbeit, kein Update der vorigen.
|
|
72
|
+
*
|
|
73
|
+
* Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig).
|
|
74
|
+
*/
|
|
75
|
+
readonly sceneDerivationRecoveryRecorded: "szenen.scene_derivation_recovery_recorded";
|
|
76
|
+
/**
|
|
77
|
+
* Ein bezahlter Bildgenerierungsauftrag beginnt — Stufe 6.7 (D-119).
|
|
78
|
+
*
|
|
79
|
+
* Append-only wie jedes andere Ereignis dieser Domain, geschrieben **vor**
|
|
80
|
+
* dem Provideraufruf. Es traegt **keine Bilddaten** — nur die Kennung, mit
|
|
81
|
+
* der die spaetere kanonische Batch-Persistenz (`saveGeneratedAssetBatch`,
|
|
82
|
+
* Teil C) wiedergefunden wird. Ein Crash zwischen diesem Ereignis und
|
|
83
|
+
* `imageGenerationFinished` loescht den Auftrag nicht: Er bleibt lesbar,
|
|
84
|
+
* ohne dass irgendein automatischer Retry darauf reagiert.
|
|
85
|
+
*
|
|
86
|
+
* Gilt nur fuer `generated_in_app` — ein externer Import (D-108/D-117)
|
|
87
|
+
* ruft keinen Provider und braucht deshalb kein `started`; sein Nachweis
|
|
88
|
+
* ist das gespeicherte Library-Item selbst.
|
|
89
|
+
*
|
|
90
|
+
* Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig); gelesen
|
|
91
|
+
* wird mit `collectImageGenerationOrders`.
|
|
92
|
+
*/
|
|
93
|
+
readonly imageGenerationStarted: "szenen.image_generation_started";
|
|
94
|
+
/**
|
|
95
|
+
* Derselbe Bildgenerierungsauftrag endet — Stufe 6.7 (D-119).
|
|
96
|
+
*
|
|
97
|
+
* Erscheint erst **nach** der kanonischen Batch-Persistenz: Ein technischer
|
|
98
|
+
* Fehler zwischen Provideraufruf und Speichern darf nie als `succeeded`
|
|
99
|
+
* protokolliert werden, nur weil der Provider geantwortet hat. Traegt
|
|
100
|
+
* ebenfalls keine Bilddaten — nur Status, Zaehlung und die Item-Kennung,
|
|
101
|
+
* falls eine entstand.
|
|
102
|
+
*/
|
|
103
|
+
readonly imageGenerationFinished: "szenen.image_generation_finished";
|
|
104
|
+
/**
|
|
105
|
+
* Ein Bild-Batch ist kanonisch gespeichert — Stufe 6.9.2, Gate D
|
|
106
|
+
* (D-6.9.2-6).
|
|
107
|
+
*
|
|
108
|
+
* Erscheint erst, **nachdem** jedes Bild des Batches im Bildbestand liegt
|
|
109
|
+
* (`hfUploadImage` + `image_added`, dieselbe Reihenfolge wie
|
|
110
|
+
* `hfImageLibrary.putImage`) — kein Bild gilt als vorhanden, bevor sein
|
|
111
|
+
* Upload bestätigt ist (R3). Trägt bewusst **keine Bilddaten**, nur den
|
|
112
|
+
* vollständigen Metadatennachweis, den `listBatchesForPromptRun()` /
|
|
113
|
+
* `getBatch()` ohne MySQL rekonstruieren können müssen: `item_id`,
|
|
114
|
+
* `prompt_run_id`, `generation_batch_id`, `source_kind`, je Bild
|
|
115
|
+
* `position`, `media_ref`, `asset_id`, `model`, `seed`, `width`/`height`.
|
|
116
|
+
*
|
|
117
|
+
* Additiv wie jedes Ereignis dieser Domain: ein zweiter Batch desselben
|
|
118
|
+
* Laufs ist ein **weiteres** Ereignis mit derselben `item_id`, nicht eine
|
|
119
|
+
* Änderung am ersten (D-113/D-121 — ein Lauf bleibt ein Item). Gilt für
|
|
120
|
+
* `generated_in_app` **und** `external_import` — nur `source_kind`
|
|
121
|
+
* unterscheidet die beiden Schreiber (D-116/D-117/D-120).
|
|
122
|
+
*
|
|
123
|
+
* Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig); gelesen
|
|
124
|
+
* wird mit `collectImageBatches` (`imageBatchStore.ts`).
|
|
125
|
+
*/
|
|
126
|
+
readonly imageBatchPersisted: "szenen.image_batch_persisted";
|
|
127
|
+
/**
|
|
128
|
+
* Ein vorbereiteter Promptvorgang — der Durchstich „Szene → ChatGPT → Lauf".
|
|
129
|
+
*
|
|
130
|
+
* Der bestehende Promptpfad ruft das Modell selbst
|
|
131
|
+
* (`runPromptDerivation()`); ein aufrufendes Chatmodell formuliert dagegen
|
|
132
|
+
* **zwischen** zwei Werkzeugaufrufen. Damit zerfaellt der eine Vorgang in
|
|
133
|
+
* zwei, und der zweite braucht genau den Stand, den der erste eingefroren
|
|
134
|
+
* hat — sonst loeste der Abschluss die inzwischen geaenderte Szene neu auf
|
|
135
|
+
* und der Lauf behauptete eine Herkunft, die er nicht hat (D-22).
|
|
136
|
+
*
|
|
137
|
+
* Deshalb ein eigenes Ereignis und **kein** fluechtiger Prozesszustand: Der
|
|
138
|
+
* Snapshot ueberlebt Neustart, Hostwechsel und Sitzungsende, weil er im
|
|
139
|
+
* selben autoritativen Log liegt wie der Lauf, der daraus entsteht.
|
|
140
|
+
*
|
|
141
|
+
* Der Elementreducer ignoriert diesen Typ (`default:`-Zweig); gelesen wird
|
|
142
|
+
* mit `collectPromptOperations` (`scenePromptOperation.ts`).
|
|
143
|
+
*/
|
|
144
|
+
readonly promptOperationPrepared: "szenen.prompt_operation_prepared";
|
|
145
|
+
/**
|
|
146
|
+
* Ein Bildauftrag wartet auf einen ausfuehrenden Flow-Host.
|
|
147
|
+
*
|
|
148
|
+
* Die vorhandene Auftragshistorie (`imageGenerationStarted`) beginnt
|
|
149
|
+
* **unmittelbar vor** dem Provideraufruf und kennt deshalb keinen wartenden
|
|
150
|
+
* Auftrag. Genau der entsteht hier: Ein Chatmodell beauftragt ueber MCP ein
|
|
151
|
+
* Bild, der Auftrag wird dauerhaft abgelegt, und der Werkzeugaufruf endet
|
|
152
|
+
* sofort mit seiner Kennung — er haelt keine Antwort minutenlang offen.
|
|
153
|
+
*
|
|
154
|
+
* Traegt **keinen** Prompt: Der steht im referenzierten Lauf, und ihn hier
|
|
155
|
+
* zu kopieren waere eine zweite Wahrheit ueber denselben eingefrorenen Text
|
|
156
|
+
* (D-103).
|
|
157
|
+
*/
|
|
158
|
+
readonly imageJobRequested: "szenen.image_job_requested";
|
|
159
|
+
/**
|
|
160
|
+
* Ein Flow-Host beansprucht einen wartenden Bildauftrag.
|
|
161
|
+
*
|
|
162
|
+
* Ein append-only Log kennt kein Lock: Zwei Tabs koennen beide anhaengen.
|
|
163
|
+
* Deshalb ist die Uebernahme **nicht** der Append, sondern das Ergebnis
|
|
164
|
+
* einer deterministischen Schiedsregel darueber (`winningClaimOf`) — der
|
|
165
|
+
* erste Anspruch in Logreihenfolge gewinnt, und jeder Host liest nach
|
|
166
|
+
* seinem Append erneut, bevor er einen bezahlten Provideraufruf startet.
|
|
167
|
+
* Ein unterlegener Anspruch bleibt sichtbar stehen; er wird nicht geloescht,
|
|
168
|
+
* weil das Log das nicht kann und weil der Versuch ein Beleg ist.
|
|
169
|
+
*/
|
|
170
|
+
readonly imageJobClaimed: "szenen.image_job_claimed";
|
|
171
|
+
/**
|
|
172
|
+
* Der Bildauftrag ist erledigt — mit dem Ausgang, den der Host gesehen hat.
|
|
173
|
+
*
|
|
174
|
+
* Getrennt von `imageGenerationFinished`: Jenes gehoert zum bezahlten
|
|
175
|
+
* Provideraufruf, dieses zur Zustellung. Ein Auftrag kann fehlschlagen,
|
|
176
|
+
* **bevor** ein Provider gerufen wurde (abgelehntes Profil), und dann gibt
|
|
177
|
+
* es kein `imageGenerationFinished`, das den Wartenden erloesen wuerde.
|
|
178
|
+
*/
|
|
179
|
+
readonly imageJobSettled: "szenen.image_job_settled";
|
|
180
|
+
};
|
|
181
|
+
/** Ein einzelnes Bild innerhalb von `ImageBatchPersistedPayload` (D-6.9.2-6). */
|
|
182
|
+
interface ImageBatchPersistedImage {
|
|
183
|
+
position: number;
|
|
184
|
+
/** Im aktuellen Host auflösbarer Locator — hier die HF-Bildkennung (D-93). */
|
|
185
|
+
media_ref: string;
|
|
186
|
+
/** Fachlich stabile Identität, soweit bekannt — hier identisch mit `media_ref` (D-118). */
|
|
187
|
+
asset_id?: string;
|
|
188
|
+
/**
|
|
189
|
+
* Der **bestätigte** MIME-Typ der abgelegten Datei — Review 2026-08-18 §5 P2.
|
|
190
|
+
*
|
|
191
|
+
* Additiv nachgetragen, weil der Batch ihn beim Schreiben kennt, ihn aber
|
|
192
|
+
* nicht führte: Der Lesepfad musste die Dateiendung deshalb über zwei
|
|
193
|
+
* Varianten erraten. Geraten wird nichts mehr — der Typ stammt aus den
|
|
194
|
+
* tatsächlichen Bildbytes (`typAusBytes`), nicht aus einer Annahme, und
|
|
195
|
+
* bestimmt den Pfad `images/<id>.<ext>`, unter dem die Datei liegt.
|
|
196
|
+
*
|
|
197
|
+
* Optional, weil ältere Ereignisse ihn nicht tragen; für die fällt der
|
|
198
|
+
* Lesepfad auf den Bestandseintrag zurück.
|
|
199
|
+
*/
|
|
200
|
+
mime_type?: string | null;
|
|
201
|
+
model?: string | null;
|
|
202
|
+
/** Nur gesetzt, wenn der Provider ihn tatsächlich zurückliefert (D-107). */
|
|
203
|
+
seed?: number | null;
|
|
204
|
+
width?: number | null;
|
|
205
|
+
height?: number | null;
|
|
206
|
+
}
|
|
207
|
+
/** Nutzlast von `imageBatchPersisted` — geschrieben nach bestätigtem Bild-Upload. */
|
|
208
|
+
interface ImageBatchPersistedPayload {
|
|
209
|
+
item_id: string;
|
|
210
|
+
prompt_run_id: string;
|
|
211
|
+
generation_batch_id: string;
|
|
212
|
+
source_kind: 'generated_in_app' | 'external_import';
|
|
213
|
+
title: string;
|
|
214
|
+
images: readonly ImageBatchPersistedImage[];
|
|
215
|
+
created_at: string;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Ein Event, wie der Reducer es sieht.
|
|
219
|
+
*
|
|
220
|
+
* Nur `type`, `payload` und `clientId` sind fachlich. `ts` dient allein der
|
|
221
|
+
* **Lesereihenfolge** des Logs und darf nie eine fachliche Vorrangfrage
|
|
222
|
+
* entscheiden — sonst wäre es `MAX(ts)` durch die Hintertür (§2.5, R-3).
|
|
223
|
+
*/
|
|
224
|
+
interface ElementEvent<P = unknown> {
|
|
225
|
+
type: string;
|
|
226
|
+
payload: P;
|
|
227
|
+
clientId: string;
|
|
228
|
+
ts: number;
|
|
229
|
+
}
|
|
230
|
+
/** Ein Befund beim Falten: etwas ist widersprüchlich, aber der Zustand bleibt lesbar. */
|
|
231
|
+
interface ReducerFinding {
|
|
232
|
+
code: 'unbekanntes_element' | 'version_doppelt' | 'version_veraendert' | 'draft_fork' | 'metadata_fork' | 'preferred_head_fork' | 'element_doppelt';
|
|
233
|
+
element_id: string;
|
|
234
|
+
message: string;
|
|
235
|
+
}
|
|
236
|
+
/** Abgeleiteter Zustand über alle Elemente. */
|
|
237
|
+
interface ElementStoreState {
|
|
238
|
+
elements: ReadonlyMap<string, ElementSnapshot>;
|
|
239
|
+
findings: readonly ReducerFinding[];
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Faltet den Event-Log zum Elementzustand.
|
|
243
|
+
*
|
|
244
|
+
* Der Reducer ist rein: gleiche Events, gleicher Zustand — unabhängig von der
|
|
245
|
+
* Eingabereihenfolge.
|
|
246
|
+
*
|
|
247
|
+
* @param events Alle bekannten Szenen-Events; fremde Typen werden übergangen.
|
|
248
|
+
*/
|
|
249
|
+
declare function reduceElementEvents(events: readonly ElementEvent[]): ElementStoreState;
|
|
250
|
+
/** Aktuelle Revision des Entwurfs. `0`, wenn keiner existiert. */
|
|
251
|
+
declare function draftRevisionOf(snapshot: ElementSnapshot | null | undefined): number;
|
|
252
|
+
/**
|
|
253
|
+
* Quellrevision eines gelesenen Event-Logs (D-62 §2.4, D-63 §1.1.2).
|
|
254
|
+
*
|
|
255
|
+
* Die Projektion darf sich nur dann `current` nennen, wenn sie belegen kann,
|
|
256
|
+
* **bis wohin** sie reicht. Dieser Beleg ist die Quellrevision, und sie muss
|
|
257
|
+
* zwei Eigenschaften haben: aus dem Log allein berechenbar (sonst wäre sie eine
|
|
258
|
+
* zweite Buchführung) und für zwei verschiedene Logstände verschieden.
|
|
259
|
+
*
|
|
260
|
+
* Beides leistet `Anzahl@größter-Zeitstempel`. Der Log ist append-only — es
|
|
261
|
+
* verschwindet nie ein Event —, also wächst die Anzahl bei jedem Schreibvorgang.
|
|
262
|
+
* Der Zeitstempel kommt dazu, weil er den Stand für einen Menschen lesbar macht;
|
|
263
|
+
* entscheidend ist die Anzahl.
|
|
264
|
+
*
|
|
265
|
+
* Bewusst **kein** Hash über die Payloads: der wäre teurer und würde
|
|
266
|
+
* Gleichheit über die Zeit versprechen, die der Log ohnehin schon garantiert.
|
|
267
|
+
* Und bewusst hier, nicht im Server: der Projektor rechnet damit, und wer den
|
|
268
|
+
* Stand prüfen will, soll dieselbe Rechnung fahren (R-2).
|
|
269
|
+
*/
|
|
270
|
+
declare function logRevisionOf(events: readonly ElementEvent[]): string;
|
|
271
|
+
/** Aktuelle Revision der Preferred-Head-Auswahl eines Kontexts. `0`, wenn keine existiert. */
|
|
272
|
+
declare function preferredHeadRevisionOf(events: readonly ElementEvent[], elementId: string, contextId: string): number;
|
|
273
|
+
|
|
274
|
+
/** Aktuelle Fassung des Dateiformats. */
|
|
275
|
+
declare const SZENEN_SNAPSHOT_SCHEMA_VERSION = 1;
|
|
276
|
+
/** Namenspräfix des Snapshots im Namensraum bzw. im Dateilog. */
|
|
277
|
+
declare const SZENEN_SNAPSHOT_PREFIX = "szenen-state-";
|
|
278
|
+
/** Dateiname des Snapshots in einem dateigestützten Log (dort gibt es nur einen). */
|
|
279
|
+
declare const SZENEN_SNAPSHOT_FILE = "szenen-state.json";
|
|
280
|
+
/**
|
|
281
|
+
* Was ein Snapshot über die von ihm aufgenommenen Ereignisse aussagt.
|
|
282
|
+
*
|
|
283
|
+
* Redundant zu `events` — und genau deshalb da: Stimmen `count` und `max_ts`
|
|
284
|
+
* nicht mit dem Inhalt überein, ist die Datei beschädigt, und das muss laut
|
|
285
|
+
* auffallen statt eine falsche Revision zu erzeugen (Regel 4).
|
|
286
|
+
*/
|
|
287
|
+
interface SzenenSnapshotConsumed {
|
|
288
|
+
count: number;
|
|
289
|
+
max_ts: number;
|
|
290
|
+
/**
|
|
291
|
+
* Die Dateinamen (ohne Verzeichnis), aus denen dieser Snapshot entstand.
|
|
292
|
+
*
|
|
293
|
+
* **Warum nicht der Zeitstempel als Schnitt.** Naheliegend waere „alles mit
|
|
294
|
+
* `ts > consumed.max_ts` ist neu" — dieselbe Regel, mit der die FA App gegen
|
|
295
|
+
* `consolidatedAt` filtert. Sie ist hier aber **falsch**: Beide Kanaele
|
|
296
|
+
* vergeben `ts = Math.max(wallTs, letzterTs)`, also *monoton*, aber nicht
|
|
297
|
+
* *streng* monoton. Zwei Ereignisse derselben Millisekunde tragen denselben
|
|
298
|
+
* Zeitstempel; getrennt werden sie ueber die laufende Nummer im Dateinamen.
|
|
299
|
+
* Nimmt der Lauf das eine auf und wird das andere unmittelbar danach
|
|
300
|
+
* geschrieben, verwuerfe ein `ts >`-Schnitt das zweite fuer immer — genau der
|
|
301
|
+
* stille Datenverlust, gegen den D-136 antritt. Gefunden vom Dateikanal-Test.
|
|
302
|
+
*
|
|
303
|
+
* Der Dateiname ist dagegen eindeutig, und er ist in beiden Kanaelen
|
|
304
|
+
* derselbe: `createFileEventChannel` schreibt ausdruecklich dieselben Namen
|
|
305
|
+
* wie `writeHFEvent` (`<ts>_<seq><uuid>.json`).
|
|
306
|
+
*/
|
|
307
|
+
paths: readonly string[];
|
|
308
|
+
}
|
|
309
|
+
interface SzenenSnapshot {
|
|
310
|
+
schema_version: number;
|
|
311
|
+
consumed: SzenenSnapshotConsumed;
|
|
312
|
+
events: readonly ElementEvent[];
|
|
313
|
+
}
|
|
314
|
+
/** Dateiname eines Snapshots, der bis `maxTs` reicht. */
|
|
315
|
+
declare function szenenSnapshotFilename(maxTs: number): string;
|
|
316
|
+
/** Erkennt einen Snapshot-Dateinamen — nicht den ganzen Pfad. */
|
|
317
|
+
declare function istSzenenSnapshotDatei(name: string): boolean;
|
|
318
|
+
/**
|
|
319
|
+
* Baut einen Snapshot aus dem bisherigen Snapshot und den neu aufgenommenen
|
|
320
|
+
* Ereignissen.
|
|
321
|
+
*
|
|
322
|
+
* Die Reihenfolge ist die Lesereihenfolge des Logs: erst das Ältere. Mehrere
|
|
323
|
+
* Faltungen entscheiden „der erste gilt" (`collectPromptRuns`,
|
|
324
|
+
* `collectImageGenerationOrders`), deshalb ist sie fachlich und nicht kosmetisch.
|
|
325
|
+
*/
|
|
326
|
+
declare function buildSzenenSnapshot(base: SzenenSnapshot | null, neue: readonly ElementEvent[], neuePfade?: readonly string[]): SzenenSnapshot;
|
|
327
|
+
/**
|
|
328
|
+
* Liest einen Snapshot aus geparstem JSON — laut, nie tolerant.
|
|
329
|
+
*
|
|
330
|
+
* Ein halb gelesener Snapshot wäre schlimmer als gar keiner: Er machte die
|
|
331
|
+
* Quellrevision kleiner, als sie ist, und damit liefe die monotone
|
|
332
|
+
* Projektionsschranke aus PR 341 rückwärts. Also `throw`, kein Default
|
|
333
|
+
* (Regel 4).
|
|
334
|
+
*/
|
|
335
|
+
declare function parseSzenenSnapshot(raw: unknown, herkunft: string): SzenenSnapshot;
|
|
336
|
+
/** Das Ergebnis eines Lesevorgangs „Snapshot + ausstehende Ereignisse". */
|
|
337
|
+
interface SzenenLeseErgebnis {
|
|
338
|
+
events: readonly ElementEvent[];
|
|
339
|
+
/**
|
|
340
|
+
* Ausstehende Ereignisse, die der Snapshot bereits enthaelt.
|
|
341
|
+
*
|
|
342
|
+
* Regelfall `0`. Groesser wird es, wenn ein Archivierungs-Batch scheiterte —
|
|
343
|
+
* der Lauf laesst solche Dateien ausdruecklich in `events/` liegen. Sie hier
|
|
344
|
+
* mitzuzaehlen ergaebe eine zu grosse Revision und Doppeleintraege in den
|
|
345
|
+
* Faltungen; deshalb werden sie am Schnitt verworfen und **gezaehlt**, damit
|
|
346
|
+
* eine unerwartete Zahl auffaellt statt zu verschwinden.
|
|
347
|
+
*/
|
|
348
|
+
bereitsImSnapshot: number;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Fuegt Snapshot und ausstehende Ereignisse zu dem zusammen, was ein Kanal
|
|
352
|
+
* zurueckgibt.
|
|
353
|
+
*
|
|
354
|
+
* **Der Schnitt liegt nicht hier**, sondern dort, wo die Dateinamen bekannt
|
|
355
|
+
* sind: Ein Leser siebt seine Dateien vorher ueber `istBereitsAufgenommen`
|
|
356
|
+
* bzw. `aufgenommeneDateien` aus. Diese Funktion setzt nur noch zusammen —
|
|
357
|
+
* Snapshot zuerst, denn das ist die Lesereihenfolge des Logs, und mehrere
|
|
358
|
+
* Faltungen entscheiden „der erste gilt".
|
|
359
|
+
*
|
|
360
|
+
* @param bereitsImSnapshot Wie viele ausstehende Ereignisse der Aufrufer beim
|
|
361
|
+
* Aussieben verworfen hat. Nur zur Meldung.
|
|
362
|
+
*/
|
|
363
|
+
declare function mergeSnapshotAndPending(snapshot: SzenenSnapshot | null, pending: readonly ElementEvent[], bereitsImSnapshot?: number): SzenenLeseErgebnis;
|
|
364
|
+
|
|
9
365
|
/** Rohes JSON-Schema, wie es in der Spezifikation steht. */
|
|
10
366
|
type RawSchema = Record<string, unknown>;
|
|
11
367
|
/** Alle Typschemas der Domain, geschluesselt nach Dateiname wie in der Quelle. */
|
|
@@ -632,311 +988,99 @@ interface VisibilityNode {
|
|
|
632
988
|
state: string;
|
|
633
989
|
reason?: string;
|
|
634
990
|
confidence?: string;
|
|
635
|
-
assumption?: boolean;
|
|
636
|
-
}
|
|
637
|
-
interface PromptRunOutput {
|
|
638
|
-
positive: string;
|
|
639
|
-
negative: string | null;
|
|
640
|
-
/** Pflicht (D-55) — die Erläuterung für den Menschen. */
|
|
641
|
-
feedback: string;
|
|
642
|
-
visibility: {
|
|
643
|
-
basis: string;
|
|
644
|
-
nodes: readonly VisibilityNode[];
|
|
645
|
-
assumptions: readonly string[];
|
|
646
|
-
};
|
|
647
|
-
notes: readonly string[];
|
|
648
|
-
}
|
|
649
|
-
/** Warum ein Lauf gescheitert ist — die Klassen aus §4.9.1. */
|
|
650
|
-
type RunFailureClass = 'response_parse' | 'response_schema' | 'safety_blocked' | 'finish_reason' | 'empty_content' | 'provider_error';
|
|
651
|
-
interface RunFailure {
|
|
652
|
-
class: RunFailureClass;
|
|
653
|
-
message: string;
|
|
654
|
-
provider_detail?: unknown;
|
|
655
|
-
}
|
|
656
|
-
/**
|
|
657
|
-
* Ergebnis eines Laufs — **beide Ausgänge werden gespeichert**.
|
|
658
|
-
*
|
|
659
|
-
* Ein Fehlerlauf ist der Nachweis, dass eine bestimmte Kombination beim
|
|
660
|
-
* Provider anstößt (D-23 §6). Ihn zu verwerfen hieße, genau diese Information
|
|
661
|
-
* zu vernichten.
|
|
662
|
-
*/
|
|
663
|
-
type PromptRunOutcome = {
|
|
664
|
-
status: 'succeeded';
|
|
665
|
-
output: PromptRunOutput;
|
|
666
|
-
raw_output: string;
|
|
667
|
-
model_id: string;
|
|
668
|
-
provider: string;
|
|
669
|
-
} | {
|
|
670
|
-
status: 'failed';
|
|
671
|
-
failure: RunFailure;
|
|
672
|
-
raw_output: string | null;
|
|
673
|
-
model_id: string;
|
|
674
|
-
provider: string;
|
|
675
|
-
};
|
|
676
|
-
/**
|
|
677
|
-
* Der Systemprompt des Renderers.
|
|
678
|
-
*
|
|
679
|
-
* Bewusst als eigene Funktion und mitgespeichert: D-22 verlangt, dass ein Lauf
|
|
680
|
-
* einfriert, unter welchen Annahmen er entstand — der Systemprompt gehört dazu.
|
|
681
|
-
* Ändert er sich, ist an einem alten Lauf noch erkennbar, was damals galt.
|
|
682
|
-
*/
|
|
683
|
-
declare function buildSystemInstruction(input: RendererInput): string;
|
|
684
|
-
/** Die Nutzernachricht: die Renderer-Eingabe als JSON (D-47). */
|
|
685
|
-
declare function buildUserPrompt(input: RendererInput): string;
|
|
686
|
-
/**
|
|
687
|
-
* Löst das JSON aus dem Text.
|
|
688
|
-
*
|
|
689
|
-
* Bewusst **ohne** die für Prosa gedachte Bereinigung aus `cleanAiResponse`
|
|
690
|
-
* (D-56): Sie ist für Fließtext gebaut und darf ein JSON-Dokument nicht
|
|
691
|
-
* anfassen. Erlaubt ist einzig, einen umschließenden Markdown-Codeblock zu
|
|
692
|
-
* entfernen — das ist keine Interpretation des Inhalts, sondern das Auspacken
|
|
693
|
-
* eines Umschlags.
|
|
694
|
-
*/
|
|
695
|
-
declare function parseRunResponse(raw: string): {
|
|
696
|
-
ok: true;
|
|
697
|
-
value: unknown;
|
|
698
|
-
} | {
|
|
699
|
-
ok: false;
|
|
700
|
-
message: string;
|
|
701
|
-
};
|
|
702
|
-
/**
|
|
703
|
-
* Prüft die geparste Antwort gegen ihr Schema **und** gegen die Pflichtdiagnosen.
|
|
704
|
-
*
|
|
705
|
-
* Handgeschrieben und nicht über die JSON-Schema-Registry: Die Registry führt
|
|
706
|
-
* die **Elementtypen** der Domain (`schemas/`), und die Antwort des Renderers
|
|
707
|
-
* ist kein Elementtyp. Sie dort einzuhängen hieße, den Schemasatz um etwas zu
|
|
708
|
-
* erweitern, das nie versioniert oder referenziert wird.
|
|
709
|
-
*/
|
|
710
|
-
declare function checkRunResponse(value: unknown, input: RendererInput): {
|
|
711
|
-
ok: true;
|
|
712
|
-
output: PromptRunOutput;
|
|
713
|
-
} | {
|
|
714
|
-
ok: false;
|
|
715
|
-
message: string;
|
|
716
|
-
};
|
|
717
|
-
/**
|
|
718
|
-
* Führt den Prompt-Ableitungslauf aus.
|
|
719
|
-
*
|
|
720
|
-
* Gibt **immer** ein Ergebnis zurück — `succeeded` oder `failed`. Ein
|
|
721
|
-
* technischer Ausfall des Ports (Netz, Konfiguration) wirft dagegen; er ist
|
|
722
|
-
* kein Lauf, sondern ein Betriebsfehler und darf nicht als „das Modell hat
|
|
723
|
-
* abgelehnt" gespeichert werden.
|
|
724
|
-
*/
|
|
725
|
-
declare function runPromptDerivation(input: RendererInput, port: TextGenerationPort): Promise<PromptRunOutcome & {
|
|
726
|
-
system_prompt: string;
|
|
727
|
-
}>;
|
|
728
|
-
|
|
729
|
-
/** Präfix aller Events dieser Domain im gemeinsamen HF-Event-Kanal. */
|
|
730
|
-
declare const SZENEN_EVENT_PREFIX = "szenen.";
|
|
731
|
-
declare const SZENEN_EVENT_TYPES: {
|
|
732
|
-
readonly elementCreated: "szenen.element_created";
|
|
733
|
-
readonly elementRetired: "szenen.element_retired";
|
|
734
|
-
readonly metadataRevised: "szenen.element_metadata_revised";
|
|
735
|
-
readonly draftWritten: "szenen.element_draft_written";
|
|
736
|
-
readonly versionPublished: "szenen.element_version_published";
|
|
737
|
-
readonly preferredHeadSelected: "szenen.element_preferred_head_selected";
|
|
738
|
-
/**
|
|
739
|
-
* Ein Prompt-Ableitungslauf — Stufe 3, S6 (E-3b).
|
|
740
|
-
*
|
|
741
|
-
* Ein Lauf ist **kein Element**: keine Version, kein DAG, nicht
|
|
742
|
-
* referenzierbar. Er liegt trotzdem im selben autoritativen Log, weil er
|
|
743
|
-
* append-only und unveränderlich ist — genau die Form, die ein Ereignislog
|
|
744
|
-
* nativ trägt — und weil MySQL sonst zu einem zweiten fachlichen Speicher
|
|
745
|
-
* würde, den D-62 abgeschafft hat.
|
|
746
|
-
*
|
|
747
|
-
* Der Elementreducer ignoriert diesen Typ (`default:`-Zweig); die Läufe
|
|
748
|
-
* werden mit `collectPromptRuns` gelesen.
|
|
749
|
-
*/
|
|
750
|
-
readonly promptRunRecorded: "szenen.prompt_run_recorded";
|
|
751
|
-
/**
|
|
752
|
-
* Ein Szenen-Rekonstruktionslauf — Stufe 6.5 (D-71).
|
|
753
|
-
*
|
|
754
|
-
* Derselbe Bauplan und dieselbe Begründung wie beim Prompt-Lauf: append-only,
|
|
755
|
-
* unveränderlich, **kein Element** — keine Version, kein DAG, nicht
|
|
756
|
-
* referenzierbar. Er liegt im autoritativen Log, weil er genau die Form hat,
|
|
757
|
-
* die ein Ereignislog nativ trägt.
|
|
758
|
-
*
|
|
759
|
-
* Bewusst ein zweiter Lauftyp und **kein** gemeinsamer: Ein Prompt-Lauf geht
|
|
760
|
-
* von einer veröffentlichten Shot-Version aus, ein Rekonstruktionslauf von
|
|
761
|
-
* einer Referenz, die noch zu gar keinem Element gehört. Sie in einen Typ zu
|
|
762
|
-
* zwingen hieße, beiden ihre Herkunftsfelder zu nehmen.
|
|
763
|
-
*
|
|
764
|
-
* Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig).
|
|
765
|
-
*/
|
|
766
|
-
readonly sceneDerivationRecorded: "szenen.scene_derivation_recorded";
|
|
767
|
-
/**
|
|
768
|
-
* Ein ausdrücklich ausgelöster Lauf gegen den **echten** Provider.
|
|
769
|
-
*
|
|
770
|
-
* Er kostet Geld und wird deshalb nie beiläufig gefahren. Das Ereignis hält
|
|
771
|
-
* fest, was tatsächlich bezahlt wurde: wie viele Modellaufrufe, mit welchem
|
|
772
|
-
* Ausgang, in welcher Umgebung und von wem ausgelöst.
|
|
773
|
-
*
|
|
774
|
-
* Es ersetzt **nicht** die einzelnen Läufe — die werden regulär als
|
|
775
|
-
* `prompt_run_recorded` bzw. `scene_derivation_recorded` protokolliert. Es
|
|
776
|
-
* ist die Klammer darüber und der Grund, warum jemand später nachlesen kann,
|
|
777
|
-
* ob der Durchstich stattgefunden hat, ohne ihn erneut zu bezahlen.
|
|
778
|
-
*/
|
|
779
|
-
readonly providerCheckRecorded: "szenen.provider_check_recorded";
|
|
780
|
-
/**
|
|
781
|
-
* Eine geprüfte Arbeitsfassung eines fehlgeschlagenen Rekonstruktionslaufs —
|
|
782
|
-
* Stufe 6.6 (D-99).
|
|
783
|
-
*
|
|
784
|
-
* Sie ist **kein Lauf**: kein Provideraufruf, keine Kosten, kein Zielmodell.
|
|
785
|
-
* Sie ist die lokal geprüfte Korrektur eines bereits bezahlten Ergebnisses
|
|
786
|
-
* und zeigt über `run_id` auf ihren Ursprung. Der `raw_output` jenes Laufs
|
|
787
|
-
* bleibt unangetastet — deshalb ein eigenes Ereignis statt einer Änderung am
|
|
788
|
-
* bestehenden, das es ohnehin nicht geben dürfte (D-71).
|
|
789
|
-
*
|
|
790
|
-
* Mehrere Rettungen zum selben Lauf sind zulässig und erwartet: Jede
|
|
791
|
-
* Korrekturrunde ist nachvollziehbare Arbeit, kein Update der vorigen.
|
|
792
|
-
*
|
|
793
|
-
* Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig).
|
|
794
|
-
*/
|
|
795
|
-
readonly sceneDerivationRecoveryRecorded: "szenen.scene_derivation_recovery_recorded";
|
|
796
|
-
/**
|
|
797
|
-
* Ein bezahlter Bildgenerierungsauftrag beginnt — Stufe 6.7 (D-119).
|
|
798
|
-
*
|
|
799
|
-
* Append-only wie jedes andere Ereignis dieser Domain, geschrieben **vor**
|
|
800
|
-
* dem Provideraufruf. Es traegt **keine Bilddaten** — nur die Kennung, mit
|
|
801
|
-
* der die spaetere kanonische Batch-Persistenz (`saveGeneratedAssetBatch`,
|
|
802
|
-
* Teil C) wiedergefunden wird. Ein Crash zwischen diesem Ereignis und
|
|
803
|
-
* `imageGenerationFinished` loescht den Auftrag nicht: Er bleibt lesbar,
|
|
804
|
-
* ohne dass irgendein automatischer Retry darauf reagiert.
|
|
805
|
-
*
|
|
806
|
-
* Gilt nur fuer `generated_in_app` — ein externer Import (D-108/D-117)
|
|
807
|
-
* ruft keinen Provider und braucht deshalb kein `started`; sein Nachweis
|
|
808
|
-
* ist das gespeicherte Library-Item selbst.
|
|
809
|
-
*
|
|
810
|
-
* Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig); gelesen
|
|
811
|
-
* wird mit `collectImageGenerationOrders`.
|
|
812
|
-
*/
|
|
813
|
-
readonly imageGenerationStarted: "szenen.image_generation_started";
|
|
814
|
-
/**
|
|
815
|
-
* Derselbe Bildgenerierungsauftrag endet — Stufe 6.7 (D-119).
|
|
816
|
-
*
|
|
817
|
-
* Erscheint erst **nach** der kanonischen Batch-Persistenz: Ein technischer
|
|
818
|
-
* Fehler zwischen Provideraufruf und Speichern darf nie als `succeeded`
|
|
819
|
-
* protokolliert werden, nur weil der Provider geantwortet hat. Traegt
|
|
820
|
-
* ebenfalls keine Bilddaten — nur Status, Zaehlung und die Item-Kennung,
|
|
821
|
-
* falls eine entstand.
|
|
822
|
-
*/
|
|
823
|
-
readonly imageGenerationFinished: "szenen.image_generation_finished";
|
|
824
|
-
/**
|
|
825
|
-
* Ein Bild-Batch ist kanonisch gespeichert — Stufe 6.9.2, Gate D
|
|
826
|
-
* (D-6.9.2-6).
|
|
827
|
-
*
|
|
828
|
-
* Erscheint erst, **nachdem** jedes Bild des Batches im Bildbestand liegt
|
|
829
|
-
* (`hfUploadImage` + `image_added`, dieselbe Reihenfolge wie
|
|
830
|
-
* `hfImageLibrary.putImage`) — kein Bild gilt als vorhanden, bevor sein
|
|
831
|
-
* Upload bestätigt ist (R3). Trägt bewusst **keine Bilddaten**, nur den
|
|
832
|
-
* vollständigen Metadatennachweis, den `listBatchesForPromptRun()` /
|
|
833
|
-
* `getBatch()` ohne MySQL rekonstruieren können müssen: `item_id`,
|
|
834
|
-
* `prompt_run_id`, `generation_batch_id`, `source_kind`, je Bild
|
|
835
|
-
* `position`, `media_ref`, `asset_id`, `model`, `seed`, `width`/`height`.
|
|
836
|
-
*
|
|
837
|
-
* Additiv wie jedes Ereignis dieser Domain: ein zweiter Batch desselben
|
|
838
|
-
* Laufs ist ein **weiteres** Ereignis mit derselben `item_id`, nicht eine
|
|
839
|
-
* Änderung am ersten (D-113/D-121 — ein Lauf bleibt ein Item). Gilt für
|
|
840
|
-
* `generated_in_app` **und** `external_import` — nur `source_kind`
|
|
841
|
-
* unterscheidet die beiden Schreiber (D-116/D-117/D-120).
|
|
842
|
-
*
|
|
843
|
-
* Der Elementreducer ignoriert auch diesen Typ (`default:`-Zweig); gelesen
|
|
844
|
-
* wird mit `collectImageBatches` (`imageBatchStore.ts`).
|
|
845
|
-
*/
|
|
846
|
-
readonly imageBatchPersisted: "szenen.image_batch_persisted";
|
|
847
|
-
};
|
|
848
|
-
/** Ein einzelnes Bild innerhalb von `ImageBatchPersistedPayload` (D-6.9.2-6). */
|
|
849
|
-
interface ImageBatchPersistedImage {
|
|
850
|
-
position: number;
|
|
851
|
-
/** Im aktuellen Host auflösbarer Locator — hier die HF-Bildkennung (D-93). */
|
|
852
|
-
media_ref: string;
|
|
853
|
-
/** Fachlich stabile Identität, soweit bekannt — hier identisch mit `media_ref` (D-118). */
|
|
854
|
-
asset_id?: string;
|
|
855
|
-
/**
|
|
856
|
-
* Der **bestätigte** MIME-Typ der abgelegten Datei — Review 2026-08-18 §5 P2.
|
|
857
|
-
*
|
|
858
|
-
* Additiv nachgetragen, weil der Batch ihn beim Schreiben kennt, ihn aber
|
|
859
|
-
* nicht führte: Der Lesepfad musste die Dateiendung deshalb über zwei
|
|
860
|
-
* Varianten erraten. Geraten wird nichts mehr — der Typ stammt aus den
|
|
861
|
-
* tatsächlichen Bildbytes (`typAusBytes`), nicht aus einer Annahme, und
|
|
862
|
-
* bestimmt den Pfad `images/<id>.<ext>`, unter dem die Datei liegt.
|
|
863
|
-
*
|
|
864
|
-
* Optional, weil ältere Ereignisse ihn nicht tragen; für die fällt der
|
|
865
|
-
* Lesepfad auf den Bestandseintrag zurück.
|
|
866
|
-
*/
|
|
867
|
-
mime_type?: string | null;
|
|
868
|
-
model?: string | null;
|
|
869
|
-
/** Nur gesetzt, wenn der Provider ihn tatsächlich zurückliefert (D-107). */
|
|
870
|
-
seed?: number | null;
|
|
871
|
-
width?: number | null;
|
|
872
|
-
height?: number | null;
|
|
873
|
-
}
|
|
874
|
-
/** Nutzlast von `imageBatchPersisted` — geschrieben nach bestätigtem Bild-Upload. */
|
|
875
|
-
interface ImageBatchPersistedPayload {
|
|
876
|
-
item_id: string;
|
|
877
|
-
prompt_run_id: string;
|
|
878
|
-
generation_batch_id: string;
|
|
879
|
-
source_kind: 'generated_in_app' | 'external_import';
|
|
880
|
-
title: string;
|
|
881
|
-
images: readonly ImageBatchPersistedImage[];
|
|
882
|
-
created_at: string;
|
|
883
|
-
}
|
|
884
|
-
/**
|
|
885
|
-
* Ein Event, wie der Reducer es sieht.
|
|
886
|
-
*
|
|
887
|
-
* Nur `type`, `payload` und `clientId` sind fachlich. `ts` dient allein der
|
|
888
|
-
* **Lesereihenfolge** des Logs und darf nie eine fachliche Vorrangfrage
|
|
889
|
-
* entscheiden — sonst wäre es `MAX(ts)` durch die Hintertür (§2.5, R-3).
|
|
890
|
-
*/
|
|
891
|
-
interface ElementEvent<P = unknown> {
|
|
892
|
-
type: string;
|
|
893
|
-
payload: P;
|
|
894
|
-
clientId: string;
|
|
895
|
-
ts: number;
|
|
991
|
+
assumption?: boolean;
|
|
896
992
|
}
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
993
|
+
interface PromptRunOutput {
|
|
994
|
+
positive: string;
|
|
995
|
+
negative: string | null;
|
|
996
|
+
/** Pflicht (D-55) — die Erläuterung für den Menschen. */
|
|
997
|
+
feedback: string;
|
|
998
|
+
visibility: {
|
|
999
|
+
basis: string;
|
|
1000
|
+
nodes: readonly VisibilityNode[];
|
|
1001
|
+
assumptions: readonly string[];
|
|
1002
|
+
};
|
|
1003
|
+
notes: readonly string[];
|
|
902
1004
|
}
|
|
903
|
-
/**
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
1005
|
+
/** Warum ein Lauf gescheitert ist — die Klassen aus §4.9.1. */
|
|
1006
|
+
type RunFailureClass = 'response_parse' | 'response_schema' | 'safety_blocked' | 'finish_reason' | 'empty_content' | 'provider_error';
|
|
1007
|
+
interface RunFailure {
|
|
1008
|
+
class: RunFailureClass;
|
|
1009
|
+
message: string;
|
|
1010
|
+
provider_detail?: unknown;
|
|
907
1011
|
}
|
|
908
1012
|
/**
|
|
909
|
-
*
|
|
1013
|
+
* Ergebnis eines Laufs — **beide Ausgänge werden gespeichert**.
|
|
910
1014
|
*
|
|
911
|
-
*
|
|
912
|
-
*
|
|
1015
|
+
* Ein Fehlerlauf ist der Nachweis, dass eine bestimmte Kombination beim
|
|
1016
|
+
* Provider anstößt (D-23 §6). Ihn zu verwerfen hieße, genau diese Information
|
|
1017
|
+
* zu vernichten.
|
|
1018
|
+
*/
|
|
1019
|
+
type PromptRunOutcome = {
|
|
1020
|
+
status: 'succeeded';
|
|
1021
|
+
output: PromptRunOutput;
|
|
1022
|
+
raw_output: string;
|
|
1023
|
+
model_id: string;
|
|
1024
|
+
provider: string;
|
|
1025
|
+
} | {
|
|
1026
|
+
status: 'failed';
|
|
1027
|
+
failure: RunFailure;
|
|
1028
|
+
raw_output: string | null;
|
|
1029
|
+
model_id: string;
|
|
1030
|
+
provider: string;
|
|
1031
|
+
};
|
|
1032
|
+
/**
|
|
1033
|
+
* Der Systemprompt des Renderers.
|
|
913
1034
|
*
|
|
914
|
-
*
|
|
1035
|
+
* Bewusst als eigene Funktion und mitgespeichert: D-22 verlangt, dass ein Lauf
|
|
1036
|
+
* einfriert, unter welchen Annahmen er entstand — der Systemprompt gehört dazu.
|
|
1037
|
+
* Ändert er sich, ist an einem alten Lauf noch erkennbar, was damals galt.
|
|
915
1038
|
*/
|
|
916
|
-
declare function
|
|
917
|
-
/**
|
|
918
|
-
declare function
|
|
1039
|
+
declare function buildSystemInstruction(input: RendererInput): string;
|
|
1040
|
+
/** Die Nutzernachricht: die Renderer-Eingabe als JSON (D-47). */
|
|
1041
|
+
declare function buildUserPrompt(input: RendererInput): string;
|
|
919
1042
|
/**
|
|
920
|
-
*
|
|
1043
|
+
* Löst das JSON aus dem Text.
|
|
921
1044
|
*
|
|
922
|
-
*
|
|
923
|
-
*
|
|
924
|
-
*
|
|
925
|
-
*
|
|
1045
|
+
* Bewusst **ohne** die für Prosa gedachte Bereinigung aus `cleanAiResponse`
|
|
1046
|
+
* (D-56): Sie ist für Fließtext gebaut und darf ein JSON-Dokument nicht
|
|
1047
|
+
* anfassen. Erlaubt ist einzig, einen umschließenden Markdown-Codeblock zu
|
|
1048
|
+
* entfernen — das ist keine Interpretation des Inhalts, sondern das Auspacken
|
|
1049
|
+
* eines Umschlags.
|
|
1050
|
+
*/
|
|
1051
|
+
declare function parseRunResponse(raw: string): {
|
|
1052
|
+
ok: true;
|
|
1053
|
+
value: unknown;
|
|
1054
|
+
} | {
|
|
1055
|
+
ok: false;
|
|
1056
|
+
message: string;
|
|
1057
|
+
};
|
|
1058
|
+
/**
|
|
1059
|
+
* Prüft die geparste Antwort gegen ihr Schema **und** gegen die Pflichtdiagnosen.
|
|
926
1060
|
*
|
|
927
|
-
*
|
|
928
|
-
*
|
|
929
|
-
*
|
|
930
|
-
*
|
|
1061
|
+
* Handgeschrieben und nicht über die JSON-Schema-Registry: Die Registry führt
|
|
1062
|
+
* die **Elementtypen** der Domain (`schemas/`), und die Antwort des Renderers
|
|
1063
|
+
* ist kein Elementtyp. Sie dort einzuhängen hieße, den Schemasatz um etwas zu
|
|
1064
|
+
* erweitern, das nie versioniert oder referenziert wird.
|
|
1065
|
+
*/
|
|
1066
|
+
declare function checkRunResponse(value: unknown, input: RendererInput): {
|
|
1067
|
+
ok: true;
|
|
1068
|
+
output: PromptRunOutput;
|
|
1069
|
+
} | {
|
|
1070
|
+
ok: false;
|
|
1071
|
+
message: string;
|
|
1072
|
+
};
|
|
1073
|
+
/**
|
|
1074
|
+
* Führt den Prompt-Ableitungslauf aus.
|
|
931
1075
|
*
|
|
932
|
-
*
|
|
933
|
-
*
|
|
934
|
-
*
|
|
935
|
-
*
|
|
1076
|
+
* Gibt **immer** ein Ergebnis zurück — `succeeded` oder `failed`. Ein
|
|
1077
|
+
* technischer Ausfall des Ports (Netz, Konfiguration) wirft dagegen; er ist
|
|
1078
|
+
* kein Lauf, sondern ein Betriebsfehler und darf nicht als „das Modell hat
|
|
1079
|
+
* abgelehnt" gespeichert werden.
|
|
936
1080
|
*/
|
|
937
|
-
declare function
|
|
938
|
-
|
|
939
|
-
|
|
1081
|
+
declare function runPromptDerivation(input: RendererInput, port: TextGenerationPort): Promise<PromptRunOutcome & {
|
|
1082
|
+
system_prompt: string;
|
|
1083
|
+
}>;
|
|
940
1084
|
|
|
941
1085
|
/** Ein protokollierter Lauf, so wie er im Ereignis steht. */
|
|
942
1086
|
/**
|
|
@@ -1824,19 +1968,58 @@ declare const UNCHECKED_PUBLISH_RULES: readonly string[];
|
|
|
1824
1968
|
*/
|
|
1825
1969
|
declare function createHfElementStore(options: CreateHfElementStoreOptions): AuthoritativeSzenenStore & ChainQueries;
|
|
1826
1970
|
|
|
1971
|
+
/**
|
|
1972
|
+
* Der HF-Kanal kann mehr als der hostneutrale `ElementEventChannel`: Er kann
|
|
1973
|
+
* seinen Kopf-Commit nennen und gegen ihn schreiben.
|
|
1974
|
+
*
|
|
1975
|
+
* Das ist **keine** Erweiterung des allgemeinen Vertrags. Ein Kanal ohne
|
|
1976
|
+
* Versionsbegriff — der Dateilog, der Speicherkanal — kann das nicht, und
|
|
1977
|
+
* fordern darf es deshalb nur, wer es wirklich braucht: die exklusive
|
|
1978
|
+
* Auftragsuebernahme (Kette `szenen-mcp-chatgpt-flow`).
|
|
1979
|
+
*/
|
|
1980
|
+
interface RevisionAwareEventChannel extends ElementEventChannel {
|
|
1981
|
+
/** Der aktuelle Kopf-Commit des Bestands. */
|
|
1982
|
+
readHead(): Promise<string>;
|
|
1983
|
+
/**
|
|
1984
|
+
* Die Ereignisse **bei genau dieser Revision**.
|
|
1985
|
+
*
|
|
1986
|
+
* Der Unterschied zu `readEvents()` ist die Dateiliste: Sie wird an die
|
|
1987
|
+
* Revision gebunden, statt „irgendwann waehrend der Anfrage" zu gelten. Nur
|
|
1988
|
+
* damit passt der gelesene Stand zu dem `parentCommit`, gegen den danach
|
|
1989
|
+
* geschrieben wird — sonst koennte die Liste ein Ereignis uebersehen, das
|
|
1990
|
+
* beim Kopf schon da war, und der Schreibvorgang ginge trotzdem durch.
|
|
1991
|
+
*/
|
|
1992
|
+
readEventsAt(revision: string): Promise<readonly ElementEvent[]>;
|
|
1993
|
+
/**
|
|
1994
|
+
* Anhaengen, aber nur wenn der Bestand noch auf `parentCommit` steht.
|
|
1995
|
+
*
|
|
1996
|
+
* Wirft `HfPreconditionFailedError`, wenn nicht — und schreibt dann nichts.
|
|
1997
|
+
*/
|
|
1998
|
+
appendEventAt(type: string, payload: unknown, parentCommit: string): Promise<void>;
|
|
1999
|
+
}
|
|
1827
2000
|
interface CreateHfEventChannelOptions {
|
|
1828
2001
|
/** HF-Namespace mit abschließendem Schrägstrich, wie in `hfStateService`. */
|
|
1829
2002
|
namespace: string;
|
|
1830
2003
|
token: string;
|
|
1831
2004
|
/**
|
|
1832
|
-
* Nur Events ab diesem Zeitpunkt lesen. Vorgabe `0` —
|
|
2005
|
+
* Nur Events ab diesem Zeitpunkt lesen. Vorgabe `0` — ab dem Snapshot.
|
|
1833
2006
|
*
|
|
1834
|
-
*
|
|
1835
|
-
*
|
|
1836
|
-
*
|
|
1837
|
-
*
|
|
2007
|
+
* Seit D-136 Schritt B gibt es den Snapshot-Mechanismus, den diese Option
|
|
2008
|
+
* lange vorwegnahm: `szenen-state-<ts>.json` trägt die vom Verdichtungslauf
|
|
2009
|
+
* aufgenommenen Ereignisse, und der Kanal liest danach nur noch, was seither
|
|
2010
|
+
* dazukam. Ein ausdrücklich gesetztes `sinceTs` gilt zusätzlich — es kann den
|
|
2011
|
+
* Schnitt nur nach hinten schieben, nie vor den Snapshot zurück.
|
|
1838
2012
|
*/
|
|
1839
2013
|
sinceTs?: number;
|
|
2014
|
+
/**
|
|
2015
|
+
* Den Snapshot übergehen und den vollen `events/`-Bestand lesen.
|
|
2016
|
+
*
|
|
2017
|
+
* Für den Verdichtungslauf selbst und für Diagnosewerkzeuge. Im Normalbetrieb
|
|
2018
|
+
* **nicht** setzen: Nach einer Verdichtung liegt der grösste Teil des Logs
|
|
2019
|
+
* im Snapshot, und ohne ihn läse der Kanal einen unvollständigen Stand — also
|
|
2020
|
+
* eine zu kleine Quellrevision (D-62 §2.4).
|
|
2021
|
+
*/
|
|
2022
|
+
ohneSnapshot?: boolean;
|
|
1840
2023
|
}
|
|
1841
2024
|
/**
|
|
1842
2025
|
* Baut einen `ElementEventChannel` auf dem HF-Dataset.
|
|
@@ -1844,7 +2027,7 @@ interface CreateHfEventChannelOptions {
|
|
|
1844
2027
|
* Erfordert nur einen HF-Token — kein Server, keine Datenbank. Das ist die
|
|
1845
2028
|
* Zusage von R-2 für Flow-FA Pure.
|
|
1846
2029
|
*/
|
|
1847
|
-
declare function createHfEventChannel(options: CreateHfEventChannelOptions):
|
|
2030
|
+
declare function createHfEventChannel(options: CreateHfEventChannelOptions): RevisionAwareEventChannel;
|
|
1848
2031
|
|
|
1849
2032
|
interface InMemoryEventChannel extends ElementEventChannel {
|
|
1850
2033
|
/** Der rohe Log, für Prüfungen. */
|
|
@@ -1860,6 +2043,15 @@ interface CreateInMemoryEventChannelOptions {
|
|
|
1860
2043
|
now?: () => number;
|
|
1861
2044
|
/** Gemeinsamer Log, wenn mehrere Clients denselben Kanal teilen. */
|
|
1862
2045
|
shared?: ElementEvent[];
|
|
2046
|
+
/**
|
|
2047
|
+
* Ein bereits verdichteter Stand (D-136 Schritt B).
|
|
2048
|
+
*
|
|
2049
|
+
* Der Kanalvertrag lautet seither „Snapshot + ausstehende Ereignisse", und er
|
|
2050
|
+
* gilt für alle drei Implementierungen. Ohne diese Option liesse sich das
|
|
2051
|
+
* hier nicht prüfen — und der Contract-Test wäre genau an der Stelle blind,
|
|
2052
|
+
* an der ein Verdichtungslauf den Bestand verändert.
|
|
2053
|
+
*/
|
|
2054
|
+
snapshot?: SzenenSnapshot | null;
|
|
1863
2055
|
}
|
|
1864
2056
|
declare function createInMemoryEventChannel(options?: CreateInMemoryEventChannelOptions): InMemoryEventChannel;
|
|
1865
2057
|
|
|
@@ -2262,6 +2454,190 @@ interface CreateImageGenerationPortOptions {
|
|
|
2262
2454
|
/** Der gemeinsame Bildgenerierungs-Port. */
|
|
2263
2455
|
declare function createImageGenerationPort(options: CreateImageGenerationPortOptions): SzenenImageGenerationPort;
|
|
2264
2456
|
|
|
2457
|
+
/** Nutzlast von `imageJobRequested` — geschrieben beim MCP-Auftrag. */
|
|
2458
|
+
interface ImageJobRequestedPayload {
|
|
2459
|
+
job_id: string;
|
|
2460
|
+
prompt_run_id: string;
|
|
2461
|
+
/** Das Zielmodell, mit dem ausgefuehrt werden soll — ausdruecklich (D-131). */
|
|
2462
|
+
execution_target_model_key: string;
|
|
2463
|
+
/** Dessen Ausfuehrungsprofil; die Faehigkeiten kommen von dort, nicht vom MCP. */
|
|
2464
|
+
execution_profile_id: string;
|
|
2465
|
+
image_count: number;
|
|
2466
|
+
aspect_ratio?: string;
|
|
2467
|
+
/** Wer beauftragt hat — der kanonische Nutzerschluessel des Aufrufers. */
|
|
2468
|
+
requested_by: string;
|
|
2469
|
+
/**
|
|
2470
|
+
* Die Kennung des Bestands, in dem dieser Auftrag gilt — `hf:<namespace>`
|
|
2471
|
+
* bzw. `file:<verzeichnis>`, dieselbe Form, an der die Projektionsschranke
|
|
2472
|
+
* misst.
|
|
2473
|
+
*
|
|
2474
|
+
* Ein Auftrag ist an Nutzer **und** Bestand gebunden. Ein Host auf einem
|
|
2475
|
+
* anderen Bestand sieht ihn gar nicht erst; einer, der ihn doch faende,
|
|
2476
|
+
* schriebe sein Ergebnis dorthin, wo der Auftraggeber nicht sucht.
|
|
2477
|
+
*/
|
|
2478
|
+
store_id: string;
|
|
2479
|
+
created_at: string;
|
|
2480
|
+
}
|
|
2481
|
+
/** Nutzlast von `imageJobClaimed` — der Anspruch eines Flow-Hosts. */
|
|
2482
|
+
interface ImageJobClaimedPayload {
|
|
2483
|
+
job_id: string;
|
|
2484
|
+
claim_id: string;
|
|
2485
|
+
/** Der Client, der beansprucht — zwei Tabs sind zwei Clients. */
|
|
2486
|
+
client_id: string;
|
|
2487
|
+
claimed_at: string;
|
|
2488
|
+
}
|
|
2489
|
+
/** Nutzlast von `imageJobSettled` — der Ausgang der Zustellung. */
|
|
2490
|
+
interface ImageJobSettledPayload {
|
|
2491
|
+
job_id: string;
|
|
2492
|
+
claim_id: string;
|
|
2493
|
+
status: 'succeeded' | 'partial' | 'failed' | 'rejected';
|
|
2494
|
+
/** Der Batch des bezahlten Aufrufs, sofern einer entstand. */
|
|
2495
|
+
generation_batch_id?: string;
|
|
2496
|
+
/** Das Library-Item des Batches, sofern eines entstand. */
|
|
2497
|
+
item_id?: string;
|
|
2498
|
+
produced_count?: number;
|
|
2499
|
+
diagnostic?: string;
|
|
2500
|
+
settled_at: string;
|
|
2501
|
+
}
|
|
2502
|
+
/**
|
|
2503
|
+
* Der Auftrag, wie ein Leser ihn sieht.
|
|
2504
|
+
*
|
|
2505
|
+
* `claimed` heisst „ein Host fuehrt aus **oder** ist dabei abgebrochen" — aus
|
|
2506
|
+
* dem Log allein ist das nicht unterscheidbar, genau wie bei `started` in
|
|
2507
|
+
* `ImageGenerationOrder`. Das ist Absicht und kein Mangel: Ein Zustand, der
|
|
2508
|
+
* beides trennte, muesste eine Lebendigkeit behaupten, die niemand belegt.
|
|
2509
|
+
*/
|
|
2510
|
+
interface ImageJob {
|
|
2511
|
+
job_id: string;
|
|
2512
|
+
prompt_run_id: string;
|
|
2513
|
+
execution_target_model_key: string;
|
|
2514
|
+
execution_profile_id: string;
|
|
2515
|
+
image_count: number;
|
|
2516
|
+
aspect_ratio?: string;
|
|
2517
|
+
requested_by: string;
|
|
2518
|
+
store_id: string;
|
|
2519
|
+
created_at: string;
|
|
2520
|
+
status: 'pending' | 'claimed' | 'succeeded' | 'partial' | 'failed' | 'rejected';
|
|
2521
|
+
/** Der massgebliche Anspruch — der erste in Logreihenfolge. */
|
|
2522
|
+
claim?: ImageJobClaimedPayload;
|
|
2523
|
+
/** Alle Anspruechenden, auch die unterlegenen. Ein Versuch ist ein Beleg. */
|
|
2524
|
+
claim_attempts: readonly ImageJobClaimedPayload[];
|
|
2525
|
+
generation_batch_id?: string;
|
|
2526
|
+
item_id?: string;
|
|
2527
|
+
produced_count?: number;
|
|
2528
|
+
diagnostic?: string;
|
|
2529
|
+
settled_at?: string;
|
|
2530
|
+
}
|
|
2531
|
+
/**
|
|
2532
|
+
* Liest alle Bildauftraege aus dem Ereignislog.
|
|
2533
|
+
*
|
|
2534
|
+
* Drei Durchgaenge in fester Reihenfolge — Auftrag, Anspruch, Abschluss —,
|
|
2535
|
+
* damit ein Ereignis nie einen Auftrag erfindet, den es nicht gibt: Ein
|
|
2536
|
+
* Anspruch oder Abschluss ohne `requested` wird ignoriert, genauso wie
|
|
2537
|
+
* `collectImageGenerationOrders` ein `finished` ohne `started` ignoriert.
|
|
2538
|
+
*/
|
|
2539
|
+
declare function collectImageJobs(events: readonly ElementEvent[]): readonly ImageJob[];
|
|
2540
|
+
/** Alle Auftraege eines Prompt-Laufs, in Erfassungsreihenfolge. */
|
|
2541
|
+
declare function jobsForPromptRun(events: readonly ElementEvent[], runId: string): readonly ImageJob[];
|
|
2542
|
+
/** Ein einzelner Auftrag, oder `null`. */
|
|
2543
|
+
declare function findImageJob(events: readonly ElementEvent[], jobId: string): ImageJob | null;
|
|
2544
|
+
/**
|
|
2545
|
+
* Ob dieser Anspruch der massgebliche ist.
|
|
2546
|
+
*
|
|
2547
|
+
* Die eine Frage, die ein Flow-Host nach seinem Append stellen muss, bevor er
|
|
2548
|
+
* einen bezahlten Aufruf startet.
|
|
2549
|
+
*/
|
|
2550
|
+
declare function claimWon(job: ImageJob | null, claimId: string): boolean;
|
|
2551
|
+
/**
|
|
2552
|
+
* Die Kennung des Bild-Batches eines Auftrags.
|
|
2553
|
+
*
|
|
2554
|
+
* **Aus der Auftragskennung abgeleitet und nicht gewuerfelt.** Damit ist ein
|
|
2555
|
+
* zweiter Ausfuehrungsversuch desselben Auftrags auch dann noch harmlos, wenn
|
|
2556
|
+
* er die Schiedsregel umginge: `collectImageGenerationOrders` haelt das erste
|
|
2557
|
+
* `started` je `generation_batch_id` fest und ignoriert jedes weitere. Zwei
|
|
2558
|
+
* unabhaengige Sicherungen fuer denselben teuren Fehler sind hier
|
|
2559
|
+
* angemessen — der Schaden ist bezahlte Rechenzeit, nicht ein Logeintrag.
|
|
2560
|
+
*/
|
|
2561
|
+
declare function generationBatchIdOf(jobId: string): string;
|
|
2562
|
+
|
|
2563
|
+
/**
|
|
2564
|
+
* Was der Auftragskanal braucht.
|
|
2565
|
+
*
|
|
2566
|
+
* `readHead`, `readEventsAt` und `appendEventAt` sind **Pflicht**, nicht
|
|
2567
|
+
* optional: Ohne sie gibt es keine verbindliche Uebernahme, und ein Host, der
|
|
2568
|
+
* sie nicht hat, darf einen bezahlten Auftrag nicht uebernehmen. Ein
|
|
2569
|
+
* optionaler Rueckfall auf blosses `appendEvent` waere genau die Fassung, die
|
|
2570
|
+
* zwei Clients beide gewinnen liess.
|
|
2571
|
+
*/
|
|
2572
|
+
interface ImageJobChannel {
|
|
2573
|
+
readEvents(): Promise<readonly ElementEvent[]>;
|
|
2574
|
+
/**
|
|
2575
|
+
* Der schlichte Anhang — fuer den **Abschluss**.
|
|
2576
|
+
*
|
|
2577
|
+
* Er braucht kein CAS: Nur der Gewinner schreibt ihn, und die Faltung
|
|
2578
|
+
* akzeptiert ohnehin nur den Abschluss des massgeblichen Anspruchs.
|
|
2579
|
+
*/
|
|
2580
|
+
appendEvent(type: string, payload: unknown): Promise<void>;
|
|
2581
|
+
/** Der aktuelle Kopf-Commit des Bestands. */
|
|
2582
|
+
readHead(): Promise<string>;
|
|
2583
|
+
/** Die Ereignisse bei genau dieser Revision — die Liste ist daran gebunden. */
|
|
2584
|
+
readEventsAt(revision: string): Promise<readonly ElementEvent[]>;
|
|
2585
|
+
/** Anhaengen, aber nur wenn der Bestand noch auf `parentCommit` steht. */
|
|
2586
|
+
appendEventAt(type: string, payload: unknown, parentCommit: string): Promise<void>;
|
|
2587
|
+
}
|
|
2588
|
+
/** Die Ausgaenge einer Uebernahme. */
|
|
2589
|
+
type ClaimAndRunResult =
|
|
2590
|
+
/** Uebernommen und ausgefuehrt — der Ausgang steht im Auftrag. */
|
|
2591
|
+
{
|
|
2592
|
+
kind: 'ok';
|
|
2593
|
+
job: ImageJob;
|
|
2594
|
+
}
|
|
2595
|
+
/**
|
|
2596
|
+
* Ein anderer Client hat den Auftrag. **Kein Fehler**: Genau dafuer gibt es
|
|
2597
|
+
* die Schiedsregel, und dieser Client hat nichts bezahlt.
|
|
2598
|
+
*/
|
|
2599
|
+
| {
|
|
2600
|
+
kind: 'lost';
|
|
2601
|
+
job: ImageJob;
|
|
2602
|
+
message: string;
|
|
2603
|
+
}
|
|
2604
|
+
/** Fachlich abgelehnt — falscher Zustand, falscher Bestand, kein Auftrag. */
|
|
2605
|
+
| {
|
|
2606
|
+
kind: 'rejected';
|
|
2607
|
+
message: string;
|
|
2608
|
+
}
|
|
2609
|
+
/** Technisch gescheitert; der Bestand ist in Ordnung, der Zugriff nicht. */
|
|
2610
|
+
| {
|
|
2611
|
+
kind: 'error';
|
|
2612
|
+
message: string;
|
|
2613
|
+
retryable: boolean;
|
|
2614
|
+
};
|
|
2615
|
+
interface SzenenImageJobPort {
|
|
2616
|
+
/** Die Auftraege eines Prompt-Laufs, aus dem autoritativen Log. */
|
|
2617
|
+
listJobs(runId: string): Promise<QueryResult<readonly ImageJob[]>>;
|
|
2618
|
+
/** Beansprucht einen wartenden Auftrag und fuehrt ihn als Gewinner aus. */
|
|
2619
|
+
claimAndRun(jobId: string): Promise<ClaimAndRunResult>;
|
|
2620
|
+
}
|
|
2621
|
+
interface CreateImageJobPortOptions {
|
|
2622
|
+
channel: ImageJobChannel;
|
|
2623
|
+
/** Der bestehende Bildgenerierungs-Port dieses Hosts (D-116/D-119). */
|
|
2624
|
+
imageGeneration: SzenenImageGenerationPort;
|
|
2625
|
+
/**
|
|
2626
|
+
* Die Bestandskennung dieses Hosts — `hf:<namespace>`.
|
|
2627
|
+
*
|
|
2628
|
+
* Sie wird gegen die des Auftrags geprueft. Nutzer, Umgebung und Bestand
|
|
2629
|
+
* muessen zusammenpassen; ein Host, der einen fremden Auftrag ausfuehrte,
|
|
2630
|
+
* schriebe sein Ergebnis in einen Bestand, in dem es niemand sucht.
|
|
2631
|
+
*/
|
|
2632
|
+
storeId: string;
|
|
2633
|
+
/** Diese Sitzung. Zwei Tabs sind zwei Clients — sonst sind sie ununterscheidbar. */
|
|
2634
|
+
clientId: string;
|
|
2635
|
+
newClaimId?: () => string;
|
|
2636
|
+
now?: () => Date;
|
|
2637
|
+
}
|
|
2638
|
+
/** Der Uebernahmeweg als Port. */
|
|
2639
|
+
declare function createImageJobPort(options: CreateImageJobPortOptions): SzenenImageJobPort;
|
|
2640
|
+
|
|
2265
2641
|
/** Eine benannte Seedliste, wie der Nutzer sie im Dropdown sieht. */
|
|
2266
2642
|
interface SeedVorlage {
|
|
2267
2643
|
/** Fehlt bei der eingebauten Vorlage — sie liegt in keinem Speicher. */
|
|
@@ -3068,6 +3444,16 @@ interface SzenenViewPort {
|
|
|
3068
3444
|
* Bildlauf starten und das Ergebnis danach verlieren.
|
|
3069
3445
|
*/
|
|
3070
3446
|
imageGeneration?: SzenenImageGenerationPort;
|
|
3447
|
+
/**
|
|
3448
|
+
* Bildauftraege aus dem Chat uebernehmen — fehlt, wo es nichts auszufuehren
|
|
3449
|
+
* gibt.
|
|
3450
|
+
*
|
|
3451
|
+
* Haengt an denselben zwei Voraussetzungen wie `imageGeneration`: ohne
|
|
3452
|
+
* Provider und ohne kanonischen Schreibweg darf ein Host keinen bezahlten
|
|
3453
|
+
* Auftrag uebernehmen (D-122). Zusaetzlich braucht er den autoritativen
|
|
3454
|
+
* Kanal, denn die Uebernahme ist ein Append mit Gegenlesen.
|
|
3455
|
+
*/
|
|
3456
|
+
imageJobs?: SzenenImageJobPort;
|
|
3071
3457
|
}
|
|
3072
3458
|
/**
|
|
3073
3459
|
* Die Fähigkeiten eines Ports, wie die View sie abfragt.
|
|
@@ -3088,6 +3474,8 @@ interface SzenenViewCapabilities {
|
|
|
3088
3474
|
imageOrderHistory: boolean;
|
|
3089
3475
|
imageBatchWrite: boolean;
|
|
3090
3476
|
imageGeneration: boolean;
|
|
3477
|
+
/** Bildauftraege aus dem Chat uebernehmen (Kette szenen-mcp-chatgpt-flow). */
|
|
3478
|
+
imageJobs: boolean;
|
|
3091
3479
|
}
|
|
3092
3480
|
declare function capabilitiesOf(port: SzenenViewPort): SzenenViewCapabilities;
|
|
3093
3481
|
/**
|
|
@@ -3222,6 +3610,42 @@ interface GruppierbaresBild extends LibraryImage {
|
|
|
3222
3610
|
* Locator-Position aufsteigend; die ist stabil, der Zeitstempel wäre es nicht.
|
|
3223
3611
|
*/
|
|
3224
3612
|
declare function gruppiereZuItems(bilder: readonly GruppierbaresBild[]): readonly LibraryImageItem[];
|
|
3613
|
+
/** Ein Galerieeintrag, wie ihn `metadata.gallery` einer Library-Zeile fuehrt. */
|
|
3614
|
+
interface BestandsGalerieEintrag {
|
|
3615
|
+
file?: string | null;
|
|
3616
|
+
}
|
|
3617
|
+
/** Eine Library-Zeile, wie sie `/api/storage/:user/library` ausliefert. */
|
|
3618
|
+
interface BestandsItem {
|
|
3619
|
+
id: string;
|
|
3620
|
+
title?: string | null;
|
|
3621
|
+
timestamp?: number | null;
|
|
3622
|
+
gallery?: readonly BestandsGalerieEintrag[] | null;
|
|
3623
|
+
}
|
|
3624
|
+
/**
|
|
3625
|
+
* Der Locator eines Bildes — dieselbe Bildung wie `locatorVon()` auf dem
|
|
3626
|
+
* Server und beim Hochladen nach HF: bei einem Bild die blosse Kennung, bei
|
|
3627
|
+
* mehreren `${id}-${position}`. `locatorTeile` oben zerlegt genau das wieder.
|
|
3628
|
+
*/
|
|
3629
|
+
declare function locatorAus(itemId: string, position: number, anzahl: number): string;
|
|
3630
|
+
/** Der MIME-Typ aus der Dateiendung — dieselben drei Faelle wie serverseitig. */
|
|
3631
|
+
declare function mimeTypAus(dateiname: string): string;
|
|
3632
|
+
/**
|
|
3633
|
+
* Library-Zeilen → Werke fuer den Bildwaehler.
|
|
3634
|
+
*
|
|
3635
|
+
* @param items Der Bestand, wie ihn der Library-Lesepfad liefert.
|
|
3636
|
+
* @param options `search` filtert am Titel, `limit` zaehlt **Werke** (nicht
|
|
3637
|
+
* Bilder), `thumbUrl` bildet die Vorschauquelle aus dem
|
|
3638
|
+
* Dateinamen — der Host reicht sie herein, damit diese Funktion
|
|
3639
|
+
* keine Adresse kennt.
|
|
3640
|
+
*
|
|
3641
|
+
* Ein Item ohne lesbaren Galerieeintrag ist kein leeres Werk, sondern gar
|
|
3642
|
+
* keins: eine Karte ohne Bild waere nur eine Sackgasse.
|
|
3643
|
+
*/
|
|
3644
|
+
declare function itemsAusBestand(items: readonly BestandsItem[], options?: {
|
|
3645
|
+
search?: string;
|
|
3646
|
+
limit?: number;
|
|
3647
|
+
thumbUrl?: (dateiname: string) => string;
|
|
3648
|
+
}): readonly LibraryImageItem[];
|
|
3225
3649
|
|
|
3226
3650
|
interface VorschauLauf {
|
|
3227
3651
|
/** Wird `true`, sobald der Aufrufer das Ergebnis nicht mehr braucht. */
|
|
@@ -3444,6 +3868,17 @@ interface CreateFlowSzenenViewPortOptions {
|
|
|
3444
3868
|
imageContextId?: () => string | null;
|
|
3445
3869
|
/** Kennung je abgelegtem Batch-Bild. Ersetzbar, damit ein Test nicht würfelt. */
|
|
3446
3870
|
newBatchImageId?: (generationBatchId: string, position: number) => string;
|
|
3871
|
+
/**
|
|
3872
|
+
* Diese Sitzung — die Kennung, mit der dieser Host einen Bildauftrag
|
|
3873
|
+
* beansprucht (Kette `szenen-mcp-chatgpt-flow`).
|
|
3874
|
+
*
|
|
3875
|
+
* **Zwei Tabs müssen zwei Clients sein**, sonst kann die Schiedsregel den
|
|
3876
|
+
* Doppelklick nicht vom zweiten Tab unterscheiden. Vorgabe ist deshalb eine
|
|
3877
|
+
* frisch gezogene Kennung je Portinstanz, kein stabiler Gerätewert.
|
|
3878
|
+
*/
|
|
3879
|
+
imageJobClientId?: string;
|
|
3880
|
+
/** Anspruchskennung je Übernahme. Ersetzbar, damit ein Test nicht würfelt. */
|
|
3881
|
+
newImageJobClaimId?: () => string;
|
|
3447
3882
|
}
|
|
3448
3883
|
/**
|
|
3449
3884
|
* Complete Flow adapter for the shared SzenenView: authoritative HF elements
|
|
@@ -3785,6 +4220,164 @@ interface TargetModelChoices {
|
|
|
3785
4220
|
*/
|
|
3786
4221
|
declare function selectableTargetModels(queries: VisibilityQueries, contextChain: readonly (string | null)[]): Promise<QueryResult<TargetModelChoices>>;
|
|
3787
4222
|
|
|
4223
|
+
/**
|
|
4224
|
+
* Der Anbieter, der in einem so entstandenen Lauf steht.
|
|
4225
|
+
*
|
|
4226
|
+
* `mcp_client` und nicht `openai`/`chatgpt`: Was der Server sicher weiss, ist
|
|
4227
|
+
* dass **sein MCP-Aufrufer** formuliert hat. Welcher Anbieter dahinter steht,
|
|
4228
|
+
* sagt ihm niemand — und ein geratener Anbietername waere im Lauf spaeter
|
|
4229
|
+
* nicht mehr von einem belegten zu unterscheiden (D-107).
|
|
4230
|
+
*/
|
|
4231
|
+
declare const MCP_CLIENT_PROVIDER = "mcp_client";
|
|
4232
|
+
/**
|
|
4233
|
+
* Die Modellkennung, wenn der Host keine belegte liefert — und das tut er nie.
|
|
4234
|
+
*
|
|
4235
|
+
* Bewusst ein sprechender Platzhalter statt einer Modellversion: `model_id`
|
|
4236
|
+
* ist das Feld, an dem ein Leser ablesen soll, **womit** formuliert wurde.
|
|
4237
|
+
* Eine dort eingetragene Selbstauskunft saehe aus wie eine belegte Kennung.
|
|
4238
|
+
* Die Selbstauskunft steht deshalb in `execution_origin.declared_model_id` und
|
|
4239
|
+
* traegt dort sichtbar, dass sie unbelegt ist.
|
|
4240
|
+
*/
|
|
4241
|
+
declare const UNVERIFIED_MODEL_ID = "mcp-client-unspecified";
|
|
4242
|
+
/**
|
|
4243
|
+
* Die Herkunft der Ausfuehrung, so ehrlich wie sie belegbar ist.
|
|
4244
|
+
*
|
|
4245
|
+
* Additiv am Lauf und nicht in `model_id`/`provider` versteckt: Der
|
|
4246
|
+
* Unterschied zwischen „das war Modell X" und „der Aufrufer sagt, es war
|
|
4247
|
+
* Modell X" ist genau der, um den es geht.
|
|
4248
|
+
*/
|
|
4249
|
+
interface PromptExecutionOrigin {
|
|
4250
|
+
/** Wer den Lauf eingereicht hat — hier immer der MCP-Werkzeugweg. */
|
|
4251
|
+
host: 'mcp';
|
|
4252
|
+
/** Was der Aufrufer ueber sich selbst gesagt hat, unveraendert und unbelegt. */
|
|
4253
|
+
declared_model_id?: string;
|
|
4254
|
+
/**
|
|
4255
|
+
* Ob die unten mitgegebene Renderer-Anweisung die tatsaechliche
|
|
4256
|
+
* Systemnachricht des formulierenden Chats war.
|
|
4257
|
+
*
|
|
4258
|
+
* Sie war es nie: Der MCP reicht sie als Werkzeugergebnis heraus; was im
|
|
4259
|
+
* Chat als Systemprompt stand, kennt der Server nicht. Das Feld steht
|
|
4260
|
+
* trotzdem im Lauf, weil `system_prompt` sonst genau so gelesen wuerde.
|
|
4261
|
+
*/
|
|
4262
|
+
renderer_instruction_was_system_prompt: false;
|
|
4263
|
+
}
|
|
4264
|
+
/** Der Antwortvertrag, den der Aufrufer erfuellen muss — maschinenlesbar. */
|
|
4265
|
+
interface PromptResponseContract {
|
|
4266
|
+
format: 'json';
|
|
4267
|
+
/** Pflichtfelder der Antwort, wie `checkRunResponse()` sie prueft. */
|
|
4268
|
+
required_fields: readonly string[];
|
|
4269
|
+
/** Ob ein Negativ-Prompt zugesagt ist (sonst muss `negative` null bleiben). */
|
|
4270
|
+
negative_prompt_allowed: boolean;
|
|
4271
|
+
/** Jeder dieser Knoten muss in `visibility.nodes` erscheinen (D-21). */
|
|
4272
|
+
node_ids: readonly string[];
|
|
4273
|
+
/** Die Sprache, in der `positive` formuliert wird. */
|
|
4274
|
+
prompt_language: string;
|
|
4275
|
+
}
|
|
4276
|
+
/** Ein vorbereiteter Promptvorgang — dauerhaft unter `operation_id`. */
|
|
4277
|
+
interface PreparedPromptOperation {
|
|
4278
|
+
operation_id: string;
|
|
4279
|
+
/** Die eingefrorene Szene: genau ein Entwurfs- oder Versionsstand (D-135). */
|
|
4280
|
+
scene: FrozenSceneState;
|
|
4281
|
+
context_id: string | null;
|
|
4282
|
+
/** Die Arbeitsanweisung des Nutzers, soweit eine gegeben wurde. */
|
|
4283
|
+
user_instruction: string | null;
|
|
4284
|
+
/** Der eingefrorene `RendererInput` — woertlich der des bestehenden Pfads. */
|
|
4285
|
+
renderer_input: RendererInput;
|
|
4286
|
+
/**
|
|
4287
|
+
* Die Renderer-Anweisung (`buildSystemInstruction`).
|
|
4288
|
+
*
|
|
4289
|
+
* Sie ist **Material fuer den Aufrufer**, nicht sein Systemprompt. Beim
|
|
4290
|
+
* Abschluss landet sie unveraendert in `system_prompt` des Laufs, weil das
|
|
4291
|
+
* Feld seit Stufe 3 genau diese Anweisung fuehrt.
|
|
4292
|
+
*/
|
|
4293
|
+
renderer_instruction: string;
|
|
4294
|
+
/** Die Nutzernachricht: die Renderer-Eingabe als JSON (D-47). */
|
|
4295
|
+
renderer_payload: string;
|
|
4296
|
+
response_contract: PromptResponseContract;
|
|
4297
|
+
prepared_by: string;
|
|
4298
|
+
created_at: string;
|
|
4299
|
+
}
|
|
4300
|
+
/** Nutzlast von `promptOperationPrepared`. */
|
|
4301
|
+
type PromptOperationPreparedPayload = PreparedPromptOperation;
|
|
4302
|
+
/** Liest alle vorbereiteten Vorgaenge aus dem Ereignislog. */
|
|
4303
|
+
declare function collectPromptOperations(events: readonly ElementEvent[]): readonly PreparedPromptOperation[];
|
|
4304
|
+
/** Ein einzelner vorbereiteter Vorgang, oder `null`. */
|
|
4305
|
+
declare function findPromptOperation(events: readonly ElementEvent[], operationId: string): PreparedPromptOperation | null;
|
|
4306
|
+
interface PreparePromptOperationInput {
|
|
4307
|
+
sceneElementId: string;
|
|
4308
|
+
operationId: string;
|
|
4309
|
+
store: ChainQueries;
|
|
4310
|
+
resolver: ReferenceResolver;
|
|
4311
|
+
contextChain: readonly (string | null)[];
|
|
4312
|
+
contextId: string | null;
|
|
4313
|
+
userInstruction?: string | null;
|
|
4314
|
+
preparedBy: string;
|
|
4315
|
+
now?: () => Date;
|
|
4316
|
+
}
|
|
4317
|
+
type PreparePromptOperationResult = {
|
|
4318
|
+
kind: 'ok';
|
|
4319
|
+
operation: PreparedPromptOperation;
|
|
4320
|
+
} | FreezeFailure;
|
|
4321
|
+
/**
|
|
4322
|
+
* Friert den Arbeitsstand einer Szene ein und baut daraus den Vorgang.
|
|
4323
|
+
*
|
|
4324
|
+
* Ruft **kein** Modell — hier entstehen keine Kosten. Das Einfrieren ist
|
|
4325
|
+
* woertlich `freezeSceneWorkingState()`, also derselbe Zwei-Durchgang-Vergleich
|
|
4326
|
+
* mit denselben drei Ausgaengen wie im bestehenden Pfad (D-97/D-135). Ein
|
|
4327
|
+
* Konflikt bleibt ein Konflikt, kein „nochmal versuchen".
|
|
4328
|
+
*/
|
|
4329
|
+
declare function preparePromptOperation(input: PreparePromptOperationInput): Promise<PreparePromptOperationResult>;
|
|
4330
|
+
/**
|
|
4331
|
+
* Der Antwortvertrag, abgelesen an derselben Eingabe wie die Anweisung.
|
|
4332
|
+
*
|
|
4333
|
+
* Bewusst abgelesen und nicht danebengeschrieben: Was `checkRunResponse()
|
|
4334
|
+
* prueft, entscheidet allein `promptRun.ts`. Ein hier gepflegter zweiter
|
|
4335
|
+
* Katalog liefe irgendwann auseinander, und der Aufrufer bekaeme einen
|
|
4336
|
+
* Vertrag, den die Pruefung nicht kennt.
|
|
4337
|
+
*/
|
|
4338
|
+
declare function responseContractOf(input: RendererInput): PromptResponseContract;
|
|
4339
|
+
interface CompletePromptOperationInput {
|
|
4340
|
+
operation: PreparedPromptOperation;
|
|
4341
|
+
/** Die Antwort des aufrufenden Modells, woertlich. */
|
|
4342
|
+
response: string;
|
|
4343
|
+
runId: string;
|
|
4344
|
+
/** Was der Aufrufer ueber sein eigenes Modell sagt — unbelegt (D-107). */
|
|
4345
|
+
declaredModelId?: string | null;
|
|
4346
|
+
now?: () => Date;
|
|
4347
|
+
}
|
|
4348
|
+
type CompletePromptOperationResult = {
|
|
4349
|
+
kind: 'ok';
|
|
4350
|
+
record: PromptRunRecord;
|
|
4351
|
+
} | {
|
|
4352
|
+
kind: 'rejected';
|
|
4353
|
+
message: string;
|
|
4354
|
+
};
|
|
4355
|
+
/**
|
|
4356
|
+
* Macht aus der Antwort des Aufrufers einen normalen Promptlauf.
|
|
4357
|
+
*
|
|
4358
|
+
* **Eine ungueltige Antwort wird nicht als gescheiterter Lauf abgelegt.** Das
|
|
4359
|
+
* ist der eine bewusste Unterschied zum Providerpfad, und er hat einen Grund:
|
|
4360
|
+
* Dort belegt ein `failed` einen **bezahlten** Aufruf, der sich nicht
|
|
4361
|
+
* wiederholen laesst, ohne noch einmal zu kosten (D-23 §6). Hier hat niemand
|
|
4362
|
+
* bezahlt — der Aufrufer hat nur falsch formuliert und kann es unter derselben
|
|
4363
|
+
* `operation_id` sofort richtig tun. Ein Fehlerlauf waere hier kein Nachweis,
|
|
4364
|
+
* sondern Muell im autoritativen Bestand, und er wuerde die Wiederholung
|
|
4365
|
+
* ausserdem als Konflikt blockieren.
|
|
4366
|
+
*/
|
|
4367
|
+
declare function completePromptOperation(input: CompletePromptOperationInput): CompletePromptOperationResult;
|
|
4368
|
+
/**
|
|
4369
|
+
* Der Lauf, der aus diesem Vorgang schon entstanden ist — oder `null`.
|
|
4370
|
+
*
|
|
4371
|
+
* Grundlage der Idempotenz: Derselbe Vorgang mit derselben Antwort liefert
|
|
4372
|
+
* denselben Lauf; eine **andere** Antwort unter derselben Kennung ist ein
|
|
4373
|
+
* Konflikt und kein zweiter Lauf. Verglichen wird die woertliche Antwort aus
|
|
4374
|
+
* `raw_output` — es braucht keinen Fingerabdruck neben etwas, das der Lauf
|
|
4375
|
+
* ohnehin vollstaendig traegt.
|
|
4376
|
+
*/
|
|
4377
|
+
declare function runOfOperation(runs: readonly PromptRunRecord[], operationId: string): PromptRunRecord | null;
|
|
4378
|
+
/** Ob eine eingereichte Antwort woertlich die des bereits gespeicherten Laufs ist. */
|
|
4379
|
+
declare function sameResponseAs(run: PromptRunRecord, response: string): boolean;
|
|
4380
|
+
|
|
3788
4381
|
interface CreateHfImageBatchPersistenceOptions {
|
|
3789
4382
|
namespace: string;
|
|
3790
4383
|
token: string;
|
|
@@ -3945,4 +4538,4 @@ interface SzenenViewProps {
|
|
|
3945
4538
|
}
|
|
3946
4539
|
declare const SzenenView: React__default.FC<SzenenViewProps>;
|
|
3947
4540
|
|
|
3948
|
-
export { type AttachLibraryItemInput, type AttachLibraryItemResult, AuthoritativeSzenenStore, CATALOGUE_TYPES, CapabilityAnchorError, type CapabilityFlag, type CapabilityFlagName, type CapabilityReason, type CapabilityReport, type CapabilityReportInput, type CapabilityScope, type CapabilityState, type ChainQueries, type ClientDerivationChannel, type ClientDerivationStore, ContextChainPort, type CreateBrowserTextGenerationPortOptions, type CreateClientDerivationPortOptions, type CreateClientRunPortOptions, type CreateFlowSzenenViewPortOptions, type CreateHfElementStoreOptions, type CreateHfEventChannelOptions, type CreateHfImageBatchHistoryOptions, type CreateHfImageBatchPersistenceOptions, type CreateImageGenerationPortOptions, type CreateMemoryViewPortOptions, DEFAULT_SEED_VORLAGE, DerivableType, DerivationAssessment, DerivationConflict, DerivationDiagnostic, DerivationFailure, DerivationImage, DerivationInputMode, type DeriveItemInput, type DerivedItem, type DerivedLineage, type DerivedRelationship, type DerivedSzenenReference, type DifferentialResult, type DifferentialStep, type Divergence, DraftChainMeta, ELEMENT_VERSION_SCHEMA_FILE, type ElementEvent, type ElementEventChannel, ElementSnapshot, type ElementStoreState, type ExecutableImageModel, type ExecutionTargetModel, type ExistingSzenenItem, FLOW_EXECUTION_PATH, type FlowGenerateImage, type FlowGenerateImageParams, FlowGenerateText, type FreezeDraftChainInput, type FreezeFailure, type FreezeResult, type FreezeSceneResult, type FreezeSceneSuccess, type FreezeSceneWorkingStateInput, type FreezeSuccess, type FrozenChainNode, type FrozenSceneState, type GeneratedImage, type GruppierbaresBild, type HfImageStore, type HfImageStoreOptions, type IdFactory, type ImageBatchPersistedImage, type ImageBatchPersistedPayload, type ImageExecutionProfile, type ImageExecutionRoute, type ImageExecutionTargetModelReader, type ImageGenerationBatchPersistence, type ImageGenerationEventChannel, type ImageGenerationFinishedPayload, type ImageGenerationOrder, type ImageGenerationProviderPort, type ImageGenerationResult, type ImageGenerationRunReader, type ImageGenerationStartedPayload, type ImageHostCapability, type ImageModelChoice, type ImageModelParameters, ImageProvenance, type ImageProviderInput, type ImportBatchImageInput, type ImportBatchInput, type InMemoryEventChannel, type InputError, type IntegrityVerdict, type ItemDerivationFailure, type ItemDerivationFailureClass, type ItemDerivationResult, type ItemMedium, type LibraryImage, type LibraryImageItem, type NodeContribution, NotDerivable, type Notice, type NoticeTone, PROMPT_RULE_EFFECT, type PromptBatchImageRef, type PromptBatchOrigin, type PromptDiagnostic, type PromptEffect, type PromptImageBatch, type PromptRunOutcome, type PromptRunOutput, type PromptRunPersistencePort, type PromptRunRecord, type PromptRunRecordedPayload, type ProviderCheckRecord, type ProviderCheckRecordedPayload, type ProviderCheckResult, PublishCheckResult, PublishFinding, RULES_WITHOUT_CAPABILITY_EFFECT, RULE_SCOPES, type RawSchema, type RecordedDerivationInput, type RecordedProposal, type RecoveryStatus, type ReducerFinding, ReferenceResolver, type RendererInput, type ResolveFailure, type ResolveResult, type ResolveScenePayloadInput, type ResolveShotInput, type ResolveShotPayloadInput, ResolveTechnicalError, type ResolvedCamera, type ResolvedNode, type ResolvedPlacement, type RunEventChannel, type RunFailure, type RunFailureClass, type RunItemReference, SZENEN_EVENT_PREFIX, SZENEN_EVENT_TYPES, SZENEN_ITEM_PREFIX, SZENEN_SCHEMAS, type SaveRunAsItemInput, type SceneDerivationPersistencePort, type SceneDerivationRecord, type SceneDerivationRecordedPayload, type SceneDerivationRecoveryRecord, type SceneDerivationRecoveryRecordedPayload, SchemaError, type SeedVorlage, type SeedZuordnung, type SeedZuordnungEintrag, type SelectableTargetModel, type StartImageGenerationInput, type StartRunFromSceneInput, type StartRunInput, type StepState, type SzenenArea, type SzenenAreaId, type SzenenBatchOrigin, type SzenenBatchOriginFailure, type SzenenBatchOriginVerdict, type SzenenBatchSourceKind, SzenenCommands, SzenenElementStore, SzenenElementType, type SzenenImageBatchHistoryPort, type SzenenImageBatchWritePort, type SzenenImageGenerationPort as SzenenImageGenerationPortContract, type SzenenImageLibraryPort, type SzenenItemPort, type SzenenMediaPort, SzenenQueries, type SzenenRunPort, type SzenenSeedTemplatePort, SzenenView, type SzenenViewCapabilities, type SzenenViewPort, type SzenenViewProps, TargetModelResolution, TextGenerationPort, UNCHECKED_PUBLISH_RULES, UPLOAD_MAX_BYTES, type UnselectableTargetModel, UnusableProposal, type VersionMedium, type VisibilityNode, type ZipBild, areasFor, batchesForPromptRun, bildPfad, buildSystemInstruction, buildUserPrompt, callOptional, capabilitiesOf, capabilityGate, capabilityReport, catalogueFor, checkCreateElementInput, checkElementType, checkImageExecutionProfile, checkImageExecutionProfiles, checkImageModelParameters, checkOptionalId, checkParents, checkPayloadPresent, checkPromptRunRecord, checkPublishVersionInput, checkRequiredId, checkReviseMetadataInput, checkRevision, checkRunResponse, checkSceneDerivationRecord, checkSceneDerivationRecoveryRecord, checkSetPreferredHeadInput, checkSzenenBatchOrigin, checkTitle, checkWriteDraftInput, collectImageBatches, collectImageGenerationOrders, collectPromptRuns, collectProviderChecks, collectSceneDerivationRecoveries, collectSceneDerivations, createBrowserTextGenerationPort, createClientDerivationPort, createClientRunPort, createEventLogDerivationPersistence, createEventLogRunPersistence, createFlowImageProvider, createFlowSzenenViewPort, createHfElementStore, createHfEventChannel, createHfImageBatchHistory, createHfImageBatchWrite, createHfImageGenerationBatchPersistence, createHfImageLibrary, createHfImageStore, createImageGenerationPort, createInMemoryEventChannel, createMemoryViewPort, derivationPoliciesOf, deriveItemFromRun, deriveLineage, describableContent, diagnosticOfFinding, diagnosticOfSchemaError, differentialSteps, draftRevisionOf, executableImageModels, findExecutableImageModel, findImageBatch, findImageGenerationOrder, findPromptRun, findProviderCheck, findSceneDerivation, findSceneDerivationRecovery, firstError, formatSeedListe, freezeDraftChain, freezeSceneWorkingState, gesamtHerkunft, gruppiereZuItems, hasPlacementCapability, isKnownElementType, isSzenenItemId, istZipDatei, itemIdForRun, ladeVorschauen, leseBilderAusZip, locatorTeile, logRevisionOf, mergeSzenenBatchOrigin, mitDefaultVorlage, noticeFor, ordersForPromptRun, ordneSeedsZu, parseRunResponse, parseSeedListe, preferredHeadRevisionOf, promptDiagnosticsOf, publishedHeadsOf, recoveriesForRun, recoveryStatusOf, reduceElementEvents, resolveArea, resolveScenePayload, resolveShot, resolveShotPayload, roundOfRun, rulesWithoutPromptEffect, runPromptDerivation, runStoreDifferential, sceneOnlyCapabilities, scopeOfPath, seedFehlerText, selectableTargetModels, totalModelCalls, typAusBytes, unclassifiedPublishRules, unsupportedReason };
|
|
4541
|
+
export { type AttachLibraryItemInput, type AttachLibraryItemResult, AuthoritativeSzenenStore, type BestandsGalerieEintrag, type BestandsItem, CATALOGUE_TYPES, CapabilityAnchorError, type CapabilityFlag, type CapabilityFlagName, type CapabilityReason, type CapabilityReport, type CapabilityReportInput, type CapabilityScope, type CapabilityState, type ChainQueries, type ClaimAndRunResult, type ClientDerivationChannel, type ClientDerivationStore, type CompletePromptOperationInput, type CompletePromptOperationResult, ContextChainPort, type CreateBrowserTextGenerationPortOptions, type CreateClientDerivationPortOptions, type CreateClientRunPortOptions, type CreateFlowSzenenViewPortOptions, type CreateHfElementStoreOptions, type CreateHfEventChannelOptions, type CreateHfImageBatchHistoryOptions, type CreateHfImageBatchPersistenceOptions, type CreateImageGenerationPortOptions, type CreateImageJobPortOptions, type CreateMemoryViewPortOptions, DEFAULT_SEED_VORLAGE, DerivableType, DerivationAssessment, DerivationConflict, DerivationDiagnostic, DerivationFailure, DerivationImage, DerivationInputMode, type DeriveItemInput, type DerivedItem, type DerivedLineage, type DerivedRelationship, type DerivedSzenenReference, type DifferentialResult, type DifferentialStep, type Divergence, DraftChainMeta, ELEMENT_VERSION_SCHEMA_FILE, type ElementEvent, type ElementEventChannel, ElementSnapshot, type ElementStoreState, type ExecutableImageModel, type ExecutionTargetModel, type ExistingSzenenItem, FLOW_EXECUTION_PATH, type FlowGenerateImage, type FlowGenerateImageParams, FlowGenerateText, type FreezeDraftChainInput, type FreezeFailure, type FreezeResult, type FreezeSceneResult, type FreezeSceneSuccess, type FreezeSceneWorkingStateInput, type FreezeSuccess, type FrozenChainNode, type FrozenSceneState, type GeneratedImage, type GruppierbaresBild, type HfImageStore, type HfImageStoreOptions, type IdFactory, type ImageBatchPersistedImage, type ImageBatchPersistedPayload, type ImageExecutionProfile, type ImageExecutionRoute, type ImageExecutionTargetModelReader, type ImageGenerationBatchPersistence, type ImageGenerationEventChannel, type ImageGenerationFinishedPayload, type ImageGenerationOrder, type ImageGenerationProviderPort, type ImageGenerationResult, type ImageGenerationRunReader, type ImageGenerationStartedPayload, type ImageHostCapability, type ImageJob, type ImageJobChannel, type ImageJobClaimedPayload, type ImageJobRequestedPayload, type ImageJobSettledPayload, type ImageModelChoice, type ImageModelParameters, ImageProvenance, type ImageProviderInput, type ImportBatchImageInput, type ImportBatchInput, type InMemoryEventChannel, type InputError, type IntegrityVerdict, type ItemDerivationFailure, type ItemDerivationFailureClass, type ItemDerivationResult, type ItemMedium, type LibraryImage, type LibraryImageItem, MCP_CLIENT_PROVIDER, type NodeContribution, NotDerivable, type Notice, type NoticeTone, PROMPT_RULE_EFFECT, type PreparePromptOperationInput, type PreparePromptOperationResult, type PreparedPromptOperation, type PromptBatchImageRef, type PromptBatchOrigin, type PromptDiagnostic, type PromptEffect, type PromptExecutionOrigin, type PromptImageBatch, type PromptOperationPreparedPayload, type PromptResponseContract, type PromptRunOutcome, type PromptRunOutput, type PromptRunPersistencePort, type PromptRunRecord, type PromptRunRecordedPayload, type ProviderCheckRecord, type ProviderCheckRecordedPayload, type ProviderCheckResult, PublishCheckResult, PublishFinding, RULES_WITHOUT_CAPABILITY_EFFECT, RULE_SCOPES, type RawSchema, type RecordedDerivationInput, type RecordedProposal, type RecoveryStatus, type ReducerFinding, ReferenceResolver, type RendererInput, type ResolveFailure, type ResolveResult, type ResolveScenePayloadInput, type ResolveShotInput, type ResolveShotPayloadInput, ResolveTechnicalError, type ResolvedCamera, type ResolvedNode, type ResolvedPlacement, type RunEventChannel, type RunFailure, type RunFailureClass, type RunItemReference, SZENEN_EVENT_PREFIX, SZENEN_EVENT_TYPES, SZENEN_ITEM_PREFIX, SZENEN_SCHEMAS, SZENEN_SNAPSHOT_FILE, SZENEN_SNAPSHOT_PREFIX, SZENEN_SNAPSHOT_SCHEMA_VERSION, type SaveRunAsItemInput, type SceneDerivationPersistencePort, type SceneDerivationRecord, type SceneDerivationRecordedPayload, type SceneDerivationRecoveryRecord, type SceneDerivationRecoveryRecordedPayload, SchemaError, type SeedVorlage, type SeedZuordnung, type SeedZuordnungEintrag, type SelectableTargetModel, type StartImageGenerationInput, type StartRunFromSceneInput, type StartRunInput, type StepState, type SzenenArea, type SzenenAreaId, type SzenenBatchOrigin, type SzenenBatchOriginFailure, type SzenenBatchOriginVerdict, type SzenenBatchSourceKind, SzenenCommands, SzenenElementStore, SzenenElementType, type SzenenImageBatchHistoryPort, type SzenenImageBatchWritePort, type SzenenImageGenerationPort as SzenenImageGenerationPortContract, type SzenenImageJobPort, type SzenenImageLibraryPort, type SzenenItemPort, type SzenenLeseErgebnis, type SzenenMediaPort, SzenenQueries, type SzenenRunPort, type SzenenSeedTemplatePort, type SzenenSnapshot, SzenenView, type SzenenViewCapabilities, type SzenenViewPort, type SzenenViewProps, TargetModelResolution, TextGenerationPort, UNCHECKED_PUBLISH_RULES, UNVERIFIED_MODEL_ID, UPLOAD_MAX_BYTES, type UnselectableTargetModel, UnusableProposal, type VersionMedium, type VisibilityNode, type ZipBild, areasFor, batchesForPromptRun, bildPfad, buildSystemInstruction, buildSzenenSnapshot, buildUserPrompt, callOptional, capabilitiesOf, capabilityGate, capabilityReport, catalogueFor, checkCreateElementInput, checkElementType, checkImageExecutionProfile, checkImageExecutionProfiles, checkImageModelParameters, checkOptionalId, checkParents, checkPayloadPresent, checkPromptRunRecord, checkPublishVersionInput, checkRequiredId, checkReviseMetadataInput, checkRevision, checkRunResponse, checkSceneDerivationRecord, checkSceneDerivationRecoveryRecord, checkSetPreferredHeadInput, checkSzenenBatchOrigin, checkTitle, checkWriteDraftInput, claimWon, collectImageBatches, collectImageGenerationOrders, collectImageJobs, collectPromptOperations, collectPromptRuns, collectProviderChecks, collectSceneDerivationRecoveries, collectSceneDerivations, completePromptOperation, createBrowserTextGenerationPort, createClientDerivationPort, createClientRunPort, createEventLogDerivationPersistence, createEventLogRunPersistence, createFlowImageProvider, createFlowSzenenViewPort, createHfElementStore, createHfEventChannel, createHfImageBatchHistory, createHfImageBatchWrite, createHfImageGenerationBatchPersistence, createHfImageLibrary, createHfImageStore, createImageGenerationPort, createImageJobPort, createInMemoryEventChannel, createMemoryViewPort, derivationPoliciesOf, deriveItemFromRun, deriveLineage, describableContent, diagnosticOfFinding, diagnosticOfSchemaError, differentialSteps, draftRevisionOf, executableImageModels, findExecutableImageModel, findImageBatch, findImageGenerationOrder, findImageJob, findPromptOperation, findPromptRun, findProviderCheck, findSceneDerivation, findSceneDerivationRecovery, firstError, formatSeedListe, freezeDraftChain, freezeSceneWorkingState, generationBatchIdOf, gesamtHerkunft, gruppiereZuItems, hasPlacementCapability, isKnownElementType, isSzenenItemId, istSzenenSnapshotDatei, istZipDatei, itemIdForRun, itemsAusBestand, jobsForPromptRun, ladeVorschauen, leseBilderAusZip, locatorAus, locatorTeile, logRevisionOf, mergeSnapshotAndPending, mergeSzenenBatchOrigin, mimeTypAus, mitDefaultVorlage, noticeFor, ordersForPromptRun, ordneSeedsZu, parseRunResponse, parseSeedListe, parseSzenenSnapshot, preferredHeadRevisionOf, preparePromptOperation, promptDiagnosticsOf, publishedHeadsOf, recoveriesForRun, recoveryStatusOf, reduceElementEvents, resolveArea, resolveScenePayload, resolveShot, resolveShotPayload, responseContractOf, roundOfRun, rulesWithoutPromptEffect, runOfOperation, runPromptDerivation, runStoreDifferential, sameResponseAs, sceneOnlyCapabilities, scopeOfPath, seedFehlerText, selectableTargetModels, szenenSnapshotFilename, totalModelCalls, typAusBytes, unclassifiedPublishRules, unsupportedReason };
|