@nodaro/shared 2.26.0 → 3.0.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/dist/index.cjs +1920 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2594 -2
- package/dist/index.d.ts +2594 -2
- package/dist/index.js +1803 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/llm-models.test.ts +4 -2
- package/src/__tests__/node-preset-extract.test.ts +11 -0
- package/src/__tests__/scene3d-camera-track.test.ts +235 -0
- package/src/__tests__/scene3d-v2-edit.test.ts +83 -0
- package/src/__tests__/scene3d-v2-fixtures.ts +232 -0
- package/src/__tests__/scene3d-v2-resources.test.ts +239 -0
- package/src/__tests__/scene3d-v2.test.ts +742 -0
- package/src/__tests__/scene3d.test.ts +482 -0
- package/src/index.ts +12 -0
- package/src/llm-models.ts +10 -0
- package/src/model-constants.ts +5 -0
- package/src/node-mappable-fields.ts +2 -0
- package/src/node-preset-extract.ts +8 -2
- package/src/scene3d-camera-track.ts +369 -0
- package/src/scene3d-edit.ts +311 -0
- package/src/scene3d-v2-edit.ts +156 -0
- package/src/scene3d-v2-plan.ts +694 -0
- package/src/scene3d-v2-resources.ts +382 -0
- package/src/scene3d-v2.ts +666 -0
- package/src/scene3d.ts +641 -0
package/dist/index.d.cts
CHANGED
|
@@ -3065,7 +3065,7 @@ declare function groupLlmModelsByVendor(models?: readonly LlmModelDef[]): LlmMod
|
|
|
3065
3065
|
* group headers (e.g. the compact node quick strips) but should still read
|
|
3066
3066
|
* vendor-clustered and tier-ordered. */
|
|
3067
3067
|
declare function orderedLlmModels(models?: readonly LlmModelDef[]): LlmModelDef[];
|
|
3068
|
-
type LlmFeature = "ai-writer" | "llm-chat" | "prompt-helper" | "scene-graph-ai" | "after-effects" | "motion-graphics" | "motion-graphics-lottie" | "lottie-overlay" | "3d-title" | "image-to-text" | "describe-to-picker" | "qa-check" | "generate-script" | "translate" | "image-critic" | "pick-best-llm" | "workflow-copilot";
|
|
3068
|
+
type LlmFeature = "ai-writer" | "llm-chat" | "prompt-helper" | "scene-graph-ai" | "after-effects" | "motion-graphics" | "motion-graphics-lottie" | "lottie-overlay" | "3d-title" | "3d-scene" | "image-to-text" | "describe-to-picker" | "qa-check" | "generate-script" | "translate" | "image-critic" | "pick-best-llm" | "workflow-copilot";
|
|
3069
3069
|
/** Engine-dependent LlmFeature for the motion-graphics node (design §8: every credit-id site must branch on engine). */
|
|
3070
3070
|
declare function motionGraphicsFeature(engine?: string): LlmFeature;
|
|
3071
3071
|
/** Feature → default model when user hasn't selected one */
|
|
@@ -11830,6 +11830,2482 @@ declare function entityHydrationColumns(kind: EntityNodeKind): string[];
|
|
|
11830
11830
|
/** Every scalar `kind` actually has, shared plus its own. */
|
|
11831
11831
|
declare function entityScalarFields(kind: EntityNodeKind): ReadonlyArray<readonly [string, string]>;
|
|
11832
11832
|
|
|
11833
|
+
/**
|
|
11834
|
+
* Scene3D previsualization — the frozen wire contract (v1).
|
|
11835
|
+
*
|
|
11836
|
+
* ONE validated `Scene3DPlan` revision is shared by four consumers that must
|
|
11837
|
+
* never disagree about what a scene IS: the authoring LLM jobs
|
|
11838
|
+
* (`backend/src/routes/3d-scene.ts` + its worker), the browser preview and the
|
|
11839
|
+
* frame-deterministic Remotion export (`packages/remotion`), the canvas
|
|
11840
|
+
* (`frontend/`), and the SDK/MCP surface. Everything here is STRUCTURE —
|
|
11841
|
+
* geometry, timing, identity, validation. No creative prompts, no provider
|
|
11842
|
+
* names, no pricing: those live in the backend (see the IP-placement rule in
|
|
11843
|
+
* the repo CLAUDE.md — this package is published Apache-2.0 and every
|
|
11844
|
+
* published version is an irrevocable grant).
|
|
11845
|
+
*
|
|
11846
|
+
* ## World conventions (fixed for v1, relied on by the renderer)
|
|
11847
|
+
*
|
|
11848
|
+
* - Units are METERS, Y is up, right-handed (Three.js default).
|
|
11849
|
+
* - Rotations are Euler angles in RADIANS applied XYZ.
|
|
11850
|
+
* - Frames are ZERO-BASED; `fps` defaults to 24 at the authoring layer.
|
|
11851
|
+
* - Interpolation between keyframes is deterministic and closed-form:
|
|
11852
|
+
* `linear` or `easeInOut` (smoothstep). There is no spring, no physics and
|
|
11853
|
+
* no randomness — the browser preview and the export MUST agree frame for
|
|
11854
|
+
* frame, so nothing here may depend on wall-clock time or a RNG.
|
|
11855
|
+
* - A channel's BASE value (the object's/camera's own `position`/`rotation`/
|
|
11856
|
+
* `scale`/`target`/`focalLengthMm`) behaves as an implicit keyframe at frame
|
|
11857
|
+
* 0. So a track whose first key is at frame 30 INTERPOLATES from the base
|
|
11858
|
+
* value at frame 0 to that key — it does not hold the base and then jump.
|
|
11859
|
+
* Author a real key at frame 0 when you want a hold. Before frame 0 and
|
|
11860
|
+
* after the last key the nearest key's value is held.
|
|
11861
|
+
* - `easing` belongs to the DESTINATION keyframe: the easing named on a key
|
|
11862
|
+
* governs the segment ENDING at it. The easing on the first key therefore
|
|
11863
|
+
* governs base → first key; a key's own easing never affects the segment
|
|
11864
|
+
* leaving it.
|
|
11865
|
+
* Sampling itself lives with the renderer (`packages/remotion`) — this file
|
|
11866
|
+
* only guarantees the data it samples is well-formed.
|
|
11867
|
+
*
|
|
11868
|
+
* ## Revisions
|
|
11869
|
+
*
|
|
11870
|
+
* A plan is IMMUTABLE. Every accepted edit produces a NEW `revisionId` and
|
|
11871
|
+
* records the one it came from in `parentRevisionId`; the input object is
|
|
11872
|
+
* never mutated (deep-copied before any write). That is what lets an
|
|
11873
|
+
* asynchronous job completion be REJECTED when the canvas has moved on — the
|
|
11874
|
+
* completion carries the parent it was computed from.
|
|
11875
|
+
*/
|
|
11876
|
+
|
|
11877
|
+
/** Discriminates a Scene3D plan from every other composer plan on the wire. */
|
|
11878
|
+
declare const SCENE3D_PLAN_TYPE = "3d-scene";
|
|
11879
|
+
/** Bumped only for a BREAKING change to the shape below. */
|
|
11880
|
+
declare const SCENE3D_SCHEMA_VERSION = 1;
|
|
11881
|
+
/** Frames per second an authoring request gets when it does not say. */
|
|
11882
|
+
declare const SCENE3D_DEFAULT_FPS = 24;
|
|
11883
|
+
/** Seconds a generate request gets when it does not say. */
|
|
11884
|
+
declare const SCENE3D_DEFAULT_DURATION_SECONDS = 4;
|
|
11885
|
+
/**
|
|
11886
|
+
* Every bound in one object so the route Zod, the canvas inputs, the LLM
|
|
11887
|
+
* draft schema and the docs quote the SAME numbers. Widening one of these is
|
|
11888
|
+
* a contract change, not a tweak.
|
|
11889
|
+
*/
|
|
11890
|
+
declare const SCENE3D_LIMITS: {
|
|
11891
|
+
readonly minDimensionPx: 100;
|
|
11892
|
+
readonly maxDimensionPx: 1920;
|
|
11893
|
+
readonly minFps: 15;
|
|
11894
|
+
readonly maxFps: 60;
|
|
11895
|
+
readonly minDurationInFrames: 1;
|
|
11896
|
+
readonly maxDurationInFrames: 3600;
|
|
11897
|
+
/** Shortest scene an authoring request may ask for, in seconds. One second
|
|
11898
|
+
* is the frozen v1 floor the SDK/MCP surface and the public docs state; the
|
|
11899
|
+
* route Zod and the canvas path both quote it from here so they cannot
|
|
11900
|
+
* drift below it. */
|
|
11901
|
+
readonly minDurationSeconds: 1;
|
|
11902
|
+
/** Hard ceiling on wall-clock length, checked against fps × frames. */
|
|
11903
|
+
readonly maxDurationSeconds: 60;
|
|
11904
|
+
readonly minObjects: 1;
|
|
11905
|
+
readonly maxObjects: 100;
|
|
11906
|
+
/** Per-object and per-camera track length. */
|
|
11907
|
+
readonly maxKeyframes: 240;
|
|
11908
|
+
readonly maxReferences: 8;
|
|
11909
|
+
readonly maxOperations: 100;
|
|
11910
|
+
/** |x|, |y|, |z| ceiling for positions and camera/target coordinates. */
|
|
11911
|
+
readonly maxCoordinate: 1000;
|
|
11912
|
+
readonly minSize: 0.001;
|
|
11913
|
+
readonly maxSize: 1000;
|
|
11914
|
+
readonly minScale: 0.001;
|
|
11915
|
+
readonly maxScale: 1000;
|
|
11916
|
+
readonly minFocalLengthMm: 10;
|
|
11917
|
+
readonly maxFocalLengthMm: 200;
|
|
11918
|
+
readonly defaultSensorWidthMm: 36;
|
|
11919
|
+
readonly minSensorWidthMm: 1;
|
|
11920
|
+
readonly maxSensorWidthMm: 200;
|
|
11921
|
+
readonly maxIntensity: 100;
|
|
11922
|
+
/** How deep a parent chain may nest. Bounds the renderer's transform walk. */
|
|
11923
|
+
readonly maxHierarchyDepth: 8;
|
|
11924
|
+
readonly maxIdLength: 64;
|
|
11925
|
+
readonly maxNameLength: 120;
|
|
11926
|
+
readonly maxUrlLength: 2048;
|
|
11927
|
+
readonly maxChangeSummaryLength: 2000;
|
|
11928
|
+
};
|
|
11929
|
+
type Vec3 = [number, number, number];
|
|
11930
|
+
type Scene3DPrimitive = "box" | "sphere" | "cylinder" | "cone" | "plane" | "capsule"
|
|
11931
|
+
/** A transform-only node: no geometry of its own, children inherit it. */
|
|
11932
|
+
| "group";
|
|
11933
|
+
declare const SCENE3D_PRIMITIVES: readonly Scene3DPrimitive[];
|
|
11934
|
+
type Scene3DEasing = "linear" | "easeInOut";
|
|
11935
|
+
type Scene3DReferenceKind = "image" | "video";
|
|
11936
|
+
/**
|
|
11937
|
+
* What the reference is FOR. The role is not decoration: it decides how the
|
|
11938
|
+
* authoring backend conditions on the asset (appearance → colour/material
|
|
11939
|
+
* cues, layout → placement, motion → timing), and it is stored with the job
|
|
11940
|
+
* so a re-run reproduces the same conditioning.
|
|
11941
|
+
*/
|
|
11942
|
+
type Scene3DReferenceRole = "appearance" | "layout" | "motion";
|
|
11943
|
+
interface Scene3DObjectKeyframe {
|
|
11944
|
+
/** Zero-based, integral, inside the scene's duration. */
|
|
11945
|
+
frame: number;
|
|
11946
|
+
position?: Vec3;
|
|
11947
|
+
rotation?: Vec3;
|
|
11948
|
+
scale?: Vec3;
|
|
11949
|
+
easing?: Scene3DEasing;
|
|
11950
|
+
}
|
|
11951
|
+
interface Scene3DCameraKeyframe {
|
|
11952
|
+
frame: number;
|
|
11953
|
+
position?: Vec3;
|
|
11954
|
+
target?: Vec3;
|
|
11955
|
+
focalLengthMm?: number;
|
|
11956
|
+
easing?: Scene3DEasing;
|
|
11957
|
+
}
|
|
11958
|
+
interface Scene3DObject {
|
|
11959
|
+
id: string;
|
|
11960
|
+
name: string;
|
|
11961
|
+
primitive: Scene3DPrimitive;
|
|
11962
|
+
/** Transform parent. Absent = a root object. Cycles are rejected. */
|
|
11963
|
+
parentId?: string;
|
|
11964
|
+
/** Intrinsic size in meters BEFORE `scale` (width/height/depth). */
|
|
11965
|
+
dimensions: Vec3;
|
|
11966
|
+
position: Vec3;
|
|
11967
|
+
/** Euler XYZ, radians. */
|
|
11968
|
+
rotation: Vec3;
|
|
11969
|
+
scale: Vec3;
|
|
11970
|
+
/** `#rgb`, `#rgba`, `#rrggbb` or `#rrggbbaa`. */
|
|
11971
|
+
color: string;
|
|
11972
|
+
keyframes?: Scene3DObjectKeyframe[];
|
|
11973
|
+
}
|
|
11974
|
+
interface Scene3DCamera {
|
|
11975
|
+
position: Vec3;
|
|
11976
|
+
target: Vec3;
|
|
11977
|
+
focalLengthMm: number;
|
|
11978
|
+
/** Full-frame 36mm by default; together with focal length it fixes the FOV. */
|
|
11979
|
+
sensorWidthMm: number;
|
|
11980
|
+
keyframes?: Scene3DCameraKeyframe[];
|
|
11981
|
+
}
|
|
11982
|
+
interface Scene3DLighting {
|
|
11983
|
+
ambientIntensity: number;
|
|
11984
|
+
keyIntensity: number;
|
|
11985
|
+
keyPosition: Vec3;
|
|
11986
|
+
}
|
|
11987
|
+
interface Scene3DReference {
|
|
11988
|
+
id: string;
|
|
11989
|
+
/** HTTP(S) only — the BACKEND additionally applies `safeUrlSchema` and the
|
|
11990
|
+
* platform's per-model reference limits before anything is fetched. */
|
|
11991
|
+
url: string;
|
|
11992
|
+
kind: Scene3DReferenceKind;
|
|
11993
|
+
role: Scene3DReferenceRole;
|
|
11994
|
+
/** Scopes the reference to one object instead of the whole scene. */
|
|
11995
|
+
objectId?: string;
|
|
11996
|
+
/** Window inside a video reference, in seconds. */
|
|
11997
|
+
startSeconds?: number;
|
|
11998
|
+
endSeconds?: number;
|
|
11999
|
+
}
|
|
12000
|
+
/**
|
|
12001
|
+
* The v1 plan. `Scene3DPlan` is the DISCRIMINATED UNION of this and
|
|
12002
|
+
* `Scene3DPlanV2` (see `scene3d-v2.ts`) — a consumer holding one must narrow
|
|
12003
|
+
* with `isScene3DPlanV1` / `isScene3DPlanV2` before reading version-specific
|
|
12004
|
+
* fields. Nothing about v1's shape, bounds or messages changed when v2 landed.
|
|
12005
|
+
*/
|
|
12006
|
+
interface Scene3DPlanV1 {
|
|
12007
|
+
planType: typeof SCENE3D_PLAN_TYPE;
|
|
12008
|
+
schemaVersion: typeof SCENE3D_SCHEMA_VERSION;
|
|
12009
|
+
/** UUID. Changes on EVERY accepted edit. */
|
|
12010
|
+
revisionId: string;
|
|
12011
|
+
/** The revision this one was derived from; absent on a first generation. */
|
|
12012
|
+
parentRevisionId?: string;
|
|
12013
|
+
width: number;
|
|
12014
|
+
height: number;
|
|
12015
|
+
fps: number;
|
|
12016
|
+
durationInFrames: number;
|
|
12017
|
+
backgroundColor: string;
|
|
12018
|
+
camera: Scene3DCamera;
|
|
12019
|
+
objects: Scene3DObject[];
|
|
12020
|
+
lighting: Scene3DLighting;
|
|
12021
|
+
references?: Scene3DReference[];
|
|
12022
|
+
}
|
|
12023
|
+
declare const vec3Schema: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12024
|
+
declare const sizeVec3Schema: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12025
|
+
declare const scaleVec3Schema: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12026
|
+
/** Euler radians. Bounded well past ±2π so multi-turn spins stay expressible
|
|
12027
|
+
* while a runaway value still cannot reach the renderer. */
|
|
12028
|
+
declare const rotationVec3Schema: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12029
|
+
declare const scene3DColorSchema: z.ZodString;
|
|
12030
|
+
declare const scene3DIdSchema: z.ZodString;
|
|
12031
|
+
/** HTTP(S) only. This is the STRUCTURAL half of URL safety; the backend adds
|
|
12032
|
+
* `safeUrlSchema` (SSRF host rules) on top before anything is fetched. */
|
|
12033
|
+
declare function isScene3DHttpUrl(value: string): boolean;
|
|
12034
|
+
declare const scene3DUrlSchema: z.ZodString;
|
|
12035
|
+
declare const scene3DEasingSchema: z.ZodEnum<{
|
|
12036
|
+
linear: "linear";
|
|
12037
|
+
easeInOut: "easeInOut";
|
|
12038
|
+
}>;
|
|
12039
|
+
declare const scene3DPrimitiveSchema: z.ZodEnum<{
|
|
12040
|
+
group: "group";
|
|
12041
|
+
box: "box";
|
|
12042
|
+
sphere: "sphere";
|
|
12043
|
+
cylinder: "cylinder";
|
|
12044
|
+
cone: "cone";
|
|
12045
|
+
plane: "plane";
|
|
12046
|
+
capsule: "capsule";
|
|
12047
|
+
}>;
|
|
12048
|
+
declare const scene3DObjectKeyframeSchema: z.ZodObject<{
|
|
12049
|
+
frame: z.ZodNumber;
|
|
12050
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12051
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12052
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12053
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12054
|
+
linear: "linear";
|
|
12055
|
+
easeInOut: "easeInOut";
|
|
12056
|
+
}>>;
|
|
12057
|
+
}, z.core.$strict>;
|
|
12058
|
+
declare const scene3DCameraKeyframeSchema: z.ZodObject<{
|
|
12059
|
+
frame: z.ZodNumber;
|
|
12060
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12061
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12062
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12063
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12064
|
+
linear: "linear";
|
|
12065
|
+
easeInOut: "easeInOut";
|
|
12066
|
+
}>>;
|
|
12067
|
+
}, z.core.$strict>;
|
|
12068
|
+
declare const scene3DObjectSchema: z.ZodObject<{
|
|
12069
|
+
id: z.ZodString;
|
|
12070
|
+
name: z.ZodString;
|
|
12071
|
+
primitive: z.ZodEnum<{
|
|
12072
|
+
group: "group";
|
|
12073
|
+
box: "box";
|
|
12074
|
+
sphere: "sphere";
|
|
12075
|
+
cylinder: "cylinder";
|
|
12076
|
+
cone: "cone";
|
|
12077
|
+
plane: "plane";
|
|
12078
|
+
capsule: "capsule";
|
|
12079
|
+
}>;
|
|
12080
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
12081
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12082
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12083
|
+
rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12084
|
+
scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12085
|
+
color: z.ZodString;
|
|
12086
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12087
|
+
frame: z.ZodNumber;
|
|
12088
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12089
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12090
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12091
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12092
|
+
linear: "linear";
|
|
12093
|
+
easeInOut: "easeInOut";
|
|
12094
|
+
}>>;
|
|
12095
|
+
}, z.core.$strict>>>;
|
|
12096
|
+
}, z.core.$strict>;
|
|
12097
|
+
declare const scene3DCameraSchema: z.ZodObject<{
|
|
12098
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12099
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12100
|
+
focalLengthMm: z.ZodNumber;
|
|
12101
|
+
sensorWidthMm: z.ZodDefault<z.ZodNumber>;
|
|
12102
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12103
|
+
frame: z.ZodNumber;
|
|
12104
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12105
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12106
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12107
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12108
|
+
linear: "linear";
|
|
12109
|
+
easeInOut: "easeInOut";
|
|
12110
|
+
}>>;
|
|
12111
|
+
}, z.core.$strict>>>;
|
|
12112
|
+
}, z.core.$strict>;
|
|
12113
|
+
declare const scene3DLightingSchema: z.ZodObject<{
|
|
12114
|
+
ambientIntensity: z.ZodNumber;
|
|
12115
|
+
keyIntensity: z.ZodNumber;
|
|
12116
|
+
keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12117
|
+
}, z.core.$strict>;
|
|
12118
|
+
declare const scene3DReferenceSchema: z.ZodObject<{
|
|
12119
|
+
id: z.ZodString;
|
|
12120
|
+
url: z.ZodString;
|
|
12121
|
+
kind: z.ZodEnum<{
|
|
12122
|
+
image: "image";
|
|
12123
|
+
video: "video";
|
|
12124
|
+
}>;
|
|
12125
|
+
role: z.ZodEnum<{
|
|
12126
|
+
motion: "motion";
|
|
12127
|
+
layout: "layout";
|
|
12128
|
+
appearance: "appearance";
|
|
12129
|
+
}>;
|
|
12130
|
+
objectId: z.ZodOptional<z.ZodString>;
|
|
12131
|
+
startSeconds: z.ZodOptional<z.ZodNumber>;
|
|
12132
|
+
endSeconds: z.ZodOptional<z.ZodNumber>;
|
|
12133
|
+
}, z.core.$strict>;
|
|
12134
|
+
/** One cross-field failure, in the shape `ctx.addIssue` wants. Shared by the
|
|
12135
|
+
* v1 and v2 validators so both report the same way. */
|
|
12136
|
+
interface Scene3DSemanticIssue {
|
|
12137
|
+
path: (string | number)[];
|
|
12138
|
+
message: string;
|
|
12139
|
+
}
|
|
12140
|
+
/** @internal Historic in-file name. */
|
|
12141
|
+
type SemanticIssue = Scene3DSemanticIssue;
|
|
12142
|
+
/**
|
|
12143
|
+
* Every rule that needs more than one field: duration, identity, hierarchy,
|
|
12144
|
+
* reference resolution and keyframe tracks.
|
|
12145
|
+
*
|
|
12146
|
+
* Split out of the schema's `superRefine` so `applyScene3DEditOperations` can
|
|
12147
|
+
* report the SAME sentences without re-parsing, and so a caller holding an
|
|
12148
|
+
* already-parsed plan can re-check it cheaply.
|
|
12149
|
+
*/
|
|
12150
|
+
declare function scene3DPlanV1Issues(plan: Scene3DPlanV1): SemanticIssue[];
|
|
12151
|
+
/**
|
|
12152
|
+
* THE plan validator. Structure first (zod), then the cross-field rules — a
|
|
12153
|
+
* consumer that parses with this cannot be handed a cycle, a dangling parent,
|
|
12154
|
+
* an out-of-range keyframe or a 90-second "one-minute-max" scene.
|
|
12155
|
+
*/
|
|
12156
|
+
/**
|
|
12157
|
+
* The v1 object shape WITHOUT the cross-field pass. Exported only so
|
|
12158
|
+
* `scene3DAnyPlanSchema` can discriminate on `schemaVersion` (zod cannot
|
|
12159
|
+
* discriminate through a `superRefine`); parse with `scene3DPlanV1Schema`.
|
|
12160
|
+
*/
|
|
12161
|
+
declare const scene3DPlanV1ObjectSchema: z.ZodObject<{
|
|
12162
|
+
planType: z.ZodLiteral<"3d-scene">;
|
|
12163
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
12164
|
+
revisionId: z.ZodUUID;
|
|
12165
|
+
parentRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
12166
|
+
width: z.ZodNumber;
|
|
12167
|
+
height: z.ZodNumber;
|
|
12168
|
+
fps: z.ZodNumber;
|
|
12169
|
+
durationInFrames: z.ZodNumber;
|
|
12170
|
+
backgroundColor: z.ZodString;
|
|
12171
|
+
camera: z.ZodObject<{
|
|
12172
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12173
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12174
|
+
focalLengthMm: z.ZodNumber;
|
|
12175
|
+
sensorWidthMm: z.ZodDefault<z.ZodNumber>;
|
|
12176
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12177
|
+
frame: z.ZodNumber;
|
|
12178
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12179
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12180
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12181
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12182
|
+
linear: "linear";
|
|
12183
|
+
easeInOut: "easeInOut";
|
|
12184
|
+
}>>;
|
|
12185
|
+
}, z.core.$strict>>>;
|
|
12186
|
+
}, z.core.$strict>;
|
|
12187
|
+
objects: z.ZodArray<z.ZodObject<{
|
|
12188
|
+
id: z.ZodString;
|
|
12189
|
+
name: z.ZodString;
|
|
12190
|
+
primitive: z.ZodEnum<{
|
|
12191
|
+
group: "group";
|
|
12192
|
+
box: "box";
|
|
12193
|
+
sphere: "sphere";
|
|
12194
|
+
cylinder: "cylinder";
|
|
12195
|
+
cone: "cone";
|
|
12196
|
+
plane: "plane";
|
|
12197
|
+
capsule: "capsule";
|
|
12198
|
+
}>;
|
|
12199
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
12200
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12201
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12202
|
+
rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12203
|
+
scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12204
|
+
color: z.ZodString;
|
|
12205
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12206
|
+
frame: z.ZodNumber;
|
|
12207
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12208
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12209
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12210
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12211
|
+
linear: "linear";
|
|
12212
|
+
easeInOut: "easeInOut";
|
|
12213
|
+
}>>;
|
|
12214
|
+
}, z.core.$strict>>>;
|
|
12215
|
+
}, z.core.$strict>>;
|
|
12216
|
+
lighting: z.ZodObject<{
|
|
12217
|
+
ambientIntensity: z.ZodNumber;
|
|
12218
|
+
keyIntensity: z.ZodNumber;
|
|
12219
|
+
keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12220
|
+
}, z.core.$strict>;
|
|
12221
|
+
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12222
|
+
id: z.ZodString;
|
|
12223
|
+
url: z.ZodString;
|
|
12224
|
+
kind: z.ZodEnum<{
|
|
12225
|
+
image: "image";
|
|
12226
|
+
video: "video";
|
|
12227
|
+
}>;
|
|
12228
|
+
role: z.ZodEnum<{
|
|
12229
|
+
motion: "motion";
|
|
12230
|
+
layout: "layout";
|
|
12231
|
+
appearance: "appearance";
|
|
12232
|
+
}>;
|
|
12233
|
+
objectId: z.ZodOptional<z.ZodString>;
|
|
12234
|
+
startSeconds: z.ZodOptional<z.ZodNumber>;
|
|
12235
|
+
endSeconds: z.ZodOptional<z.ZodNumber>;
|
|
12236
|
+
}, z.core.$strict>>>;
|
|
12237
|
+
}, z.core.$strict>;
|
|
12238
|
+
declare const scene3DPlanV1Schema: z.ZodObject<{
|
|
12239
|
+
planType: z.ZodLiteral<"3d-scene">;
|
|
12240
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
12241
|
+
revisionId: z.ZodUUID;
|
|
12242
|
+
parentRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
12243
|
+
width: z.ZodNumber;
|
|
12244
|
+
height: z.ZodNumber;
|
|
12245
|
+
fps: z.ZodNumber;
|
|
12246
|
+
durationInFrames: z.ZodNumber;
|
|
12247
|
+
backgroundColor: z.ZodString;
|
|
12248
|
+
camera: z.ZodObject<{
|
|
12249
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12250
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12251
|
+
focalLengthMm: z.ZodNumber;
|
|
12252
|
+
sensorWidthMm: z.ZodDefault<z.ZodNumber>;
|
|
12253
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12254
|
+
frame: z.ZodNumber;
|
|
12255
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12256
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12257
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12258
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12259
|
+
linear: "linear";
|
|
12260
|
+
easeInOut: "easeInOut";
|
|
12261
|
+
}>>;
|
|
12262
|
+
}, z.core.$strict>>>;
|
|
12263
|
+
}, z.core.$strict>;
|
|
12264
|
+
objects: z.ZodArray<z.ZodObject<{
|
|
12265
|
+
id: z.ZodString;
|
|
12266
|
+
name: z.ZodString;
|
|
12267
|
+
primitive: z.ZodEnum<{
|
|
12268
|
+
group: "group";
|
|
12269
|
+
box: "box";
|
|
12270
|
+
sphere: "sphere";
|
|
12271
|
+
cylinder: "cylinder";
|
|
12272
|
+
cone: "cone";
|
|
12273
|
+
plane: "plane";
|
|
12274
|
+
capsule: "capsule";
|
|
12275
|
+
}>;
|
|
12276
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
12277
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12278
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12279
|
+
rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12280
|
+
scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12281
|
+
color: z.ZodString;
|
|
12282
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12283
|
+
frame: z.ZodNumber;
|
|
12284
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12285
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12286
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12287
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12288
|
+
linear: "linear";
|
|
12289
|
+
easeInOut: "easeInOut";
|
|
12290
|
+
}>>;
|
|
12291
|
+
}, z.core.$strict>>>;
|
|
12292
|
+
}, z.core.$strict>>;
|
|
12293
|
+
lighting: z.ZodObject<{
|
|
12294
|
+
ambientIntensity: z.ZodNumber;
|
|
12295
|
+
keyIntensity: z.ZodNumber;
|
|
12296
|
+
keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12297
|
+
}, z.core.$strict>;
|
|
12298
|
+
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12299
|
+
id: z.ZodString;
|
|
12300
|
+
url: z.ZodString;
|
|
12301
|
+
kind: z.ZodEnum<{
|
|
12302
|
+
image: "image";
|
|
12303
|
+
video: "video";
|
|
12304
|
+
}>;
|
|
12305
|
+
role: z.ZodEnum<{
|
|
12306
|
+
motion: "motion";
|
|
12307
|
+
layout: "layout";
|
|
12308
|
+
appearance: "appearance";
|
|
12309
|
+
}>;
|
|
12310
|
+
objectId: z.ZodOptional<z.ZodString>;
|
|
12311
|
+
startSeconds: z.ZodOptional<z.ZodNumber>;
|
|
12312
|
+
endSeconds: z.ZodOptional<z.ZodNumber>;
|
|
12313
|
+
}, z.core.$strict>>>;
|
|
12314
|
+
}, z.core.$strict>;
|
|
12315
|
+
/** @deprecated v1-only, and it always was. Kept so every existing v1 call site
|
|
12316
|
+
* keeps EXACTLY its current accept/reject set. Use `scene3DPlanV1Schema` for
|
|
12317
|
+
* v1, or `scene3DAnyPlanSchema` when either version is acceptable. */
|
|
12318
|
+
declare const scene3DPlanSchema: z.ZodObject<{
|
|
12319
|
+
planType: z.ZodLiteral<"3d-scene">;
|
|
12320
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
12321
|
+
revisionId: z.ZodUUID;
|
|
12322
|
+
parentRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
12323
|
+
width: z.ZodNumber;
|
|
12324
|
+
height: z.ZodNumber;
|
|
12325
|
+
fps: z.ZodNumber;
|
|
12326
|
+
durationInFrames: z.ZodNumber;
|
|
12327
|
+
backgroundColor: z.ZodString;
|
|
12328
|
+
camera: z.ZodObject<{
|
|
12329
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12330
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12331
|
+
focalLengthMm: z.ZodNumber;
|
|
12332
|
+
sensorWidthMm: z.ZodDefault<z.ZodNumber>;
|
|
12333
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12334
|
+
frame: z.ZodNumber;
|
|
12335
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12336
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12337
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12338
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12339
|
+
linear: "linear";
|
|
12340
|
+
easeInOut: "easeInOut";
|
|
12341
|
+
}>>;
|
|
12342
|
+
}, z.core.$strict>>>;
|
|
12343
|
+
}, z.core.$strict>;
|
|
12344
|
+
objects: z.ZodArray<z.ZodObject<{
|
|
12345
|
+
id: z.ZodString;
|
|
12346
|
+
name: z.ZodString;
|
|
12347
|
+
primitive: z.ZodEnum<{
|
|
12348
|
+
group: "group";
|
|
12349
|
+
box: "box";
|
|
12350
|
+
sphere: "sphere";
|
|
12351
|
+
cylinder: "cylinder";
|
|
12352
|
+
cone: "cone";
|
|
12353
|
+
plane: "plane";
|
|
12354
|
+
capsule: "capsule";
|
|
12355
|
+
}>;
|
|
12356
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
12357
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12358
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12359
|
+
rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12360
|
+
scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12361
|
+
color: z.ZodString;
|
|
12362
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12363
|
+
frame: z.ZodNumber;
|
|
12364
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12365
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12366
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12367
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12368
|
+
linear: "linear";
|
|
12369
|
+
easeInOut: "easeInOut";
|
|
12370
|
+
}>>;
|
|
12371
|
+
}, z.core.$strict>>>;
|
|
12372
|
+
}, z.core.$strict>>;
|
|
12373
|
+
lighting: z.ZodObject<{
|
|
12374
|
+
ambientIntensity: z.ZodNumber;
|
|
12375
|
+
keyIntensity: z.ZodNumber;
|
|
12376
|
+
keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12377
|
+
}, z.core.$strict>;
|
|
12378
|
+
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12379
|
+
id: z.ZodString;
|
|
12380
|
+
url: z.ZodString;
|
|
12381
|
+
kind: z.ZodEnum<{
|
|
12382
|
+
image: "image";
|
|
12383
|
+
video: "video";
|
|
12384
|
+
}>;
|
|
12385
|
+
role: z.ZodEnum<{
|
|
12386
|
+
motion: "motion";
|
|
12387
|
+
layout: "layout";
|
|
12388
|
+
appearance: "appearance";
|
|
12389
|
+
}>;
|
|
12390
|
+
objectId: z.ZodOptional<z.ZodString>;
|
|
12391
|
+
startSeconds: z.ZodOptional<z.ZodNumber>;
|
|
12392
|
+
endSeconds: z.ZodOptional<z.ZodNumber>;
|
|
12393
|
+
}, z.core.$strict>>>;
|
|
12394
|
+
}, z.core.$strict>;
|
|
12395
|
+
/** @deprecated Renamed to `scene3DPlanV1Issues`. */
|
|
12396
|
+
declare const scene3DPlanIssues: typeof scene3DPlanV1Issues;
|
|
12397
|
+
/** Order-insensitive deep equality over the JSON subset a plan is made of. */
|
|
12398
|
+
declare function scene3DDeepEqual(a: unknown, b: unknown): boolean;
|
|
12399
|
+
/** RFC-4122 v4 id, from the platform CSPRNG where there is one. Browser,
|
|
12400
|
+
* Node 18+ and the Remotion renderer all expose `globalThis.crypto`. */
|
|
12401
|
+
declare function newScene3DRevisionId(): string;
|
|
12402
|
+
/** Narrowing helper for callers holding `unknown` (job output, workflow JSON).
|
|
12403
|
+
* V1 ONLY — `isScene3DPlan` (in `scene3d-v2.ts`) accepts either version. */
|
|
12404
|
+
declare function isScene3DPlanV1(value: unknown): value is Scene3DPlanV1;
|
|
12405
|
+
/** What a finished `generate-3d-scene` / `edit-3d-scene` job carries in
|
|
12406
|
+
* `output_data`. The canvas, the SDK and the DAG output extractor all read
|
|
12407
|
+
* THIS shape — `scenePlan` is also the node's stored plan field. */
|
|
12408
|
+
interface Scene3DJobOutput {
|
|
12409
|
+
scenePlan: Scene3DPlanV1;
|
|
12410
|
+
/** One paragraph naming what changed. Absent on a first generation. */
|
|
12411
|
+
changeSummary?: string;
|
|
12412
|
+
}
|
|
12413
|
+
/** The node data field a Scene3D plan is stored under, on both nodes.
|
|
12414
|
+
* `COMPOSER_PLAN_MAP` (model-constants.ts) must agree with this. */
|
|
12415
|
+
declare const SCENE3D_PLAN_FIELD = "scenePlan";
|
|
12416
|
+
/** The two canvas node types that produce a Scene3D plan. */
|
|
12417
|
+
declare const SCENE3D_GENERATE_NODE_TYPE = "generate-3d-scene";
|
|
12418
|
+
declare const SCENE3D_EDIT_NODE_TYPE = "edit-3d-scene";
|
|
12419
|
+
|
|
12420
|
+
/**
|
|
12421
|
+
* Scene3D edit operations — the ONLY way a Scene3D plan changes.
|
|
12422
|
+
*
|
|
12423
|
+
* Split out of `scene3d.ts` (which owns the shape) because this file owns the
|
|
12424
|
+
* TRANSITION: given a plan, a list of operations and the caller's locks, it
|
|
12425
|
+
* produces the next immutable revision or an explained refusal. Both edit
|
|
12426
|
+
* lanes go through it — the deterministic one (the caller sent operations) and
|
|
12427
|
+
* the instruction one (an LLM authored the operations from a sentence) — so
|
|
12428
|
+
* locks, staleness and whole-scene validation cannot be enforced twice and
|
|
12429
|
+
* differently. The model never writes a plan and never writes code; it writes
|
|
12430
|
+
* operations that this function is free to refuse.
|
|
12431
|
+
*/
|
|
12432
|
+
|
|
12433
|
+
/** Everything about an object EXCEPT its identity. `id` is deliberately absent
|
|
12434
|
+
* (and the schema is strict) so no operation can rename an object out from
|
|
12435
|
+
* under a lock, a parent link or a reference. */
|
|
12436
|
+
declare const scene3DObjectChangesSchema: z.ZodObject<{
|
|
12437
|
+
name: z.ZodOptional<z.ZodString>;
|
|
12438
|
+
primitive: z.ZodOptional<z.ZodEnum<{
|
|
12439
|
+
group: "group";
|
|
12440
|
+
box: "box";
|
|
12441
|
+
sphere: "sphere";
|
|
12442
|
+
cylinder: "cylinder";
|
|
12443
|
+
cone: "cone";
|
|
12444
|
+
plane: "plane";
|
|
12445
|
+
capsule: "capsule";
|
|
12446
|
+
}>>;
|
|
12447
|
+
parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12448
|
+
dimensions: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12449
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12450
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12451
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12452
|
+
color: z.ZodOptional<z.ZodString>;
|
|
12453
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12454
|
+
frame: z.ZodNumber;
|
|
12455
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12456
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12457
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12458
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12459
|
+
linear: "linear";
|
|
12460
|
+
easeInOut: "easeInOut";
|
|
12461
|
+
}>>;
|
|
12462
|
+
}, z.core.$strict>>>;
|
|
12463
|
+
}, z.core.$strict>;
|
|
12464
|
+
declare const scene3DCameraChangesSchema: z.ZodObject<{
|
|
12465
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12466
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12467
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12468
|
+
sensorWidthMm: z.ZodOptional<z.ZodNumber>;
|
|
12469
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12470
|
+
frame: z.ZodNumber;
|
|
12471
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12472
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12473
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12474
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12475
|
+
linear: "linear";
|
|
12476
|
+
easeInOut: "easeInOut";
|
|
12477
|
+
}>>;
|
|
12478
|
+
}, z.core.$strict>>>;
|
|
12479
|
+
}, z.core.$strict>;
|
|
12480
|
+
declare const scene3DLightingChangesSchema: z.ZodObject<{
|
|
12481
|
+
ambientIntensity: z.ZodOptional<z.ZodNumber>;
|
|
12482
|
+
keyIntensity: z.ZodOptional<z.ZodNumber>;
|
|
12483
|
+
keyPosition: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12484
|
+
}, z.core.$strict>;
|
|
12485
|
+
declare const scene3DEditOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
12486
|
+
op: z.ZodLiteral<"set-object">;
|
|
12487
|
+
objectId: z.ZodString;
|
|
12488
|
+
changes: z.ZodObject<{
|
|
12489
|
+
name: z.ZodOptional<z.ZodString>;
|
|
12490
|
+
primitive: z.ZodOptional<z.ZodEnum<{
|
|
12491
|
+
group: "group";
|
|
12492
|
+
box: "box";
|
|
12493
|
+
sphere: "sphere";
|
|
12494
|
+
cylinder: "cylinder";
|
|
12495
|
+
cone: "cone";
|
|
12496
|
+
plane: "plane";
|
|
12497
|
+
capsule: "capsule";
|
|
12498
|
+
}>>;
|
|
12499
|
+
parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12500
|
+
dimensions: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12501
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12502
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12503
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12504
|
+
color: z.ZodOptional<z.ZodString>;
|
|
12505
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12506
|
+
frame: z.ZodNumber;
|
|
12507
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12508
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12509
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12510
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12511
|
+
linear: "linear";
|
|
12512
|
+
easeInOut: "easeInOut";
|
|
12513
|
+
}>>;
|
|
12514
|
+
}, z.core.$strict>>>;
|
|
12515
|
+
}, z.core.$strict>;
|
|
12516
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12517
|
+
op: z.ZodLiteral<"add-object">;
|
|
12518
|
+
object: z.ZodObject<{
|
|
12519
|
+
id: z.ZodString;
|
|
12520
|
+
name: z.ZodString;
|
|
12521
|
+
primitive: z.ZodEnum<{
|
|
12522
|
+
group: "group";
|
|
12523
|
+
box: "box";
|
|
12524
|
+
sphere: "sphere";
|
|
12525
|
+
cylinder: "cylinder";
|
|
12526
|
+
cone: "cone";
|
|
12527
|
+
plane: "plane";
|
|
12528
|
+
capsule: "capsule";
|
|
12529
|
+
}>;
|
|
12530
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
12531
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12532
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12533
|
+
rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12534
|
+
scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12535
|
+
color: z.ZodString;
|
|
12536
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12537
|
+
frame: z.ZodNumber;
|
|
12538
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12539
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12540
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12541
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12542
|
+
linear: "linear";
|
|
12543
|
+
easeInOut: "easeInOut";
|
|
12544
|
+
}>>;
|
|
12545
|
+
}, z.core.$strict>>>;
|
|
12546
|
+
}, z.core.$strict>;
|
|
12547
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12548
|
+
op: z.ZodLiteral<"remove-object">;
|
|
12549
|
+
objectId: z.ZodString;
|
|
12550
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12551
|
+
op: z.ZodLiteral<"set-camera">;
|
|
12552
|
+
changes: z.ZodObject<{
|
|
12553
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12554
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12555
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12556
|
+
sensorWidthMm: z.ZodOptional<z.ZodNumber>;
|
|
12557
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12558
|
+
frame: z.ZodNumber;
|
|
12559
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12560
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12561
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12562
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12563
|
+
linear: "linear";
|
|
12564
|
+
easeInOut: "easeInOut";
|
|
12565
|
+
}>>;
|
|
12566
|
+
}, z.core.$strict>>>;
|
|
12567
|
+
}, z.core.$strict>;
|
|
12568
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12569
|
+
op: z.ZodLiteral<"set-lighting">;
|
|
12570
|
+
changes: z.ZodObject<{
|
|
12571
|
+
ambientIntensity: z.ZodOptional<z.ZodNumber>;
|
|
12572
|
+
keyIntensity: z.ZodOptional<z.ZodNumber>;
|
|
12573
|
+
keyPosition: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12574
|
+
}, z.core.$strict>;
|
|
12575
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12576
|
+
op: z.ZodLiteral<"set-background">;
|
|
12577
|
+
color: z.ZodString;
|
|
12578
|
+
}, z.core.$strict>], "op">;
|
|
12579
|
+
declare const scene3DEditOperationsSchema: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
12580
|
+
op: z.ZodLiteral<"set-object">;
|
|
12581
|
+
objectId: z.ZodString;
|
|
12582
|
+
changes: z.ZodObject<{
|
|
12583
|
+
name: z.ZodOptional<z.ZodString>;
|
|
12584
|
+
primitive: z.ZodOptional<z.ZodEnum<{
|
|
12585
|
+
group: "group";
|
|
12586
|
+
box: "box";
|
|
12587
|
+
sphere: "sphere";
|
|
12588
|
+
cylinder: "cylinder";
|
|
12589
|
+
cone: "cone";
|
|
12590
|
+
plane: "plane";
|
|
12591
|
+
capsule: "capsule";
|
|
12592
|
+
}>>;
|
|
12593
|
+
parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12594
|
+
dimensions: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12595
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12596
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12597
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12598
|
+
color: z.ZodOptional<z.ZodString>;
|
|
12599
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12600
|
+
frame: z.ZodNumber;
|
|
12601
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12602
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12603
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12604
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12605
|
+
linear: "linear";
|
|
12606
|
+
easeInOut: "easeInOut";
|
|
12607
|
+
}>>;
|
|
12608
|
+
}, z.core.$strict>>>;
|
|
12609
|
+
}, z.core.$strict>;
|
|
12610
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12611
|
+
op: z.ZodLiteral<"add-object">;
|
|
12612
|
+
object: z.ZodObject<{
|
|
12613
|
+
id: z.ZodString;
|
|
12614
|
+
name: z.ZodString;
|
|
12615
|
+
primitive: z.ZodEnum<{
|
|
12616
|
+
group: "group";
|
|
12617
|
+
box: "box";
|
|
12618
|
+
sphere: "sphere";
|
|
12619
|
+
cylinder: "cylinder";
|
|
12620
|
+
cone: "cone";
|
|
12621
|
+
plane: "plane";
|
|
12622
|
+
capsule: "capsule";
|
|
12623
|
+
}>;
|
|
12624
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
12625
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12626
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12627
|
+
rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12628
|
+
scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
12629
|
+
color: z.ZodString;
|
|
12630
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12631
|
+
frame: z.ZodNumber;
|
|
12632
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12633
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12634
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12635
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12636
|
+
linear: "linear";
|
|
12637
|
+
easeInOut: "easeInOut";
|
|
12638
|
+
}>>;
|
|
12639
|
+
}, z.core.$strict>>>;
|
|
12640
|
+
}, z.core.$strict>;
|
|
12641
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12642
|
+
op: z.ZodLiteral<"remove-object">;
|
|
12643
|
+
objectId: z.ZodString;
|
|
12644
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12645
|
+
op: z.ZodLiteral<"set-camera">;
|
|
12646
|
+
changes: z.ZodObject<{
|
|
12647
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12648
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12649
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12650
|
+
sensorWidthMm: z.ZodOptional<z.ZodNumber>;
|
|
12651
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12652
|
+
frame: z.ZodNumber;
|
|
12653
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12654
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12655
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
12656
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
12657
|
+
linear: "linear";
|
|
12658
|
+
easeInOut: "easeInOut";
|
|
12659
|
+
}>>;
|
|
12660
|
+
}, z.core.$strict>>>;
|
|
12661
|
+
}, z.core.$strict>;
|
|
12662
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12663
|
+
op: z.ZodLiteral<"set-lighting">;
|
|
12664
|
+
changes: z.ZodObject<{
|
|
12665
|
+
ambientIntensity: z.ZodOptional<z.ZodNumber>;
|
|
12666
|
+
keyIntensity: z.ZodOptional<z.ZodNumber>;
|
|
12667
|
+
keyPosition: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
12668
|
+
}, z.core.$strict>;
|
|
12669
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12670
|
+
op: z.ZodLiteral<"set-background">;
|
|
12671
|
+
color: z.ZodString;
|
|
12672
|
+
}, z.core.$strict>], "op">>;
|
|
12673
|
+
type Scene3DObjectChanges = z.infer<typeof scene3DObjectChangesSchema>;
|
|
12674
|
+
type Scene3DCameraChanges = z.infer<typeof scene3DCameraChangesSchema>;
|
|
12675
|
+
type Scene3DLightingChanges = z.infer<typeof scene3DLightingChangesSchema>;
|
|
12676
|
+
type Scene3DEditOperation = z.infer<typeof scene3DEditOperationSchema>;
|
|
12677
|
+
type Scene3DEditErrorCode =
|
|
12678
|
+
/** `expectedRevisionId` did not match the plan handed in. */
|
|
12679
|
+
"stale_revision"
|
|
12680
|
+
/** The operation list itself is malformed or over the cap. */
|
|
12681
|
+
| "invalid_operations"
|
|
12682
|
+
/** An operation targets an object that is not in the scene. */
|
|
12683
|
+
| "unknown_object"
|
|
12684
|
+
/** `add-object` collided with an existing id. */
|
|
12685
|
+
| "duplicate_object"
|
|
12686
|
+
/** An operation touched an id the caller declared locked. */
|
|
12687
|
+
| "locked_object"
|
|
12688
|
+
/** The plan handed in, or the plan the operations produced, is invalid. */
|
|
12689
|
+
| "invalid_plan";
|
|
12690
|
+
interface Scene3DEditOptions {
|
|
12691
|
+
/** Optimistic concurrency: reject unless the plan is still this revision. */
|
|
12692
|
+
expectedRevisionId?: string;
|
|
12693
|
+
/** Object ids the caller declared untouchable. Enforced as a POST-condition
|
|
12694
|
+
* (see `applyScene3DEditOperations`), which is what makes it total. */
|
|
12695
|
+
lockedObjectIds?: readonly string[];
|
|
12696
|
+
/** Pin the produced revision id — tests and deterministic replay only. */
|
|
12697
|
+
revisionId?: string;
|
|
12698
|
+
}
|
|
12699
|
+
type Scene3DEditResult = {
|
|
12700
|
+
ok: true;
|
|
12701
|
+
plan: Scene3DPlanV1;
|
|
12702
|
+
changedObjectIds: string[];
|
|
12703
|
+
changeSummary: string;
|
|
12704
|
+
} | {
|
|
12705
|
+
ok: false;
|
|
12706
|
+
code: Scene3DEditErrorCode;
|
|
12707
|
+
message: string;
|
|
12708
|
+
operationIndex?: number;
|
|
12709
|
+
};
|
|
12710
|
+
/** One human sentence per operation — the deterministic lane's answer to the
|
|
12711
|
+
* LLM lane's `changeSummary`, so both edit paths return the same shape. */
|
|
12712
|
+
declare function summarizeScene3DOperations(operations: readonly Scene3DEditOperation[]): string;
|
|
12713
|
+
/**
|
|
12714
|
+
* Apply an operation list to a plan, producing a NEW revision.
|
|
12715
|
+
*
|
|
12716
|
+
* Guarantees, in this order — each one is a distinct failure mode that was
|
|
12717
|
+
* cheap to get wrong:
|
|
12718
|
+
*
|
|
12719
|
+
* 1. The input plan is never mutated (deep clone before the first write).
|
|
12720
|
+
* 2. A stale `expectedRevisionId` is refused before anything is applied, so a
|
|
12721
|
+
* late async completion can never overwrite a newer manual edit.
|
|
12722
|
+
* 3. Operations are schema-validated as a list; the failing INDEX is reported.
|
|
12723
|
+
* 4. Locks are enforced as a POST-CONDITION — every locked object must still
|
|
12724
|
+
* exist and be deep-equal to the original. Reasoning per-operation would
|
|
12725
|
+
* have to anticipate remove + re-add, a reparent from a sibling's `set-
|
|
12726
|
+
* object`, and whatever the next operation kind turns out to be; the
|
|
12727
|
+
* post-condition covers all of them by construction. (`selectedObjectIds`
|
|
12728
|
+
* is CONTEXT for the model, never permission — the caller passes locks
|
|
12729
|
+
* explicitly and they are checked here, after the model has spoken.)
|
|
12730
|
+
* 5. The WHOLE resulting plan is re-validated, which is what makes "no silent
|
|
12731
|
+
* orphaning" free: removing a parent leaves a dangling `parentId` and the
|
|
12732
|
+
* plan validator rejects it, as does removing an object a reference points
|
|
12733
|
+
* at.
|
|
12734
|
+
*/
|
|
12735
|
+
declare function applyScene3DEditOperations(plan: Scene3DPlanV1, operations: readonly Scene3DEditOperation[] | unknown, options?: Scene3DEditOptions): Scene3DEditResult;
|
|
12736
|
+
|
|
12737
|
+
/**
|
|
12738
|
+
* Scene3D v2 — the PUBLIC wire contract for exported (GLB-backed) scenes.
|
|
12739
|
+
*
|
|
12740
|
+
* One Scene3D family, two schema versions. `Scene3DPlan` is the discriminated
|
|
12741
|
+
* union `Scene3DPlanV1 | Scene3DPlanV2`, keyed on `schemaVersion`; v1 (see
|
|
12742
|
+
* `scene3d.ts`) is untouched — same fields, same bounds, same messages — and a
|
|
12743
|
+
* default v1 authoring request must never come back as v2.
|
|
12744
|
+
*
|
|
12745
|
+
* What v2 adds over v1's inline primitives:
|
|
12746
|
+
*
|
|
12747
|
+
* - **Assets.** Geometry lives in GLB files referenced by opaque id + SHA-256
|
|
12748
|
+
* digest, never by an expiring URL. The camera lives in a sidecar
|
|
12749
|
+
* (`scene3d-camera-track.ts`), one sample per frame, so a 720-frame baked
|
|
12750
|
+
* move is not squeezed through v1's 240-keyframe budget.
|
|
12751
|
+
* - **Semantic entities.** A user-selectable object or assembly — a person, a
|
|
12752
|
+
* car, a prop, an environment — not every mesh in the export. Entities carry
|
|
12753
|
+
* stable ids, anchors, identity colour and material-role bindings, so
|
|
12754
|
+
* recolouring a person cannot recolour its chair.
|
|
12755
|
+
* - **Shots.** Explicit contiguous integer ranges covering the whole timeline,
|
|
12756
|
+
* with hard cuts. Interpolation never spans a cut.
|
|
12757
|
+
* - **Overlays.** Deterministic entity/camera overrides applied over immutable
|
|
12758
|
+
* baked bytes, in a fixed order, so a rebuild cannot silently drop a manual
|
|
12759
|
+
* edit.
|
|
12760
|
+
* - **Provenance.** Which engine/compiler/exporter/renderer produced this, and
|
|
12761
|
+
* the canonical content hash of the revision.
|
|
12762
|
+
*
|
|
12763
|
+
* This file is STRUCTURE ONLY: shapes, bounds, cross-references. How a scene is
|
|
12764
|
+
* authored, how a camera move is solved and what any of it costs are not part
|
|
12765
|
+
* of the published contract and are not here.
|
|
12766
|
+
*
|
|
12767
|
+
* It owns the VOCABULARY — constants, types and per-component schemas. The
|
|
12768
|
+
* whole-plan schema and every cross-field rule live in `scene3d-v2-plan.ts`,
|
|
12769
|
+
* which builds on this; the dense camera sidecar lives in
|
|
12770
|
+
* `scene3d-camera-track.ts`. Consumers import all three from the package root.
|
|
12771
|
+
*
|
|
12772
|
+
* ## World conventions (identical to v1, and now stated on the wire)
|
|
12773
|
+
*
|
|
12774
|
+
* Meters, Y up, right-handed, zero-based frames. `units`/`upAxis`/`handedness`
|
|
12775
|
+
* are required literals so a reader can refuse a manifest that assumes anything
|
|
12776
|
+
* else instead of quietly rendering a Z-up scene on its side. Conversion from
|
|
12777
|
+
* the authoring package's basis happens exactly once, at export: a GLB that is
|
|
12778
|
+
* already Y-up must not be rotated again, and the renderer must not replace an
|
|
12779
|
+
* exported camera quaternion with a `lookAt()`.
|
|
12780
|
+
*/
|
|
12781
|
+
|
|
12782
|
+
/** The v2 discriminator value. v1's `SCENE3D_SCHEMA_VERSION` is unchanged. */
|
|
12783
|
+
declare const SCENE3D_SCHEMA_VERSION_V2 = 2;
|
|
12784
|
+
/** Every version this package can parse AND validate. An SDK consumer checks a
|
|
12785
|
+
* plan against this BEFORE trying to render one it cannot understand. */
|
|
12786
|
+
declare const SCENE3D_SUPPORTED_SCHEMA_VERSIONS: readonly [1, 2];
|
|
12787
|
+
type Scene3DSupportedSchemaVersion = (typeof SCENE3D_SUPPORTED_SCHEMA_VERSIONS)[number];
|
|
12788
|
+
/** Authoring engines a v2 manifest may name. Open-ended on the wire (the field
|
|
12789
|
+
* is a bounded slug) so a new engine does not need a package release; this
|
|
12790
|
+
* list is what the current platform ships. */
|
|
12791
|
+
declare const SCENE3D_V2_ENGINES: readonly ["blender-cloud", "blender-local"];
|
|
12792
|
+
type Scene3DKnownEngine = (typeof SCENE3D_V2_ENGINES)[number];
|
|
12793
|
+
/**
|
|
12794
|
+
* Admission bounds for v2. Server-configured ceilings are returned in
|
|
12795
|
+
* capabilities; these are the contract's hard maxima, quoted by the route Zod,
|
|
12796
|
+
* the builder, the renderer and the docs so they cannot drift apart.
|
|
12797
|
+
*
|
|
12798
|
+
* v1's `SCENE3D_LIMITS` is NOT changed by any of this — "raise maxObjects" was
|
|
12799
|
+
* never the v2 design.
|
|
12800
|
+
*/
|
|
12801
|
+
declare const SCENE3D_V2_LIMITS: {
|
|
12802
|
+
/** Both the seconds and the frame ceiling apply; neither waives the other. */
|
|
12803
|
+
readonly maxDurationSeconds: 60;
|
|
12804
|
+
readonly minDurationInFrames: 1;
|
|
12805
|
+
readonly maxDurationInFrames: 3600;
|
|
12806
|
+
readonly minFps: 15;
|
|
12807
|
+
readonly maxFps: 60;
|
|
12808
|
+
readonly defaultFps: 24;
|
|
12809
|
+
/** Even integers only — an odd axis breaks H.264 chroma subsampling. */
|
|
12810
|
+
readonly minDimensionPx: 100;
|
|
12811
|
+
readonly maxDimensionPx: 1920;
|
|
12812
|
+
readonly minEntities: 1;
|
|
12813
|
+
/** SEMANTIC entities, not exported mesh nodes. */
|
|
12814
|
+
readonly maxEntities: 100;
|
|
12815
|
+
/** Enforced during asset normalization, after decode — see
|
|
12816
|
+
* `scene3DV2NormalizationIssues` in `scene3d-v2-resources.ts`. */
|
|
12817
|
+
readonly maxMeshNodes: 2000;
|
|
12818
|
+
readonly maxTriangles: 200000;
|
|
12819
|
+
readonly maxHierarchyDepth: 16;
|
|
12820
|
+
/** Decoded manifest JSON. Measured on the bytes, before `JSON.parse`. */
|
|
12821
|
+
readonly maxManifestBytes: number;
|
|
12822
|
+
/** Decoded camera-track JSON. */
|
|
12823
|
+
readonly maxCameraTrackBytes: number;
|
|
12824
|
+
/** Total DECLARED bytes of the assets the renderer downloads. Compression
|
|
12825
|
+
* does not waive the decoded geometry limits above. */
|
|
12826
|
+
readonly maxRendererAssetBytes: number;
|
|
12827
|
+
/** A `blend-source` is a separately authorized download, never handed to the
|
|
12828
|
+
* browser renderer, and therefore not part of the renderer budget. */
|
|
12829
|
+
readonly maxBlendSourceBytes: number;
|
|
12830
|
+
readonly maxAssets: 64;
|
|
12831
|
+
readonly maxShots: 32;
|
|
12832
|
+
readonly maxShotEntityIds: 16;
|
|
12833
|
+
/** v1's reference limit, unchanged until deliberately expanded. */
|
|
12834
|
+
readonly maxReferences: 8;
|
|
12835
|
+
readonly maxAnchorsPerEntity: 32;
|
|
12836
|
+
readonly maxMaterialBindingsPerEntity: 16;
|
|
12837
|
+
readonly maxOverrides: 200;
|
|
12838
|
+
readonly minPosterDimensionPx: 16;
|
|
12839
|
+
readonly maxPosterDimensionPx: 4096;
|
|
12840
|
+
readonly maxIdLength: 64;
|
|
12841
|
+
readonly maxAssetIdLength: 128;
|
|
12842
|
+
readonly maxNodeIdLength: 128;
|
|
12843
|
+
readonly maxNameLength: 120;
|
|
12844
|
+
readonly maxLabelLength: 120;
|
|
12845
|
+
readonly maxMaterialNameLength: 120;
|
|
12846
|
+
readonly maxVersionLength: 64;
|
|
12847
|
+
readonly maxCoordinate: 1000;
|
|
12848
|
+
readonly minSize: 0.001;
|
|
12849
|
+
readonly maxSize: 1000;
|
|
12850
|
+
readonly maxIntensity: 100;
|
|
12851
|
+
};
|
|
12852
|
+
/** The overlay operation vocabulary this package understands. An override
|
|
12853
|
+
* written by a NEWER writer is rejected with an explicit message rather than
|
|
12854
|
+
* silently skipped — a dropped edit is worse than a refused manifest. */
|
|
12855
|
+
declare const SCENE3D_V2_OVERRIDE_OPERATION_VERSION = 1;
|
|
12856
|
+
/**
|
|
12857
|
+
* The GLB `extras` keys the exporter writes and the importer reads. Blender
|
|
12858
|
+
* display names and array indices are NOT durable identifiers: a re-export
|
|
12859
|
+
* renames `Cube.003` and reorders children, and a hit-test would then select a
|
|
12860
|
+
* different entity. Both ends import these constants — never the literals.
|
|
12861
|
+
*/
|
|
12862
|
+
declare const SCENE3D_GLB_EXTRAS_ENTITY_ID = "nodaroEntityId";
|
|
12863
|
+
declare const SCENE3D_GLB_EXTRAS_SUBPART_ID = "nodaroSubpartId";
|
|
12864
|
+
declare const SCENE3D_GLB_EXTRAS_MATERIAL_ROLE = "nodaroMaterialRole";
|
|
12865
|
+
/** Nothing outside this set is read from `extras`; an importer ignores the rest
|
|
12866
|
+
* rather than trusting arbitrary exporter metadata. */
|
|
12867
|
+
declare const SCENE3D_GLB_EXTRAS_ALLOWLIST: readonly ["nodaroEntityId", "nodaroSubpartId", "nodaroMaterialRole"];
|
|
12868
|
+
/** What an entity IS, for selection, grouping and validation reporting. It is
|
|
12869
|
+
* advisory: no rule anywhere requires a head on a car or a wheel on a person. */
|
|
12870
|
+
type Scene3DEntityRole = "person" | "vehicle" | "prop" | "environment" | "other";
|
|
12871
|
+
declare const SCENE3D_ENTITY_ROLES: readonly Scene3DEntityRole[];
|
|
12872
|
+
/** The v1 primitive vocabulary MINUS `group` — grouping is `visual.kind:"group"`
|
|
12873
|
+
* in v2, so there is exactly one way to say "no geometry". */
|
|
12874
|
+
type Scene3DV2Primitive = Exclude<Scene3DPrimitive, "group">;
|
|
12875
|
+
declare const SCENE3D_V2_PRIMITIVES: readonly Scene3DV2Primitive[];
|
|
12876
|
+
/** Deterministic overlays an entity accepts. Geometry and pose are deliberately
|
|
12877
|
+
* absent: those rebuild through the authoring engine, they are not overlays. */
|
|
12878
|
+
type Scene3DEntityCapability = "transform" | "color" | "visibility";
|
|
12879
|
+
declare const SCENE3D_ENTITY_CAPABILITIES: readonly Scene3DEntityCapability[];
|
|
12880
|
+
/** What an entity accepts when it does not say. */
|
|
12881
|
+
declare const SCENE3D_DEFAULT_ENTITY_CAPABILITIES: readonly Scene3DEntityCapability[];
|
|
12882
|
+
type Scene3DAssetKind = "glb" | "camera-track-json" | "poster" | "validation-report" | "blend-source";
|
|
12883
|
+
declare const SCENE3D_ASSET_KINDS: readonly Scene3DAssetKind[];
|
|
12884
|
+
type Scene3DAssetRole = "scene-geometry" | "entity-geometry" | "camera-track" | "poster" | "validation-report" | "source";
|
|
12885
|
+
declare const SCENE3D_ASSET_ROLES: readonly Scene3DAssetRole[];
|
|
12886
|
+
/** Which kinds may carry which role. A role is not decoration — it is what lets
|
|
12887
|
+
* a resolver decide whether bytes go to the renderer, the UI or an authorized
|
|
12888
|
+
* download, without sniffing the file. */
|
|
12889
|
+
declare const SCENE3D_ASSET_ROLE_KINDS: Readonly<Record<Scene3DAssetRole, Scene3DAssetKind>>;
|
|
12890
|
+
/** The kinds the BROWSER downloads. `blend-source` is never in this set: it is
|
|
12891
|
+
* a separately authorized download and it does not spend the renderer budget. */
|
|
12892
|
+
declare const SCENE3D_RENDERER_ASSET_KINDS: readonly Scene3DAssetKind[];
|
|
12893
|
+
/** The one material role a `primitive` entity has: its own `color`. */
|
|
12894
|
+
declare const SCENE3D_PRIMITIVE_MATERIAL_ROLE = "identity";
|
|
12895
|
+
/** The standardized clay look, pinned by id. Browser preview, critic stills and
|
|
12896
|
+
* the final export must implement a given preset identically. */
|
|
12897
|
+
declare const SCENE3D_CLAY_LIGHTING_PRESETS: readonly ["clay-studio-v1"];
|
|
12898
|
+
type Scene3DClayLightingPreset = (typeof SCENE3D_CLAY_LIGHTING_PRESETS)[number];
|
|
12899
|
+
/** A stable contact/selection location in entity-local space. Names are free
|
|
12900
|
+
* structural labels (`face`, `seat`, `wheel.frontLeft`, `roof`, `lookAt`) —
|
|
12901
|
+
* human anatomy is never required. */
|
|
12902
|
+
interface Scene3DAnchor {
|
|
12903
|
+
name: string;
|
|
12904
|
+
position: Vec3;
|
|
12905
|
+
/** Euler XYZ radians. Absent = identity orientation. */
|
|
12906
|
+
rotation?: Vec3;
|
|
12907
|
+
}
|
|
12908
|
+
/** Binds an editable colour ROLE to a real material inside the entity's own
|
|
12909
|
+
* asset root. Recolouring `bodyPaint` on a car must not touch its tires, and
|
|
12910
|
+
* cannot reach a material that belongs to a different entity. */
|
|
12911
|
+
interface Scene3DMaterialBinding {
|
|
12912
|
+
role: string;
|
|
12913
|
+
materialName: string;
|
|
12914
|
+
/** Baked colour for the role, sRGB opaque hex. */
|
|
12915
|
+
color?: string;
|
|
12916
|
+
roughness?: number;
|
|
12917
|
+
}
|
|
12918
|
+
/** Maps a clip inside the referenced GLB onto public frames. Sampling is
|
|
12919
|
+
* `time = (frame - startFrame) / fps` — never a wall-clock mixer delta, or
|
|
12920
|
+
* scrubbing backwards would not reproduce the rendered frame. */
|
|
12921
|
+
interface Scene3DAssetAnimation {
|
|
12922
|
+
clipName: string;
|
|
12923
|
+
startFrame: number;
|
|
12924
|
+
endFrameExclusive: number;
|
|
12925
|
+
/** Absent/false = hold the last sample after the window. */
|
|
12926
|
+
loop?: boolean;
|
|
12927
|
+
}
|
|
12928
|
+
type Scene3DEntityVisual =
|
|
12929
|
+
/** Organizational identity: a transform and a name, no geometry of its own. */
|
|
12930
|
+
{
|
|
12931
|
+
kind: "group";
|
|
12932
|
+
}
|
|
12933
|
+
/** The v1 primitive vocabulary and validated dimensions. */
|
|
12934
|
+
| {
|
|
12935
|
+
kind: "primitive";
|
|
12936
|
+
primitive: Scene3DV2Primitive;
|
|
12937
|
+
dimensions: Vec3;
|
|
12938
|
+
color: string;
|
|
12939
|
+
}
|
|
12940
|
+
/** An authorized GLB plus the exported node that roots this entity. */
|
|
12941
|
+
| {
|
|
12942
|
+
kind: "asset";
|
|
12943
|
+
assetId: string;
|
|
12944
|
+
rootNodeId: string;
|
|
12945
|
+
animation?: Scene3DAssetAnimation;
|
|
12946
|
+
};
|
|
12947
|
+
interface Scene3DEntityV2 {
|
|
12948
|
+
id: string;
|
|
12949
|
+
name: string;
|
|
12950
|
+
/** Transform parent, another entity. Cycles are rejected. */
|
|
12951
|
+
parentId?: string;
|
|
12952
|
+
role?: Scene3DEntityRole;
|
|
12953
|
+
/**
|
|
12954
|
+
* Local base transform. REQUIRED for `group` and `primitive`.
|
|
12955
|
+
*
|
|
12956
|
+
* OPTIONAL for `asset`, where the GLB node's own transform is authoritative:
|
|
12957
|
+
* a value here is an informational frame-0 snapshot and the renderer must NOT
|
|
12958
|
+
* apply it on top of the node transform. Applying both is the
|
|
12959
|
+
* double-transform bug that puts a car at twice its offset.
|
|
12960
|
+
*/
|
|
12961
|
+
position?: Vec3;
|
|
12962
|
+
rotation?: Vec3;
|
|
12963
|
+
scale?: Vec3;
|
|
12964
|
+
/** The selection/identity chip colour. Opaque hex, sRGB. */
|
|
12965
|
+
identityColor?: string;
|
|
12966
|
+
anchors?: Scene3DAnchor[];
|
|
12967
|
+
/** Deterministic overlays this entity accepts. Absent = all of them. */
|
|
12968
|
+
capabilities?: Scene3DEntityCapability[];
|
|
12969
|
+
/** Currently frozen subset. An overlay is accepted iff its capability is
|
|
12970
|
+
* advertised AND not locked. */
|
|
12971
|
+
locks?: Scene3DEntityCapability[];
|
|
12972
|
+
/** `asset` entities only. */
|
|
12973
|
+
materialBindings?: Scene3DMaterialBinding[];
|
|
12974
|
+
visual: Scene3DEntityVisual;
|
|
12975
|
+
}
|
|
12976
|
+
/** A reference to immutable bytes. IDs and digests are persisted; short-lived
|
|
12977
|
+
* transport URLs are issued by the authenticated resolver and never stored. */
|
|
12978
|
+
interface Scene3DAssetRef {
|
|
12979
|
+
assetId: string;
|
|
12980
|
+
kind: Scene3DAssetKind;
|
|
12981
|
+
role: Scene3DAssetRole;
|
|
12982
|
+
byteLength: number;
|
|
12983
|
+
/** Lowercase hex SHA-256 of the bytes. */
|
|
12984
|
+
sha256: string;
|
|
12985
|
+
/** Set when this revision reuses an earlier revision's immutable bytes. */
|
|
12986
|
+
originRevisionId?: string;
|
|
12987
|
+
}
|
|
12988
|
+
/** A contiguous half-open frame range `[startFrame, endFrameExclusive)`. */
|
|
12989
|
+
interface Scene3DShot {
|
|
12990
|
+
id: string;
|
|
12991
|
+
startFrame: number;
|
|
12992
|
+
endFrameExclusive: number;
|
|
12993
|
+
label?: string;
|
|
12994
|
+
/** Who the shot is ABOUT — used by validation reporting and the UI. */
|
|
12995
|
+
subjectEntityIds?: string[];
|
|
12996
|
+
/** Who is deliberately in front of the lens (an over-the-shoulder anchor). */
|
|
12997
|
+
foregroundEntityIds?: string[];
|
|
12998
|
+
}
|
|
12999
|
+
interface Scene3DClayLighting {
|
|
13000
|
+
preset: Scene3DClayLightingPreset;
|
|
13001
|
+
ambientIntensity: number;
|
|
13002
|
+
keyIntensity: number;
|
|
13003
|
+
keyPosition: Vec3;
|
|
13004
|
+
}
|
|
13005
|
+
/** Which space a constant transform override is expressed in. Declared, so the
|
|
13006
|
+
* renderer never multiplies the same parent transform in twice. */
|
|
13007
|
+
type Scene3DOverrideSpace = "local" | "world";
|
|
13008
|
+
interface Scene3DOverrideProvenance {
|
|
13009
|
+
id: string;
|
|
13010
|
+
/** The revision this override was authored against. */
|
|
13011
|
+
sourceRevisionId: string;
|
|
13012
|
+
/** That revision's canonical content hash when the override was authored. */
|
|
13013
|
+
sourceContentHash: string;
|
|
13014
|
+
operationVersion: number;
|
|
13015
|
+
}
|
|
13016
|
+
type Scene3DOverride = Scene3DOverrideProvenance & ({
|
|
13017
|
+
kind: "entity-transform";
|
|
13018
|
+
entityId: string;
|
|
13019
|
+
space: Scene3DOverrideSpace;
|
|
13020
|
+
position?: Vec3;
|
|
13021
|
+
rotation?: Vec3;
|
|
13022
|
+
scale?: Vec3;
|
|
13023
|
+
} | {
|
|
13024
|
+
kind: "entity-color";
|
|
13025
|
+
entityId: string;
|
|
13026
|
+
materialRole: string;
|
|
13027
|
+
color: string;
|
|
13028
|
+
} | {
|
|
13029
|
+
kind: "entity-visibility";
|
|
13030
|
+
entityId: string;
|
|
13031
|
+
visible: boolean;
|
|
13032
|
+
} | {
|
|
13033
|
+
kind: "camera-shot-offset";
|
|
13034
|
+
shotId: string;
|
|
13035
|
+
positionOffset?: Vec3;
|
|
13036
|
+
targetOffset?: Vec3;
|
|
13037
|
+
});
|
|
13038
|
+
/**
|
|
13039
|
+
* Who built this revision and from what. Source versioning and renderer
|
|
13040
|
+
* versioning are independent — a renderer upgrade does not invalidate a scene.
|
|
13041
|
+
*
|
|
13042
|
+
* Every string here is a bounded slug, which is a structural guarantee that no
|
|
13043
|
+
* native path or block of prose fits in one. Scrubbing credentials
|
|
13044
|
+
* out of the values it does accept remains the producer's duty.
|
|
13045
|
+
*/
|
|
13046
|
+
interface Scene3DProvenance {
|
|
13047
|
+
engine: string;
|
|
13048
|
+
engineVersion: string;
|
|
13049
|
+
recipeVersion: string;
|
|
13050
|
+
compilerVersion: string;
|
|
13051
|
+
exporterVersion: string;
|
|
13052
|
+
rendererVersion: string;
|
|
13053
|
+
sourceRevisionId?: string;
|
|
13054
|
+
/** The retained `blend-source` asset, when one was kept. */
|
|
13055
|
+
sourceArtifactId?: string;
|
|
13056
|
+
/** Canonical content hash of this revision — see `scene3d-v2-resources.ts`. */
|
|
13057
|
+
contentHash: string;
|
|
13058
|
+
}
|
|
13059
|
+
interface Scene3DPlanV2 {
|
|
13060
|
+
planType: typeof SCENE3D_PLAN_TYPE;
|
|
13061
|
+
schemaVersion: typeof SCENE3D_SCHEMA_VERSION_V2;
|
|
13062
|
+
revisionId: string;
|
|
13063
|
+
parentRevisionId?: string;
|
|
13064
|
+
width: number;
|
|
13065
|
+
height: number;
|
|
13066
|
+
fps: number;
|
|
13067
|
+
durationInFrames: number;
|
|
13068
|
+
units: "meters";
|
|
13069
|
+
upAxis: "Y";
|
|
13070
|
+
handedness: "right";
|
|
13071
|
+
objects: Scene3DEntityV2[];
|
|
13072
|
+
assets: Scene3DAssetRef[];
|
|
13073
|
+
cameraTrackAssetId: string;
|
|
13074
|
+
shots: Scene3DShot[];
|
|
13075
|
+
lighting: Scene3DClayLighting;
|
|
13076
|
+
backgroundColor: string;
|
|
13077
|
+
references?: Scene3DReference[];
|
|
13078
|
+
overrides?: Scene3DOverride[];
|
|
13079
|
+
provenance: Scene3DProvenance;
|
|
13080
|
+
}
|
|
13081
|
+
/** Opaque storage id. Deliberately slash-free: an asset id is an ID, resolved
|
|
13082
|
+
* server-side against ownership — never a path and never a URL. */
|
|
13083
|
+
declare const scene3DAssetIdSchema: z.ZodString;
|
|
13084
|
+
/** A node name inside an exported GLB. */
|
|
13085
|
+
declare const scene3DNodeIdSchema: z.ZodString;
|
|
13086
|
+
declare const scene3DSha256Schema: z.ZodString;
|
|
13087
|
+
/**
|
|
13088
|
+
* A version/engine token. The charset excludes `/`, `\`, `:` and whitespace, so
|
|
13089
|
+
* a native filesystem path cannot be spelled as one; the 64-character cap
|
|
13090
|
+
* excludes prose.
|
|
13091
|
+
*/
|
|
13092
|
+
declare const scene3DVersionTokenSchema: z.ZodString;
|
|
13093
|
+
declare const scene3DEngineIdSchema: z.ZodString;
|
|
13094
|
+
/** Anchor names and material roles share the id charset (dots allowed, so
|
|
13095
|
+
* `wheel.frontLeft` is one name and not a path). */
|
|
13096
|
+
declare const scene3DAnchorNameSchema: z.ZodString;
|
|
13097
|
+
declare const scene3DMaterialRoleSchema: z.ZodString;
|
|
13098
|
+
declare const scene3DMaterialNameSchema: z.ZodString;
|
|
13099
|
+
declare const scene3DEntityCapabilitySchema: z.ZodEnum<{
|
|
13100
|
+
transform: "transform";
|
|
13101
|
+
color: "color";
|
|
13102
|
+
visibility: "visibility";
|
|
13103
|
+
}>;
|
|
13104
|
+
declare const scene3DAnchorSchema: z.ZodObject<{
|
|
13105
|
+
name: z.ZodString;
|
|
13106
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13107
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13108
|
+
}, z.core.$strict>;
|
|
13109
|
+
declare const scene3DMaterialBindingSchema: z.ZodObject<{
|
|
13110
|
+
role: z.ZodString;
|
|
13111
|
+
materialName: z.ZodString;
|
|
13112
|
+
color: z.ZodOptional<z.ZodString>;
|
|
13113
|
+
roughness: z.ZodOptional<z.ZodNumber>;
|
|
13114
|
+
}, z.core.$strict>;
|
|
13115
|
+
declare const scene3DAssetAnimationSchema: z.ZodObject<{
|
|
13116
|
+
clipName: z.ZodString;
|
|
13117
|
+
startFrame: z.ZodNumber;
|
|
13118
|
+
endFrameExclusive: z.ZodNumber;
|
|
13119
|
+
loop: z.ZodOptional<z.ZodBoolean>;
|
|
13120
|
+
}, z.core.$strict>;
|
|
13121
|
+
declare const scene3DEntityVisualSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13122
|
+
kind: z.ZodLiteral<"group">;
|
|
13123
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13124
|
+
kind: z.ZodLiteral<"primitive">;
|
|
13125
|
+
primitive: z.ZodEnum<{
|
|
13126
|
+
box: "box";
|
|
13127
|
+
sphere: "sphere";
|
|
13128
|
+
cylinder: "cylinder";
|
|
13129
|
+
cone: "cone";
|
|
13130
|
+
plane: "plane";
|
|
13131
|
+
capsule: "capsule";
|
|
13132
|
+
}>;
|
|
13133
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13134
|
+
color: z.ZodString;
|
|
13135
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13136
|
+
kind: z.ZodLiteral<"asset">;
|
|
13137
|
+
assetId: z.ZodString;
|
|
13138
|
+
rootNodeId: z.ZodString;
|
|
13139
|
+
animation: z.ZodOptional<z.ZodObject<{
|
|
13140
|
+
clipName: z.ZodString;
|
|
13141
|
+
startFrame: z.ZodNumber;
|
|
13142
|
+
endFrameExclusive: z.ZodNumber;
|
|
13143
|
+
loop: z.ZodOptional<z.ZodBoolean>;
|
|
13144
|
+
}, z.core.$strict>>;
|
|
13145
|
+
}, z.core.$strict>], "kind">;
|
|
13146
|
+
declare const scene3DEntityV2Schema: z.ZodObject<{
|
|
13147
|
+
id: z.ZodString;
|
|
13148
|
+
name: z.ZodString;
|
|
13149
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
13150
|
+
role: z.ZodOptional<z.ZodEnum<{
|
|
13151
|
+
other: "other";
|
|
13152
|
+
person: "person";
|
|
13153
|
+
vehicle: "vehicle";
|
|
13154
|
+
prop: "prop";
|
|
13155
|
+
environment: "environment";
|
|
13156
|
+
}>>;
|
|
13157
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13158
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13159
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13160
|
+
identityColor: z.ZodOptional<z.ZodString>;
|
|
13161
|
+
anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13162
|
+
name: z.ZodString;
|
|
13163
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13164
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13165
|
+
}, z.core.$strict>>>;
|
|
13166
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
13167
|
+
transform: "transform";
|
|
13168
|
+
color: "color";
|
|
13169
|
+
visibility: "visibility";
|
|
13170
|
+
}>>>;
|
|
13171
|
+
locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
13172
|
+
transform: "transform";
|
|
13173
|
+
color: "color";
|
|
13174
|
+
visibility: "visibility";
|
|
13175
|
+
}>>>;
|
|
13176
|
+
materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13177
|
+
role: z.ZodString;
|
|
13178
|
+
materialName: z.ZodString;
|
|
13179
|
+
color: z.ZodOptional<z.ZodString>;
|
|
13180
|
+
roughness: z.ZodOptional<z.ZodNumber>;
|
|
13181
|
+
}, z.core.$strict>>>;
|
|
13182
|
+
visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13183
|
+
kind: z.ZodLiteral<"group">;
|
|
13184
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13185
|
+
kind: z.ZodLiteral<"primitive">;
|
|
13186
|
+
primitive: z.ZodEnum<{
|
|
13187
|
+
box: "box";
|
|
13188
|
+
sphere: "sphere";
|
|
13189
|
+
cylinder: "cylinder";
|
|
13190
|
+
cone: "cone";
|
|
13191
|
+
plane: "plane";
|
|
13192
|
+
capsule: "capsule";
|
|
13193
|
+
}>;
|
|
13194
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13195
|
+
color: z.ZodString;
|
|
13196
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13197
|
+
kind: z.ZodLiteral<"asset">;
|
|
13198
|
+
assetId: z.ZodString;
|
|
13199
|
+
rootNodeId: z.ZodString;
|
|
13200
|
+
animation: z.ZodOptional<z.ZodObject<{
|
|
13201
|
+
clipName: z.ZodString;
|
|
13202
|
+
startFrame: z.ZodNumber;
|
|
13203
|
+
endFrameExclusive: z.ZodNumber;
|
|
13204
|
+
loop: z.ZodOptional<z.ZodBoolean>;
|
|
13205
|
+
}, z.core.$strict>>;
|
|
13206
|
+
}, z.core.$strict>], "kind">;
|
|
13207
|
+
}, z.core.$strict>;
|
|
13208
|
+
declare const scene3DAssetRefSchema: z.ZodObject<{
|
|
13209
|
+
assetId: z.ZodString;
|
|
13210
|
+
kind: z.ZodEnum<{
|
|
13211
|
+
glb: "glb";
|
|
13212
|
+
"camera-track-json": "camera-track-json";
|
|
13213
|
+
poster: "poster";
|
|
13214
|
+
"validation-report": "validation-report";
|
|
13215
|
+
"blend-source": "blend-source";
|
|
13216
|
+
}>;
|
|
13217
|
+
role: z.ZodEnum<{
|
|
13218
|
+
source: "source";
|
|
13219
|
+
poster: "poster";
|
|
13220
|
+
"validation-report": "validation-report";
|
|
13221
|
+
"scene-geometry": "scene-geometry";
|
|
13222
|
+
"entity-geometry": "entity-geometry";
|
|
13223
|
+
"camera-track": "camera-track";
|
|
13224
|
+
}>;
|
|
13225
|
+
byteLength: z.ZodNumber;
|
|
13226
|
+
sha256: z.ZodString;
|
|
13227
|
+
originRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13228
|
+
}, z.core.$strict>;
|
|
13229
|
+
declare const scene3DShotSchema: z.ZodObject<{
|
|
13230
|
+
id: z.ZodString;
|
|
13231
|
+
startFrame: z.ZodNumber;
|
|
13232
|
+
endFrameExclusive: z.ZodNumber;
|
|
13233
|
+
label: z.ZodOptional<z.ZodString>;
|
|
13234
|
+
subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13235
|
+
foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13236
|
+
}, z.core.$strict>;
|
|
13237
|
+
declare const scene3DClayLightingSchema: z.ZodObject<{
|
|
13238
|
+
preset: z.ZodEnum<{
|
|
13239
|
+
"clay-studio-v1": "clay-studio-v1";
|
|
13240
|
+
}>;
|
|
13241
|
+
ambientIntensity: z.ZodNumber;
|
|
13242
|
+
keyIntensity: z.ZodNumber;
|
|
13243
|
+
keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13244
|
+
}, z.core.$strict>;
|
|
13245
|
+
declare const scene3DOverrideSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13246
|
+
kind: z.ZodLiteral<"entity-transform">;
|
|
13247
|
+
entityId: z.ZodString;
|
|
13248
|
+
space: z.ZodEnum<{
|
|
13249
|
+
local: "local";
|
|
13250
|
+
world: "world";
|
|
13251
|
+
}>;
|
|
13252
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13253
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13254
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13255
|
+
id: z.ZodString;
|
|
13256
|
+
sourceRevisionId: z.ZodUUID;
|
|
13257
|
+
sourceContentHash: z.ZodString;
|
|
13258
|
+
operationVersion: z.ZodNumber;
|
|
13259
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13260
|
+
kind: z.ZodLiteral<"entity-color">;
|
|
13261
|
+
entityId: z.ZodString;
|
|
13262
|
+
materialRole: z.ZodString;
|
|
13263
|
+
color: z.ZodString;
|
|
13264
|
+
id: z.ZodString;
|
|
13265
|
+
sourceRevisionId: z.ZodUUID;
|
|
13266
|
+
sourceContentHash: z.ZodString;
|
|
13267
|
+
operationVersion: z.ZodNumber;
|
|
13268
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13269
|
+
kind: z.ZodLiteral<"entity-visibility">;
|
|
13270
|
+
entityId: z.ZodString;
|
|
13271
|
+
visible: z.ZodBoolean;
|
|
13272
|
+
id: z.ZodString;
|
|
13273
|
+
sourceRevisionId: z.ZodUUID;
|
|
13274
|
+
sourceContentHash: z.ZodString;
|
|
13275
|
+
operationVersion: z.ZodNumber;
|
|
13276
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13277
|
+
kind: z.ZodLiteral<"camera-shot-offset">;
|
|
13278
|
+
shotId: z.ZodString;
|
|
13279
|
+
positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13280
|
+
targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13281
|
+
id: z.ZodString;
|
|
13282
|
+
sourceRevisionId: z.ZodUUID;
|
|
13283
|
+
sourceContentHash: z.ZodString;
|
|
13284
|
+
operationVersion: z.ZodNumber;
|
|
13285
|
+
}, z.core.$strict>], "kind">;
|
|
13286
|
+
declare const scene3DProvenanceSchema: z.ZodObject<{
|
|
13287
|
+
engine: z.ZodString;
|
|
13288
|
+
engineVersion: z.ZodString;
|
|
13289
|
+
recipeVersion: z.ZodString;
|
|
13290
|
+
compilerVersion: z.ZodString;
|
|
13291
|
+
exporterVersion: z.ZodString;
|
|
13292
|
+
rendererVersion: z.ZodString;
|
|
13293
|
+
sourceRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13294
|
+
sourceArtifactId: z.ZodOptional<z.ZodString>;
|
|
13295
|
+
contentHash: z.ZodString;
|
|
13296
|
+
}, z.core.$strict>;
|
|
13297
|
+
type Issue$3 = Scene3DSemanticIssue;
|
|
13298
|
+
/** Decoded byte length of a JSON payload, browser and Node alike. Size is
|
|
13299
|
+
* checked on the BYTES, before `JSON.parse` allocates anything. */
|
|
13300
|
+
declare function scene3DJsonByteLength(text: string): number;
|
|
13301
|
+
/** What every `parse…Json` admission helper returns: the value, or the issues
|
|
13302
|
+
* that stopped it — never a throw, so a route can map issues to a 400. */
|
|
13303
|
+
type Scene3DParseResult<T> = {
|
|
13304
|
+
ok: true;
|
|
13305
|
+
value: T;
|
|
13306
|
+
} | {
|
|
13307
|
+
ok: false;
|
|
13308
|
+
issues: Issue$3[];
|
|
13309
|
+
};
|
|
13310
|
+
/** Flattens a zod failure into the same issue shape the semantic validators use. */
|
|
13311
|
+
declare function scene3DZodIssues(error: z.ZodError): Issue$3[];
|
|
13312
|
+
|
|
13313
|
+
/**
|
|
13314
|
+
* The Scene3D v2 PLAN: whole-manifest schema, every cross-field rule, and the
|
|
13315
|
+
* V1|V2 union the rest of the platform reads.
|
|
13316
|
+
*
|
|
13317
|
+
* `scene3d-v2.ts` says what a v2 entity, asset, shot or override looks like on
|
|
13318
|
+
* its own. Nothing there can catch the failures that actually reach a renderer,
|
|
13319
|
+
* because every one of them is a relationship:
|
|
13320
|
+
*
|
|
13321
|
+
* - an entity whose GLB is not in `assets`, or two entities claiming the same
|
|
13322
|
+
* exported root node;
|
|
13323
|
+
* - a parent chain that loops, or nests deeper than the transform walk allows;
|
|
13324
|
+
* - shots with a one-frame gap, so some frame belongs to no shot at all;
|
|
13325
|
+
* - a colour override naming a material role its entity never declared — the
|
|
13326
|
+
* bug where recolouring a person also repaints its chair;
|
|
13327
|
+
* - two overrides driving one channel, or one driving a locked entity;
|
|
13328
|
+
* - declared asset bytes over the download budget.
|
|
13329
|
+
*
|
|
13330
|
+
* All of it runs in `scene3DPlanV2Issues`, which the schema calls from a
|
|
13331
|
+
* `superRefine` and a caller holding an already-parsed plan can call directly —
|
|
13332
|
+
* the same split v1 uses, so both versions report failures identically.
|
|
13333
|
+
*/
|
|
13334
|
+
|
|
13335
|
+
/** THE plan type. Narrow with `isScene3DPlanV1` / `isScene3DPlanV2` before
|
|
13336
|
+
* reading version-specific fields. */
|
|
13337
|
+
type Scene3DPlan = Scene3DPlanV1 | Scene3DPlanV2;
|
|
13338
|
+
interface Scene3DJobOutputV2 {
|
|
13339
|
+
scenePlan: Scene3DPlanV2;
|
|
13340
|
+
changeSummary?: string;
|
|
13341
|
+
}
|
|
13342
|
+
/** Job output when either version may come back. */
|
|
13343
|
+
interface Scene3DJobOutputAny {
|
|
13344
|
+
scenePlan: Scene3DPlan;
|
|
13345
|
+
changeSummary?: string;
|
|
13346
|
+
}
|
|
13347
|
+
type Issue$2 = Scene3DSemanticIssue;
|
|
13348
|
+
/** An overlay is accepted iff the entity advertises the capability AND has not
|
|
13349
|
+
* frozen it. One rule, checked in exactly one place. */
|
|
13350
|
+
declare function scene3DEntityAcceptsOverlay(entity: Scene3DEntityV2, capability: Scene3DEntityCapability): boolean;
|
|
13351
|
+
/**
|
|
13352
|
+
* Every v2 rule that needs more than one field: timing, identity, hierarchy,
|
|
13353
|
+
* asset resolution and budgets, shot coverage, overlay ownership and locks.
|
|
13354
|
+
*
|
|
13355
|
+
* Split out of the schema's `superRefine` (exactly as v1 does) so a caller
|
|
13356
|
+
* holding an already-parsed plan can re-check it without re-parsing.
|
|
13357
|
+
*/
|
|
13358
|
+
declare function scene3DPlanV2Issues(plan: Scene3DPlanV2): Issue$2[];
|
|
13359
|
+
/**
|
|
13360
|
+
* The v2 object shape WITHOUT the cross-field pass. Exported so
|
|
13361
|
+
* `scene3DAnyPlanSchema` can discriminate on `schemaVersion`; parse with
|
|
13362
|
+
* `scene3DPlanV2Schema`.
|
|
13363
|
+
*
|
|
13364
|
+
* Deliberately free of `.default()`: `parse(x)` must deep-equal `x`, or a
|
|
13365
|
+
* producer hashing raw JSON and a consumer hashing parsed output would compute
|
|
13366
|
+
* different content hashes for the same revision.
|
|
13367
|
+
*/
|
|
13368
|
+
declare const scene3DPlanV2ObjectSchema: z.ZodObject<{
|
|
13369
|
+
planType: z.ZodLiteral<"3d-scene">;
|
|
13370
|
+
schemaVersion: z.ZodLiteral<2>;
|
|
13371
|
+
revisionId: z.ZodUUID;
|
|
13372
|
+
parentRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13373
|
+
width: z.ZodNumber;
|
|
13374
|
+
height: z.ZodNumber;
|
|
13375
|
+
fps: z.ZodNumber;
|
|
13376
|
+
durationInFrames: z.ZodNumber;
|
|
13377
|
+
units: z.ZodLiteral<"meters">;
|
|
13378
|
+
upAxis: z.ZodLiteral<"Y">;
|
|
13379
|
+
handedness: z.ZodLiteral<"right">;
|
|
13380
|
+
objects: z.ZodArray<z.ZodObject<{
|
|
13381
|
+
id: z.ZodString;
|
|
13382
|
+
name: z.ZodString;
|
|
13383
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
13384
|
+
role: z.ZodOptional<z.ZodEnum<{
|
|
13385
|
+
other: "other";
|
|
13386
|
+
person: "person";
|
|
13387
|
+
vehicle: "vehicle";
|
|
13388
|
+
prop: "prop";
|
|
13389
|
+
environment: "environment";
|
|
13390
|
+
}>>;
|
|
13391
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13392
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13393
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13394
|
+
identityColor: z.ZodOptional<z.ZodString>;
|
|
13395
|
+
anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13396
|
+
name: z.ZodString;
|
|
13397
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13398
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13399
|
+
}, z.core.$strict>>>;
|
|
13400
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
13401
|
+
transform: "transform";
|
|
13402
|
+
color: "color";
|
|
13403
|
+
visibility: "visibility";
|
|
13404
|
+
}>>>;
|
|
13405
|
+
locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
13406
|
+
transform: "transform";
|
|
13407
|
+
color: "color";
|
|
13408
|
+
visibility: "visibility";
|
|
13409
|
+
}>>>;
|
|
13410
|
+
materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13411
|
+
role: z.ZodString;
|
|
13412
|
+
materialName: z.ZodString;
|
|
13413
|
+
color: z.ZodOptional<z.ZodString>;
|
|
13414
|
+
roughness: z.ZodOptional<z.ZodNumber>;
|
|
13415
|
+
}, z.core.$strict>>>;
|
|
13416
|
+
visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13417
|
+
kind: z.ZodLiteral<"group">;
|
|
13418
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13419
|
+
kind: z.ZodLiteral<"primitive">;
|
|
13420
|
+
primitive: z.ZodEnum<{
|
|
13421
|
+
box: "box";
|
|
13422
|
+
sphere: "sphere";
|
|
13423
|
+
cylinder: "cylinder";
|
|
13424
|
+
cone: "cone";
|
|
13425
|
+
plane: "plane";
|
|
13426
|
+
capsule: "capsule";
|
|
13427
|
+
}>;
|
|
13428
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13429
|
+
color: z.ZodString;
|
|
13430
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13431
|
+
kind: z.ZodLiteral<"asset">;
|
|
13432
|
+
assetId: z.ZodString;
|
|
13433
|
+
rootNodeId: z.ZodString;
|
|
13434
|
+
animation: z.ZodOptional<z.ZodObject<{
|
|
13435
|
+
clipName: z.ZodString;
|
|
13436
|
+
startFrame: z.ZodNumber;
|
|
13437
|
+
endFrameExclusive: z.ZodNumber;
|
|
13438
|
+
loop: z.ZodOptional<z.ZodBoolean>;
|
|
13439
|
+
}, z.core.$strict>>;
|
|
13440
|
+
}, z.core.$strict>], "kind">;
|
|
13441
|
+
}, z.core.$strict>>;
|
|
13442
|
+
assets: z.ZodArray<z.ZodObject<{
|
|
13443
|
+
assetId: z.ZodString;
|
|
13444
|
+
kind: z.ZodEnum<{
|
|
13445
|
+
glb: "glb";
|
|
13446
|
+
"camera-track-json": "camera-track-json";
|
|
13447
|
+
poster: "poster";
|
|
13448
|
+
"validation-report": "validation-report";
|
|
13449
|
+
"blend-source": "blend-source";
|
|
13450
|
+
}>;
|
|
13451
|
+
role: z.ZodEnum<{
|
|
13452
|
+
source: "source";
|
|
13453
|
+
poster: "poster";
|
|
13454
|
+
"validation-report": "validation-report";
|
|
13455
|
+
"scene-geometry": "scene-geometry";
|
|
13456
|
+
"entity-geometry": "entity-geometry";
|
|
13457
|
+
"camera-track": "camera-track";
|
|
13458
|
+
}>;
|
|
13459
|
+
byteLength: z.ZodNumber;
|
|
13460
|
+
sha256: z.ZodString;
|
|
13461
|
+
originRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13462
|
+
}, z.core.$strict>>;
|
|
13463
|
+
cameraTrackAssetId: z.ZodString;
|
|
13464
|
+
shots: z.ZodArray<z.ZodObject<{
|
|
13465
|
+
id: z.ZodString;
|
|
13466
|
+
startFrame: z.ZodNumber;
|
|
13467
|
+
endFrameExclusive: z.ZodNumber;
|
|
13468
|
+
label: z.ZodOptional<z.ZodString>;
|
|
13469
|
+
subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13470
|
+
foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13471
|
+
}, z.core.$strict>>;
|
|
13472
|
+
lighting: z.ZodObject<{
|
|
13473
|
+
preset: z.ZodEnum<{
|
|
13474
|
+
"clay-studio-v1": "clay-studio-v1";
|
|
13475
|
+
}>;
|
|
13476
|
+
ambientIntensity: z.ZodNumber;
|
|
13477
|
+
keyIntensity: z.ZodNumber;
|
|
13478
|
+
keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13479
|
+
}, z.core.$strict>;
|
|
13480
|
+
backgroundColor: z.ZodString;
|
|
13481
|
+
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13482
|
+
id: z.ZodString;
|
|
13483
|
+
url: z.ZodString;
|
|
13484
|
+
kind: z.ZodEnum<{
|
|
13485
|
+
image: "image";
|
|
13486
|
+
video: "video";
|
|
13487
|
+
}>;
|
|
13488
|
+
role: z.ZodEnum<{
|
|
13489
|
+
motion: "motion";
|
|
13490
|
+
layout: "layout";
|
|
13491
|
+
appearance: "appearance";
|
|
13492
|
+
}>;
|
|
13493
|
+
objectId: z.ZodOptional<z.ZodString>;
|
|
13494
|
+
startSeconds: z.ZodOptional<z.ZodNumber>;
|
|
13495
|
+
endSeconds: z.ZodOptional<z.ZodNumber>;
|
|
13496
|
+
}, z.core.$strict>>>;
|
|
13497
|
+
overrides: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13498
|
+
kind: z.ZodLiteral<"entity-transform">;
|
|
13499
|
+
entityId: z.ZodString;
|
|
13500
|
+
space: z.ZodEnum<{
|
|
13501
|
+
local: "local";
|
|
13502
|
+
world: "world";
|
|
13503
|
+
}>;
|
|
13504
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13505
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13506
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13507
|
+
id: z.ZodString;
|
|
13508
|
+
sourceRevisionId: z.ZodUUID;
|
|
13509
|
+
sourceContentHash: z.ZodString;
|
|
13510
|
+
operationVersion: z.ZodNumber;
|
|
13511
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13512
|
+
kind: z.ZodLiteral<"entity-color">;
|
|
13513
|
+
entityId: z.ZodString;
|
|
13514
|
+
materialRole: z.ZodString;
|
|
13515
|
+
color: z.ZodString;
|
|
13516
|
+
id: z.ZodString;
|
|
13517
|
+
sourceRevisionId: z.ZodUUID;
|
|
13518
|
+
sourceContentHash: z.ZodString;
|
|
13519
|
+
operationVersion: z.ZodNumber;
|
|
13520
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13521
|
+
kind: z.ZodLiteral<"entity-visibility">;
|
|
13522
|
+
entityId: z.ZodString;
|
|
13523
|
+
visible: z.ZodBoolean;
|
|
13524
|
+
id: z.ZodString;
|
|
13525
|
+
sourceRevisionId: z.ZodUUID;
|
|
13526
|
+
sourceContentHash: z.ZodString;
|
|
13527
|
+
operationVersion: z.ZodNumber;
|
|
13528
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13529
|
+
kind: z.ZodLiteral<"camera-shot-offset">;
|
|
13530
|
+
shotId: z.ZodString;
|
|
13531
|
+
positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13532
|
+
targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13533
|
+
id: z.ZodString;
|
|
13534
|
+
sourceRevisionId: z.ZodUUID;
|
|
13535
|
+
sourceContentHash: z.ZodString;
|
|
13536
|
+
operationVersion: z.ZodNumber;
|
|
13537
|
+
}, z.core.$strict>], "kind">>>;
|
|
13538
|
+
provenance: z.ZodObject<{
|
|
13539
|
+
engine: z.ZodString;
|
|
13540
|
+
engineVersion: z.ZodString;
|
|
13541
|
+
recipeVersion: z.ZodString;
|
|
13542
|
+
compilerVersion: z.ZodString;
|
|
13543
|
+
exporterVersion: z.ZodString;
|
|
13544
|
+
rendererVersion: z.ZodString;
|
|
13545
|
+
sourceRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13546
|
+
sourceArtifactId: z.ZodOptional<z.ZodString>;
|
|
13547
|
+
contentHash: z.ZodString;
|
|
13548
|
+
}, z.core.$strict>;
|
|
13549
|
+
}, z.core.$strict>;
|
|
13550
|
+
/** THE v2 plan validator: structure first, then the cross-field rules. */
|
|
13551
|
+
declare const scene3DPlanV2Schema: z.ZodObject<{
|
|
13552
|
+
planType: z.ZodLiteral<"3d-scene">;
|
|
13553
|
+
schemaVersion: z.ZodLiteral<2>;
|
|
13554
|
+
revisionId: z.ZodUUID;
|
|
13555
|
+
parentRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13556
|
+
width: z.ZodNumber;
|
|
13557
|
+
height: z.ZodNumber;
|
|
13558
|
+
fps: z.ZodNumber;
|
|
13559
|
+
durationInFrames: z.ZodNumber;
|
|
13560
|
+
units: z.ZodLiteral<"meters">;
|
|
13561
|
+
upAxis: z.ZodLiteral<"Y">;
|
|
13562
|
+
handedness: z.ZodLiteral<"right">;
|
|
13563
|
+
objects: z.ZodArray<z.ZodObject<{
|
|
13564
|
+
id: z.ZodString;
|
|
13565
|
+
name: z.ZodString;
|
|
13566
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
13567
|
+
role: z.ZodOptional<z.ZodEnum<{
|
|
13568
|
+
other: "other";
|
|
13569
|
+
person: "person";
|
|
13570
|
+
vehicle: "vehicle";
|
|
13571
|
+
prop: "prop";
|
|
13572
|
+
environment: "environment";
|
|
13573
|
+
}>>;
|
|
13574
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13575
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13576
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13577
|
+
identityColor: z.ZodOptional<z.ZodString>;
|
|
13578
|
+
anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13579
|
+
name: z.ZodString;
|
|
13580
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13581
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13582
|
+
}, z.core.$strict>>>;
|
|
13583
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
13584
|
+
transform: "transform";
|
|
13585
|
+
color: "color";
|
|
13586
|
+
visibility: "visibility";
|
|
13587
|
+
}>>>;
|
|
13588
|
+
locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
13589
|
+
transform: "transform";
|
|
13590
|
+
color: "color";
|
|
13591
|
+
visibility: "visibility";
|
|
13592
|
+
}>>>;
|
|
13593
|
+
materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13594
|
+
role: z.ZodString;
|
|
13595
|
+
materialName: z.ZodString;
|
|
13596
|
+
color: z.ZodOptional<z.ZodString>;
|
|
13597
|
+
roughness: z.ZodOptional<z.ZodNumber>;
|
|
13598
|
+
}, z.core.$strict>>>;
|
|
13599
|
+
visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13600
|
+
kind: z.ZodLiteral<"group">;
|
|
13601
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13602
|
+
kind: z.ZodLiteral<"primitive">;
|
|
13603
|
+
primitive: z.ZodEnum<{
|
|
13604
|
+
box: "box";
|
|
13605
|
+
sphere: "sphere";
|
|
13606
|
+
cylinder: "cylinder";
|
|
13607
|
+
cone: "cone";
|
|
13608
|
+
plane: "plane";
|
|
13609
|
+
capsule: "capsule";
|
|
13610
|
+
}>;
|
|
13611
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13612
|
+
color: z.ZodString;
|
|
13613
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13614
|
+
kind: z.ZodLiteral<"asset">;
|
|
13615
|
+
assetId: z.ZodString;
|
|
13616
|
+
rootNodeId: z.ZodString;
|
|
13617
|
+
animation: z.ZodOptional<z.ZodObject<{
|
|
13618
|
+
clipName: z.ZodString;
|
|
13619
|
+
startFrame: z.ZodNumber;
|
|
13620
|
+
endFrameExclusive: z.ZodNumber;
|
|
13621
|
+
loop: z.ZodOptional<z.ZodBoolean>;
|
|
13622
|
+
}, z.core.$strict>>;
|
|
13623
|
+
}, z.core.$strict>], "kind">;
|
|
13624
|
+
}, z.core.$strict>>;
|
|
13625
|
+
assets: z.ZodArray<z.ZodObject<{
|
|
13626
|
+
assetId: z.ZodString;
|
|
13627
|
+
kind: z.ZodEnum<{
|
|
13628
|
+
glb: "glb";
|
|
13629
|
+
"camera-track-json": "camera-track-json";
|
|
13630
|
+
poster: "poster";
|
|
13631
|
+
"validation-report": "validation-report";
|
|
13632
|
+
"blend-source": "blend-source";
|
|
13633
|
+
}>;
|
|
13634
|
+
role: z.ZodEnum<{
|
|
13635
|
+
source: "source";
|
|
13636
|
+
poster: "poster";
|
|
13637
|
+
"validation-report": "validation-report";
|
|
13638
|
+
"scene-geometry": "scene-geometry";
|
|
13639
|
+
"entity-geometry": "entity-geometry";
|
|
13640
|
+
"camera-track": "camera-track";
|
|
13641
|
+
}>;
|
|
13642
|
+
byteLength: z.ZodNumber;
|
|
13643
|
+
sha256: z.ZodString;
|
|
13644
|
+
originRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13645
|
+
}, z.core.$strict>>;
|
|
13646
|
+
cameraTrackAssetId: z.ZodString;
|
|
13647
|
+
shots: z.ZodArray<z.ZodObject<{
|
|
13648
|
+
id: z.ZodString;
|
|
13649
|
+
startFrame: z.ZodNumber;
|
|
13650
|
+
endFrameExclusive: z.ZodNumber;
|
|
13651
|
+
label: z.ZodOptional<z.ZodString>;
|
|
13652
|
+
subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13653
|
+
foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13654
|
+
}, z.core.$strict>>;
|
|
13655
|
+
lighting: z.ZodObject<{
|
|
13656
|
+
preset: z.ZodEnum<{
|
|
13657
|
+
"clay-studio-v1": "clay-studio-v1";
|
|
13658
|
+
}>;
|
|
13659
|
+
ambientIntensity: z.ZodNumber;
|
|
13660
|
+
keyIntensity: z.ZodNumber;
|
|
13661
|
+
keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13662
|
+
}, z.core.$strict>;
|
|
13663
|
+
backgroundColor: z.ZodString;
|
|
13664
|
+
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13665
|
+
id: z.ZodString;
|
|
13666
|
+
url: z.ZodString;
|
|
13667
|
+
kind: z.ZodEnum<{
|
|
13668
|
+
image: "image";
|
|
13669
|
+
video: "video";
|
|
13670
|
+
}>;
|
|
13671
|
+
role: z.ZodEnum<{
|
|
13672
|
+
motion: "motion";
|
|
13673
|
+
layout: "layout";
|
|
13674
|
+
appearance: "appearance";
|
|
13675
|
+
}>;
|
|
13676
|
+
objectId: z.ZodOptional<z.ZodString>;
|
|
13677
|
+
startSeconds: z.ZodOptional<z.ZodNumber>;
|
|
13678
|
+
endSeconds: z.ZodOptional<z.ZodNumber>;
|
|
13679
|
+
}, z.core.$strict>>>;
|
|
13680
|
+
overrides: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13681
|
+
kind: z.ZodLiteral<"entity-transform">;
|
|
13682
|
+
entityId: z.ZodString;
|
|
13683
|
+
space: z.ZodEnum<{
|
|
13684
|
+
local: "local";
|
|
13685
|
+
world: "world";
|
|
13686
|
+
}>;
|
|
13687
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13688
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13689
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13690
|
+
id: z.ZodString;
|
|
13691
|
+
sourceRevisionId: z.ZodUUID;
|
|
13692
|
+
sourceContentHash: z.ZodString;
|
|
13693
|
+
operationVersion: z.ZodNumber;
|
|
13694
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13695
|
+
kind: z.ZodLiteral<"entity-color">;
|
|
13696
|
+
entityId: z.ZodString;
|
|
13697
|
+
materialRole: z.ZodString;
|
|
13698
|
+
color: z.ZodString;
|
|
13699
|
+
id: z.ZodString;
|
|
13700
|
+
sourceRevisionId: z.ZodUUID;
|
|
13701
|
+
sourceContentHash: z.ZodString;
|
|
13702
|
+
operationVersion: z.ZodNumber;
|
|
13703
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13704
|
+
kind: z.ZodLiteral<"entity-visibility">;
|
|
13705
|
+
entityId: z.ZodString;
|
|
13706
|
+
visible: z.ZodBoolean;
|
|
13707
|
+
id: z.ZodString;
|
|
13708
|
+
sourceRevisionId: z.ZodUUID;
|
|
13709
|
+
sourceContentHash: z.ZodString;
|
|
13710
|
+
operationVersion: z.ZodNumber;
|
|
13711
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13712
|
+
kind: z.ZodLiteral<"camera-shot-offset">;
|
|
13713
|
+
shotId: z.ZodString;
|
|
13714
|
+
positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13715
|
+
targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13716
|
+
id: z.ZodString;
|
|
13717
|
+
sourceRevisionId: z.ZodUUID;
|
|
13718
|
+
sourceContentHash: z.ZodString;
|
|
13719
|
+
operationVersion: z.ZodNumber;
|
|
13720
|
+
}, z.core.$strict>], "kind">>>;
|
|
13721
|
+
provenance: z.ZodObject<{
|
|
13722
|
+
engine: z.ZodString;
|
|
13723
|
+
engineVersion: z.ZodString;
|
|
13724
|
+
recipeVersion: z.ZodString;
|
|
13725
|
+
compilerVersion: z.ZodString;
|
|
13726
|
+
exporterVersion: z.ZodString;
|
|
13727
|
+
rendererVersion: z.ZodString;
|
|
13728
|
+
sourceRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13729
|
+
sourceArtifactId: z.ZodOptional<z.ZodString>;
|
|
13730
|
+
contentHash: z.ZodString;
|
|
13731
|
+
}, z.core.$strict>;
|
|
13732
|
+
}, z.core.$strict>;
|
|
13733
|
+
/**
|
|
13734
|
+
* Either version, discriminated on `schemaVersion` — so an unknown version
|
|
13735
|
+
* reports "Invalid discriminator value. Expected '1' | '2'" instead of a pile
|
|
13736
|
+
* of unknown-key errors from whichever branch failed last.
|
|
13737
|
+
*/
|
|
13738
|
+
declare const scene3DAnyPlanSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13739
|
+
planType: z.ZodLiteral<"3d-scene">;
|
|
13740
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
13741
|
+
revisionId: z.ZodUUID;
|
|
13742
|
+
parentRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13743
|
+
width: z.ZodNumber;
|
|
13744
|
+
height: z.ZodNumber;
|
|
13745
|
+
fps: z.ZodNumber;
|
|
13746
|
+
durationInFrames: z.ZodNumber;
|
|
13747
|
+
backgroundColor: z.ZodString;
|
|
13748
|
+
camera: z.ZodObject<{
|
|
13749
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13750
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13751
|
+
focalLengthMm: z.ZodNumber;
|
|
13752
|
+
sensorWidthMm: z.ZodDefault<z.ZodNumber>;
|
|
13753
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13754
|
+
frame: z.ZodNumber;
|
|
13755
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13756
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13757
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
13758
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
13759
|
+
linear: "linear";
|
|
13760
|
+
easeInOut: "easeInOut";
|
|
13761
|
+
}>>;
|
|
13762
|
+
}, z.core.$strict>>>;
|
|
13763
|
+
}, z.core.$strict>;
|
|
13764
|
+
objects: z.ZodArray<z.ZodObject<{
|
|
13765
|
+
id: z.ZodString;
|
|
13766
|
+
name: z.ZodString;
|
|
13767
|
+
primitive: z.ZodEnum<{
|
|
13768
|
+
group: "group";
|
|
13769
|
+
box: "box";
|
|
13770
|
+
sphere: "sphere";
|
|
13771
|
+
cylinder: "cylinder";
|
|
13772
|
+
cone: "cone";
|
|
13773
|
+
plane: "plane";
|
|
13774
|
+
capsule: "capsule";
|
|
13775
|
+
}>;
|
|
13776
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
13777
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13778
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13779
|
+
rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13780
|
+
scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13781
|
+
color: z.ZodString;
|
|
13782
|
+
keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13783
|
+
frame: z.ZodNumber;
|
|
13784
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13785
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13786
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13787
|
+
easing: z.ZodOptional<z.ZodEnum<{
|
|
13788
|
+
linear: "linear";
|
|
13789
|
+
easeInOut: "easeInOut";
|
|
13790
|
+
}>>;
|
|
13791
|
+
}, z.core.$strict>>>;
|
|
13792
|
+
}, z.core.$strict>>;
|
|
13793
|
+
lighting: z.ZodObject<{
|
|
13794
|
+
ambientIntensity: z.ZodNumber;
|
|
13795
|
+
keyIntensity: z.ZodNumber;
|
|
13796
|
+
keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13797
|
+
}, z.core.$strict>;
|
|
13798
|
+
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13799
|
+
id: z.ZodString;
|
|
13800
|
+
url: z.ZodString;
|
|
13801
|
+
kind: z.ZodEnum<{
|
|
13802
|
+
image: "image";
|
|
13803
|
+
video: "video";
|
|
13804
|
+
}>;
|
|
13805
|
+
role: z.ZodEnum<{
|
|
13806
|
+
motion: "motion";
|
|
13807
|
+
layout: "layout";
|
|
13808
|
+
appearance: "appearance";
|
|
13809
|
+
}>;
|
|
13810
|
+
objectId: z.ZodOptional<z.ZodString>;
|
|
13811
|
+
startSeconds: z.ZodOptional<z.ZodNumber>;
|
|
13812
|
+
endSeconds: z.ZodOptional<z.ZodNumber>;
|
|
13813
|
+
}, z.core.$strict>>>;
|
|
13814
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13815
|
+
planType: z.ZodLiteral<"3d-scene">;
|
|
13816
|
+
schemaVersion: z.ZodLiteral<2>;
|
|
13817
|
+
revisionId: z.ZodUUID;
|
|
13818
|
+
parentRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13819
|
+
width: z.ZodNumber;
|
|
13820
|
+
height: z.ZodNumber;
|
|
13821
|
+
fps: z.ZodNumber;
|
|
13822
|
+
durationInFrames: z.ZodNumber;
|
|
13823
|
+
units: z.ZodLiteral<"meters">;
|
|
13824
|
+
upAxis: z.ZodLiteral<"Y">;
|
|
13825
|
+
handedness: z.ZodLiteral<"right">;
|
|
13826
|
+
objects: z.ZodArray<z.ZodObject<{
|
|
13827
|
+
id: z.ZodString;
|
|
13828
|
+
name: z.ZodString;
|
|
13829
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
13830
|
+
role: z.ZodOptional<z.ZodEnum<{
|
|
13831
|
+
other: "other";
|
|
13832
|
+
person: "person";
|
|
13833
|
+
vehicle: "vehicle";
|
|
13834
|
+
prop: "prop";
|
|
13835
|
+
environment: "environment";
|
|
13836
|
+
}>>;
|
|
13837
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13838
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13839
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13840
|
+
identityColor: z.ZodOptional<z.ZodString>;
|
|
13841
|
+
anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13842
|
+
name: z.ZodString;
|
|
13843
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13844
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13845
|
+
}, z.core.$strict>>>;
|
|
13846
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
13847
|
+
transform: "transform";
|
|
13848
|
+
color: "color";
|
|
13849
|
+
visibility: "visibility";
|
|
13850
|
+
}>>>;
|
|
13851
|
+
locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
13852
|
+
transform: "transform";
|
|
13853
|
+
color: "color";
|
|
13854
|
+
visibility: "visibility";
|
|
13855
|
+
}>>>;
|
|
13856
|
+
materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13857
|
+
role: z.ZodString;
|
|
13858
|
+
materialName: z.ZodString;
|
|
13859
|
+
color: z.ZodOptional<z.ZodString>;
|
|
13860
|
+
roughness: z.ZodOptional<z.ZodNumber>;
|
|
13861
|
+
}, z.core.$strict>>>;
|
|
13862
|
+
visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13863
|
+
kind: z.ZodLiteral<"group">;
|
|
13864
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13865
|
+
kind: z.ZodLiteral<"primitive">;
|
|
13866
|
+
primitive: z.ZodEnum<{
|
|
13867
|
+
box: "box";
|
|
13868
|
+
sphere: "sphere";
|
|
13869
|
+
cylinder: "cylinder";
|
|
13870
|
+
cone: "cone";
|
|
13871
|
+
plane: "plane";
|
|
13872
|
+
capsule: "capsule";
|
|
13873
|
+
}>;
|
|
13874
|
+
dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13875
|
+
color: z.ZodString;
|
|
13876
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13877
|
+
kind: z.ZodLiteral<"asset">;
|
|
13878
|
+
assetId: z.ZodString;
|
|
13879
|
+
rootNodeId: z.ZodString;
|
|
13880
|
+
animation: z.ZodOptional<z.ZodObject<{
|
|
13881
|
+
clipName: z.ZodString;
|
|
13882
|
+
startFrame: z.ZodNumber;
|
|
13883
|
+
endFrameExclusive: z.ZodNumber;
|
|
13884
|
+
loop: z.ZodOptional<z.ZodBoolean>;
|
|
13885
|
+
}, z.core.$strict>>;
|
|
13886
|
+
}, z.core.$strict>], "kind">;
|
|
13887
|
+
}, z.core.$strict>>;
|
|
13888
|
+
assets: z.ZodArray<z.ZodObject<{
|
|
13889
|
+
assetId: z.ZodString;
|
|
13890
|
+
kind: z.ZodEnum<{
|
|
13891
|
+
glb: "glb";
|
|
13892
|
+
"camera-track-json": "camera-track-json";
|
|
13893
|
+
poster: "poster";
|
|
13894
|
+
"validation-report": "validation-report";
|
|
13895
|
+
"blend-source": "blend-source";
|
|
13896
|
+
}>;
|
|
13897
|
+
role: z.ZodEnum<{
|
|
13898
|
+
source: "source";
|
|
13899
|
+
poster: "poster";
|
|
13900
|
+
"validation-report": "validation-report";
|
|
13901
|
+
"scene-geometry": "scene-geometry";
|
|
13902
|
+
"entity-geometry": "entity-geometry";
|
|
13903
|
+
"camera-track": "camera-track";
|
|
13904
|
+
}>;
|
|
13905
|
+
byteLength: z.ZodNumber;
|
|
13906
|
+
sha256: z.ZodString;
|
|
13907
|
+
originRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13908
|
+
}, z.core.$strict>>;
|
|
13909
|
+
cameraTrackAssetId: z.ZodString;
|
|
13910
|
+
shots: z.ZodArray<z.ZodObject<{
|
|
13911
|
+
id: z.ZodString;
|
|
13912
|
+
startFrame: z.ZodNumber;
|
|
13913
|
+
endFrameExclusive: z.ZodNumber;
|
|
13914
|
+
label: z.ZodOptional<z.ZodString>;
|
|
13915
|
+
subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13916
|
+
foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13917
|
+
}, z.core.$strict>>;
|
|
13918
|
+
lighting: z.ZodObject<{
|
|
13919
|
+
preset: z.ZodEnum<{
|
|
13920
|
+
"clay-studio-v1": "clay-studio-v1";
|
|
13921
|
+
}>;
|
|
13922
|
+
ambientIntensity: z.ZodNumber;
|
|
13923
|
+
keyIntensity: z.ZodNumber;
|
|
13924
|
+
keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
13925
|
+
}, z.core.$strict>;
|
|
13926
|
+
backgroundColor: z.ZodString;
|
|
13927
|
+
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13928
|
+
id: z.ZodString;
|
|
13929
|
+
url: z.ZodString;
|
|
13930
|
+
kind: z.ZodEnum<{
|
|
13931
|
+
image: "image";
|
|
13932
|
+
video: "video";
|
|
13933
|
+
}>;
|
|
13934
|
+
role: z.ZodEnum<{
|
|
13935
|
+
motion: "motion";
|
|
13936
|
+
layout: "layout";
|
|
13937
|
+
appearance: "appearance";
|
|
13938
|
+
}>;
|
|
13939
|
+
objectId: z.ZodOptional<z.ZodString>;
|
|
13940
|
+
startSeconds: z.ZodOptional<z.ZodNumber>;
|
|
13941
|
+
endSeconds: z.ZodOptional<z.ZodNumber>;
|
|
13942
|
+
}, z.core.$strict>>>;
|
|
13943
|
+
overrides: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
13944
|
+
kind: z.ZodLiteral<"entity-transform">;
|
|
13945
|
+
entityId: z.ZodString;
|
|
13946
|
+
space: z.ZodEnum<{
|
|
13947
|
+
local: "local";
|
|
13948
|
+
world: "world";
|
|
13949
|
+
}>;
|
|
13950
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13951
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13952
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13953
|
+
id: z.ZodString;
|
|
13954
|
+
sourceRevisionId: z.ZodUUID;
|
|
13955
|
+
sourceContentHash: z.ZodString;
|
|
13956
|
+
operationVersion: z.ZodNumber;
|
|
13957
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13958
|
+
kind: z.ZodLiteral<"entity-color">;
|
|
13959
|
+
entityId: z.ZodString;
|
|
13960
|
+
materialRole: z.ZodString;
|
|
13961
|
+
color: z.ZodString;
|
|
13962
|
+
id: z.ZodString;
|
|
13963
|
+
sourceRevisionId: z.ZodUUID;
|
|
13964
|
+
sourceContentHash: z.ZodString;
|
|
13965
|
+
operationVersion: z.ZodNumber;
|
|
13966
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13967
|
+
kind: z.ZodLiteral<"entity-visibility">;
|
|
13968
|
+
entityId: z.ZodString;
|
|
13969
|
+
visible: z.ZodBoolean;
|
|
13970
|
+
id: z.ZodString;
|
|
13971
|
+
sourceRevisionId: z.ZodUUID;
|
|
13972
|
+
sourceContentHash: z.ZodString;
|
|
13973
|
+
operationVersion: z.ZodNumber;
|
|
13974
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13975
|
+
kind: z.ZodLiteral<"camera-shot-offset">;
|
|
13976
|
+
shotId: z.ZodString;
|
|
13977
|
+
positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13978
|
+
targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
13979
|
+
id: z.ZodString;
|
|
13980
|
+
sourceRevisionId: z.ZodUUID;
|
|
13981
|
+
sourceContentHash: z.ZodString;
|
|
13982
|
+
operationVersion: z.ZodNumber;
|
|
13983
|
+
}, z.core.$strict>], "kind">>>;
|
|
13984
|
+
provenance: z.ZodObject<{
|
|
13985
|
+
engine: z.ZodString;
|
|
13986
|
+
engineVersion: z.ZodString;
|
|
13987
|
+
recipeVersion: z.ZodString;
|
|
13988
|
+
compilerVersion: z.ZodString;
|
|
13989
|
+
exporterVersion: z.ZodString;
|
|
13990
|
+
rendererVersion: z.ZodString;
|
|
13991
|
+
sourceRevisionId: z.ZodOptional<z.ZodUUID>;
|
|
13992
|
+
sourceArtifactId: z.ZodOptional<z.ZodString>;
|
|
13993
|
+
contentHash: z.ZodString;
|
|
13994
|
+
}, z.core.$strict>;
|
|
13995
|
+
}, z.core.$strict>], "schemaVersion">;
|
|
13996
|
+
/** Zod for a client's `acceptedSceneSchemaVersions`. */
|
|
13997
|
+
declare const scene3DAcceptedSchemaVersionsSchema: z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
|
|
13998
|
+
declare function isScene3DPlanV2(value: unknown): value is Scene3DPlanV2;
|
|
13999
|
+
/** Accepts EITHER version. `isScene3DPlanV1` (in `scene3d.ts`) is the v1-only
|
|
14000
|
+
* form; narrow with one of them before reading version-specific fields. */
|
|
14001
|
+
declare function isScene3DPlan(value: unknown): value is Scene3DPlan;
|
|
14002
|
+
/**
|
|
14003
|
+
* The schema version a value CLAIMS, without validating the rest of it.
|
|
14004
|
+
*
|
|
14005
|
+
* Returns the number even when this package cannot handle it, so an SDK
|
|
14006
|
+
* consumer can say "this scene is v3, upgrade to render it" instead of "invalid
|
|
14007
|
+
* plan". `null` means it is not a Scene3D plan at all.
|
|
14008
|
+
*/
|
|
14009
|
+
declare function scene3DPlanSchemaVersion(value: unknown): number | null;
|
|
14010
|
+
declare function isScene3DSchemaVersionSupported(version: number): version is Scene3DSupportedSchemaVersion;
|
|
14011
|
+
declare function isKnownScene3DEngine(engine: string): engine is Scene3DKnownEngine;
|
|
14012
|
+
/**
|
|
14013
|
+
* The shot owning `frame`, or `-1`. Ranges are half-open and contiguous, so
|
|
14014
|
+
* this is total over `[0, durationInFrames)` on a validated plan — and it is
|
|
14015
|
+
* the ONLY place a renderer decides which side of a cut a frame is on.
|
|
14016
|
+
*/
|
|
14017
|
+
declare function scene3DShotIndexForFrame(shots: readonly Scene3DShot[], frame: number): number;
|
|
14018
|
+
declare function scene3DShotForFrame(shots: readonly Scene3DShot[], frame: number): Scene3DShot | undefined;
|
|
14019
|
+
|
|
14020
|
+
/**
|
|
14021
|
+
* Scene3D v2 resource admission and revision identity.
|
|
14022
|
+
*
|
|
14023
|
+
* Two gates and one hash, all of which have to agree across the builder, the
|
|
14024
|
+
* platform route and the renderer — so they live in one published place instead
|
|
14025
|
+
* of being re-derived three times.
|
|
14026
|
+
*
|
|
14027
|
+
* **Pre-allocation gate** (`scene3DV2AdmissionIssues`). Everything checkable
|
|
14028
|
+
* from the manifest alone, BEFORE a byte is fetched or a decoder is handed
|
|
14029
|
+
* anything: declared asset sizes, counts, timeline length, hierarchy depth, and
|
|
14030
|
+
* the decoded size of the manifest itself. A limit enforced after the download
|
|
14031
|
+
* is not a limit.
|
|
14032
|
+
*
|
|
14033
|
+
* **Post-decode gate** (`scene3DV2NormalizationIssues`). What only the actual
|
|
14034
|
+
* bytes can answer: real length versus declared, digest versus declared,
|
|
14035
|
+
* triangles, mesh nodes, node depth, image dimensions. A 2 MiB GLB can decode
|
|
14036
|
+
* to a hundred million triangles, so compression never waives a geometry
|
|
14037
|
+
* budget.
|
|
14038
|
+
*
|
|
14039
|
+
* **Content hash.** The canonical form of a revision, which is what makes
|
|
14040
|
+
* "these two revisions are the same scene" a decidable question — for
|
|
14041
|
+
* content-addressed caching, and for asserting after a rebuild that the entities
|
|
14042
|
+
* the user locked really did come back unchanged.
|
|
14043
|
+
*/
|
|
14044
|
+
|
|
14045
|
+
type Issue$1 = Scene3DSemanticIssue;
|
|
14046
|
+
interface Scene3DV2ResourceUsage {
|
|
14047
|
+
entities: number;
|
|
14048
|
+
assets: number;
|
|
14049
|
+
shots: number;
|
|
14050
|
+
overrides: number;
|
|
14051
|
+
references: number;
|
|
14052
|
+
frames: number;
|
|
14053
|
+
durationSeconds: number;
|
|
14054
|
+
/** Deepest entity parent chain, 1 for a flat scene. */
|
|
14055
|
+
hierarchyDepth: number;
|
|
14056
|
+
/** Declared bytes of everything the browser downloads. */
|
|
14057
|
+
rendererAssetBytes: number;
|
|
14058
|
+
/** Declared bytes of the camera sidecar. */
|
|
14059
|
+
cameraTrackBytes: number;
|
|
14060
|
+
/** Declared bytes of the retained native source, which the browser never sees. */
|
|
14061
|
+
blendSourceBytes: number;
|
|
14062
|
+
}
|
|
14063
|
+
/** Deepest parent chain, counting the entity itself. Bounded by the entity
|
|
14064
|
+
* count even on a cyclic plan, so it is safe to call before validation. */
|
|
14065
|
+
declare function scene3DV2HierarchyDepth(entities: readonly Scene3DEntityV2[]): number;
|
|
14066
|
+
/** What this manifest CLAIMS it will cost. Also the shape a capabilities or
|
|
14067
|
+
* quote surface displays — it is derived, never authored. */
|
|
14068
|
+
declare function scene3DV2ResourceUsage(plan: Scene3DPlanV2): Scene3DV2ResourceUsage;
|
|
14069
|
+
/**
|
|
14070
|
+
* The pre-allocation gate. `manifestBytes` is the DECODED size of the manifest
|
|
14071
|
+
* as it arrived — pass it when admitting a downloaded manifest, omit it when
|
|
14072
|
+
* the plan is already in memory.
|
|
14073
|
+
*
|
|
14074
|
+
* Most of these are also enforced by `scene3DPlanV2Schema`; this function is
|
|
14075
|
+
* what a caller runs when it wants the budget answer without re-parsing, and
|
|
14076
|
+
* what makes the ceilings quotable in one place by capabilities and docs.
|
|
14077
|
+
*/
|
|
14078
|
+
declare function scene3DV2AdmissionIssues(plan: Scene3DPlanV2, manifestBytes?: number): Issue$1[];
|
|
14079
|
+
/**
|
|
14080
|
+
* What the normalizer measured on the ACTUAL bytes of one asset. Optional
|
|
14081
|
+
* fields are "not applicable to this kind" — a poster has image dimensions and
|
|
14082
|
+
* no triangles; a GLB is the other way round.
|
|
14083
|
+
*/
|
|
14084
|
+
interface Scene3DNormalizedAssetStats {
|
|
14085
|
+
assetId: string;
|
|
14086
|
+
kind: Scene3DAssetKind;
|
|
14087
|
+
/** Decoded length, after any transport compression. */
|
|
14088
|
+
byteLength: number;
|
|
14089
|
+
/** Digest of the decoded bytes, lowercase hex, when computed. */
|
|
14090
|
+
sha256?: string;
|
|
14091
|
+
meshNodes?: number;
|
|
14092
|
+
triangles?: number;
|
|
14093
|
+
/** Deepest node chain inside the asset's own scene graph. */
|
|
14094
|
+
maxNodeDepth?: number;
|
|
14095
|
+
imageWidth?: number;
|
|
14096
|
+
imageHeight?: number;
|
|
14097
|
+
}
|
|
14098
|
+
/**
|
|
14099
|
+
* The post-decode gate: does what arrived match what the manifest promised, and
|
|
14100
|
+
* does the resolved geometry fit the budget?
|
|
14101
|
+
*
|
|
14102
|
+
* Mesh nodes and triangles are summed ACROSS assets — the ceiling is on the
|
|
14103
|
+
* scene the renderer assembles, not on any single file.
|
|
14104
|
+
*/
|
|
14105
|
+
declare function scene3DV2NormalizationIssues(plan: Scene3DPlanV2, stats: readonly Scene3DNormalizedAssetStats[]): Issue$1[];
|
|
14106
|
+
/** Size-gate on the bytes, then parse, then the full v2 schema. Refuses an
|
|
14107
|
+
* oversized manifest before `JSON.parse` allocates it. */
|
|
14108
|
+
declare function parseScene3DPlanV2Json(text: string): Scene3DParseResult<Scene3DPlanV2>;
|
|
14109
|
+
/**
|
|
14110
|
+
* Fields excluded from the canonical form.
|
|
14111
|
+
*
|
|
14112
|
+
* `revisionId`/`parentRevisionId` are IDENTITY, not content: two revisions with
|
|
14113
|
+
* the same scene must hash the same, or a content-addressed cache never hits
|
|
14114
|
+
* and "did the rebuild preserve the locked entities?" cannot be answered by
|
|
14115
|
+
* comparing hashes. `provenance.contentHash` is excluded because a value cannot
|
|
14116
|
+
* contain its own hash.
|
|
14117
|
+
*
|
|
14118
|
+
* Everything else is in — entities, anchors, material bindings, overrides, asset
|
|
14119
|
+
* digests, shots, lighting, provenance versions.
|
|
14120
|
+
*/
|
|
14121
|
+
declare const SCENE3D_V2_CONTENT_HASH_EXCLUDED: readonly ["revisionId", "parentRevisionId"];
|
|
14122
|
+
/**
|
|
14123
|
+
* The exact bytes a revision's content hash is computed over: recursively
|
|
14124
|
+
* key-sorted JSON with the identity fields removed. Key order in the input
|
|
14125
|
+
* cannot change the result, so a manifest that survives a round-trip through a
|
|
14126
|
+
* database or a re-serialization still hashes the same.
|
|
14127
|
+
*/
|
|
14128
|
+
declare function canonicalScene3DPlanV2Json(plan: Scene3DPlanV2): string;
|
|
14129
|
+
/**
|
|
14130
|
+
* SHA-256 of the canonical form, lowercase hex — the value that belongs in
|
|
14131
|
+
* `provenance.contentHash`. Uses WebCrypto, which the browser, Node 18+ and the
|
|
14132
|
+
* Remotion renderer all expose, so producer and consumer compute it the same
|
|
14133
|
+
* way.
|
|
14134
|
+
*/
|
|
14135
|
+
declare function computeScene3DPlanV2ContentHash(plan: Scene3DPlanV2): Promise<string>;
|
|
14136
|
+
/** Does the manifest's declared `provenance.contentHash` match its content? */
|
|
14137
|
+
declare function verifyScene3DPlanV2ContentHash(plan: Scene3DPlanV2): Promise<boolean>;
|
|
14138
|
+
|
|
14139
|
+
/**
|
|
14140
|
+
* The Scene3D v2 camera sidecar — one baked sample per frame.
|
|
14141
|
+
*
|
|
14142
|
+
* A 30-second scene is 720 camera samples. V1's 240-keyframe interpolated track
|
|
14143
|
+
* cannot carry that, and interpolating a sparse track across a hard cut blends
|
|
14144
|
+
* two shots into a frame that belongs to neither. So v2 moves the camera out of
|
|
14145
|
+
* the manifest into this dense JSON asset, and the rule becomes trivial:
|
|
14146
|
+
*
|
|
14147
|
+
* **at integer frame `f`, use `samples[f]`.**
|
|
14148
|
+
*
|
|
14149
|
+
* No interpolation, no easing, no "nearest key". Pausing, scrubbing backwards
|
|
14150
|
+
* and rendering frames out of order therefore produce identical state, which is
|
|
14151
|
+
* the whole reason preview and export can be trusted to agree.
|
|
14152
|
+
*
|
|
14153
|
+
* Two things this format refuses to guess at:
|
|
14154
|
+
*
|
|
14155
|
+
* - **Orientation is a quaternion, not a look-at.** A renderer that replaces the
|
|
14156
|
+
* exported quaternion with `lookAt(target)` throws away the authored roll and
|
|
14157
|
+
* the handheld component. `target` is carried for inspection and intent only.
|
|
14158
|
+
* - **Projection is a matrix, not a lens number.** A focal length cannot express
|
|
14159
|
+
* sensor fit or lens shift, and re-deriving a projection at a different aspect
|
|
14160
|
+
* silently reframes every shot. `focalLengthMm` is metadata; the 16-element
|
|
14161
|
+
* column-major matrix is authoritative.
|
|
14162
|
+
*
|
|
14163
|
+
* Changing fps or aspect ratio is an explicit resample/reprojection producing a
|
|
14164
|
+
* NEW revision — never a render-time override. `scene3DCameraTrackPlanIssues`
|
|
14165
|
+
* is what makes that non-negotiable.
|
|
14166
|
+
*/
|
|
14167
|
+
|
|
14168
|
+
declare const SCENE3D_CAMERA_TRACK_FORMAT = "scene3d-camera-track";
|
|
14169
|
+
declare const SCENE3D_CAMERA_TRACK_VERSION = 1;
|
|
14170
|
+
declare const SCENE3D_CAMERA_TRACK_LIMITS: {
|
|
14171
|
+
readonly maxJsonBytes: number;
|
|
14172
|
+
readonly maxFrameCount: 3600;
|
|
14173
|
+
readonly minFps: 15;
|
|
14174
|
+
readonly maxFps: 60;
|
|
14175
|
+
/** A unit quaternion off by more than this is a bug, not float noise. */
|
|
14176
|
+
readonly quaternionTolerance: 0.0001;
|
|
14177
|
+
/** Absolute tolerance on the projection entries that must be exactly zero
|
|
14178
|
+
* (or exactly ∓1) in a perspective matrix. */
|
|
14179
|
+
readonly projectionEpsilon: 0.000001;
|
|
14180
|
+
/** Relative tolerance when comparing declared near/far against the values the
|
|
14181
|
+
* projection matrix implies. */
|
|
14182
|
+
readonly nearFarRelativeTolerance: 0.001;
|
|
14183
|
+
/** Relative tolerance on `m[0]/m[5]` vs the manifest's `height/width`. */
|
|
14184
|
+
readonly aspectRelativeTolerance: 0.001;
|
|
14185
|
+
readonly minNear: 0.0001;
|
|
14186
|
+
readonly maxFar: 10000000;
|
|
14187
|
+
};
|
|
14188
|
+
interface Scene3DCameraSample {
|
|
14189
|
+
position: Vec3;
|
|
14190
|
+
/** `[x, y, z, w]` — that order, normalized. */
|
|
14191
|
+
quaternion: [number, number, number, number];
|
|
14192
|
+
/** Exactly 16 entries, COLUMN-MAJOR (Three.js `Matrix4.elements` order). */
|
|
14193
|
+
projectionMatrix: number[];
|
|
14194
|
+
near: number;
|
|
14195
|
+
far: number;
|
|
14196
|
+
/** Authoring intent, for inspection and validation reporting. A renderer must
|
|
14197
|
+
* never feed this back through `lookAt()`. */
|
|
14198
|
+
target?: Vec3;
|
|
14199
|
+
/** Metadata only; the projection matrix wins. */
|
|
14200
|
+
focalLengthMm?: number;
|
|
14201
|
+
}
|
|
14202
|
+
interface Scene3DCameraTrackV1 {
|
|
14203
|
+
format: typeof SCENE3D_CAMERA_TRACK_FORMAT;
|
|
14204
|
+
version: typeof SCENE3D_CAMERA_TRACK_VERSION;
|
|
14205
|
+
/** Always 0: public frames are zero-based, and the exporter has already
|
|
14206
|
+
* subtracted the authoring package's start frame. */
|
|
14207
|
+
frameStart: 0;
|
|
14208
|
+
frameCount: number;
|
|
14209
|
+
fps: number;
|
|
14210
|
+
samples: Scene3DCameraSample[];
|
|
14211
|
+
}
|
|
14212
|
+
declare const scene3DCameraSampleSchema: z.ZodObject<{
|
|
14213
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
14214
|
+
quaternion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
14215
|
+
projectionMatrix: z.ZodArray<z.ZodNumber>;
|
|
14216
|
+
near: z.ZodNumber;
|
|
14217
|
+
far: z.ZodNumber;
|
|
14218
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14219
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
14220
|
+
}, z.core.$strict>;
|
|
14221
|
+
/** Structure only; `scene3DCameraTrackIssues` carries the numeric rules. */
|
|
14222
|
+
declare const scene3DCameraTrackObjectSchema: z.ZodObject<{
|
|
14223
|
+
format: z.ZodLiteral<"scene3d-camera-track">;
|
|
14224
|
+
version: z.ZodLiteral<1>;
|
|
14225
|
+
frameStart: z.ZodLiteral<0>;
|
|
14226
|
+
frameCount: z.ZodNumber;
|
|
14227
|
+
fps: z.ZodNumber;
|
|
14228
|
+
samples: z.ZodArray<z.ZodObject<{
|
|
14229
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
14230
|
+
quaternion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
14231
|
+
projectionMatrix: z.ZodArray<z.ZodNumber>;
|
|
14232
|
+
near: z.ZodNumber;
|
|
14233
|
+
far: z.ZodNumber;
|
|
14234
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14235
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
14236
|
+
}, z.core.$strict>>;
|
|
14237
|
+
}, z.core.$strict>;
|
|
14238
|
+
type Issue = Scene3DSemanticIssue;
|
|
14239
|
+
/**
|
|
14240
|
+
* Is this a real PERSPECTIVE projection, and does it agree with the declared
|
|
14241
|
+
* near/far?
|
|
14242
|
+
*
|
|
14243
|
+
* Column-major layout produced by every Three.js/glTF perspective camera:
|
|
14244
|
+
*
|
|
14245
|
+
* ```text
|
|
14246
|
+
* m0 0 m8 0
|
|
14247
|
+
* 0 m5 m9 0
|
|
14248
|
+
* 0 0 m10 m14
|
|
14249
|
+
* 0 0 -1 0
|
|
14250
|
+
* ```
|
|
14251
|
+
*
|
|
14252
|
+
* `m8`/`m9` carry lens shift and are free. Everything else is pinned. Inverting
|
|
14253
|
+
* the two depth terms recovers `near = m14 / (m10 - 1)` and
|
|
14254
|
+
* `far = m14 / (m10 + 1)`, which is how a matrix that quietly disagrees with its
|
|
14255
|
+
* own declared clip planes gets caught.
|
|
14256
|
+
*
|
|
14257
|
+
* Exported because the builder validates its export with the same function the
|
|
14258
|
+
* renderer admits it with.
|
|
14259
|
+
*/
|
|
14260
|
+
declare function scene3DProjectionIssues(matrix: readonly number[], near: number, far: number, path: (string | number)[]): Issue[];
|
|
14261
|
+
/**
|
|
14262
|
+
* The numeric rules the schema cannot express: exact sample count, normalized
|
|
14263
|
+
* quaternions, and a real perspective projection on every frame.
|
|
14264
|
+
*
|
|
14265
|
+
* Split out of the schema (as v1 does) so a caller holding a parsed track can
|
|
14266
|
+
* re-check it, and so the per-sample walk stays one readable loop over up to
|
|
14267
|
+
* 3,600 samples.
|
|
14268
|
+
*/
|
|
14269
|
+
declare function scene3DCameraTrackIssues(track: Scene3DCameraTrackV1): Issue[];
|
|
14270
|
+
/** THE camera-track validator: structure, then the numeric rules. */
|
|
14271
|
+
declare const scene3DCameraTrackSchema: z.ZodObject<{
|
|
14272
|
+
format: z.ZodLiteral<"scene3d-camera-track">;
|
|
14273
|
+
version: z.ZodLiteral<1>;
|
|
14274
|
+
frameStart: z.ZodLiteral<0>;
|
|
14275
|
+
frameCount: z.ZodNumber;
|
|
14276
|
+
fps: z.ZodNumber;
|
|
14277
|
+
samples: z.ZodArray<z.ZodObject<{
|
|
14278
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
14279
|
+
quaternion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
14280
|
+
projectionMatrix: z.ZodArray<z.ZodNumber>;
|
|
14281
|
+
near: z.ZodNumber;
|
|
14282
|
+
far: z.ZodNumber;
|
|
14283
|
+
target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14284
|
+
focalLengthMm: z.ZodOptional<z.ZodNumber>;
|
|
14285
|
+
}, z.core.$strict>>;
|
|
14286
|
+
}, z.core.$strict>;
|
|
14287
|
+
declare function isScene3DCameraTrack(value: unknown): value is Scene3DCameraTrackV1;
|
|
14288
|
+
/**
|
|
14289
|
+
* Track ↔ manifest agreement. A track that is valid on its own can still be the
|
|
14290
|
+
* WRONG track for this scene: a different fps, a different length, or a
|
|
14291
|
+
* projection baked for another aspect ratio. Each of those silently reframes or
|
|
14292
|
+
* retimes every shot, so each is an error here rather than a render-time
|
|
14293
|
+
* surprise.
|
|
14294
|
+
*/
|
|
14295
|
+
declare function scene3DCameraTrackPlanIssues(track: Scene3DCameraTrackV1, plan: Pick<Scene3DPlanV2, "fps" | "durationInFrames" | "width" | "height">): Issue[];
|
|
14296
|
+
/**
|
|
14297
|
+
* The sample for an integer frame. `undefined` outside `[0, frameCount)` — a
|
|
14298
|
+
* caller must fail rather than clamp, because a clamped frame is a wrong frame
|
|
14299
|
+
* that looks plausible.
|
|
14300
|
+
*/
|
|
14301
|
+
declare function scene3DSampleForFrame(track: Scene3DCameraTrackV1, frame: number): Scene3DCameraSample | undefined;
|
|
14302
|
+
/**
|
|
14303
|
+
* Size-gate, then parse, then validate. This is the admission path for a
|
|
14304
|
+
* downloaded camera track: an 80 MiB "8 MiB" track is refused before
|
|
14305
|
+
* `JSON.parse` gets a chance to allocate it.
|
|
14306
|
+
*/
|
|
14307
|
+
declare function parseScene3DCameraTrackJson(text: string): Scene3DParseResult<Scene3DCameraTrackV1>;
|
|
14308
|
+
|
|
11833
14309
|
/**
|
|
11834
14310
|
* The parts of `settings.studio` that must not leave the owner's account.
|
|
11835
14311
|
*
|
|
@@ -11893,4 +14369,120 @@ declare const STUDIO_SHOT_TRANSIENT_KEYS: readonly ["pendingClips", "pendingClip
|
|
|
11893
14369
|
*/
|
|
11894
14370
|
declare function stripStudioTransientSettings(settings: unknown): unknown;
|
|
11895
14371
|
|
|
11896
|
-
export { ACCESS_LEVELS, ACTIVE_SCENE_HELPERS, ADVANCED_MODE_UNAVAILABLE_REASON, AGGREGATEABLE_TYPES, AGGREGATE_LANE_SOURCE_TYPES, AI_AVATAR_DURATION_BUCKETS, AI_AVATAR_MAX_AUDIO_SEC, AI_AVATAR_MAX_DURATION_SEC, AI_AVATAR_RESERVE_IDS, AI_WRITER_PROVIDERS, ALA_CARTE_BOARDS, ALL_CAPTION_STYLES, ANIMALS, ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, ASPECT_RATIO_DIMENSIONS, AUDIO_ADDON_PROVIDERS, AUDIO_CROSSFADE_CURVES, AUDIO_CROSSFADE_CURVE_IDS, AUDIO_FX_PRESETS, AUDIO_FX_PRESET_LABELS, AUDIO_FX_PRESET_SET, AUDIO_FX_REVERB_PRESETS, AUDIO_PRODUCER_TYPES, type AccessLevel, type AddBRollResult, AddBRollResultSchema, type AggregateableType, type AggregationBuckets, type AiAvatarDurationBucket, type AiAvatarEngine, type AiAvatarResolution, type AiWriterProvider, type AlaCarteBoard, type AnalyzedScene, type AnchorSceneStyleResult, AnchorSceneStyleResultSchema, type Animal, type AnimalSubcategory, type AssetRef, AssetRefSchema, type AudioCrossfadeCurve, type AudioFxPreset, type AudioLayer, type AuditImagesResult, AuditImagesResultSchema, type AuditImagesShotEntry, AuditImagesShotEntrySchema, AuditPromptIssueSchema, type AuditPromptResult, AuditPromptResultSchema, AvatarPayloadError, BOARD_TO_ASSET_TYPE, BOARD_TO_COLUMN, BOARD_VARIANTS, type BoardEntityKind, type BoardPromptContext, type BoardTemplate, BridgeToNextSceneInputSchema, type BridgeToNextSceneResult, BridgeToNextSceneResultSchema, type BrowseCommunityParams, type BrowseCommunityResult, CATEGORY_DURATION_DEFAULTS, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_ASSET_TYPES, CHARACTER_ASSET_VARIANTS, CHARACTER_ATTACH_COLUMNS, CHARACTER_FACETS, CHARACTER_FACET_IDS, CHARACTER_LORA_TRAINING_JOB_TYPE, CHARACTER_MOTION_PROVIDERS, CHARACTER_PICKER_DISPLAY_ORDER, CHARACTER_REFERENCE_PHOTO_KINDS, CHARACTER_STYLES, CHARACTER_VARIANT_ASSET_BUCKETS, CHAT_ENABLED_STAGES, CHAT_STAGES, CHAT_TURN_CAPS, CHAT_WIRED_STAGES, CINEMATIC_DEFAULT_DURATION_SEC, CINEMATIC_DEFAULT_RESOLUTION, CINEMATIC_MAX_DURATION_SEC, CINEMATIC_MAX_LOOKS, CINEMATIC_MAX_REFERENCE_IMAGES, CINEMATIC_MAX_REFERENCE_VIDEOS, CINEMATIC_MIN_DURATION_SEC, CINEMATIC_MIN_LOOKS, CINEMATIC_PROMPT_MAX, CINEMATIC_RESERVE_IDS, COLLABORATOR_ROLES, COLLECT_IN_HANDLE, COMBINE_TRANSITIONS, COMBINE_TRANSITION_GROUP_LABELS, COMBINE_TRANSITION_GROUP_ORDER, COMBINE_TRANSITION_IDS, COMPOSER_PLAN_FIELDS, COMPOSER_PLAN_MAP, CONTENT_TYPES_BY_PLATFORM, CREATURE_ATTACH_COLUMNS, CREDIT_BASE_USD, CREDIT_ROUNDING_RESOLUTION, type CaptionStyle, type CastCoverageCriticVerdict, CastCoverageCriticVerdictSchema, type CharacterAspectRatio, type CharacterAssetType, type CharacterAssetTypeForAspect, type CharacterAttachColumn, type CharacterDef, type CharacterFacet, type CharacterImageCriticVerdict, CharacterImageCriticVerdictSchema, type CharacterLoraFields, type CharacterMentionTokenInfo, CharacterMetadataSchema, type CharacterMotionProvider, type CharacterReferencePhoto, type CharacterReferencePhotoKind, type CharacterVariantAssetBucket, type CharacterVariantAssetItem, type CharacterVoiceSpec, type ChatEnabledStage, type ChatTurnResponse, ChatTurnResponseSchema, type CinematicResolution, type ClipLook, type CloneListingResult, type CollaboratorRole, type CombineTransition, type CombineTransitionGroup, type CombineVideosEstimatorInput, type CommunityCard, type CommunityEntityType, type CommunityFullDetail, type CommunityReportReason, type CommunitySort, type ComponentHandle, type ComponentMetadata, type ConnectedReference, type CreatureAttachColumn, CriticIssueSchema, type CustomEntry, DEFAULT_AUDIO_CROSSFADE_CURVE_ID, DEFAULT_CARRIED_FRACTION, DEFAULT_CHARACTER_ANGLE_COUNT, DEFAULT_CHARACTER_EXPRESSION_COUNT, DEFAULT_CHARACTER_FACET, DEFAULT_LABEL_BY_SOURCE, DEFAULT_LOCATION_USAGE_MODE, DEFAULT_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, DEFAULT_USAGE_MODE, DEFAULT_VIDEO_ANALYSIS_MODEL, DEFAULT_VIDEO_ANALYSIS_TIER, DEFAULT_VIDEO_CLIP_COST, DEFAULT_VIDEO_DURATION_SEC, DEFAULT_VIDEO_PROVIDER, DEFAULT_VOICE_CHANGER_MODEL, DEFAULT_VOICE_DESIGN_MODEL, DETAIL_VARIANTS, DURATION_PRICED_PROVIDERS, DYNAMIC_PRODUCER_TYPES, type DescribedReference, type DetectionResult, DetectionResultSchema, type DialogueLine, EFFORT_TIER_BUMP, EMOTIONAL_BEAT, ENTITY_ASPECT_DEFAULTS, ENTITY_BUCKET_FIELDS, ENTITY_DB_ID_FIELD, ENTITY_IMAGE_HANDLE_TYPES, ENTITY_KIND_SCALAR_FIELDS, ENTITY_NAME_FIELD, ENTITY_NODE_KINDS, ENTITY_SCALAR_FIELDS, ENTITY_SECTIONS, ENTITY_STATUSES, ENTITY_TABLE, ENTITY_TOOL_RETRY_CAP, ENTITY_TYPES, EXECUTION_DATA_KEYS, EXTEND_VIDEO_PROVIDERS, type EntityKind, type EntityMentionTokenInfo, type EntityMetadata, EntityMetadataSchema, type EntityNodeKind, type EntityReferenceInput, type EntityRejectInput, EntityRejectInputSchema, type EntitySlot, type EntityStaleEvent, EntityStaleEventSchema, type EntityStateChangeEvent, EntityStateChangeEventSchema, type EntityStatus, type EntityStudioKind, type EntityStyle, type EntityType, type EvaluateConditionOptions, type ExportedPreset, type ExposableField, type ExposableOutput, type ExposedSetting, type ExtendVideoProvider, type ExtraRefCharacterContext, type ExtraRefInput, FACE_SWAP_PROVIDERS, FAL_LIP_SYNC_PROVIDERS, FAN_OUT_EACH_TYPES, FEATURED_ENTITIES, FILM_BASE_CREDITS, FLEXIBLE_INPUT_LIP_SYNC_PROVIDERS, FLUX2_RES_MP, FLUX_LORA_CHARACTER_MODEL_ID, FRAME_MODE_ADAPTIVE_ONLY_ASPECT, FRAME_TARGET_HANDLES, FREECUT_EXPORT_COMPLETE, FREECUT_EXPORT_PROGRESS, FREECUT_READY, FREECUT_REQUEST_IMPORT, FURNITURE, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, type FaceSwapProvider, type FavoriteListingResult, type FeaturedEntity, type FilmCreditEstimate, type FilterListCondition, type FilterListOperator, type FilterOperator, type FixContinuityInput, FixContinuityInputSchema, type FixContinuityResult, FixContinuityResultSchema, type Flux2Model, type FreecutExportCompletePayload, type FreecutExportProgressPayload, type FreecutImportFile, type FreecutRequestImportPayload, type FullSelectorMode, type Furniture, type FurnitureSubcategory, GEMINI_OMNI_PROVIDERS, GENERATE_TEXT_DELIMITER, GLOBAL_MAX_DURATION_SECONDS, GRANTED_ACCESS, GROUP_HANDLE_PREFIX, GUIDANCE_SCALE_SUPPORT, GVP_ANCHOR_CHOICES, GVP_DEFAULT_PROVIDER, GVP_END_FRAME_PROVIDERS, GVP_EXTEND_PROVIDERS, GVP_SUPPORTED_PROVIDERS, GenerateMotionInputSchema, type GenerateMotionResult, GenerateMotionResultSchema, type GenericEdge, type GenericNode, type GrantedAccess, type GvpAnchorChoice, type GvpAnchorWireMode, HANDLE_PORT_SEPARATOR, HELPERS_SHIPPED_IN_1B3, HIGH_QUALITY_PROVIDERS, HINT_EXEMPT_PARAMETER_TYPES, type HintEdgeLike, type HintGraphContext, type HintNodeLike, type I18nCatalogId, I2I_MASK_SUPPORT, I2I_STRENGTH_SUPPORT, IDEOGRAM_PROVIDERS, IMAGE_ASPECT_RATIO_VALUES, IMAGE_CRITIC_LEAF_MODES, IMAGE_CRITIC_MAX_RETRIES, IMAGE_CRITIC_METADATA_KEYS, IMAGE_CRITIC_MIN_ADHERENCE_SCORE, IMAGE_CRITIC_MODES, IMAGE_CRITIC_UNRESOLVABLE, IMAGE_EDIT_PROVIDERS, IMAGE_GEN_PROVIDERS, IMAGE_I2I_PROVIDERS, IMAGE_MASK_MODE, IMAGE_PROMPT_MAX, IMAGE_REF_TYPES, IMAGE_TO_VIDEO_PROVIDERS, INPUT_FIELD_MAP, INPUT_NODE_TYPES, INSTAGRAM_CAROUSEL_MAX_ITEMS, INSTAGRAM_CAROUSEL_MIN_ITEMS, ITER_CLONE_PATTERN, type IdentityFidelity, type IdentityMeta, type ImageAspectRatio, type ImageCriticIssue, ImageCriticIssueSchema, type ImageCriticLeafMode, type ImageCriticMetadataKey, type ImageCriticMode, type ImageCriticNodeIssue, type ImageCriticResult, ImageCriticResultSchema, type ImageCriticVerdict, ImageCriticVerdictSchema, type ImageEditProvider, type ImageGenProvider, type ImageI2IProvider, type ImageMaskMode, type ImageMentionTokenInfo, type ImageToVideoProvider, type ImprovePromptInput, ImprovePromptInputSchema, type ImprovePromptResult, ImprovePromptResultSchema, type InputFieldSchema, type InvitationDelivery, type InvitationPreview, type InvitationState, type InvitationView, type JoinCodeView, type JsonEvalResult, type JsonFilter, type JsonPatch, KEYFRAME_CREDITS_PER_SHOT, KINETIC_CAPTION_STYLES, type KieApiFormat, type KineticCaptionStyle, LANGUAGES, LEGACY_LOTTIE_HOST_REMAP, LIP_SYNC_DURATION_BUCKETS, LIP_SYNC_MAX_AUDIO_SECONDS, LIP_SYNC_PROVIDERS, LLM_FEATURE_DEFAULTS, LLM_MODALITY_CAPS, LLM_MODELS, LLM_MODEL_IDS, LLM_REASONING_EFFORTS, LLM_ROUTE_DEFAULTS, LLM_TEXT_INPUT_MAX, LLM_VENDOR_LABELS, LLM_VENDOR_ORDER, LOCATION_ASSET_TYPES, LOCATION_ASSET_VARIANTS, LOCATION_ATMOSPHERE_PROVIDERS, LOCATION_ATTACH_COLUMNS, LOCATION_BUCKET_TO_CATALOG_ID, LOCATION_PRESET_TO_CATALOG, LOCATION_REFERENCE_PHOTO_KINDS, LOCATION_REFERENCE_PHOTO_KIND_LABELS, LOCATION_USAGE_MODES, LOTTIE_OVERLAY_CATALOG, LOTTIE_SLOT_FIELD_PREFIX, type LabeledOption, type LipSyncDurationBucket, type LipSyncProvider, type LlmFeature, type LlmModelDef, type LlmModelGroup, type LlmReasoningEffort, type LlmRouteDefaults, type LlmTier, type LlmVendor, type LocaleCatalogMap, type LocaleDirection, type LocaleId, type LocationAssetType, type LocationAtmosphereProvider, type LocationAttachColumn, type LocationCatalogRef, type LocationImageCriticVerdict, LocationImageCriticVerdictSchema, type LocationMentionTokenInfo, LocationMetadataSchema, type LocationReferencePhotoKind, type LocationUsageMode, LocationsCoverageCriticIssueSchema, type LocationsCoverageCriticVerdict, LocationsCoverageCriticVerdictSchema, type LoopTrimEstimatorInput, type LoopVideoEstimatorInput, type LoraEligibleRef, type LoraRouting, type LottieOverlayCatalogEntry, type LottieSlotField, MAX_CUSTOM_ENTRIES_PER_BOARD, MAX_IMAGE_PROMPT_CHARS_BY_PROVIDER, MAX_LOCATION_VARIANTS, MAX_NEGATIVE_PROMPT_CHARS_BY_PROVIDER, MAX_PANELS_PER_SHEET, MAX_TTS_CHARS_BY_PROVIDER, MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER, MEMBER_STATUSES, MINIMAX_H3_DEFAULT_RESOLUTION, MINIMAX_H3_PROVIDERS, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, MODEL_CATALOG, MODEL_PARAM_NODE_TYPES, MODEL_RECOMMENDATIONS, MODIFY_IMAGE_PROVIDERS, MOTION_COLUMN, MOTION_TRANSFER_PROVIDERS, MUSIC_PROVIDERS, type MaskRegionDescriptor, type MatchCutVerdict, MatchCutVerdictSchema, type MeOrganizations, type Member, type MemberStatus, type MinimalEdge, type MinimalNode, type ModelCatalogEntry, type ModelInputAdjustment, type ModelKind, type ModelMenuOption, type ModelMode, type ModelNodeTarget, type ModelPromptingStyle, type ModelRecommendation, type ModelTreeLine, type ModelTreeVariant, type ModelValidationIssue, type ModifyImageProvider, type MotionTransferProviderType, type MusicProvider, NATIVE_ADAPTIVE_ASPECT, NATIVE_NEGATIVE_PROMPT_MODELS, NATIVE_NEGATIVE_VIDEO_PROVIDERS, NEGATIVE_PROMPT_MAX, NODARO_IMPORT_FILES, NODARO_LOAD_TIMELINE, NODARO_LOAD_VIDEO, NODARO_RESET_PROJECT, NODE_DEFAULT_TYPES, NODE_MAPPABLE_FIELDS, NODE_PRESET_EXPORT_KIND, NODE_REF_PATTERN, NON_EN_LOCALE_IDS, NO_SPLIT_DELIMITER, type NodaroLoadTimelinePayload, type NodaroLoadVideoPayload, type NodeDefaultType, type NodeParamAdjustment, type NodePresetExport, type NormalizedImageGen, type NormalizedModelInput, type NormalizedNodes, type NormalizedVideoRequest, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ASSET_VARIANTS, OBJECT_ATTACH_COLUMNS, OBJECT_MOTION_PROVIDERS, OBJECT_PICKER_NODE_TYPES, ORG_ERROR_CODES, ORG_KINDS, ORG_ROLES, ORG_STATUSES, OUTPUT_FIELD_MAP, OUTPUT_FORMATS, type ObjectAspectRatio, type ObjectAssetType, type ObjectAssetTypeForAspect, type ObjectAttachColumn, ObjectMetadataSchema, type ObjectMotionProvider, type ObjectsValidationIssue, type ObjectsValidationResult, OptimizeForModelInputSchema, type OptimizeForModelResult, OptimizeForModelResultSchema, type OrgAuditEntry, type OrgErrorCode, type OrgKind, type OrgMemberView, type OrgPage, type OrgRole, type OrgSettings, OrgSettingsSchema, type OrgStatus, type OrganizationSummary, type OrganizationView, type OutputFormat, type OutputMode, type OutputType, PARAMETER_NODE_TYPES, PASSTHROUGH_TYPES, PAYG_RETENTION_DAYS, PER_FORMAT_DURATION_BOUNDS, PICKER_TO_COMBINE_TRANSITION, PIPELINE_ACTIVATION_MODES, PIPELINE_FORMATS, PIPELINE_HARD_TIMEOUT_MS, PIPELINE_MODEL_STAGES, PIPELINE_MODES, PIPELINE_OUTPUT_RESOLUTIONS, PIPELINE_PINNABLE_IMAGE_MODELS, PIPELINE_PINNABLE_SCRIPT_LLMS, PIPELINE_PINNABLE_VIDEO_MODELS, PIPELINE_STAGE_NAMES, PIPELINE_STAGE_TIMEOUT_MS, PIPELINE_TYPES, PLACEHOLDER_CHARACTER_NAME, PLATFORM_LABELS, PLATFORM_SPECS, PRESET_APPLY_CLEAR_KEYS, PRESET_EXCLUDED_KEYS, PRESET_LABELS, PRESET_SETTING_KEYS, PRICING_DEFAULT_DURATION_SEC, PRICING_DEFAULT_RESOLUTION, PROMPT_HARD_CEILING, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PROVIDER_DIRECTIVE_DEFAULTS, PROVIDER_PLACEHOLDER_PREFIX, type PanelGenRequest, type PanelRequest, type PanelSource, type PipelineActivationMode, type PipelineCompletedEvent, PipelineCompletedEventSchema, type PipelineConfig, PipelineConfigSchema, type PipelineDriftSummary, PipelineDriftSummarySchema, type PipelineEditorDecisionsReadyEvent, PipelineEditorDecisionsReadyEventSchema, type PipelineEvent, type PipelineForkedEvent, PipelineForkedEventSchema, type PipelineFormat, type PipelineInput, PipelineInputSchema, type PipelineLifecycleEvent, type PipelineMode, type PipelineModelStage, type PipelineMusicReadyEvent, PipelineMusicReadyEventSchema, type PipelineOutputResolution, type PipelinePinnableImageModel, type PipelinePinnableScriptLlm, type PipelinePinnableVideoModel, type PipelineStageName, PipelineStageNameSchema, type PipelineStageStatus, PipelineStageStatusSchema, type PipelineState, PipelineStateSchema, type PipelineStatus, PipelineStatusSchema, type PipelineType, type PixelBox, type PresentationItem, type PresetEntry, type PresetSettingKey, type PresetSettings, PresetSettingsSchema, type PriceVariant, type PricedVideoSelection, type ProgressSegment, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, type PromptAffixFields, type PromptAffixes, type ProposedChange, type PublishListingParams, type PublishListingResult, QA_CHECK_PROVIDERS, type QaCheckProvider, type QualityLevel, REDUCE_STRATEGIES, REDUCE_STRATEGY_IDS, REFERENCE_BOARD_PROVIDERS, REFERENCE_BOARD_TEMPLATES, REFERENCE_HANDLE_MAP, REFERENCE_ROLE_PRESETS, REF_HANDLE_CATEGORY, REF_IMAGE_MAX_LIMITS, REF_TOKEN_NAMESPACE_PREFIXES, RENDERING_SPEED_SUPPORT, REPEATABLE_NODE_TYPES, REPEAT_PLACEHOLDER, REPLICATE_LIP_SYNC_PROVIDERS, RESERVED_TEMPLATE_VARS, type ReduceMeta, type ReduceStrategy, type ReduceStrategyId, type RefCandidate, type RefModalityEdge, type RefTokenKind, type RefVideoDurationLimit, type ReferenceBoardProvider, type ReferenceModality, type ReferenceSheet, type ReferenceSource, type ReportListingResult, type ResolveCharacterAspectOptions, type ResolveObjectAspectOptions, type ResolveSeparatorOptions, type ResolvedDialogueVoiceLine, type RouterConditionGroup, SCENE_HELPER_NAMES, SCRAPER_ACTOR_LABELS, SCRAPER_CREDIT_COSTS, SCRAPER_OUTPUT_FIELDS, SCRIPT_PROVIDERS, SEASONS, SECTION_BOARD, SECTION_KINDS, SEEDANCE_2_5_REF_LIMITS, SEEDANCE_2_CONTINUATION_REF_SEC, SEEDANCE_2_EXTEND_STITCH, SEEDANCE_2_PROVIDERS, SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER, SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC, SEEDANCE_2_REF_LIMITS, SEEDANCE_LIP_SYNC_PROVIDERS, SEED_SUPPORT, SEPARATOR_DISPLAY, SEPARATOR_PRESETS, SHEET_ASPECTS, SHEET_BACKGROUNDS, SHEET_PRESETS, SHEET_SKINS, SHEET_TYPES, SHORT_FILM_ANGLE_COUNT, SHORT_FILM_EXPRESSION_COUNT, SHORT_FILM_VARIANT_THRESHOLD_SEC, SLOT_TOKEN_RE, SMART_CUT_WINDOW_DEFAULT, SMART_CUT_WINDOW_MAX, SMART_CUT_WINDOW_MIN, SOCIAL_POST_NODE_TYPES, STAGE_PATCH_SCHEMA, STATIC_CAPTION_STYLES, STRUCTURAL_SECTIONS, STRUCTURED_VISION_MODELS, STUDIO_SHOT_TRANSIENT_KEYS, STUDIO_TRANSIENT_KEYS, SUBMISSION_STATUSES, SUNO_ADD_TRACK_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_HARD_CEILING, SUNO_MODELS, SUNO_SELECT_OPERATIONS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, SUNO_VERSION_PRICED_OPERATIONS, SUPPORTED_FONT_NAMES, SURROUND_DIRECTIONS, SWITCHX_BLOCK_FRAMES, SWITCHX_FRAME_TIERS, type SafetyRetryPolicy, type SceneData, type SceneHelperName, SceneHelperNameSchema, type SceneInputMode, SceneInputModeSchema, type SceneMetadata, SceneMetadataSchema, type SceneNodeData, SceneNodeDataSchema, SceneSpecSchema, type ScraperActorId, type ScriptCriticVerdict, ScriptCriticVerdictSchema, type ScriptProvider, type Season, type SectionKind, type SelectorConfig, type SelectorFields, type SelectorMode, type SelectorPredicateOp, type SelectorResult, type SemanticAspectRatio, type SeparatorPreset, type SharedListing, type SharedVoice, type SheetAspect, type SheetBackground, type SheetCostEstimate, type SheetEntry, type SheetFlavour, type SheetGenerationPlan, type SheetPreset, type SheetPresetId, type SheetSection, type SheetSkin, type SheetTextData, type SheetType, type ShotElement, type ShotImageElement, type ShotShapeElement, type ShotSpec, ShotSpecSchema, type ShotTextElement, type ShowrunnerPlan, ShowrunnerPlanSchema, type SidecarLoader, type SlotControlDescriptor, type SlotControlKind, type SlotVariation, type SocialMediaContentType, type SocialMediaPlatform, type SocialMediaSpec, type SortDirection, type SortListOptions, type SortType, type StageAwaitingSubGateEvent, StageAwaitingSubGateEventSchema, type StaticCaptionStyle, type StoryboardCohesionCriticVerdict, StoryboardCohesionCriticVerdictSchema, type StyleDirectives, StyleDirectivesSchema, type SubGateName, SubGateNameSchema, type SubmissionStatus, type SunoAddTrackModel, type SunoModel, type SupportedFontName, type SurroundDirection, type Swatch, T2I_TO_I2I_VARIANT, TASK_CHAINED_EDIT_PROVIDERS, TEXT_TO_AUDIO_PROVIDERS, TEXT_TO_VIDEO_PROVIDERS, TIER_MAX_PIPELINE_COST_CREDITS, TIER_PIPELINE_PARALLELISM, TILT_CARRIED_FRACTION, TOPAZ_DEFAULT_UPSCALE_FACTOR, TOPAZ_UPSCALE_FACTORS, TRANSCRIBE_PROVIDERS, TRANSIENT_RUNTIME_KEYS, TTS_PROVIDERS, TTS_TEXT_MAX, TWO_K_RESOLUTION_PROVIDERS, type TextToAudioProvider, type TextToVideoProvider, type TopazUpscaleAdjustment, type TopazUpscaleFactor, type TopazUpscaleResolution, type TranscribeProvider, type TransitionType, TransitionTypeSchema, type TrimVideoEstimatorInput, type TtsProvider, UPSCALE_IMAGE_PROVIDERS, USAGE_GROUP_BYS, USAGE_MODES, type UpscaleImageProvider, type UsageGroupBy, type UsageLogEntry, type UsageMode, type UsageQuery, type UsageReport, type UsageReportRow, type UsageReportTotals, type UsageVarianceRow, VARIABLES_HANDLE_ID, VARIABLE_PRICING_MODELS, VEHICLES, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, VEO_PROVIDERS, VIDEO_ANALYSIS_AUDIO_MODES, VIDEO_ANALYSIS_BUCKET_CREDITS, VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN, VIDEO_ANALYSIS_DEFAULT_VARIATION, VIDEO_ANALYSIS_DURATION_BUCKETS, VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC, VIDEO_ANALYSIS_ENTITY_SOURCES, VIDEO_ANALYSIS_FACELESS_ANGLES, VIDEO_ANALYSIS_LEGACY_MODELS, VIDEO_ANALYSIS_LLM_MODELS, VIDEO_ANALYSIS_MAX_DURATION_SEC, VIDEO_ANALYSIS_MAX_SCENE_SEC, VIDEO_ANALYSIS_MAX_VARIATIONS, VIDEO_ANALYSIS_MIXED_TIERS, VIDEO_ANALYSIS_SHOT_ANGLES, VIDEO_ANALYSIS_SPEED_EFFECTS, VIDEO_ANALYSIS_STORY_JUMPS, VIDEO_ANALYSIS_TEXT_KINDS, VIDEO_ANALYSIS_TIERS, VIDEO_ANALYSIS_TIER_LABELS, VIDEO_ANALYSIS_TIER_ORDER, VIDEO_ANALYSIS_TIMES_OF_DAY, VIDEO_ANALYSIS_TRANSITIONS, VIDEO_ANALYSIS_VARIATION_SLUGS, VIDEO_ANALYSIS_VISUAL_EFFECTS, VIDEO_ANALYSIS_WINDOW, VIDEO_AUDIO_CAPABILITY, VIDEO_AUDIT_BUCKET_CREDITS, VIDEO_CLIP_CREDITS, VIDEO_CRITIC_CREDITS_PER_SHOT, VIDEO_CRITIC_FRAME_MODES, VIDEO_CRITIC_MAX_RETRIES, VIDEO_CRITIC_METADATA_KEYS, VIDEO_CRITIC_MIN_ADHERENCE_SCORE, VIDEO_DURATION_TIERS, VIDEO_GEN_COLLAPSED_T2V_IDS, VIDEO_GEN_PROVIDERS, VIDEO_INPUT_LIP_SYNC_PROVIDERS, VIDEO_MODEL_CAPS, VIDEO_MODE_ALIASES, VIDEO_PRODUCER_TYPES, VIDEO_PROMPT_MAX, VIDEO_PROVIDERS_REQUIRING_IMAGE, VIDEO_PROVIDERS_WITHOUT_DISPATCH, VIDEO_REF_LIMITS_BY_PROVIDER, VIDEO_REF_VIDEO_DURATION_LIMITS, VIDEO_TO_VIDEO_PROVIDERS, VIDEO_UPSCALE_PROVIDERS, VIDEO_UTIL_PRICING, VIDEO_VARIABLE_PRICING, VOICE_CHANGER_MODELS, VOICE_CHANGER_MODEL_IDS, VOICE_DESIGN_MODELS, type ValidateMatchCutInput, ValidateMatchCutInputSchema, type ValidateMatchCutResult, ValidateMatchCutResultSchema, type ValidationField, type Vehicle, type VehicleSubcategory, type VideoAnalysisAudioMode, type VideoAnalysisClipTransitionIn, type VideoAnalysisEntitySource, type VideoAnalysisMixedTier, type VideoAnalysisModelTier, type VideoAnalysisResult, type VideoAnalysisShotAngle, type VideoAnalysisSpeedEffect, type VideoAnalysisTextKind, type VideoAnalysisTier, type VideoAnalysisTransition, type VideoAnalysisVisualEffect, type VideoAudioCapability, type VideoAudioMode, type VideoClipCost, type VideoCriticFrameMode, type VideoCriticMetadataKey, type VideoCriticShotFields, type VideoCriticVerdict, VideoCriticVerdictSchema, type VideoGenProvider, type VideoModeAlias, type VideoModelCapabilities, type VideoToVideoProvider, type VideoUpscaleProvider, type Voice, type VoiceChangerModel, type VoiceClone, type VoiceDesignModel, type VoiceLibraryParams, type VoiceLibraryResponse, type VoiceMatch, VoiceMatchSchema, type VoiceType, WAN_3_DEFAULT_RESOLUTION, WAN_3_PROVIDERS, WARDROBE_VARIANTS, WEAPONS, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, WORKFLOW_VISIBILITIES, WORKSPACE_HEADER, WORKSPACE_HEADER_LOWER, WORKSPACE_ROLES, type Weapon, type WeaponSubcategory, type WindowAnalysis, type WindowScene, type WorkflowAssetKind, type WorkflowExport, type WorkflowExportCharacter, type WorkflowExportCreature, type WorkflowExportLocation, type WorkflowExportObject, type WorkflowImportReport, type WorkflowImportSkippedAsset, type WorkflowMediaRef, type WorkflowPortability, type WorkflowVisibility, type WorkspaceMemberView, type WorkspaceRole, type WorkspaceSettings, WorkspaceSettingsSchema, type WorkspaceSummary, type WorkspaceView, aggregateByType, aiAvatarReserveCreditId, analyzedSceneSchema, applyDefaultVideoSelection, applyHandleInputOverride, applyRange, applyRangeIndices, applySlots, applyVideoAudioToggle, applyVideoNegativePrompt, aspectRatioFromDims, aspectRatioOptionsByKind, aspectRatioToNumber, assembleNarratedVideoCredits, availableReasoningEfforts, bucketSecondsFromAuditCreditId, bucketSecondsFromCreditId, buildBoardPrompt, buildChildrenByParent, buildConditionVariables, buildCreditModelIdentifier, buildExpressionFromVisual, buildLipSyncCreditId, buildLlmCreditIdentifier, buildModelMenu, buildModelTree, buildMotionCreditModelIdentifier, buildNodePresetExport, buildPanelPrompt, buildProgressSegments, buildRangeLabel, buildScraperCreditId, buildVideoAnalysisCreditId, buildVideoAuditCreditId, buildVideoCreditModelIdentifier, calculateCombinedProgress, calculateMonetizationMarkup, calculateMonetizedCost, calculateProgress, canonicalVarName, characterBoardItems, characterBucketDisplayRank, characterMentionSlug, characterMentionableAssetArrays, characterSheetRefItems, characterVariantAssetArrays, checkRefVideoDurations, cinematicCreditId, clampCinematicDuration, clampSmartCutWindow, classifyRefToken, cleanOrphanedItems, clearImageCriticMetadata, clearVideoCriticMetadata, clipLookSchema, collectAncestorRefs, combineSameLabelRefs, computeAggregateLanes, countRefModalityEdges, creditRangesAll, creditsToUsd, decodeProviderItem, defaultCarriedFraction, defaultResolutionFor, defaultRoleForSource, defaultVideoAspectRatio, deriveLinkedFields, deriveLottieSlotFields, deriveSlotRefs, describeEdgeBehavior, describeMaskRegion, describeNodeAdjustments, describeSlotControl, dropUnknownBindings, dropUnknownSpeakers, durationsByMode, effectiveReasoningEffort, encodeProviderItem, ensureLocaleCatalogLoaded, entityHydrationColumns, entityMentionSlug, entityMentionSlugForRef, entityScalarFields, entitySlotSchema, entryMatchesQuery, estimateCombineVideosCredits, estimateFilmCredits, estimateLoopTrimAddonCredits, estimateLoopVideoCredits, estimateScriptDurationSec, estimateSheetCost, estimateTrimVideoCredits, evaluateCondition, evaluateConditionGroup, evaluateJsonExpression, evaluateJsonPath, expandExtraRefsToConnectedReferences, expandItemsWithRepeat, extractAllGeneratedResults, extractCharacterLoraFields, extractGeneratedJsonAsList, extractPresetData, extractReferencedLabels, extractVideoDurationFromNode, fieldKeyFromHandle, filterCloneNodes, findCharacterMentionTokens, findEntityMentionTokens, findImageMentionTokens, findLocationMentionTokens, findSeedance2AudioOverLimit, firstSightExtraRole, flattenItems, getAnimal, getAnimalLabel, getAnimalPromptHint, getAnimalTerm, getAspectRatioOptions, getAudioCrossfadeCurve, getCharacterFacet, getCombineTransition, getCreditRange, getDurationsForModel, getEffectiveRepeatCount, getFeaturedEntities, getFurniture, getFurnitureLabel, getInputFieldSchema, getInputNodes, getItemSortId, getLipSyncMaxAudioSeconds, getLlmModalityCaps, getLlmModel, getLlmTier, getLocaleDirection, getMaxImagePromptChars, getMaxNegativePromptChars, getMaxSunoPromptChars, getMaxSunoStyleChars, getMaxTtsChars, getMaxVideoPromptChars, getModel, getNodeLabel, getNodeResult, getOutputNodes, getOutputType, getParameterValue, getQualityOptions, getResolutionOptions, getRouteReachableNodeIds, getStrategy, getTargetField, getValidValues, getVehicle, getVehicleLabel, getVideoAudioCapability, getWeapon, getWeaponLabel, groupByFamily, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hexToRgbaArray, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageReferenceLimit, inferMusicVideo, isAggregateableType, isCharacterAspectRatio, isCollectInEdge, isDefaultSelectorConfig, isExpandedClone, isFlux2Model, isGeminiOmniProvider, isGvpSupportedProvider, isHandleInputWired, isKineticCaptionStyle, isLocationUsageMode, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isScraperActor, isSeedance2Provider, isTiltDirection, isUsageMode, isVeoProvider, isVideoAnalysisMixedTier, isVideoAnalysisTier, isWan3Provider, jsonResultToList, knownEntitySlugsFromRefs, knownImageSlugsFromRefs, listBoardTemplates, listModels, listSlotSids, llmRouteDefaults, locationMentionSlug, locationReferencePhotoKindLabel, locationUsageModeLabel, mapAspectRatio, mapQuality, mapShotIntentToProviderDirectives, matchVariant, maxSegmentSecFor, maxSegmentsFor, mergeClipLook, mergeExposedSettings, migrateEdgeOutputMode, migrateToItems, minSegmentSecFor, modelIdsByKindMode, modelToNodeTarget, modelsForInputMode, modelsWithFeature, motionGraphicsFeature, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, normalizeVideoRequestParams, normalizeWan3Resolution, orderedLlmModels, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, pricedVideoSelection, qualityOptionsByKind, readPromptAffixes, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, renderAnalyzedScene, resetCatalogSidecars, resolutionOptionsByKind, resolveAiAvatarCreditId, resolveAudioCrossfadeCurve, resolveCharacterAspectRatio, resolveCinematicCreditId, resolveConditionValue, resolveDefaultRole, resolveDescription, resolveDialogueVoices, resolveEffectiveSourceType, resolveEffectiveTier, resolveEntityAspect, resolveFieldMappings, resolveGvpAnchorWire, resolveImageGenCreditIdentifier, resolveIndex, resolveLabel, resolveListExpression, resolveLlmCreditId, resolveLocationFields, resolveLocationPresetCatalog, resolveLottieOverlaySrc, resolveNodeRefs, resolveNormalizedImageGen, resolveObjectAspectRatio, resolvePipelineModel, resolveRelativeWindowToken, resolveScraperCreditId, resolveSelectorRefs, resolveSeparator, resolveSheetSections, resolveSlideshowTransition, resolveSourceThroughConnectedList, resolveStoredTier, resolveSwitchXCreditId, resolveTopazUpscale, resolveVideoAnalysisModel, resolveVideoModeForInputs, resolveVideoProviderForMode, resolveXfadeName, rewriteSceneBindings, rewriteSlotTokens, rewriteSpeakerSlots, rgbaArrayToHex, roleToPhrase, runSelector, safetyRetryPolicy, sanitizeRole, searchModelVariants, seedance2AudioLimitSec, segmentDurationsFor, selectByModulo, selectByNamedKey, selectByPredicate, selectListItems, selectLoraRoutingForMentions, selectRandom, setRegisteredPersonPackFields, settledWithLimit, slotVariationSchema, sortCharacterEntriesForDisplay, sortListItems, sourceRefKey, spliceDelimitedRows, splitByLoopDelimiter, splitGeneratedItems, spreadJsonArrayIfSingleton, stringifyPathResults, stripDerivedAnalysisFields, stripExportContent, stripStudioTransientSettings, stripTransientRuntimeData, sunoCreditType, supportedDefaultDimensions, supportsAdvancedMode, supportsEndAnchor, supportsExtendRender, toConnectedReference, toConnectedReferences, togglePick, tryParseJson, uiAspectRatioFill, uiDurationFill, uiResolutionFill, unresolvedRefTokens, unwrapUnresolvedTokens, usageModeDirective, usageModeIncludesName, usageModeLabel, usdToCredits, validateAiAvatarPayload, validateCinematicAvatarPayload, validateDurationForFormat, validateModeActivation, validateModelInput, validateNoNestedGroups, validateObjects, validateProviderForNodeType, validateSubWorkflowRoutes, variantJobId, videoAnalysisCreditSegment, videoAnalysisNumWindows, videoAnalysisResultSchema, videoAuditCreditsForBucket, videoModelCanSpeakDialogue, videoModelSupportsAudio, videoNegativeSuffix, videoProviderFoldsLoneEndFrame, videoProviderRequiresImage, windowAnalysisSchema, zipMergeLists };
|
|
14372
|
+
/** Immutable, deterministic edits over a baked scene. No asset bytes are mutated. */
|
|
14373
|
+
|
|
14374
|
+
/** Callers describe values. Revision identity and provenance are assigned here. */
|
|
14375
|
+
declare const scene3DV2OverrideInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
14376
|
+
kind: z.ZodLiteral<"entity-transform">;
|
|
14377
|
+
entityId: z.ZodString;
|
|
14378
|
+
space: z.ZodEnum<{
|
|
14379
|
+
local: "local";
|
|
14380
|
+
world: "world";
|
|
14381
|
+
}>;
|
|
14382
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14383
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14384
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14385
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14386
|
+
kind: z.ZodLiteral<"entity-color">;
|
|
14387
|
+
entityId: z.ZodString;
|
|
14388
|
+
materialRole: z.ZodString;
|
|
14389
|
+
color: z.ZodString;
|
|
14390
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14391
|
+
kind: z.ZodLiteral<"entity-visibility">;
|
|
14392
|
+
entityId: z.ZodString;
|
|
14393
|
+
visible: z.ZodBoolean;
|
|
14394
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14395
|
+
kind: z.ZodLiteral<"camera-shot-offset">;
|
|
14396
|
+
shotId: z.ZodString;
|
|
14397
|
+
positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14398
|
+
targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14399
|
+
}, z.core.$strict>], "kind">;
|
|
14400
|
+
declare const scene3DV2EditOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
14401
|
+
op: z.ZodLiteral<"set-override">;
|
|
14402
|
+
override: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
14403
|
+
kind: z.ZodLiteral<"entity-transform">;
|
|
14404
|
+
entityId: z.ZodString;
|
|
14405
|
+
space: z.ZodEnum<{
|
|
14406
|
+
local: "local";
|
|
14407
|
+
world: "world";
|
|
14408
|
+
}>;
|
|
14409
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14410
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14411
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14412
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14413
|
+
kind: z.ZodLiteral<"entity-color">;
|
|
14414
|
+
entityId: z.ZodString;
|
|
14415
|
+
materialRole: z.ZodString;
|
|
14416
|
+
color: z.ZodString;
|
|
14417
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14418
|
+
kind: z.ZodLiteral<"entity-visibility">;
|
|
14419
|
+
entityId: z.ZodString;
|
|
14420
|
+
visible: z.ZodBoolean;
|
|
14421
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14422
|
+
kind: z.ZodLiteral<"camera-shot-offset">;
|
|
14423
|
+
shotId: z.ZodString;
|
|
14424
|
+
positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14425
|
+
targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14426
|
+
}, z.core.$strict>], "kind">;
|
|
14427
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14428
|
+
op: z.ZodLiteral<"remove-override">;
|
|
14429
|
+
overrideId: z.ZodString;
|
|
14430
|
+
}, z.core.$strict>], "op">;
|
|
14431
|
+
declare const scene3DV2EditOperationsSchema: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
14432
|
+
op: z.ZodLiteral<"set-override">;
|
|
14433
|
+
override: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
14434
|
+
kind: z.ZodLiteral<"entity-transform">;
|
|
14435
|
+
entityId: z.ZodString;
|
|
14436
|
+
space: z.ZodEnum<{
|
|
14437
|
+
local: "local";
|
|
14438
|
+
world: "world";
|
|
14439
|
+
}>;
|
|
14440
|
+
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14441
|
+
rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14442
|
+
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14443
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14444
|
+
kind: z.ZodLiteral<"entity-color">;
|
|
14445
|
+
entityId: z.ZodString;
|
|
14446
|
+
materialRole: z.ZodString;
|
|
14447
|
+
color: z.ZodString;
|
|
14448
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14449
|
+
kind: z.ZodLiteral<"entity-visibility">;
|
|
14450
|
+
entityId: z.ZodString;
|
|
14451
|
+
visible: z.ZodBoolean;
|
|
14452
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14453
|
+
kind: z.ZodLiteral<"camera-shot-offset">;
|
|
14454
|
+
shotId: z.ZodString;
|
|
14455
|
+
positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14456
|
+
targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
14457
|
+
}, z.core.$strict>], "kind">;
|
|
14458
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14459
|
+
op: z.ZodLiteral<"remove-override">;
|
|
14460
|
+
overrideId: z.ZodString;
|
|
14461
|
+
}, z.core.$strict>], "op">>;
|
|
14462
|
+
type Scene3DV2OverrideInput = z.infer<typeof scene3DV2OverrideInputSchema>;
|
|
14463
|
+
type Scene3DV2EditOperation = z.infer<typeof scene3DV2EditOperationSchema>;
|
|
14464
|
+
interface Scene3DV2EditOptions {
|
|
14465
|
+
expectedRevisionId: string;
|
|
14466
|
+
expectedContentHash?: string;
|
|
14467
|
+
lockedObjectIds?: readonly string[];
|
|
14468
|
+
/** Hosts may allocate identity at admission for idempotent job replay. */
|
|
14469
|
+
newRevisionId?: string;
|
|
14470
|
+
}
|
|
14471
|
+
type Scene3DV2EditResult = {
|
|
14472
|
+
ok: true;
|
|
14473
|
+
plan: Scene3DPlanV2;
|
|
14474
|
+
changeSummary: string;
|
|
14475
|
+
} | {
|
|
14476
|
+
ok: false;
|
|
14477
|
+
code: "invalid_plan" | "invalid_operations" | "stale_revision" | "locked";
|
|
14478
|
+
message: string;
|
|
14479
|
+
};
|
|
14480
|
+
/**
|
|
14481
|
+
* Edits are all-or-nothing. The expected revision and content hash are checked
|
|
14482
|
+
* before writing, and the result is validated and hashed before acceptance.
|
|
14483
|
+
* A source file belongs to its exact base revision: until the host materializes
|
|
14484
|
+
* these edits, the new revision must not advertise the old native download.
|
|
14485
|
+
*/
|
|
14486
|
+
declare function applyScene3DV2EditOperations(input: Scene3DPlanV2, operations: readonly Scene3DV2EditOperation[], options: Scene3DV2EditOptions): Promise<Scene3DV2EditResult>;
|
|
14487
|
+
|
|
14488
|
+
export { ACCESS_LEVELS, ACTIVE_SCENE_HELPERS, ADVANCED_MODE_UNAVAILABLE_REASON, AGGREGATEABLE_TYPES, AGGREGATE_LANE_SOURCE_TYPES, AI_AVATAR_DURATION_BUCKETS, AI_AVATAR_MAX_AUDIO_SEC, AI_AVATAR_MAX_DURATION_SEC, AI_AVATAR_RESERVE_IDS, AI_WRITER_PROVIDERS, ALA_CARTE_BOARDS, ALL_CAPTION_STYLES, ANIMALS, ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, ASPECT_RATIO_DIMENSIONS, AUDIO_ADDON_PROVIDERS, AUDIO_CROSSFADE_CURVES, AUDIO_CROSSFADE_CURVE_IDS, AUDIO_FX_PRESETS, AUDIO_FX_PRESET_LABELS, AUDIO_FX_PRESET_SET, AUDIO_FX_REVERB_PRESETS, AUDIO_PRODUCER_TYPES, type AccessLevel, type AddBRollResult, AddBRollResultSchema, type AggregateableType, type AggregationBuckets, type AiAvatarDurationBucket, type AiAvatarEngine, type AiAvatarResolution, type AiWriterProvider, type AlaCarteBoard, type AnalyzedScene, type AnchorSceneStyleResult, AnchorSceneStyleResultSchema, type Animal, type AnimalSubcategory, type AssetRef, AssetRefSchema, type AudioCrossfadeCurve, type AudioFxPreset, type AudioLayer, type AuditImagesResult, AuditImagesResultSchema, type AuditImagesShotEntry, AuditImagesShotEntrySchema, AuditPromptIssueSchema, type AuditPromptResult, AuditPromptResultSchema, AvatarPayloadError, BOARD_TO_ASSET_TYPE, BOARD_TO_COLUMN, BOARD_VARIANTS, type BoardEntityKind, type BoardPromptContext, type BoardTemplate, BridgeToNextSceneInputSchema, type BridgeToNextSceneResult, BridgeToNextSceneResultSchema, type BrowseCommunityParams, type BrowseCommunityResult, CATEGORY_DURATION_DEFAULTS, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_ASSET_TYPES, CHARACTER_ASSET_VARIANTS, CHARACTER_ATTACH_COLUMNS, CHARACTER_FACETS, CHARACTER_FACET_IDS, CHARACTER_LORA_TRAINING_JOB_TYPE, CHARACTER_MOTION_PROVIDERS, CHARACTER_PICKER_DISPLAY_ORDER, CHARACTER_REFERENCE_PHOTO_KINDS, CHARACTER_STYLES, CHARACTER_VARIANT_ASSET_BUCKETS, CHAT_ENABLED_STAGES, CHAT_STAGES, CHAT_TURN_CAPS, CHAT_WIRED_STAGES, CINEMATIC_DEFAULT_DURATION_SEC, CINEMATIC_DEFAULT_RESOLUTION, CINEMATIC_MAX_DURATION_SEC, CINEMATIC_MAX_LOOKS, CINEMATIC_MAX_REFERENCE_IMAGES, CINEMATIC_MAX_REFERENCE_VIDEOS, CINEMATIC_MIN_DURATION_SEC, CINEMATIC_MIN_LOOKS, CINEMATIC_PROMPT_MAX, CINEMATIC_RESERVE_IDS, COLLABORATOR_ROLES, COLLECT_IN_HANDLE, COMBINE_TRANSITIONS, COMBINE_TRANSITION_GROUP_LABELS, COMBINE_TRANSITION_GROUP_ORDER, COMBINE_TRANSITION_IDS, COMPOSER_PLAN_FIELDS, COMPOSER_PLAN_MAP, CONTENT_TYPES_BY_PLATFORM, CREATURE_ATTACH_COLUMNS, CREDIT_BASE_USD, CREDIT_ROUNDING_RESOLUTION, type CaptionStyle, type CastCoverageCriticVerdict, CastCoverageCriticVerdictSchema, type CharacterAspectRatio, type CharacterAssetType, type CharacterAssetTypeForAspect, type CharacterAttachColumn, type CharacterDef, type CharacterFacet, type CharacterImageCriticVerdict, CharacterImageCriticVerdictSchema, type CharacterLoraFields, type CharacterMentionTokenInfo, CharacterMetadataSchema, type CharacterMotionProvider, type CharacterReferencePhoto, type CharacterReferencePhotoKind, type CharacterVariantAssetBucket, type CharacterVariantAssetItem, type CharacterVoiceSpec, type ChatEnabledStage, type ChatTurnResponse, ChatTurnResponseSchema, type CinematicResolution, type ClipLook, type CloneListingResult, type CollaboratorRole, type CombineTransition, type CombineTransitionGroup, type CombineVideosEstimatorInput, type CommunityCard, type CommunityEntityType, type CommunityFullDetail, type CommunityReportReason, type CommunitySort, type ComponentHandle, type ComponentMetadata, type ConnectedReference, type CreatureAttachColumn, CriticIssueSchema, type CustomEntry, DEFAULT_AUDIO_CROSSFADE_CURVE_ID, DEFAULT_CARRIED_FRACTION, DEFAULT_CHARACTER_ANGLE_COUNT, DEFAULT_CHARACTER_EXPRESSION_COUNT, DEFAULT_CHARACTER_FACET, DEFAULT_LABEL_BY_SOURCE, DEFAULT_LOCATION_USAGE_MODE, DEFAULT_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, DEFAULT_USAGE_MODE, DEFAULT_VIDEO_ANALYSIS_MODEL, DEFAULT_VIDEO_ANALYSIS_TIER, DEFAULT_VIDEO_CLIP_COST, DEFAULT_VIDEO_DURATION_SEC, DEFAULT_VIDEO_PROVIDER, DEFAULT_VOICE_CHANGER_MODEL, DEFAULT_VOICE_DESIGN_MODEL, DETAIL_VARIANTS, DURATION_PRICED_PROVIDERS, DYNAMIC_PRODUCER_TYPES, type DescribedReference, type DetectionResult, DetectionResultSchema, type DialogueLine, EFFORT_TIER_BUMP, EMOTIONAL_BEAT, ENTITY_ASPECT_DEFAULTS, ENTITY_BUCKET_FIELDS, ENTITY_DB_ID_FIELD, ENTITY_IMAGE_HANDLE_TYPES, ENTITY_KIND_SCALAR_FIELDS, ENTITY_NAME_FIELD, ENTITY_NODE_KINDS, ENTITY_SCALAR_FIELDS, ENTITY_SECTIONS, ENTITY_STATUSES, ENTITY_TABLE, ENTITY_TOOL_RETRY_CAP, ENTITY_TYPES, EXECUTION_DATA_KEYS, EXTEND_VIDEO_PROVIDERS, type EntityKind, type EntityMentionTokenInfo, type EntityMetadata, EntityMetadataSchema, type EntityNodeKind, type EntityReferenceInput, type EntityRejectInput, EntityRejectInputSchema, type EntitySlot, type EntityStaleEvent, EntityStaleEventSchema, type EntityStateChangeEvent, EntityStateChangeEventSchema, type EntityStatus, type EntityStudioKind, type EntityStyle, type EntityType, type EvaluateConditionOptions, type ExportedPreset, type ExposableField, type ExposableOutput, type ExposedSetting, type ExtendVideoProvider, type ExtraRefCharacterContext, type ExtraRefInput, FACE_SWAP_PROVIDERS, FAL_LIP_SYNC_PROVIDERS, FAN_OUT_EACH_TYPES, FEATURED_ENTITIES, FILM_BASE_CREDITS, FLEXIBLE_INPUT_LIP_SYNC_PROVIDERS, FLUX2_RES_MP, FLUX_LORA_CHARACTER_MODEL_ID, FRAME_MODE_ADAPTIVE_ONLY_ASPECT, FRAME_TARGET_HANDLES, FREECUT_EXPORT_COMPLETE, FREECUT_EXPORT_PROGRESS, FREECUT_READY, FREECUT_REQUEST_IMPORT, FURNITURE, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, type FaceSwapProvider, type FavoriteListingResult, type FeaturedEntity, type FilmCreditEstimate, type FilterListCondition, type FilterListOperator, type FilterOperator, type FixContinuityInput, FixContinuityInputSchema, type FixContinuityResult, FixContinuityResultSchema, type Flux2Model, type FreecutExportCompletePayload, type FreecutExportProgressPayload, type FreecutImportFile, type FreecutRequestImportPayload, type FullSelectorMode, type Furniture, type FurnitureSubcategory, GEMINI_OMNI_PROVIDERS, GENERATE_TEXT_DELIMITER, GLOBAL_MAX_DURATION_SECONDS, GRANTED_ACCESS, GROUP_HANDLE_PREFIX, GUIDANCE_SCALE_SUPPORT, GVP_ANCHOR_CHOICES, GVP_DEFAULT_PROVIDER, GVP_END_FRAME_PROVIDERS, GVP_EXTEND_PROVIDERS, GVP_SUPPORTED_PROVIDERS, GenerateMotionInputSchema, type GenerateMotionResult, GenerateMotionResultSchema, type GenericEdge, type GenericNode, type GrantedAccess, type GvpAnchorChoice, type GvpAnchorWireMode, HANDLE_PORT_SEPARATOR, HELPERS_SHIPPED_IN_1B3, HIGH_QUALITY_PROVIDERS, HINT_EXEMPT_PARAMETER_TYPES, type HintEdgeLike, type HintGraphContext, type HintNodeLike, type I18nCatalogId, I2I_MASK_SUPPORT, I2I_STRENGTH_SUPPORT, IDEOGRAM_PROVIDERS, IMAGE_ASPECT_RATIO_VALUES, IMAGE_CRITIC_LEAF_MODES, IMAGE_CRITIC_MAX_RETRIES, IMAGE_CRITIC_METADATA_KEYS, IMAGE_CRITIC_MIN_ADHERENCE_SCORE, IMAGE_CRITIC_MODES, IMAGE_CRITIC_UNRESOLVABLE, IMAGE_EDIT_PROVIDERS, IMAGE_GEN_PROVIDERS, IMAGE_I2I_PROVIDERS, IMAGE_MASK_MODE, IMAGE_PROMPT_MAX, IMAGE_REF_TYPES, IMAGE_TO_VIDEO_PROVIDERS, INPUT_FIELD_MAP, INPUT_NODE_TYPES, INSTAGRAM_CAROUSEL_MAX_ITEMS, INSTAGRAM_CAROUSEL_MIN_ITEMS, ITER_CLONE_PATTERN, type IdentityFidelity, type IdentityMeta, type ImageAspectRatio, type ImageCriticIssue, ImageCriticIssueSchema, type ImageCriticLeafMode, type ImageCriticMetadataKey, type ImageCriticMode, type ImageCriticNodeIssue, type ImageCriticResult, ImageCriticResultSchema, type ImageCriticVerdict, ImageCriticVerdictSchema, type ImageEditProvider, type ImageGenProvider, type ImageI2IProvider, type ImageMaskMode, type ImageMentionTokenInfo, type ImageToVideoProvider, type ImprovePromptInput, ImprovePromptInputSchema, type ImprovePromptResult, ImprovePromptResultSchema, type InputFieldSchema, type InvitationDelivery, type InvitationPreview, type InvitationState, type InvitationView, type JoinCodeView, type JsonEvalResult, type JsonFilter, type JsonPatch, KEYFRAME_CREDITS_PER_SHOT, KINETIC_CAPTION_STYLES, type KieApiFormat, type KineticCaptionStyle, LANGUAGES, LEGACY_LOTTIE_HOST_REMAP, LIP_SYNC_DURATION_BUCKETS, LIP_SYNC_MAX_AUDIO_SECONDS, LIP_SYNC_PROVIDERS, LLM_FEATURE_DEFAULTS, LLM_MODALITY_CAPS, LLM_MODELS, LLM_MODEL_IDS, LLM_REASONING_EFFORTS, LLM_ROUTE_DEFAULTS, LLM_TEXT_INPUT_MAX, LLM_VENDOR_LABELS, LLM_VENDOR_ORDER, LOCATION_ASSET_TYPES, LOCATION_ASSET_VARIANTS, LOCATION_ATMOSPHERE_PROVIDERS, LOCATION_ATTACH_COLUMNS, LOCATION_BUCKET_TO_CATALOG_ID, LOCATION_PRESET_TO_CATALOG, LOCATION_REFERENCE_PHOTO_KINDS, LOCATION_REFERENCE_PHOTO_KIND_LABELS, LOCATION_USAGE_MODES, LOTTIE_OVERLAY_CATALOG, LOTTIE_SLOT_FIELD_PREFIX, type LabeledOption, type LipSyncDurationBucket, type LipSyncProvider, type LlmFeature, type LlmModelDef, type LlmModelGroup, type LlmReasoningEffort, type LlmRouteDefaults, type LlmTier, type LlmVendor, type LocaleCatalogMap, type LocaleDirection, type LocaleId, type LocationAssetType, type LocationAtmosphereProvider, type LocationAttachColumn, type LocationCatalogRef, type LocationImageCriticVerdict, LocationImageCriticVerdictSchema, type LocationMentionTokenInfo, LocationMetadataSchema, type LocationReferencePhotoKind, type LocationUsageMode, LocationsCoverageCriticIssueSchema, type LocationsCoverageCriticVerdict, LocationsCoverageCriticVerdictSchema, type LoopTrimEstimatorInput, type LoopVideoEstimatorInput, type LoraEligibleRef, type LoraRouting, type LottieOverlayCatalogEntry, type LottieSlotField, MAX_CUSTOM_ENTRIES_PER_BOARD, MAX_IMAGE_PROMPT_CHARS_BY_PROVIDER, MAX_LOCATION_VARIANTS, MAX_NEGATIVE_PROMPT_CHARS_BY_PROVIDER, MAX_PANELS_PER_SHEET, MAX_TTS_CHARS_BY_PROVIDER, MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER, MEMBER_STATUSES, MINIMAX_H3_DEFAULT_RESOLUTION, MINIMAX_H3_PROVIDERS, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, MODEL_CATALOG, MODEL_PARAM_NODE_TYPES, MODEL_RECOMMENDATIONS, MODIFY_IMAGE_PROVIDERS, MOTION_COLUMN, MOTION_TRANSFER_PROVIDERS, MUSIC_PROVIDERS, type MaskRegionDescriptor, type MatchCutVerdict, MatchCutVerdictSchema, type MeOrganizations, type Member, type MemberStatus, type MinimalEdge, type MinimalNode, type ModelCatalogEntry, type ModelInputAdjustment, type ModelKind, type ModelMenuOption, type ModelMode, type ModelNodeTarget, type ModelPromptingStyle, type ModelRecommendation, type ModelTreeLine, type ModelTreeVariant, type ModelValidationIssue, type ModifyImageProvider, type MotionTransferProviderType, type MusicProvider, NATIVE_ADAPTIVE_ASPECT, NATIVE_NEGATIVE_PROMPT_MODELS, NATIVE_NEGATIVE_VIDEO_PROVIDERS, NEGATIVE_PROMPT_MAX, NODARO_IMPORT_FILES, NODARO_LOAD_TIMELINE, NODARO_LOAD_VIDEO, NODARO_RESET_PROJECT, NODE_DEFAULT_TYPES, NODE_MAPPABLE_FIELDS, NODE_PRESET_EXPORT_KIND, NODE_REF_PATTERN, NON_EN_LOCALE_IDS, NO_SPLIT_DELIMITER, type NodaroLoadTimelinePayload, type NodaroLoadVideoPayload, type NodeDefaultType, type NodeParamAdjustment, type NodePresetExport, type NormalizedImageGen, type NormalizedModelInput, type NormalizedNodes, type NormalizedVideoRequest, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ASSET_VARIANTS, OBJECT_ATTACH_COLUMNS, OBJECT_MOTION_PROVIDERS, OBJECT_PICKER_NODE_TYPES, ORG_ERROR_CODES, ORG_KINDS, ORG_ROLES, ORG_STATUSES, OUTPUT_FIELD_MAP, OUTPUT_FORMATS, type ObjectAspectRatio, type ObjectAssetType, type ObjectAssetTypeForAspect, type ObjectAttachColumn, ObjectMetadataSchema, type ObjectMotionProvider, type ObjectsValidationIssue, type ObjectsValidationResult, OptimizeForModelInputSchema, type OptimizeForModelResult, OptimizeForModelResultSchema, type OrgAuditEntry, type OrgErrorCode, type OrgKind, type OrgMemberView, type OrgPage, type OrgRole, type OrgSettings, OrgSettingsSchema, type OrgStatus, type OrganizationSummary, type OrganizationView, type OutputFormat, type OutputMode, type OutputType, PARAMETER_NODE_TYPES, PASSTHROUGH_TYPES, PAYG_RETENTION_DAYS, PER_FORMAT_DURATION_BOUNDS, PICKER_TO_COMBINE_TRANSITION, PIPELINE_ACTIVATION_MODES, PIPELINE_FORMATS, PIPELINE_HARD_TIMEOUT_MS, PIPELINE_MODEL_STAGES, PIPELINE_MODES, PIPELINE_OUTPUT_RESOLUTIONS, PIPELINE_PINNABLE_IMAGE_MODELS, PIPELINE_PINNABLE_SCRIPT_LLMS, PIPELINE_PINNABLE_VIDEO_MODELS, PIPELINE_STAGE_NAMES, PIPELINE_STAGE_TIMEOUT_MS, PIPELINE_TYPES, PLACEHOLDER_CHARACTER_NAME, PLATFORM_LABELS, PLATFORM_SPECS, PRESET_APPLY_CLEAR_KEYS, PRESET_EXCLUDED_KEYS, PRESET_LABELS, PRESET_SETTING_KEYS, PRICING_DEFAULT_DURATION_SEC, PRICING_DEFAULT_RESOLUTION, PROMPT_HARD_CEILING, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PROVIDER_DIRECTIVE_DEFAULTS, PROVIDER_PLACEHOLDER_PREFIX, type PanelGenRequest, type PanelRequest, type PanelSource, type PipelineActivationMode, type PipelineCompletedEvent, PipelineCompletedEventSchema, type PipelineConfig, PipelineConfigSchema, type PipelineDriftSummary, PipelineDriftSummarySchema, type PipelineEditorDecisionsReadyEvent, PipelineEditorDecisionsReadyEventSchema, type PipelineEvent, type PipelineForkedEvent, PipelineForkedEventSchema, type PipelineFormat, type PipelineInput, PipelineInputSchema, type PipelineLifecycleEvent, type PipelineMode, type PipelineModelStage, type PipelineMusicReadyEvent, PipelineMusicReadyEventSchema, type PipelineOutputResolution, type PipelinePinnableImageModel, type PipelinePinnableScriptLlm, type PipelinePinnableVideoModel, type PipelineStageName, PipelineStageNameSchema, type PipelineStageStatus, PipelineStageStatusSchema, type PipelineState, PipelineStateSchema, type PipelineStatus, PipelineStatusSchema, type PipelineType, type PixelBox, type PresentationItem, type PresetEntry, type PresetSettingKey, type PresetSettings, PresetSettingsSchema, type PriceVariant, type PricedVideoSelection, type ProgressSegment, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, type PromptAffixFields, type PromptAffixes, type ProposedChange, type PublishListingParams, type PublishListingResult, QA_CHECK_PROVIDERS, type QaCheckProvider, type QualityLevel, REDUCE_STRATEGIES, REDUCE_STRATEGY_IDS, REFERENCE_BOARD_PROVIDERS, REFERENCE_BOARD_TEMPLATES, REFERENCE_HANDLE_MAP, REFERENCE_ROLE_PRESETS, REF_HANDLE_CATEGORY, REF_IMAGE_MAX_LIMITS, REF_TOKEN_NAMESPACE_PREFIXES, RENDERING_SPEED_SUPPORT, REPEATABLE_NODE_TYPES, REPEAT_PLACEHOLDER, REPLICATE_LIP_SYNC_PROVIDERS, RESERVED_TEMPLATE_VARS, type ReduceMeta, type ReduceStrategy, type ReduceStrategyId, type RefCandidate, type RefModalityEdge, type RefTokenKind, type RefVideoDurationLimit, type ReferenceBoardProvider, type ReferenceModality, type ReferenceSheet, type ReferenceSource, type ReportListingResult, type ResolveCharacterAspectOptions, type ResolveObjectAspectOptions, type ResolveSeparatorOptions, type ResolvedDialogueVoiceLine, type RouterConditionGroup, SCENE3D_ASSET_KINDS, SCENE3D_ASSET_ROLES, SCENE3D_ASSET_ROLE_KINDS, SCENE3D_CAMERA_TRACK_FORMAT, SCENE3D_CAMERA_TRACK_LIMITS, SCENE3D_CAMERA_TRACK_VERSION, SCENE3D_CLAY_LIGHTING_PRESETS, SCENE3D_DEFAULT_DURATION_SECONDS, SCENE3D_DEFAULT_ENTITY_CAPABILITIES, SCENE3D_DEFAULT_FPS, SCENE3D_EDIT_NODE_TYPE, SCENE3D_ENTITY_CAPABILITIES, SCENE3D_ENTITY_ROLES, SCENE3D_GENERATE_NODE_TYPE, SCENE3D_GLB_EXTRAS_ALLOWLIST, SCENE3D_GLB_EXTRAS_ENTITY_ID, SCENE3D_GLB_EXTRAS_MATERIAL_ROLE, SCENE3D_GLB_EXTRAS_SUBPART_ID, SCENE3D_LIMITS, SCENE3D_PLAN_FIELD, SCENE3D_PLAN_TYPE, SCENE3D_PRIMITIVES, SCENE3D_PRIMITIVE_MATERIAL_ROLE, SCENE3D_RENDERER_ASSET_KINDS, SCENE3D_SCHEMA_VERSION, SCENE3D_SCHEMA_VERSION_V2, SCENE3D_SUPPORTED_SCHEMA_VERSIONS, SCENE3D_V2_CONTENT_HASH_EXCLUDED, SCENE3D_V2_ENGINES, SCENE3D_V2_LIMITS, SCENE3D_V2_OVERRIDE_OPERATION_VERSION, SCENE3D_V2_PRIMITIVES, SCENE_HELPER_NAMES, SCRAPER_ACTOR_LABELS, SCRAPER_CREDIT_COSTS, SCRAPER_OUTPUT_FIELDS, SCRIPT_PROVIDERS, SEASONS, SECTION_BOARD, SECTION_KINDS, SEEDANCE_2_5_REF_LIMITS, SEEDANCE_2_CONTINUATION_REF_SEC, SEEDANCE_2_EXTEND_STITCH, SEEDANCE_2_PROVIDERS, SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER, SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC, SEEDANCE_2_REF_LIMITS, SEEDANCE_LIP_SYNC_PROVIDERS, SEED_SUPPORT, SEPARATOR_DISPLAY, SEPARATOR_PRESETS, SHEET_ASPECTS, SHEET_BACKGROUNDS, SHEET_PRESETS, SHEET_SKINS, SHEET_TYPES, SHORT_FILM_ANGLE_COUNT, SHORT_FILM_EXPRESSION_COUNT, SHORT_FILM_VARIANT_THRESHOLD_SEC, SLOT_TOKEN_RE, SMART_CUT_WINDOW_DEFAULT, SMART_CUT_WINDOW_MAX, SMART_CUT_WINDOW_MIN, SOCIAL_POST_NODE_TYPES, STAGE_PATCH_SCHEMA, STATIC_CAPTION_STYLES, STRUCTURAL_SECTIONS, STRUCTURED_VISION_MODELS, STUDIO_SHOT_TRANSIENT_KEYS, STUDIO_TRANSIENT_KEYS, SUBMISSION_STATUSES, SUNO_ADD_TRACK_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_HARD_CEILING, SUNO_MODELS, SUNO_SELECT_OPERATIONS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, SUNO_VERSION_PRICED_OPERATIONS, SUPPORTED_FONT_NAMES, SURROUND_DIRECTIONS, SWITCHX_BLOCK_FRAMES, SWITCHX_FRAME_TIERS, type SafetyRetryPolicy, type Scene3DAnchor, type Scene3DAssetAnimation, type Scene3DAssetKind, type Scene3DAssetRef, type Scene3DAssetRole, type Scene3DCamera, type Scene3DCameraChanges, type Scene3DCameraKeyframe, type Scene3DCameraSample, type Scene3DCameraTrackV1, type Scene3DClayLighting, type Scene3DClayLightingPreset, type Scene3DEasing, type Scene3DEditErrorCode, type Scene3DEditOperation, type Scene3DEditOptions, type Scene3DEditResult, type Scene3DEntityCapability, type Scene3DEntityRole, type Scene3DEntityV2, type Scene3DEntityVisual, type Scene3DJobOutput, type Scene3DJobOutputAny, type Scene3DJobOutputV2, type Scene3DKnownEngine, type Scene3DLighting, type Scene3DLightingChanges, type Scene3DMaterialBinding, type Scene3DNormalizedAssetStats, type Scene3DObject, type Scene3DObjectChanges, type Scene3DObjectKeyframe, type Scene3DOverride, type Scene3DOverrideSpace, type Scene3DParseResult, type Scene3DPlan, type Scene3DPlanV1, type Scene3DPlanV2, type Scene3DPrimitive, type Scene3DProvenance, type Scene3DReference, type Scene3DReferenceKind, type Scene3DReferenceRole, type Scene3DSemanticIssue, type Scene3DShot, type Scene3DSupportedSchemaVersion, type Scene3DV2EditOperation, type Scene3DV2EditOptions, type Scene3DV2EditResult, type Scene3DV2OverrideInput, type Scene3DV2Primitive, type Scene3DV2ResourceUsage, type SceneData, type SceneHelperName, SceneHelperNameSchema, type SceneInputMode, SceneInputModeSchema, type SceneMetadata, SceneMetadataSchema, type SceneNodeData, SceneNodeDataSchema, SceneSpecSchema, type ScraperActorId, type ScriptCriticVerdict, ScriptCriticVerdictSchema, type ScriptProvider, type Season, type SectionKind, type SelectorConfig, type SelectorFields, type SelectorMode, type SelectorPredicateOp, type SelectorResult, type SemanticAspectRatio, type SeparatorPreset, type SharedListing, type SharedVoice, type SheetAspect, type SheetBackground, type SheetCostEstimate, type SheetEntry, type SheetFlavour, type SheetGenerationPlan, type SheetPreset, type SheetPresetId, type SheetSection, type SheetSkin, type SheetTextData, type SheetType, type ShotElement, type ShotImageElement, type ShotShapeElement, type ShotSpec, ShotSpecSchema, type ShotTextElement, type ShowrunnerPlan, ShowrunnerPlanSchema, type SidecarLoader, type SlotControlDescriptor, type SlotControlKind, type SlotVariation, type SocialMediaContentType, type SocialMediaPlatform, type SocialMediaSpec, type SortDirection, type SortListOptions, type SortType, type StageAwaitingSubGateEvent, StageAwaitingSubGateEventSchema, type StaticCaptionStyle, type StoryboardCohesionCriticVerdict, StoryboardCohesionCriticVerdictSchema, type StyleDirectives, StyleDirectivesSchema, type SubGateName, SubGateNameSchema, type SubmissionStatus, type SunoAddTrackModel, type SunoModel, type SupportedFontName, type SurroundDirection, type Swatch, T2I_TO_I2I_VARIANT, TASK_CHAINED_EDIT_PROVIDERS, TEXT_TO_AUDIO_PROVIDERS, TEXT_TO_VIDEO_PROVIDERS, TIER_MAX_PIPELINE_COST_CREDITS, TIER_PIPELINE_PARALLELISM, TILT_CARRIED_FRACTION, TOPAZ_DEFAULT_UPSCALE_FACTOR, TOPAZ_UPSCALE_FACTORS, TRANSCRIBE_PROVIDERS, TRANSIENT_RUNTIME_KEYS, TTS_PROVIDERS, TTS_TEXT_MAX, TWO_K_RESOLUTION_PROVIDERS, type TextToAudioProvider, type TextToVideoProvider, type TopazUpscaleAdjustment, type TopazUpscaleFactor, type TopazUpscaleResolution, type TranscribeProvider, type TransitionType, TransitionTypeSchema, type TrimVideoEstimatorInput, type TtsProvider, UPSCALE_IMAGE_PROVIDERS, USAGE_GROUP_BYS, USAGE_MODES, type UpscaleImageProvider, type UsageGroupBy, type UsageLogEntry, type UsageMode, type UsageQuery, type UsageReport, type UsageReportRow, type UsageReportTotals, type UsageVarianceRow, VARIABLES_HANDLE_ID, VARIABLE_PRICING_MODELS, VEHICLES, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, VEO_PROVIDERS, VIDEO_ANALYSIS_AUDIO_MODES, VIDEO_ANALYSIS_BUCKET_CREDITS, VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN, VIDEO_ANALYSIS_DEFAULT_VARIATION, VIDEO_ANALYSIS_DURATION_BUCKETS, VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC, VIDEO_ANALYSIS_ENTITY_SOURCES, VIDEO_ANALYSIS_FACELESS_ANGLES, VIDEO_ANALYSIS_LEGACY_MODELS, VIDEO_ANALYSIS_LLM_MODELS, VIDEO_ANALYSIS_MAX_DURATION_SEC, VIDEO_ANALYSIS_MAX_SCENE_SEC, VIDEO_ANALYSIS_MAX_VARIATIONS, VIDEO_ANALYSIS_MIXED_TIERS, VIDEO_ANALYSIS_SHOT_ANGLES, VIDEO_ANALYSIS_SPEED_EFFECTS, VIDEO_ANALYSIS_STORY_JUMPS, VIDEO_ANALYSIS_TEXT_KINDS, VIDEO_ANALYSIS_TIERS, VIDEO_ANALYSIS_TIER_LABELS, VIDEO_ANALYSIS_TIER_ORDER, VIDEO_ANALYSIS_TIMES_OF_DAY, VIDEO_ANALYSIS_TRANSITIONS, VIDEO_ANALYSIS_VARIATION_SLUGS, VIDEO_ANALYSIS_VISUAL_EFFECTS, VIDEO_ANALYSIS_WINDOW, VIDEO_AUDIO_CAPABILITY, VIDEO_AUDIT_BUCKET_CREDITS, VIDEO_CLIP_CREDITS, VIDEO_CRITIC_CREDITS_PER_SHOT, VIDEO_CRITIC_FRAME_MODES, VIDEO_CRITIC_MAX_RETRIES, VIDEO_CRITIC_METADATA_KEYS, VIDEO_CRITIC_MIN_ADHERENCE_SCORE, VIDEO_DURATION_TIERS, VIDEO_GEN_COLLAPSED_T2V_IDS, VIDEO_GEN_PROVIDERS, VIDEO_INPUT_LIP_SYNC_PROVIDERS, VIDEO_MODEL_CAPS, VIDEO_MODE_ALIASES, VIDEO_PRODUCER_TYPES, VIDEO_PROMPT_MAX, VIDEO_PROVIDERS_REQUIRING_IMAGE, VIDEO_PROVIDERS_WITHOUT_DISPATCH, VIDEO_REF_LIMITS_BY_PROVIDER, VIDEO_REF_VIDEO_DURATION_LIMITS, VIDEO_TO_VIDEO_PROVIDERS, VIDEO_UPSCALE_PROVIDERS, VIDEO_UTIL_PRICING, VIDEO_VARIABLE_PRICING, VOICE_CHANGER_MODELS, VOICE_CHANGER_MODEL_IDS, VOICE_DESIGN_MODELS, type ValidateMatchCutInput, ValidateMatchCutInputSchema, type ValidateMatchCutResult, ValidateMatchCutResultSchema, type ValidationField, type Vec3, type Vehicle, type VehicleSubcategory, type VideoAnalysisAudioMode, type VideoAnalysisClipTransitionIn, type VideoAnalysisEntitySource, type VideoAnalysisMixedTier, type VideoAnalysisModelTier, type VideoAnalysisResult, type VideoAnalysisShotAngle, type VideoAnalysisSpeedEffect, type VideoAnalysisTextKind, type VideoAnalysisTier, type VideoAnalysisTransition, type VideoAnalysisVisualEffect, type VideoAudioCapability, type VideoAudioMode, type VideoClipCost, type VideoCriticFrameMode, type VideoCriticMetadataKey, type VideoCriticShotFields, type VideoCriticVerdict, VideoCriticVerdictSchema, type VideoGenProvider, type VideoModeAlias, type VideoModelCapabilities, type VideoToVideoProvider, type VideoUpscaleProvider, type Voice, type VoiceChangerModel, type VoiceClone, type VoiceDesignModel, type VoiceLibraryParams, type VoiceLibraryResponse, type VoiceMatch, VoiceMatchSchema, type VoiceType, WAN_3_DEFAULT_RESOLUTION, WAN_3_PROVIDERS, WARDROBE_VARIANTS, WEAPONS, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, WORKFLOW_VISIBILITIES, WORKSPACE_HEADER, WORKSPACE_HEADER_LOWER, WORKSPACE_ROLES, type Weapon, type WeaponSubcategory, type WindowAnalysis, type WindowScene, type WorkflowAssetKind, type WorkflowExport, type WorkflowExportCharacter, type WorkflowExportCreature, type WorkflowExportLocation, type WorkflowExportObject, type WorkflowImportReport, type WorkflowImportSkippedAsset, type WorkflowMediaRef, type WorkflowPortability, type WorkflowVisibility, type WorkspaceMemberView, type WorkspaceRole, type WorkspaceSettings, WorkspaceSettingsSchema, type WorkspaceSummary, type WorkspaceView, aggregateByType, aiAvatarReserveCreditId, analyzedSceneSchema, applyDefaultVideoSelection, applyHandleInputOverride, applyRange, applyRangeIndices, applyScene3DEditOperations, applyScene3DV2EditOperations, applySlots, applyVideoAudioToggle, applyVideoNegativePrompt, aspectRatioFromDims, aspectRatioOptionsByKind, aspectRatioToNumber, assembleNarratedVideoCredits, availableReasoningEfforts, bucketSecondsFromAuditCreditId, bucketSecondsFromCreditId, buildBoardPrompt, buildChildrenByParent, buildConditionVariables, buildCreditModelIdentifier, buildExpressionFromVisual, buildLipSyncCreditId, buildLlmCreditIdentifier, buildModelMenu, buildModelTree, buildMotionCreditModelIdentifier, buildNodePresetExport, buildPanelPrompt, buildProgressSegments, buildRangeLabel, buildScraperCreditId, buildVideoAnalysisCreditId, buildVideoAuditCreditId, buildVideoCreditModelIdentifier, calculateCombinedProgress, calculateMonetizationMarkup, calculateMonetizedCost, calculateProgress, canonicalScene3DPlanV2Json, canonicalVarName, characterBoardItems, characterBucketDisplayRank, characterMentionSlug, characterMentionableAssetArrays, characterSheetRefItems, characterVariantAssetArrays, checkRefVideoDurations, cinematicCreditId, clampCinematicDuration, clampSmartCutWindow, classifyRefToken, cleanOrphanedItems, clearImageCriticMetadata, clearVideoCriticMetadata, clipLookSchema, collectAncestorRefs, combineSameLabelRefs, computeAggregateLanes, computeScene3DPlanV2ContentHash, countRefModalityEdges, creditRangesAll, creditsToUsd, decodeProviderItem, defaultCarriedFraction, defaultResolutionFor, defaultRoleForSource, defaultVideoAspectRatio, deriveLinkedFields, deriveLottieSlotFields, deriveSlotRefs, describeEdgeBehavior, describeMaskRegion, describeNodeAdjustments, describeSlotControl, dropUnknownBindings, dropUnknownSpeakers, durationsByMode, effectiveReasoningEffort, encodeProviderItem, ensureLocaleCatalogLoaded, entityHydrationColumns, entityMentionSlug, entityMentionSlugForRef, entityScalarFields, entitySlotSchema, entryMatchesQuery, estimateCombineVideosCredits, estimateFilmCredits, estimateLoopTrimAddonCredits, estimateLoopVideoCredits, estimateScriptDurationSec, estimateSheetCost, estimateTrimVideoCredits, evaluateCondition, evaluateConditionGroup, evaluateJsonExpression, evaluateJsonPath, expandExtraRefsToConnectedReferences, expandItemsWithRepeat, extractAllGeneratedResults, extractCharacterLoraFields, extractGeneratedJsonAsList, extractPresetData, extractReferencedLabels, extractVideoDurationFromNode, fieldKeyFromHandle, filterCloneNodes, findCharacterMentionTokens, findEntityMentionTokens, findImageMentionTokens, findLocationMentionTokens, findSeedance2AudioOverLimit, firstSightExtraRole, flattenItems, getAnimal, getAnimalLabel, getAnimalPromptHint, getAnimalTerm, getAspectRatioOptions, getAudioCrossfadeCurve, getCharacterFacet, getCombineTransition, getCreditRange, getDurationsForModel, getEffectiveRepeatCount, getFeaturedEntities, getFurniture, getFurnitureLabel, getInputFieldSchema, getInputNodes, getItemSortId, getLipSyncMaxAudioSeconds, getLlmModalityCaps, getLlmModel, getLlmTier, getLocaleDirection, getMaxImagePromptChars, getMaxNegativePromptChars, getMaxSunoPromptChars, getMaxSunoStyleChars, getMaxTtsChars, getMaxVideoPromptChars, getModel, getNodeLabel, getNodeResult, getOutputNodes, getOutputType, getParameterValue, getQualityOptions, getResolutionOptions, getRouteReachableNodeIds, getStrategy, getTargetField, getValidValues, getVehicle, getVehicleLabel, getVideoAudioCapability, getWeapon, getWeaponLabel, groupByFamily, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hexToRgbaArray, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageReferenceLimit, inferMusicVideo, isAggregateableType, isCharacterAspectRatio, isCollectInEdge, isDefaultSelectorConfig, isExpandedClone, isFlux2Model, isGeminiOmniProvider, isGvpSupportedProvider, isHandleInputWired, isKineticCaptionStyle, isKnownScene3DEngine, isLocationUsageMode, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isScene3DCameraTrack, isScene3DHttpUrl, isScene3DPlan, isScene3DPlanV1, isScene3DPlanV2, isScene3DSchemaVersionSupported, isScraperActor, isSeedance2Provider, isTiltDirection, isUsageMode, isVeoProvider, isVideoAnalysisMixedTier, isVideoAnalysisTier, isWan3Provider, jsonResultToList, knownEntitySlugsFromRefs, knownImageSlugsFromRefs, listBoardTemplates, listModels, listSlotSids, llmRouteDefaults, locationMentionSlug, locationReferencePhotoKindLabel, locationUsageModeLabel, mapAspectRatio, mapQuality, mapShotIntentToProviderDirectives, matchVariant, maxSegmentSecFor, maxSegmentsFor, mergeClipLook, mergeExposedSettings, migrateEdgeOutputMode, migrateToItems, minSegmentSecFor, modelIdsByKindMode, modelToNodeTarget, modelsForInputMode, modelsWithFeature, motionGraphicsFeature, newScene3DRevisionId, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, normalizeVideoRequestParams, normalizeWan3Resolution, orderedLlmModels, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, parseScene3DCameraTrackJson, parseScene3DPlanV2Json, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, pricedVideoSelection, qualityOptionsByKind, readPromptAffixes, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, renderAnalyzedScene, resetCatalogSidecars, resolutionOptionsByKind, resolveAiAvatarCreditId, resolveAudioCrossfadeCurve, resolveCharacterAspectRatio, resolveCinematicCreditId, resolveConditionValue, resolveDefaultRole, resolveDescription, resolveDialogueVoices, resolveEffectiveSourceType, resolveEffectiveTier, resolveEntityAspect, resolveFieldMappings, resolveGvpAnchorWire, resolveImageGenCreditIdentifier, resolveIndex, resolveLabel, resolveListExpression, resolveLlmCreditId, resolveLocationFields, resolveLocationPresetCatalog, resolveLottieOverlaySrc, resolveNodeRefs, resolveNormalizedImageGen, resolveObjectAspectRatio, resolvePipelineModel, resolveRelativeWindowToken, resolveScraperCreditId, resolveSelectorRefs, resolveSeparator, resolveSheetSections, resolveSlideshowTransition, resolveSourceThroughConnectedList, resolveStoredTier, resolveSwitchXCreditId, resolveTopazUpscale, resolveVideoAnalysisModel, resolveVideoModeForInputs, resolveVideoProviderForMode, resolveXfadeName, rewriteSceneBindings, rewriteSlotTokens, rewriteSpeakerSlots, rgbaArrayToHex, roleToPhrase, rotationVec3Schema, runSelector, safetyRetryPolicy, sanitizeRole, scaleVec3Schema, scene3DAcceptedSchemaVersionsSchema, scene3DAnchorNameSchema, scene3DAnchorSchema, scene3DAnyPlanSchema, scene3DAssetAnimationSchema, scene3DAssetIdSchema, scene3DAssetRefSchema, scene3DCameraChangesSchema, scene3DCameraKeyframeSchema, scene3DCameraSampleSchema, scene3DCameraSchema, scene3DCameraTrackIssues, scene3DCameraTrackObjectSchema, scene3DCameraTrackPlanIssues, scene3DCameraTrackSchema, scene3DClayLightingSchema, scene3DColorSchema, scene3DDeepEqual, scene3DEasingSchema, scene3DEditOperationSchema, scene3DEditOperationsSchema, scene3DEngineIdSchema, scene3DEntityAcceptsOverlay, scene3DEntityCapabilitySchema, scene3DEntityV2Schema, scene3DEntityVisualSchema, scene3DIdSchema, scene3DJsonByteLength, scene3DLightingChangesSchema, scene3DLightingSchema, scene3DMaterialBindingSchema, scene3DMaterialNameSchema, scene3DMaterialRoleSchema, scene3DNodeIdSchema, scene3DObjectChangesSchema, scene3DObjectKeyframeSchema, scene3DObjectSchema, scene3DOverrideSchema, scene3DPlanIssues, scene3DPlanSchema, scene3DPlanSchemaVersion, scene3DPlanV1Issues, scene3DPlanV1ObjectSchema, scene3DPlanV1Schema, scene3DPlanV2Issues, scene3DPlanV2ObjectSchema, scene3DPlanV2Schema, scene3DPrimitiveSchema, scene3DProjectionIssues, scene3DProvenanceSchema, scene3DReferenceSchema, scene3DSampleForFrame, scene3DSha256Schema, scene3DShotForFrame, scene3DShotIndexForFrame, scene3DShotSchema, scene3DUrlSchema, scene3DV2AdmissionIssues, scene3DV2EditOperationSchema, scene3DV2EditOperationsSchema, scene3DV2HierarchyDepth, scene3DV2NormalizationIssues, scene3DV2OverrideInputSchema, scene3DV2ResourceUsage, scene3DVersionTokenSchema, scene3DZodIssues, searchModelVariants, seedance2AudioLimitSec, segmentDurationsFor, selectByModulo, selectByNamedKey, selectByPredicate, selectListItems, selectLoraRoutingForMentions, selectRandom, setRegisteredPersonPackFields, settledWithLimit, sizeVec3Schema, slotVariationSchema, sortCharacterEntriesForDisplay, sortListItems, sourceRefKey, spliceDelimitedRows, splitByLoopDelimiter, splitGeneratedItems, spreadJsonArrayIfSingleton, stringifyPathResults, stripDerivedAnalysisFields, stripExportContent, stripStudioTransientSettings, stripTransientRuntimeData, summarizeScene3DOperations, sunoCreditType, supportedDefaultDimensions, supportsAdvancedMode, supportsEndAnchor, supportsExtendRender, toConnectedReference, toConnectedReferences, togglePick, tryParseJson, uiAspectRatioFill, uiDurationFill, uiResolutionFill, unresolvedRefTokens, unwrapUnresolvedTokens, usageModeDirective, usageModeIncludesName, usageModeLabel, usdToCredits, validateAiAvatarPayload, validateCinematicAvatarPayload, validateDurationForFormat, validateModeActivation, validateModelInput, validateNoNestedGroups, validateObjects, validateProviderForNodeType, validateSubWorkflowRoutes, variantJobId, vec3Schema, verifyScene3DPlanV2ContentHash, videoAnalysisCreditSegment, videoAnalysisNumWindows, videoAnalysisResultSchema, videoAuditCreditsForBucket, videoModelCanSpeakDialogue, videoModelSupportsAudio, videoNegativeSuffix, videoProviderFoldsLoneEndFrame, videoProviderRequiresImage, windowAnalysisSchema, zipMergeLists };
|