@forgeax/engine-preview 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +75 -0
  3. package/assets/canonical-kit/cook-receipt.json +40 -0
  4. package/assets/canonical-kit/sky.hdr +0 -0
  5. package/assets/canonical-kit/sky.hdr.meta.json +19 -0
  6. package/dist/.tsbuildinfo +1 -0
  7. package/dist/__tests__/canonical-rig-owner.test-d.d.ts +1 -0
  8. package/dist/__tests__/consumer.smoke.test.d.ts +1 -0
  9. package/dist/__tests__/contract.test.d.ts +1 -0
  10. package/dist/__tests__/default-runtime.test.d.ts +1 -0
  11. package/dist/__tests__/host.test.d.ts +1 -0
  12. package/dist/__tests__/kit-receipt.test.d.ts +1 -0
  13. package/dist/__tests__/manifest.test.d.ts +1 -0
  14. package/dist/__tests__/material-oracle.test.d.ts +1 -0
  15. package/dist/__tests__/material.test.d.ts +1 -0
  16. package/dist/__tests__/mesh-oracle.test.d.ts +1 -0
  17. package/dist/__tests__/mesh-subject.test.d.ts +1 -0
  18. package/dist/__tests__/mesh.test.d.ts +1 -0
  19. package/dist/__tests__/oracle-status-owner.test-d.d.ts +1 -0
  20. package/dist/__tests__/owner-gate.test.d.ts +1 -0
  21. package/dist/__tests__/preview-contract.test.d.ts +1 -0
  22. package/dist/__tests__/texture-oracle.test.d.ts +1 -0
  23. package/dist/__tests__/texture-payload-class-owner.test-d.d.ts +1 -0
  24. package/dist/__tests__/texture.test.d.ts +1 -0
  25. package/dist/__tests__/vfx-oracle.test.d.ts +1 -0
  26. package/dist/__tests__/vfx-subject.test.d.ts +1 -0
  27. package/dist/__tests__/vfx.test.d.ts +1 -0
  28. package/dist/domains/material.d.ts +50 -0
  29. package/dist/domains/mesh.d.ts +53 -0
  30. package/dist/domains/subject.d.ts +28 -0
  31. package/dist/domains/texture.d.ts +63 -0
  32. package/dist/domains/vfx.d.ts +58 -0
  33. package/dist/evidence/errors.d.ts +14 -0
  34. package/dist/evidence/manifest.d.ts +10 -0
  35. package/dist/evidence/oracle.d.ts +104 -0
  36. package/dist/evidence/report.d.ts +15 -0
  37. package/dist/host/preview-host.d.ts +52 -0
  38. package/dist/host.d.ts +88 -0
  39. package/dist/index.d.ts +15 -0
  40. package/dist/index.mjs +1826 -0
  41. package/dist/index.mjs.map +1 -0
  42. package/dist/kit/canonical.d.ts +16 -0
  43. package/dist/kit/presentation.d.ts +33 -0
  44. package/dist/kit/receipt.d.ts +56 -0
  45. package/dist/kit/receipt.test-fixtures.d.ts +41 -0
  46. package/dist/material.d.ts +45 -0
  47. package/dist/material.mjs +469 -0
  48. package/dist/material.mjs.map +1 -0
  49. package/dist/mesh.d.ts +57 -0
  50. package/dist/mesh.mjs +529 -0
  51. package/dist/mesh.mjs.map +1 -0
  52. package/dist/primitive.d.ts +46 -0
  53. package/dist/texture.d.ts +57 -0
  54. package/dist/texture.mjs +526 -0
  55. package/dist/texture.mjs.map +1 -0
  56. package/dist/vfx.d.ts +55 -0
  57. package/dist/vfx.mjs +630 -0
  58. package/dist/vfx.mjs.map +1 -0
  59. package/package.json +83 -0
