@cueframe/kernel 0.0.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 (1119) hide show
  1. package/dist/TextureLoader-UQOFUSAP.js +422 -0
  2. package/dist/VideoTexture-AQWSPIJG.js +62 -0
  3. package/dist/_members/account-model/index.d.ts +1 -0
  4. package/dist/_members/account-model/index.js +4 -0
  5. package/dist/_members/account-model/testing/conversationStoreContract.d.ts +97 -0
  6. package/dist/_members/account-model/testing/conversationStoreContract.js +168 -0
  7. package/dist/_members/account-model/testing/index.d.ts +7 -0
  8. package/dist/_members/account-model/testing/index.js +7 -0
  9. package/dist/_members/account-model/testing/restorePointStoreContract.d.ts +52 -0
  10. package/dist/_members/account-model/testing/restorePointStoreContract.js +69 -0
  11. package/dist/_members/account-model/types/index.d.ts +5 -0
  12. package/dist/_members/account-model/types/index.js +1 -0
  13. package/dist/_members/account-model/validators/contextFile.d.ts +36 -0
  14. package/dist/_members/account-model/validators/contextFile.js +18 -0
  15. package/dist/_members/account-model/validators/conversation.d.ts +153 -0
  16. package/dist/_members/account-model/validators/conversation.js +95 -0
  17. package/dist/_members/account-model/validators/dashboardInsight.d.ts +30 -0
  18. package/dist/_members/account-model/validators/dashboardInsight.js +16 -0
  19. package/dist/_members/account-model/validators/index.d.ts +7 -0
  20. package/dist/_members/account-model/validators/index.js +7 -0
  21. package/dist/_members/account-model/validators/sessionToken.d.ts +79 -0
  22. package/dist/_members/account-model/validators/sessionToken.js +49 -0
  23. package/dist/_members/account-model/validators/uploadToken.d.ts +33 -0
  24. package/dist/_members/account-model/validators/uploadToken.js +16 -0
  25. package/dist/_members/account-model/validators/userSettings.d.ts +22 -0
  26. package/dist/_members/account-model/validators/userSettings.js +12 -0
  27. package/dist/_members/account-model/validators/workingComposition.d.ts +34 -0
  28. package/dist/_members/account-model/validators/workingComposition.js +20 -0
  29. package/dist/_members/animate/animations/Create.d.ts +36 -0
  30. package/dist/_members/animate/animations/FadeIn.d.ts +36 -0
  31. package/dist/_members/animate/animations/GrowArrow.d.ts +36 -0
  32. package/dist/_members/animate/animations/GrowFromCenter.d.ts +25 -0
  33. package/dist/_members/animate/animations/Indicate.d.ts +29 -0
  34. package/dist/_members/animate/animations/MoveAlongPath.d.ts +30 -0
  35. package/dist/_members/animate/animations/Transform.d.ts +46 -0
  36. package/dist/_members/animate/animations/Wiggle.d.ts +31 -0
  37. package/dist/_members/animate/animations/Write.d.ts +35 -0
  38. package/dist/_members/animate/animations/index.d.ts +9 -0
  39. package/dist/_members/animate/composition/AnimationGroup.d.ts +32 -0
  40. package/dist/_members/animate/composition/LaggedStart.d.ts +33 -0
  41. package/dist/_members/animate/composition/Succession.d.ts +27 -0
  42. package/dist/_members/animate/composition/index.d.ts +3 -0
  43. package/dist/_members/animate/easing/index.d.ts +3 -0
  44. package/dist/_members/animate/easing/rush.d.ts +16 -0
  45. package/dist/_members/animate/easing/smooth.d.ts +8 -0
  46. package/dist/_members/animate/easing/smootherstep.d.ts +7 -0
  47. package/dist/_members/animate/index.d.ts +25 -0
  48. package/dist/_members/animate/mobjects/Arrow.d.ts +41 -0
  49. package/dist/_members/animate/mobjects/BrandBox.d.ts +43 -0
  50. package/dist/_members/animate/mobjects/DiGraph.d.ts +21 -0
  51. package/dist/_members/animate/mobjects/Graph.d.ts +72 -0
  52. package/dist/_members/animate/mobjects/index.d.ts +4 -0
  53. package/dist/_members/animate/three/ThreeCanvas.d.ts +36 -0
  54. package/dist/_members/animate/three/drei.d.ts +13 -0
  55. package/dist/_members/animate/three/index.d.ts +2 -0
  56. package/dist/_members/authoring/agent/buildTools.d.ts +54 -0
  57. package/dist/_members/authoring/agent/contextManagement.d.ts +73 -0
  58. package/dist/_members/authoring/agent/errors.d.ts +12 -0
  59. package/dist/_members/authoring/agent/index.d.ts +2 -0
  60. package/dist/_members/authoring/agent/memoryTool.d.ts +8 -0
  61. package/dist/_members/authoring/agent/promptCache.d.ts +34 -0
  62. package/dist/_members/authoring/agent.d.ts +59 -0
  63. package/dist/_members/authoring/capabilities.d.ts +306 -0
  64. package/dist/_members/authoring/composer/index.d.ts +2 -0
  65. package/dist/_members/authoring/composer/scopes.d.ts +26 -0
  66. package/dist/_members/authoring/context/brand.d.ts +37 -0
  67. package/dist/_members/authoring/context/brandTokens.d.ts +6 -0
  68. package/dist/_members/authoring/context/index.d.ts +8 -0
  69. package/dist/_members/authoring/context/timeline.d.ts +33 -0
  70. package/dist/_members/authoring/context/transcript.d.ts +24 -0
  71. package/dist/_members/authoring/context/types.d.ts +5 -0
  72. package/dist/_members/authoring/decomposer.d.ts +17 -0
  73. package/dist/_members/authoring/evaluate.d.ts +37 -0
  74. package/dist/_members/authoring/evaluator.d.ts +22 -0
  75. package/dist/_members/authoring/index.d.ts +25 -0
  76. package/dist/_members/authoring/models/modelFactory.d.ts +107 -0
  77. package/dist/_members/authoring/motion/applyMotionPreset.d.ts +31 -0
  78. package/dist/_members/authoring/motion/index.d.ts +6 -0
  79. package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +38 -0
  80. package/dist/_members/authoring/motion/shell.d.ts +30 -0
  81. package/dist/_members/authoring/pipelineTrace.d.ts +38 -0
  82. package/dist/_members/authoring/prompts/decomposerPrompt.d.ts +5 -0
  83. package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +18 -0
  84. package/dist/_members/authoring/prompts/evaluatorPrompt.d.ts +5 -0
  85. package/dist/_members/authoring/prompts/graphics.d.ts +14 -0
  86. package/dist/_members/authoring/prompts/index.d.ts +4 -0
  87. package/dist/_members/authoring/prompts/plannerPrompt.d.ts +48 -0
  88. package/dist/_members/authoring/providers/index.d.ts +1 -0
  89. package/dist/_members/authoring/providers/resourceApi.d.ts +32 -0
  90. package/dist/_members/authoring/resource-routing.d.ts +186 -0
  91. package/dist/_members/authoring/resources.d.ts +59 -0
  92. package/dist/_members/authoring/scope.d.ts +31 -0
  93. package/dist/_members/authoring/tools/brandTokens.d.ts +34 -0
  94. package/dist/_members/authoring/tools/composeRoleTools.d.ts +112 -0
  95. package/dist/_members/authoring/tools/index.d.ts +4 -0
  96. package/dist/_members/authoring/tools/toolSets.d.ts +54 -0
  97. package/dist/_members/authoring/transpileComponent.d.ts +40 -0
  98. package/dist/_members/authoring/transpileHelper.d.ts +26 -0
  99. package/dist/_members/authoring/types.d.ts +572 -0
  100. package/dist/_members/brand-derivation/constants.d.ts +27 -0
  101. package/dist/_members/brand-derivation/constants.js +20 -0
  102. package/dist/_members/brand-derivation/contrastSafe.d.ts +47 -0
  103. package/dist/_members/brand-derivation/contrastSafe.js +114 -0
  104. package/dist/_members/brand-derivation/index.d.ts +1 -0
  105. package/dist/_members/brand-derivation/index.js +1 -0
  106. package/dist/_members/compose/CompositionRenderer.d.ts +12 -0
  107. package/dist/_members/compose/catalog.d.ts +1 -0
  108. package/dist/_members/compose/index.d.ts +8 -0
  109. package/dist/_members/compose/primitiveRegistry.d.ts +90 -0
  110. package/dist/_members/compose/sceneToRenderInput.d.ts +51 -0
  111. package/dist/_members/compose/schema.d.ts +45 -0
  112. package/dist/_members/compose/tokenResolver.d.ts +28 -0
  113. package/dist/_members/composition/audio/audioMix.d.ts +67 -0
  114. package/dist/_members/composition/audio/audioMix.js +61 -0
  115. package/dist/_members/composition/audio/index.d.ts +5 -0
  116. package/dist/_members/composition/audio/index.js +5 -0
  117. package/dist/_members/composition/audio/mixStaging.d.ts +107 -0
  118. package/dist/_members/composition/audio/mixStaging.js +195 -0
  119. package/dist/_members/composition/audio/musicPack.d.ts +56 -0
  120. package/dist/_members/composition/audio/musicPack.generated.d.ts +9 -0
  121. package/dist/_members/composition/audio/musicPack.generated.js +136 -0
  122. package/dist/_members/composition/audio/musicPack.js +36 -0
  123. package/dist/_members/composition/audio/pack.d.ts +67 -0
  124. package/dist/_members/composition/audio/pack.generated.d.ts +9 -0
  125. package/dist/_members/composition/audio/pack.generated.js +603 -0
  126. package/dist/_members/composition/audio/pack.js +48 -0
  127. package/dist/_members/composition/audio/palette.d.ts +82 -0
  128. package/dist/_members/composition/audio/palette.js +134 -0
  129. package/dist/_members/composition/autozoom/index.d.ts +57 -0
  130. package/dist/_members/composition/autozoom/index.js +83 -0
  131. package/dist/_members/composition/brand-kit.d.ts +58 -0
  132. package/dist/_members/composition/brand-kit.js +45 -0
  133. package/dist/_members/composition/brief/contract.d.ts +132 -0
  134. package/dist/_members/composition/brief/contract.js +209 -0
  135. package/dist/_members/composition/color-grade.d.ts +17 -0
  136. package/dist/_members/composition/color-grade.js +80 -0
  137. package/dist/_members/composition/depth.d.ts +24 -0
  138. package/dist/_members/composition/depth.js +8 -0
  139. package/dist/_members/composition/fixtures/agentErrored.d.ts +25 -0
  140. package/dist/_members/composition/fixtures/index.d.ts +7 -0
  141. package/dist/_members/composition/fixtures/index.js +143 -0
  142. package/dist/_members/composition/fixtures/vaayaErrored.d.ts +25 -0
  143. package/dist/_members/composition/fixtures/vaayaErrored.js +203 -0
  144. package/dist/_members/composition/fonts.d.ts +68 -0
  145. package/dist/_members/composition/fonts.js +162 -0
  146. package/dist/_members/composition/graphics-plan/compile.d.ts +43 -0
  147. package/dist/_members/composition/graphics-plan/compile.js +221 -0
  148. package/dist/_members/composition/graphics-plan/index.d.ts +11 -0
  149. package/dist/_members/composition/graphics-plan/index.js +10 -0
  150. package/dist/_members/composition/graphics-plan/instantiateMotif.d.ts +51 -0
  151. package/dist/_members/composition/graphics-plan/instantiateMotif.js +44 -0
  152. package/dist/_members/composition/graphics-plan/motion.d.ts +19 -0
  153. package/dist/_members/composition/graphics-plan/motion.js +66 -0
  154. package/dist/_members/composition/graphics-plan/schemas.d.ts +1672 -0
  155. package/dist/_members/composition/graphics-plan/schemas.js +261 -0
  156. package/dist/_members/composition/graphics-plan/solve.d.ts +34 -0
  157. package/dist/_members/composition/graphics-plan/solve.js +145 -0
  158. package/dist/_members/composition/index.d.ts +7 -0
  159. package/dist/_members/composition/index.js +5 -0
  160. package/dist/_members/composition/invariants/clipPlacement.d.ts +65 -0
  161. package/dist/_members/composition/invariants/clipPlacement.js +69 -0
  162. package/dist/_members/composition/invariants/composition.d.ts +9 -0
  163. package/dist/_members/composition/invariants/composition.js +28 -0
  164. package/dist/_members/composition/invariants/errors.d.ts +11 -0
  165. package/dist/_members/composition/invariants/errors.js +10 -0
  166. package/dist/_members/composition/invariants/etag.d.ts +10 -0
  167. package/dist/_members/composition/invariants/etag.js +38 -0
  168. package/dist/_members/composition/invariants/ids.d.ts +9 -0
  169. package/dist/_members/composition/invariants/ids.js +33 -0
  170. package/dist/_members/composition/invariants/index.d.ts +9 -0
  171. package/dist/_members/composition/invariants/index.js +9 -0
  172. package/dist/_members/composition/invariants/keyframes.d.ts +23 -0
  173. package/dist/_members/composition/invariants/keyframes.js +45 -0
  174. package/dist/_members/composition/invariants/markers.d.ts +9 -0
  175. package/dist/_members/composition/invariants/markers.js +29 -0
  176. package/dist/_members/composition/invariants/time.d.ts +22 -0
  177. package/dist/_members/composition/invariants/time.js +20 -0
  178. package/dist/_members/composition/invariants/tracks.d.ts +58 -0
  179. package/dist/_members/composition/invariants/tracks.js +304 -0
  180. package/dist/_members/composition/ops/compositionOps.d.ts +129 -0
  181. package/dist/_members/composition/ops/compositionOps.js +1056 -0
  182. package/dist/_members/composition/ops/headlessStore.d.ts +40 -0
  183. package/dist/_members/composition/ops/headlessStore.js +94 -0
  184. package/dist/_members/composition/ops/index.d.ts +6 -0
  185. package/dist/_members/composition/ops/index.js +4 -0
  186. package/dist/_members/composition/ops/selectors.d.ts +81 -0
  187. package/dist/_members/composition/ops/selectors.js +118 -0
  188. package/dist/_members/composition/ops/timeline-word.d.ts +24 -0
  189. package/dist/_members/composition/ops/timeline-word.js +1 -0
  190. package/dist/_members/composition/ops/transcript.d.ts +44 -0
  191. package/dist/_members/composition/ops/transcript.js +77 -0
  192. package/dist/_members/composition/ops/types.d.ts +145 -0
  193. package/dist/_members/composition/ops/types.js +16 -0
  194. package/dist/_members/composition/primitive-catalog/catalogQuery.d.ts +82 -0
  195. package/dist/_members/composition/primitive-catalog/catalogQuery.js +150 -0
  196. package/dist/_members/composition/primitive-catalog/disabled.d.ts +3 -0
  197. package/dist/_members/composition/primitive-catalog/disabled.js +32 -0
  198. package/dist/_members/composition/primitive-catalog/generated/meta.d.ts +2 -0
  199. package/dist/_members/composition/primitive-catalog/generated/meta.js +15161 -0
  200. package/dist/_members/composition/primitive-catalog/index.d.ts +28 -0
  201. package/dist/_members/composition/primitive-catalog/index.js +46 -0
  202. package/dist/_members/composition/primitive-catalog/paramValidation.d.ts +76 -0
  203. package/dist/_members/composition/primitive-catalog/paramValidation.js +231 -0
  204. package/dist/_members/composition/primitive-catalog/projection.d.ts +99 -0
  205. package/dist/_members/composition/primitive-catalog/projection.js +164 -0
  206. package/dist/_members/composition/primitive-catalog/types.d.ts +123 -0
  207. package/dist/_members/composition/primitive-catalog/types.js +14 -0
  208. package/dist/_members/composition/projection/behind-placement.d.ts +64 -0
  209. package/dist/_members/composition/projection/behind-placement.js +62 -0
  210. package/dist/_members/composition/projection/brandKit.d.ts +308 -0
  211. package/dist/_members/composition/projection/brandKit.js +482 -0
  212. package/dist/_members/composition/projection/cardTokens.d.ts +70 -0
  213. package/dist/_members/composition/projection/cardTokens.js +209 -0
  214. package/dist/_members/composition/projection/composition-floor.d.ts +349 -0
  215. package/dist/_members/composition/projection/composition-floor.js +582 -0
  216. package/dist/_members/composition/projection/cropProjection.d.ts +140 -0
  217. package/dist/_members/composition/projection/cropProjection.js +257 -0
  218. package/dist/_members/composition/projection/index.d.ts +7 -0
  219. package/dist/_members/composition/projection/index.js +7 -0
  220. package/dist/_members/composition/projection/occlusion-budget.d.ts +67 -0
  221. package/dist/_members/composition/projection/occlusion-budget.js +104 -0
  222. package/dist/_members/composition/projection/safe-zones.d.ts +38 -0
  223. package/dist/_members/composition/projection/safe-zones.js +99 -0
  224. package/dist/_members/composition/reframe/aspectLoss.d.ts +49 -0
  225. package/dist/_members/composition/reframe/aspectLoss.js +115 -0
  226. package/dist/_members/composition/reframe/coverage.d.ts +48 -0
  227. package/dist/_members/composition/reframe/coverage.js +62 -0
  228. package/dist/_members/composition/reframe/derive.d.ts +37 -0
  229. package/dist/_members/composition/reframe/derive.js +73 -0
  230. package/dist/_members/composition/reframe/index.d.ts +658 -0
  231. package/dist/_members/composition/reframe/index.js +109 -0
  232. package/dist/_members/composition/reframe/kenBurns.d.ts +43 -0
  233. package/dist/_members/composition/reframe/kenBurns.js +64 -0
  234. package/dist/_members/composition/reframe/shotScale.d.ts +118 -0
  235. package/dist/_members/composition/reframe/shotScale.js +176 -0
  236. package/dist/_members/composition/reframe/trajectory.d.ts +99 -0
  237. package/dist/_members/composition/reframe/trajectory.js +124 -0
  238. package/dist/_members/composition/timeline/compound.d.ts +36 -0
  239. package/dist/_members/composition/timeline/compound.js +134 -0
  240. package/dist/_members/composition/timeline/index.d.ts +9 -0
  241. package/dist/_members/composition/timeline/index.js +9 -0
  242. package/dist/_members/composition/timeline/intent.d.ts +54 -0
  243. package/dist/_members/composition/timeline/intent.js +228 -0
  244. package/dist/_members/composition/timeline/keyframes.d.ts +50 -0
  245. package/dist/_members/composition/timeline/keyframes.js +121 -0
  246. package/dist/_members/composition/timeline/link.d.ts +36 -0
  247. package/dist/_members/composition/timeline/link.js +59 -0
  248. package/dist/_members/composition/timeline/occupancy.d.ts +72 -0
  249. package/dist/_members/composition/timeline/occupancy.js +36 -0
  250. package/dist/_members/composition/timeline/placement.d.ts +86 -0
  251. package/dist/_members/composition/timeline/placement.js +74 -0
  252. package/dist/_members/composition/timeline/plan.d.ts +109 -0
  253. package/dist/_members/composition/timeline/plan.js +31 -0
  254. package/dist/_members/composition/timeline/resolve.d.ts +55 -0
  255. package/dist/_members/composition/timeline/resolve.js +170 -0
  256. package/dist/_members/composition/timeline/trims.d.ts +54 -0
  257. package/dist/_members/composition/timeline/trims.js +278 -0
  258. package/dist/_members/composition/types/index.d.ts +8 -0
  259. package/dist/_members/composition/types/index.js +1 -0
  260. package/dist/_members/composition/validators/brandKit.d.ts +1472 -0
  261. package/dist/_members/composition/validators/brandKit.js +295 -0
  262. package/dist/_members/composition/validators/composePlan.d.ts +960 -0
  263. package/dist/_members/composition/validators/composePlan.js +113 -0
  264. package/dist/_members/composition/validators/composition.d.ts +6881 -0
  265. package/dist/_members/composition/validators/composition.js +703 -0
  266. package/dist/_members/composition/validators/font.d.ts +114 -0
  267. package/dist/_members/composition/validators/font.js +34 -0
  268. package/dist/_members/composition/validators/graphicKinds.d.ts +32 -0
  269. package/dist/_members/composition/validators/graphicKinds.js +30 -0
  270. package/dist/_members/composition/validators/index.d.ts +9 -0
  271. package/dist/_members/composition/validators/index.js +9 -0
  272. package/dist/_members/composition/validators/project.d.ts +62 -0
  273. package/dist/_members/composition/validators/project.js +29 -0
  274. package/dist/_members/composition/validators/registry.d.ts +161 -0
  275. package/dist/_members/composition/validators/registry.js +41 -0
  276. package/dist/_members/composition/validators/render.d.ts +8274 -0
  277. package/dist/_members/composition/validators/render.js +139 -0
  278. package/dist/_members/composition/validators/session.d.ts +117 -0
  279. package/dist/_members/composition/validators/session.js +37 -0
  280. package/dist/_members/composition/validators/webhook.d.ts +83 -0
  281. package/dist/_members/composition/validators/webhook.js +72 -0
  282. package/dist/_members/composition-ops/alphaLayers.d.ts +70 -0
  283. package/dist/_members/composition-ops/alphaLayers.js +141 -0
  284. package/dist/_members/composition-ops/index.d.ts +4940 -0
  285. package/dist/_members/composition-ops/index.js +637 -0
  286. package/dist/_members/composition-ops/materializeGrid.d.ts +56 -0
  287. package/dist/_members/composition-ops/materializeGrid.js +99 -0
  288. package/dist/_members/composition-ops/opRecorder.d.ts +77 -0
  289. package/dist/_members/composition-ops/opRecorder.js +196 -0
  290. package/dist/_members/composition-ops/recordingStore.d.ts +23 -0
  291. package/dist/_members/composition-ops/recordingStore.js +14 -0
  292. package/dist/_members/composition-ops/replaceRegion.d.ts +65 -0
  293. package/dist/_members/composition-ops/replaceRegion.js +102 -0
  294. package/dist/_members/composition-ops/testFixtures.d.ts +19 -0
  295. package/dist/_members/composition-ops/testFixtures.js +19 -0
  296. package/dist/_members/core/index.d.ts +3 -0
  297. package/dist/_members/core/index.js +5 -0
  298. package/dist/_members/core/render/bookends.d.ts +62 -0
  299. package/dist/_members/core/render/bookends.js +53 -0
  300. package/dist/_members/core/render/captions.d.ts +65 -0
  301. package/dist/_members/core/render/captions.js +127 -0
  302. package/dist/_members/core/render/compositionRender.d.ts +190 -0
  303. package/dist/_members/core/render/compositionRender.js +1249 -0
  304. package/dist/_members/core/render/deriveTrajectory.d.ts +188 -0
  305. package/dist/_members/core/render/deriveTrajectory.js +889 -0
  306. package/dist/_members/core/render/emphasis.d.ts +13 -0
  307. package/dist/_members/core/render/emphasis.js +16 -0
  308. package/dist/_members/core/render/eval/cropBox.d.ts +88 -0
  309. package/dist/_members/core/render/eval/cropBox.js +139 -0
  310. package/dist/_members/core/render/eval/inclusion.d.ts +50 -0
  311. package/dist/_members/core/render/eval/inclusion.js +96 -0
  312. package/dist/_members/core/render/eval/index.d.ts +93 -0
  313. package/dist/_members/core/render/eval/index.js +146 -0
  314. package/dist/_members/core/render/eval/metrics.d.ts +50 -0
  315. package/dist/_members/core/render/eval/metrics.js +94 -0
  316. package/dist/_members/core/render/exportSettings.d.ts +40 -0
  317. package/dist/_members/core/render/exportSettings.js +65 -0
  318. package/dist/_members/core/render/index.d.ts +14 -0
  319. package/dist/_members/core/render/index.js +20 -0
  320. package/dist/_members/core/render/mapFaceToPerson.d.ts +39 -0
  321. package/dist/_members/core/render/mapFaceToPerson.js +73 -0
  322. package/dist/_members/core/render/types.d.ts +304 -0
  323. package/dist/_members/core/render/types.js +8 -0
  324. package/dist/_members/core/render/vcam/cameraPath.d.ts +51 -0
  325. package/dist/_members/core/render/vcam/cameraPath.js +248 -0
  326. package/dist/_members/core/render/vcam/constants.d.ts +113 -0
  327. package/dist/_members/core/render/vcam/constants.js +115 -0
  328. package/dist/_members/core/render/vcam/errorCodes.d.ts +30 -0
  329. package/dist/_members/core/render/vcam/errorCodes.js +39 -0
  330. package/dist/_members/core/render/vcam/framing.d.ts +90 -0
  331. package/dist/_members/core/render/vcam/framing.js +136 -0
  332. package/dist/_members/core/render/vcam/requiredRegion.d.ts +85 -0
  333. package/dist/_members/core/render/vcam/requiredRegion.js +137 -0
  334. package/dist/_members/core/render/vcam/shots.d.ts +45 -0
  335. package/dist/_members/core/render/vcam/shots.js +53 -0
  336. package/dist/_members/core/render/vcam/subjectSet.d.ts +106 -0
  337. package/dist/_members/core/render/vcam/subjectSet.js +388 -0
  338. package/dist/_members/core/select/errorCodes.d.ts +27 -0
  339. package/dist/_members/core/select/errorCodes.js +38 -0
  340. package/dist/_members/core/select/index.d.ts +27 -0
  341. package/dist/_members/core/select/index.js +26 -0
  342. package/dist/_members/core/select/model.d.ts +178 -0
  343. package/dist/_members/core/select/model.js +18 -0
  344. package/dist/_members/core/select/select.d.ts +63 -0
  345. package/dist/_members/core/select/select.js +244 -0
  346. package/dist/_members/core/select/stabilize.d.ts +145 -0
  347. package/dist/_members/core/select/stabilize.js +242 -0
  348. package/dist/_members/core/types.d.ts +84 -0
  349. package/dist/_members/core/types.js +7 -0
  350. package/dist/_members/errors/index.d.ts +1 -0
  351. package/dist/_members/errors/index.js +1 -0
  352. package/dist/_members/errors/registry.d.ts +708 -0
  353. package/dist/_members/errors/registry.js +560 -0
  354. package/dist/_members/foundation/codes/index.d.ts +31 -0
  355. package/dist/_members/foundation/codes/index.js +31 -0
  356. package/dist/_members/foundation/index.d.ts +2 -0
  357. package/dist/_members/foundation/index.js +2 -0
  358. package/dist/_members/foundation/primitives/index.d.ts +9 -0
  359. package/dist/_members/foundation/primitives/index.js +5 -0
  360. package/dist/_members/mcp/adapter.d.ts +138 -0
  361. package/dist/_members/mcp/adapter.js +771 -0
  362. package/dist/_members/mcp/burnedNames.d.ts +23 -0
  363. package/dist/_members/mcp/burnedNames.js +73 -0
  364. package/dist/_members/mcp/core.d.ts +158 -0
  365. package/dist/_members/mcp/core.js +390 -0
  366. package/dist/_members/mcp/curation.d.ts +155 -0
  367. package/dist/_members/mcp/curation.js +792 -0
  368. package/dist/_members/mcp/executor.d.ts +60 -0
  369. package/dist/_members/mcp/executor.js +142 -0
  370. package/dist/_members/mcp/format.d.ts +7 -0
  371. package/dist/_members/mcp/format.js +9 -0
  372. package/dist/_members/mcp/generated/catalogPreviews.d.ts +2 -0
  373. package/dist/_members/mcp/generated/catalogPreviews.js +95 -0
  374. package/dist/_members/mcp/generated/harness.d.ts +1 -0
  375. package/dist/_members/mcp/generated/harness.js +81 -0
  376. package/dist/_members/mcp/generated/operations.d.ts +41 -0
  377. package/dist/_members/mcp/generated/operations.js +131 -0
  378. package/dist/_members/mcp/index.d.ts +3 -0
  379. package/dist/_members/mcp/index.js +50 -0
  380. package/dist/_members/mcp/internalLoopTools.d.ts +25 -0
  381. package/dist/_members/mcp/internalLoopTools.js +109 -0
  382. package/dist/_members/mcp/prompts.d.ts +22 -0
  383. package/dist/_members/mcp/prompts.js +45 -0
  384. package/dist/_members/mcp/resources.d.ts +16 -0
  385. package/dist/_members/mcp/resources.js +166 -0
  386. package/dist/_members/mcp/server.d.ts +92 -0
  387. package/dist/_members/mcp/server.js +340 -0
  388. package/dist/_members/mcp/wait.d.ts +37 -0
  389. package/dist/_members/mcp/wait.js +378 -0
  390. package/dist/_members/mcp/x402Meta.d.ts +50 -0
  391. package/dist/_members/mcp/x402Meta.js +66 -0
  392. package/dist/_members/media-model/api.d.ts +877 -0
  393. package/dist/_members/media-model/api.js +175 -0
  394. package/dist/_members/media-model/index.d.ts +1 -0
  395. package/dist/_members/media-model/index.js +1 -0
  396. package/dist/_members/media-model/media-kind.d.ts +36 -0
  397. package/dist/_members/media-model/media-kind.js +116 -0
  398. package/dist/_members/media-model/testing/index.d.ts +2 -0
  399. package/dist/_members/media-model/testing/index.js +1 -0
  400. package/dist/_members/media-model/testing/mediaStoreContract.d.ts +17 -0
  401. package/dist/_members/media-model/testing/mediaStoreContract.js +82 -0
  402. package/dist/_members/media-model/transcriptSearch.d.ts +54 -0
  403. package/dist/_members/media-model/transcriptSearch.js +70 -0
  404. package/dist/_members/media-model/transcriptSearchCases.json +79 -0
  405. package/dist/_members/nle-export/compact-timeline.d.ts +2 -0
  406. package/dist/_members/nle-export/compact-timeline.js +73 -0
  407. package/dist/_members/nle-export/compact-timeline.js.map +1 -0
  408. package/dist/_members/nle-export/composition-to-input.d.ts +2 -0
  409. package/dist/_members/nle-export/composition-to-input.js +147 -0
  410. package/dist/_members/nle-export/composition-to-input.js.map +1 -0
  411. package/dist/_members/nle-export/fcpxml.d.ts +15 -0
  412. package/dist/_members/nle-export/fcpxml.js +159 -0
  413. package/dist/_members/nle-export/fcpxml.js.map +1 -0
  414. package/dist/_members/nle-export/index.d.ts +11 -0
  415. package/dist/_members/nle-export/index.js +12 -0
  416. package/dist/_members/nle-export/index.js.map +1 -0
  417. package/dist/_members/nle-export/premiere.d.ts +2 -0
  418. package/dist/_members/nle-export/premiere.js +161 -0
  419. package/dist/_members/nle-export/premiere.js.map +1 -0
  420. package/dist/_members/nle-export/server/index.d.ts +1 -0
  421. package/dist/_members/nle-export/server/index.js +2 -0
  422. package/dist/_members/nle-export/server/index.js.map +1 -0
  423. package/dist/_members/nle-export/server/pack-zip.d.ts +6 -0
  424. package/dist/_members/nle-export/server/pack-zip.js +38 -0
  425. package/dist/_members/nle-export/server/pack-zip.js.map +1 -0
  426. package/dist/_members/nle-export/srt.d.ts +2 -0
  427. package/dist/_members/nle-export/srt.js +50 -0
  428. package/dist/_members/nle-export/srt.js.map +1 -0
  429. package/dist/_members/nle-export/types.d.ts +183 -0
  430. package/dist/_members/nle-export/types.js +9 -0
  431. package/dist/_members/nle-export/types.js.map +1 -0
  432. package/dist/_members/nle-export/xml/index.d.ts +10 -0
  433. package/dist/_members/nle-export/xml/index.js +11 -0
  434. package/dist/_members/nle-export/xml/index.js.map +1 -0
  435. package/dist/_members/nle-export/xml-utils.d.ts +21 -0
  436. package/dist/_members/nle-export/xml-utils.js +48 -0
  437. package/dist/_members/nle-export/xml-utils.js.map +1 -0
  438. package/dist/_members/perception/activeSpeaker.d.ts +108 -0
  439. package/dist/_members/perception/activeSpeaker.js +103 -0
  440. package/dist/_members/perception/audioQuality.d.ts +78 -0
  441. package/dist/_members/perception/audioQuality.js +76 -0
  442. package/dist/_members/perception/energyBeat.d.ts +95 -0
  443. package/dist/_members/perception/energyBeat.js +99 -0
  444. package/dist/_members/perception/identityMatch.d.ts +80 -0
  445. package/dist/_members/perception/identityMatch.js +91 -0
  446. package/dist/_members/perception/index.d.ts +90 -0
  447. package/dist/_members/perception/index.js +48 -0
  448. package/dist/_members/perception/visualQuality.d.ts +86 -0
  449. package/dist/_members/perception/visualQuality.js +95 -0
  450. package/dist/_members/plane/conformance.d.ts +75 -0
  451. package/dist/_members/plane/conformance.js +90 -0
  452. package/dist/_members/plane/contract.d.ts +55 -0
  453. package/dist/_members/plane/contract.js +49 -0
  454. package/dist/_members/plane/index.d.ts +16 -0
  455. package/dist/_members/plane/index.js +16 -0
  456. package/dist/_members/primitives/backgrounds/animated-bar-chart/config.d.ts +42 -0
  457. package/dist/_members/primitives/backgrounds/animated-bar-chart/index.d.ts +28 -0
  458. package/dist/_members/primitives/backgrounds/animated-line-chart/config.d.ts +42 -0
  459. package/dist/_members/primitives/backgrounds/animated-line-chart/index.d.ts +29 -0
  460. package/dist/_members/primitives/backgrounds/dither-gradient-bg/config.d.ts +30 -0
  461. package/dist/_members/primitives/backgrounds/dither-gradient-bg/index.d.ts +25 -0
  462. package/dist/_members/primitives/backgrounds/dynamic-grid/config.d.ts +24 -0
  463. package/dist/_members/primitives/backgrounds/dynamic-grid/index.d.ts +17 -0
  464. package/dist/_members/primitives/backgrounds/ecosystem-constellation/config.d.ts +21 -0
  465. package/dist/_members/primitives/backgrounds/ecosystem-constellation/index.d.ts +16 -0
  466. package/dist/_members/primitives/backgrounds/index.d.ts +13 -0
  467. package/dist/_members/primitives/backgrounds/index.js +32 -0
  468. package/dist/_members/primitives/backgrounds/index.js.map +1 -0
  469. package/dist/_members/primitives/backgrounds/infinite-marquee/config.d.ts +36 -0
  470. package/dist/_members/primitives/backgrounds/infinite-marquee/index.d.ts +21 -0
  471. package/dist/_members/primitives/backgrounds/mesh-gradient-bg/config.d.ts +21 -0
  472. package/dist/_members/primitives/backgrounds/mesh-gradient-bg/index.d.ts +16 -0
  473. package/dist/_members/primitives/backgrounds/perspective-marquee/config.d.ts +42 -0
  474. package/dist/_members/primitives/backgrounds/perspective-marquee/index.d.ts +23 -0
  475. package/dist/_members/primitives/backgrounds/silk-flow-bg/config.d.ts +36 -0
  476. package/dist/_members/primitives/backgrounds/silk-flow-bg/index.d.ts +30 -0
  477. package/dist/_members/primitives/backgrounds/vector-field/config.d.ts +30 -0
  478. package/dist/_members/primitives/backgrounds/vector-field/index.d.ts +25 -0
  479. package/dist/_members/primitives/backgrounds/volumetric-rays/config.d.ts +33 -0
  480. package/dist/_members/primitives/backgrounds/volumetric-rays/index.d.ts +30 -0
  481. package/dist/_members/primitives/captions/Captions.d.ts +33 -0
  482. package/dist/_members/primitives/captions/index.d.ts +17 -0
  483. package/dist/_members/primitives/captions/index.js +398 -0
  484. package/dist/_members/primitives/captions/index.js.map +1 -0
  485. package/dist/_members/primitives/captions/paginate.d.ts +31 -0
  486. package/dist/_members/primitives/captions/placement.d.ts +35 -0
  487. package/dist/_members/primitives/chunk-2LVE4UIT.js +139 -0
  488. package/dist/_members/primitives/chunk-2LVE4UIT.js.map +1 -0
  489. package/dist/_members/primitives/chunk-3IQUH6KK.js +20 -0
  490. package/dist/_members/primitives/chunk-3IQUH6KK.js.map +1 -0
  491. package/dist/_members/primitives/chunk-3OMURV6Q.js +112 -0
  492. package/dist/_members/primitives/chunk-3OMURV6Q.js.map +1 -0
  493. package/dist/_members/primitives/chunk-4IS6TMEG.js +21 -0
  494. package/dist/_members/primitives/chunk-4IS6TMEG.js.map +1 -0
  495. package/dist/_members/primitives/chunk-5MWGAEGQ.js +1644 -0
  496. package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +1 -0
  497. package/dist/_members/primitives/chunk-7RRPFPQK.js +15 -0
  498. package/dist/_members/primitives/chunk-7RRPFPQK.js.map +1 -0
  499. package/dist/_members/primitives/chunk-DH5TRZK2.js +125 -0
  500. package/dist/_members/primitives/chunk-DH5TRZK2.js.map +1 -0
  501. package/dist/_members/primitives/chunk-E3KNUSFG.js +2337 -0
  502. package/dist/_members/primitives/chunk-E3KNUSFG.js.map +1 -0
  503. package/dist/_members/primitives/chunk-G2B3G4HK.js +47 -0
  504. package/dist/_members/primitives/chunk-G2B3G4HK.js.map +1 -0
  505. package/dist/_members/primitives/chunk-HFPFGZXT.js +1494 -0
  506. package/dist/_members/primitives/chunk-HFPFGZXT.js.map +1 -0
  507. package/dist/_members/primitives/chunk-HIWVFZVH.js +19 -0
  508. package/dist/_members/primitives/chunk-HIWVFZVH.js.map +1 -0
  509. package/dist/_members/primitives/chunk-IDAL6G3Y.js +134 -0
  510. package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +1 -0
  511. package/dist/_members/primitives/chunk-KNC6JP5F.js +34 -0
  512. package/dist/_members/primitives/chunk-KNC6JP5F.js.map +1 -0
  513. package/dist/_members/primitives/chunk-KYRDVZST.js +459 -0
  514. package/dist/_members/primitives/chunk-KYRDVZST.js.map +1 -0
  515. package/dist/_members/primitives/chunk-LWLHS2NS.js +3410 -0
  516. package/dist/_members/primitives/chunk-LWLHS2NS.js.map +1 -0
  517. package/dist/_members/primitives/chunk-QAQ3P7DR.js +8855 -0
  518. package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +1 -0
  519. package/dist/_members/primitives/chunk-ROV2ODWC.js +81 -0
  520. package/dist/_members/primitives/chunk-ROV2ODWC.js.map +1 -0
  521. package/dist/_members/primitives/chunk-TCRC2FH3.js +183 -0
  522. package/dist/_members/primitives/chunk-TCRC2FH3.js.map +1 -0
  523. package/dist/_members/primitives/chunk-US4YEDAA.js +96 -0
  524. package/dist/_members/primitives/chunk-US4YEDAA.js.map +1 -0
  525. package/dist/_members/primitives/chunk-UVKRO5ER.js +13 -0
  526. package/dist/_members/primitives/chunk-UVKRO5ER.js.map +1 -0
  527. package/dist/_members/primitives/chunk-W4EIIF2I.js +10 -0
  528. package/dist/_members/primitives/chunk-W4EIIF2I.js.map +1 -0
  529. package/dist/_members/primitives/chunk-WPGKIPCO.js +3563 -0
  530. package/dist/_members/primitives/chunk-WPGKIPCO.js.map +1 -0
  531. package/dist/_members/primitives/chunk-WZFLEGMD.js +1435 -0
  532. package/dist/_members/primitives/chunk-WZFLEGMD.js.map +1 -0
  533. package/dist/_members/primitives/chunk-XHU3WBEI.js +33 -0
  534. package/dist/_members/primitives/chunk-XHU3WBEI.js.map +1 -0
  535. package/dist/_members/primitives/chunk-YN7WTZZ7.js +46 -0
  536. package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +1 -0
  537. package/dist/_members/primitives/effects/blur/config.d.ts +24 -0
  538. package/dist/_members/primitives/effects/blur/index.d.ts +29 -0
  539. package/dist/_members/primitives/effects/color-grade/config.d.ts +30 -0
  540. package/dist/_members/primitives/effects/color-grade/index.d.ts +35 -0
  541. package/dist/_members/primitives/effects/grain/config.d.ts +21 -0
  542. package/dist/_members/primitives/effects/grain/index.d.ts +21 -0
  543. package/dist/_members/primitives/effects/index.d.ts +12 -0
  544. package/dist/_members/primitives/effects/index.js +30 -0
  545. package/dist/_members/primitives/effects/index.js.map +1 -0
  546. package/dist/_members/primitives/effects/parallax/config.d.ts +21 -0
  547. package/dist/_members/primitives/effects/parallax/index.d.ts +25 -0
  548. package/dist/_members/primitives/effects/particles/config.d.ts +33 -0
  549. package/dist/_members/primitives/effects/particles/index.d.ts +31 -0
  550. package/dist/_members/primitives/effects/pulsing-indicator/config.d.ts +24 -0
  551. package/dist/_members/primitives/effects/pulsing-indicator/index.d.ts +19 -0
  552. package/dist/_members/primitives/effects/spotlight-card/config.d.ts +42 -0
  553. package/dist/_members/primitives/effects/spotlight-card/index.d.ts +25 -0
  554. package/dist/_members/primitives/effects/spring-pop-in/config.d.ts +27 -0
  555. package/dist/_members/primitives/effects/spring-pop-in/index.d.ts +22 -0
  556. package/dist/_members/primitives/effects/success-confetti/config.d.ts +42 -0
  557. package/dist/_members/primitives/effects/success-confetti/index.d.ts +23 -0
  558. package/dist/_members/primitives/effects/vignette/config.d.ts +21 -0
  559. package/dist/_members/primitives/effects/vignette/index.d.ts +23 -0
  560. package/dist/_members/primitives/hero-text/HeroText.d.ts +29 -0
  561. package/dist/_members/primitives/hero-text/config.d.ts +46 -0
  562. package/dist/_members/primitives/hero-text/index.d.ts +18 -0
  563. package/dist/_members/primitives/hero-text/index.js +14 -0
  564. package/dist/_members/primitives/hero-text/index.js.map +1 -0
  565. package/dist/_members/primitives/index.d.ts +21 -0
  566. package/dist/_members/primitives/index.js +64 -0
  567. package/dist/_members/primitives/index.js.map +1 -0
  568. package/dist/_members/primitives/layouts/chat-to-preview-layout/config.d.ts +21 -0
  569. package/dist/_members/primitives/layouts/chat-to-preview-layout/index.d.ts +19 -0
  570. package/dist/_members/primitives/layouts/index.d.ts +9 -0
  571. package/dist/_members/primitives/layouts/index.js +24 -0
  572. package/dist/_members/primitives/layouts/index.js.map +1 -0
  573. package/dist/_members/primitives/layouts/infinite-bento-pan/config.d.ts +18 -0
  574. package/dist/_members/primitives/layouts/infinite-bento-pan/index.d.ts +15 -0
  575. package/dist/_members/primitives/layouts/letterbox/config.d.ts +18 -0
  576. package/dist/_members/primitives/layouts/letterbox/index.d.ts +23 -0
  577. package/dist/_members/primitives/layouts/photo-grid/config.d.ts +21 -0
  578. package/dist/_members/primitives/layouts/photo-grid/index.d.ts +25 -0
  579. package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +21 -0
  580. package/dist/_members/primitives/layouts/picture-in-picture/index.d.ts +32 -0
  581. package/dist/_members/primitives/layouts/split-screen/config.d.ts +15 -0
  582. package/dist/_members/primitives/layouts/split-screen/index.d.ts +22 -0
  583. package/dist/_members/primitives/layouts/staggered-bento-grid/config.d.ts +66 -0
  584. package/dist/_members/primitives/layouts/staggered-bento-grid/index.d.ts +24 -0
  585. package/dist/_members/primitives/lib/easings.d.ts +47 -0
  586. package/dist/_members/primitives/lib/easings.js +26 -0
  587. package/dist/_members/primitives/lib/easings.js.map +1 -0
  588. package/dist/_members/primitives/lib/index.d.ts +8 -0
  589. package/dist/_members/primitives/lib/index.js +74 -0
  590. package/dist/_members/primitives/lib/index.js.map +1 -0
  591. package/dist/_members/primitives/lib/palette.d.ts +55 -0
  592. package/dist/_members/primitives/lib/palette.js +72 -0
  593. package/dist/_members/primitives/lib/palette.js.map +1 -0
  594. package/dist/_members/primitives/lib/preview.d.ts +36 -0
  595. package/dist/_members/primitives/lib/preview.js +8 -0
  596. package/dist/_members/primitives/lib/preview.js.map +1 -0
  597. package/dist/_members/primitives/lib/schema.d.ts +53 -0
  598. package/dist/_members/primitives/lib/schema.js +12 -0
  599. package/dist/_members/primitives/lib/schema.js.map +1 -0
  600. package/dist/_members/primitives/lib/seeded-random.d.ts +33 -0
  601. package/dist/_members/primitives/lib/seeded-random.js +14 -0
  602. package/dist/_members/primitives/lib/seeded-random.js.map +1 -0
  603. package/dist/_members/primitives/lib/text/contrast.d.ts +27 -0
  604. package/dist/_members/primitives/lib/text/contrast.js +12 -0
  605. package/dist/_members/primitives/lib/text/contrast.js.map +1 -0
  606. package/dist/_members/primitives/lib/text/fill.d.ts +8 -0
  607. package/dist/_members/primitives/lib/text/fill.js +8 -0
  608. package/dist/_members/primitives/lib/text/fill.js.map +1 -0
  609. package/dist/_members/primitives/lib/text/fitText.d.ts +62 -0
  610. package/dist/_members/primitives/lib/text/fitText.js +10 -0
  611. package/dist/_members/primitives/lib/text/fitText.js.map +1 -0
  612. package/dist/_members/primitives/lib/text/marker.d.ts +15 -0
  613. package/dist/_members/primitives/lib/text/marker.js +8 -0
  614. package/dist/_members/primitives/lib/text/marker.js.map +1 -0
  615. package/dist/_members/primitives/lib/text/motion.d.ts +57 -0
  616. package/dist/_members/primitives/lib/text/motion.js +16 -0
  617. package/dist/_members/primitives/lib/text/motion.js.map +1 -0
  618. package/dist/_members/primitives/lib/text/recolor.d.ts +12 -0
  619. package/dist/_members/primitives/lib/text/recolor.js +8 -0
  620. package/dist/_members/primitives/lib/text/recolor.js.map +1 -0
  621. package/dist/_members/primitives/lib/text/spec.d.ts +82 -0
  622. package/dist/_members/primitives/lib/text/spec.js +1 -0
  623. package/dist/_members/primitives/lib/text/spec.js.map +1 -0
  624. package/dist/_members/primitives/lib/text/stage.d.ts +23 -0
  625. package/dist/_members/primitives/lib/text/stage.js +8 -0
  626. package/dist/_members/primitives/lib/text/stage.js.map +1 -0
  627. package/dist/_members/primitives/lib/text/typeface.d.ts +16 -0
  628. package/dist/_members/primitives/lib/text/typeface.js +8 -0
  629. package/dist/_members/primitives/lib/text/typeface.js.map +1 -0
  630. package/dist/_members/primitives/lib/tokens.d.ts +109 -0
  631. package/dist/_members/primitives/lib/tokens.js +24 -0
  632. package/dist/_members/primitives/lib/tokens.js.map +1 -0
  633. package/dist/_members/primitives/lib/types.d.ts +200 -0
  634. package/dist/_members/primitives/lib/types.js +1 -0
  635. package/dist/_members/primitives/lib/types.js.map +1 -0
  636. package/dist/_members/primitives/params-required.json +153 -0
  637. package/dist/_members/primitives/scenes/changelog-bite/config.d.ts +36 -0
  638. package/dist/_members/primitives/scenes/changelog-bite/index.d.ts +28 -0
  639. package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +24 -0
  640. package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +16 -0
  641. package/dist/_members/primitives/scenes/index.d.ts +9 -0
  642. package/dist/_members/primitives/scenes/index.js +25 -0
  643. package/dist/_members/primitives/scenes/index.js.map +1 -0
  644. package/dist/_members/primitives/scenes/landing-code-showcase/config.d.ts +15 -0
  645. package/dist/_members/primitives/scenes/landing-code-showcase/index.d.ts +15 -0
  646. package/dist/_members/primitives/scenes/landing-code-showcase/timeline.d.ts +15 -0
  647. package/dist/_members/primitives/scenes/live-code-compilation/config.d.ts +15 -0
  648. package/dist/_members/primitives/scenes/live-code-compilation/index.d.ts +14 -0
  649. package/dist/_members/primitives/scenes/pricing-tier-focus/config.d.ts +21 -0
  650. package/dist/_members/primitives/scenes/pricing-tier-focus/index.d.ts +15 -0
  651. package/dist/_members/primitives/scenes/product-launch-trailer/config.d.ts +33 -0
  652. package/dist/_members/primitives/scenes/product-launch-trailer/index.d.ts +20 -0
  653. package/dist/_members/primitives/scenes/terminal-to-browser-deploy/config.d.ts +21 -0
  654. package/dist/_members/primitives/scenes/terminal-to-browser-deploy/index.d.ts +15 -0
  655. package/dist/_members/primitives/subject-foreground/SubjectForeground.d.ts +43 -0
  656. package/dist/_members/primitives/subject-foreground/index.d.ts +23 -0
  657. package/dist/_members/primitives/subject-foreground/index.js +30 -0
  658. package/dist/_members/primitives/subject-foreground/index.js.map +1 -0
  659. package/dist/_members/primitives/text/blur-reveal/config.d.ts +30 -0
  660. package/dist/_members/primitives/text/blur-reveal/index.d.ts +20 -0
  661. package/dist/_members/primitives/text/cinematic-title/config.d.ts +87 -0
  662. package/dist/_members/primitives/text/cinematic-title/index.d.ts +31 -0
  663. package/dist/_members/primitives/text/index.d.ts +23 -0
  664. package/dist/_members/primitives/text/index.js +57 -0
  665. package/dist/_members/primitives/text/index.js.map +1 -0
  666. package/dist/_members/primitives/text/inline-highlight/config.d.ts +36 -0
  667. package/dist/_members/primitives/text/inline-highlight/index.d.ts +24 -0
  668. package/dist/_members/primitives/text/karaoke/config.d.ts +108 -0
  669. package/dist/_members/primitives/text/karaoke/index.d.ts +32 -0
  670. package/dist/_members/primitives/text/kinetic-type/config.d.ts +60 -0
  671. package/dist/_members/primitives/text/kinetic-type/index.d.ts +29 -0
  672. package/dist/_members/primitives/text/lower-third/config.d.ts +84 -0
  673. package/dist/_members/primitives/text/lower-third/index.d.ts +30 -0
  674. package/dist/_members/primitives/text/marker-highlight/config.d.ts +39 -0
  675. package/dist/_members/primitives/text/marker-highlight/index.d.ts +24 -0
  676. package/dist/_members/primitives/text/masked-slide-reveal/config.d.ts +30 -0
  677. package/dist/_members/primitives/text/masked-slide-reveal/index.d.ts +19 -0
  678. package/dist/_members/primitives/text/matrix-decode/config.d.ts +33 -0
  679. package/dist/_members/primitives/text/matrix-decode/index.d.ts +21 -0
  680. package/dist/_members/primitives/text/quote-card/config.d.ts +21 -0
  681. package/dist/_members/primitives/text/quote-card/index.d.ts +23 -0
  682. package/dist/_members/primitives/text/rgb-glitch-text/config.d.ts +39 -0
  683. package/dist/_members/primitives/text/rgb-glitch-text/index.d.ts +27 -0
  684. package/dist/_members/primitives/text/shimmer-sweep/config.d.ts +30 -0
  685. package/dist/_members/primitives/text/shimmer-sweep/index.d.ts +21 -0
  686. package/dist/_members/primitives/text/slot-machine-roll/config.d.ts +30 -0
  687. package/dist/_members/primitives/text/slot-machine-roll/index.d.ts +19 -0
  688. package/dist/_members/primitives/text/staggered-fade-up/config.d.ts +39 -0
  689. package/dist/_members/primitives/text/staggered-fade-up/index.d.ts +26 -0
  690. package/dist/_members/primitives/text/stat-counter/config.d.ts +33 -0
  691. package/dist/_members/primitives/text/stat-counter/index.d.ts +31 -0
  692. package/dist/_members/primitives/text/strikethrough-replace/config.d.ts +33 -0
  693. package/dist/_members/primitives/text/strikethrough-replace/index.d.ts +21 -0
  694. package/dist/_members/primitives/text/text-effect/config.d.ts +24 -0
  695. package/dist/_members/primitives/text/text-effect/index.d.ts +29 -0
  696. package/dist/_members/primitives/text/text-fade-replace/config.d.ts +30 -0
  697. package/dist/_members/primitives/text/text-fade-replace/index.d.ts +19 -0
  698. package/dist/_members/primitives/text/token-stream/config.d.ts +21 -0
  699. package/dist/_members/primitives/text/token-stream/index.d.ts +25 -0
  700. package/dist/_members/primitives/text/tracking-in/config.d.ts +33 -0
  701. package/dist/_members/primitives/text/tracking-in/index.d.ts +21 -0
  702. package/dist/_members/primitives/text/typewriter/config.d.ts +36 -0
  703. package/dist/_members/primitives/text/typewriter/index.d.ts +26 -0
  704. package/dist/_members/primitives/transitions/chromatic-aberration-wipe/config.d.ts +15 -0
  705. package/dist/_members/primitives/transitions/chromatic-aberration-wipe/index.d.ts +19 -0
  706. package/dist/_members/primitives/transitions/code-diff-wipe/config.d.ts +36 -0
  707. package/dist/_members/primitives/transitions/code-diff-wipe/index.d.ts +21 -0
  708. package/dist/_members/primitives/transitions/directional-wipe/config.d.ts +12 -0
  709. package/dist/_members/primitives/transitions/directional-wipe/index.d.ts +17 -0
  710. package/dist/_members/primitives/transitions/frosted-glass-wipe/config.d.ts +12 -0
  711. package/dist/_members/primitives/transitions/frosted-glass-wipe/index.d.ts +17 -0
  712. package/dist/_members/primitives/transitions/glitch-cut/config.d.ts +15 -0
  713. package/dist/_members/primitives/transitions/glitch-cut/index.d.ts +11 -0
  714. package/dist/_members/primitives/transitions/grid-pixelate-wipe/config.d.ts +21 -0
  715. package/dist/_members/primitives/transitions/grid-pixelate-wipe/index.d.ts +24 -0
  716. package/dist/_members/primitives/transitions/index.d.ts +17 -0
  717. package/dist/_members/primitives/transitions/index.js +67 -0
  718. package/dist/_members/primitives/transitions/index.js.map +1 -0
  719. package/dist/_members/primitives/transitions/ink-wipe/config.d.ts +15 -0
  720. package/dist/_members/primitives/transitions/ink-wipe/index.d.ts +13 -0
  721. package/dist/_members/primitives/transitions/kinetic-type-mask/config.d.ts +15 -0
  722. package/dist/_members/primitives/transitions/kinetic-type-mask/index.d.ts +20 -0
  723. package/dist/_members/primitives/transitions/light-leak/config.d.ts +15 -0
  724. package/dist/_members/primitives/transitions/light-leak/index.d.ts +11 -0
  725. package/dist/_members/primitives/transitions/luma-matte/config.d.ts +12 -0
  726. package/dist/_members/primitives/transitions/luma-matte/index.d.ts +11 -0
  727. package/dist/_members/primitives/transitions/morph/config.d.ts +12 -0
  728. package/dist/_members/primitives/transitions/morph/index.d.ts +11 -0
  729. package/dist/_members/primitives/transitions/spatial-push/config.d.ts +12 -0
  730. package/dist/_members/primitives/transitions/spatial-push/index.d.ts +17 -0
  731. package/dist/_members/primitives/transitions/swipe-transition-wipe/config.d.ts +18 -0
  732. package/dist/_members/primitives/transitions/swipe-transition-wipe/index.d.ts +22 -0
  733. package/dist/_members/primitives/transitions/zoom-through/config.d.ts +39 -0
  734. package/dist/_members/primitives/transitions/zoom-through/index.d.ts +12 -0
  735. package/dist/_members/primitives/transitions/zoom-through-transition/config.d.ts +24 -0
  736. package/dist/_members/primitives/transitions/zoom-through-transition/index.d.ts +20 -0
  737. package/dist/_members/primitives/ui-blocks/ai-generate-overlay/config.d.ts +48 -0
  738. package/dist/_members/primitives/ui-blocks/ai-generate-overlay/index.d.ts +25 -0
  739. package/dist/_members/primitives/ui-blocks/ai-generation-canvas/config.d.ts +21 -0
  740. package/dist/_members/primitives/ui-blocks/ai-generation-canvas/index.d.ts +16 -0
  741. package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +27 -0
  742. package/dist/_members/primitives/ui-blocks/badge-pop/index.d.ts +21 -0
  743. package/dist/_members/primitives/ui-blocks/before-after-slider/config.d.ts +21 -0
  744. package/dist/_members/primitives/ui-blocks/before-after-slider/index.d.ts +20 -0
  745. package/dist/_members/primitives/ui-blocks/benchmark-bars/config.d.ts +86 -0
  746. package/dist/_members/primitives/ui-blocks/benchmark-bars/index.d.ts +25 -0
  747. package/dist/_members/primitives/ui-blocks/bounding-box-selector/config.d.ts +27 -0
  748. package/dist/_members/primitives/ui-blocks/bounding-box-selector/index.d.ts +20 -0
  749. package/dist/_members/primitives/ui-blocks/browser-flow/config.d.ts +15 -0
  750. package/dist/_members/primitives/ui-blocks/browser-flow/index.d.ts +15 -0
  751. package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/config.d.ts +36 -0
  752. package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/index.d.ts +32 -0
  753. package/dist/_members/primitives/ui-blocks/chat-exchange/config.d.ts +27 -0
  754. package/dist/_members/primitives/ui-blocks/chat-exchange/index.d.ts +20 -0
  755. package/dist/_members/primitives/ui-blocks/code-accordion/config.d.ts +42 -0
  756. package/dist/_members/primitives/ui-blocks/code-accordion/index.d.ts +23 -0
  757. package/dist/_members/primitives/ui-blocks/context-meter/config.d.ts +24 -0
  758. package/dist/_members/primitives/ui-blocks/context-meter/index.d.ts +20 -0
  759. package/dist/_members/primitives/ui-blocks/cursor-flow/config.d.ts +84 -0
  760. package/dist/_members/primitives/ui-blocks/cursor-flow/index.d.ts +29 -0
  761. package/dist/_members/primitives/ui-blocks/dashboard-populate/config.d.ts +18 -0
  762. package/dist/_members/primitives/ui-blocks/dashboard-populate/index.d.ts +15 -0
  763. package/dist/_members/primitives/ui-blocks/data-flow-pipes/config.d.ts +120 -0
  764. package/dist/_members/primitives/ui-blocks/data-flow-pipes/index.d.ts +34 -0
  765. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +24 -0
  766. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +19 -0
  767. package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/config.d.ts +24 -0
  768. package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/index.d.ts +17 -0
  769. package/dist/_members/primitives/ui-blocks/eval-scorecard/config.d.ts +48 -0
  770. package/dist/_members/primitives/ui-blocks/eval-scorecard/index.d.ts +23 -0
  771. package/dist/_members/primitives/ui-blocks/glass-code-block/config.d.ts +39 -0
  772. package/dist/_members/primitives/ui-blocks/glass-code-block/index.d.ts +22 -0
  773. package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/config.d.ts +141 -0
  774. package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/index.d.ts +32 -0
  775. package/dist/_members/primitives/ui-blocks/index.d.ts +33 -0
  776. package/dist/_members/primitives/ui-blocks/index.js +76 -0
  777. package/dist/_members/primitives/ui-blocks/index.js.map +1 -0
  778. package/dist/_members/primitives/ui-blocks/metric-gauge/config.d.ts +46 -0
  779. package/dist/_members/primitives/ui-blocks/metric-gauge/index.d.ts +23 -0
  780. package/dist/_members/primitives/ui-blocks/morphing-modal/config.d.ts +141 -0
  781. package/dist/_members/primitives/ui-blocks/morphing-modal/index.d.ts +35 -0
  782. package/dist/_members/primitives/ui-blocks/pipeline-journey/config.d.ts +18 -0
  783. package/dist/_members/primitives/ui-blocks/pipeline-journey/index.d.ts +15 -0
  784. package/dist/_members/primitives/ui-blocks/progress-steps/config.d.ts +51 -0
  785. package/dist/_members/primitives/ui-blocks/progress-steps/index.d.ts +22 -0
  786. package/dist/_members/primitives/ui-blocks/reasoning-trace/config.d.ts +21 -0
  787. package/dist/_members/primitives/ui-blocks/reasoning-trace/index.d.ts +18 -0
  788. package/dist/_members/primitives/ui-blocks/simulated-cursor/config.d.ts +69 -0
  789. package/dist/_members/primitives/ui-blocks/simulated-cursor/index.d.ts +23 -0
  790. package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +63 -0
  791. package/dist/_members/primitives/ui-blocks/terminal-simulator/index.d.ts +39 -0
  792. package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +33 -0
  793. package/dist/_members/primitives/ui-blocks/toast-notification/index.d.ts +21 -0
  794. package/dist/_members/primitives/ui-blocks/tool-call-stack/config.d.ts +54 -0
  795. package/dist/_members/primitives/ui-blocks/tool-call-stack/index.d.ts +20 -0
  796. package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/config.d.ts +33 -0
  797. package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/index.d.ts +20 -0
  798. package/dist/_members/primitives/ui-blocks/visual-docs-snippet/config.d.ts +90 -0
  799. package/dist/_members/primitives/ui-blocks/visual-docs-snippet/index.d.ts +27 -0
  800. package/dist/_members/primitives/ui-blocks/voice-waveform/config.d.ts +24 -0
  801. package/dist/_members/primitives/ui-blocks/voice-waveform/index.d.ts +20 -0
  802. package/dist/_members/primitives/version-map.json +105 -0
  803. package/dist/_members/primitives/workspace.d.ts +51 -0
  804. package/dist/_members/primitives/workspace.js +60 -0
  805. package/dist/_members/primitives/workspace.js.map +1 -0
  806. package/dist/_members/render-harness/cardRender.d.ts +64 -0
  807. package/dist/_members/render-harness/cardRender.d.ts.map +1 -0
  808. package/dist/_members/render-harness/contractRender.d.ts +43 -0
  809. package/dist/_members/render-harness/contractRender.d.ts.map +1 -0
  810. package/dist/_members/render-harness/extractSegments.d.ts +53 -0
  811. package/dist/_members/render-harness/extractSegments.d.ts.map +1 -0
  812. package/dist/_members/render-harness/index.d.ts +30 -0
  813. package/dist/_members/render-harness/index.d.ts.map +1 -0
  814. package/dist/_members/render-harness/localRender.d.ts +167 -0
  815. package/dist/_members/render-harness/localRender.d.ts.map +1 -0
  816. package/dist/_members/render-harness/materializeSources.d.ts +29 -0
  817. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -0
  818. package/dist/_members/render-harness/mediaServer.d.ts +22 -0
  819. package/dist/_members/render-harness/mediaServer.d.ts.map +1 -0
  820. package/dist/_members/render-harness/renderInputAssets.d.ts +63 -0
  821. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -0
  822. package/dist/_members/render-harness/resolveAssets.d.ts +33 -0
  823. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -0
  824. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +23 -0
  825. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +1 -0
  826. package/dist/account-model/testing.d.ts +1 -0
  827. package/dist/account-model/testing.js +145 -0
  828. package/dist/account-model/types.d.ts +1 -0
  829. package/dist/account-model/types.js +0 -0
  830. package/dist/account-model/validators.d.ts +1 -0
  831. package/dist/account-model/validators.js +26 -0
  832. package/dist/account-model.d.ts +1 -0
  833. package/dist/account-model.js +26 -0
  834. package/dist/animate.d.ts +1 -0
  835. package/dist/animate.js +79412 -0
  836. package/dist/authoring/build-tools.d.ts +1 -0
  837. package/dist/authoring/build-tools.js +29 -0
  838. package/dist/authoring/capabilities.d.ts +1 -0
  839. package/dist/authoring/capabilities.js +11 -0
  840. package/dist/authoring/composer.d.ts +1 -0
  841. package/dist/authoring/composer.js +53 -0
  842. package/dist/authoring/context.d.ts +1 -0
  843. package/dist/authoring/context.js +14 -0
  844. package/dist/authoring/models.d.ts +1 -0
  845. package/dist/authoring/models.js +14 -0
  846. package/dist/authoring/pipelineTrace.d.ts +1 -0
  847. package/dist/authoring/pipelineTrace.js +7 -0
  848. package/dist/authoring/prompts.d.ts +1 -0
  849. package/dist/authoring/prompts.js +29 -0
  850. package/dist/authoring/providers.d.ts +1 -0
  851. package/dist/authoring/providers.js +99 -0
  852. package/dist/authoring/resource-routing.d.ts +1 -0
  853. package/dist/authoring/resource-routing.js +206 -0
  854. package/dist/authoring/resources.d.ts +1 -0
  855. package/dist/authoring/resources.js +35 -0
  856. package/dist/authoring/tools.d.ts +1 -0
  857. package/dist/authoring/tools.js +29 -0
  858. package/dist/authoring/transpileComponent.d.ts +1 -0
  859. package/dist/authoring/transpileComponent.js +2248 -0
  860. package/dist/authoring/transpileHelper.d.ts +1 -0
  861. package/dist/authoring/transpileHelper.js +9 -0
  862. package/dist/authoring/types.d.ts +1 -0
  863. package/dist/authoring/types.js +0 -0
  864. package/dist/authoring.d.ts +1 -0
  865. package/dist/authoring.js +1295 -0
  866. package/dist/brand-derivation/constants.d.ts +1 -0
  867. package/dist/brand-derivation/constants.js +11 -0
  868. package/dist/brand-derivation.d.ts +1 -0
  869. package/dist/brand-derivation.js +23 -0
  870. package/dist/chunk-2ESYSVXG.js +48 -0
  871. package/dist/chunk-37NJ27UU.js +501 -0
  872. package/dist/chunk-52AHXNKM.js +435 -0
  873. package/dist/chunk-5I7VDCAC.js +15647 -0
  874. package/dist/chunk-6CMVBTTP.js +1933 -0
  875. package/dist/chunk-6EQXLEP6.js +194 -0
  876. package/dist/chunk-6QJ3V3VS.js +1444 -0
  877. package/dist/chunk-7DHP4ESU.js +138 -0
  878. package/dist/chunk-7GISRVON.js +14176 -0
  879. package/dist/chunk-7PA7FGLD.js +609 -0
  880. package/dist/chunk-ATAF24QG.js +735 -0
  881. package/dist/chunk-AWT3P5ZN.js +1609 -0
  882. package/dist/chunk-B4VMU2IJ.js +211 -0
  883. package/dist/chunk-BDMTUEEZ.js +19 -0
  884. package/dist/chunk-BRKJKB33.js +683 -0
  885. package/dist/chunk-CX2IIQ4R.js +111 -0
  886. package/dist/chunk-D2EG7J7X.js +31 -0
  887. package/dist/chunk-DENF4TPI.js +249 -0
  888. package/dist/chunk-DIBOJJMU.js +16838 -0
  889. package/dist/chunk-DLF4WVSE.js +9 -0
  890. package/dist/chunk-DSNG6WLU.js +82 -0
  891. package/dist/chunk-EA6MYCYW.js +135 -0
  892. package/dist/chunk-EAUSEGB7.js +420 -0
  893. package/dist/chunk-ELLSET2N.js +195 -0
  894. package/dist/chunk-EMGFZ3PR.js +14 -0
  895. package/dist/chunk-FUWJOVVK.js +3633 -0
  896. package/dist/chunk-G3PBH53P.js +85 -0
  897. package/dist/chunk-G75E7YA4.js +11883 -0
  898. package/dist/chunk-GBRNYH7W.js +72 -0
  899. package/dist/chunk-GH27OS5S.js +104 -0
  900. package/dist/chunk-GULDS3VE.js +41 -0
  901. package/dist/chunk-H5LMJKZU.js +0 -0
  902. package/dist/chunk-HI4UTTPS.js +954 -0
  903. package/dist/chunk-JCZQT7K3.js +3266 -0
  904. package/dist/chunk-JD77Y2WM.js +3423 -0
  905. package/dist/chunk-JF4JJAFP.js +10 -0
  906. package/dist/chunk-JMURQODM.js +438 -0
  907. package/dist/chunk-JOURGVOR.js +27 -0
  908. package/dist/chunk-JRQVPFLF.js +459 -0
  909. package/dist/chunk-KF5ETMKB.js +544 -0
  910. package/dist/chunk-KYRDKK2D.js +47 -0
  911. package/dist/chunk-LD5ZOUFT.js +55 -0
  912. package/dist/chunk-M3I5LMAB.js +426 -0
  913. package/dist/chunk-MC5DLSEV.js +202 -0
  914. package/dist/chunk-MCBUX5XV.js +70 -0
  915. package/dist/chunk-MFHXCHRI.js +33 -0
  916. package/dist/chunk-MMEJ3Y7E.js +327 -0
  917. package/dist/chunk-MVEE6HEC.js +8512 -0
  918. package/dist/chunk-N67PDTKQ.js +1419 -0
  919. package/dist/chunk-NDKERSXY.js +1296 -0
  920. package/dist/chunk-NV4I6GJV.js +1091 -0
  921. package/dist/chunk-OIRUO5P7.js +397 -0
  922. package/dist/chunk-P43IE4WB.js +181 -0
  923. package/dist/chunk-QGAWDLYX.js +92 -0
  924. package/dist/chunk-QH3YI3ND.js +100 -0
  925. package/dist/chunk-QLAQHR3L.js +254 -0
  926. package/dist/chunk-RHVLQNYF.js +20 -0
  927. package/dist/chunk-S3P5BFFL.js +2265 -0
  928. package/dist/chunk-SIGGQRY2.js +8483 -0
  929. package/dist/chunk-TULRCY6U.js +729 -0
  930. package/dist/chunk-TWQOKKAF.js +859 -0
  931. package/dist/chunk-U3JPILZS.js +15 -0
  932. package/dist/chunk-U4V4FZGE.js +20 -0
  933. package/dist/chunk-UEI3NLNK.js +127 -0
  934. package/dist/chunk-V43Y7IE4.js +3621 -0
  935. package/dist/chunk-VIVQHIGZ.js +4319 -0
  936. package/dist/chunk-W35ZMOXB.js +23 -0
  937. package/dist/chunk-WB2VFDQZ.js +58 -0
  938. package/dist/chunk-WREYUH2E.js +104 -0
  939. package/dist/chunk-WZTTZHNR.js +3339 -0
  940. package/dist/chunk-XELS2BGA.js +13 -0
  941. package/dist/chunk-XLIPPLG3.js +18 -0
  942. package/dist/chunk-YA3OR2KK.js +249 -0
  943. package/dist/chunk-ZE76SSRT.js +358 -0
  944. package/dist/chunk-ZFEXATWN.js +46 -0
  945. package/dist/chunk-ZSZABOE5.js +425 -0
  946. package/dist/compose/renderer.d.ts +1 -0
  947. package/dist/compose/renderer.js +173 -0
  948. package/dist/compose.d.ts +1 -0
  949. package/dist/compose.js +76 -0
  950. package/dist/composition/audio.d.ts +1 -0
  951. package/dist/composition/audio.js +63 -0
  952. package/dist/composition/autozoom.d.ts +1 -0
  953. package/dist/composition/autozoom.js +76 -0
  954. package/dist/composition/brand-kit.d.ts +1 -0
  955. package/dist/composition/brand-kit.js +34 -0
  956. package/dist/composition/brief.d.ts +1 -0
  957. package/dist/composition/brief.js +112 -0
  958. package/dist/composition/depth.d.ts +1 -0
  959. package/dist/composition/depth.js +12 -0
  960. package/dist/composition/fixtures.d.ts +1 -0
  961. package/dist/composition/fixtures.js +154 -0
  962. package/dist/composition/fonts.d.ts +1 -0
  963. package/dist/composition/fonts.js +74 -0
  964. package/dist/composition/graphics-plan.d.ts +1 -0
  965. package/dist/composition/graphics-plan.js +400 -0
  966. package/dist/composition/invariants.d.ts +1 -0
  967. package/dist/composition/invariants.js +49 -0
  968. package/dist/composition/ops.d.ts +1 -0
  969. package/dist/composition/ops.js +53 -0
  970. package/dist/composition/primitive-catalog.d.ts +1 -0
  971. package/dist/composition/primitive-catalog.js +60 -0
  972. package/dist/composition/projection.d.ts +1 -0
  973. package/dist/composition/projection.js +119 -0
  974. package/dist/composition/reframe/coverage.d.ts +1 -0
  975. package/dist/composition/reframe/coverage.js +20 -0
  976. package/dist/composition/reframe/kenBurns.d.ts +1 -0
  977. package/dist/composition/reframe/kenBurns.js +53 -0
  978. package/dist/composition/reframe/shotScale.d.ts +1 -0
  979. package/dist/composition/reframe/shotScale.js +25 -0
  980. package/dist/composition/reframe/trajectory.d.ts +1 -0
  981. package/dist/composition/reframe/trajectory.js +17 -0
  982. package/dist/composition/reframe.d.ts +1 -0
  983. package/dist/composition/reframe.js +39 -0
  984. package/dist/composition/timeline.d.ts +1 -0
  985. package/dist/composition/timeline.js +70 -0
  986. package/dist/composition/types.d.ts +1 -0
  987. package/dist/composition/types.js +0 -0
  988. package/dist/composition/validators/graphic-kinds.d.ts +1 -0
  989. package/dist/composition/validators/graphic-kinds.js +9 -0
  990. package/dist/composition/validators.d.ts +1 -0
  991. package/dist/composition/validators.js +180 -0
  992. package/dist/composition-ops.d.ts +1 -0
  993. package/dist/composition-ops.js +882 -0
  994. package/dist/composition.d.ts +1 -0
  995. package/dist/composition.js +433 -0
  996. package/dist/context-CEAKQ5T7.js +14 -0
  997. package/dist/core/render.d.ts +1 -0
  998. package/dist/core/render.js +105 -0
  999. package/dist/core/select.d.ts +1 -0
  1000. package/dist/core/select.js +42 -0
  1001. package/dist/core/types.d.ts +1 -0
  1002. package/dist/core/types.js +0 -0
  1003. package/dist/core.d.ts +1 -0
  1004. package/dist/core.js +38 -0
  1005. package/dist/dist-LAJ2363K.js +545 -0
  1006. package/dist/errors.d.ts +1 -0
  1007. package/dist/errors.js +17 -0
  1008. package/dist/foundation/codes.d.ts +1 -0
  1009. package/dist/foundation/codes.js +7 -0
  1010. package/dist/foundation/primitives.d.ts +1 -0
  1011. package/dist/foundation/primitives.js +13 -0
  1012. package/dist/foundation.d.ts +1 -0
  1013. package/dist/foundation.js +17 -0
  1014. package/dist/hls-HD4C5G6W.js +33000 -0
  1015. package/dist/magic-string.es-SDTMJBWP.js +1308 -0
  1016. package/dist/mcp/adapter.d.ts +1 -0
  1017. package/dist/mcp/adapter.js +670 -0
  1018. package/dist/mcp/core.d.ts +1 -0
  1019. package/dist/mcp/core.js +41 -0
  1020. package/dist/mcp/curation.d.ts +1 -0
  1021. package/dist/mcp/curation.js +23 -0
  1022. package/dist/mcp/executor.d.ts +1 -0
  1023. package/dist/mcp/executor.js +13 -0
  1024. package/dist/mcp/server.d.ts +1 -0
  1025. package/dist/mcp/server.js +27 -0
  1026. package/dist/mcp.d.ts +1 -0
  1027. package/dist/mcp.js +138 -0
  1028. package/dist/media-model/media-kind.d.ts +1 -0
  1029. package/dist/media-model/media-kind.js +108 -0
  1030. package/dist/media-model/testing.d.ts +1 -0
  1031. package/dist/media-model/testing.js +16029 -0
  1032. package/dist/media-model/transcriptSearch.d.ts +1 -0
  1033. package/dist/media-model/transcriptSearch.js +32 -0
  1034. package/dist/media-model.d.ts +1 -0
  1035. package/dist/media-model.js +154 -0
  1036. package/dist/nle-export/server.d.ts +1 -0
  1037. package/dist/nle-export/server.js +25658 -0
  1038. package/dist/nle-export/xml.d.ts +1 -0
  1039. package/dist/nle-export/xml.js +23102 -0
  1040. package/dist/nle-export.d.ts +1 -0
  1041. package/dist/nle-export.js +313 -0
  1042. package/dist/perception.d.ts +1 -0
  1043. package/dist/perception.js +145 -0
  1044. package/dist/plane/conformance.d.ts +1 -0
  1045. package/dist/plane/conformance.js +13 -0
  1046. package/dist/plane/contract.d.ts +1 -0
  1047. package/dist/plane/contract.js +31 -0
  1048. package/dist/plane.d.ts +1 -0
  1049. package/dist/plane.js +13 -0
  1050. package/dist/primitives/backgrounds.d.ts +1 -0
  1051. package/dist/primitives/backgrounds.js +32 -0
  1052. package/dist/primitives/captions.d.ts +1 -0
  1053. package/dist/primitives/captions.js +629 -0
  1054. package/dist/primitives/effects.d.ts +1 -0
  1055. package/dist/primitives/effects.js +30 -0
  1056. package/dist/primitives/hero-text.d.ts +1 -0
  1057. package/dist/primitives/hero-text.js +14 -0
  1058. package/dist/primitives/layouts.d.ts +1 -0
  1059. package/dist/primitives/layouts.js +24 -0
  1060. package/dist/primitives/lib/easings.d.ts +1 -0
  1061. package/dist/primitives/lib/easings.js +25 -0
  1062. package/dist/primitives/lib/index.d.ts +1 -0
  1063. package/dist/primitives/lib/index.js +78 -0
  1064. package/dist/primitives/lib/palette.d.ts +1 -0
  1065. package/dist/primitives/lib/palette.js +71 -0
  1066. package/dist/primitives/lib/preview.d.ts +1 -0
  1067. package/dist/primitives/lib/preview.js +8 -0
  1068. package/dist/primitives/lib/schema.d.ts +1 -0
  1069. package/dist/primitives/lib/schema.js +12 -0
  1070. package/dist/primitives/lib/seeded-random.d.ts +1 -0
  1071. package/dist/primitives/lib/seeded-random.js +13 -0
  1072. package/dist/primitives/lib/text/contrast.d.ts +1 -0
  1073. package/dist/primitives/lib/text/contrast.js +11 -0
  1074. package/dist/primitives/lib/text/fill.d.ts +1 -0
  1075. package/dist/primitives/lib/text/fill.js +7 -0
  1076. package/dist/primitives/lib/text/fitText.d.ts +1 -0
  1077. package/dist/primitives/lib/text/fitText.js +10 -0
  1078. package/dist/primitives/lib/text/marker.d.ts +1 -0
  1079. package/dist/primitives/lib/text/marker.js +7 -0
  1080. package/dist/primitives/lib/text/motion.d.ts +1 -0
  1081. package/dist/primitives/lib/text/motion.js +15 -0
  1082. package/dist/primitives/lib/text/recolor.d.ts +1 -0
  1083. package/dist/primitives/lib/text/recolor.js +7 -0
  1084. package/dist/primitives/lib/text/spec.d.ts +1 -0
  1085. package/dist/primitives/lib/text/spec.js +0 -0
  1086. package/dist/primitives/lib/text/stage.d.ts +1 -0
  1087. package/dist/primitives/lib/text/stage.js +7 -0
  1088. package/dist/primitives/lib/text/typeface.d.ts +1 -0
  1089. package/dist/primitives/lib/text/typeface.js +7 -0
  1090. package/dist/primitives/lib/tokens.d.ts +1 -0
  1091. package/dist/primitives/lib/tokens.js +24 -0
  1092. package/dist/primitives/lib/types.d.ts +1 -0
  1093. package/dist/primitives/lib/types.js +0 -0
  1094. package/dist/primitives/lib.d.ts +1 -0
  1095. package/dist/primitives/lib.js +78 -0
  1096. package/dist/primitives/params-required.json +153 -0
  1097. package/dist/primitives/scenes.d.ts +1 -0
  1098. package/dist/primitives/scenes.js +25 -0
  1099. package/dist/primitives/subject-foreground.d.ts +1 -0
  1100. package/dist/primitives/subject-foreground.js +28 -0
  1101. package/dist/primitives/text.d.ts +1 -0
  1102. package/dist/primitives/text.js +57 -0
  1103. package/dist/primitives/transitions.d.ts +1 -0
  1104. package/dist/primitives/transitions.js +66 -0
  1105. package/dist/primitives/ui-blocks.d.ts +1 -0
  1106. package/dist/primitives/ui-blocks.js +76 -0
  1107. package/dist/primitives/version-map.json +105 -0
  1108. package/dist/primitives/workspace.d.ts +1 -0
  1109. package/dist/primitives/workspace.js +25 -0
  1110. package/dist/primitives.d.ts +1 -0
  1111. package/dist/primitives.js +65 -0
  1112. package/dist/render-harness/sandboxGlobalSpecs.d.ts +1 -0
  1113. package/dist/render-harness/sandboxGlobalSpecs.js +13 -0
  1114. package/dist/render-harness.d.ts +1 -0
  1115. package/dist/render-harness.js +1019 -0
  1116. package/dist/token-RGFIT24D.js +69 -0
  1117. package/dist/token-util-GPLSGYVO.js +5 -0
  1118. package/dist/vision_bundle-5Y376MAR.js +4084 -0
  1119. package/package.json +493 -0
