@lumenkey/cli 0.3.1 → 0.4.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +36 -2
  2. package/dist/cli/copied.js +86 -85
  3. package/dist/cli/index.js +56 -44
  4. package/dist/cli/render.js +3 -2
  5. package/dist/core/asset-stream.d.ts +16 -0
  6. package/dist/core/asset-stream.js +64 -0
  7. package/dist/core/atomic-config-file.js +8 -7
  8. package/dist/core/chinese-messages.d.ts +4 -0
  9. package/dist/core/chinese-messages.js +907 -0
  10. package/dist/core/chinese-script.d.ts +7 -0
  11. package/dist/core/chinese-script.js +28 -0
  12. package/dist/core/client.js +2 -1
  13. package/dist/core/config-dir.js +2 -1
  14. package/dist/core/config.js +7 -6
  15. package/dist/core/download-root.d.ts +5 -0
  16. package/dist/core/download-root.js +64 -0
  17. package/dist/core/download.js +15 -12
  18. package/dist/core/generation-input.js +3 -2
  19. package/dist/core/generation.d.ts +8 -1
  20. package/dist/core/generation.js +13 -10
  21. package/dist/core/job-display.js +7 -6
  22. package/dist/core/locale.js +163 -148
  23. package/dist/core/outcome.js +6 -4
  24. package/dist/core/output-path.d.ts +3 -1
  25. package/dist/core/output-path.js +5 -2
  26. package/dist/core/params.js +26 -25
  27. package/dist/core/profiles.js +5 -4
  28. package/dist/core/set-values.d.ts +0 -1
  29. package/dist/core/set-values.js +7 -7
  30. package/dist/core/submission-journal.js +31 -16
  31. package/dist/core/version.js +2 -3
  32. package/dist/mcp/server.js +30 -29
  33. package/dist/studio/asset-integrity-hash.d.ts +28 -0
  34. package/dist/studio/asset-integrity-hash.js +93 -0
  35. package/dist/studio/asset-integrity-queue.d.ts +24 -0
  36. package/dist/studio/asset-integrity-queue.js +94 -0
  37. package/dist/studio/asset-store.d.ts +52 -0
  38. package/dist/studio/asset-store.js +352 -0
  39. package/dist/studio/canvas/LICENSES.txt +1590 -0
  40. package/dist/studio/canvas/dependencies.json +862 -0
  41. package/dist/studio/canvas/director-source-manifest.json +47 -0
  42. package/dist/studio/canvas/editor.css +239 -0
  43. package/dist/studio/canvas/editor.js +4613 -0
  44. package/dist/studio/canvas/integration-source-manifest.json +384 -0
  45. package/dist/studio/canvas/source-manifest.json +240 -0
  46. package/dist/studio/canvas-store.d.ts +1254 -0
  47. package/dist/studio/canvas-store.js +205 -0
  48. package/dist/studio/capture-placement.d.ts +11 -0
  49. package/dist/studio/capture-placement.js +85 -0
  50. package/dist/studio/cloud-contract.d.ts +128 -0
  51. package/dist/studio/cloud-contract.js +229 -0
  52. package/dist/studio/cloud-service.d.ts +178 -0
  53. package/dist/studio/cloud-service.js +202 -0
  54. package/dist/studio/director-captures.d.ts +59 -0
  55. package/dist/studio/director-captures.js +141 -0
  56. package/dist/studio/director-contract.d.ts +1489 -0
  57. package/dist/studio/director-contract.js +288 -0
  58. package/dist/studio/director-png.d.ts +6 -0
  59. package/dist/studio/director-png.js +41 -0
  60. package/dist/studio/director-relations.d.ts +40 -0
  61. package/dist/studio/director-relations.js +103 -0
  62. package/dist/studio/document-authority.d.ts +7 -0
  63. package/dist/studio/document-authority.js +50 -0
  64. package/dist/studio/draft-store.d.ts +95 -0
  65. package/dist/studio/draft-store.js +100 -0
  66. package/dist/studio/errors.d.ts +85 -0
  67. package/dist/studio/errors.js +94 -0
  68. package/dist/studio/launch.d.ts +5 -0
  69. package/dist/studio/launch.js +31 -0
  70. package/dist/studio/media.d.ts +9 -0
  71. package/dist/studio/media.js +50 -0
  72. package/dist/studio/output-save-contract.d.ts +1321 -0
  73. package/dist/studio/output-save-contract.js +26 -0
  74. package/dist/studio/output-save-journal.d.ts +971 -0
  75. package/dist/studio/output-save-journal.js +287 -0
  76. package/dist/studio/output-save-recovery.d.ts +18 -0
  77. package/dist/studio/output-save-recovery.js +161 -0
  78. package/dist/studio/output-save-service.d.ts +436 -0
  79. package/dist/studio/output-save-service.js +251 -0
  80. package/dist/studio/output-save-worker.d.ts +40 -0
  81. package/dist/studio/output-save-worker.js +360 -0
  82. package/dist/studio/paths.d.ts +6 -0
  83. package/dist/studio/paths.js +68 -0
  84. package/dist/studio/run-journal.d.ts +993 -0
  85. package/dist/studio/run-journal.js +125 -0
  86. package/dist/studio/server.d.ts +17 -0
  87. package/dist/studio/server.js +440 -0
  88. package/dist/studio/session.d.ts +6 -0
  89. package/dist/studio/session.js +26 -0
  90. package/dist/studio/shell.d.ts +3 -0
  91. package/dist/studio/shell.js +23 -0
  92. package/dist/studio/style.d.ts +2 -0
  93. package/dist/studio/style.js +29 -0
  94. package/dist/studio/types.d.ts +26 -0
  95. package/dist/studio/types.js +2 -0
  96. package/dist/studio/web/app.d.ts +2 -0
  97. package/dist/studio/web/app.js +662 -0
  98. package/dist/studio/web/asset-controller.d.ts +37 -0
  99. package/dist/studio/web/asset-controller.js +191 -0
  100. package/dist/studio/web/asset-model.d.ts +29 -0
  101. package/dist/studio/web/asset-model.js +51 -0
  102. package/dist/studio/web/controller.d.ts +113 -0
  103. package/dist/studio/web/controller.js +401 -0
  104. package/dist/studio/web/messages.d.ts +2 -0
  105. package/dist/studio/web/messages.js +74 -0
  106. package/dist/studio/web/model.d.ts +75 -0
  107. package/dist/studio/web/model.js +182 -0
  108. package/dist/studio/web/save-controller.d.ts +85 -0
  109. package/dist/studio/web/save-controller.js +495 -0
  110. package/dist/studio/web/save-model.d.ts +63 -0
  111. package/dist/studio/web/save-model.js +64 -0
  112. package/dist/studio/web/save-queue.d.ts +7 -0
  113. package/dist/studio/web/save-queue.js +62 -0
  114. package/dist/studio/web/save-view.d.ts +9 -0
  115. package/dist/studio/web/save-view.js +19 -0
  116. package/dist/studio/writer-lock.d.ts +5 -0
  117. package/dist/studio/writer-lock.js +88 -0
  118. package/package.json +11 -5
  119. package/dist/cli/copied.d.ts.map +0 -1
  120. package/dist/cli/copied.js.map +0 -1
  121. package/dist/cli/index.d.ts.map +0 -1
  122. package/dist/cli/index.js.map +0 -1
  123. package/dist/cli/render.d.ts.map +0 -1
  124. package/dist/cli/render.js.map +0 -1
  125. package/dist/core/atomic-config-file.d.ts.map +0 -1
  126. package/dist/core/atomic-config-file.js.map +0 -1
  127. package/dist/core/chat.d.ts.map +0 -1
  128. package/dist/core/chat.js.map +0 -1
  129. package/dist/core/client.d.ts.map +0 -1
  130. package/dist/core/client.js.map +0 -1
  131. package/dist/core/config-dir.d.ts.map +0 -1
  132. package/dist/core/config-dir.js.map +0 -1
  133. package/dist/core/config-error.d.ts.map +0 -1
  134. package/dist/core/config-error.js.map +0 -1
  135. package/dist/core/config.d.ts.map +0 -1
  136. package/dist/core/config.js.map +0 -1
  137. package/dist/core/credit-cap.d.ts.map +0 -1
  138. package/dist/core/credit-cap.js.map +0 -1
  139. package/dist/core/download.d.ts.map +0 -1
  140. package/dist/core/download.js.map +0 -1
  141. package/dist/core/error-result.d.ts.map +0 -1
  142. package/dist/core/error-result.js.map +0 -1
  143. package/dist/core/explain.d.ts.map +0 -1
  144. package/dist/core/explain.js.map +0 -1
  145. package/dist/core/generation-input.d.ts.map +0 -1
  146. package/dist/core/generation-input.js.map +0 -1
  147. package/dist/core/generation-result.d.ts.map +0 -1
  148. package/dist/core/generation-result.js.map +0 -1
  149. package/dist/core/generation.d.ts.map +0 -1
  150. package/dist/core/generation.js.map +0 -1
  151. package/dist/core/job-display.d.ts.map +0 -1
  152. package/dist/core/job-display.js.map +0 -1
  153. package/dist/core/locale.d.ts.map +0 -1
  154. package/dist/core/locale.js.map +0 -1
  155. package/dist/core/origin.d.ts.map +0 -1
  156. package/dist/core/origin.js.map +0 -1
  157. package/dist/core/outcome.d.ts.map +0 -1
  158. package/dist/core/outcome.js.map +0 -1
  159. package/dist/core/output-path.d.ts.map +0 -1
  160. package/dist/core/output-path.js.map +0 -1
  161. package/dist/core/params.d.ts.map +0 -1
  162. package/dist/core/params.js.map +0 -1
  163. package/dist/core/poller.d.ts.map +0 -1
  164. package/dist/core/poller.js.map +0 -1
  165. package/dist/core/profiles.d.ts.map +0 -1
  166. package/dist/core/profiles.js.map +0 -1
  167. package/dist/core/set-values.d.ts.map +0 -1
  168. package/dist/core/set-values.js.map +0 -1
  169. package/dist/core/submission-journal.d.ts.map +0 -1
  170. package/dist/core/submission-journal.js.map +0 -1
  171. package/dist/core/types.d.ts.map +0 -1
  172. package/dist/core/types.js.map +0 -1
  173. package/dist/core/version.d.ts.map +0 -1
  174. package/dist/core/version.js.map +0 -1
  175. package/dist/core/wait.d.ts.map +0 -1
  176. package/dist/core/wait.js.map +0 -1
  177. package/dist/index.d.ts.map +0 -1
  178. package/dist/index.js.map +0 -1
  179. package/dist/mcp/render.d.ts.map +0 -1
  180. package/dist/mcp/render.js.map +0 -1
  181. package/dist/mcp/server.d.ts.map +0 -1
  182. package/dist/mcp/server.js.map +0 -1
