@cyberart-io/engine 0.0.9 → 0.0.11

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/CHANGELOG.md CHANGED
@@ -2,6 +2,32 @@
2
2
 
3
3
  All notable changes to `@cyberart-io/engine`. Each entry links the guide in `docs/` and the pull request on [cyberart-io/cyberart.io](https://github.com/cyberart-io/cyberart.io). Versions before 0.0.9 predate this file.
4
4
 
5
+ ## Unreleased
6
+
7
+ ## 0.0.11 — 2026-09-06
8
+
9
+ Production-scenario overlap precedence and transactional reload. Additive: existing exports keep their signatures.
10
+
11
+ ### Added
12
+
13
+ - **Transactional production-scenario reload** — `reload` preflights the sidecar envelope, optional `host.validateRestoreState`, projected input surface, and every present module sidecar before mutation. Apply is one transaction with rollback on failure; invalid sidecars localize at subsystem boundaries (`invalid-visual-sidecar`, `invalid-semantic-sidecar`, `invalid-binding-sidecar`, `invalid-sequence-sidecar`, `invalid-audio-sidecar`, `invalid-host-sidecar`). Legacy envelopes omitting sidecar keys remain compatible. [docs/production-scenario.md](docs/production-scenario.md) · [#60](https://github.com/cyberart-io/cyberart.io/pull/60)
14
+
15
+ - **Overlap precedence on production input surface** — `ProductionScenarioControl.priority` resolves intersecting regions deterministically in browser and headless. Equal or missing priority on an overlapping pair still fails closed at boundary `input` (`ambiguous-geometry`). Coordinate clicks record `observation.inputHitTest` (selected and rejected control ids). [docs/production-scenario.md](docs/production-scenario.md) · [#59](https://github.com/cyberart-io/cyberart.io/pull/59)
16
+
17
+ ## 0.0.10 — 2026-09-06
18
+
19
+ Production-scenario follow-ups after the 0.0.9 Animation Framework cut. Additive: existing exports keep their signatures.
20
+
21
+ ### Added
22
+
23
+ - **Dynamic host geometry and controls** — production scenarios project the active input surface from host state (`host.projectInputSurface`). Accepted reduces and reload rebuild visible/focusable controls and the geometry document together. Removed controls are not clickable or focusable. Browser harness `setGeometry` updates CSS hit-testing. Missing, overlapping, or stale geometry fails closed at boundary `input` (`invalid-geometry` / `ambiguous-geometry` / `stale-geometry`). Reload syncs the input surface without `applyPresentation()` (no sequence replay). [docs/production-scenario.md](docs/production-scenario.md) · [docs/browser-harness.md](docs/browser-harness.md) · [#49](https://github.com/cyberart-io/cyberart.io/pull/49)
24
+
25
+ - **Runtime reduced-motion propagation** — a production-scenario `reducedMotion` step (and `setReducedMotion`) updates browser/a11y plus visual, sequence, and audio/reduced-sensory policy. Active sequences **continue** with compiled durations; future `playSequence` uses the new flag. Semantic layers are a declared no-op. Evidence records `observation.reducedMotion` / `reducedMotionPropagation`. Construction-time `matrix.reducedMotion` is unchanged. [docs/production-scenario.md](docs/production-scenario.md) · [#48](https://github.com/cyberart-io/cyberart.io/pull/48)
26
+
27
+ - **Audio cue snapshot restore** — versioned `schemaVersion` `1` sidecar on `createAudioCueTimeline` / `createHeadlessAudioAdapter`. `restore()` validates JSON before mutation; unknown schema, unknown cue ids, or malformed state fail closed. Mute restores; unlock is observation-only. Production-scenario `reload` restores `hostState.audio` last (no second play) and reports `observation.audioRestoreOk` / `invalid-audio-sidecar`. [docs/audio.md](docs/audio.md) · [docs/production-scenario.md](docs/production-scenario.md) · [#46](https://github.com/cyberart-io/cyberart.io/pull/46)
28
+
29
+ - **Production scenario host-owned audio** — optional `hostAudio` observer on `createProductionScenarioRunner`. A host that already owns a production audio controller reports invocation / completion / failure / skip / fallback (plus captions and envelope identity) without duplicating the beat as a presentation sequence. Evidence is in `traces.hostAudio`; `observation.audioInvoked` follows host `invoked` / `completed` only (same as sequence scheduled/started); `audioFailed` and captions still merge skip / fallback / failed rows. Invalid adapters fail closed at boundary `audio` (`invalid-host-audio`). [docs/production-scenario.md](docs/production-scenario.md) · [#45](https://github.com/cyberart-io/cyberart.io/pull/45)
30
+
5
31
  ## 0.0.9 — 2026-09-05
6
32
 
7
33
  Eleven Animation Framework modules. All are additive: no existing export changed signature, and the `@cyberart-io/engine` / `@cyberart-io/engine/headless` entries export the same new API. Every module ships a `snapshot()` / `restore()` pair that validates JSON before mutating, and typed `*.state.*` / `*.diagnostic.*` event contracts for the router.
@@ -1678,6 +1678,7 @@ type PlayCueResult = {
1678
1678
  */
1679
1679
 
1680
1680
  declare const AUDIO_CUE_EVENTS: readonly ["audio.cue.scheduled", "audio.cue.started", "audio.cue.skipped", "audio.cue.failed"];
1681
+ declare const AUDIO_CUE_SNAPSHOT_SCHEMA_VERSION: 1;
1681
1682
  type AudioCueEventType = (typeof AUDIO_CUE_EVENTS)[number];
1682
1683
  type AudioCueSkipReason = 'reduced-sensory' | 'muted' | 'unauthorized';
1683
1684
  type AudioCueFailReason = 'asset-failed' | 'torn-down' | 'invalid';
@@ -1695,6 +1696,8 @@ type AudioCueView = CueView & {
1695
1696
  participantId?: string;
1696
1697
  priority: number;
1697
1698
  audioPhase: 'scheduled' | 'started' | 'skipped' | 'failed' | 'completed';
1699
+ /** Original play spec; omitted when the cue was not repeating. */
1700
+ repeat?: CueRepeatPolicy;
1698
1701
  };
1699
1702
  type AudioCueEvent = {
1700
1703
  type: AudioCueEventType;
@@ -1708,11 +1711,28 @@ type AudioCueEvent = {
1708
1711
  progress: number;
1709
1712
  };
1710
1713
  type AudioCueTimelineSnapshot = {
1714
+ schemaVersion: typeof AUDIO_CUE_SNAPSHOT_SCHEMA_VERSION;
1711
1715
  frame: number;
1712
1716
  reducedSensory: boolean;
1713
1717
  cues: AudioCueView[];
1714
1718
  events: AudioCueEvent[];
1715
1719
  };
1720
+ type HeadlessAudioAdapterSnapshot = AudioCueTimelineSnapshot & {
1721
+ unlock: AudioUnlockStatus;
1722
+ muted: boolean;
1723
+ };
1724
+ type AudioCueDiagnostic = {
1725
+ code: string;
1726
+ detail: string;
1727
+ path?: string;
1728
+ };
1729
+ type RestoreAudioCueResult = {
1730
+ ok: true;
1731
+ snapshot: AudioCueTimelineSnapshot;
1732
+ } | {
1733
+ ok: false;
1734
+ errors: AudioCueDiagnostic[];
1735
+ };
1716
1736
  type PlayAudioCueResult = {
1717
1737
  ok: true;
1718
1738
  cue: AudioCueView;
@@ -1727,8 +1747,15 @@ type AudioCueTimeline = {
1727
1747
  cancel(idempotencyKey: string): boolean;
1728
1748
  reset(): void;
1729
1749
  snapshot(): AudioCueTimelineSnapshot;
1750
+ restore(input: unknown): RestoreAudioCueResult;
1730
1751
  get(idempotencyKey: string): AudioCueView | undefined;
1731
1752
  dispose(): void;
1753
+ /**
1754
+ * Updates skip-playback for future cue starts. Already-started cues
1755
+ * continue; scheduled cues that have not started yet use the new flag
1756
+ * when they start.
1757
+ */
1758
+ setReducedSensory(value: boolean): void;
1732
1759
  readonly frame: number;
1733
1760
  readonly reducedSensory: boolean;
1734
1761
  };
@@ -1739,12 +1766,13 @@ type HeadlessAudioAdapter = {
1739
1766
  play(spec: AudioCueSpec): PlayAudioCueResult;
1740
1767
  step(frames?: number): AudioCueEvent[];
1741
1768
  handleHostEvent(event: HostEvent): void;
1742
- snapshot(): AudioCueTimelineSnapshot & {
1743
- unlock: AudioUnlockStatus;
1744
- muted: boolean;
1745
- };
1769
+ snapshot(): HeadlessAudioAdapterSnapshot;
1770
+ restore(input: unknown): RestoreAudioCueResult;
1746
1771
  destroy(): void;
1772
+ setReducedSensory(value: boolean): void;
1773
+ readonly reducedSensory: boolean;
1747
1774
  };
1775
+ declare function parseAudioCueSnapshot(input: unknown): RestoreAudioCueResult;
1748
1776
  declare function createHeadlessAudioAdapter(options?: {
1749
1777
  reducedSensory?: boolean;
1750
1778
  originFrame?: number;
@@ -1893,9 +1921,15 @@ type VisualLayerController = {
1893
1921
  inspect(): VisualLayerInspect[];
1894
1922
  captureComposedFrame(): ComposedFrame;
1895
1923
  destroy(): void;
1924
+ /**
1925
+ * Updates the host flag used by future `play()` calls. In-flight
1926
+ * transitions keep the durations they were compiled with.
1927
+ */
1928
+ setReducedMotion(value: boolean): void;
1896
1929
  readonly frame: number;
1897
1930
  readonly sceneId: string | null;
1898
1931
  readonly compositor: Compositor;
1932
+ readonly reducedMotion: boolean;
1899
1933
  };
1900
1934
  type VisualLayerCapture = {
1901
1935
  frame: ComposedFrame;
@@ -2270,6 +2304,8 @@ type PresentationInvocationView = {
2270
2304
  completedStepIds: string[];
2271
2305
  activeStepIds: string[];
2272
2306
  selectedFallbackId: string | null;
2307
+ /** Reduced-motion flag used to compile this invocation's step durations. */
2308
+ compiledReducedMotion: boolean;
2273
2309
  };
2274
2310
  type PresentationSequenceSnapshot = {
2275
2311
  schemaVersion: typeof PRESENTATION_SEQUENCE_SNAPSHOT_SCHEMA_VERSION;
@@ -2325,6 +2361,13 @@ type PresentationSequencePlayer = {
2325
2361
  }): PresentationCueIntent[];
2326
2362
  get(sequenceId: string): PresentationSequenceDefinition | undefined;
2327
2363
  destroy(): void;
2364
+ /**
2365
+ * Updates the host flag used by future `playSequence` / cue-intent
2366
+ * compilation. The active invocation **continues** with the durations it
2367
+ * was compiled with. Queued plays that have not started yet use the new
2368
+ * policy when they start.
2369
+ */
2370
+ setReducedMotion(value: boolean): void;
2328
2371
  readonly frame: number;
2329
2372
  readonly reducedMotion: boolean;
2330
2373
  readonly reducedSensory: boolean;
@@ -3937,8 +3980,10 @@ type BrowserHarness = {
3937
3980
  readonly compositor: Compositor | undefined;
3938
3981
  readonly layout: PresentationLayout;
3939
3982
  readonly events: readonly EventEnvelope[];
3983
+ readonly geometry: GeometryDocument | undefined;
3940
3984
  goto(url?: string): void;
3941
3985
  setViewport(width: number, height: number, dpr?: number): void;
3986
+ setGeometry(next?: GeometryDocument): void;
3942
3987
  setReducedMotion(value: boolean): void;
3943
3988
  setInputModality(value: BrowserInputModality): void;
3944
3989
  click(selectorOrX: string | number, y?: number): void;
@@ -3961,16 +4006,19 @@ type BrowserHarness = {
3961
4006
  *
3962
4007
  * End-to-end production composition scenario harness. Composes the real
3963
4008
  * browser host, runtime group, compositor, visual/semantic layers, bindings,
3964
- * sequences, headless audio, snapshots, and replay inspector. Does not
3965
- * introduce a second runtime. Authored scenarios are JSON-serializable.
4009
+ * sequences, headless audio, optional host-owned audio observation, snapshots,
4010
+ * and replay inspector. Does not introduce a second runtime. Authored
4011
+ * scenarios are JSON-serializable.
3966
4012
  */
3967
4013
 
3968
4014
  declare const PRODUCTION_SCENARIO_SCHEMA_VERSION: 1;
3969
4015
  declare const PRODUCTION_SCENARIO_SNAPSHOT_SCHEMA_VERSION: 1;
3970
4016
  declare const PRODUCTION_SCENARIO_BOUNDARIES: readonly ["input", "reducer", "routing", "binding", "cue", "pixels", "caption", "audio", "save-replay"];
3971
4017
  type ProductionScenarioBoundary = (typeof PRODUCTION_SCENARIO_BOUNDARIES)[number];
3972
- declare const PRODUCTION_SCENARIO_ERROR_CODES: readonly ["invalid-scenario", "invalid-schema", "unknown-field", "missing-field", "callbacks-forbidden", "missing-participant", "missing-layer", "destroyed", "assertion-failed"];
4018
+ declare const PRODUCTION_SCENARIO_ERROR_CODES: readonly ["invalid-scenario", "invalid-schema", "unknown-field", "missing-field", "callbacks-forbidden", "missing-participant", "missing-layer", "destroyed", "assertion-failed", "invalid-host-audio", "invalid-audio-sidecar", "invalid-visual-sidecar", "invalid-semantic-sidecar", "invalid-binding-sidecar", "invalid-sequence-sidecar", "invalid-host-sidecar", "unsupported-preference", "invalid-geometry", "ambiguous-geometry", "stale-geometry"];
3973
4019
  type ProductionScenarioErrorCode = (typeof PRODUCTION_SCENARIO_ERROR_CODES)[number];
4020
+ declare const HOST_OWNED_AUDIO_EVENT_KINDS: readonly ["invoked", "completed", "failed", "skipped", "fallback"];
4021
+ type HostOwnedAudioEventKind = (typeof HOST_OWNED_AUDIO_EVENT_KINDS)[number];
3974
4022
  declare const PRODUCTION_SCENARIO_VIEWPORT_PRESETS: readonly ["desktop", "mobile"];
3975
4023
  type ProductionScenarioViewportPreset = (typeof PRODUCTION_SCENARIO_VIEWPORT_PRESETS)[number];
3976
4024
  declare const DEFAULT_PRODUCTION_SCENARIO_VIEWPORTS: {
@@ -4063,16 +4111,93 @@ type ProductionScenarioReduceResult = {
4063
4111
  reason?: string;
4064
4112
  playSequence?: string;
4065
4113
  };
4114
+ type ProductionScenarioControl = {
4115
+ id: string;
4116
+ name?: string;
4117
+ role?: string;
4118
+ /** Higher priority wins normalized overlap hit-tests when regions intersect. */
4119
+ priority?: number;
4120
+ };
4121
+ type ProductionScenarioInputHitTest = {
4122
+ x: number;
4123
+ y: number;
4124
+ selectedControlId: string;
4125
+ rejectedControlIds: readonly string[];
4126
+ };
4127
+ type ProductionScenarioInputSurface = {
4128
+ controls: readonly ProductionScenarioControl[];
4129
+ geometry: GeometryDocument;
4130
+ };
4066
4131
  type ProductionScenarioHost = {
4067
4132
  initialState: JsonObject;
4068
4133
  reduce(state: JsonObject, intent: EventInput): ProductionScenarioReduceResult;
4069
4134
  project?(state: JsonObject): JsonObject;
4135
+ /**
4136
+ * Host-generic projection of the active input surface. After an accepted
4137
+ * reduce (and on reload) the runner rebuilds visible/focusable controls and
4138
+ * the geometry document from this result. Omit to keep construction-time
4139
+ * geometry and controls.
4140
+ */
4141
+ projectInputSurface?(state: JsonObject): ProductionScenarioInputSurface;
4142
+ /**
4143
+ * Optional pre-reload validator for host JSON from a saved sidecar. When
4144
+ * supplied, reload rejects invalid host state before any live mutation.
4145
+ */
4146
+ validateRestoreState?(state: JsonObject): {
4147
+ ok: true;
4148
+ } | {
4149
+ ok: false;
4150
+ detail: string;
4151
+ };
4152
+ };
4153
+ type HostOwnedAudioEvent = {
4154
+ kind: HostOwnedAudioEventKind;
4155
+ atFrame?: number;
4156
+ name?: string;
4157
+ caption?: string;
4158
+ assetId?: string;
4159
+ reason?: string;
4160
+ id?: string;
4161
+ correlationId?: string;
4162
+ causationId?: string;
4163
+ };
4164
+ type HostOwnedAudioSnapshot = {
4165
+ events: readonly HostOwnedAudioEvent[];
4166
+ captions?: readonly string[];
4167
+ muted?: boolean;
4168
+ };
4169
+ /**
4170
+ * Host-owned audio/presentation observer. The host already drives the
4171
+ * controller; the runner only snapshots evidence. Generic: no dialogue
4172
+ * product semantics. At least one of `snapshot` or `collect` is required.
4173
+ */
4174
+ type HostOwnedAudioObserver = {
4175
+ snapshot?(): HostOwnedAudioSnapshot;
4176
+ collect?(): HostOwnedAudioSnapshot;
4177
+ inspect?(): unknown;
4070
4178
  };
4071
4179
  type ProductionScenarioLocalization = {
4072
4180
  boundary: ProductionScenarioBoundary;
4073
4181
  code: ProductionScenarioErrorCode;
4074
4182
  detail: string;
4075
4183
  };
4184
+ declare const REDUCED_MOTION_ACTIVE_SEQUENCE_POLICY: "continue";
4185
+ type ReducedMotionActiveSequencePolicy = typeof REDUCED_MOTION_ACTIVE_SEQUENCE_POLICY;
4186
+ declare const REDUCED_MOTION_PARTICIPANT_IDS: readonly ["browser", "visual", "sequence", "audio", "semantic"];
4187
+ type ReducedMotionParticipantId = (typeof REDUCED_MOTION_PARTICIPANT_IDS)[number];
4188
+ type ReducedMotionParticipantReport = {
4189
+ id: ReducedMotionParticipantId;
4190
+ applied: boolean;
4191
+ reducedMotion?: boolean;
4192
+ reducedSensory?: boolean;
4193
+ reason?: string;
4194
+ };
4195
+ type ReducedMotionPropagation = {
4196
+ from: boolean;
4197
+ to: boolean;
4198
+ activeSequencePolicy: ReducedMotionActiveSequencePolicy;
4199
+ participants: ReducedMotionParticipantReport[];
4200
+ };
4076
4201
  type ProductionScenarioObservation = {
4077
4202
  inputDispatched: boolean;
4078
4203
  inputTarget?: string;
@@ -4095,6 +4220,11 @@ type ProductionScenarioObservation = {
4095
4220
  muted: boolean;
4096
4221
  replayMatch?: boolean;
4097
4222
  snapshotOk?: boolean;
4223
+ audioRestoreOk?: boolean;
4224
+ reducedMotion?: boolean;
4225
+ reducedMotionPropagation?: ReducedMotionPropagation | null;
4226
+ activeControlIds: string[];
4227
+ inputHitTest?: ProductionScenarioInputHitTest;
4098
4228
  };
4099
4229
  type ProductionScenarioExpectation = {
4100
4230
  inputDispatched?: boolean;
@@ -4110,6 +4240,7 @@ type ProductionScenarioExpectation = {
4110
4240
  audioFailed?: boolean;
4111
4241
  replayMatch?: boolean;
4112
4242
  snapshotOk?: boolean;
4243
+ audioRestoreOk?: boolean;
4113
4244
  };
4114
4245
  type ProductionScenarioEvidenceBundle = {
4115
4246
  schemaVersion: typeof PRODUCTION_SCENARIO_SNAPSHOT_SCHEMA_VERSION;
@@ -4133,6 +4264,7 @@ type ProductionScenarioEvidenceBundle = {
4133
4264
  envelopes: EventEnvelope[];
4134
4265
  inspector: InspectorRecord[];
4135
4266
  audio: AudioCueEvent[];
4267
+ hostAudio: HostOwnedAudioEvent[];
4136
4268
  actions: ProductionScenarioStep[];
4137
4269
  };
4138
4270
  screenshot: {
@@ -4161,6 +4293,13 @@ type CreateProductionScenarioRunnerOptions = {
4161
4293
  bindings?: PresentationBindingManifest | unknown;
4162
4294
  geometry?: GeometryDocument;
4163
4295
  host: ProductionScenarioHost;
4296
+ /**
4297
+ * Optional host-owned audio observer. When supplied, the runner records
4298
+ * invocation / completion / failure / skip / fallback evidence from this
4299
+ * adapter without requiring a presentation sequence for the same beat.
4300
+ * Invalid adapters fail closed at boundary `audio`.
4301
+ */
4302
+ hostAudio?: HostOwnedAudioObserver;
4164
4303
  sequenceBindings?: Readonly<Record<string, PresentationSequenceBindings>>;
4165
4304
  contentWidth?: number;
4166
4305
  contentHeight?: number;
@@ -4200,13 +4339,22 @@ type ProductionScenarioRunner = {
4200
4339
  visual: ReturnType<VisualLayerController['inspect']> | null;
4201
4340
  semantic: ReturnType<SemanticLayerController['inspect']> | null;
4202
4341
  audio: ReturnType<HeadlessAudioAdapter['snapshot']>;
4342
+ hostAudio: HostOwnedAudioSnapshot | null;
4203
4343
  participants: string[];
4204
4344
  layers: string[];
4205
4345
  composition: ProductionScenarioLocalization | null;
4346
+ reducedMotion: boolean;
4347
+ reducedMotionPropagation: ReducedMotionPropagation | null;
4348
+ inputSurface: {
4349
+ controlIds: string[];
4350
+ controls: readonly ProductionScenarioControl[];
4351
+ geometry: GeometryDocument | null;
4352
+ };
4206
4353
  };
4207
4354
  destroy(): void;
4208
4355
  };
4209
4356
  declare function productionScenarioEventContracts(): EventContract[];
4357
+ declare function isHostOwnedAudioEventKind(value: unknown): value is HostOwnedAudioEventKind;
4210
4358
  declare function defineProductionScenario(input: unknown): DefineProductionScenarioResult;
4211
4359
  declare function fnv1aHex(data: string | Uint8Array): string;
4212
4360
  declare function localizeProductionScenarioFailure(observed: ProductionScenarioObservation, expected?: ProductionScenarioExpectation): ProductionScenarioLocalization | null;
@@ -4232,4 +4380,4 @@ type WriteComposedFrameResult = ComposedFrame & {
4232
4380
  */
4233
4381
  declare function writeComposedFrame(compositor: Compositor, path?: string): Promise<WriteComposedFrameResult>;
4234
4382
 
4235
- export { type BoundReplaySession, CONTENT_REVISION_ACTIVATED_EVENT, CONTENT_REVISION_SNAPSHOT_SCHEMA_VERSION, type CausationTreeNode, type ContentRevisionActivator, type ContentRevisionBundle, type ContentRevisionInspect, type ContentRevisionSnapshot, type CreateHeadlessHarnessOptions, type CreateHeadlessMultiCartHarnessOptions, type CreateReplayInspectorOptions, type CreateSelectionTraceOptions, DEFAULT_HEADLESS_HEIGHT, DEFAULT_HEADLESS_WIDTH, DEFAULT_MAX_SELECTION_RECORDS, DEFAULT_PRODUCTION_SCENARIO_VIEWPORTS, type FrameBenchmarkOptions, type FrameBenchmarkResult, type GlyphAtlas, HEADLESS_PNG_DATA_URL, type HeadlessAudioAdapter, type HeadlessCanvas2DSettings, type HeadlessFrameError, type HeadlessHarness, type HeadlessImageFixture, type HeadlessInspect, type HeadlessJobWorker, type HeadlessMultiCartHarness, HeadlessUnsupportedOperationError, type HostGrantSet, type InspectorRecord, type InstallHeadlessCanvasOptions, type JobCoordinator, type JobCoordinatorSnapshot, type JobInspect, PRESENTATION_BINDING_APPLIED_EVENT, PRESENTATION_BINDING_SNAPSHOT_SCHEMA_VERSION, PRODUCTION_SCENARIO_BOUNDARIES, PRODUCTION_SCENARIO_SCHEMA_VERSION, PRODUCTION_SCENARIO_SNAPSHOT_SCHEMA_VERSION, type PortalInspect, type PortalLifecycle, type PortalLifecycleSnapshot, type PresentationBindingInspect, type PresentationBindingManifest, type PresentationBindingRuntime, type PresentationBindingSnapshot, type PresentationSequenceDefinition, type PresentationSequenceInspect, type PresentationSequencePlayer, type PresentationSequenceSnapshot, type ProductionScenarioDefinition, type ProductionScenarioEvidenceBundle, type ProductionScenarioExpectation, type ProductionScenarioHost, type ProductionScenarioLocalization, type ProductionScenarioObservation, type ProductionScenarioRunner, type RemoteCartInspect, type RemoteCartSandbox, type ReplayCompareResult, type ReplayInspector, type ReplayInspectorExport, type ReplayInspectorReport, type ReplayParticipantSummary, type ReplayTapeAction, type ReplayTraceFilter, SELECTION_DECISION_KINDS, SELECTION_REASON_CODES, SELECTION_TRACE_SCHEMA_VERSION, SELECTION_TRACE_SENSITIVE_KEYS, type SelectionAssetResolution, type SelectionBindingEvaluation, type SelectionContentIdentity, type SelectionDecisionInput, type SelectionDecisionKind, type SelectionDecisionRecord, type SelectionPresentationDecision, type SelectionReasonCode, type SelectionSequenceDecision, type SelectionSnapshotProvenance, type SelectionStagingOutcome, type SelectionStagingResult, type SelectionTrace, type SelectionTraceExport, type SelectionTraceFilter, type SelectionTraceReport, type SemanticLayerController, type SemanticPublishedRegion, type SemanticRegionInspect, UPDATE_GOLDEN_ENV, type VisualArtifactPaths, type VisualArtifacts, type VisualCompareOptions, type VisualCompareResult, type VisualLayerCapture, type VisualLayerController, type VisualLayerInspect, WORLD_PATCH_ACCEPTED_EVENT, WORLD_PATCH_SNAPSHOT_SCHEMA_VERSION, type WorldGraph, type WorldGraphInspect, type WorldGraphProjection, type WorldGraphSnapshot, type WorldPatchApplier, type WorldPatchInspect, type WorldPatchSnapshot, type WorldPersistenceAdapter, type WriteComposedFrameResult, assertPixelsEqual, assertPngDataUrlsEqual, attachHeadlessCanvas2D, attachSelectionTrace, benchmarkCartFrames, cabinetPortal, captureVisualLayers, compareImageData, compareReplayTraces, contentRevisionEventContracts, createContentRevisionActivator, createDefaultGlyphAtlas, createHeadlessAudioAdapter, createHeadlessHarness, createHeadlessJobWorker, createHeadlessMultiCartHarness, createHostGrantSet, createImageFixture, createJobCoordinator, createMemoryJobPersistence, createMemoryWorldPersistence, createPortalLifecycle, createPresentationBindingRuntime, createPresentationSequencePlayer, createProductionScenarioRunner, createRemoteCartSandbox, createRemoteContentAdapter, createReplayInspector, createSelectionTrace, createSemanticLayerController, createStaticContentAdapter, createVisualLayerController, createWorldGraph, createWorldPatchApplier, decodePng, definePresentationBindings, definePresentationSequence, defineProductionScenario, encodePng, encodePngDataUrl, evaluatePresentationBindings, fnv1aHex, formatFrameBenchmarkResult, getHeadlessSurface, imageDataFromPngDataUrl, installHeadlessCanvas, isSelectionDecisionKind, isSelectionReasonCode, jobEventContracts, localizeProductionScenarioFailure, makeImageData, paintingPortal, presentationBindingEventContracts, presentationSequenceEventContracts, productionScenarioEventContracts, recordSelectionDecision, replayExportedTrace, setDefaultGlyphAtlas, shouldUpdateGolden, worldGraphEventContracts, worldPatchEventContracts, writeComposedFrame, writeVisualArtifacts };
4383
+ export { AUDIO_CUE_SNAPSHOT_SCHEMA_VERSION, type AudioCueDiagnostic, type BoundReplaySession, CONTENT_REVISION_ACTIVATED_EVENT, CONTENT_REVISION_SNAPSHOT_SCHEMA_VERSION, type CausationTreeNode, type ContentRevisionActivator, type ContentRevisionBundle, type ContentRevisionInspect, type ContentRevisionSnapshot, type CreateHeadlessHarnessOptions, type CreateHeadlessMultiCartHarnessOptions, type CreateProductionScenarioRunnerOptions, type CreateReplayInspectorOptions, type CreateSelectionTraceOptions, DEFAULT_HEADLESS_HEIGHT, DEFAULT_HEADLESS_WIDTH, DEFAULT_MAX_SELECTION_RECORDS, DEFAULT_PRODUCTION_SCENARIO_VIEWPORTS, type FrameBenchmarkOptions, type FrameBenchmarkResult, type GlyphAtlas, HEADLESS_PNG_DATA_URL, HOST_OWNED_AUDIO_EVENT_KINDS, type HeadlessAudioAdapter, type HeadlessAudioAdapterSnapshot, type HeadlessCanvas2DSettings, type HeadlessFrameError, type HeadlessHarness, type HeadlessImageFixture, type HeadlessInspect, type HeadlessJobWorker, type HeadlessMultiCartHarness, HeadlessUnsupportedOperationError, type HostGrantSet, type HostOwnedAudioEvent, type HostOwnedAudioEventKind, type HostOwnedAudioObserver, type HostOwnedAudioSnapshot, type InspectorRecord, type InstallHeadlessCanvasOptions, type JobCoordinator, type JobCoordinatorSnapshot, type JobInspect, PRESENTATION_BINDING_APPLIED_EVENT, PRESENTATION_BINDING_SNAPSHOT_SCHEMA_VERSION, PRODUCTION_SCENARIO_BOUNDARIES, PRODUCTION_SCENARIO_SCHEMA_VERSION, PRODUCTION_SCENARIO_SNAPSHOT_SCHEMA_VERSION, type PortalInspect, type PortalLifecycle, type PortalLifecycleSnapshot, type PresentationBindingInspect, type PresentationBindingManifest, type PresentationBindingRuntime, type PresentationBindingSnapshot, type PresentationSequenceDefinition, type PresentationSequenceInspect, type PresentationSequencePlayer, type PresentationSequenceSnapshot, type ProductionScenarioControl, type ProductionScenarioDefinition, type ProductionScenarioEvidenceBundle, type ProductionScenarioExpectation, type ProductionScenarioHost, type ProductionScenarioInputHitTest, type ProductionScenarioInputSurface, type ProductionScenarioLocalization, type ProductionScenarioObservation, type ProductionScenarioRunner, REDUCED_MOTION_ACTIVE_SEQUENCE_POLICY, REDUCED_MOTION_PARTICIPANT_IDS, type ReducedMotionActiveSequencePolicy, type ReducedMotionParticipantId, type ReducedMotionParticipantReport, type ReducedMotionPropagation, type RemoteCartInspect, type RemoteCartSandbox, type ReplayCompareResult, type ReplayInspector, type ReplayInspectorExport, type ReplayInspectorReport, type ReplayParticipantSummary, type ReplayTapeAction, type ReplayTraceFilter, type RestoreAudioCueResult, SELECTION_DECISION_KINDS, SELECTION_REASON_CODES, SELECTION_TRACE_SCHEMA_VERSION, SELECTION_TRACE_SENSITIVE_KEYS, type SelectionAssetResolution, type SelectionBindingEvaluation, type SelectionContentIdentity, type SelectionDecisionInput, type SelectionDecisionKind, type SelectionDecisionRecord, type SelectionPresentationDecision, type SelectionReasonCode, type SelectionSequenceDecision, type SelectionSnapshotProvenance, type SelectionStagingOutcome, type SelectionStagingResult, type SelectionTrace, type SelectionTraceExport, type SelectionTraceFilter, type SelectionTraceReport, type SemanticLayerController, type SemanticPublishedRegion, type SemanticRegionInspect, UPDATE_GOLDEN_ENV, type VisualArtifactPaths, type VisualArtifacts, type VisualCompareOptions, type VisualCompareResult, type VisualLayerCapture, type VisualLayerController, type VisualLayerInspect, WORLD_PATCH_ACCEPTED_EVENT, WORLD_PATCH_SNAPSHOT_SCHEMA_VERSION, type WorldGraph, type WorldGraphInspect, type WorldGraphProjection, type WorldGraphSnapshot, type WorldPatchApplier, type WorldPatchInspect, type WorldPatchSnapshot, type WorldPersistenceAdapter, type WriteComposedFrameResult, assertPixelsEqual, assertPngDataUrlsEqual, attachHeadlessCanvas2D, attachSelectionTrace, benchmarkCartFrames, cabinetPortal, captureVisualLayers, compareImageData, compareReplayTraces, contentRevisionEventContracts, createContentRevisionActivator, createDefaultGlyphAtlas, createHeadlessAudioAdapter, createHeadlessHarness, createHeadlessJobWorker, createHeadlessMultiCartHarness, createHostGrantSet, createImageFixture, createJobCoordinator, createMemoryJobPersistence, createMemoryWorldPersistence, createPortalLifecycle, createPresentationBindingRuntime, createPresentationSequencePlayer, createProductionScenarioRunner, createRemoteCartSandbox, createRemoteContentAdapter, createReplayInspector, createSelectionTrace, createSemanticLayerController, createStaticContentAdapter, createVisualLayerController, createWorldGraph, createWorldPatchApplier, decodePng, definePresentationBindings, definePresentationSequence, defineProductionScenario, encodePng, encodePngDataUrl, evaluatePresentationBindings, fnv1aHex, formatFrameBenchmarkResult, getHeadlessSurface, imageDataFromPngDataUrl, installHeadlessCanvas, isHostOwnedAudioEventKind, isSelectionDecisionKind, isSelectionReasonCode, jobEventContracts, localizeProductionScenarioFailure, makeImageData, paintingPortal, parseAudioCueSnapshot, presentationBindingEventContracts, presentationSequenceEventContracts, productionScenarioEventContracts, recordSelectionDecision, replayExportedTrace, setDefaultGlyphAtlas, shouldUpdateGolden, worldGraphEventContracts, worldPatchEventContracts, writeComposedFrame, writeVisualArtifacts };