@aura3d/engine 1.0.10 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/animation/AnimationClipRegistry.d.ts +16 -0
- package/dist/animation/AnimationClipRegistry.d.ts.map +1 -1
- package/dist/animation/AnimationClipRegistry.js +42 -0
- package/dist/animation/AnimationClipRegistry.js.map +1 -1
- package/dist/animation/AnimationController.d.ts +14 -0
- package/dist/animation/AnimationController.d.ts.map +1 -1
- package/dist/animation/AnimationController.js +21 -0
- package/dist/animation/AnimationController.js.map +1 -1
- package/dist/animation/AnimationStateGraph.d.ts +11 -1
- package/dist/animation/AnimationStateGraph.d.ts.map +1 -1
- package/dist/animation/AnimationStateGraph.js +50 -1
- package/dist/animation/AnimationStateGraph.js.map +1 -1
- package/dist/animation/HumanoidRetargeting.d.ts +13 -0
- package/dist/animation/HumanoidRetargeting.d.ts.map +1 -1
- package/dist/animation/HumanoidRetargeting.js +43 -0
- package/dist/animation/HumanoidRetargeting.js.map +1 -1
- package/dist/animation/MotionQuality.d.ts +6 -0
- package/dist/animation/MotionQuality.d.ts.map +1 -1
- package/dist/animation/MotionQuality.js +16 -0
- package/dist/animation/MotionQuality.js.map +1 -1
- package/dist/animation/browser-index.d.ts +2 -2
- package/dist/animation/browser-index.d.ts.map +1 -1
- package/dist/animation/browser-index.js +1 -1
- package/dist/animation/browser-index.js.map +1 -1
- package/dist/animation/index.d.ts +2 -2
- package/dist/animation/index.d.ts.map +1 -1
- package/dist/animation/index.js +1 -1
- package/dist/animation/index.js.map +1 -1
- package/dist/audio/AudioBus.d.ts +2 -0
- package/dist/audio/AudioBus.d.ts.map +1 -1
- package/dist/audio/AudioBus.js +6 -0
- package/dist/audio/AudioBus.js.map +1 -1
- package/dist/audio/AudioFileManager.d.ts +23 -0
- package/dist/audio/AudioFileManager.d.ts.map +1 -1
- package/dist/audio/AudioFileManager.js +60 -0
- package/dist/audio/AudioFileManager.js.map +1 -1
- package/dist/audio/AudioMixer.d.ts +43 -0
- package/dist/audio/AudioMixer.d.ts.map +1 -1
- package/dist/audio/AudioMixer.js +43 -0
- package/dist/audio/AudioMixer.js.map +1 -1
- package/dist/audio/AudioTimelineTrack.d.ts +25 -0
- package/dist/audio/AudioTimelineTrack.d.ts.map +1 -1
- package/dist/audio/AudioTimelineTrack.js +59 -0
- package/dist/audio/AudioTimelineTrack.js.map +1 -1
- package/dist/audio/AudioWaveform.d.ts +22 -0
- package/dist/audio/AudioWaveform.d.ts.map +1 -1
- package/dist/audio/AudioWaveform.js +18 -0
- package/dist/audio/AudioWaveform.js.map +1 -1
- package/dist/audio/index.d.ts +8 -7
- package/dist/audio/index.d.ts.map +1 -1
- package/dist/audio/index.js +4 -4
- package/dist/audio/index.js.map +1 -1
- package/dist/aura3d-cli/cartoon-asset-profiles.d.ts +1 -0
- package/dist/aura3d-cli/cartoon-asset-profiles.d.ts.map +1 -1
- package/dist/aura3d-cli/cartoon-asset-profiles.js +8 -4
- package/dist/aura3d-cli/cartoon-asset-profiles.js.map +1 -1
- package/dist/aura3d-cli/cli.js +47 -1
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/game-asset-validator.d.ts +2 -2
- package/dist/aura3d-cli/game-asset-validator.d.ts.map +1 -1
- package/dist/aura3d-cli/game-asset-validator.js +1 -1
- package/dist/aura3d-cli/game-asset-validator.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +48 -0
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +211 -0
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/editor-runtime/AssetDropZone.d.ts +2 -0
- package/dist/editor-runtime/AssetDropZone.d.ts.map +1 -1
- package/dist/editor-runtime/AssetDropZone.js +14 -0
- package/dist/editor-runtime/AssetDropZone.js.map +1 -1
- package/dist/editor-runtime/CameraPathEditor.d.ts +48 -0
- package/dist/editor-runtime/CameraPathEditor.d.ts.map +1 -0
- package/dist/editor-runtime/CameraPathEditor.js +181 -0
- package/dist/editor-runtime/CameraPathEditor.js.map +1 -0
- package/dist/editor-runtime/CartoonSceneEditor.d.ts +24 -0
- package/dist/editor-runtime/CartoonSceneEditor.d.ts.map +1 -1
- package/dist/editor-runtime/CartoonSceneEditor.js +35 -2
- package/dist/editor-runtime/CartoonSceneEditor.js.map +1 -1
- package/dist/editor-runtime/EpisodeReviewPanel.d.ts +67 -0
- package/dist/editor-runtime/EpisodeReviewPanel.d.ts.map +1 -0
- package/dist/editor-runtime/EpisodeReviewPanel.js +162 -0
- package/dist/editor-runtime/EpisodeReviewPanel.js.map +1 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.d.ts +77 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.d.ts.map +1 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.js +162 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.js.map +1 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.d.ts +81 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.d.ts.map +1 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.js +180 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.js.map +1 -0
- package/dist/editor-runtime/RenderQueuePanel.d.ts +38 -0
- package/dist/editor-runtime/RenderQueuePanel.d.ts.map +1 -0
- package/dist/editor-runtime/RenderQueuePanel.js +72 -0
- package/dist/editor-runtime/RenderQueuePanel.js.map +1 -0
- package/dist/editor-runtime/TimelineEditorController.d.ts +10 -0
- package/dist/editor-runtime/TimelineEditorController.d.ts.map +1 -1
- package/dist/editor-runtime/TimelineEditorController.js +28 -3
- package/dist/editor-runtime/TimelineEditorController.js.map +1 -1
- package/dist/editor-runtime/TimelineUI.d.ts.map +1 -1
- package/dist/editor-runtime/TimelineUI.js +5 -0
- package/dist/editor-runtime/TimelineUI.js.map +1 -1
- package/dist/editor-runtime/VisualReviewDashboard.d.ts +43 -0
- package/dist/editor-runtime/VisualReviewDashboard.d.ts.map +1 -0
- package/dist/editor-runtime/VisualReviewDashboard.js +47 -0
- package/dist/editor-runtime/VisualReviewDashboard.js.map +1 -0
- package/dist/editor-runtime/index.d.ts +14 -2
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +6 -0
- package/dist/editor-runtime/index.js.map +1 -1
- package/dist/engine/agent-api/AssetLibraryBrowser.d.ts +38 -0
- package/dist/engine/agent-api/AssetLibraryBrowser.d.ts.map +1 -1
- package/dist/engine/agent-api/AssetLibraryBrowser.js +53 -1
- package/dist/engine/agent-api/AssetLibraryBrowser.js.map +1 -1
- package/dist/engine/agent-api/AudioMuxer.d.ts +4 -0
- package/dist/engine/agent-api/AudioMuxer.d.ts.map +1 -1
- package/dist/engine/agent-api/AudioMuxer.js +6 -0
- package/dist/engine/agent-api/AudioMuxer.js.map +1 -1
- package/dist/engine/agent-api/AudioVisemeAnalyzer.d.ts +4 -0
- package/dist/engine/agent-api/AudioVisemeAnalyzer.d.ts.map +1 -1
- package/dist/engine/agent-api/AudioVisemeAnalyzer.js +3 -0
- package/dist/engine/agent-api/AudioVisemeAnalyzer.js.map +1 -1
- package/dist/engine/agent-api/BatchEpisodeRenderer.d.ts +31 -0
- package/dist/engine/agent-api/BatchEpisodeRenderer.d.ts.map +1 -0
- package/dist/engine/agent-api/BatchEpisodeRenderer.js +20 -0
- package/dist/engine/agent-api/BatchEpisodeRenderer.js.map +1 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.d.ts +65 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.d.ts.map +1 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js +42 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js.map +1 -0
- package/dist/engine/agent-api/CameraPresetLibrary.d.ts +1 -1
- package/dist/engine/agent-api/CameraPresetLibrary.d.ts.map +1 -1
- package/dist/engine/agent-api/CameraPresetLibrary.js +18 -0
- package/dist/engine/agent-api/CameraPresetLibrary.js.map +1 -1
- package/dist/engine/agent-api/CaptionExporter.d.ts +5 -1
- package/dist/engine/agent-api/CaptionExporter.d.ts.map +1 -1
- package/dist/engine/agent-api/CaptionExporter.js +18 -3
- package/dist/engine/agent-api/CaptionExporter.js.map +1 -1
- package/dist/engine/agent-api/CartoonAssetManifest.d.ts +19 -1
- package/dist/engine/agent-api/CartoonAssetManifest.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonAssetManifest.js +62 -1
- package/dist/engine/agent-api/CartoonAssetManifest.js.map +1 -1
- package/dist/engine/agent-api/CartoonDirector.d.ts +26 -1
- package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonDirector.js +92 -2
- package/dist/engine/agent-api/CartoonDirector.js.map +1 -1
- package/dist/engine/agent-api/CartoonEpisodePackage.d.ts +51 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.js +79 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.js.map +1 -0
- package/dist/engine/agent-api/CartoonMotionQuality.d.ts +83 -0
- package/dist/engine/agent-api/CartoonMotionQuality.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonMotionQuality.js +128 -0
- package/dist/engine/agent-api/CartoonMotionQuality.js.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonPerformance.js +28 -0
- package/dist/engine/agent-api/CartoonPerformance.js.map +1 -1
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts +11 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonRenderQueue.js +25 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -1
- package/dist/engine/agent-api/CartoonRouteProof.d.ts +112 -0
- package/dist/engine/agent-api/CartoonRouteProof.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonRouteProof.js +127 -0
- package/dist/engine/agent-api/CartoonRouteProof.js.map +1 -0
- package/dist/engine/agent-api/CloudRenderAdapter.d.ts +55 -0
- package/dist/engine/agent-api/CloudRenderAdapter.d.ts.map +1 -0
- package/dist/engine/agent-api/CloudRenderAdapter.js +75 -0
- package/dist/engine/agent-api/CloudRenderAdapter.js.map +1 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.d.ts +54 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.d.ts.map +1 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.js +107 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.js.map +1 -0
- package/dist/engine/agent-api/FrameEncoder.d.ts +18 -1
- package/dist/engine/agent-api/FrameEncoder.d.ts.map +1 -1
- package/dist/engine/agent-api/FrameEncoder.js +14 -0
- package/dist/engine/agent-api/FrameEncoder.js.map +1 -1
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.d.ts +19 -0
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.js +74 -0
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.js.map +1 -0
- package/dist/engine/agent-api/PerformanceBlender.d.ts +19 -0
- package/dist/engine/agent-api/PerformanceBlender.d.ts.map +1 -1
- package/dist/engine/agent-api/PerformanceBlender.js +33 -0
- package/dist/engine/agent-api/PerformanceBlender.js.map +1 -1
- package/dist/engine/agent-api/PerformanceCaptureSession.d.ts +65 -0
- package/dist/engine/agent-api/PerformanceCaptureSession.d.ts.map +1 -0
- package/dist/engine/agent-api/PerformanceCaptureSession.js +131 -0
- package/dist/engine/agent-api/PerformanceCaptureSession.js.map +1 -0
- package/dist/engine/agent-api/PngSequenceEncoder.d.ts +34 -0
- package/dist/engine/agent-api/PngSequenceEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/PngSequenceEncoder.js +75 -0
- package/dist/engine/agent-api/PngSequenceEncoder.js.map +1 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts +25 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -1
- package/dist/engine/agent-api/PromptAnimationContract.js +60 -1
- package/dist/engine/agent-api/PromptAnimationContract.js.map +1 -1
- package/dist/engine/agent-api/PublishingPipeline.d.ts +5 -0
- package/dist/engine/agent-api/PublishingPipeline.d.ts.map +1 -1
- package/dist/engine/agent-api/PublishingPipeline.js +17 -3
- package/dist/engine/agent-api/PublishingPipeline.js.map +1 -1
- package/dist/engine/agent-api/SceneSequencer.d.ts +13 -0
- package/dist/engine/agent-api/SceneSequencer.d.ts.map +1 -1
- package/dist/engine/agent-api/SceneSequencer.js +40 -0
- package/dist/engine/agent-api/SceneSequencer.js.map +1 -1
- package/dist/engine/agent-api/VideoExportPipeline.d.ts +14 -0
- package/dist/engine/agent-api/VideoExportPipeline.d.ts.map +1 -1
- package/dist/engine/agent-api/VideoExportPipeline.js +32 -1
- package/dist/engine/agent-api/VideoExportPipeline.js.map +1 -1
- package/dist/engine/agent-api/WebCodecsFrameEncoder.d.ts +21 -0
- package/dist/engine/agent-api/WebCodecsFrameEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/WebCodecsFrameEncoder.js +94 -0
- package/dist/engine/agent-api/WebCodecsFrameEncoder.js.map +1 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.d.ts +48 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.d.ts.map +1 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.js +114 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.js.map +1 -0
- package/dist/engine/agent-api/index.d.ts +29 -0
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +22 -0
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/engine/index.d.ts +2 -1
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -1
- package/dist/engine/index.js.map +1 -1
- package/dist/rendering/FrameVisualMetrics.d.ts +19 -0
- package/dist/rendering/FrameVisualMetrics.d.ts.map +1 -1
- package/dist/rendering/FrameVisualMetrics.js +57 -0
- package/dist/rendering/FrameVisualMetrics.js.map +1 -1
- package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts +19 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.js +13 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.js.map +1 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.d.ts +36 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.js +23 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.js.map +1 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.d.ts +28 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.js +39 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.js.map +1 -0
- package/dist/rendering/cartoon/index.d.ts +4 -0
- package/dist/rendering/cartoon/index.d.ts.map +1 -0
- package/dist/rendering/cartoon/index.js +4 -0
- package/dist/rendering/cartoon/index.js.map +1 -0
- package/dist/rendering/index.d.ts +3 -2
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +2 -1
- package/dist/rendering/index.js.map +1 -1
- package/package.json +42 -24
- package/templates/product-viewer/tests/screenshot.spec.ts +8 -16
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { type PromptAnimationFrameRate, type PromptAnimationId, type PromptAnimationSeconds, type PromptAnimationValidationIssue } from "./PromptAnimationContract.js";
|
|
2
|
+
export declare const cartoonRouteProofSchemaVersion: "aura3d-cartoon-route-proof/v1";
|
|
3
|
+
export type CartoonRouteProofStatus = "pass" | "fail";
|
|
4
|
+
export interface CartoonRouteProofAsset {
|
|
5
|
+
readonly id: PromptAnimationId;
|
|
6
|
+
readonly role: "character" | "set" | "prop" | "audio" | "other";
|
|
7
|
+
readonly typedAsset: boolean;
|
|
8
|
+
readonly source: "aura-assets" | "placeholder" | "runtime-generated" | "unknown";
|
|
9
|
+
readonly url?: string | undefined;
|
|
10
|
+
readonly checksum?: string | undefined;
|
|
11
|
+
readonly ready: boolean;
|
|
12
|
+
readonly issues?: readonly string[] | undefined;
|
|
13
|
+
}
|
|
14
|
+
export interface CartoonRouteProofShot {
|
|
15
|
+
readonly id: PromptAnimationId;
|
|
16
|
+
readonly startTime: PromptAnimationSeconds;
|
|
17
|
+
readonly endTime: PromptAnimationSeconds;
|
|
18
|
+
readonly expectedCharacterIds: readonly PromptAnimationId[];
|
|
19
|
+
readonly visibleCharacterIds: readonly PromptAnimationId[];
|
|
20
|
+
readonly captionIds: readonly PromptAnimationId[];
|
|
21
|
+
readonly gestureIds: readonly PromptAnimationId[];
|
|
22
|
+
readonly visemeCueIds: readonly PromptAnimationId[];
|
|
23
|
+
readonly nonblank: boolean;
|
|
24
|
+
readonly frameCount: number;
|
|
25
|
+
readonly frameHashes: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
export interface CartoonRouteProofCaption {
|
|
28
|
+
readonly id: PromptAnimationId;
|
|
29
|
+
readonly lineId?: PromptAnimationId | undefined;
|
|
30
|
+
readonly text: string;
|
|
31
|
+
readonly startTime: PromptAnimationSeconds;
|
|
32
|
+
readonly endTime: PromptAnimationSeconds;
|
|
33
|
+
readonly rendered: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface CartoonRouteProofViseme {
|
|
36
|
+
readonly id: PromptAnimationId;
|
|
37
|
+
readonly characterId: PromptAnimationId;
|
|
38
|
+
readonly startTime: PromptAnimationSeconds;
|
|
39
|
+
readonly endTime: PromptAnimationSeconds;
|
|
40
|
+
readonly mode: "blendshape-lip-sync" | "primitive-mouth-card" | "amplitude-only" | "manual" | "missing-mouth-motion";
|
|
41
|
+
readonly rendered: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface CartoonRouteProofGesture {
|
|
44
|
+
readonly id: PromptAnimationId;
|
|
45
|
+
readonly characterId: PromptAnimationId;
|
|
46
|
+
readonly state: string;
|
|
47
|
+
readonly startTime: PromptAnimationSeconds;
|
|
48
|
+
readonly endTime: PromptAnimationSeconds;
|
|
49
|
+
readonly rendered: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface CartoonRouteProofRenderState {
|
|
52
|
+
readonly frameCount: number;
|
|
53
|
+
readonly nonblank: boolean;
|
|
54
|
+
readonly sourceOnly?: boolean | undefined;
|
|
55
|
+
readonly notTrue3D?: boolean | undefined;
|
|
56
|
+
readonly debugOverlaysVisible?: boolean | undefined;
|
|
57
|
+
readonly routeChromeVisible?: boolean | undefined;
|
|
58
|
+
}
|
|
59
|
+
export interface CartoonRouteProofPlaybackState {
|
|
60
|
+
readonly canPlay: boolean;
|
|
61
|
+
readonly canPause: boolean;
|
|
62
|
+
readonly canScrub: boolean;
|
|
63
|
+
readonly canJumpShots: boolean;
|
|
64
|
+
readonly captionsToggle: boolean;
|
|
65
|
+
readonly muteToggle: boolean;
|
|
66
|
+
readonly reducedMotion: boolean;
|
|
67
|
+
readonly reducedFlash: boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface CartoonRouteReadinessCheck {
|
|
70
|
+
readonly id: string;
|
|
71
|
+
readonly passed: boolean;
|
|
72
|
+
readonly message: string;
|
|
73
|
+
}
|
|
74
|
+
export interface CartoonRouteProof {
|
|
75
|
+
readonly artifact: "cartoon-route-proof";
|
|
76
|
+
readonly schemaVersion: typeof cartoonRouteProofSchemaVersion;
|
|
77
|
+
readonly contractId: string;
|
|
78
|
+
readonly episodeId: PromptAnimationId;
|
|
79
|
+
readonly generatedAt?: string | undefined;
|
|
80
|
+
readonly route: string;
|
|
81
|
+
readonly duration: PromptAnimationSeconds;
|
|
82
|
+
readonly frameRate: PromptAnimationFrameRate;
|
|
83
|
+
readonly assets: readonly CartoonRouteProofAsset[];
|
|
84
|
+
readonly shots: readonly CartoonRouteProofShot[];
|
|
85
|
+
readonly captions: readonly CartoonRouteProofCaption[];
|
|
86
|
+
readonly visemes: readonly CartoonRouteProofViseme[];
|
|
87
|
+
readonly gestures: readonly CartoonRouteProofGesture[];
|
|
88
|
+
readonly render: CartoonRouteProofRenderState;
|
|
89
|
+
readonly playback: CartoonRouteProofPlaybackState;
|
|
90
|
+
readonly routeErrors: readonly string[];
|
|
91
|
+
readonly checks: readonly CartoonRouteReadinessCheck[];
|
|
92
|
+
readonly issues: readonly PromptAnimationValidationIssue[];
|
|
93
|
+
readonly status: CartoonRouteProofStatus;
|
|
94
|
+
}
|
|
95
|
+
export interface CreateCartoonRouteProofInput {
|
|
96
|
+
readonly episodeId: PromptAnimationId;
|
|
97
|
+
readonly route: string;
|
|
98
|
+
readonly duration: PromptAnimationSeconds;
|
|
99
|
+
readonly frameRate: PromptAnimationFrameRate;
|
|
100
|
+
readonly generatedAt?: string | undefined;
|
|
101
|
+
readonly assets: readonly CartoonRouteProofAsset[];
|
|
102
|
+
readonly shots: readonly CartoonRouteProofShot[];
|
|
103
|
+
readonly captions?: readonly CartoonRouteProofCaption[] | undefined;
|
|
104
|
+
readonly visemes?: readonly CartoonRouteProofViseme[] | undefined;
|
|
105
|
+
readonly gestures?: readonly CartoonRouteProofGesture[] | undefined;
|
|
106
|
+
readonly render: CartoonRouteProofRenderState;
|
|
107
|
+
readonly playback: CartoonRouteProofPlaybackState;
|
|
108
|
+
readonly routeErrors?: readonly string[] | undefined;
|
|
109
|
+
}
|
|
110
|
+
export declare function createCartoonRouteProof(input: CreateCartoonRouteProofInput): CartoonRouteProof;
|
|
111
|
+
export declare function validateCartoonRouteProof(proof: CartoonRouteProof): readonly PromptAnimationValidationIssue[];
|
|
112
|
+
//# sourceMappingURL=CartoonRouteProof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CartoonRouteProof.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/CartoonRouteProof.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { createPromptAnimationIssue, promptAnimationContractVersion } from "./PromptAnimationContract.js";
|
|
2
|
+
export const cartoonRouteProofSchemaVersion = "aura3d-cartoon-route-proof/v1";
|
|
3
|
+
export function createCartoonRouteProof(input) {
|
|
4
|
+
const checks = createCartoonRouteReadinessChecks(input);
|
|
5
|
+
const issues = checks
|
|
6
|
+
.filter((check) => !check.passed)
|
|
7
|
+
.map((check) => createPromptAnimationIssue("error", `cartoon-route-${check.id}`, check.message));
|
|
8
|
+
for (const error of input.routeErrors ?? []) {
|
|
9
|
+
issues.push(createPromptAnimationIssue("error", "cartoon-route-error", error));
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
artifact: "cartoon-route-proof",
|
|
13
|
+
schemaVersion: cartoonRouteProofSchemaVersion,
|
|
14
|
+
contractId: promptAnimationContractVersion,
|
|
15
|
+
episodeId: input.episodeId,
|
|
16
|
+
generatedAt: input.generatedAt,
|
|
17
|
+
route: input.route,
|
|
18
|
+
duration: input.duration,
|
|
19
|
+
frameRate: input.frameRate,
|
|
20
|
+
assets: input.assets,
|
|
21
|
+
shots: input.shots,
|
|
22
|
+
captions: input.captions ?? [],
|
|
23
|
+
visemes: input.visemes ?? [],
|
|
24
|
+
gestures: input.gestures ?? [],
|
|
25
|
+
render: input.render,
|
|
26
|
+
playback: input.playback,
|
|
27
|
+
routeErrors: input.routeErrors ?? [],
|
|
28
|
+
checks,
|
|
29
|
+
issues,
|
|
30
|
+
status: issues.some((issue) => issue.severity === "error") ? "fail" : "pass"
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function validateCartoonRouteProof(proof) {
|
|
34
|
+
const issues = [];
|
|
35
|
+
if (proof.schemaVersion !== cartoonRouteProofSchemaVersion) {
|
|
36
|
+
issues.push(createPromptAnimationIssue("error", "cartoon-route-proof-schema-version-unknown", `Unknown cartoon route proof schema "${proof.schemaVersion}".`));
|
|
37
|
+
}
|
|
38
|
+
if (proof.status !== "pass") {
|
|
39
|
+
issues.push(createPromptAnimationIssue("error", "cartoon-route-proof-status-fail", "Cartoon route proof did not pass."));
|
|
40
|
+
}
|
|
41
|
+
return [...issues, ...proof.issues];
|
|
42
|
+
}
|
|
43
|
+
function createCartoonRouteReadinessChecks(input) {
|
|
44
|
+
const characterAssets = input.assets.filter((asset) => asset.role === "character");
|
|
45
|
+
const setAssets = input.assets.filter((asset) => asset.role === "set");
|
|
46
|
+
const typedAssetFailures = input.assets.filter((asset) => !asset.typedAsset || !asset.ready || asset.source !== "aura-assets");
|
|
47
|
+
const missingShotCharacters = input.shots.flatMap((shot) => shot.expectedCharacterIds.filter((characterId) => !shot.visibleCharacterIds.includes(characterId)).map((characterId) => ({
|
|
48
|
+
shotId: shot.id,
|
|
49
|
+
characterId
|
|
50
|
+
})));
|
|
51
|
+
const missingRenderedCaptions = (input.captions ?? []).filter((caption) => !caption.rendered);
|
|
52
|
+
const missingRenderedVisemes = (input.visemes ?? []).filter((viseme) => !viseme.rendered || viseme.mode === "missing-mouth-motion");
|
|
53
|
+
const missingRenderedGestures = (input.gestures ?? []).filter((gesture) => !gesture.rendered);
|
|
54
|
+
return [
|
|
55
|
+
{
|
|
56
|
+
id: "route-present",
|
|
57
|
+
passed: input.route.length > 0,
|
|
58
|
+
message: "Cartoon route URL/path is required."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: "typed-character-assets",
|
|
62
|
+
passed: characterAssets.length >= 2 && typedAssetFailures.filter((asset) => asset.role === "character").length === 0,
|
|
63
|
+
message: "Route proof requires at least two ready typed character assets from aura-assets."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: "typed-set-assets",
|
|
67
|
+
passed: setAssets.length >= 1 && typedAssetFailures.filter((asset) => asset.role === "set").length === 0,
|
|
68
|
+
message: "Route proof requires at least one ready typed set asset from aura-assets."
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "shots-present",
|
|
72
|
+
passed: input.shots.length > 0,
|
|
73
|
+
message: "Route proof requires at least one shot."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "shot-characters-visible",
|
|
77
|
+
passed: missingShotCharacters.length === 0,
|
|
78
|
+
message: `Expected characters must be visible in every shot; ${missingShotCharacters.length} missing visibility records.`
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "shot-nonblank",
|
|
82
|
+
passed: input.shots.every((shot) => shot.nonblank && shot.frameCount > 0),
|
|
83
|
+
message: "Every shot must be nonblank and contain sampled frames."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: "captions-rendered",
|
|
87
|
+
passed: (input.captions?.length ?? 0) > 0 && missingRenderedCaptions.length === 0,
|
|
88
|
+
message: "Route proof requires rendered captions."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "visemes-rendered",
|
|
92
|
+
passed: (input.visemes?.length ?? 0) > 0 && missingRenderedVisemes.length === 0,
|
|
93
|
+
message: "Route proof requires rendered viseme or mouth-motion cues."
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: "gestures-rendered",
|
|
97
|
+
passed: (input.gestures?.length ?? 0) > 0 && missingRenderedGestures.length === 0,
|
|
98
|
+
message: "Route proof requires rendered character gestures."
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: "render-nonblank",
|
|
102
|
+
passed: input.render.nonblank && input.render.frameCount > 0,
|
|
103
|
+
message: "Route render state must be nonblank and have frames."
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
id: "not-source-only",
|
|
107
|
+
passed: input.render.sourceOnly !== true && input.render.notTrue3D !== true,
|
|
108
|
+
message: "Source-only or not-true-3D routes cannot satisfy 1.1 cartoon route proof."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: "no-export-overlays",
|
|
112
|
+
passed: input.render.debugOverlaysVisible !== true && input.render.routeChromeVisible !== true,
|
|
113
|
+
message: "Export route proof must not include debug overlays or route chrome."
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
id: "playback-controls",
|
|
117
|
+
passed: input.playback.canPlay && input.playback.canPause && input.playback.canScrub && input.playback.canJumpShots,
|
|
118
|
+
message: "Route proof requires play, pause, scrub, and shot-jump controls."
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: "route-errors",
|
|
122
|
+
passed: (input.routeErrors?.length ?? 0) === 0,
|
|
123
|
+
message: "Route proof must have no route errors."
|
|
124
|
+
}
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=CartoonRouteProof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CartoonRouteProof.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/CartoonRouteProof.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAK/B,MAAM,8BAA8B,CAAC;AAEtC,MAAM,CAAC,MAAM,8BAA8B,GAAG,+BAAwC,CAAC;AAwHvF,MAAM,UAAU,uBAAuB,CAAC,KAAmC;IACzE,MAAM,MAAM,GAAG,iCAAiC,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM;SAClB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;SAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACnG,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,qBAAqB;QAC/B,aAAa,EAAE,8BAA8B;QAC7C,UAAU,EAAE,8BAA8B;QAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;QACpC,MAAM;QACN,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;KAC7E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAwB;IAChE,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,IAAI,KAAK,CAAC,aAAa,KAAK,8BAA8B,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CACT,0BAA0B,CACxB,OAAO,EACP,4CAA4C,EAC5C,uCAAuC,KAAK,CAAC,aAAa,IAAI,CAC/D,CACF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,iCAAiC,EAAE,mCAAmC,CAAC,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,iCAAiC,CAAC,KAAmC;IAC5E,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IACnF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IACvE,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IAC/H,MAAM,qBAAqB,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACzD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACvH,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,WAAW;KACZ,CAAC,CAAC,CACJ,CAAC;IACF,MAAM,uBAAuB,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9F,MAAM,sBAAsB,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;IACpI,MAAM,uBAAuB,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9F,OAAO;QACL;YACE,EAAE,EAAE,eAAe;YACnB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC9B,OAAO,EAAE,qCAAqC;SAC/C;QACD;YACE,EAAE,EAAE,wBAAwB;YAC5B,MAAM,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC;YACpH,OAAO,EAAE,kFAAkF;SAC5F;QACD;YACE,EAAE,EAAE,kBAAkB;YACtB,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YACxG,OAAO,EAAE,2EAA2E;SACrF;QACD;YACE,EAAE,EAAE,eAAe;YACnB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC9B,OAAO,EAAE,yCAAyC;SACnD;QACD;YACE,EAAE,EAAE,yBAAyB;YAC7B,MAAM,EAAE,qBAAqB,CAAC,MAAM,KAAK,CAAC;YAC1C,OAAO,EAAE,sDAAsD,qBAAqB,CAAC,MAAM,8BAA8B;SAC1H;QACD;YACE,EAAE,EAAE,eAAe;YACnB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACzE,OAAO,EAAE,yDAAyD;SACnE;QACD;YACE,EAAE,EAAE,mBAAmB;YACvB,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC;YACjF,OAAO,EAAE,yCAAyC;SACnD;QACD;YACE,EAAE,EAAE,kBAAkB;YACtB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC;YAC/E,OAAO,EAAE,4DAA4D;SACtE;QACD;YACE,EAAE,EAAE,mBAAmB;YACvB,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC;YACjF,OAAO,EAAE,mDAAmD;SAC7D;QACD;YACE,EAAE,EAAE,iBAAiB;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC;YAC5D,OAAO,EAAE,sDAAsD;SAChE;QACD;YACE,EAAE,EAAE,iBAAiB;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI;YAC3E,OAAO,EAAE,2EAA2E;SACrF;QACD;YACE,EAAE,EAAE,oBAAoB;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,oBAAoB,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,kBAAkB,KAAK,IAAI;YAC9F,OAAO,EAAE,qEAAqE;SAC/E;QACD;YACE,EAAE,EAAE,mBAAmB;YACvB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY;YACnH,OAAO,EAAE,kEAAkE;SAC5E;QACD;YACE,EAAE,EAAE,cAAc;YAClB,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC;YAC9C,OAAO,EAAE,wCAAwC;SAClD;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { CartoonEpisodePackageManifest } from "./CartoonEpisodePackage.js";
|
|
2
|
+
import type { CartoonRenderQueueArtifact } from "./CartoonRenderQueue.js";
|
|
3
|
+
import { type PromptAnimationId, type PromptAnimationValidationIssue } from "./PromptAnimationContract.js";
|
|
4
|
+
export type CloudRenderProvider = "local" | "github-actions" | "render-farm" | "custom";
|
|
5
|
+
export type CloudRenderJobStatus = "queued" | "running" | "completed" | "failed" | "unsupported";
|
|
6
|
+
export type CloudRenderCapabilityStatus = "ready" | "unsupported" | "missing-credentials";
|
|
7
|
+
export interface CloudRenderCapability {
|
|
8
|
+
readonly supported: boolean;
|
|
9
|
+
readonly status: CloudRenderCapabilityStatus;
|
|
10
|
+
readonly provider: CloudRenderProvider;
|
|
11
|
+
readonly requiresCredentials: boolean;
|
|
12
|
+
readonly diagnostics: readonly PromptAnimationValidationIssue[];
|
|
13
|
+
}
|
|
14
|
+
export interface CloudRenderJobRequest {
|
|
15
|
+
readonly kind: "cloud-render-job-request";
|
|
16
|
+
readonly provider: CloudRenderProvider;
|
|
17
|
+
readonly episodeId: PromptAnimationId;
|
|
18
|
+
readonly packageId: PromptAnimationId;
|
|
19
|
+
readonly renderQueuePath: string;
|
|
20
|
+
readonly outputDirectory: string;
|
|
21
|
+
readonly requiredArtifacts: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
export interface CloudRenderJobResult {
|
|
24
|
+
readonly kind: "cloud-render-job-result";
|
|
25
|
+
readonly provider: CloudRenderProvider;
|
|
26
|
+
readonly jobId?: string | undefined;
|
|
27
|
+
readonly status: CloudRenderJobStatus;
|
|
28
|
+
readonly outputUrl?: string | undefined;
|
|
29
|
+
readonly diagnostics: readonly PromptAnimationValidationIssue[];
|
|
30
|
+
}
|
|
31
|
+
export interface CloudRenderAdapter {
|
|
32
|
+
readonly provider: CloudRenderProvider;
|
|
33
|
+
readonly available: boolean;
|
|
34
|
+
readonly capability: CloudRenderCapability;
|
|
35
|
+
readonly reason?: string | undefined;
|
|
36
|
+
submit(request: CloudRenderJobRequest): Promise<CloudRenderJobResult> | CloudRenderJobResult;
|
|
37
|
+
}
|
|
38
|
+
export interface CreateCloudRenderAdapterOptions {
|
|
39
|
+
readonly provider?: CloudRenderProvider | undefined;
|
|
40
|
+
readonly available?: boolean | undefined;
|
|
41
|
+
readonly endpoint?: string | undefined;
|
|
42
|
+
readonly token?: string | undefined;
|
|
43
|
+
readonly requiresCredentials?: boolean | undefined;
|
|
44
|
+
readonly credentialsAvailable?: boolean | undefined;
|
|
45
|
+
readonly submit?: ((request: CloudRenderJobRequest) => Promise<CloudRenderJobResult> | CloudRenderJobResult) | undefined;
|
|
46
|
+
}
|
|
47
|
+
export declare function createCloudRenderJobRequest(input: {
|
|
48
|
+
readonly provider?: CloudRenderProvider | undefined;
|
|
49
|
+
readonly packageManifest: CartoonEpisodePackageManifest;
|
|
50
|
+
readonly renderQueue: CartoonRenderQueueArtifact;
|
|
51
|
+
readonly outputDirectory?: string | undefined;
|
|
52
|
+
}): CloudRenderJobRequest;
|
|
53
|
+
export declare function probeCloudRenderAdapter(options?: CreateCloudRenderAdapterOptions): CloudRenderCapability;
|
|
54
|
+
export declare function createCloudRenderAdapter(options?: CreateCloudRenderAdapterOptions): CloudRenderAdapter;
|
|
55
|
+
//# sourceMappingURL=CloudRenderAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudRenderAdapter.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/CloudRenderAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { createPromptAnimationIssue } from "./PromptAnimationContract.js";
|
|
2
|
+
export function createCloudRenderJobRequest(input) {
|
|
3
|
+
return {
|
|
4
|
+
kind: "cloud-render-job-request",
|
|
5
|
+
provider: input.provider ?? "custom",
|
|
6
|
+
episodeId: input.renderQueue.episodeId,
|
|
7
|
+
packageId: input.packageManifest.packageId,
|
|
8
|
+
renderQueuePath: "render-manifest.json",
|
|
9
|
+
outputDirectory: input.outputDirectory ?? "dist/episodes",
|
|
10
|
+
requiredArtifacts: input.packageManifest.files.map((file) => file.path)
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function probeCloudRenderAdapter(options = {}) {
|
|
14
|
+
const provider = options.provider ?? "custom";
|
|
15
|
+
const requiresCredentials = options.requiresCredentials ?? provider !== "local";
|
|
16
|
+
const credentialsAvailable = options.credentialsAvailable ?? Boolean(options.token);
|
|
17
|
+
const configured = options.available ?? Boolean(options.submit || (options.endpoint && (!requiresCredentials || credentialsAvailable)));
|
|
18
|
+
if (!configured) {
|
|
19
|
+
return {
|
|
20
|
+
supported: false,
|
|
21
|
+
status: "unsupported",
|
|
22
|
+
provider,
|
|
23
|
+
requiresCredentials,
|
|
24
|
+
diagnostics: [
|
|
25
|
+
createPromptAnimationIssue("warning", "cloud-render-unconfigured", "Cloud render submission was skipped because no configured provider endpoint/client is available.")
|
|
26
|
+
]
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
if (requiresCredentials && !credentialsAvailable) {
|
|
30
|
+
return {
|
|
31
|
+
supported: false,
|
|
32
|
+
status: "missing-credentials",
|
|
33
|
+
provider,
|
|
34
|
+
requiresCredentials,
|
|
35
|
+
diagnostics: [
|
|
36
|
+
createPromptAnimationIssue("error", "cloud-render-credentials-missing", "Cloud render submission requires provider credentials before jobs can be submitted.")
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
supported: true,
|
|
42
|
+
status: "ready",
|
|
43
|
+
provider,
|
|
44
|
+
requiresCredentials,
|
|
45
|
+
diagnostics: []
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function createCloudRenderAdapter(options = {}) {
|
|
49
|
+
const provider = options.provider ?? "custom";
|
|
50
|
+
const capability = probeCloudRenderAdapter(options);
|
|
51
|
+
return {
|
|
52
|
+
provider,
|
|
53
|
+
available: capability.supported,
|
|
54
|
+
capability,
|
|
55
|
+
reason: capability.supported ? undefined : capability.diagnostics[0]?.message,
|
|
56
|
+
submit(request) {
|
|
57
|
+
if (!capability.supported) {
|
|
58
|
+
return {
|
|
59
|
+
kind: "cloud-render-job-result",
|
|
60
|
+
provider,
|
|
61
|
+
status: "unsupported",
|
|
62
|
+
diagnostics: capability.diagnostics
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return options.submit?.(request) ?? {
|
|
66
|
+
kind: "cloud-render-job-result",
|
|
67
|
+
provider,
|
|
68
|
+
jobId: `${request.episodeId}:cloud-render`,
|
|
69
|
+
status: "queued",
|
|
70
|
+
diagnostics: []
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=CloudRenderAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudRenderAdapter.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/CloudRenderAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type AnalyzeAudioVisemesOptions, type AudioVisemeAnalysis } from "./AudioVisemeAnalyzer.js";
|
|
2
|
+
import { type PromptAnimationId, type PromptAnimationLanguageCode, type PromptAnimationSeconds, type PromptAnimationValidationIssue } from "./PromptAnimationContract.js";
|
|
3
|
+
export type ExternalPhonemeAnalyzerStatus = "ready" | "unsupported" | "missing-credentials" | "provider-error";
|
|
4
|
+
export interface ExternalPhonemeAnalyzerCapability {
|
|
5
|
+
readonly supported: boolean;
|
|
6
|
+
readonly status: ExternalPhonemeAnalyzerStatus;
|
|
7
|
+
readonly providerId?: string | undefined;
|
|
8
|
+
readonly requiresCredentials: boolean;
|
|
9
|
+
readonly diagnostics: readonly PromptAnimationValidationIssue[];
|
|
10
|
+
}
|
|
11
|
+
export interface ExternalPhonemeTiming {
|
|
12
|
+
readonly phoneme: string;
|
|
13
|
+
readonly startTime: PromptAnimationSeconds;
|
|
14
|
+
readonly endTime: PromptAnimationSeconds;
|
|
15
|
+
readonly confidence?: number | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface ExternalPhonemeAlignment {
|
|
18
|
+
readonly kind: "external-phoneme-alignment";
|
|
19
|
+
readonly providerId: string;
|
|
20
|
+
readonly episodeId: PromptAnimationId;
|
|
21
|
+
readonly characterId: PromptAnimationId;
|
|
22
|
+
readonly lineId?: PromptAnimationId | undefined;
|
|
23
|
+
readonly language: PromptAnimationLanguageCode;
|
|
24
|
+
readonly transcript: string;
|
|
25
|
+
readonly phonemes: readonly ExternalPhonemeTiming[];
|
|
26
|
+
readonly diagnostics: readonly PromptAnimationValidationIssue[];
|
|
27
|
+
}
|
|
28
|
+
export interface ExternalPhonemeAnalyzerInput extends AnalyzeAudioVisemesOptions {
|
|
29
|
+
readonly transcript: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ExternalPhonemeAnalyzerProvider {
|
|
32
|
+
analyze(input: ExternalPhonemeAnalyzerInput): Promise<ExternalPhonemeAlignment> | ExternalPhonemeAlignment;
|
|
33
|
+
}
|
|
34
|
+
export interface ExternalPhonemeAnalyzerAdapter {
|
|
35
|
+
readonly kind: "external-phoneme-analyzer";
|
|
36
|
+
readonly capability: ExternalPhonemeAnalyzerCapability;
|
|
37
|
+
analyze(input: ExternalPhonemeAnalyzerInput): Promise<ExternalPhonemeAnalyzerResult>;
|
|
38
|
+
}
|
|
39
|
+
export interface ExternalPhonemeAnalyzerResult {
|
|
40
|
+
readonly ok: boolean;
|
|
41
|
+
readonly status: ExternalPhonemeAnalyzerStatus;
|
|
42
|
+
readonly analysis: AudioVisemeAnalysis;
|
|
43
|
+
readonly alignment?: ExternalPhonemeAlignment | undefined;
|
|
44
|
+
readonly diagnostics: readonly PromptAnimationValidationIssue[];
|
|
45
|
+
}
|
|
46
|
+
export interface CreateExternalPhonemeAnalyzerAdapterOptions {
|
|
47
|
+
readonly providerId?: string | undefined;
|
|
48
|
+
readonly provider?: ExternalPhonemeAnalyzerProvider | undefined;
|
|
49
|
+
readonly requiresCredentials?: boolean | undefined;
|
|
50
|
+
readonly credentialsAvailable?: boolean | undefined;
|
|
51
|
+
}
|
|
52
|
+
export declare function createExternalPhonemeAnalyzerAdapter(options?: CreateExternalPhonemeAnalyzerAdapterOptions): ExternalPhonemeAnalyzerAdapter;
|
|
53
|
+
export declare function probeExternalPhonemeAnalyzer(options?: CreateExternalPhonemeAnalyzerAdapterOptions): ExternalPhonemeAnalyzerCapability;
|
|
54
|
+
//# sourceMappingURL=ExternalPhonemeAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalPhonemeAnalyzer.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/ExternalPhonemeAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { analyzeAudioVisemes } from "./AudioVisemeAnalyzer.js";
|
|
2
|
+
import { createPromptAnimationIssue, normalizePromptAnimationTime } from "./PromptAnimationContract.js";
|
|
3
|
+
export function createExternalPhonemeAnalyzerAdapter(options = {}) {
|
|
4
|
+
const capability = probeExternalPhonemeAnalyzer(options);
|
|
5
|
+
const providerId = options.providerId ?? "external-phoneme-analyzer";
|
|
6
|
+
return {
|
|
7
|
+
kind: "external-phoneme-analyzer",
|
|
8
|
+
capability,
|
|
9
|
+
async analyze(input) {
|
|
10
|
+
const fallbackAnalysis = analyzeAudioVisemes({
|
|
11
|
+
...input,
|
|
12
|
+
phonemeAlignmentPresent: false
|
|
13
|
+
});
|
|
14
|
+
if (!capability.supported || !options.provider) {
|
|
15
|
+
return {
|
|
16
|
+
ok: false,
|
|
17
|
+
status: capability.status,
|
|
18
|
+
analysis: fallbackAnalysis,
|
|
19
|
+
diagnostics: capability.diagnostics
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const alignment = normalizeExternalPhonemeAlignment(await options.provider.analyze(input), providerId, input);
|
|
24
|
+
const alignedAnalysis = analyzeAudioVisemes({
|
|
25
|
+
...input,
|
|
26
|
+
phonemeAlignmentPresent: alignment.phonemes.length > 0
|
|
27
|
+
});
|
|
28
|
+
const diagnostics = alignment.phonemes.length === 0
|
|
29
|
+
? [
|
|
30
|
+
...alignment.diagnostics,
|
|
31
|
+
createPromptAnimationIssue("warning", "external-phoneme-empty", `External phoneme analyzer "${providerId}" returned no phoneme timings.`)
|
|
32
|
+
]
|
|
33
|
+
: alignment.diagnostics;
|
|
34
|
+
return {
|
|
35
|
+
ok: alignment.phonemes.length > 0,
|
|
36
|
+
status: alignment.phonemes.length > 0 ? "ready" : "provider-error",
|
|
37
|
+
analysis: alignedAnalysis,
|
|
38
|
+
alignment: {
|
|
39
|
+
...alignment,
|
|
40
|
+
diagnostics
|
|
41
|
+
},
|
|
42
|
+
diagnostics
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const diagnostic = createPromptAnimationIssue("error", "external-phoneme-provider-error", `External phoneme analyzer "${providerId}" failed: ${error instanceof Error ? error.message : String(error)}.`);
|
|
47
|
+
return {
|
|
48
|
+
ok: false,
|
|
49
|
+
status: "provider-error",
|
|
50
|
+
analysis: fallbackAnalysis,
|
|
51
|
+
diagnostics: [diagnostic]
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function probeExternalPhonemeAnalyzer(options = {}) {
|
|
58
|
+
const providerId = options.providerId ?? "external-phoneme-analyzer";
|
|
59
|
+
const requiresCredentials = options.requiresCredentials === true;
|
|
60
|
+
if (!options.provider) {
|
|
61
|
+
return {
|
|
62
|
+
supported: false,
|
|
63
|
+
status: "unsupported",
|
|
64
|
+
providerId,
|
|
65
|
+
requiresCredentials,
|
|
66
|
+
diagnostics: [
|
|
67
|
+
createPromptAnimationIssue("warning", "external-phoneme-provider-missing", `External phoneme analyzer "${providerId}" is not configured; Aura3D will use amplitude-only visemes.`)
|
|
68
|
+
]
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
if (requiresCredentials && options.credentialsAvailable !== true) {
|
|
72
|
+
return {
|
|
73
|
+
supported: false,
|
|
74
|
+
status: "missing-credentials",
|
|
75
|
+
providerId,
|
|
76
|
+
requiresCredentials,
|
|
77
|
+
diagnostics: [
|
|
78
|
+
createPromptAnimationIssue("error", "external-phoneme-credentials-missing", `External phoneme analyzer "${providerId}" requires credentials before phoneme alignment can run.`)
|
|
79
|
+
]
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
supported: true,
|
|
84
|
+
status: "ready",
|
|
85
|
+
providerId,
|
|
86
|
+
requiresCredentials,
|
|
87
|
+
diagnostics: []
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function normalizeExternalPhonemeAlignment(alignment, providerId, input) {
|
|
91
|
+
return {
|
|
92
|
+
kind: "external-phoneme-alignment",
|
|
93
|
+
providerId: alignment.providerId || providerId,
|
|
94
|
+
episodeId: alignment.episodeId || input.episodeId,
|
|
95
|
+
characterId: alignment.characterId || input.characterId,
|
|
96
|
+
...(alignment.lineId || input.lineId ? { lineId: alignment.lineId ?? input.lineId } : {}),
|
|
97
|
+
language: alignment.language || input.language,
|
|
98
|
+
transcript: alignment.transcript || input.transcript,
|
|
99
|
+
phonemes: alignment.phonemes.map((phoneme) => ({
|
|
100
|
+
...phoneme,
|
|
101
|
+
startTime: normalizePromptAnimationTime(phoneme.startTime),
|
|
102
|
+
endTime: normalizePromptAnimationTime(Math.max(phoneme.startTime, phoneme.endTime))
|
|
103
|
+
})),
|
|
104
|
+
diagnostics: alignment.diagnostics
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=ExternalPhonemeAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalPhonemeAnalyzer.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/ExternalPhonemeAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,15 @@ import { type PromptAnimationFrameRate, type PromptAnimationSeconds } from "./Pr
|
|
|
3
3
|
export type FrameEncoderCodec = "vp9" | "vp8" | "h264" | "av1" | "png-sequence";
|
|
4
4
|
export type FrameEncoderContainer = "webm" | "mp4" | "png-sequence";
|
|
5
5
|
export type FrameEncoderStatus = "idle" | "encoding" | "finalized";
|
|
6
|
+
export type FrameEncoderOutputMode = "memory-summary" | "encoded-video" | "encoded-chunks" | "png-sequence" | "unsupported";
|
|
7
|
+
export interface FrameEncoderCapability {
|
|
8
|
+
readonly supported: boolean;
|
|
9
|
+
readonly reason?: string | undefined;
|
|
10
|
+
readonly supportedCodecs?: readonly FrameEncoderCodec[] | undefined;
|
|
11
|
+
readonly supportedContainers?: readonly FrameEncoderContainer[] | undefined;
|
|
12
|
+
readonly canProducePlayableFile?: boolean | undefined;
|
|
13
|
+
readonly requiresExternalMuxer?: boolean | undefined;
|
|
14
|
+
}
|
|
6
15
|
export interface FrameEncoderFrame {
|
|
7
16
|
readonly frame: number;
|
|
8
17
|
readonly time: PromptAnimationSeconds;
|
|
@@ -28,11 +37,19 @@ export interface EncodedVideoArtifact {
|
|
|
28
37
|
readonly duration: PromptAnimationSeconds;
|
|
29
38
|
readonly byteLength: number;
|
|
30
39
|
readonly chunks: readonly EncodedVideoChunk[];
|
|
40
|
+
readonly outputMode?: FrameEncoderOutputMode | undefined;
|
|
41
|
+
readonly proofOnly?: boolean | undefined;
|
|
42
|
+
readonly playable?: boolean | undefined;
|
|
43
|
+
readonly unsupportedReason?: string | undefined;
|
|
31
44
|
readonly output?: Blob | Uint8Array | string | undefined;
|
|
32
45
|
}
|
|
33
46
|
export interface FrameEncoderAdapter {
|
|
47
|
+
readonly kind?: string | undefined;
|
|
48
|
+
readonly proofOnly?: boolean | undefined;
|
|
49
|
+
readonly outputMode?: FrameEncoderOutputMode | undefined;
|
|
50
|
+
readonly capability?: FrameEncoderCapability | undefined;
|
|
34
51
|
encode(frame: FrameEncoderFrame): Promise<EncodedVideoChunk> | EncodedVideoChunk;
|
|
35
|
-
finalize(summary: Omit<EncodedVideoArtifact, "kind" | "output">): Promise<Blob | Uint8Array | string | undefined> | Blob | Uint8Array | string | undefined;
|
|
52
|
+
finalize(summary: Omit<EncodedVideoArtifact, "kind" | "output" | "outputMode" | "proofOnly" | "playable" | "unsupportedReason">): Promise<Blob | Uint8Array | string | undefined> | Blob | Uint8Array | string | undefined;
|
|
36
53
|
reset?(): void;
|
|
37
54
|
}
|
|
38
55
|
export interface FrameEncoder {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameEncoder.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/FrameEncoder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAgC,KAAK,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAExI,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,cAAc,CAAC;AAChF,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,cAAc,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"FrameEncoder.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/FrameEncoder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAgC,KAAK,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAExI,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,cAAc,CAAC;AAChF,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,cAAc,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AACnE,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,GAAG,aAAa,CAAC;AAE5H,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,eAAe,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5G,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1D;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACzD,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;IACjF,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,mBAAmB,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3N,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClE,QAAQ,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,IAAI,oBAAoB,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACpD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,YAAY,CA6EnF;AAED,wBAAgB,iCAAiC,IAAI,mBAAmB,CAmBvE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,CAIxF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,wBAAkC,GAAG,MAAM,CAIzH;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAM3E"}
|