@cyberart-io/engine 0.0.11 → 0.0.12

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
@@ -4,6 +4,19 @@ All notable changes to `@cyberart-io/engine`. Each entry links the guide in `doc
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.0.12 — 2026-09-08
8
+
9
+ Loading-indicator contract and job submit payload validation. Additive: existing exports keep their signatures.
10
+
11
+ ### Added
12
+
13
+ - **Deterministic loading indicator** — `createLoadingIndicatorController`, `parseLoadingIndicatorParams`, `parseLoadingIndicatorSnapshot`, `loadingIndicatorEventContracts`. Host-facing presentation-only contract with validated params (`schemaVersion`, `seed`, `mode`, optional `progress`/`stage`/`context`, bounded presentation), lifecycle `start → update → complete | fail | cancel`, seeded variant derivation, reduced-motion static treatment, host `statusText`, cart-init fallback to built-in indicator, snapshot/restore fail-closed, and budget diagnostics. Reference cart: `fixtures/loadingPulseCart.ts`. [docs/loading-indicator.md](docs/loading-indicator.md) · [#64](https://github.com/cyberart-io/cyberart.io/pull/64)
14
+
15
+ ### Fixed
16
+
17
+ - **Job submit payload validation** — `createJobCoordinator.submit` validates `request` against the definition's `requestSchema` before mutation. Missing required fields and undeclared keys (unless `additionalProperties: true`) return structured `invalid-request` failures without creating jobs, emitting lifecycle events, or consuming idempotency keys. Shared helper: `validatePayloadAgainstSchema`. [docs/job-orchestration.md](docs/job-orchestration.md) · [#65](https://github.com/cyberart-io/cyberart.io/pull/65)
18
+
19
+
7
20
  ## 0.0.11 — 2026-09-06
8
21
 
9
22
  Production-scenario overlap precedence and transactional reload. Additive: existing exports keep their signatures.
package/README.md CHANGED
@@ -94,6 +94,7 @@ Full API for the event router, deterministic replay, and CI harness (so agents c
94
94
  - [Presentation adapter](docs/presentation-adapter.md) — host-owned render model, intents, loading / error / unsupported
95
95
  - [Asset resolver](docs/asset-resolver.md) — host-pluggable images/audio/fonts/spritesheets, cache, preload, fallbacks
96
96
  - [Presentation cue](docs/presentation-cue.md) — deterministic `createPresentationTimeline`, duplicate policy, reduced-motion, lifecycle events
97
+ - [Loading indicator](docs/loading-indicator.md) — `createLoadingIndicatorController`, seeded loader carts, honest progress, snapshot/restore, fallback
97
98
  - [Capability manifest](docs/capability-manifest.md) — versioned JSON for runtime features, phases, managers, assets, events, permissions, integrations
98
99
  - [Executable modules](docs/executable-modules.md) — trusted versioned factories, host allowlists, isolation, per-module failures
99
100
  - [Remote cart manifests](docs/remote-cart-manifest.md) — signed catalogs, declared asset hashes, inspectable host grants
@@ -1284,6 +1284,8 @@ type PayloadSchema = {
1284
1284
  /** Payload schema version. Bump on any field change. */
1285
1285
  version: number;
1286
1286
  fields: Record<string, PayloadFieldSpec>;
1287
+ /** When not `true`, validation rejects undeclared payload keys. */
1288
+ additionalProperties?: boolean;
1287
1289
  };
1288
1290
  type ContractDiagnostic = {
1289
1291
  code: string;
@@ -2993,6 +2995,183 @@ declare function paintingPortal(portal: PortalLifecycle): {
2993
2995
  };
2994
2996
  declare function createPortalLifecycle(options?: CreatePortalLifecycleOptions): PortalLifecycle;
2995
2997
 
2998
+ /**
2999
+ * Copyright (c) 2026 Aaron Boyarsky
3000
+ * SPDX-License-Identifier: LicenseRef-CyberArt-Engine
3001
+ * See packages/engine/LICENSE
3002
+ *
3003
+ * Host-facing deterministic loading-indicator contract. Presentation-only:
3004
+ * carts vary by seeded parameters without inventing progress or mutating
3005
+ * authoritative host state.
3006
+ */
3007
+
3008
+ declare const LOADING_INDICATOR_PARAM_SCHEMA_VERSION: 1;
3009
+ declare const LOADING_INDICATOR_SNAPSHOT_SCHEMA_VERSION: 1;
3010
+ declare const LOADING_INDICATOR_MODES: readonly ["indeterminate", "determinate"];
3011
+ type LoadingIndicatorMode = (typeof LOADING_INDICATOR_MODES)[number];
3012
+ declare const LOADING_INDICATOR_CONTEXTS: readonly ["travel", "worldgen", "content", "audio"];
3013
+ type LoadingIndicatorContext = (typeof LOADING_INDICATOR_CONTEXTS)[number];
3014
+ declare const LOADING_INDICATOR_MOTIFS: readonly ["pulse", "orbit", "bars", "ripple", "static"];
3015
+ type LoadingIndicatorMotif = (typeof LOADING_INDICATOR_MOTIFS)[number];
3016
+ declare const LOADING_INDICATOR_PHASES: readonly ["idle", "active", "completed", "failed", "canceled"];
3017
+ type LoadingIndicatorPhase = (typeof LOADING_INDICATOR_PHASES)[number];
3018
+ declare const LOADING_INDICATOR_STARTED_EVENT: "loading.indicator.started";
3019
+ declare const LOADING_INDICATOR_UPDATED_EVENT: "loading.indicator.updated";
3020
+ declare const LOADING_INDICATOR_COMPLETED_EVENT: "loading.indicator.completed";
3021
+ declare const LOADING_INDICATOR_FAILED_EVENT: "loading.indicator.failed";
3022
+ declare const LOADING_INDICATOR_CANCELED_EVENT: "loading.indicator.canceled";
3023
+ declare const LOADING_INDICATOR_DIAGNOSTIC_EVENT: "loading.indicator.diagnostic";
3024
+ declare const LOADING_INDICATOR_EVENTS: readonly ["loading.indicator.started", "loading.indicator.updated", "loading.indicator.completed", "loading.indicator.failed", "loading.indicator.canceled", "loading.indicator.diagnostic"];
3025
+ type LoadingIndicatorEventType = (typeof LOADING_INDICATOR_EVENTS)[number];
3026
+ declare const LOADING_INDICATOR_DIAGNOSTIC_CODES: readonly ["invalid-params", "invalid-snapshot", "schema-mismatch", "unknown-field", "cart-init-failed", "budget-exceeded", "invalid-state", "restore-failed"];
3027
+ type LoadingIndicatorDiagnosticCode = (typeof LOADING_INDICATOR_DIAGNOSTIC_CODES)[number];
3028
+ type LoadingIndicatorPresentation = {
3029
+ palette?: string;
3030
+ intensity?: number;
3031
+ motif?: LoadingIndicatorMotif;
3032
+ variant?: number;
3033
+ };
3034
+ type LoadingIndicatorParams = {
3035
+ schemaVersion: typeof LOADING_INDICATOR_PARAM_SCHEMA_VERSION;
3036
+ seed: string;
3037
+ mode: LoadingIndicatorMode;
3038
+ progress?: number;
3039
+ stage?: string;
3040
+ context?: LoadingIndicatorContext | string;
3041
+ statusText: string;
3042
+ presentation?: LoadingIndicatorPresentation;
3043
+ cartId?: string;
3044
+ };
3045
+ type LoadingIndicatorParamsInput = Omit<LoadingIndicatorParams, 'schemaVersion'> & {
3046
+ schemaVersion?: number;
3047
+ };
3048
+ type LoadingIndicatorVariant = {
3049
+ hue: number;
3050
+ motif: LoadingIndicatorMotif;
3051
+ variant: number;
3052
+ intensity: number;
3053
+ palette: string;
3054
+ };
3055
+ type LoadingIndicatorView = {
3056
+ phase: LoadingIndicatorPhase;
3057
+ mode: LoadingIndicatorMode;
3058
+ /** Host-supplied progress in determinate mode; null when indeterminate. */
3059
+ progress: number | null;
3060
+ stage: string | null;
3061
+ context: string | null;
3062
+ statusText: string;
3063
+ seed: string;
3064
+ variant: LoadingIndicatorVariant;
3065
+ usingFallback: boolean;
3066
+ cartId: string;
3067
+ frame: number;
3068
+ /** Presentation animation phase 0..1; static under reduced motion. */
3069
+ pulsePhase: number;
3070
+ reducedMotion: boolean;
3071
+ };
3072
+ type LoadingIndicatorEvent = {
3073
+ type: LoadingIndicatorEventType;
3074
+ atFrame: number;
3075
+ seed: string;
3076
+ mode: LoadingIndicatorMode;
3077
+ phase: LoadingIndicatorPhase;
3078
+ progress: number | null;
3079
+ stage: string | null;
3080
+ context: string | null;
3081
+ statusText: string;
3082
+ usingFallback: boolean;
3083
+ reasonCode?: string;
3084
+ };
3085
+ type LoadingIndicatorDiagnostic = {
3086
+ code: LoadingIndicatorDiagnosticCode | string;
3087
+ detail: string;
3088
+ path?: string;
3089
+ atFrame?: number;
3090
+ };
3091
+ type LoadingIndicatorSnapshot = {
3092
+ schemaVersion: typeof LOADING_INDICATOR_SNAPSHOT_SCHEMA_VERSION;
3093
+ frame: number;
3094
+ reducedMotion: boolean;
3095
+ phase: LoadingIndicatorPhase;
3096
+ params: LoadingIndicatorParams | null;
3097
+ variant: LoadingIndicatorVariant;
3098
+ usingFallback: boolean;
3099
+ fallbackReason: string | null;
3100
+ cartId: string;
3101
+ events: LoadingIndicatorEvent[];
3102
+ diagnostics: LoadingIndicatorDiagnostic[];
3103
+ /** Inspect event types in live order, including diagnostics. */
3104
+ eventLog?: LoadingIndicatorEventType[];
3105
+ };
3106
+ type LoadingIndicatorInspect = {
3107
+ destroyed: boolean;
3108
+ view: LoadingIndicatorView;
3109
+ events: LoadingIndicatorEventType[];
3110
+ diagnostics: LoadingIndicatorDiagnostic[];
3111
+ };
3112
+ type LoadingIndicatorMutationResult = {
3113
+ ok: true;
3114
+ view: LoadingIndicatorView;
3115
+ } | {
3116
+ ok: false;
3117
+ errors: LoadingIndicatorDiagnostic[];
3118
+ };
3119
+ type RestoreLoadingIndicatorResult = {
3120
+ ok: true;
3121
+ snapshot: LoadingIndicatorSnapshot;
3122
+ } | {
3123
+ ok: false;
3124
+ errors: LoadingIndicatorDiagnostic[];
3125
+ };
3126
+ type LoadingIndicatorBudgets = {
3127
+ maxStepFrames?: number;
3128
+ maxIntensity?: number;
3129
+ maxVariant?: number;
3130
+ };
3131
+ type LoadingIndicatorCartFactory = (seed: string, variant: LoadingIndicatorVariant) => LoadingIndicatorCartHandle | {
3132
+ ok: false;
3133
+ reason: string;
3134
+ };
3135
+ type LoadingIndicatorCartHandle = {
3136
+ step?(frames: number, view: LoadingIndicatorView): void;
3137
+ destroy?(): void;
3138
+ };
3139
+ type CreateLoadingIndicatorControllerOptions = {
3140
+ carts?: Record<string, LoadingIndicatorCartFactory | AnimationCart>;
3141
+ reducedMotion?: boolean;
3142
+ originFrame?: number;
3143
+ budgets?: LoadingIndicatorBudgets;
3144
+ router?: Pick<EventRouter, 'publish'>;
3145
+ defaultCartId?: string;
3146
+ };
3147
+ type LoadingIndicatorController = {
3148
+ start(input: LoadingIndicatorParamsInput): LoadingIndicatorMutationResult;
3149
+ update(input: Partial<LoadingIndicatorParamsInput>): LoadingIndicatorMutationResult;
3150
+ complete(): LoadingIndicatorMutationResult;
3151
+ fail(reasonCode?: string): LoadingIndicatorMutationResult;
3152
+ cancel(): LoadingIndicatorMutationResult;
3153
+ step(frames?: number): LoadingIndicatorEvent[];
3154
+ snapshot(): LoadingIndicatorSnapshot;
3155
+ restore(input: unknown): RestoreLoadingIndicatorResult;
3156
+ inspect(): LoadingIndicatorInspect;
3157
+ setReducedMotion(value: boolean): void;
3158
+ destroy(): void;
3159
+ readonly reducedMotion: boolean;
3160
+ readonly frame: number;
3161
+ };
3162
+ declare function loadingIndicatorEventContracts(): EventContract[];
3163
+ declare function isLoadingIndicatorEventType(value: unknown): value is LoadingIndicatorEventType;
3164
+ declare function isLoadingIndicatorMode(value: unknown): value is LoadingIndicatorMode;
3165
+ declare function parseLoadingIndicatorParams(input: unknown, path?: string): {
3166
+ ok: true;
3167
+ params: LoadingIndicatorParams;
3168
+ } | {
3169
+ ok: false;
3170
+ errors: LoadingIndicatorDiagnostic[];
3171
+ };
3172
+ declare function parseLoadingIndicatorSnapshot(input: unknown): RestoreLoadingIndicatorResult;
3173
+ declare function createLoadingIndicatorController(options?: CreateLoadingIndicatorControllerOptions): LoadingIndicatorController;
3174
+
2996
3175
  /**
2997
3176
  * Copyright (c) 2026 Aaron Boyarsky
2998
3177
  * SPDX-License-Identifier: LicenseRef-CyberArt-Engine
@@ -4380,4 +4559,4 @@ type WriteComposedFrameResult = ComposedFrame & {
4380
4559
  */
4381
4560
  declare function writeComposedFrame(compositor: Compositor, path?: string): Promise<WriteComposedFrameResult>;
4382
4561
 
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 };
4562
+ 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 CreateLoadingIndicatorControllerOptions, 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, LOADING_INDICATOR_CANCELED_EVENT, LOADING_INDICATOR_COMPLETED_EVENT, LOADING_INDICATOR_CONTEXTS, LOADING_INDICATOR_DIAGNOSTIC_CODES, LOADING_INDICATOR_DIAGNOSTIC_EVENT, LOADING_INDICATOR_EVENTS, LOADING_INDICATOR_FAILED_EVENT, LOADING_INDICATOR_MODES, LOADING_INDICATOR_MOTIFS, LOADING_INDICATOR_PARAM_SCHEMA_VERSION, LOADING_INDICATOR_PHASES, LOADING_INDICATOR_SNAPSHOT_SCHEMA_VERSION, LOADING_INDICATOR_STARTED_EVENT, LOADING_INDICATOR_UPDATED_EVENT, type LoadingIndicatorBudgets, type LoadingIndicatorCartFactory, type LoadingIndicatorCartHandle, type LoadingIndicatorContext, type LoadingIndicatorController, type LoadingIndicatorDiagnostic, type LoadingIndicatorDiagnosticCode, type LoadingIndicatorEvent, type LoadingIndicatorEventType, type LoadingIndicatorInspect, type LoadingIndicatorMode, type LoadingIndicatorMotif, type LoadingIndicatorMutationResult, type LoadingIndicatorParams, type LoadingIndicatorParamsInput, type LoadingIndicatorPhase, type LoadingIndicatorPresentation, type LoadingIndicatorSnapshot, type LoadingIndicatorVariant, type LoadingIndicatorView, 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, type RestoreLoadingIndicatorResult, 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, createLoadingIndicatorController, 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, isLoadingIndicatorEventType, isLoadingIndicatorMode, isSelectionDecisionKind, isSelectionReasonCode, jobEventContracts, loadingIndicatorEventContracts, localizeProductionScenarioFailure, makeImageData, paintingPortal, parseAudioCueSnapshot, parseLoadingIndicatorParams, parseLoadingIndicatorSnapshot, presentationBindingEventContracts, presentationSequenceEventContracts, productionScenarioEventContracts, recordSelectionDecision, replayExportedTrace, setDefaultGlyphAtlas, shouldUpdateGolden, worldGraphEventContracts, worldPatchEventContracts, writeComposedFrame, writeVisualArtifacts };