@@ -0,0 +1,63 @@
1
+ import type { ArtifactRef } from '@forgeax/engine-tool-runtime';
2
+ import { type TextureOracleInput } from '../evidence/oracle.js';
3
+ import type { PreviewAssetRegistry, PreviewRenderRuntime } from '../host/preview-host.js';
4
+ import { type ResourcePreviewArgs, subjectFailure } from './subject.js';
5
+ export interface TextureSubjectInspection {
6
+ readonly subjectDigest: string;
7
+ readonly boundDigest: string;
8
+ readonly dimensions: readonly [number, number];
9
+ readonly format: string;
10
+ readonly colorSpace: string;
11
+ readonly mipCount: number;
12
+ readonly uvDigest: string;
13
+ readonly filter: string;
14
+ readonly bindingDigest: string;
15
+ readonly payloadClass: TextureOracleInput['observed']['payloadClass'];
16
+ }
17
+ type InspectionResult = {
18
+ readonly ok: true;
19
+ readonly value: TextureSubjectInspection;
20
+ } | ReturnType<typeof subjectFailure>;
21
+ export declare function inspectTextureSubject(input: {
22
+ readonly guid: string;
23
+ readonly asset: unknown;
24
+ readonly digest?: string;
25
+ readonly ownerFacts?: Readonly<Record<string, string | number | boolean>>;
26
+ }): InspectionResult;
27
+ export declare function executeTexturePreview(args: ResourcePreviewArgs, input: {
28
+ readonly assets?: PreviewAssetRegistry;
29
+ readonly renderer?: PreviewRenderRuntime;
30
+ readonly runId: string;
31
+ readonly artifacts?: readonly ArtifactRef[];
32
+ }): Promise<import("./subject.js").ResourceSubjectFailure | {
33
+ ok: true;
34
+ value: {
35
+ subject: {
36
+ kind: "texture";
37
+ guid: string;
38
+ digest: string;
39
+ };
40
+ presentation: import("../index.js").PreviewPresentation;
41
+ recipe: import("../index.js").CanonicalPreviewRecipe;
42
+ quad: {
43
+ projection: string;
44
+ aspect: string;
45
+ stage: string;
46
+ };
47
+ binding: {
48
+ filter: string;
49
+ digest: string;
50
+ };
51
+ oracle: {
52
+ readonly status: "passed";
53
+ readonly subjectBound: true;
54
+ readonly drawCalls: number;
55
+ readonly dispatches: number;
56
+ readonly rendererHealthy: true;
57
+ readonly detail: Record<string, string | number | boolean>;
58
+ };
59
+ artifacts: readonly ArtifactRef[];
60
+ };
61
+ artifacts: readonly ArtifactRef[];
62
+ }>;
63
+ export {};
@@ -0,0 +1,58 @@
1
+ import type { ArtifactRef } from '@forgeax/engine-tool-runtime';
2
+ import type { PreviewAssetRegistry, PreviewRenderRuntime } from '../host/preview-host.js';
3
+ import { type ResourcePreviewArgs, subjectFailure } from './subject.js';
4
+ export interface VfxSubjectInspection {
5
+ readonly subjectDigest: string;
6
+ readonly programFingerprint: string;
7
+ readonly emitterDigest: string;
8
+ readonly sampleDigest: string;
9
+ readonly boundsDigest: string;
10
+ readonly computeDigest: string;
11
+ readonly indirectDigest: string;
12
+ readonly contactSheetDigest?: string;
13
+ readonly authoredBounds: readonly [number, number, number, number, number, number];
14
+ }
15
+ type InspectionResult = {
16
+ readonly ok: true;
17
+ readonly value: VfxSubjectInspection;
18
+ } | ReturnType<typeof subjectFailure>;
19
+ export declare function inspectVfxSubject(input: {
20
+ readonly guid: string;
21
+ readonly asset: unknown;
22
+ readonly digest?: string;
23
+ readonly ownerFacts?: Readonly<Record<string, string | number | boolean>>;
24
+ }): InspectionResult;
25
+ export declare function executeVfxPreview(args: ResourcePreviewArgs, input: {
26
+ readonly assets?: PreviewAssetRegistry;
27
+ readonly renderer?: PreviewRenderRuntime;
28
+ readonly runId: string;
29
+ readonly artifacts?: readonly ArtifactRef[];
30
+ }): Promise<import("./subject.js").ResourceSubjectFailure | {
31
+ ok: true;
32
+ value: {
33
+ subject: {
34
+ kind: "vfx";
35
+ guid: string;
36
+ digest: string;
37
+ };
38
+ presentation: import("../index.js").PreviewPresentation;
39
+ recipe: import("../index.js").CanonicalPreviewRecipe;
40
+ authoredBounds: readonly [number, number, number, number, number, number];
41
+ timeline: {
42
+ seed: number;
43
+ fixedDelta: number;
44
+ frames: number;
45
+ };
46
+ oracle: {
47
+ readonly status: "passed";
48
+ readonly subjectBound: true;
49
+ readonly drawCalls: number;
50
+ readonly dispatches: number;
51
+ readonly rendererHealthy: true;
52
+ readonly detail: Record<string, string | number | boolean>;
53
+ };
54
+ artifacts: readonly ArtifactRef[];
55
+ };
56
+ artifacts: readonly ArtifactRef[];
57
+ }>;
58
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { JsonValue, ToolRecoveryAction, ToolRuntimeError } from '@forgeax/engine-tool-runtime';
2
+ export type ResourcePreviewFailureCode = 'resource-preview-kind-mismatch' | 'resource-preview-subject-invalid' | 'resource-preview-oracle-failed';
3
+ export interface ResourcePreviewFailure {
4
+ readonly code: ResourcePreviewFailureCode;
5
+ readonly expected: string;
6
+ readonly hint: string;
7
+ readonly detail: Readonly<Record<string, JsonValue>>;
8
+ }
9
+ export interface ResourcePreviewRecovery {
10
+ readonly failure: ResourcePreviewFailure;
11
+ readonly suggestedOperation?: string;
12
+ readonly actions: readonly ToolRecoveryAction[];
13
+ }
14
+ export declare function describeResourcePreviewFailure(failure: ToolRuntimeError): ResourcePreviewRecovery | undefined;
@@ -0,0 +1,10 @@
1
+ import { type PreviewArtifactManifest, type PreviewArtifactManifestValidation, type PreviewArtifactRole } from '@forgeax/engine-tool-runtime';
2
+ export { createPreviewArtifactManifest, type PreviewArtifactIdentity, type PreviewArtifactKind, type PreviewArtifactManifest, type PreviewArtifactManifestEntry, type PreviewArtifactManifestValidation, type PreviewArtifactRole, validatePreviewArtifactManifest, } from '@forgeax/engine-tool-runtime';
3
+ export interface AtomicPreviewPublisher {
4
+ readonly stage: (manifest: PreviewArtifactManifest) => void;
5
+ readonly publish: (requiredRoles: readonly PreviewArtifactRole[]) => PreviewArtifactManifestValidation;
6
+ readonly discard: () => void;
7
+ readonly published: () => PreviewArtifactManifest | undefined;
8
+ }
9
+ /** In-memory atomic boundary shared by Browser, Dawn, and visible carriers. */
10
+ export declare function createAtomicPreviewPublisher(): AtomicPreviewPublisher;
@@ -0,0 +1,104 @@
1
+ export type PreviewOracleStatus = PreviewOracle['status'];
2
+ export type PreviewOracle = {
3
+ readonly status: 'passed';
4
+ readonly subjectBound: true;
5
+ readonly drawCalls: number;
6
+ readonly dispatches: number;
7
+ readonly rendererHealthy: true;
8
+ readonly detail: Record<string, string | number | boolean>;
9
+ } | {
10
+ readonly status: 'failed';
11
+ readonly subjectBound: false;
12
+ readonly drawCalls: number;
13
+ readonly dispatches: number;
14
+ readonly rendererHealthy: boolean;
15
+ readonly detail: Record<string, string | number | boolean>;
16
+ };
17
+ export declare function passedPreviewOracle(input: {
18
+ readonly drawCalls: number;
19
+ readonly dispatches?: number;
20
+ readonly detail: Record<string, string | number | boolean>;
21
+ }): PreviewOracle;
22
+ export declare function failedPreviewOracle(input: {
23
+ readonly drawCalls?: number;
24
+ readonly dispatches?: number;
25
+ readonly rendererHealthy?: boolean;
26
+ readonly detail: Record<string, string | number | boolean>;
27
+ }): PreviewOracle;
28
+ export interface MaterialOracleInput {
29
+ readonly requested: {
30
+ readonly subjectDigest: string;
31
+ readonly program: string;
32
+ readonly pass: string;
33
+ readonly bindingsDigest: string;
34
+ readonly closureDigest: string;
35
+ };
36
+ readonly observed: MaterialOracleInput['requested'] & {
37
+ readonly rendererHealthy: boolean;
38
+ readonly drawCalls: number;
39
+ readonly nonBlackPixels: number;
40
+ };
41
+ }
42
+ export interface MeshOracleInput {
43
+ readonly requested: {
44
+ readonly subjectDigest: string;
45
+ readonly vertexDigest: string;
46
+ readonly indexDigest: string;
47
+ readonly submeshDigest: string;
48
+ readonly aabbDigest: string;
49
+ readonly aabb?: readonly [number, number, number, number, number, number];
50
+ readonly submeshCount?: number;
51
+ readonly materialSlotCount?: number;
52
+ };
53
+ readonly observed: MeshOracleInput['requested'] & {
54
+ readonly rendererHealthy: boolean;
55
+ readonly drawCalls: number;
56
+ readonly nonBlackPixels: number;
57
+ };
58
+ }
59
+ export declare function evaluateMaterialOracle(input: MaterialOracleInput): PreviewOracle;
60
+ export declare function evaluateMeshOracle(input: MeshOracleInput): PreviewOracle;
61
+ export interface VfxOracleInput {
62
+ readonly requested: {
63
+ readonly subjectDigest: string;
64
+ readonly programFingerprint: string;
65
+ readonly emitterDigest: string;
66
+ readonly sampleDigest: string;
67
+ readonly boundsDigest: string;
68
+ readonly computeDigest: string;
69
+ readonly indirectDigest: string;
70
+ readonly contactSheetDigest?: string;
71
+ readonly authoredBounds?: readonly [number, number, number, number, number, number];
72
+ readonly seed?: number;
73
+ readonly fixedDelta?: number;
74
+ readonly timelineFrames?: number;
75
+ };
76
+ readonly observed: VfxOracleInput['requested'] & {
77
+ readonly rendererHealthy: boolean;
78
+ readonly dispatches: number;
79
+ readonly indirectDraws: number;
80
+ readonly subjectOutputs: number;
81
+ readonly nonBlackPixels: number;
82
+ };
83
+ }
84
+ export interface TextureOracleInput {
85
+ readonly requested: {
86
+ readonly subjectDigest: string;
87
+ readonly boundDigest: string;
88
+ readonly dimensions: readonly [number, number];
89
+ readonly format: string;
90
+ readonly colorSpace: string;
91
+ readonly mipCount: number;
92
+ readonly uvDigest: string;
93
+ readonly filter: string;
94
+ readonly bindingDigest: string;
95
+ };
96
+ readonly observed: TextureOracleInput['requested'] & {
97
+ readonly rendererHealthy: boolean;
98
+ readonly drawCalls: number;
99
+ readonly nonBlackPixels: number;
100
+ readonly payloadClass: 'black' | 'transparent' | 'single-channel' | 'color';
101
+ };
102
+ }
103
+ export declare function evaluateVfxOracle(input: VfxOracleInput): PreviewOracle;
104
+ export declare function evaluateTextureOracle(input: TextureOracleInput): PreviewOracle;
@@ -0,0 +1,15 @@
1
+ import type { SnapshotRef } from '@forgeax/engine-tool-runtime';
2
+ import type { PreviewPresentation, PreviewSubject } from '../kit/presentation.js';
3
+ import type { PreviewArtifactManifestEntry } from './manifest.js';
4
+ import type { PreviewOracle } from './oracle.js';
5
+ export interface ResourcePreviewReport {
6
+ readonly mediaType: 'application/vnd.forgeax.resource-preview+json';
7
+ readonly schemaVersion: '1.0.0';
8
+ readonly runId: string;
9
+ readonly snapshot: SnapshotRef;
10
+ readonly subject: PreviewSubject;
11
+ readonly presentation: PreviewPresentation;
12
+ readonly oracle: PreviewOracle;
13
+ readonly artifacts: readonly PreviewArtifactManifestEntry[];
14
+ }
15
+ export declare function createResourcePreviewReport(input: Omit<ResourcePreviewReport, 'mediaType' | 'schemaVersion'>): ResourcePreviewReport;
@@ -0,0 +1,52 @@
1
+ import { type Plugin, type ToolPlugin } from '@forgeax/engine-plugin';
2
+ import { type ArtifactRef, type SnapshotRef } from '@forgeax/engine-tool-runtime';
3
+ import type { AssetKind } from '@forgeax/engine-types';
4
+ export interface PreviewAssetLoadResult<TAsset = unknown> {
5
+ readonly ok: true;
6
+ readonly value: TAsset;
7
+ readonly digest?: string;
8
+ readonly ownerFacts?: Readonly<Record<string, string | number | boolean>>;
9
+ }
10
+ export interface PreviewAssetLoadFailure {
11
+ readonly ok: false;
12
+ readonly error: unknown;
13
+ }
14
+ export interface PreviewAssetRegistry {
15
+ readonly load: <TAsset, TKind extends string>(guid: string, kind: AssetKind<TAsset, TKind>) => Promise<PreviewAssetLoadResult<TAsset> | PreviewAssetLoadFailure>;
16
+ }
17
+ export interface PreviewRenderRuntime {
18
+ readonly rendererReady: boolean;
19
+ readonly worldReady: boolean;
20
+ readonly drawCalls: number;
21
+ readonly nonBlackPixels: number;
22
+ /**
23
+ * Facts read back from the real render/asset owner path. Domain executors
24
+ * must not manufacture observed identity from the requested subject.
25
+ */
26
+ readonly observation?: Readonly<Record<string, string | number | boolean | readonly number[]>>;
27
+ readonly vfx?: {
28
+ readonly dispatches: number;
29
+ readonly indirectDraws: number;
30
+ readonly subjectOutputs: number;
31
+ };
32
+ readonly texture?: {
33
+ readonly drawCalls: number;
34
+ };
35
+ }
36
+ export interface PreviewHostMechanisms {
37
+ readonly runId: string;
38
+ readonly snapshot: SnapshotRef;
39
+ readonly projectRoot: string;
40
+ readonly backend: 'webgpu';
41
+ readonly signal: AbortSignal;
42
+ readonly assets?: PreviewAssetRegistry;
43
+ readonly renderer?: PreviewRenderRuntime;
44
+ readonly artifacts?: readonly ArtifactRef[];
45
+ }
46
+ export interface PreviewHost {
47
+ readonly withSession: <T>(execute: (mechanisms: PreviewHostMechanisms) => Promise<T>) => Promise<T>;
48
+ }
49
+ export declare const previewHostCapability: import("@forgeax/engine-tool-runtime").ToolCapability<PreviewHost>;
50
+ export declare function previewHostPlugin(host: PreviewHost): Plugin;
51
+ export declare function bindPreviewHost(plugin: ToolPlugin, host: PreviewHost): ToolPlugin;
52
+ export declare function createPreviewHost(input: PreviewHostMechanisms): PreviewHost;
package/dist/host.d.ts ADDED
@@ -0,0 +1,88 @@
1
+ import type { ArtifactRef, JsonValue, SnapshotRef, ToolDomainFailure, ToolEvidenceKind, ToolExecutionContext, ToolSubjectRef } from '@forgeax/engine-tool-runtime';
2
+ import { type PreviewHost as NativePreviewHost, type PreviewHostMechanisms } from './host/preview-host.js';
3
+ export interface PreviewHostRequest {
4
+ readonly subject: ToolSubjectRef;
5
+ readonly snapshot: SnapshotRef;
6
+ }
7
+ export interface PreviewAssetBinding {
8
+ readonly guid: string;
9
+ readonly bytes: number;
10
+ }
11
+ export interface PreviewFrameInput {
12
+ readonly frame: number;
13
+ readonly deltaSeconds: number;
14
+ }
15
+ export interface PreviewCapture {
16
+ readonly digest: string;
17
+ readonly bytes: number;
18
+ }
19
+ export interface PreviewResourceCensus {
20
+ readonly worlds: number;
21
+ readonly renderers: number;
22
+ readonly canvases: number;
23
+ readonly leases: number;
24
+ }
25
+ export interface PreviewCleanupReport {
26
+ readonly census: PreviewResourceCensus;
27
+ readonly failures: readonly string[];
28
+ }
29
+ /**
30
+ * The only resource surface exposed to a preview contribution. The adapter owns
31
+ * the actual Engine resources; callers receive POD bindings and bounded actions.
32
+ */
33
+ export interface PreviewHostSession {
34
+ readonly subject: ToolSubjectRef;
35
+ readonly snapshot: SnapshotRef;
36
+ readonly loadAsset: (guid: string) => Promise<PreviewAssetBinding>;
37
+ readonly frame: (input: PreviewFrameInput) => Promise<void>;
38
+ readonly capture: () => Promise<PreviewCapture & {
39
+ readonly artifact?: ArtifactRef;
40
+ }>;
41
+ readonly census: () => PreviewResourceCensus;
42
+ readonly dispose: () => Promise<void>;
43
+ }
44
+ export interface PreviewHostAdapter {
45
+ readonly open: (request: PreviewHostRequest) => PreviewHostSession | Promise<PreviewHostSession>;
46
+ }
47
+ export interface PreviewHost {
48
+ readonly withSession: <TResult>(request: PreviewHostRequest, run: (session: PreviewHostSession) => TResult | Promise<TResult>) => Promise<{
49
+ readonly value: TResult;
50
+ readonly cleanup: PreviewCleanupReport;
51
+ }>;
52
+ }
53
+ export interface PreviewDomainValue<TReport = unknown> {
54
+ readonly subject: ToolSubjectRef;
55
+ readonly snapshot: SnapshotRef;
56
+ readonly report: TReport;
57
+ readonly artifacts: readonly ArtifactRef[];
58
+ }
59
+ export type PreviewDomainResult<TReport = unknown> = {
60
+ readonly ok: true;
61
+ readonly value: PreviewDomainValue<TReport>;
62
+ } | {
63
+ readonly ok: false;
64
+ readonly error: ToolDomainFailure;
65
+ };
66
+ export type PreviewDomainRunner<TRequest, TReport = unknown> = (request: TRequest, context: ToolExecutionContext) => Promise<PreviewDomainResult<TReport>>;
67
+ export declare const REQUIRED_PREVIEW_EVIDENCE: readonly ToolEvidenceKind[];
68
+ export declare function domainFailure(code: string, expected: string, hint: string, detail: Record<string, JsonValue>): {
69
+ readonly ok: false;
70
+ readonly error: ToolDomainFailure;
71
+ };
72
+ /**
73
+ * The default contribution is deliberately fail-closed. A real Project GUID
74
+ * loader must install a PreviewHost/Browser/Dawn runner; a data-only request
75
+ * must never manufacture PNG, RHI, or profile references from its arguments.
76
+ */
77
+ export declare function previewRuntimeUnavailable(subject: ToolSubjectRef, snapshot: SnapshotRef, domain: string): {
78
+ readonly ok: false;
79
+ readonly error: ToolDomainFailure;
80
+ };
81
+ export declare function validateDomainValue<TReport>(value: PreviewDomainValue<TReport>, request: PreviewHostRequest): PreviewDomainResult<TReport>;
82
+ export declare class PreviewCleanupError extends Error {
83
+ readonly code = "preview-cleanup-live-resources";
84
+ readonly census: PreviewResourceCensus;
85
+ constructor(census: PreviewResourceCensus, failures?: readonly string[]);
86
+ }
87
+ export declare function createPreviewHost(adapter: PreviewHostAdapter): PreviewHost;
88
+ export declare function createPreviewHost(input: PreviewHostMechanisms): NativePreviewHost;
@@ -0,0 +1,15 @@
1
+ export { isResourcePreviewSize, RESOURCE_PREVIEW_DEFAULT_SIZE, RESOURCE_PREVIEW_MAX_SIZE, RESOURCE_PREVIEW_MIN_SIZE, type ResourcePreviewArgs, } from './domains/subject.js';
2
+ export { describeResourcePreviewFailure, type ResourcePreviewFailure, type ResourcePreviewFailureCode, type ResourcePreviewRecovery, } from './evidence/errors.js';
3
+ export { type AtomicPreviewPublisher, createAtomicPreviewPublisher, createPreviewArtifactManifest, type PreviewArtifactIdentity, type PreviewArtifactKind, type PreviewArtifactManifest, type PreviewArtifactManifestEntry, type PreviewArtifactManifestValidation, type PreviewArtifactRole, validatePreviewArtifactManifest, } from './evidence/manifest.js';
4
+ export { evaluateMaterialOracle, evaluateMeshOracle, evaluateTextureOracle, evaluateVfxOracle, failedPreviewOracle, type MaterialOracleInput, type MeshOracleInput, type PreviewOracle, type PreviewOracleStatus, passedPreviewOracle, type TextureOracleInput, type VfxOracleInput, } from './evidence/oracle.js';
5
+ export { createResourcePreviewReport, type ResourcePreviewReport } from './evidence/report.js';
6
+ export { bindPreviewHost, createPreviewHost as createNativePreviewHost, type PreviewAssetLoadFailure, type PreviewAssetLoadResult, type PreviewAssetRegistry, type PreviewHost as NativePreviewHost, type PreviewHostMechanisms, type PreviewRenderRuntime, previewHostCapability, previewHostPlugin, } from './host/preview-host.js';
7
+ export { createPreviewHost, type PreviewAssetBinding, type PreviewCapture, PreviewCleanupError, type PreviewCleanupReport, type PreviewFrameInput, type PreviewHost, type PreviewHostAdapter, type PreviewHostRequest, type PreviewHostSession, type PreviewResourceCensus, previewRuntimeUnavailable, } from './host.js';
8
+ export { type CanonicalPreviewRecipe, canonicalPresentation, createCanonicalPreviewRecipe, } from './kit/canonical.js';
9
+ export { MATERIAL_PRESENTATION, MESH_PRESENTATION, type PreviewPresentation, type PreviewSubject, type PreviewSubjectKind, TEXTURE_PRESENTATION, VFX_PRESENTATION, } from './kit/presentation.js';
10
+ export { type CanonicalKitReceipt, type CanonicalKitReceiptValidation, validateCanonicalKitReceipt, } from './kit/receipt.js';
11
+ export { createMaterialPreviewContribution, type MaterialBinding, type MaterialPreviewReport, type MaterialPreviewRequest, materialPreviewDescriptor, } from './material.js';
12
+ export { createMeshPreviewContribution, type MeshAabb, type MeshBinding, type MeshPreviewReport, type MeshPreviewRequest, type MeshSubmeshBinding, meshPreviewDescriptor, } from './mesh.js';
13
+ export { createMaterialPreviewPrimitive, createMeshPreviewPrimitive, createTexturePreviewPrimitive, createVfxPreviewPrimitive, type MaterialPreviewPrimitive, type MeshPreviewPrimitive, materialBindingFromPayload, meshBindingFromPayload, type PreviewSnapshot, previewSnapshot, type TexturePreviewPrimitive, type VfxPreviewPrimitive, } from './primitive.js';
14
+ export { createTexturePreviewContribution, type TextureBinding, type TextureColorSpace, type TexturePreviewReport, type TexturePreviewRequest, texturePreviewDescriptor, } from './texture.js';
15
+ export { createVfxPreviewContribution, type VfxBinding, type VfxPreviewReport, type VfxPreviewRequest, type VfxSimulationInput, vfxDeterministicDigest, vfxPreviewDescriptor, } from './vfx.js';