@@ -0,0 +1,1056 @@
1
+ /**
2
+ * compositionOps — pure shared core for v2 wire-shape composition mutations.
3
+ *
4
+ * All operations are side-effect-free: no persistence, no logging. Only
5
+ * state mutations via set/get on the wire-shape Composition.
6
+ *
7
+ * Mirrors the desktop store's v2 ops (cueframe/src/store/compositionStore/
8
+ * compositionOps.ts). The OSS module drops desktop-only concerns
9
+ * (corrections, transcriptDoc) — those live on the desktop envelope.
10
+ */
11
+ import { expandToLinkGroup } from '../timeline/link';
12
+ // ── Track-walking helpers ──
13
+ /** Find the first track of `kind`, creating one if absent. Mutates `composition`. */
14
+ export function findOrCreateTrackByKind(composition, kind) {
15
+ const existing = composition.tracks.find((t) => t.kind === kind);
16
+ if (existing)
17
+ return existing;
18
+ const track = {
19
+ // UUID suffix avoids id collisions when a track of `kind` is created,
20
+ // deleted, then re-created at the same `tracks.length` index.
21
+ id: `track-${kind}-${crypto.randomUUID().slice(0, 8)}`,
22
+ kind,
23
+ contents: [],
24
+ };
25
+ composition.tracks.push(track);
26
+ return track;
27
+ }
28
+ /** Find a clip by id across every track. Returns undefined if not found. */
29
+ export function findClipById(composition, id) {
30
+ for (let ti = 0; ti < composition.tracks.length; ti++) {
31
+ const track = composition.tracks[ti];
32
+ for (let ci = 0; ci < track.contents.length; ci++) {
33
+ const item = track.contents[ci];
34
+ if ('source' in item && item.id === id) {
35
+ return { clip: item, trackIndex: ti, clipIndex: ci };
36
+ }
37
+ }
38
+ }
39
+ return undefined;
40
+ }
41
+ /** Find the track containing the clip with given id. */
42
+ export function findTrackContainingClipId(composition, id) {
43
+ for (let ti = 0; ti < composition.tracks.length; ti++) {
44
+ const track = composition.tracks[ti];
45
+ for (let ci = 0; ci < track.contents.length; ci++) {
46
+ const item = track.contents[ci];
47
+ if ('source' in item && item.id === id) {
48
+ return { track, trackIndex: ti, clipIndex: ci };
49
+ }
50
+ }
51
+ }
52
+ return undefined;
53
+ }
54
+ /** Find a marker by id. */
55
+ export function findMarkerById(composition, id) {
56
+ const markers = composition.markers ?? [];
57
+ for (let i = 0; i < markers.length; i++) {
58
+ if (markers[i].id === id)
59
+ return { marker: markers[i], index: i };
60
+ }
61
+ return undefined;
62
+ }
63
+ /**
64
+ * For a media-source clip, narrow the source's `trim` window to
65
+ * `[clipRelStart, clipRelEnd]` (seconds within the clip's existing
66
+ * timeline duration). For non-media sources, return the source
67
+ * unchanged — overlay/effect/component sources don't trim.
68
+ */
69
+ function trimSourceFor(source, clipRelStart, clipRelEnd) {
70
+ if (source.kind !== 'media')
71
+ return source;
72
+ const baseStart = source.trim?.start ?? 0;
73
+ return {
74
+ ...source,
75
+ trim: { start: baseStart + clipRelStart, end: baseStart + clipRelEnd },
76
+ };
77
+ }
78
+ /**
79
+ * Ripple one timed range through a deleted window `[cutStart, cutEnd)`: a range
80
+ * starting at/after the window shifts left by the span; a range starting before
81
+ * it is kept (its end clamped if it straddles the cut start); a range fully
82
+ * inside is dropped (`null`). `end` may be undefined (a point). Unit-agnostic —
83
+ * the caller passes the window in the item's own unit. Shared by `cutAndRipple`
84
+ * for markers (seconds) and caption words (ms) so the algorithm lives once.
85
+ */
86
+ function cutTimedRange(start, end, cutStart, cutEnd) {
87
+ const span = cutEnd - cutStart;
88
+ if (start >= cutEnd) {
89
+ return { start: start - span, end: end !== undefined ? end - span : undefined };
90
+ }
91
+ if (start < cutStart) {
92
+ if (end === undefined || end <= cutStart)
93
+ return { start, end };
94
+ return { start, end: Math.max(start, end - span) };
95
+ }
96
+ return null; // fully inside the cut → dropped
97
+ }
98
+ /**
99
+ * Shift one timed range that starts at/after `from` by `amount` (start clamped
100
+ * ≥0; end never precedes start). `null` when unchanged (starts before `from`).
101
+ * Unit-agnostic. Shared by `ripple` for markers and caption words.
102
+ */
103
+ function shiftTimedRange(start, end, from, amount) {
104
+ if (start < from)
105
+ return null;
106
+ const s = Math.max(0, start + amount);
107
+ return { start: s, end: end !== undefined ? Math.max(s, end + amount) : undefined };
108
+ }
109
+ // ── Ops factory ──
110
+ /**
111
+ * THE ONLY WRITER of selection state.
112
+ *
113
+ * `selection` is the truth; `selectedClipId` / `selectedOverlayId` are mirrors
114
+ * derived from it here and nowhere else. Two independently-written
115
+ * representations of the same fact is how they end up disagreeing, so there is
116
+ * exactly one function that can set any of the three.
117
+ */
118
+ function selectionPatch(composition, entities) {
119
+ const clipIds = entities.filter((e) => e.kind === 'clip').map((e) => e.clipId);
120
+ const overlayIds = new Set();
121
+ for (const track of composition.tracks) {
122
+ if (track.kind !== 'overlay')
123
+ continue;
124
+ for (const item of track.contents) {
125
+ if ('source' in item)
126
+ overlayIds.add(item.id);
127
+ }
128
+ }
129
+ return {
130
+ selection: [...entities],
131
+ selectedClipId: clipIds.find((id) => !overlayIds.has(id)) ?? null,
132
+ selectedOverlayId: clipIds.find((id) => overlayIds.has(id)) ?? null,
133
+ };
134
+ }
135
+ /**
136
+ * Drop every selection entity naming a now-gone clip, AND recompute the derived
137
+ * mirrors from what survives.
138
+ *
139
+ * Recomputing is the whole point. The first cut of this pruned `selection` and
140
+ * left the mirrors to their old "null it if it was the removed id" logic, so
141
+ * deleting clip A out of a selection of {A, B} left `selection: [B]` beside
142
+ * `selectedClipId: null` — the two representations disagreeing within one op,
143
+ * which is the exact failure the single-writer rule exists to stop. Caught by
144
+ * `selection.test.ts`.
145
+ */
146
+ function pruneSelectionInDraft(draft, removedClipIds) {
147
+ const kept = draft.selection.filter((e) => !('clipId' in e) || !removedClipIds.has(e.clipId));
148
+ const patch = selectionPatch(draft.composition, kept);
149
+ draft.selection = patch.selection;
150
+ draft.selectedClipId = patch.selectedClipId;
151
+ draft.selectedOverlayId = patch.selectedOverlayId;
152
+ }
153
+ export function createCompositionOps(get, set) {
154
+ return {
155
+ // ── Clip operations ──
156
+ addClip: (clip, options) => {
157
+ set((draft) => {
158
+ if (options?.newTrack) {
159
+ // Layered placement (b-roll over A-roll, picture-in-picture, etc.)
160
+ // — create a fresh `video` track so z-order separates the new clip
161
+ // from the existing source video. `newTrackId` lets a caller PIN the
162
+ // generated id (the op-recording seam passes it so a recorded op
163
+ // replays to the identical track); otherwise a uuid suffix is minted
164
+ // (matches the `findOrCreateTrackByKind` convention).
165
+ const track = {
166
+ id: options.newTrackId ?? `track-video-${crypto.randomUUID().slice(0, 8)}`,
167
+ kind: 'video',
168
+ contents: [clip],
169
+ };
170
+ draft.composition.tracks.push(track);
171
+ }
172
+ else {
173
+ const track = findOrCreateTrackByKind(draft.composition, 'video');
174
+ track.contents.push(clip);
175
+ }
176
+ });
177
+ },
178
+ /**
179
+ * Family-routed clip add — the single primitive behind the consolidated
180
+ * `clip.add` op (@cueframe/composition-ops). Routes a clip onto a track of
181
+ * the resolved FAMILY: either an existing track pinned by `trackId`, or a
182
+ * track of `kind` (created if absent, optionally with a pinned `newTrackId`
183
+ * for byte-faithful op-replay). Replaces the three family-specific adders
184
+ * (addClip/addOverlay/addAudioClip) at the OP layer — those stay for the
185
+ * editor's direct calls.
186
+ *
187
+ * Fails LOUD if `trackId` names a missing track, or a track of a DIFFERENT
188
+ * family (a clip must land on its own family — never silently mis-route).
189
+ */
190
+ addClipToTrack: (clip, target) => {
191
+ set((draft) => {
192
+ if ('trackId' in target) {
193
+ const track = draft.composition.tracks.find((t) => t.id === target.trackId);
194
+ if (!track) {
195
+ throw new Error(`addClipToTrack: track '${target.trackId}' not found`);
196
+ }
197
+ track.contents.push(clip);
198
+ return;
199
+ }
200
+ if (target.newTrack) {
201
+ draft.composition.tracks.push({
202
+ id: target.newTrackId ?? `track-${target.kind}-${crypto.randomUUID().slice(0, 8)}`,
203
+ kind: target.kind,
204
+ contents: [clip],
205
+ });
206
+ return;
207
+ }
208
+ const track = findOrCreateTrackByKind(draft.composition, target.kind);
209
+ track.contents.push(clip);
210
+ });
211
+ },
212
+ removeClip: (id) => {
213
+ set((draft) => {
214
+ for (const track of draft.composition.tracks) {
215
+ const idx = track.contents.findIndex((c) => 'source' in c && c.id === id);
216
+ if (idx >= 0) {
217
+ track.contents.splice(idx, 1);
218
+ break;
219
+ }
220
+ }
221
+ pruneSelectionInDraft(draft, new Set([id]));
222
+ if (draft.selectedOverlayId === id)
223
+ draft.selectedOverlayId = null;
224
+ if (draft.composition.markers) {
225
+ draft.composition.markers = draft.composition.markers.filter((m) => m.kind !== 'scene' ||
226
+ m.metadata?.clipId !== id);
227
+ }
228
+ });
229
+ },
230
+ updateClip: (id, updates) => {
231
+ set((draft) => {
232
+ for (const track of draft.composition.tracks) {
233
+ for (let i = 0; i < track.contents.length; i++) {
234
+ const item = track.contents[i];
235
+ if ('source' in item && item.id === id) {
236
+ track.contents[i] = { ...item, ...updates };
237
+ return;
238
+ }
239
+ }
240
+ }
241
+ });
242
+ },
243
+ /** Remove every clip whose `source.mediaId === mediaId`. */
244
+ removeClipsByMediaId: (mediaId) => {
245
+ set((draft) => {
246
+ const removed = new Set();
247
+ for (const track of draft.composition.tracks) {
248
+ track.contents = track.contents.filter((c) => {
249
+ if ('source' in c && c.source.kind === 'media' && c.source.mediaId === mediaId) {
250
+ removed.add(c.id);
251
+ return false;
252
+ }
253
+ return true;
254
+ });
255
+ }
256
+ if (draft.composition.markers) {
257
+ draft.composition.markers = draft.composition.markers.filter((m) => m.kind !== 'scene' ||
258
+ !removed.has(m.metadata?.clipId ?? ''));
259
+ }
260
+ pruneSelectionInDraft(draft, removed);
261
+ });
262
+ },
263
+ selectClip: (id) => {
264
+ const composition = get().composition;
265
+ if (id === null) {
266
+ set(selectionPatch(composition, []));
267
+ return;
268
+ }
269
+ if (findClipById(composition, id)) {
270
+ set(selectionPatch(composition, expandToLinkGroup(composition, [{ kind: 'clip', clipId: id }])));
271
+ }
272
+ },
273
+ /** Replace the whole selection. The multi-select entry point. */
274
+ setSelection: (entities) => {
275
+ const composition = get().composition;
276
+ // Entities naming a clip that is not on the timeline are dropped rather
277
+ // than stored — a selection that points at nothing is how a verb ends up
278
+ // acting on a ghost.
279
+ const live = entities.filter((e) => !('clipId' in e) || !!findClipById(composition, e.clipId));
280
+ // LINK EXPANSION HAPPENS HERE, once, between selection and every verb.
281
+ // Putting it inside each verb would work until someone adds a verb and
282
+ // forgets — and that failure is silent: picture moves, sound does not.
283
+ set(selectionPatch(composition, expandToLinkGroup(composition, live)));
284
+ },
285
+ /** Every clip on the timeline, in track then start order. */
286
+ selectAllClips: () => {
287
+ const composition = get().composition;
288
+ const entities = [];
289
+ for (const track of composition.tracks) {
290
+ for (const item of track.contents) {
291
+ if ('source' in item) {
292
+ entities.push({ kind: 'clip', clipId: item.id });
293
+ }
294
+ }
295
+ }
296
+ set(selectionPatch(composition, entities));
297
+ },
298
+ setClipProperties: (id, props) => {
299
+ const found = findClipById(get().composition, id);
300
+ if (!found)
301
+ return { rippled: false };
302
+ const clip = found.clip;
303
+ // Pre-compute whether a rate change applies. Rate-handling and
304
+ // transform-handling are independent paths so opacity/scale/rotation are
305
+ // never silently dropped, regardless of source kind or whether the new
306
+ // rate equals the old (M4, M5).
307
+ let rateChange = null;
308
+ if (props.playbackRate != null && clip.source.kind === 'media') {
309
+ const oldRate = clip.source.playbackRate ?? 1;
310
+ if (props.playbackRate !== oldRate) {
311
+ const trim = clip.source.trim;
312
+ const sourceDuration = trim ? trim.end - trim.start : clip.duration * oldRate;
313
+ const newDuration = sourceDuration / props.playbackRate;
314
+ const oldEnd = clip.startTime + clip.duration;
315
+ const delta = newDuration - clip.duration;
316
+ rateChange = { newRate: props.playbackRate, newDuration, oldEnd, delta };
317
+ }
318
+ }
319
+ set((draft) => {
320
+ const f = findClipById(draft.composition, id);
321
+ if (!f)
322
+ return;
323
+ const target = f.clip;
324
+ // Always apply transform fields if provided — independent of the
325
+ // rate-handling branch.
326
+ if (props.opacity !== undefined)
327
+ target.opacity = props.opacity;
328
+ if (props.scale !== undefined)
329
+ target.scale = props.scale;
330
+ if (props.rotation !== undefined)
331
+ target.rotation = props.rotation;
332
+ // Output-space placement primitive (PiP / inset / banner / split-screen).
333
+ if (props.region !== undefined)
334
+ target.region = props.region;
335
+ if (props.fit !== undefined)
336
+ target.fit = props.fit;
337
+ if (rateChange) {
338
+ if (target.source.kind === 'media') {
339
+ target.source.playbackRate = rateChange.newRate;
340
+ }
341
+ target.duration = rateChange.newDuration;
342
+ if (rateChange.delta !== 0) {
343
+ for (const track of draft.composition.tracks) {
344
+ for (let i = 0; i < track.contents.length; i++) {
345
+ const item = track.contents[i];
346
+ if ('source' in item && item.id !== id && item.startTime >= rateChange.oldEnd) {
347
+ item.startTime = Math.max(0, item.startTime + rateChange.delta);
348
+ }
349
+ }
350
+ }
351
+ for (const m of draft.composition.markers ?? []) {
352
+ if (m.startTime >= rateChange.oldEnd) {
353
+ m.startTime = Math.max(0, m.startTime + rateChange.delta);
354
+ if (m.endTime !== undefined) {
355
+ m.endTime = Math.max(m.startTime, m.endTime + rateChange.delta);
356
+ }
357
+ }
358
+ }
359
+ }
360
+ }
361
+ });
362
+ return { rippled: rateChange ? rateChange.delta !== 0 : false };
363
+ },
364
+ // ── Overlay operations (TimelineClips on kind:'overlay' tracks) ──
365
+ // GUARD AT THE WRITE. An overlay source without a `primitiveId` is not a clip — it is a
366
+ // hole that renders as `unknown overlay primitive 'undefined'`, and the RENDERER was the
367
+ // first thing to notice it (2026-07-13: every capture_frames of a live compose died on
368
+ // this, the author went blind, and it landed zero graphics on a 90s customer pitch).
369
+ //
370
+ // `primitiveId: z.string().min(1)` is ALREADY required by the composition validator — but
371
+ // the in-loop capture path renders the in-memory store and never validates it, so the
372
+ // schema never ran. Refuse at the write instead, where the caller is still on the stack and
373
+ // the message can name it. (Same reasoning as compositionRender's `custom`-with-no-
374
+ // sourceCode guard, which patched one instance of this at the render boundary; this closes
375
+ // the class.)
376
+ addOverlay: (clip) => {
377
+ if (clip.source.kind === 'overlay' && !clip.source.primitiveId) {
378
+ throw new Error(`addOverlay: clip "${clip.id}" has an overlay source with no primitiveId. ` +
379
+ `A built-in is placed by primitiveId (source.kind:'overlay'); an org-installed ` +
380
+ `component is placed by componentId (source.kind:'component'). Use the catalog's ` +
381
+ `\`placement\` hint for the id you picked — do not write one kind with the other's id.`);
382
+ }
383
+ set((draft) => {
384
+ const track = findOrCreateTrackByKind(draft.composition, 'overlay');
385
+ track.contents.push(clip);
386
+ });
387
+ },
388
+ removeOverlay: (id) => {
389
+ set((draft) => {
390
+ for (const track of draft.composition.tracks) {
391
+ if (track.kind !== 'overlay')
392
+ continue;
393
+ const idx = track.contents.findIndex((c) => 'source' in c && c.id === id);
394
+ if (idx >= 0) {
395
+ track.contents.splice(idx, 1);
396
+ break;
397
+ }
398
+ }
399
+ if (draft.selectedOverlayId === id)
400
+ draft.selectedOverlayId = null;
401
+ });
402
+ },
403
+ updateOverlay: (id, updates) => {
404
+ set((draft) => {
405
+ for (const track of draft.composition.tracks) {
406
+ if (track.kind !== 'overlay')
407
+ continue;
408
+ for (let i = 0; i < track.contents.length; i++) {
409
+ const item = track.contents[i];
410
+ if ('source' in item && item.id === id) {
411
+ track.contents[i] = { ...item, ...updates };
412
+ return;
413
+ }
414
+ }
415
+ }
416
+ });
417
+ },
418
+ selectOverlay: (id) => {
419
+ for (const track of get().composition.tracks) {
420
+ if (track.kind !== 'overlay')
421
+ continue;
422
+ if (track.contents.some((c) => 'source' in c && c.id === id)) {
423
+ set(selectionPatch(get().composition, [{ kind: 'clip', clipId: id }]));
424
+ return;
425
+ }
426
+ }
427
+ },
428
+ clearOverlaySelection: () => {
429
+ const composition = get().composition;
430
+ const kept = get().selection.filter((e) => {
431
+ if (e.kind !== 'clip')
432
+ return true;
433
+ const found = findClipById(composition, e.clipId);
434
+ return found ? composition.tracks[found.trackIndex].kind !== 'overlay' : false;
435
+ });
436
+ set(selectionPatch(composition, kept));
437
+ },
438
+ /**
439
+ * (see addOverlay's guard) Replace all overlays — clears existing overlay tracks, creates
440
+ * one with provided clips.
441
+ */
442
+ loadOverlays: (clips) => {
443
+ set((draft) => {
444
+ draft.composition.tracks = draft.composition.tracks.filter((t) => t.kind !== 'overlay');
445
+ if (clips.length > 0) {
446
+ draft.composition.tracks.push({
447
+ id: `track-overlay-${crypto.randomUUID().slice(0, 8)}`,
448
+ kind: 'overlay',
449
+ contents: clips,
450
+ });
451
+ }
452
+ draft.selectedOverlayId = null;
453
+ });
454
+ },
455
+ // ── Audio operations (TimelineClips on kind:'audio' tracks) ──
456
+ addAudioClip: (clip) => {
457
+ set((draft) => {
458
+ const track = findOrCreateTrackByKind(draft.composition, 'audio');
459
+ track.contents.push(clip);
460
+ });
461
+ },
462
+ removeAudioClip: (id) => {
463
+ set((draft) => {
464
+ for (const track of draft.composition.tracks) {
465
+ if (track.kind !== 'audio')
466
+ continue;
467
+ const idx = track.contents.findIndex((c) => 'source' in c && c.id === id);
468
+ if (idx >= 0) {
469
+ track.contents.splice(idx, 1);
470
+ break;
471
+ }
472
+ }
473
+ });
474
+ },
475
+ updateAudioClip: (id, updates) => {
476
+ set((draft) => {
477
+ for (const track of draft.composition.tracks) {
478
+ if (track.kind !== 'audio')
479
+ continue;
480
+ for (let i = 0; i < track.contents.length; i++) {
481
+ const item = track.contents[i];
482
+ if ('source' in item && item.id === id) {
483
+ track.contents[i] = { ...item, ...updates };
484
+ return;
485
+ }
486
+ }
487
+ }
488
+ });
489
+ },
490
+ // ── Marker operations ──
491
+ addMarker: (marker) => {
492
+ set((draft) => {
493
+ if (!draft.composition.markers)
494
+ draft.composition.markers = [];
495
+ draft.composition.markers.push(marker);
496
+ });
497
+ },
498
+ removeMarker: (id) => {
499
+ set((draft) => {
500
+ if (!draft.composition.markers)
501
+ return;
502
+ draft.composition.markers = draft.composition.markers.filter((m) => m.id !== id);
503
+ });
504
+ },
505
+ updateMarker: (id, updates) => {
506
+ set((draft) => {
507
+ if (!draft.composition.markers)
508
+ return;
509
+ const m = draft.composition.markers.find((x) => x.id === id);
510
+ if (m)
511
+ Object.assign(m, updates);
512
+ });
513
+ },
514
+ // ── cutAndRipple (replaces v1 deletedRanges) ──
515
+ cutAndRipple: (start, end) => {
516
+ if (!Number.isFinite(start) || !Number.isFinite(end) || start >= end)
517
+ return;
518
+ const span = end - start;
519
+ set((draft) => {
520
+ for (const track of draft.composition.tracks) {
521
+ const next = [];
522
+ for (const item of track.contents) {
523
+ if (!('source' in item)) {
524
+ next.push(item);
525
+ continue;
526
+ }
527
+ const c = item;
528
+ const cs = c.startTime;
529
+ const ce = c.startTime + c.duration;
530
+ if (ce <= start) {
531
+ next.push(c);
532
+ continue;
533
+ }
534
+ if (cs >= end) {
535
+ next.push({ ...c, startTime: Math.max(0, cs - span) });
536
+ continue;
537
+ }
538
+ if (cs < start) {
539
+ const leftDuration = start - cs;
540
+ const leftSource = trimSourceFor(c.source, 0, leftDuration);
541
+ next.push({ ...c, id: c.id, duration: leftDuration, source: leftSource });
542
+ }
543
+ if (ce > end) {
544
+ const rightDuration = ce - end;
545
+ const sourceOffsetIntoOriginal = end - cs;
546
+ const rightSource = trimSourceFor(c.source, sourceOffsetIntoOriginal, sourceOffsetIntoOriginal + rightDuration);
547
+ next.push({
548
+ ...c,
549
+ id: `${c.id}-r`,
550
+ startTime: start,
551
+ duration: rightDuration,
552
+ source: rightSource,
553
+ });
554
+ }
555
+ }
556
+ track.contents = next;
557
+ }
558
+ if (draft.composition.markers) {
559
+ draft.composition.markers = draft.composition.markers.flatMap((m) => {
560
+ const r = cutTimedRange(m.startTime, m.endTime, start, end);
561
+ return r ? [{ ...m, startTime: r.start, endTime: r.end }] : [];
562
+ });
563
+ }
564
+ // Captions ride the same ripple as the clips they caption (in ms).
565
+ // Without this, a leading/interior cut moves the clip's source `trim`
566
+ // (which seconds play) while the frozen top-level caption words stay put
567
+ // — desyncing video and captions by the cut span.
568
+ // DERIVED ONLY. Rippling is an incremental re-derivation: correct for
569
+ // words that are a projection of the clip, and vandalism for words a
570
+ // human or agent wrote. Before captions carried provenance this could
571
+ // not tell the two apart and silently rewrote both.
572
+ if (draft.composition.captions?.source === "derived") {
573
+ for (const seg of draft.composition.captions.segments) {
574
+ seg.words = seg.words.flatMap((w) => {
575
+ const r = cutTimedRange(w.startMs, w.endMs, start * 1000, end * 1000);
576
+ return r ? [{ ...w, startMs: r.start, endMs: r.end ?? w.endMs }] : [];
577
+ });
578
+ }
579
+ }
580
+ });
581
+ },
582
+ // ── addExcludedRange ──
583
+ //
584
+ // Marks a range of source media on a media-source clip as excluded.
585
+ // Atomically: clamps to the clip's `trim` window, merges/coalesces with
586
+ // existing `excludedRanges` (touching ranges merge), shrinks
587
+ // `clip.duration` by the net delta added to Σ excluded, and ripples
588
+ // downstream same-track items left by that delta.
589
+ //
590
+ // Wire-shape invariant: (trim.end − trim.start) − Σexcludedrange = duration.
591
+ // The `trimEnd` fallback below restores trim.end from
592
+ // `duration + Σexcluded` when `trim` is absent — the same invariant
593
+ // rearranged.
594
+ addExcludedRange: (clipId, sourceStart, sourceEnd, reason) => {
595
+ if (!Number.isFinite(sourceStart) || !Number.isFinite(sourceEnd))
596
+ return;
597
+ if (!(sourceEnd > sourceStart))
598
+ return;
599
+ set((draft) => {
600
+ const found = findClipById(draft.composition, clipId);
601
+ if (!found)
602
+ return;
603
+ const track = draft.composition.tracks[found.trackIndex];
604
+ if (track.kind !== 'video' && track.kind !== 'audio')
605
+ return;
606
+ const target = found.clip;
607
+ if (target.source.kind !== 'media')
608
+ return;
609
+ const before = target.source.excludedRanges ?? [];
610
+ const beforeTotal = before.reduce((acc, r) => acc + (r.end - r.start), 0);
611
+ const trimStart = target.source.trim?.start ?? 0;
612
+ const trimEnd = target.source.trim?.end ?? trimStart + target.duration + beforeTotal;
613
+ const lo = Math.max(sourceStart, trimStart);
614
+ const hi = Math.min(sourceEnd, trimEnd);
615
+ if (!(hi > lo))
616
+ return;
617
+ const merged = [];
618
+ let inserted = false;
619
+ let curStart = lo;
620
+ let curEnd = hi;
621
+ let curReason = reason;
622
+ for (const r of before) {
623
+ if (r.end < curStart) {
624
+ merged.push(r);
625
+ continue;
626
+ }
627
+ if (r.start > curEnd) {
628
+ if (!inserted) {
629
+ merged.push({
630
+ start: curStart,
631
+ end: curEnd,
632
+ ...(curReason !== undefined ? { reason: curReason } : {}),
633
+ });
634
+ inserted = true;
635
+ }
636
+ merged.push(r);
637
+ continue;
638
+ }
639
+ curStart = Math.min(curStart, r.start);
640
+ curEnd = Math.max(curEnd, r.end);
641
+ curReason = curReason ?? r.reason;
642
+ }
643
+ if (!inserted) {
644
+ merged.push({
645
+ start: curStart,
646
+ end: curEnd,
647
+ ...(curReason !== undefined ? { reason: curReason } : {}),
648
+ });
649
+ }
650
+ const afterTotal = merged.reduce((acc, r) => acc + (r.end - r.start), 0);
651
+ const delta = afterTotal - beforeTotal;
652
+ if (delta <= 0)
653
+ return;
654
+ // Refuse to shrink to zero duration — wire shape requires duration > 0.
655
+ if (target.duration - delta <= 1e-3)
656
+ return;
657
+ target.source.excludedRanges = merged;
658
+ target.duration = target.duration - delta;
659
+ for (let i = found.clipIndex + 1; i < track.contents.length; i++) {
660
+ track.contents[i].startTime = Math.max(0, track.contents[i].startTime - delta);
661
+ }
662
+ // Ripple top-level markers + captions the same `delta` so they stay
663
+ // aligned with the now-shorter source — parity with cutAndRipple's
664
+ // "captions ride clip cuts" invariant (commit 2fac4cf), but WITHOUT
665
+ // fragmenting the clip. The removed timeline span is [tStart, tStart+delta]
666
+ // where tStart is the timeline position of the newly-excluded source start:
667
+ // clip.startTime + played-source-before-lo. `excludedBeforeLo` is the
668
+ // source already excluded in [trimStart, lo], so the mapping accounts for
669
+ // prior exclusions and is order-independent across calls.
670
+ const excludedBeforeLo = before.reduce((acc, r) => acc + Math.max(0, Math.min(r.end, lo) - Math.max(r.start, trimStart)), 0);
671
+ const tStart = target.startTime + (lo - trimStart) - excludedBeforeLo;
672
+ const tEnd = tStart + delta;
673
+ if (draft.composition.markers) {
674
+ draft.composition.markers = draft.composition.markers.flatMap((m) => {
675
+ const r = cutTimedRange(m.startTime, m.endTime, tStart, tEnd);
676
+ return r ? [{ ...m, startTime: r.start, endTime: r.end }] : [];
677
+ });
678
+ }
679
+ if (draft.composition.captions) {
680
+ for (const seg of draft.composition.captions.segments) {
681
+ seg.words = seg.words.flatMap((w) => {
682
+ const r = cutTimedRange(w.startMs, w.endMs, tStart * 1000, tEnd * 1000);
683
+ return r ? [{ ...w, startMs: r.start, endMs: r.end ?? w.endMs }] : [];
684
+ });
685
+ }
686
+ }
687
+ });
688
+ },
689
+ // ── removeExcludedRange ──
690
+ //
691
+ // Inverse of addExcludedRange. Removes the excluded range at the given
692
+ // index, restores the clip's duration by the same amount, and ripples
693
+ // downstream same-track items right. When the resulting list is empty,
694
+ // drops the field entirely so the wire stays canonical.
695
+ removeExcludedRange: (clipId, rangeIdx) => {
696
+ set((draft) => {
697
+ const found = findClipById(draft.composition, clipId);
698
+ if (!found)
699
+ return;
700
+ const track = draft.composition.tracks[found.trackIndex];
701
+ if (track.kind !== 'video' && track.kind !== 'audio')
702
+ return;
703
+ const target = found.clip;
704
+ if (target.source.kind !== 'media')
705
+ return;
706
+ const ranges = target.source.excludedRanges;
707
+ if (!ranges || rangeIdx < 0 || rangeIdx >= ranges.length)
708
+ return;
709
+ const removed = ranges[rangeIdx];
710
+ const restored = removed.end - removed.start;
711
+ if (restored <= 0)
712
+ return;
713
+ const next = ranges.filter((_, i) => i !== rangeIdx);
714
+ if (next.length === 0) {
715
+ delete target.source.excludedRanges;
716
+ }
717
+ else {
718
+ target.source.excludedRanges = next;
719
+ }
720
+ target.duration = target.duration + restored;
721
+ for (let i = found.clipIndex + 1; i < track.contents.length; i++) {
722
+ track.contents[i].startTime = track.contents[i].startTime + restored;
723
+ }
724
+ });
725
+ },
726
+ // ── setCropIntents ──
727
+ //
728
+ // Author the camera channel (`reframe`) on a media clip. Each segment
729
+ // carries the canonical reframe params (focus, zoom, bias, ease) the
730
+ // derive math honors directly — no closed-enum framing names, no
731
+ // hardcoded scale constants.
732
+ //
733
+ // `null`/empty clears `reframe`; the clip then renders from the raw source.
734
+ //
735
+ // Used by the agent's `set_crop_intents` tool (name kept; the arg shape is
736
+ // reframe) and the desktop editor's framing timeline. Replaces the deleted
737
+ // subject-centric cropIntents (2026-06-14 cutover).
738
+ setCropIntents: (clipId, segments) => {
739
+ set((draft) => {
740
+ const found = findClipById(draft.composition, clipId);
741
+ if (!found)
742
+ return;
743
+ const target = found.clip;
744
+ if (target.source.kind !== 'media')
745
+ return;
746
+ if (segments === null || segments.length === 0) {
747
+ delete target.source.reframe;
748
+ }
749
+ else {
750
+ target.source.reframe = { segments };
751
+ }
752
+ });
753
+ },
754
+ // ── setEffects ──
755
+ //
756
+ // Author a clip's EFFECT channel (`TimelineClip.effects`) — the registered
757
+ // effect primitives (+ params) the renderer stacks onto that clip. WHOLESALE:
758
+ // the array REPLACES whatever was there, and `[]` CLEARS the channel (the
759
+ // same set/clear shape setCropIntents has). `effects` has been in the
760
+ // validator — and accepted by `clip.add` — all along, but until the
761
+ // `setEffects` op there was no way to change it on an EXISTING clip except a
762
+ // whole-clip `clip.update` patch, which the op vocabulary explicitly steers
763
+ // callers away from (a partial `source` in that patch clobbers the source).
764
+ //
765
+ // Named EXACTLY like the wire op it records (`setEffects`) — the factory and
766
+ // the op vocabulary are one vocabulary, so there is no method→op rename table
767
+ // for the conformance guard to carry.
768
+ //
769
+ // Cross-track by id, like `updateClip` — the clip's family is irrelevant to
770
+ // its effect stack. Same merge shape as `updateClip(id, { effects })`.
771
+ setEffects: (clipId, effects) => {
772
+ set((draft) => {
773
+ const found = findClipById(draft.composition, clipId);
774
+ if (!found)
775
+ return;
776
+ if (effects.length === 0) {
777
+ delete found.clip.effects;
778
+ }
779
+ else {
780
+ found.clip.effects = effects;
781
+ }
782
+ });
783
+ },
784
+ // ── setCaptionStyle ──
785
+ //
786
+ // Apply the agent's caption STYLE overrides (font, size, color, position,
787
+ // emphasis treatment, …) onto the top-level `composition.captions.style` —
788
+ // the exact field the renderer consumes (compositionRender.ts) and the
789
+ // Captions primitive reads. Merge (not replace) so each `set_captions` call
790
+ // overrides only the fields it names and leaves the rest (and the
791
+ // transcript-sliced `words`) intact. Undefined fields are dropped so an
792
+ // omitted field never clobbers an existing one. If captions don't exist yet
793
+ // (style set before the transcript slice lands), create the container with
794
+ // empty words — the compose/insert path fills the words.
795
+ setCaptionStyle: (style) => {
796
+ set((draft) => {
797
+ const clean = Object.fromEntries(Object.entries(style).filter(([, v]) => v !== undefined));
798
+ if (Object.keys(clean).length === 0)
799
+ return;
800
+ const existing = draft.composition.captions;
801
+ if (existing) {
802
+ existing.style = { ...(existing.style ?? {}), ...clean };
803
+ }
804
+ else {
805
+ // A style with no words is `authored`: the caller stated an intent
806
+ // about captions that do not exist yet. It cannot be `derived` —
807
+ // there is no clip to name as its source, and inventing one would
808
+ // create a projection of nothing that the next clip edit would
809
+ // "re-derive" into surprise captions.
810
+ draft.composition.captions = { source: "authored", segments: [], style: clean };
811
+ }
812
+ });
813
+ },
814
+ // ── setCaptions ──
815
+ //
816
+ // Replace the caption SEGMENTS wholesale — the words layer. Until this op,
817
+ // caption words were populated ONLY by the compose/from-suggestion
818
+ // transcript-slice lanes, so a client agent holding its own word timings
819
+ // (e.g. a generated VO take) had no way to author the engine caption layer
820
+ // (memoir v4, 2026-07-21). Segments REPLACE (not merge — word timing is one
821
+ // coherent document); `style`, when given, merges with setCaptionStyle
822
+ // semantics, and an omitted style keeps the existing one.
823
+ setCaptions: (segments, style,
824
+ /**
825
+ * WHERE THESE WORDS CAME FROM. Omitted ⇒ `authored`: a caller handed us
826
+ * literal words and owns them, so nothing rewrites them. Pass
827
+ * `{ clipId }` when the words are a PROJECTION of that clip's transcript
828
+ * — then every later edit to the clip re-derives them instead of leaving
829
+ * a stale snapshot behind (which is what shipped: words timed to 4.4s
830
+ * inside a 2.4s composition).
831
+ */
832
+ derivedFrom) => {
833
+ set((draft) => {
834
+ const existing = draft.composition.captions;
835
+ const mergedStyle = style
836
+ ? {
837
+ ...(existing?.style ?? {}),
838
+ ...Object.fromEntries(Object.entries(style).filter(([, v]) => v !== undefined)),
839
+ }
840
+ : existing?.style;
841
+ const styleField = mergedStyle && Object.keys(mergedStyle).length > 0 ? { style: mergedStyle } : {};
842
+ draft.composition.captions = derivedFrom
843
+ ? { source: "derived", from: derivedFrom, segments, ...styleField }
844
+ : { source: "authored", segments, ...styleField };
845
+ });
846
+ },
847
+ // ── ripple ──
848
+ ripple: (time, amount) => {
849
+ set((draft) => {
850
+ for (const track of draft.composition.tracks) {
851
+ for (const item of track.contents) {
852
+ if (!('source' in item))
853
+ continue;
854
+ const c = item;
855
+ if (c.startTime >= time) {
856
+ c.startTime = Math.max(0, c.startTime + amount);
857
+ }
858
+ else if (c.startTime + c.duration > time && amount < 0) {
859
+ c.duration = Math.max(0.1, c.duration + amount);
860
+ }
861
+ }
862
+ }
863
+ // Markers and caption words ride the shift too (M3) — shift each range
864
+ // starting at/after `time` by `amount`, in their own unit.
865
+ for (const m of draft.composition.markers ?? []) {
866
+ const r = shiftTimedRange(m.startTime, m.endTime, time, amount);
867
+ if (r) {
868
+ m.startTime = r.start;
869
+ if (r.end !== undefined)
870
+ m.endTime = r.end;
871
+ }
872
+ }
873
+ if (draft.composition.captions) {
874
+ for (const seg of draft.composition.captions.segments) {
875
+ for (const w of seg.words) {
876
+ const r = shiftTimedRange(w.startMs, w.endMs, time * 1000, amount * 1000);
877
+ if (r) {
878
+ w.startMs = r.start;
879
+ w.endMs = r.end ?? w.endMs;
880
+ }
881
+ }
882
+ }
883
+ }
884
+ });
885
+ },
886
+ // ── Canvas / format ──
887
+ //
888
+ // Patches `composition.format` — `aspectRatio` is required (the field
889
+ // has no default), `fps`, `resolution`, and `platform` fall back to the
890
+ // existing values on the wire. Clip start/duration values are not retimed:
891
+ // a 30→60 fps switch keeps the same wall-clock seconds. Layout-sensitive
892
+ // overlays may need re-rendering by the caller after a switch. `platform`
893
+ // is output-determining (safe-zone placement) — carry it forward so an
894
+ // aspect-only change never silently erases it.
895
+ setFormat: (next) => {
896
+ set((draft) => {
897
+ const prev = draft.composition.format;
898
+ draft.composition.format = {
899
+ aspectRatio: next.aspectRatio,
900
+ ...(next.fps !== undefined ? { fps: next.fps } : prev.fps !== undefined ? { fps: prev.fps } : {}),
901
+ ...(next.resolution !== undefined
902
+ ? { resolution: next.resolution }
903
+ : prev.resolution !== undefined
904
+ ? { resolution: prev.resolution }
905
+ : {}),
906
+ ...(next.platform !== undefined
907
+ ? { platform: next.platform }
908
+ : prev.platform !== undefined
909
+ ? { platform: prev.platform }
910
+ : {}),
911
+ };
912
+ });
913
+ },
914
+ // ── Track operations ──
915
+ //
916
+ // Capability parity: the cloud agent must be able to do everything the
917
+ // editor can (these were previously editor-only, in
918
+ // cueframe/src/store/compositionStore/compositionOps.ts). They are pure
919
+ // `set` mutations over `composition.tracks` + the selection fields already
920
+ // on `CompositionOpsState`, so they live in core unchanged. The agent's
921
+ // tool layer can now surface them; the editor keeps calling the same names.
922
+ /**
923
+ * Append a new track of `kind` to `composition.tracks`. If `id` is omitted
924
+ * a UUID-suffixed id is generated (matches `findOrCreateTrackByKind`).
925
+ */
926
+ addTrack: (kind, name, id) => {
927
+ set((draft) => {
928
+ const track = {
929
+ id: id ?? `track-${kind}-${crypto.randomUUID().slice(0, 8)}`,
930
+ kind,
931
+ name,
932
+ contents: [],
933
+ };
934
+ draft.composition.tracks.push(track);
935
+ });
936
+ },
937
+ /** Remove a track and any clip selection that references its contents. */
938
+ removeTrack: (trackId) => {
939
+ set((draft) => {
940
+ const idx = draft.composition.tracks.findIndex((t) => t.id === trackId);
941
+ if (idx < 0)
942
+ return;
943
+ const removed = draft.composition.tracks[idx];
944
+ const removedClipIds = new Set(removed.contents
945
+ .filter((c) => 'source' in c)
946
+ .map((c) => c.id));
947
+ pruneSelectionInDraft(draft, removedClipIds);
948
+ if (draft.selectedOverlayId && removedClipIds.has(draft.selectedOverlayId)) {
949
+ draft.selectedOverlayId = null;
950
+ }
951
+ draft.composition.tracks.splice(idx, 1);
952
+ });
953
+ },
954
+ /** Patch a track's `name` / `enabled`. */
955
+ updateTrack: (trackId, updates) => {
956
+ set((draft) => {
957
+ const track = draft.composition.tracks.find((t) => t.id === trackId);
958
+ if (!track)
959
+ return;
960
+ if ('name' in updates)
961
+ track.name = updates.name;
962
+ if ('enabled' in updates)
963
+ track.enabled = updates.enabled;
964
+ // Unity is stored as ABSENT, not as 1 — so a composition nobody has
965
+ // mixed carries no mixer state at all and diffs stay quiet.
966
+ if ('volume' in updates) {
967
+ track.volume = updates.volume === 1 ? undefined : updates.volume;
968
+ }
969
+ });
970
+ },
971
+ /** Move a track from `fromIndex` to `toIndex` within `composition.tracks`. */
972
+ reorderTracks: (fromIndex, toIndex) => {
973
+ set((draft) => {
974
+ const len = draft.composition.tracks.length;
975
+ if (fromIndex < 0 || fromIndex >= len)
976
+ return;
977
+ const clamped = Math.max(0, Math.min(toIndex, len - 1));
978
+ if (clamped === fromIndex)
979
+ return;
980
+ const [moved] = draft.composition.tracks.splice(fromIndex, 1);
981
+ draft.composition.tracks.splice(clamped, 0, moved);
982
+ });
983
+ },
984
+ /**
985
+ * Move a clip to a different track, optionally updating its startTime.
986
+ *
987
+ * The op trusts callers to validate kind-compatibility and overlap; the
988
+ * Fabric drag handler is responsible for snapping back when invalid. No-op
989
+ * if the clip isn't found, the target track doesn't exist, or target ===
990
+ * source. Selection stays put (the clip id is unchanged).
991
+ */
992
+ moveClipToTrack: (clipId, targetTrackId, newStartTime) => {
993
+ set((draft) => {
994
+ let sourceTrack;
995
+ let clipIdx = -1;
996
+ for (const t of draft.composition.tracks) {
997
+ const idx = t.contents.findIndex((c) => 'source' in c && c.id === clipId);
998
+ if (idx >= 0) {
999
+ sourceTrack = t;
1000
+ clipIdx = idx;
1001
+ break;
1002
+ }
1003
+ }
1004
+ if (!sourceTrack || clipIdx < 0)
1005
+ return;
1006
+ const target = draft.composition.tracks.find((t) => t.id === targetTrackId);
1007
+ if (!target)
1008
+ return;
1009
+ if (target.id === sourceTrack.id && newStartTime === undefined)
1010
+ return;
1011
+ const [moved] = sourceTrack.contents.splice(clipIdx, 1);
1012
+ const clip = moved;
1013
+ if (newStartTime !== undefined)
1014
+ clip.startTime = newStartTime;
1015
+ target.contents.push(clip);
1016
+ target.contents.sort((a, b) => a.startTime - b.startTime);
1017
+ });
1018
+ },
1019
+ /**
1020
+ * Duplicate a clip. The copy receives a new id and is appended to the same
1021
+ * track immediately after the original's `[startTime + duration]` (nudged
1022
+ * forward to avoid overlap with whatever follows).
1023
+ */
1024
+ duplicateClip: (id) => {
1025
+ let newId;
1026
+ set((draft) => {
1027
+ for (const track of draft.composition.tracks) {
1028
+ const idx = track.contents.findIndex((c) => 'source' in c && c.id === id);
1029
+ if (idx < 0)
1030
+ continue;
1031
+ const original = track.contents[idx];
1032
+ const clipEnd = original.startTime + original.duration;
1033
+ // Find the earliest gap >= clipEnd on this track for placement; fallback = clipEnd.
1034
+ let placementStart = clipEnd;
1035
+ for (let j = idx + 1; j < track.contents.length; j++) {
1036
+ const next = track.contents[j];
1037
+ if (next.startTime >= placementStart + original.duration)
1038
+ break;
1039
+ placementStart = next.startTime + next.duration;
1040
+ }
1041
+ newId = `${original.id}-dup-${crypto.randomUUID().slice(0, 6)}`;
1042
+ const copy = { ...original, id: newId, startTime: placementStart };
1043
+ // A single-clip duplicate cannot preserve pairness — and inheriting
1044
+ // the group id is WORSE than losing it: the copy joins the ORIGINAL'S
1045
+ // link group, so moving the duplicate drags the original's partner
1046
+ // with it (review pass 2, 2026-08-24 — the same defect family paste
1047
+ // had). The duplicate arrives unlinked.
1048
+ delete copy.linkGroupId;
1049
+ track.contents.splice(idx + 1, 0, copy);
1050
+ break;
1051
+ }
1052
+ });
1053
+ return newId;
1054
+ },
1055
+ };
1056
+ }