@aura3d/engine 1.0.2 → 1.0.5
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/README.md +331 -16
- package/dist/animation/AnimationClipEvents.d.ts +57 -0
- package/dist/animation/AnimationClipEvents.d.ts.map +1 -0
- package/dist/animation/AnimationClipEvents.js +171 -0
- package/dist/animation/AnimationClipEvents.js.map +1 -0
- package/dist/animation/AnimationClipRegistry.d.ts +76 -0
- package/dist/animation/AnimationClipRegistry.d.ts.map +1 -0
- package/dist/animation/AnimationClipRegistry.js +130 -0
- package/dist/animation/AnimationClipRegistry.js.map +1 -0
- package/dist/animation/AnimationController.d.ts +168 -0
- package/dist/animation/AnimationController.d.ts.map +1 -0
- package/dist/animation/AnimationController.js +619 -0
- package/dist/animation/AnimationController.js.map +1 -0
- package/dist/animation/HumanoidRetargeting.d.ts +76 -0
- package/dist/animation/HumanoidRetargeting.d.ts.map +1 -0
- package/dist/animation/HumanoidRetargeting.js +331 -0
- package/dist/animation/HumanoidRetargeting.js.map +1 -0
- package/dist/animation/browser-index.d.ts +18 -0
- package/dist/animation/browser-index.d.ts.map +1 -1
- package/dist/animation/browser-index.js +13 -0
- package/dist/animation/browser-index.js.map +1 -1
- package/dist/animation/index.d.ts +16 -1
- package/dist/animation/index.d.ts.map +1 -1
- package/dist/animation/index.js +11 -1
- package/dist/animation/index.js.map +1 -1
- package/dist/animation/threejs-compatibility/AnimationDiagnostics.d.ts.map +1 -1
- package/dist/animation/threejs-compatibility/AnimationDiagnostics.js +3 -5
- package/dist/animation/threejs-compatibility/AnimationDiagnostics.js.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +1 -1
- package/dist/assets/GLTFLoader.js +1 -1
- package/dist/aura3d-cli/cli.js +194 -8
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +280 -3
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +886 -4
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge.d.ts +95 -0
- package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge.js +247 -0
- package/dist/aura3d-cli/pull-bridge.js.map +1 -0
- package/dist/create-aura3d/index.d.ts +1 -1
- package/dist/create-aura3d/index.d.ts.map +1 -1
- package/dist/create-aura3d/index.js +9 -2
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/editor-runtime/ProjectSerializer.d.ts +74 -1
- package/dist/editor-runtime/ProjectSerializer.d.ts.map +1 -1
- package/dist/editor-runtime/ProjectSerializer.js +123 -6
- package/dist/editor-runtime/ProjectSerializer.js.map +1 -1
- package/dist/editor-runtime/TimelineModel.d.ts +18 -0
- package/dist/editor-runtime/TimelineModel.d.ts.map +1 -1
- package/dist/editor-runtime/TimelineModel.js +67 -3
- package/dist/editor-runtime/TimelineModel.js.map +1 -1
- package/dist/editor-runtime/TimelineRuntimeBridge.d.ts +98 -0
- package/dist/editor-runtime/TimelineRuntimeBridge.d.ts.map +1 -0
- package/dist/editor-runtime/TimelineRuntimeBridge.js +186 -0
- package/dist/editor-runtime/TimelineRuntimeBridge.js.map +1 -0
- package/dist/editor-runtime/index.d.ts +3 -1
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +1 -0
- package/dist/editor-runtime/index.js.map +1 -1
- package/dist/engine/agent-api/AnimationController.d.ts +607 -0
- package/dist/engine/agent-api/AnimationController.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationController.js +2192 -0
- package/dist/engine/agent-api/AnimationController.js.map +1 -0
- package/dist/engine/agent-api/AssetEvidence.d.ts +88 -0
- package/dist/engine/agent-api/AssetEvidence.d.ts.map +1 -0
- package/dist/engine/agent-api/AssetEvidence.js +157 -0
- package/dist/engine/agent-api/AssetEvidence.js.map +1 -0
- package/dist/engine/agent-api/AuraAppHandle.d.ts +55 -0
- package/dist/engine/agent-api/AuraAppHandle.d.ts.map +1 -0
- package/dist/engine/agent-api/AuraAppHandle.js +15 -0
- package/dist/engine/agent-api/AuraAppHandle.js.map +1 -0
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts +96 -0
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts.map +1 -0
- package/dist/engine/agent-api/AuraVoiceBridge.js +370 -0
- package/dist/engine/agent-api/AuraVoiceBridge.js.map +1 -0
- package/dist/engine/agent-api/CartoonDirector.d.ts +95 -0
- package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonDirector.js +342 -0
- package/dist/engine/agent-api/CartoonDirector.js.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts +149 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.js +317 -0
- package/dist/engine/agent-api/CartoonPerformance.js.map +1 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts +132 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js +385 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -0
- package/dist/engine/agent-api/CharacterAssembly.d.ts +126 -0
- package/dist/engine/agent-api/CharacterAssembly.d.ts.map +1 -0
- package/dist/engine/agent-api/CharacterAssembly.js +280 -0
- package/dist/engine/agent-api/CharacterAssembly.js.map +1 -0
- package/dist/engine/agent-api/DialoguePerformance.d.ts +150 -0
- package/dist/engine/agent-api/DialoguePerformance.d.ts.map +1 -0
- package/dist/engine/agent-api/DialoguePerformance.js +335 -0
- package/dist/engine/agent-api/DialoguePerformance.js.map +1 -0
- package/dist/engine/agent-api/FrameLoop.d.ts +70 -0
- package/dist/engine/agent-api/FrameLoop.d.ts.map +1 -0
- package/dist/engine/agent-api/FrameLoop.js +165 -0
- package/dist/engine/agent-api/FrameLoop.js.map +1 -0
- package/dist/engine/agent-api/GameAssetValidation.d.ts +279 -0
- package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -0
- package/dist/engine/agent-api/GameAssetValidation.js +719 -0
- package/dist/engine/agent-api/GameAssetValidation.js.map +1 -0
- package/dist/engine/agent-api/GameEvidence.d.ts +148 -0
- package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -0
- package/dist/engine/agent-api/GameEvidence.js +269 -0
- package/dist/engine/agent-api/GameEvidence.js.map +1 -0
- package/dist/engine/agent-api/GameRuntime.d.ts +931 -0
- package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -0
- package/dist/engine/agent-api/GameRuntime.js +2229 -0
- package/dist/engine/agent-api/GameRuntime.js.map +1 -0
- package/dist/engine/agent-api/GameSceneBridge.d.ts +54 -0
- package/dist/engine/agent-api/GameSceneBridge.d.ts.map +1 -0
- package/dist/engine/agent-api/GameSceneBridge.js +110 -0
- package/dist/engine/agent-api/GameSceneBridge.js.map +1 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts +278 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -0
- package/dist/engine/agent-api/PromptAnimationContract.js +238 -0
- package/dist/engine/agent-api/PromptAnimationContract.js.map +1 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts +183 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts.map +1 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.js +454 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.js.map +1 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +100 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.js +36 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -0
- package/dist/engine/agent-api/ShotTimeline.d.ts +179 -0
- package/dist/engine/agent-api/ShotTimeline.d.ts.map +1 -0
- package/dist/engine/agent-api/ShotTimeline.js +264 -0
- package/dist/engine/agent-api/ShotTimeline.js.map +1 -0
- package/dist/engine/agent-api/VisemeController.d.ts +89 -0
- package/dist/engine/agent-api/VisemeController.d.ts.map +1 -0
- package/dist/engine/agent-api/VisemeController.js +207 -0
- package/dist/engine/agent-api/VisemeController.js.map +1 -0
- package/dist/engine/agent-api/game-kits/fighting.d.ts +123 -0
- package/dist/engine/agent-api/game-kits/fighting.d.ts.map +1 -0
- package/dist/engine/agent-api/game-kits/fighting.js +483 -0
- package/dist/engine/agent-api/game-kits/fighting.js.map +1 -0
- package/dist/engine/agent-api/game-kits/index.d.ts +15 -0
- package/dist/engine/agent-api/game-kits/index.d.ts.map +1 -0
- package/dist/engine/agent-api/game-kits/index.js +6 -0
- package/dist/engine/agent-api/game-kits/index.js.map +1 -0
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +18 -81
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts.map +1 -1
- package/dist/engine/agent-api/humanoid-walk-runtime.js +4 -279
- package/dist/engine/agent-api/humanoid-walk-runtime.js.map +1 -1
- package/dist/engine/agent-api/index.d.ts +490 -4
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +759 -1802
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/particle-fountain-runtime.d.ts +5 -80
- package/dist/engine/agent-api/particle-fountain-runtime.d.ts.map +1 -1
- package/dist/engine/agent-api/particle-fountain-runtime.js +7 -291
- package/dist/engine/agent-api/particle-fountain-runtime.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts +17 -107
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.js +4 -330
- package/dist/engine/agent-api/product-viewer-runtime.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/physics/CollisionVolumes.d.ts +57 -0
- package/dist/physics/CollisionVolumes.d.ts.map +1 -0
- package/dist/physics/CollisionVolumes.js +159 -0
- package/dist/physics/CollisionVolumes.js.map +1 -0
- package/dist/physics/HitboxWorld.d.ts +229 -0
- package/dist/physics/HitboxWorld.d.ts.map +1 -0
- package/dist/physics/HitboxWorld.js +640 -0
- package/dist/physics/HitboxWorld.js.map +1 -0
- package/dist/physics/KinematicBody.d.ts +157 -0
- package/dist/physics/KinematicBody.d.ts.map +1 -0
- package/dist/physics/KinematicBody.js +405 -0
- package/dist/physics/KinematicBody.js.map +1 -0
- package/dist/physics/KinematicWorld.d.ts +58 -0
- package/dist/physics/KinematicWorld.d.ts.map +1 -0
- package/dist/physics/KinematicWorld.js +246 -0
- package/dist/physics/KinematicWorld.js.map +1 -0
- package/dist/physics/index.d.ts +4 -0
- package/dist/physics/index.d.ts.map +1 -1
- package/dist/physics/index.js +4 -0
- package/dist/physics/index.js.map +1 -1
- package/dist/rendering/ForwardPass.js +2 -2
- package/dist/rendering/ShaderLibrary.js +2 -2
- package/dist/rendering/SkinnedLitMaterial.js +3 -3
- package/dist/rendering/SkinnedUnlitMaterial.js +3 -3
- package/dist/scene/Renderable.js +2 -2
- package/dist/scripting/VisualGraph.d.ts +2 -1
- package/dist/scripting/VisualGraph.d.ts.map +1 -1
- package/dist/scripting/VisualGraph.js +118 -1
- package/dist/scripting/VisualGraph.js.map +1 -1
- package/dist/scripting/VisualGraphContext.d.ts +123 -0
- package/dist/scripting/VisualGraphContext.d.ts.map +1 -0
- package/dist/scripting/VisualGraphContext.js +2 -0
- package/dist/scripting/VisualGraphContext.js.map +1 -0
- package/dist/scripting/VisualGraphExecutor.d.ts +6 -1
- package/dist/scripting/VisualGraphExecutor.d.ts.map +1 -1
- package/dist/scripting/VisualGraphExecutor.js +364 -7
- package/dist/scripting/VisualGraphExecutor.js.map +1 -1
- package/dist/scripting/VisualNodeCatalog.d.ts +1 -1
- package/dist/scripting/VisualNodeCatalog.d.ts.map +1 -1
- package/dist/scripting/VisualNodeCatalog.js +61 -1
- package/dist/scripting/VisualNodeCatalog.js.map +1 -1
- package/dist/scripting/index.d.ts +1 -0
- package/dist/scripting/index.d.ts.map +1 -1
- package/dist/scripting/index.js.map +1 -1
- package/package.json +193 -121
- package/templates/product-viewer/src/main.ts +1 -0
- package/dist/three-compat/ThreeApiInventory.d.ts +0 -18
- package/dist/three-compat/ThreeApiInventory.d.ts.map +0 -1
- package/dist/three-compat/ThreeApiInventory.js +0 -99
- package/dist/three-compat/ThreeApiInventory.js.map +0 -1
- package/dist/three-compat/ThreeCompatibilityMatrix.d.ts +0 -30
- package/dist/three-compat/ThreeCompatibilityMatrix.d.ts.map +0 -1
- package/dist/three-compat/ThreeCompatibilityMatrix.js +0 -69
- package/dist/three-compat/ThreeCompatibilityMatrix.js.map +0 -1
- package/dist/three-compat/animation/index.d.ts +0 -3
- package/dist/three-compat/animation/index.d.ts.map +0 -1
- package/dist/three-compat/animation/index.js +0 -2
- package/dist/three-compat/animation/index.js.map +0 -1
- package/dist/three-compat/cameras/index.d.ts +0 -24
- package/dist/three-compat/cameras/index.d.ts.map +0 -1
- package/dist/three-compat/cameras/index.js +0 -44
- package/dist/three-compat/cameras/index.js.map +0 -1
- package/dist/three-compat/controls/index.d.ts +0 -3
- package/dist/three-compat/controls/index.d.ts.map +0 -1
- package/dist/three-compat/controls/index.js +0 -2
- package/dist/three-compat/controls/index.js.map +0 -1
- package/dist/three-compat/core/Object3DCompat.d.ts +0 -62
- package/dist/three-compat/core/Object3DCompat.d.ts.map +0 -1
- package/dist/three-compat/core/Object3DCompat.js +0 -112
- package/dist/three-compat/core/Object3DCompat.js.map +0 -1
- package/dist/three-compat/core/RaycasterCompat.d.ts +0 -18
- package/dist/three-compat/core/RaycasterCompat.d.ts.map +0 -1
- package/dist/three-compat/core/RaycasterCompat.js +0 -28
- package/dist/three-compat/core/RaycasterCompat.js.map +0 -1
- package/dist/three-compat/core/SceneCompat.d.ts +0 -8
- package/dist/three-compat/core/SceneCompat.d.ts.map +0 -1
- package/dist/three-compat/core/SceneCompat.js +0 -8
- package/dist/three-compat/core/SceneCompat.js.map +0 -1
- package/dist/three-compat/geometries/index.d.ts +0 -67
- package/dist/three-compat/geometries/index.d.ts.map +0 -1
- package/dist/three-compat/geometries/index.js +0 -114
- package/dist/three-compat/geometries/index.js.map +0 -1
- package/dist/three-compat/helpers/index.d.ts +0 -40
- package/dist/three-compat/helpers/index.d.ts.map +0 -1
- package/dist/three-compat/helpers/index.js +0 -129
- package/dist/three-compat/helpers/index.js.map +0 -1
- package/dist/three-compat/index.d.ts +0 -32
- package/dist/three-compat/index.d.ts.map +0 -1
- package/dist/three-compat/index.js +0 -22
- package/dist/three-compat/index.js.map +0 -1
- package/dist/three-compat/lights/index.d.ts +0 -35
- package/dist/three-compat/lights/index.d.ts.map +0 -1
- package/dist/three-compat/lights/index.js +0 -39
- package/dist/three-compat/lights/index.js.map +0 -1
- package/dist/three-compat/loaders/index.d.ts +0 -54
- package/dist/three-compat/loaders/index.d.ts.map +0 -1
- package/dist/three-compat/loaders/index.js +0 -79
- package/dist/three-compat/loaders/index.js.map +0 -1
- package/dist/three-compat/materials/index.d.ts +0 -70
- package/dist/three-compat/materials/index.d.ts.map +0 -1
- package/dist/three-compat/materials/index.js +0 -85
- package/dist/three-compat/materials/index.js.map +0 -1
- package/dist/three-compat/math/index.d.ts +0 -34
- package/dist/three-compat/math/index.d.ts.map +0 -1
- package/dist/three-compat/math/index.js +0 -90
- package/dist/three-compat/math/index.js.map +0 -1
- package/dist/three-compat/migration/CompatibilityWarnings.d.ts +0 -6
- package/dist/three-compat/migration/CompatibilityWarnings.d.ts.map +0 -1
- package/dist/three-compat/migration/CompatibilityWarnings.js +0 -8
- package/dist/three-compat/migration/CompatibilityWarnings.js.map +0 -1
- package/dist/three-compat/migration/ImportMap.d.ts +0 -2
- package/dist/three-compat/migration/ImportMap.d.ts.map +0 -1
- package/dist/three-compat/migration/ImportMap.js +0 -10
- package/dist/three-compat/migration/ImportMap.js.map +0 -1
- package/dist/three-compat/migration/ThreeToA3DAdapter.d.ts +0 -8
- package/dist/three-compat/migration/ThreeToA3DAdapter.d.ts.map +0 -1
- package/dist/three-compat/migration/ThreeToA3DAdapter.js +0 -20
- package/dist/three-compat/migration/ThreeToA3DAdapter.js.map +0 -1
- package/dist/three-compat/postprocessing/index.d.ts +0 -2
- package/dist/three-compat/postprocessing/index.d.ts.map +0 -1
- package/dist/three-compat/postprocessing/index.js +0 -2
- package/dist/three-compat/postprocessing/index.js.map +0 -1
- package/dist/three-compat/render-targets/index.d.ts +0 -17
- package/dist/three-compat/render-targets/index.d.ts.map +0 -1
- package/dist/three-compat/render-targets/index.js +0 -29
- package/dist/three-compat/render-targets/index.js.map +0 -1
- package/dist/three-compat/shaders/index.d.ts +0 -3
- package/dist/three-compat/shaders/index.d.ts.map +0 -1
- package/dist/three-compat/shaders/index.js +0 -3
- package/dist/three-compat/shaders/index.js.map +0 -1
- package/dist/three-compat/textures/index.d.ts +0 -19
- package/dist/three-compat/textures/index.d.ts.map +0 -1
- package/dist/three-compat/textures/index.js +0 -24
- package/dist/three-compat/textures/index.js.map +0 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import type { AuraSceneEvidence } from "./index.js";
|
|
2
|
+
import { type PromptAnimationAccessibilityProofMetadata, type PromptAnimationArtifactBase, type PromptAnimationArtifactKind, type PromptAnimationId, type PromptAnimationValidationIssue } from "./PromptAnimationContract.js";
|
|
3
|
+
import type { AuraVoiceBridgePackage } from "./AuraVoiceBridge.js";
|
|
4
|
+
import type { CartoonPerformanceCoverage } from "./CartoonPerformance.js";
|
|
5
|
+
export type PromptAnimationEvidenceStatus = "pass" | "warn" | "fail" | "missing";
|
|
6
|
+
export interface PromptAnimationScreenshotEvidence {
|
|
7
|
+
readonly id: PromptAnimationId;
|
|
8
|
+
readonly time: number;
|
|
9
|
+
readonly path?: string | undefined;
|
|
10
|
+
readonly hash?: string | undefined;
|
|
11
|
+
readonly width?: number | undefined;
|
|
12
|
+
readonly height?: number | undefined;
|
|
13
|
+
}
|
|
14
|
+
export type PromptAnimationRenderedArtifactRole = "video" | "thumbnail" | "captions" | "timeline" | "audio-stems" | "evidence-json" | "youtube-metadata" | "screenshot" | "other";
|
|
15
|
+
export interface PromptAnimationConsumedAuraVoiceArtifactMetadata {
|
|
16
|
+
readonly id: PromptAnimationId;
|
|
17
|
+
readonly artifact: PromptAnimationArtifactKind;
|
|
18
|
+
readonly present: boolean;
|
|
19
|
+
readonly contractId?: string | undefined;
|
|
20
|
+
readonly generatedAt?: string | undefined;
|
|
21
|
+
readonly issueCodes: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
export interface PromptAnimationRenderedArtifactMetadata {
|
|
24
|
+
readonly id: PromptAnimationId;
|
|
25
|
+
readonly role: PromptAnimationRenderedArtifactRole;
|
|
26
|
+
readonly kind: string;
|
|
27
|
+
readonly path: string;
|
|
28
|
+
readonly required: boolean;
|
|
29
|
+
readonly mimeType?: string | undefined;
|
|
30
|
+
readonly language?: string | undefined;
|
|
31
|
+
readonly sha256?: string | undefined;
|
|
32
|
+
readonly byteSize?: number | undefined;
|
|
33
|
+
readonly width?: number | undefined;
|
|
34
|
+
readonly height?: number | undefined;
|
|
35
|
+
readonly duration?: number | undefined;
|
|
36
|
+
readonly frameRate?: number | undefined;
|
|
37
|
+
readonly captureTime?: number | undefined;
|
|
38
|
+
readonly auraVoiceTimestamp?: number | undefined;
|
|
39
|
+
readonly frame?: number | undefined;
|
|
40
|
+
readonly shotId?: PromptAnimationId | undefined;
|
|
41
|
+
readonly sourceSceneStateId?: PromptAnimationId | undefined;
|
|
42
|
+
readonly metadataComplete?: boolean | undefined;
|
|
43
|
+
readonly missingFields?: readonly string[] | undefined;
|
|
44
|
+
readonly executionRequired?: boolean | undefined;
|
|
45
|
+
readonly notes?: readonly string[] | undefined;
|
|
46
|
+
}
|
|
47
|
+
export interface PromptAnimationArtifactMetadataEvidence {
|
|
48
|
+
readonly status: PromptAnimationEvidenceStatus;
|
|
49
|
+
readonly requiredCount: number;
|
|
50
|
+
readonly completeCount: number;
|
|
51
|
+
readonly executionRequiredCount: number;
|
|
52
|
+
readonly missingMetadata: readonly {
|
|
53
|
+
readonly id: PromptAnimationId;
|
|
54
|
+
readonly role: PromptAnimationRenderedArtifactRole;
|
|
55
|
+
readonly path: string;
|
|
56
|
+
readonly missingFields: readonly string[];
|
|
57
|
+
}[];
|
|
58
|
+
}
|
|
59
|
+
export interface PromptAnimationScreenshotFixtureMetadata {
|
|
60
|
+
readonly id: PromptAnimationId;
|
|
61
|
+
readonly shotId?: PromptAnimationId | undefined;
|
|
62
|
+
readonly renderQueueItemId?: PromptAnimationId | undefined;
|
|
63
|
+
readonly time: number;
|
|
64
|
+
readonly frame: number;
|
|
65
|
+
readonly path: string;
|
|
66
|
+
readonly sourceSceneStateId?: PromptAnimationId | undefined;
|
|
67
|
+
readonly auraVoiceTimestamp: number;
|
|
68
|
+
readonly deterministicSeed?: string | undefined;
|
|
69
|
+
readonly expectedWidth?: number | undefined;
|
|
70
|
+
readonly expectedHeight?: number | undefined;
|
|
71
|
+
readonly captionCueId?: PromptAnimationId | undefined;
|
|
72
|
+
readonly visemeCueId?: PromptAnimationId | undefined;
|
|
73
|
+
readonly notes?: readonly string[] | undefined;
|
|
74
|
+
}
|
|
75
|
+
export interface PromptAnimationDeterministicCaptureEvidence {
|
|
76
|
+
readonly id: PromptAnimationId;
|
|
77
|
+
readonly renderQueueItemId: PromptAnimationId;
|
|
78
|
+
readonly time: number;
|
|
79
|
+
readonly auraVoiceTimestamp: number;
|
|
80
|
+
readonly frame: number;
|
|
81
|
+
readonly sourceSceneStateId?: PromptAnimationId | undefined;
|
|
82
|
+
readonly deterministicSeed?: string | undefined;
|
|
83
|
+
readonly shotId?: PromptAnimationId | undefined;
|
|
84
|
+
readonly dialogueLineId?: PromptAnimationId | undefined;
|
|
85
|
+
readonly captionCueId?: PromptAnimationId | undefined;
|
|
86
|
+
readonly visemeCueId?: PromptAnimationId | undefined;
|
|
87
|
+
readonly thumbnail: boolean;
|
|
88
|
+
}
|
|
89
|
+
export interface PromptAnimationDeterministicCaptureSummary {
|
|
90
|
+
readonly status: PromptAnimationEvidenceStatus;
|
|
91
|
+
readonly count: number;
|
|
92
|
+
readonly missingSceneStateIds: readonly PromptAnimationId[];
|
|
93
|
+
readonly timestampMismatchIds: readonly PromptAnimationId[];
|
|
94
|
+
readonly thumbnailSourceSceneStateId?: PromptAnimationId | undefined;
|
|
95
|
+
readonly missingThumbnailSource: boolean;
|
|
96
|
+
}
|
|
97
|
+
export interface PromptAnimationTimingDriftEvidence {
|
|
98
|
+
readonly maxDriftFrames: number;
|
|
99
|
+
readonly allowedDriftFrames: number;
|
|
100
|
+
readonly status: PromptAnimationEvidenceStatus;
|
|
101
|
+
}
|
|
102
|
+
export interface PromptAnimationCoverageEvidence {
|
|
103
|
+
readonly status: PromptAnimationEvidenceStatus;
|
|
104
|
+
readonly animatedCharacterIds: readonly PromptAnimationId[];
|
|
105
|
+
readonly uncoveredDialogueLineIds: readonly PromptAnimationId[];
|
|
106
|
+
}
|
|
107
|
+
export interface PromptAnimationAssetStatusEvidence {
|
|
108
|
+
readonly status: PromptAnimationEvidenceStatus;
|
|
109
|
+
readonly typedAssets: number;
|
|
110
|
+
readonly missingAssets: readonly PromptAnimationId[];
|
|
111
|
+
readonly primitiveFallbackCharacters: readonly PromptAnimationId[];
|
|
112
|
+
}
|
|
113
|
+
export interface PromptAnimationTrackEvidence {
|
|
114
|
+
readonly status: PromptAnimationEvidenceStatus;
|
|
115
|
+
readonly count: number;
|
|
116
|
+
readonly missingIds: readonly PromptAnimationId[];
|
|
117
|
+
readonly maxDriftFrames?: number | undefined;
|
|
118
|
+
}
|
|
119
|
+
export interface PromptAnimationAudioEvidence {
|
|
120
|
+
readonly status: PromptAnimationEvidenceStatus;
|
|
121
|
+
readonly stemCount: number;
|
|
122
|
+
readonly dialogueStemCount: number;
|
|
123
|
+
readonly missingDialogueLineIds: readonly PromptAnimationId[];
|
|
124
|
+
readonly missingStemIds: readonly PromptAnimationId[];
|
|
125
|
+
}
|
|
126
|
+
export interface PromptAnimationAccessibilityEvidence {
|
|
127
|
+
readonly status: PromptAnimationEvidenceStatus;
|
|
128
|
+
readonly captionsReadable: boolean;
|
|
129
|
+
readonly captionCueCount: number;
|
|
130
|
+
readonly reducedMotion: boolean;
|
|
131
|
+
readonly highContrast: boolean;
|
|
132
|
+
readonly flashingSafe: boolean;
|
|
133
|
+
readonly childSafe: boolean;
|
|
134
|
+
readonly proof: PromptAnimationAccessibilityProofMetadata;
|
|
135
|
+
}
|
|
136
|
+
export interface PromptAnimationRouteHealthEvidence {
|
|
137
|
+
readonly status: PromptAnimationEvidenceStatus;
|
|
138
|
+
readonly route?: string | undefined;
|
|
139
|
+
readonly diagnostics?: AuraSceneEvidence | undefined;
|
|
140
|
+
readonly messages?: readonly string[] | undefined;
|
|
141
|
+
}
|
|
142
|
+
export interface PromptAnimationEvidenceArtifact extends PromptAnimationArtifactBase<"prompt-animation-evidence"> {
|
|
143
|
+
readonly consumedAuraVoiceArtifacts?: readonly PromptAnimationConsumedAuraVoiceArtifactMetadata[] | undefined;
|
|
144
|
+
readonly renderedArtifacts?: readonly PromptAnimationRenderedArtifactMetadata[] | undefined;
|
|
145
|
+
readonly artifactMetadata?: PromptAnimationArtifactMetadataEvidence | undefined;
|
|
146
|
+
readonly screenshots: readonly PromptAnimationScreenshotEvidence[];
|
|
147
|
+
readonly screenshotFixtures?: readonly PromptAnimationScreenshotFixtureMetadata[] | undefined;
|
|
148
|
+
readonly deterministicCaptures: readonly PromptAnimationDeterministicCaptureEvidence[];
|
|
149
|
+
readonly deterministicCapture: PromptAnimationDeterministicCaptureSummary;
|
|
150
|
+
readonly timingDrift: PromptAnimationTimingDriftEvidence;
|
|
151
|
+
readonly animationCoverage: PromptAnimationCoverageEvidence;
|
|
152
|
+
readonly assetStatus: PromptAnimationAssetStatusEvidence;
|
|
153
|
+
readonly captions: PromptAnimationTrackEvidence;
|
|
154
|
+
readonly visemes: PromptAnimationTrackEvidence;
|
|
155
|
+
readonly audio: PromptAnimationAudioEvidence;
|
|
156
|
+
readonly accessibility: PromptAnimationAccessibilityEvidence;
|
|
157
|
+
readonly routeHealth: PromptAnimationRouteHealthEvidence;
|
|
158
|
+
readonly issues: readonly PromptAnimationValidationIssue[];
|
|
159
|
+
readonly publishReady: boolean;
|
|
160
|
+
}
|
|
161
|
+
export interface CollectPromptAnimationEvidenceInput {
|
|
162
|
+
readonly bridgePackage: AuraVoiceBridgePackage;
|
|
163
|
+
readonly screenshots?: readonly PromptAnimationScreenshotEvidence[] | undefined;
|
|
164
|
+
readonly renderedArtifacts?: readonly PromptAnimationRenderedArtifactMetadata[] | undefined;
|
|
165
|
+
readonly deterministicCaptures?: readonly PromptAnimationDeterministicCaptureEvidence[] | undefined;
|
|
166
|
+
readonly screenshotFixtures?: readonly PromptAnimationScreenshotFixtureMetadata[] | undefined;
|
|
167
|
+
readonly performanceCoverage?: CartoonPerformanceCoverage | undefined;
|
|
168
|
+
readonly routeHealth?: PromptAnimationRouteHealthEvidence | undefined;
|
|
169
|
+
readonly generatedAt?: string | undefined;
|
|
170
|
+
}
|
|
171
|
+
export declare function definePromptAnimationEvidence<const TEvidence extends PromptAnimationEvidenceArtifact>(evidence: TEvidence): TEvidence;
|
|
172
|
+
export declare function collectPromptAnimationEvidence(input: CollectPromptAnimationEvidenceInput): PromptAnimationEvidenceArtifact;
|
|
173
|
+
export declare function createPromptAnimationDeterministicScreenshotFixtureMetadata(input: {
|
|
174
|
+
readonly bridgePackage: AuraVoiceBridgePackage;
|
|
175
|
+
readonly screenshots?: readonly PromptAnimationScreenshotEvidence[] | undefined;
|
|
176
|
+
readonly count?: number | undefined;
|
|
177
|
+
readonly pathPrefix?: string | undefined;
|
|
178
|
+
}): readonly PromptAnimationScreenshotFixtureMetadata[];
|
|
179
|
+
export declare function evaluatePromptAnimationPublishReadiness(evidence: PromptAnimationEvidenceArtifact): {
|
|
180
|
+
readonly ready: boolean;
|
|
181
|
+
readonly issues: readonly PromptAnimationValidationIssue[];
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=PromptAnimationEvidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptAnimationEvidence.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/PromptAnimationEvidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
import { createPromptAnimationAccessibilityProofMetadata, createPromptAnimationIssue, promptAnimationContractVersion, promptAnimationFrameAtTime } from "./PromptAnimationContract.js";
|
|
2
|
+
export function definePromptAnimationEvidence(evidence) {
|
|
3
|
+
return evidence;
|
|
4
|
+
}
|
|
5
|
+
export function collectPromptAnimationEvidence(input) {
|
|
6
|
+
const plan = input.bridgePackage.artifacts.episodePlan;
|
|
7
|
+
const screenshots = input.screenshots ?? [];
|
|
8
|
+
const bridgeIssues = input.bridgePackage.issues;
|
|
9
|
+
const consumedAuraVoiceArtifacts = derivePromptAnimationConsumedAuraVoiceArtifactMetadata(input.bridgePackage);
|
|
10
|
+
const renderedArtifacts = normalizePromptAnimationRenderedArtifactMetadata(input.renderedArtifacts ?? derivePromptAnimationRenderedArtifactMetadata(input.bridgePackage, screenshots));
|
|
11
|
+
const artifactMetadata = summarizePromptAnimationArtifactMetadata(renderedArtifacts);
|
|
12
|
+
const maxDriftFrameIssue = maxIssueFrame(bridgeIssues, "drift");
|
|
13
|
+
const missingAssets = plan.characters.filter((character) => !character.rig.asset).map((character) => character.id);
|
|
14
|
+
const primitiveFallbackCharacters = plan.characters
|
|
15
|
+
.filter((character) => character.rig.mouthFallback === "primitive-mouth-card")
|
|
16
|
+
.map((character) => character.id);
|
|
17
|
+
const captionCount = input.bridgePackage.artifacts.captionTrack?.cues.length ?? 0;
|
|
18
|
+
const visemeCount = input.bridgePackage.artifacts.visemes?.cues.length ?? 0;
|
|
19
|
+
const audioStems = input.bridgePackage.artifacts.audioStems?.stems ?? [];
|
|
20
|
+
const dialogueAudioStems = audioStems.filter((stem) => stem.role === "dialogue");
|
|
21
|
+
const deterministicCaptures = input.deterministicCaptures ?? derivePromptAnimationDeterministicCaptures(input.bridgePackage);
|
|
22
|
+
const screenshotFixtures = input.screenshotFixtures ?? derivePromptAnimationScreenshotFixtureMetadata(input.bridgePackage, screenshots);
|
|
23
|
+
const missingSceneStateIds = deterministicCaptures
|
|
24
|
+
.filter((capture) => !capture.sourceSceneStateId)
|
|
25
|
+
.map((capture) => capture.id);
|
|
26
|
+
const timestampMismatchIds = deterministicCaptures
|
|
27
|
+
.filter((capture) => !samePromptAnimationEvidenceTime(capture.time, capture.auraVoiceTimestamp))
|
|
28
|
+
.map((capture) => capture.id);
|
|
29
|
+
const thumbnailSourceSceneStateId = input.bridgePackage.renderOutputPackage.thumbnailCapture.sourceSceneStateId;
|
|
30
|
+
const missingThumbnailSource = !thumbnailSourceSceneStateId ||
|
|
31
|
+
!deterministicCaptures.some((capture) => capture.thumbnail && capture.sourceSceneStateId === thumbnailSourceSceneStateId);
|
|
32
|
+
const dialogueLineIds = input.bridgePackage.artifacts.dialogueTrack.lines.map((line) => line.lineId);
|
|
33
|
+
const captionLineIds = new Set(input.bridgePackage.artifacts.captionTrack?.cues.flatMap((cue) => (cue.lineId ? [cue.lineId] : [])) ?? []);
|
|
34
|
+
const visemeLineIds = new Set(input.bridgePackage.artifacts.visemes?.cues.flatMap((cue) => (cue.lineId ? [cue.lineId] : [])) ?? []);
|
|
35
|
+
const missingCaptionIds = dialogueLineIds.filter((lineId) => !captionLineIds.has(lineId));
|
|
36
|
+
const missingVisemeIds = dialogueLineIds.filter((lineId) => !visemeLineIds.has(lineId));
|
|
37
|
+
const missingDialogueAudioLineIds = input.bridgePackage.artifacts.dialogueTrack.lines
|
|
38
|
+
.filter((line) => !dialogueAudioStems.some((stem) => stem.id.includes(line.lineId) ||
|
|
39
|
+
stem.path.includes(line.lineId) ||
|
|
40
|
+
(samePromptAnimationEvidenceTime(stem.startTime, line.startTime) &&
|
|
41
|
+
samePromptAnimationEvidenceTime(stem.duration, line.endTime - line.startTime))))
|
|
42
|
+
.map((line) => line.lineId);
|
|
43
|
+
const missingAudioStemIds = audioStems
|
|
44
|
+
.filter((stem) => stem.path.trim().length === 0 || stem.duration <= 0)
|
|
45
|
+
.map((stem) => stem.id);
|
|
46
|
+
const accessibilityProof = plan.accessibilityProof ??
|
|
47
|
+
createPromptAnimationAccessibilityProofMetadata({
|
|
48
|
+
language: plan.language,
|
|
49
|
+
captionRequired: plan.safety.captionRequired,
|
|
50
|
+
captionsEnabled: captionCount > 0,
|
|
51
|
+
reducedMotionDefault: plan.runtime.reducedMotion ?? plan.safety.reducedMotionDefault,
|
|
52
|
+
highContrastDefault: plan.runtime.highContrast ?? plan.safety.highContrastDefault ?? true,
|
|
53
|
+
maxTimingDriftFrames: input.bridgePackage.masterClock.maxTimingDriftFrames
|
|
54
|
+
});
|
|
55
|
+
const captionsReadable = captionCount > 0 &&
|
|
56
|
+
accessibilityProof.captions.enabled &&
|
|
57
|
+
accessibilityProof.captions.status !== "fail";
|
|
58
|
+
const reducedMotion = accessibilityProof.reducedMotion.defaultEnabled &&
|
|
59
|
+
accessibilityProof.reducedMotion.status !== "fail";
|
|
60
|
+
const highContrast = accessibilityProof.highContrast.defaultEnabled &&
|
|
61
|
+
accessibilityProof.highContrast.status !== "fail";
|
|
62
|
+
const issues = [...bridgeIssues];
|
|
63
|
+
if (screenshots.length === 0) {
|
|
64
|
+
issues.push(createPromptAnimationIssue("error", "evidence-screenshot-missing", "At least one screenshot hash is required."));
|
|
65
|
+
}
|
|
66
|
+
for (const screenshot of screenshots) {
|
|
67
|
+
if (!screenshot.hash) {
|
|
68
|
+
issues.push(createPromptAnimationIssue("error", "evidence-screenshot-hash-missing", `Screenshot "${screenshot.id}" has no hash.`, {
|
|
69
|
+
path: `screenshots.${screenshot.id}`,
|
|
70
|
+
time: screenshot.time
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (deterministicCaptures.length === 0) {
|
|
75
|
+
issues.push(createPromptAnimationIssue("error", "evidence-deterministic-captures-missing", "Render evidence must include deterministic capture records from AuraVoice timestamps."));
|
|
76
|
+
}
|
|
77
|
+
for (const captureId of missingSceneStateIds) {
|
|
78
|
+
issues.push(createPromptAnimationIssue("error", "evidence-deterministic-scene-state-missing", `Deterministic capture "${captureId}" is missing an Aura3D scene state id.`));
|
|
79
|
+
}
|
|
80
|
+
for (const captureId of timestampMismatchIds) {
|
|
81
|
+
issues.push(createPromptAnimationIssue("error", "evidence-deterministic-timestamp-mismatch", `Deterministic capture "${captureId}" must use the exact AuraVoice timestamp.`));
|
|
82
|
+
}
|
|
83
|
+
if (missingThumbnailSource) {
|
|
84
|
+
issues.push(createPromptAnimationIssue("error", "evidence-thumbnail-scene-state-missing", "Thumbnail evidence must reuse a deterministic Aura3D scene state from the render queue."));
|
|
85
|
+
}
|
|
86
|
+
for (const missingMetadata of artifactMetadata.missingMetadata) {
|
|
87
|
+
issues.push(createPromptAnimationIssue("error", "evidence-render-artifact-metadata-missing", `Rendered artifact "${missingMetadata.id}" is missing required metadata: ${missingMetadata.missingFields.join(", ")}.`, { path: `renderedArtifacts.${missingMetadata.id}` }));
|
|
88
|
+
}
|
|
89
|
+
const animationCoverage = input.performanceCoverage
|
|
90
|
+
? {
|
|
91
|
+
status: input.performanceCoverage.uncoveredDialogueLineIds.length === 0 ? "pass" : "fail",
|
|
92
|
+
animatedCharacterIds: input.performanceCoverage.animatedCharacterIds,
|
|
93
|
+
uncoveredDialogueLineIds: input.performanceCoverage.uncoveredDialogueLineIds
|
|
94
|
+
}
|
|
95
|
+
: {
|
|
96
|
+
status: "missing",
|
|
97
|
+
animatedCharacterIds: [],
|
|
98
|
+
uncoveredDialogueLineIds: input.bridgePackage.artifacts.dialogueTrack.lines.map((line) => line.lineId)
|
|
99
|
+
};
|
|
100
|
+
const evidence = {
|
|
101
|
+
artifact: "prompt-animation-evidence",
|
|
102
|
+
contractId: promptAnimationContractVersion,
|
|
103
|
+
episodeId: plan.episodeId,
|
|
104
|
+
consumedAuraVoiceArtifacts,
|
|
105
|
+
renderedArtifacts,
|
|
106
|
+
artifactMetadata,
|
|
107
|
+
screenshots,
|
|
108
|
+
screenshotFixtures,
|
|
109
|
+
deterministicCaptures,
|
|
110
|
+
deterministicCapture: {
|
|
111
|
+
status: deterministicCaptures.length === 0
|
|
112
|
+
? "missing"
|
|
113
|
+
: missingSceneStateIds.length === 0 && timestampMismatchIds.length === 0 && !missingThumbnailSource
|
|
114
|
+
? "pass"
|
|
115
|
+
: "fail",
|
|
116
|
+
count: deterministicCaptures.length,
|
|
117
|
+
missingSceneStateIds,
|
|
118
|
+
timestampMismatchIds,
|
|
119
|
+
...(thumbnailSourceSceneStateId ? { thumbnailSourceSceneStateId } : {}),
|
|
120
|
+
missingThumbnailSource
|
|
121
|
+
},
|
|
122
|
+
timingDrift: {
|
|
123
|
+
maxDriftFrames: maxDriftFrameIssue,
|
|
124
|
+
allowedDriftFrames: input.bridgePackage.masterClock.maxTimingDriftFrames,
|
|
125
|
+
status: maxDriftFrameIssue <= input.bridgePackage.masterClock.maxTimingDriftFrames ? "pass" : "fail"
|
|
126
|
+
},
|
|
127
|
+
animationCoverage,
|
|
128
|
+
assetStatus: {
|
|
129
|
+
status: missingAssets.length === 0 ? "pass" : "fail",
|
|
130
|
+
typedAssets: plan.characters.filter((character) => Boolean(character.rig.asset)).length,
|
|
131
|
+
missingAssets,
|
|
132
|
+
primitiveFallbackCharacters
|
|
133
|
+
},
|
|
134
|
+
captions: {
|
|
135
|
+
status: captionCount === 0 ? "missing" : missingCaptionIds.length === 0 ? "pass" : "fail",
|
|
136
|
+
count: captionCount,
|
|
137
|
+
missingIds: missingCaptionIds
|
|
138
|
+
},
|
|
139
|
+
visemes: {
|
|
140
|
+
status: visemeCount === 0 ? "missing" : missingVisemeIds.length === 0 ? "pass" : "fail",
|
|
141
|
+
count: visemeCount,
|
|
142
|
+
missingIds: missingVisemeIds
|
|
143
|
+
},
|
|
144
|
+
audio: {
|
|
145
|
+
status: audioStems.length === 0
|
|
146
|
+
? "missing"
|
|
147
|
+
: missingDialogueAudioLineIds.length === 0 && missingAudioStemIds.length === 0
|
|
148
|
+
? "pass"
|
|
149
|
+
: "fail",
|
|
150
|
+
stemCount: audioStems.length,
|
|
151
|
+
dialogueStemCount: dialogueAudioStems.length,
|
|
152
|
+
missingDialogueLineIds: missingDialogueAudioLineIds,
|
|
153
|
+
missingStemIds: missingAudioStemIds
|
|
154
|
+
},
|
|
155
|
+
accessibility: {
|
|
156
|
+
status: plan.safety.childSafe &&
|
|
157
|
+
plan.safety.captionRequired &&
|
|
158
|
+
captionsReadable &&
|
|
159
|
+
reducedMotion &&
|
|
160
|
+
highContrast &&
|
|
161
|
+
plan.safety.flashing !== "review-required" &&
|
|
162
|
+
plan.safety.reducedMotionDefault
|
|
163
|
+
? "pass"
|
|
164
|
+
: "fail",
|
|
165
|
+
captionsReadable,
|
|
166
|
+
captionCueCount: captionCount,
|
|
167
|
+
reducedMotion,
|
|
168
|
+
highContrast,
|
|
169
|
+
flashingSafe: plan.safety.flashing !== "review-required",
|
|
170
|
+
childSafe: plan.safety.childSafe,
|
|
171
|
+
proof: accessibilityProof
|
|
172
|
+
},
|
|
173
|
+
routeHealth: input.routeHealth ?? { status: "missing" },
|
|
174
|
+
issues,
|
|
175
|
+
publishReady: false,
|
|
176
|
+
...(input.generatedAt ? { generatedAt: input.generatedAt } : {})
|
|
177
|
+
};
|
|
178
|
+
return {
|
|
179
|
+
...evidence,
|
|
180
|
+
publishReady: evaluatePromptAnimationPublishReadiness(evidence).ready
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
export function createPromptAnimationDeterministicScreenshotFixtureMetadata(input) {
|
|
184
|
+
return derivePromptAnimationScreenshotFixtureMetadata(input.bridgePackage, input.screenshots ?? [], {
|
|
185
|
+
count: input.count,
|
|
186
|
+
pathPrefix: input.pathPrefix
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
export function evaluatePromptAnimationPublishReadiness(evidence) {
|
|
190
|
+
const issues = [...evidence.issues];
|
|
191
|
+
const requiredStatuses = [
|
|
192
|
+
["timingDrift", evidence.timingDrift.status],
|
|
193
|
+
["animationCoverage", evidence.animationCoverage.status],
|
|
194
|
+
["assetStatus", evidence.assetStatus.status],
|
|
195
|
+
["captions", evidence.captions.status],
|
|
196
|
+
["visemes", evidence.visemes.status],
|
|
197
|
+
["audio", evidence.audio.status],
|
|
198
|
+
["deterministicCapture", evidence.deterministicCapture.status],
|
|
199
|
+
["artifactMetadata", evidence.artifactMetadata?.status ?? "missing"],
|
|
200
|
+
["accessibility", evidence.accessibility.status],
|
|
201
|
+
["routeHealth", evidence.routeHealth.status]
|
|
202
|
+
];
|
|
203
|
+
for (const [name, status] of requiredStatuses) {
|
|
204
|
+
if (status !== "pass") {
|
|
205
|
+
issues.push(createPromptAnimationIssue("error", `evidence-${name}-not-ready`, `${name} evidence status is "${status}".`));
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (evidence.screenshots.length === 0) {
|
|
209
|
+
issues.push(createPromptAnimationIssue("error", "evidence-screenshots-empty", "Screenshot evidence is required."));
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
ready: !issues.some((issue) => issue.severity === "error"),
|
|
213
|
+
issues
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
function derivePromptAnimationDeterministicCaptures(bridgePackage) {
|
|
217
|
+
const thumbnailSourceSceneStateId = bridgePackage.renderOutputPackage.thumbnailCapture.sourceSceneStateId;
|
|
218
|
+
return bridgePackage.renderQueue.items.map((item) => {
|
|
219
|
+
const time = item.time;
|
|
220
|
+
const dialogue = bridgePackage.artifacts.dialogueTrack.lines.find((line) => time >= line.startTime && time < line.endTime);
|
|
221
|
+
const caption = bridgePackage.artifacts.captionTrack?.cues.find((cue) => time >= cue.startTime && time < cue.endTime);
|
|
222
|
+
const viseme = bridgePackage.artifacts.visemes?.cues.find((cue) => time >= cue.startTime && time < cue.endTime);
|
|
223
|
+
const sourceSceneState = item.sourceSceneState;
|
|
224
|
+
return {
|
|
225
|
+
id: `${item.id}:deterministic-capture`,
|
|
226
|
+
renderQueueItemId: item.id,
|
|
227
|
+
time,
|
|
228
|
+
auraVoiceTimestamp: sourceSceneState?.auraVoiceTimestamp ?? time,
|
|
229
|
+
frame: item.frame,
|
|
230
|
+
...(sourceSceneState?.sceneStateId ? { sourceSceneStateId: sourceSceneState.sceneStateId } : {}),
|
|
231
|
+
...(sourceSceneState?.deterministicSeed ? { deterministicSeed: sourceSceneState.deterministicSeed } : {}),
|
|
232
|
+
...(item.shotId ? { shotId: item.shotId } : {}),
|
|
233
|
+
...(dialogue ? { dialogueLineId: dialogue.lineId } : {}),
|
|
234
|
+
...(caption ? { captionCueId: caption.captionId } : {}),
|
|
235
|
+
...(viseme ? { visemeCueId: viseme.id } : {}),
|
|
236
|
+
thumbnail: Boolean(sourceSceneState?.sceneStateId && sourceSceneState.sceneStateId === thumbnailSourceSceneStateId)
|
|
237
|
+
};
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
function derivePromptAnimationConsumedAuraVoiceArtifactMetadata(bridgePackage) {
|
|
241
|
+
const artifacts = bridgePackage.artifacts;
|
|
242
|
+
const entries = [
|
|
243
|
+
["episodePlan", "episode.plan", artifacts.episodePlan],
|
|
244
|
+
["storyboard", "storyboard", artifacts.storyboard],
|
|
245
|
+
["shotTimeline", "shot-timeline", artifacts.shotTimeline],
|
|
246
|
+
["dialogueTrack", "dialogue-track", artifacts.dialogueTrack],
|
|
247
|
+
["captionTrack", "caption-track", artifacts.captionTrack],
|
|
248
|
+
["visemes", "visemes", artifacts.visemes],
|
|
249
|
+
["audioStems", "audio-stems", artifacts.audioStems],
|
|
250
|
+
["dubMap", "dub-map", artifacts.dubMap],
|
|
251
|
+
["renderQueue", "render-queue", bridgePackage.renderQueue],
|
|
252
|
+
["renderOutputPackage", "render-output-package", bridgePackage.renderOutputPackage]
|
|
253
|
+
];
|
|
254
|
+
return entries.map(([id, artifactKind, artifact]) => ({
|
|
255
|
+
id,
|
|
256
|
+
artifact: artifactKind,
|
|
257
|
+
present: Boolean(artifact),
|
|
258
|
+
...(artifact?.contractId ? { contractId: artifact.contractId } : {}),
|
|
259
|
+
...(artifact?.generatedAt ? { generatedAt: artifact.generatedAt } : {}),
|
|
260
|
+
issueCodes: bridgePackage.issues
|
|
261
|
+
.filter((issue) => issue.path?.includes(id) || issue.code.includes(String(artifactKind)))
|
|
262
|
+
.map((issue) => issue.code)
|
|
263
|
+
}));
|
|
264
|
+
}
|
|
265
|
+
function derivePromptAnimationRenderedArtifactMetadata(bridgePackage, screenshots) {
|
|
266
|
+
const requiredOutputKinds = new Set(bridgePackage.renderOutputPackage.requiredOutputKinds);
|
|
267
|
+
const renderedArtifacts = bridgePackage.renderQueue.outputs.map((output) => {
|
|
268
|
+
const role = promptAnimationRenderedArtifactRoleForKind(output.kind);
|
|
269
|
+
const thumbnailCapture = output.kind === "thumbnail" ? bridgePackage.renderOutputPackage.thumbnailCapture : undefined;
|
|
270
|
+
return {
|
|
271
|
+
id: output.id,
|
|
272
|
+
role,
|
|
273
|
+
kind: output.kind,
|
|
274
|
+
path: output.path,
|
|
275
|
+
required: output.required ?? requiredOutputKinds.has(output.kind),
|
|
276
|
+
...(output.mimeType ? { mimeType: output.mimeType } : {}),
|
|
277
|
+
...(output.language ? { language: output.language } : {}),
|
|
278
|
+
...(role === "video" ? { duration: bridgePackage.masterClock.duration, frameRate: bridgePackage.masterClock.frameRate } : {}),
|
|
279
|
+
...(role === "video" || role === "thumbnail"
|
|
280
|
+
? {
|
|
281
|
+
width: bridgePackage.renderQueue.viewport.width,
|
|
282
|
+
height: bridgePackage.renderQueue.viewport.height
|
|
283
|
+
}
|
|
284
|
+
: {}),
|
|
285
|
+
...(thumbnailCapture
|
|
286
|
+
? {
|
|
287
|
+
captureTime: thumbnailCapture.time,
|
|
288
|
+
auraVoiceTimestamp: thumbnailCapture.auraVoiceTimestamp,
|
|
289
|
+
frame: thumbnailCapture.frame,
|
|
290
|
+
...(thumbnailCapture.shotId ? { shotId: thumbnailCapture.shotId } : {}),
|
|
291
|
+
sourceSceneStateId: thumbnailCapture.sourceSceneStateId
|
|
292
|
+
}
|
|
293
|
+
: {}),
|
|
294
|
+
metadataComplete: false,
|
|
295
|
+
missingFields: [],
|
|
296
|
+
executionRequired: true,
|
|
297
|
+
notes: ["Render artifact metadata must be completed with sha256 and byteSize after the operator render pass."]
|
|
298
|
+
};
|
|
299
|
+
});
|
|
300
|
+
if (bridgePackage.artifacts.audioStems) {
|
|
301
|
+
renderedArtifacts.push({
|
|
302
|
+
id: "audio-stems",
|
|
303
|
+
role: "audio-stems",
|
|
304
|
+
kind: "audio-stems-json",
|
|
305
|
+
path: "dist/render/audio-stems.json",
|
|
306
|
+
required: true,
|
|
307
|
+
mimeType: "application/json",
|
|
308
|
+
language: bridgePackage.artifacts.episodePlan.language,
|
|
309
|
+
duration: bridgePackage.artifacts.audioStems.duration,
|
|
310
|
+
metadataComplete: false,
|
|
311
|
+
missingFields: [],
|
|
312
|
+
executionRequired: true,
|
|
313
|
+
notes: ["Audio stem artifact metadata must include hash and byte size once AuraVoice writes the sidecar."]
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
for (const screenshot of screenshots) {
|
|
317
|
+
renderedArtifacts.push({
|
|
318
|
+
id: `screenshot:${screenshot.id}`,
|
|
319
|
+
role: "screenshot",
|
|
320
|
+
kind: "screenshot",
|
|
321
|
+
path: screenshot.path ?? "",
|
|
322
|
+
required: true,
|
|
323
|
+
...(screenshot.hash ? { sha256: screenshot.hash } : {}),
|
|
324
|
+
...(screenshot.width ? { width: screenshot.width } : {}),
|
|
325
|
+
...(screenshot.height ? { height: screenshot.height } : {}),
|
|
326
|
+
captureTime: screenshot.time,
|
|
327
|
+
auraVoiceTimestamp: screenshot.time,
|
|
328
|
+
frame: promptAnimationFrameAtTime(screenshot.time, bridgePackage.masterClock.frameRate),
|
|
329
|
+
metadataComplete: false,
|
|
330
|
+
missingFields: [],
|
|
331
|
+
executionRequired: true,
|
|
332
|
+
notes: ["Screenshot metadata proves deterministic capture hash; byte size is optional for screenshot evidence."]
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
return renderedArtifacts;
|
|
336
|
+
}
|
|
337
|
+
function normalizePromptAnimationRenderedArtifactMetadata(artifacts) {
|
|
338
|
+
return artifacts.map((artifact) => {
|
|
339
|
+
const missingFields = missingRenderedArtifactMetadataFields(artifact);
|
|
340
|
+
return {
|
|
341
|
+
...artifact,
|
|
342
|
+
missingFields,
|
|
343
|
+
metadataComplete: missingFields.length === 0,
|
|
344
|
+
executionRequired: missingFields.length > 0
|
|
345
|
+
};
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
function summarizePromptAnimationArtifactMetadata(renderedArtifacts) {
|
|
349
|
+
const requiredArtifacts = renderedArtifacts.filter((artifact) => artifact.required);
|
|
350
|
+
const missingMetadata = requiredArtifacts
|
|
351
|
+
.filter((artifact) => !artifact.metadataComplete)
|
|
352
|
+
.map((artifact) => ({
|
|
353
|
+
id: artifact.id,
|
|
354
|
+
role: artifact.role,
|
|
355
|
+
path: artifact.path,
|
|
356
|
+
missingFields: artifact.missingFields ?? []
|
|
357
|
+
}));
|
|
358
|
+
return {
|
|
359
|
+
status: requiredArtifacts.length === 0 ? "missing" : missingMetadata.length === 0 ? "pass" : "fail",
|
|
360
|
+
requiredCount: requiredArtifacts.length,
|
|
361
|
+
completeCount: requiredArtifacts.length - missingMetadata.length,
|
|
362
|
+
executionRequiredCount: missingMetadata.length,
|
|
363
|
+
missingMetadata
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
function promptAnimationRenderedArtifactRoleForKind(kind) {
|
|
367
|
+
if (kind === "mp4" || kind === "webm" || kind === "png-sequence")
|
|
368
|
+
return "video";
|
|
369
|
+
if (kind === "thumbnail")
|
|
370
|
+
return "thumbnail";
|
|
371
|
+
if (kind === "caption-vtt" || kind === "caption-srt")
|
|
372
|
+
return "captions";
|
|
373
|
+
if (kind === "timeline-json")
|
|
374
|
+
return "timeline";
|
|
375
|
+
if (kind === "evidence-json")
|
|
376
|
+
return "evidence-json";
|
|
377
|
+
if (kind === "youtube-metadata")
|
|
378
|
+
return "youtube-metadata";
|
|
379
|
+
return "other";
|
|
380
|
+
}
|
|
381
|
+
function missingRenderedArtifactMetadataFields(artifact) {
|
|
382
|
+
if (!artifact.required)
|
|
383
|
+
return [];
|
|
384
|
+
const missing = [];
|
|
385
|
+
if (!artifact.path.trim())
|
|
386
|
+
missing.push("path");
|
|
387
|
+
if (!artifact.sha256)
|
|
388
|
+
missing.push("sha256");
|
|
389
|
+
if (requiresRenderedArtifactByteSize(artifact.role) && (!artifact.byteSize || artifact.byteSize <= 0)) {
|
|
390
|
+
missing.push("byteSize");
|
|
391
|
+
}
|
|
392
|
+
if ((artifact.role === "thumbnail" || artifact.role === "screenshot") && !artifact.width)
|
|
393
|
+
missing.push("width");
|
|
394
|
+
if ((artifact.role === "thumbnail" || artifact.role === "screenshot") && !artifact.height)
|
|
395
|
+
missing.push("height");
|
|
396
|
+
if (artifact.role === "thumbnail" && !artifact.sourceSceneStateId)
|
|
397
|
+
missing.push("sourceSceneStateId");
|
|
398
|
+
if (artifact.role === "video" && !artifact.duration)
|
|
399
|
+
missing.push("duration");
|
|
400
|
+
if (artifact.role === "video" && !artifact.frameRate)
|
|
401
|
+
missing.push("frameRate");
|
|
402
|
+
return missing;
|
|
403
|
+
}
|
|
404
|
+
function requiresRenderedArtifactByteSize(role) {
|
|
405
|
+
return role !== "screenshot";
|
|
406
|
+
}
|
|
407
|
+
function derivePromptAnimationScreenshotFixtureMetadata(bridgePackage, screenshots, options = {}) {
|
|
408
|
+
const fixtures = [];
|
|
409
|
+
const seenShotIds = new Set();
|
|
410
|
+
const count = options.count ?? 3;
|
|
411
|
+
const pathPrefix = options.pathPrefix ?? "artifacts/screenshots";
|
|
412
|
+
for (const item of bridgePackage.renderQueue.items) {
|
|
413
|
+
const shotId = item.shotId ?? `shot-${fixtures.length + 1}`;
|
|
414
|
+
if (seenShotIds.has(shotId))
|
|
415
|
+
continue;
|
|
416
|
+
seenShotIds.add(shotId);
|
|
417
|
+
const time = item.time;
|
|
418
|
+
const screenshot = screenshots.find((candidate) => samePromptAnimationEvidenceTime(candidate.time, time));
|
|
419
|
+
const caption = bridgePackage.artifacts.captionTrack?.cues.find((cue) => time >= cue.startTime && time < cue.endTime);
|
|
420
|
+
const viseme = bridgePackage.artifacts.visemes?.cues.find((cue) => time >= cue.startTime && time < cue.endTime);
|
|
421
|
+
fixtures.push({
|
|
422
|
+
id: `${shotId}:${time.toFixed(3)}s:screenshot-fixture`,
|
|
423
|
+
shotId,
|
|
424
|
+
renderQueueItemId: item.id,
|
|
425
|
+
time,
|
|
426
|
+
frame: item.frame ?? promptAnimationFrameAtTime(time, bridgePackage.masterClock.frameRate),
|
|
427
|
+
path: screenshot?.path ?? `${pathPrefix}/${shotId}-${time.toFixed(3)}s.png`,
|
|
428
|
+
...(item.sourceSceneState?.sceneStateId ? { sourceSceneStateId: item.sourceSceneState.sceneStateId } : {}),
|
|
429
|
+
auraVoiceTimestamp: item.sourceSceneState?.auraVoiceTimestamp ?? time,
|
|
430
|
+
...(item.sourceSceneState?.deterministicSeed ? { deterministicSeed: item.sourceSceneState.deterministicSeed } : {}),
|
|
431
|
+
expectedWidth: bridgePackage.artifacts.episodePlan.runtime.resolution.width,
|
|
432
|
+
expectedHeight: bridgePackage.artifacts.episodePlan.runtime.resolution.height,
|
|
433
|
+
...(caption ? { captionCueId: caption.captionId } : {}),
|
|
434
|
+
...(viseme ? { visemeCueId: viseme.id } : {}),
|
|
435
|
+
notes: ["Fixture metadata only; capture hash must be filled after deterministic screenshot render."]
|
|
436
|
+
});
|
|
437
|
+
if (fixtures.length >= count)
|
|
438
|
+
break;
|
|
439
|
+
}
|
|
440
|
+
return fixtures;
|
|
441
|
+
}
|
|
442
|
+
function maxIssueFrame(issues, codeIncludes) {
|
|
443
|
+
let maxFrame = 0;
|
|
444
|
+
for (const issue of issues) {
|
|
445
|
+
if (!issue.code.includes(codeIncludes))
|
|
446
|
+
continue;
|
|
447
|
+
maxFrame = Math.max(maxFrame, issue.frame ?? 0);
|
|
448
|
+
}
|
|
449
|
+
return maxFrame;
|
|
450
|
+
}
|
|
451
|
+
function samePromptAnimationEvidenceTime(a, b) {
|
|
452
|
+
return Math.abs(a - b) <= 0.000001;
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=PromptAnimationEvidence.js.map
|