@@ -0,0 +1,1489 @@
1
+ import { z } from 'zod';
2
+ export declare const DIRECTOR_MAX_SCENE_BYTES: number;
3
+ export declare const DIRECTOR_ASPECTS: readonly ["自适应", "1:1", "2:1", "3:4", "4:3", "16:9", "21:9", "9:16"];
4
+ export declare const DIRECTOR_BODY_TYPES: readonly ["mannequin", "female", "broad", "muscular", "slim", "teen", "child", "chibi"];
5
+ export declare const DIRECTOR_POSES: readonly ["stand", "t-pose", "walk", "run", "sit", "crouch", "kneel-one", "kneel-two", "hands-on-hips", "lean", "bow", "think", "fight", "kick", "throw", "push", "wave", "reach", "cross-arms", "phone"];
6
+ export declare const DIRECTOR_PRIMITIVES: readonly ["box", "sphere", "cylinder", "cone", "torus", "pyramid", "empty"];
7
+ export declare const directorUuid: z.ZodString;
8
+ declare const motionPathSchema: z.ZodObject<{
9
+ closed: z.ZodBoolean;
10
+ smooth: z.ZodBoolean;
11
+ uniform: z.ZodBoolean;
12
+ points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, "many">;
13
+ }, "strict", z.ZodTypeAny, {
14
+ closed: boolean;
15
+ smooth: boolean;
16
+ uniform: boolean;
17
+ points: [number, number, number][];
18
+ }, {
19
+ closed: boolean;
20
+ smooth: boolean;
21
+ uniform: boolean;
22
+ points: [number, number, number][];
23
+ }>;
24
+ export declare const DIRECTOR_CAMERA_MOVES: readonly ["orbit", "halfArc", "pushIn", "pullOut", "pedestal", "truck", "helix", "rollerCoaster"];
25
+ export declare const DIRECTOR_TRANSITIONS: readonly ["dissolve", "flashWhite", "flashBlack", "flashBlack2", "flashWhite2"];
26
+ declare const sceneSchema: z.ZodEffects<z.ZodObject<{
27
+ version: z.ZodLiteral<1>;
28
+ sceneId: z.ZodString;
29
+ sceneRevision: z.ZodNumber;
30
+ objects: z.ZodArray<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
31
+ kind: z.ZodLiteral<"mannequin">;
32
+ bodyType: z.ZodEnum<["mannequin", "female", "broad", "muscular", "slim", "teen", "child", "chibi"]>;
33
+ pose: z.ZodEnum<["stand", "t-pose", "walk", "run", "sit", "crouch", "kneel-one", "kneel-two", "hands-on-hips", "lean", "bow", "think", "fight", "kick", "throw", "push", "wave", "reach", "cross-arms", "phone"]>;
34
+ controls: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodNumber>, Record<string, number>, Record<string, number>>;
35
+ id: z.ZodString;
36
+ name: z.ZodEffects<z.ZodString, string, string>;
37
+ transform: z.ZodObject<{
38
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
39
+ rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
40
+ scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
41
+ }, "strict", z.ZodTypeAny, {
42
+ position: [number, number, number];
43
+ rotation: [number, number, number];
44
+ scale: [number, number, number];
45
+ }, {
46
+ position: [number, number, number];
47
+ rotation: [number, number, number];
48
+ scale: [number, number, number];
49
+ }>;
50
+ color: z.ZodString;
51
+ hidden: z.ZodBoolean;
52
+ locked: z.ZodBoolean;
53
+ path: z.ZodOptional<z.ZodObject<{
54
+ closed: z.ZodBoolean;
55
+ smooth: z.ZodBoolean;
56
+ uniform: z.ZodBoolean;
57
+ points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, "many">;
58
+ }, "strict", z.ZodTypeAny, {
59
+ closed: boolean;
60
+ smooth: boolean;
61
+ uniform: boolean;
62
+ points: [number, number, number][];
63
+ }, {
64
+ closed: boolean;
65
+ smooth: boolean;
66
+ uniform: boolean;
67
+ points: [number, number, number][];
68
+ }>>;
69
+ }, "strict", z.ZodTypeAny, {
70
+ name: string;
71
+ locked: boolean;
72
+ kind: "mannequin";
73
+ id: string;
74
+ transform: {
75
+ position: [number, number, number];
76
+ rotation: [number, number, number];
77
+ scale: [number, number, number];
78
+ };
79
+ bodyType: "mannequin" | "female" | "broad" | "muscular" | "slim" | "teen" | "child" | "chibi";
80
+ pose: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone";
81
+ controls: Record<string, number>;
82
+ color: string;
83
+ hidden: boolean;
84
+ path?: {
85
+ closed: boolean;
86
+ smooth: boolean;
87
+ uniform: boolean;
88
+ points: [number, number, number][];
89
+ } | undefined;
90
+ }, {
91
+ name: string;
92
+ locked: boolean;
93
+ kind: "mannequin";
94
+ id: string;
95
+ transform: {
96
+ position: [number, number, number];
97
+ rotation: [number, number, number];
98
+ scale: [number, number, number];
99
+ };
100
+ bodyType: "mannequin" | "female" | "broad" | "muscular" | "slim" | "teen" | "child" | "chibi";
101
+ pose: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone";
102
+ controls: Record<string, number>;
103
+ color: string;
104
+ hidden: boolean;
105
+ path?: {
106
+ closed: boolean;
107
+ smooth: boolean;
108
+ uniform: boolean;
109
+ points: [number, number, number][];
110
+ } | undefined;
111
+ }>, z.ZodObject<{
112
+ kind: z.ZodLiteral<"geometry">;
113
+ primitive: z.ZodEnum<["box", "sphere", "cylinder", "cone", "torus", "pyramid", "empty"]>;
114
+ id: z.ZodString;
115
+ name: z.ZodEffects<z.ZodString, string, string>;
116
+ transform: z.ZodObject<{
117
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
118
+ rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
119
+ scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
120
+ }, "strict", z.ZodTypeAny, {
121
+ position: [number, number, number];
122
+ rotation: [number, number, number];
123
+ scale: [number, number, number];
124
+ }, {
125
+ position: [number, number, number];
126
+ rotation: [number, number, number];
127
+ scale: [number, number, number];
128
+ }>;
129
+ color: z.ZodString;
130
+ hidden: z.ZodBoolean;
131
+ locked: z.ZodBoolean;
132
+ path: z.ZodOptional<z.ZodObject<{
133
+ closed: z.ZodBoolean;
134
+ smooth: z.ZodBoolean;
135
+ uniform: z.ZodBoolean;
136
+ points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, "many">;
137
+ }, "strict", z.ZodTypeAny, {
138
+ closed: boolean;
139
+ smooth: boolean;
140
+ uniform: boolean;
141
+ points: [number, number, number][];
142
+ }, {
143
+ closed: boolean;
144
+ smooth: boolean;
145
+ uniform: boolean;
146
+ points: [number, number, number][];
147
+ }>>;
148
+ }, "strict", z.ZodTypeAny, {
149
+ name: string;
150
+ locked: boolean;
151
+ kind: "geometry";
152
+ id: string;
153
+ transform: {
154
+ position: [number, number, number];
155
+ rotation: [number, number, number];
156
+ scale: [number, number, number];
157
+ };
158
+ color: string;
159
+ hidden: boolean;
160
+ primitive: "box" | "sphere" | "cylinder" | "cone" | "torus" | "pyramid" | "empty";
161
+ path?: {
162
+ closed: boolean;
163
+ smooth: boolean;
164
+ uniform: boolean;
165
+ points: [number, number, number][];
166
+ } | undefined;
167
+ }, {
168
+ name: string;
169
+ locked: boolean;
170
+ kind: "geometry";
171
+ id: string;
172
+ transform: {
173
+ position: [number, number, number];
174
+ rotation: [number, number, number];
175
+ scale: [number, number, number];
176
+ };
177
+ color: string;
178
+ hidden: boolean;
179
+ primitive: "box" | "sphere" | "cylinder" | "cone" | "torus" | "pyramid" | "empty";
180
+ path?: {
181
+ closed: boolean;
182
+ smooth: boolean;
183
+ uniform: boolean;
184
+ points: [number, number, number][];
185
+ } | undefined;
186
+ }>]>, "many">;
187
+ cameras: z.ZodArray<z.ZodEffects<z.ZodObject<{
188
+ aspect: z.ZodEnum<["自适应", "1:1", "2:1", "3:4", "4:3", "16:9", "21:9", "9:16"]>;
189
+ follow: z.ZodOptional<z.ZodObject<{
190
+ objectId: z.ZodString;
191
+ view: z.ZodEnum<["third", "first"]>;
192
+ offset: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
193
+ }, "strict", z.ZodTypeAny, {
194
+ objectId: string;
195
+ view: "third" | "first";
196
+ offset: [number, number, number];
197
+ }, {
198
+ objectId: string;
199
+ view: "third" | "first";
200
+ offset: [number, number, number];
201
+ }>>;
202
+ aim: z.ZodOptional<z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
203
+ mode: z.ZodLiteral<"point">;
204
+ }, "strict", z.ZodTypeAny, {
205
+ mode: "point";
206
+ }, {
207
+ mode: "point";
208
+ }>, z.ZodObject<{
209
+ mode: z.ZodLiteral<"rotation">;
210
+ rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
211
+ }, "strict", z.ZodTypeAny, {
212
+ mode: "rotation";
213
+ rotation: [number, number, number];
214
+ }, {
215
+ mode: "rotation";
216
+ rotation: [number, number, number];
217
+ }>, z.ZodObject<{
218
+ mode: z.ZodLiteral<"object">;
219
+ objectId: z.ZodString;
220
+ }, "strict", z.ZodTypeAny, {
221
+ mode: "object";
222
+ objectId: string;
223
+ }, {
224
+ mode: "object";
225
+ objectId: string;
226
+ }>]>>;
227
+ path: z.ZodOptional<z.ZodObject<{
228
+ closed: z.ZodBoolean;
229
+ smooth: z.ZodBoolean;
230
+ uniform: z.ZodBoolean;
231
+ points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, "many">;
232
+ }, "strict", z.ZodTypeAny, {
233
+ closed: boolean;
234
+ smooth: boolean;
235
+ uniform: boolean;
236
+ points: [number, number, number][];
237
+ }, {
238
+ closed: boolean;
239
+ smooth: boolean;
240
+ uniform: boolean;
241
+ points: [number, number, number][];
242
+ }>>;
243
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
244
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
245
+ fov: z.ZodNumber;
246
+ id: z.ZodString;
247
+ name: z.ZodEffects<z.ZodString, string, string>;
248
+ }, "strict", z.ZodTypeAny, {
249
+ name: string;
250
+ id: string;
251
+ position: [number, number, number];
252
+ target: [number, number, number];
253
+ fov: number;
254
+ aspect: "自适应" | "1:1" | "2:1" | "3:4" | "4:3" | "16:9" | "21:9" | "9:16";
255
+ follow?: {
256
+ objectId: string;
257
+ view: "third" | "first";
258
+ offset: [number, number, number];
259
+ } | undefined;
260
+ path?: {
261
+ closed: boolean;
262
+ smooth: boolean;
263
+ uniform: boolean;
264
+ points: [number, number, number][];
265
+ } | undefined;
266
+ aim?: {
267
+ mode: "point";
268
+ } | {
269
+ mode: "rotation";
270
+ rotation: [number, number, number];
271
+ } | {
272
+ mode: "object";
273
+ objectId: string;
274
+ } | undefined;
275
+ }, {
276
+ name: string;
277
+ id: string;
278
+ position: [number, number, number];
279
+ target: [number, number, number];
280
+ fov: number;
281
+ aspect: "自适应" | "1:1" | "2:1" | "3:4" | "4:3" | "16:9" | "21:9" | "9:16";
282
+ follow?: {
283
+ objectId: string;
284
+ view: "third" | "first";
285
+ offset: [number, number, number];
286
+ } | undefined;
287
+ path?: {
288
+ closed: boolean;
289
+ smooth: boolean;
290
+ uniform: boolean;
291
+ points: [number, number, number][];
292
+ } | undefined;
293
+ aim?: {
294
+ mode: "point";
295
+ } | {
296
+ mode: "rotation";
297
+ rotation: [number, number, number];
298
+ } | {
299
+ mode: "object";
300
+ objectId: string;
301
+ } | undefined;
302
+ }>, {
303
+ name: string;
304
+ id: string;
305
+ position: [number, number, number];
306
+ target: [number, number, number];
307
+ fov: number;
308
+ aspect: "自适应" | "1:1" | "2:1" | "3:4" | "4:3" | "16:9" | "21:9" | "9:16";
309
+ follow?: {
310
+ objectId: string;
311
+ view: "third" | "first";
312
+ offset: [number, number, number];
313
+ } | undefined;
314
+ path?: {
315
+ closed: boolean;
316
+ smooth: boolean;
317
+ uniform: boolean;
318
+ points: [number, number, number][];
319
+ } | undefined;
320
+ aim?: {
321
+ mode: "point";
322
+ } | {
323
+ mode: "rotation";
324
+ rotation: [number, number, number];
325
+ } | {
326
+ mode: "object";
327
+ objectId: string;
328
+ } | undefined;
329
+ }, {
330
+ name: string;
331
+ id: string;
332
+ position: [number, number, number];
333
+ target: [number, number, number];
334
+ fov: number;
335
+ aspect: "自适应" | "1:1" | "2:1" | "3:4" | "4:3" | "16:9" | "21:9" | "9:16";
336
+ follow?: {
337
+ objectId: string;
338
+ view: "third" | "first";
339
+ offset: [number, number, number];
340
+ } | undefined;
341
+ path?: {
342
+ closed: boolean;
343
+ smooth: boolean;
344
+ uniform: boolean;
345
+ points: [number, number, number][];
346
+ } | undefined;
347
+ aim?: {
348
+ mode: "point";
349
+ } | {
350
+ mode: "rotation";
351
+ rotation: [number, number, number];
352
+ } | {
353
+ mode: "object";
354
+ objectId: string;
355
+ } | undefined;
356
+ }>, "many">;
357
+ activeCameraId: z.ZodString;
358
+ observerView: z.ZodEffects<z.ZodObject<{
359
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
360
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
361
+ fov: z.ZodNumber;
362
+ }, "strict", z.ZodTypeAny, {
363
+ position: [number, number, number];
364
+ target: [number, number, number];
365
+ fov: number;
366
+ }, {
367
+ position: [number, number, number];
368
+ target: [number, number, number];
369
+ fov: number;
370
+ }>, {
371
+ position: [number, number, number];
372
+ target: [number, number, number];
373
+ fov: number;
374
+ }, {
375
+ position: [number, number, number];
376
+ target: [number, number, number];
377
+ fov: number;
378
+ }>;
379
+ selectedObjectId: z.ZodNullable<z.ZodString>;
380
+ timeline: z.ZodOptional<z.ZodObject<{
381
+ fps: z.ZodUnion<[z.ZodLiteral<30>, z.ZodLiteral<60>]>;
382
+ loop: z.ZodBoolean;
383
+ duration: z.ZodNumber;
384
+ viewLock: z.ZodBoolean;
385
+ focus: z.ZodOptional<z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
386
+ mode: z.ZodLiteral<"scene">;
387
+ }, "strict", z.ZodTypeAny, {
388
+ mode: "scene";
389
+ }, {
390
+ mode: "scene";
391
+ }>, z.ZodObject<{
392
+ mode: z.ZodLiteral<"object">;
393
+ objectId: z.ZodString;
394
+ }, "strict", z.ZodTypeAny, {
395
+ mode: "object";
396
+ objectId: string;
397
+ }, {
398
+ mode: "object";
399
+ objectId: string;
400
+ }>, z.ZodObject<{
401
+ mode: z.ZodLiteral<"point">;
402
+ point: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
403
+ }, "strict", z.ZodTypeAny, {
404
+ mode: "point";
405
+ point: [number, number, number];
406
+ }, {
407
+ mode: "point";
408
+ point: [number, number, number];
409
+ }>]>>;
410
+ tracks: z.ZodArray<z.ZodObject<{
411
+ id: z.ZodString;
412
+ kind: z.ZodEnum<["camera", "object"]>;
413
+ targetId: z.ZodString;
414
+ }, "strict", z.ZodTypeAny, {
415
+ kind: "object" | "camera";
416
+ id: string;
417
+ targetId: string;
418
+ }, {
419
+ kind: "object" | "camera";
420
+ id: string;
421
+ targetId: string;
422
+ }>, "many">;
423
+ clips: z.ZodArray<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
424
+ id: z.ZodString;
425
+ trackId: z.ZodString;
426
+ start: z.ZodNumber;
427
+ duration: z.ZodNumber;
428
+ rate: z.ZodOptional<z.ZodNumber>;
429
+ kind: z.ZodLiteral<"cameraMove">;
430
+ move: z.ZodEnum<["orbit", "halfArc", "pushIn", "pullOut", "pedestal", "truck", "helix", "rollerCoaster"]>;
431
+ fov: z.ZodNumber;
432
+ samples: z.ZodArray<z.ZodEffects<z.ZodObject<{
433
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
434
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
435
+ }, "strict", z.ZodTypeAny, {
436
+ position: [number, number, number];
437
+ target: [number, number, number];
438
+ }, {
439
+ position: [number, number, number];
440
+ target: [number, number, number];
441
+ }>, {
442
+ position: [number, number, number];
443
+ target: [number, number, number];
444
+ }, {
445
+ position: [number, number, number];
446
+ target: [number, number, number];
447
+ }>, "many">;
448
+ }, "strict", z.ZodTypeAny, {
449
+ kind: "cameraMove";
450
+ id: string;
451
+ duration: number;
452
+ fov: number;
453
+ trackId: string;
454
+ start: number;
455
+ move: "orbit" | "halfArc" | "pushIn" | "pullOut" | "pedestal" | "truck" | "helix" | "rollerCoaster";
456
+ samples: {
457
+ position: [number, number, number];
458
+ target: [number, number, number];
459
+ }[];
460
+ rate?: number | undefined;
461
+ }, {
462
+ kind: "cameraMove";
463
+ id: string;
464
+ duration: number;
465
+ fov: number;
466
+ trackId: string;
467
+ start: number;
468
+ move: "orbit" | "halfArc" | "pushIn" | "pullOut" | "pedestal" | "truck" | "helix" | "rollerCoaster";
469
+ samples: {
470
+ position: [number, number, number];
471
+ target: [number, number, number];
472
+ }[];
473
+ rate?: number | undefined;
474
+ }>, z.ZodObject<{
475
+ id: z.ZodString;
476
+ trackId: z.ZodString;
477
+ start: z.ZodNumber;
478
+ duration: z.ZodNumber;
479
+ rate: z.ZodOptional<z.ZodNumber>;
480
+ kind: z.ZodLiteral<"cameraHold">;
481
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
482
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
483
+ fov: z.ZodNumber;
484
+ }, "strict", z.ZodTypeAny, {
485
+ kind: "cameraHold";
486
+ id: string;
487
+ duration: number;
488
+ position: [number, number, number];
489
+ target: [number, number, number];
490
+ fov: number;
491
+ trackId: string;
492
+ start: number;
493
+ rate?: number | undefined;
494
+ }, {
495
+ kind: "cameraHold";
496
+ id: string;
497
+ duration: number;
498
+ position: [number, number, number];
499
+ target: [number, number, number];
500
+ fov: number;
501
+ trackId: string;
502
+ start: number;
503
+ rate?: number | undefined;
504
+ }>, z.ZodObject<{
505
+ id: z.ZodString;
506
+ trackId: z.ZodString;
507
+ start: z.ZodNumber;
508
+ duration: z.ZodNumber;
509
+ rate: z.ZodOptional<z.ZodNumber>;
510
+ kind: z.ZodLiteral<"objectHold">;
511
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
512
+ rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
513
+ scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
514
+ pose: z.ZodOptional<z.ZodEnum<["stand", "t-pose", "walk", "run", "sit", "crouch", "kneel-one", "kneel-two", "hands-on-hips", "lean", "bow", "think", "fight", "kick", "throw", "push", "wave", "reach", "cross-arms", "phone"]>>;
515
+ }, "strict", z.ZodTypeAny, {
516
+ kind: "objectHold";
517
+ id: string;
518
+ duration: number;
519
+ position: [number, number, number];
520
+ rotation: [number, number, number];
521
+ scale: [number, number, number];
522
+ trackId: string;
523
+ start: number;
524
+ pose?: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone" | undefined;
525
+ rate?: number | undefined;
526
+ }, {
527
+ kind: "objectHold";
528
+ id: string;
529
+ duration: number;
530
+ position: [number, number, number];
531
+ rotation: [number, number, number];
532
+ scale: [number, number, number];
533
+ trackId: string;
534
+ start: number;
535
+ pose?: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone" | undefined;
536
+ rate?: number | undefined;
537
+ }>, z.ZodObject<{
538
+ id: z.ZodString;
539
+ trackId: z.ZodString;
540
+ start: z.ZodNumber;
541
+ duration: z.ZodNumber;
542
+ rate: z.ZodOptional<z.ZodNumber>;
543
+ kind: z.ZodLiteral<"transition">;
544
+ transition: z.ZodEnum<["dissolve", "flashWhite", "flashBlack", "flashBlack2", "flashWhite2"]>;
545
+ }, "strict", z.ZodTypeAny, {
546
+ kind: "transition";
547
+ id: string;
548
+ duration: number;
549
+ trackId: string;
550
+ start: number;
551
+ transition: "dissolve" | "flashWhite" | "flashBlack" | "flashBlack2" | "flashWhite2";
552
+ rate?: number | undefined;
553
+ }, {
554
+ kind: "transition";
555
+ id: string;
556
+ duration: number;
557
+ trackId: string;
558
+ start: number;
559
+ transition: "dissolve" | "flashWhite" | "flashBlack" | "flashBlack2" | "flashWhite2";
560
+ rate?: number | undefined;
561
+ }>]>, "many">;
562
+ }, "strict", z.ZodTypeAny, {
563
+ duration: number;
564
+ fps: 60 | 30;
565
+ loop: boolean;
566
+ viewLock: boolean;
567
+ tracks: {
568
+ kind: "object" | "camera";
569
+ id: string;
570
+ targetId: string;
571
+ }[];
572
+ clips: ({
573
+ kind: "cameraMove";
574
+ id: string;
575
+ duration: number;
576
+ fov: number;
577
+ trackId: string;
578
+ start: number;
579
+ move: "orbit" | "halfArc" | "pushIn" | "pullOut" | "pedestal" | "truck" | "helix" | "rollerCoaster";
580
+ samples: {
581
+ position: [number, number, number];
582
+ target: [number, number, number];
583
+ }[];
584
+ rate?: number | undefined;
585
+ } | {
586
+ kind: "cameraHold";
587
+ id: string;
588
+ duration: number;
589
+ position: [number, number, number];
590
+ target: [number, number, number];
591
+ fov: number;
592
+ trackId: string;
593
+ start: number;
594
+ rate?: number | undefined;
595
+ } | {
596
+ kind: "objectHold";
597
+ id: string;
598
+ duration: number;
599
+ position: [number, number, number];
600
+ rotation: [number, number, number];
601
+ scale: [number, number, number];
602
+ trackId: string;
603
+ start: number;
604
+ pose?: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone" | undefined;
605
+ rate?: number | undefined;
606
+ } | {
607
+ kind: "transition";
608
+ id: string;
609
+ duration: number;
610
+ trackId: string;
611
+ start: number;
612
+ transition: "dissolve" | "flashWhite" | "flashBlack" | "flashBlack2" | "flashWhite2";
613
+ rate?: number | undefined;
614
+ })[];
615
+ focus?: {
616
+ mode: "scene";
617
+ } | {
618
+ mode: "object";
619
+ objectId: string;
620
+ } | {
621
+ mode: "point";
622
+ point: [number, number, number];
623
+ } | undefined;
624
+ }, {
625
+ duration: number;
626
+ fps: 60 | 30;
627
+ loop: boolean;
628
+ viewLock: boolean;
629
+ tracks: {
630
+ kind: "object" | "camera";
631
+ id: string;
632
+ targetId: string;
633
+ }[];
634
+ clips: ({
635
+ kind: "cameraMove";
636
+ id: string;
637
+ duration: number;
638
+ fov: number;
639
+ trackId: string;
640
+ start: number;
641
+ move: "orbit" | "halfArc" | "pushIn" | "pullOut" | "pedestal" | "truck" | "helix" | "rollerCoaster";
642
+ samples: {
643
+ position: [number, number, number];
644
+ target: [number, number, number];
645
+ }[];
646
+ rate?: number | undefined;
647
+ } | {
648
+ kind: "cameraHold";
649
+ id: string;
650
+ duration: number;
651
+ position: [number, number, number];
652
+ target: [number, number, number];
653
+ fov: number;
654
+ trackId: string;
655
+ start: number;
656
+ rate?: number | undefined;
657
+ } | {
658
+ kind: "objectHold";
659
+ id: string;
660
+ duration: number;
661
+ position: [number, number, number];
662
+ rotation: [number, number, number];
663
+ scale: [number, number, number];
664
+ trackId: string;
665
+ start: number;
666
+ pose?: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone" | undefined;
667
+ rate?: number | undefined;
668
+ } | {
669
+ kind: "transition";
670
+ id: string;
671
+ duration: number;
672
+ trackId: string;
673
+ start: number;
674
+ transition: "dissolve" | "flashWhite" | "flashBlack" | "flashBlack2" | "flashWhite2";
675
+ rate?: number | undefined;
676
+ })[];
677
+ focus?: {
678
+ mode: "scene";
679
+ } | {
680
+ mode: "object";
681
+ objectId: string;
682
+ } | {
683
+ mode: "point";
684
+ point: [number, number, number];
685
+ } | undefined;
686
+ }>>;
687
+ environment: z.ZodOptional<z.ZodObject<{
688
+ sky: z.ZodString;
689
+ groundVisible: z.ZodBoolean;
690
+ groundOpacity: z.ZodNumber;
691
+ groundHeight: z.ZodNumber;
692
+ gridSnap: z.ZodBoolean;
693
+ gaussianGroundSnap: z.ZodBoolean;
694
+ labels: z.ZodBoolean;
695
+ panoramaYaw: z.ZodOptional<z.ZodNumber>;
696
+ panoramaRadius: z.ZodOptional<z.ZodNumber>;
697
+ panoramaAssetId: z.ZodOptional<z.ZodString>;
698
+ gaussianAssetId: z.ZodOptional<z.ZodString>;
699
+ gaussianQuality: z.ZodOptional<z.ZodEnum<["fluent", "standard", "high"]>>;
700
+ gaussianGroundDetect: z.ZodOptional<z.ZodBoolean>;
701
+ }, "strict", z.ZodTypeAny, {
702
+ sky: string;
703
+ groundVisible: boolean;
704
+ groundOpacity: number;
705
+ groundHeight: number;
706
+ gridSnap: boolean;
707
+ gaussianGroundSnap: boolean;
708
+ labels: boolean;
709
+ panoramaYaw?: number | undefined;
710
+ panoramaRadius?: number | undefined;
711
+ panoramaAssetId?: string | undefined;
712
+ gaussianAssetId?: string | undefined;
713
+ gaussianQuality?: "fluent" | "standard" | "high" | undefined;
714
+ gaussianGroundDetect?: boolean | undefined;
715
+ }, {
716
+ sky: string;
717
+ groundVisible: boolean;
718
+ groundOpacity: number;
719
+ groundHeight: number;
720
+ gridSnap: boolean;
721
+ gaussianGroundSnap: boolean;
722
+ labels: boolean;
723
+ panoramaYaw?: number | undefined;
724
+ panoramaRadius?: number | undefined;
725
+ panoramaAssetId?: string | undefined;
726
+ gaussianAssetId?: string | undefined;
727
+ gaussianQuality?: "fluent" | "standard" | "high" | undefined;
728
+ gaussianGroundDetect?: boolean | undefined;
729
+ }>>;
730
+ }, "strict", z.ZodTypeAny, {
731
+ version: 1;
732
+ sceneId: string;
733
+ sceneRevision: number;
734
+ objects: ({
735
+ name: string;
736
+ locked: boolean;
737
+ kind: "mannequin";
738
+ id: string;
739
+ transform: {
740
+ position: [number, number, number];
741
+ rotation: [number, number, number];
742
+ scale: [number, number, number];
743
+ };
744
+ bodyType: "mannequin" | "female" | "broad" | "muscular" | "slim" | "teen" | "child" | "chibi";
745
+ pose: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone";
746
+ controls: Record<string, number>;
747
+ color: string;
748
+ hidden: boolean;
749
+ path?: {
750
+ closed: boolean;
751
+ smooth: boolean;
752
+ uniform: boolean;
753
+ points: [number, number, number][];
754
+ } | undefined;
755
+ } | {
756
+ name: string;
757
+ locked: boolean;
758
+ kind: "geometry";
759
+ id: string;
760
+ transform: {
761
+ position: [number, number, number];
762
+ rotation: [number, number, number];
763
+ scale: [number, number, number];
764
+ };
765
+ color: string;
766
+ hidden: boolean;
767
+ primitive: "box" | "sphere" | "cylinder" | "cone" | "torus" | "pyramid" | "empty";
768
+ path?: {
769
+ closed: boolean;
770
+ smooth: boolean;
771
+ uniform: boolean;
772
+ points: [number, number, number][];
773
+ } | undefined;
774
+ })[];
775
+ cameras: {
776
+ name: string;
777
+ id: string;
778
+ position: [number, number, number];
779
+ target: [number, number, number];
780
+ fov: number;
781
+ aspect: "自适应" | "1:1" | "2:1" | "3:4" | "4:3" | "16:9" | "21:9" | "9:16";
782
+ follow?: {
783
+ objectId: string;
784
+ view: "third" | "first";
785
+ offset: [number, number, number];
786
+ } | undefined;
787
+ path?: {
788
+ closed: boolean;
789
+ smooth: boolean;
790
+ uniform: boolean;
791
+ points: [number, number, number][];
792
+ } | undefined;
793
+ aim?: {
794
+ mode: "point";
795
+ } | {
796
+ mode: "rotation";
797
+ rotation: [number, number, number];
798
+ } | {
799
+ mode: "object";
800
+ objectId: string;
801
+ } | undefined;
802
+ }[];
803
+ activeCameraId: string;
804
+ observerView: {
805
+ position: [number, number, number];
806
+ target: [number, number, number];
807
+ fov: number;
808
+ };
809
+ selectedObjectId: string | null;
810
+ timeline?: {
811
+ duration: number;
812
+ fps: 60 | 30;
813
+ loop: boolean;
814
+ viewLock: boolean;
815
+ tracks: {
816
+ kind: "object" | "camera";
817
+ id: string;
818
+ targetId: string;
819
+ }[];
820
+ clips: ({
821
+ kind: "cameraMove";
822
+ id: string;
823
+ duration: number;
824
+ fov: number;
825
+ trackId: string;
826
+ start: number;
827
+ move: "orbit" | "halfArc" | "pushIn" | "pullOut" | "pedestal" | "truck" | "helix" | "rollerCoaster";
828
+ samples: {
829
+ position: [number, number, number];
830
+ target: [number, number, number];
831
+ }[];
832
+ rate?: number | undefined;
833
+ } | {
834
+ kind: "cameraHold";
835
+ id: string;
836
+ duration: number;
837
+ position: [number, number, number];
838
+ target: [number, number, number];
839
+ fov: number;
840
+ trackId: string;
841
+ start: number;
842
+ rate?: number | undefined;
843
+ } | {
844
+ kind: "objectHold";
845
+ id: string;
846
+ duration: number;
847
+ position: [number, number, number];
848
+ rotation: [number, number, number];
849
+ scale: [number, number, number];
850
+ trackId: string;
851
+ start: number;
852
+ pose?: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone" | undefined;
853
+ rate?: number | undefined;
854
+ } | {
855
+ kind: "transition";
856
+ id: string;
857
+ duration: number;
858
+ trackId: string;
859
+ start: number;
860
+ transition: "dissolve" | "flashWhite" | "flashBlack" | "flashBlack2" | "flashWhite2";
861
+ rate?: number | undefined;
862
+ })[];
863
+ focus?: {
864
+ mode: "scene";
865
+ } | {
866
+ mode: "object";
867
+ objectId: string;
868
+ } | {
869
+ mode: "point";
870
+ point: [number, number, number];
871
+ } | undefined;
872
+ } | undefined;
873
+ environment?: {
874
+ sky: string;
875
+ groundVisible: boolean;
876
+ groundOpacity: number;
877
+ groundHeight: number;
878
+ gridSnap: boolean;
879
+ gaussianGroundSnap: boolean;
880
+ labels: boolean;
881
+ panoramaYaw?: number | undefined;
882
+ panoramaRadius?: number | undefined;
883
+ panoramaAssetId?: string | undefined;
884
+ gaussianAssetId?: string | undefined;
885
+ gaussianQuality?: "fluent" | "standard" | "high" | undefined;
886
+ gaussianGroundDetect?: boolean | undefined;
887
+ } | undefined;
888
+ }, {
889
+ version: 1;
890
+ sceneId: string;
891
+ sceneRevision: number;
892
+ objects: ({
893
+ name: string;
894
+ locked: boolean;
895
+ kind: "mannequin";
896
+ id: string;
897
+ transform: {
898
+ position: [number, number, number];
899
+ rotation: [number, number, number];
900
+ scale: [number, number, number];
901
+ };
902
+ bodyType: "mannequin" | "female" | "broad" | "muscular" | "slim" | "teen" | "child" | "chibi";
903
+ pose: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone";
904
+ controls: Record<string, number>;
905
+ color: string;
906
+ hidden: boolean;
907
+ path?: {
908
+ closed: boolean;
909
+ smooth: boolean;
910
+ uniform: boolean;
911
+ points: [number, number, number][];
912
+ } | undefined;
913
+ } | {
914
+ name: string;
915
+ locked: boolean;
916
+ kind: "geometry";
917
+ id: string;
918
+ transform: {
919
+ position: [number, number, number];
920
+ rotation: [number, number, number];
921
+ scale: [number, number, number];
922
+ };
923
+ color: string;
924
+ hidden: boolean;
925
+ primitive: "box" | "sphere" | "cylinder" | "cone" | "torus" | "pyramid" | "empty";
926
+ path?: {
927
+ closed: boolean;
928
+ smooth: boolean;
929
+ uniform: boolean;
930
+ points: [number, number, number][];
931
+ } | undefined;
932
+ })[];
933
+ cameras: {
934
+ name: string;
935
+ id: string;
936
+ position: [number, number, number];
937
+ target: [number, number, number];
938
+ fov: number;
939
+ aspect: "自适应" | "1:1" | "2:1" | "3:4" | "4:3" | "16:9" | "21:9" | "9:16";
940
+ follow?: {
941
+ objectId: string;
942
+ view: "third" | "first";
943
+ offset: [number, number, number];
944
+ } | undefined;
945
+ path?: {
946
+ closed: boolean;
947
+ smooth: boolean;
948
+ uniform: boolean;
949
+ points: [number, number, number][];
950
+ } | undefined;
951
+ aim?: {
952
+ mode: "point";
953
+ } | {
954
+ mode: "rotation";
955
+ rotation: [number, number, number];
956
+ } | {
957
+ mode: "object";
958
+ objectId: string;
959
+ } | undefined;
960
+ }[];
961
+ activeCameraId: string;
962
+ observerView: {
963
+ position: [number, number, number];
964
+ target: [number, number, number];
965
+ fov: number;
966
+ };
967
+ selectedObjectId: string | null;
968
+ timeline?: {
969
+ duration: number;
970
+ fps: 60 | 30;
971
+ loop: boolean;
972
+ viewLock: boolean;
973
+ tracks: {
974
+ kind: "object" | "camera";
975
+ id: string;
976
+ targetId: string;
977
+ }[];
978
+ clips: ({
979
+ kind: "cameraMove";
980
+ id: string;
981
+ duration: number;
982
+ fov: number;
983
+ trackId: string;
984
+ start: number;
985
+ move: "orbit" | "halfArc" | "pushIn" | "pullOut" | "pedestal" | "truck" | "helix" | "rollerCoaster";
986
+ samples: {
987
+ position: [number, number, number];
988
+ target: [number, number, number];
989
+ }[];
990
+ rate?: number | undefined;
991
+ } | {
992
+ kind: "cameraHold";
993
+ id: string;
994
+ duration: number;
995
+ position: [number, number, number];
996
+ target: [number, number, number];
997
+ fov: number;
998
+ trackId: string;
999
+ start: number;
1000
+ rate?: number | undefined;
1001
+ } | {
1002
+ kind: "objectHold";
1003
+ id: string;
1004
+ duration: number;
1005
+ position: [number, number, number];
1006
+ rotation: [number, number, number];
1007
+ scale: [number, number, number];
1008
+ trackId: string;
1009
+ start: number;
1010
+ pose?: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone" | undefined;
1011
+ rate?: number | undefined;
1012
+ } | {
1013
+ kind: "transition";
1014
+ id: string;
1015
+ duration: number;
1016
+ trackId: string;
1017
+ start: number;
1018
+ transition: "dissolve" | "flashWhite" | "flashBlack" | "flashBlack2" | "flashWhite2";
1019
+ rate?: number | undefined;
1020
+ })[];
1021
+ focus?: {
1022
+ mode: "scene";
1023
+ } | {
1024
+ mode: "object";
1025
+ objectId: string;
1026
+ } | {
1027
+ mode: "point";
1028
+ point: [number, number, number];
1029
+ } | undefined;
1030
+ } | undefined;
1031
+ environment?: {
1032
+ sky: string;
1033
+ groundVisible: boolean;
1034
+ groundOpacity: number;
1035
+ groundHeight: number;
1036
+ gridSnap: boolean;
1037
+ gaussianGroundSnap: boolean;
1038
+ labels: boolean;
1039
+ panoramaYaw?: number | undefined;
1040
+ panoramaRadius?: number | undefined;
1041
+ panoramaAssetId?: string | undefined;
1042
+ gaussianAssetId?: string | undefined;
1043
+ gaussianQuality?: "fluent" | "standard" | "high" | undefined;
1044
+ gaussianGroundDetect?: boolean | undefined;
1045
+ } | undefined;
1046
+ }>, {
1047
+ version: 1;
1048
+ sceneId: string;
1049
+ sceneRevision: number;
1050
+ objects: ({
1051
+ name: string;
1052
+ locked: boolean;
1053
+ kind: "mannequin";
1054
+ id: string;
1055
+ transform: {
1056
+ position: [number, number, number];
1057
+ rotation: [number, number, number];
1058
+ scale: [number, number, number];
1059
+ };
1060
+ bodyType: "mannequin" | "female" | "broad" | "muscular" | "slim" | "teen" | "child" | "chibi";
1061
+ pose: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone";
1062
+ controls: Record<string, number>;
1063
+ color: string;
1064
+ hidden: boolean;
1065
+ path?: {
1066
+ closed: boolean;
1067
+ smooth: boolean;
1068
+ uniform: boolean;
1069
+ points: [number, number, number][];
1070
+ } | undefined;
1071
+ } | {
1072
+ name: string;
1073
+ locked: boolean;
1074
+ kind: "geometry";
1075
+ id: string;
1076
+ transform: {
1077
+ position: [number, number, number];
1078
+ rotation: [number, number, number];
1079
+ scale: [number, number, number];
1080
+ };
1081
+ color: string;
1082
+ hidden: boolean;
1083
+ primitive: "box" | "sphere" | "cylinder" | "cone" | "torus" | "pyramid" | "empty";
1084
+ path?: {
1085
+ closed: boolean;
1086
+ smooth: boolean;
1087
+ uniform: boolean;
1088
+ points: [number, number, number][];
1089
+ } | undefined;
1090
+ })[];
1091
+ cameras: {
1092
+ name: string;
1093
+ id: string;
1094
+ position: [number, number, number];
1095
+ target: [number, number, number];
1096
+ fov: number;
1097
+ aspect: "自适应" | "1:1" | "2:1" | "3:4" | "4:3" | "16:9" | "21:9" | "9:16";
1098
+ follow?: {
1099
+ objectId: string;
1100
+ view: "third" | "first";
1101
+ offset: [number, number, number];
1102
+ } | undefined;
1103
+ path?: {
1104
+ closed: boolean;
1105
+ smooth: boolean;
1106
+ uniform: boolean;
1107
+ points: [number, number, number][];
1108
+ } | undefined;
1109
+ aim?: {
1110
+ mode: "point";
1111
+ } | {
1112
+ mode: "rotation";
1113
+ rotation: [number, number, number];
1114
+ } | {
1115
+ mode: "object";
1116
+ objectId: string;
1117
+ } | undefined;
1118
+ }[];
1119
+ activeCameraId: string;
1120
+ observerView: {
1121
+ position: [number, number, number];
1122
+ target: [number, number, number];
1123
+ fov: number;
1124
+ };
1125
+ selectedObjectId: string | null;
1126
+ timeline?: {
1127
+ duration: number;
1128
+ fps: 60 | 30;
1129
+ loop: boolean;
1130
+ viewLock: boolean;
1131
+ tracks: {
1132
+ kind: "object" | "camera";
1133
+ id: string;
1134
+ targetId: string;
1135
+ }[];
1136
+ clips: ({
1137
+ kind: "cameraMove";
1138
+ id: string;
1139
+ duration: number;
1140
+ fov: number;
1141
+ trackId: string;
1142
+ start: number;
1143
+ move: "orbit" | "halfArc" | "pushIn" | "pullOut" | "pedestal" | "truck" | "helix" | "rollerCoaster";
1144
+ samples: {
1145
+ position: [number, number, number];
1146
+ target: [number, number, number];
1147
+ }[];
1148
+ rate?: number | undefined;
1149
+ } | {
1150
+ kind: "cameraHold";
1151
+ id: string;
1152
+ duration: number;
1153
+ position: [number, number, number];
1154
+ target: [number, number, number];
1155
+ fov: number;
1156
+ trackId: string;
1157
+ start: number;
1158
+ rate?: number | undefined;
1159
+ } | {
1160
+ kind: "objectHold";
1161
+ id: string;
1162
+ duration: number;
1163
+ position: [number, number, number];
1164
+ rotation: [number, number, number];
1165
+ scale: [number, number, number];
1166
+ trackId: string;
1167
+ start: number;
1168
+ pose?: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone" | undefined;
1169
+ rate?: number | undefined;
1170
+ } | {
1171
+ kind: "transition";
1172
+ id: string;
1173
+ duration: number;
1174
+ trackId: string;
1175
+ start: number;
1176
+ transition: "dissolve" | "flashWhite" | "flashBlack" | "flashBlack2" | "flashWhite2";
1177
+ rate?: number | undefined;
1178
+ })[];
1179
+ focus?: {
1180
+ mode: "scene";
1181
+ } | {
1182
+ mode: "object";
1183
+ objectId: string;
1184
+ } | {
1185
+ mode: "point";
1186
+ point: [number, number, number];
1187
+ } | undefined;
1188
+ } | undefined;
1189
+ environment?: {
1190
+ sky: string;
1191
+ groundVisible: boolean;
1192
+ groundOpacity: number;
1193
+ groundHeight: number;
1194
+ gridSnap: boolean;
1195
+ gaussianGroundSnap: boolean;
1196
+ labels: boolean;
1197
+ panoramaYaw?: number | undefined;
1198
+ panoramaRadius?: number | undefined;
1199
+ panoramaAssetId?: string | undefined;
1200
+ gaussianAssetId?: string | undefined;
1201
+ gaussianQuality?: "fluent" | "standard" | "high" | undefined;
1202
+ gaussianGroundDetect?: boolean | undefined;
1203
+ } | undefined;
1204
+ }, {
1205
+ version: 1;
1206
+ sceneId: string;
1207
+ sceneRevision: number;
1208
+ objects: ({
1209
+ name: string;
1210
+ locked: boolean;
1211
+ kind: "mannequin";
1212
+ id: string;
1213
+ transform: {
1214
+ position: [number, number, number];
1215
+ rotation: [number, number, number];
1216
+ scale: [number, number, number];
1217
+ };
1218
+ bodyType: "mannequin" | "female" | "broad" | "muscular" | "slim" | "teen" | "child" | "chibi";
1219
+ pose: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone";
1220
+ controls: Record<string, number>;
1221
+ color: string;
1222
+ hidden: boolean;
1223
+ path?: {
1224
+ closed: boolean;
1225
+ smooth: boolean;
1226
+ uniform: boolean;
1227
+ points: [number, number, number][];
1228
+ } | undefined;
1229
+ } | {
1230
+ name: string;
1231
+ locked: boolean;
1232
+ kind: "geometry";
1233
+ id: string;
1234
+ transform: {
1235
+ position: [number, number, number];
1236
+ rotation: [number, number, number];
1237
+ scale: [number, number, number];
1238
+ };
1239
+ color: string;
1240
+ hidden: boolean;
1241
+ primitive: "box" | "sphere" | "cylinder" | "cone" | "torus" | "pyramid" | "empty";
1242
+ path?: {
1243
+ closed: boolean;
1244
+ smooth: boolean;
1245
+ uniform: boolean;
1246
+ points: [number, number, number][];
1247
+ } | undefined;
1248
+ })[];
1249
+ cameras: {
1250
+ name: string;
1251
+ id: string;
1252
+ position: [number, number, number];
1253
+ target: [number, number, number];
1254
+ fov: number;
1255
+ aspect: "自适应" | "1:1" | "2:1" | "3:4" | "4:3" | "16:9" | "21:9" | "9:16";
1256
+ follow?: {
1257
+ objectId: string;
1258
+ view: "third" | "first";
1259
+ offset: [number, number, number];
1260
+ } | undefined;
1261
+ path?: {
1262
+ closed: boolean;
1263
+ smooth: boolean;
1264
+ uniform: boolean;
1265
+ points: [number, number, number][];
1266
+ } | undefined;
1267
+ aim?: {
1268
+ mode: "point";
1269
+ } | {
1270
+ mode: "rotation";
1271
+ rotation: [number, number, number];
1272
+ } | {
1273
+ mode: "object";
1274
+ objectId: string;
1275
+ } | undefined;
1276
+ }[];
1277
+ activeCameraId: string;
1278
+ observerView: {
1279
+ position: [number, number, number];
1280
+ target: [number, number, number];
1281
+ fov: number;
1282
+ };
1283
+ selectedObjectId: string | null;
1284
+ timeline?: {
1285
+ duration: number;
1286
+ fps: 60 | 30;
1287
+ loop: boolean;
1288
+ viewLock: boolean;
1289
+ tracks: {
1290
+ kind: "object" | "camera";
1291
+ id: string;
1292
+ targetId: string;
1293
+ }[];
1294
+ clips: ({
1295
+ kind: "cameraMove";
1296
+ id: string;
1297
+ duration: number;
1298
+ fov: number;
1299
+ trackId: string;
1300
+ start: number;
1301
+ move: "orbit" | "halfArc" | "pushIn" | "pullOut" | "pedestal" | "truck" | "helix" | "rollerCoaster";
1302
+ samples: {
1303
+ position: [number, number, number];
1304
+ target: [number, number, number];
1305
+ }[];
1306
+ rate?: number | undefined;
1307
+ } | {
1308
+ kind: "cameraHold";
1309
+ id: string;
1310
+ duration: number;
1311
+ position: [number, number, number];
1312
+ target: [number, number, number];
1313
+ fov: number;
1314
+ trackId: string;
1315
+ start: number;
1316
+ rate?: number | undefined;
1317
+ } | {
1318
+ kind: "objectHold";
1319
+ id: string;
1320
+ duration: number;
1321
+ position: [number, number, number];
1322
+ rotation: [number, number, number];
1323
+ scale: [number, number, number];
1324
+ trackId: string;
1325
+ start: number;
1326
+ pose?: "push" | "throw" | "run" | "stand" | "t-pose" | "walk" | "sit" | "crouch" | "kneel-one" | "kneel-two" | "hands-on-hips" | "lean" | "bow" | "think" | "fight" | "kick" | "wave" | "reach" | "cross-arms" | "phone" | undefined;
1327
+ rate?: number | undefined;
1328
+ } | {
1329
+ kind: "transition";
1330
+ id: string;
1331
+ duration: number;
1332
+ trackId: string;
1333
+ start: number;
1334
+ transition: "dissolve" | "flashWhite" | "flashBlack" | "flashBlack2" | "flashWhite2";
1335
+ rate?: number | undefined;
1336
+ })[];
1337
+ focus?: {
1338
+ mode: "scene";
1339
+ } | {
1340
+ mode: "object";
1341
+ objectId: string;
1342
+ } | {
1343
+ mode: "point";
1344
+ point: [number, number, number];
1345
+ } | undefined;
1346
+ } | undefined;
1347
+ environment?: {
1348
+ sky: string;
1349
+ groundVisible: boolean;
1350
+ groundOpacity: number;
1351
+ groundHeight: number;
1352
+ gridSnap: boolean;
1353
+ gaussianGroundSnap: boolean;
1354
+ labels: boolean;
1355
+ panoramaYaw?: number | undefined;
1356
+ panoramaRadius?: number | undefined;
1357
+ panoramaAssetId?: string | undefined;
1358
+ gaussianAssetId?: string | undefined;
1359
+ gaussianQuality?: "fluent" | "standard" | "high" | undefined;
1360
+ gaussianGroundDetect?: boolean | undefined;
1361
+ } | undefined;
1362
+ }>;
1363
+ export type DirectorScene = z.infer<typeof sceneSchema>;
1364
+ export type DirectorObject = DirectorScene['objects'][number];
1365
+ export type DirectorCamera = DirectorScene['cameras'][number];
1366
+ export type DirectorAspect = typeof DIRECTOR_ASPECTS[number];
1367
+ export type DirectorTimeline = NonNullable<DirectorScene['timeline']>;
1368
+ export type DirectorClip = DirectorTimeline['clips'][number];
1369
+ export type DirectorEnvironment = NonNullable<DirectorScene['environment']>;
1370
+ export type DirectorPath = z.infer<typeof motionPathSchema>;
1371
+ export type DirectorCameraMove = typeof DIRECTOR_CAMERA_MOVES[number];
1372
+ export type DirectorTransition = typeof DIRECTOR_TRANSITIONS[number];
1373
+ export declare function cameraDimensions(aspect: DirectorAspect): {
1374
+ width: number;
1375
+ height: number;
1376
+ };
1377
+ export declare function isDirectorJson(value: unknown): boolean;
1378
+ export declare function parseDirectorScene(value: unknown): DirectorScene;
1379
+ export declare function cloneDirectorScene(value: unknown, newId?: () => string): DirectorScene;
1380
+ export declare function cloneDirectorMetadata(metadata: Record<string, unknown>, newId?: () => string): Record<string, unknown>;
1381
+ export declare function directorSceneContent(value: DirectorScene): string;
1382
+ export declare function normalizeSceneEdit(previousValue: unknown, nextValue: unknown): DirectorScene;
1383
+ export declare const directorCaptureSchema: z.ZodEffects<z.ZodObject<{
1384
+ captureId: z.ZodString;
1385
+ assetId: z.ZodString;
1386
+ sceneId: z.ZodString;
1387
+ sceneRevision: z.ZodNumber;
1388
+ cameraId: z.ZodString;
1389
+ createdAt: z.ZodString;
1390
+ width: z.ZodNumber;
1391
+ height: z.ZodNumber;
1392
+ }, "strict", z.ZodTypeAny, {
1393
+ createdAt: string;
1394
+ sceneId: string;
1395
+ sceneRevision: number;
1396
+ captureId: string;
1397
+ assetId: string;
1398
+ cameraId: string;
1399
+ width: number;
1400
+ height: number;
1401
+ }, {
1402
+ createdAt: string;
1403
+ sceneId: string;
1404
+ sceneRevision: number;
1405
+ captureId: string;
1406
+ assetId: string;
1407
+ cameraId: string;
1408
+ width: number;
1409
+ height: number;
1410
+ }>, {
1411
+ createdAt: string;
1412
+ sceneId: string;
1413
+ sceneRevision: number;
1414
+ captureId: string;
1415
+ assetId: string;
1416
+ cameraId: string;
1417
+ width: number;
1418
+ height: number;
1419
+ }, {
1420
+ createdAt: string;
1421
+ sceneId: string;
1422
+ sceneRevision: number;
1423
+ captureId: string;
1424
+ assetId: string;
1425
+ cameraId: string;
1426
+ width: number;
1427
+ height: number;
1428
+ }>;
1429
+ export type DirectorCapture = z.infer<typeof directorCaptureSchema>;
1430
+ export declare const directorProvenanceSchema: z.ZodEffects<z.ZodObject<{
1431
+ captureId: z.ZodString;
1432
+ requestHash: z.ZodString;
1433
+ canvasId: z.ZodString;
1434
+ expectedCanvasRevision: z.ZodNumber;
1435
+ nodeId: z.ZodString;
1436
+ sceneId: z.ZodString;
1437
+ sceneRevision: z.ZodNumber;
1438
+ cameraId: z.ZodString;
1439
+ width: z.ZodNumber;
1440
+ height: z.ZodNumber;
1441
+ }, "strict", z.ZodTypeAny, {
1442
+ sceneId: string;
1443
+ sceneRevision: number;
1444
+ captureId: string;
1445
+ cameraId: string;
1446
+ width: number;
1447
+ height: number;
1448
+ requestHash: string;
1449
+ canvasId: string;
1450
+ expectedCanvasRevision: number;
1451
+ nodeId: string;
1452
+ }, {
1453
+ sceneId: string;
1454
+ sceneRevision: number;
1455
+ captureId: string;
1456
+ cameraId: string;
1457
+ width: number;
1458
+ height: number;
1459
+ requestHash: string;
1460
+ canvasId: string;
1461
+ expectedCanvasRevision: number;
1462
+ nodeId: string;
1463
+ }>, {
1464
+ sceneId: string;
1465
+ sceneRevision: number;
1466
+ captureId: string;
1467
+ cameraId: string;
1468
+ width: number;
1469
+ height: number;
1470
+ requestHash: string;
1471
+ canvasId: string;
1472
+ expectedCanvasRevision: number;
1473
+ nodeId: string;
1474
+ }, {
1475
+ sceneId: string;
1476
+ sceneRevision: number;
1477
+ captureId: string;
1478
+ cameraId: string;
1479
+ width: number;
1480
+ height: number;
1481
+ requestHash: string;
1482
+ canvasId: string;
1483
+ expectedCanvasRevision: number;
1484
+ nodeId: string;
1485
+ }>;
1486
+ export type DirectorProvenance = z.infer<typeof directorProvenanceSchema>;
1487
+ export declare function parseDirectorCaptureHistory(value: unknown, scene?: DirectorScene): DirectorCapture[];
1488
+ export {};
1489
+ //# sourceMappingURL=director-contract.d.ts.map