@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,889 @@
1
+ /**
2
+ * deriveTrajectory — PURE TypeScript STAGE-B crop-trajectory math (the cheap
3
+ * "apply a crop intent" half), derived over a cached source-level `subjectTrack`.
4
+ *
5
+ * This is the SINGLE crop derivation for EVERY render surface — the agent's
6
+ * in-loop capture, the verifier eval, AND the customer ship render — by
7
+ * construction: each surface calls THIS function over the SAME cached track +
8
+ * the SAME authored reframe, so the trajectory is identical bytes with no
9
+ * pre-baked variant cache to drift. Render-time-resolution (2026-06-14): the
10
+ * trajectory is DERIVED INLINE at render, never looked up as a baked variant,
11
+ * which deleted the trajectory variant cache + its `variant_not_baked` bug class.
12
+ *
13
+ * Lives in @cueframe/execution/core (`@cueframe/core/render`) — it depends only
14
+ * on TYPES from @cueframe/perception (`SubjectTrack`/`Face`/`FaceBox`) and
15
+ * @cueframe/composition (`ReframeSegment` + the eased-ramp helpers), both legal
16
+ * execution-framework dependencies (execution MAY depend on perception +
17
+ * composition). The Modal `reframe_bake` re-detection path is retired — there is
18
+ * one derivation, so there is no TS↔Python drift to guard against.
19
+ *
20
+ * Output shape is the canonical `TrajectoryData` from
21
+ * @cueframe/composition/reframe/trajectory — the SSOT that both this producer and
22
+ * the renderer (CropFromTrajectory.tsx) import; neither declares a local mirror.
23
+ *
24
+ * See brain/Projects/CueFrame/specs/2026-06-14-render-time-resolution-design.md.
25
+ */
26
+ // Eased zoom / center-pan ramps live in @cueframe/composition (the SINGLE source
27
+ // of truth shared with the renderer's still path), so the still and video paths
28
+ // can't drift. Imported here; re-exported for this module's existing test surface.
29
+ import { buildEasedZooms, buildPannedCenters, CAPTION_BAND_RESERVE } from '@cueframe/composition/reframe/trajectory';
30
+ // The shot-scale target table + clamp — SSOT, shared with the plan-time punch-in
31
+ // guard (`punchInWarrant`). Never re-declare these constants here.
32
+ import { SHOT_SCALE_TARGET, shotScaleZoom } from '@cueframe/composition/reframe/shotScale';
33
+ export { buildEasedZooms, buildPannedCenters, easeOutCubic } from '@cueframe/composition/reframe/trajectory';
34
+ // Typed, fail-loud render error. CFERR-encoded so code+fix survive the Convex
35
+ // action→route error serialization (see @cueframe/errors codec).
36
+ import { CueframeError, encodeError } from '@cueframe/errors';
37
+ // vcam (virtual-camera) subject selection + stability — the `all-faces` chase
38
+ // killer (Phase 2) + the deadzone-glide tracking stage (Phase 3) + the `face`/
39
+ // `active-speaker` single-subject adapter (P4 — those modes now run the SAME
40
+ // geometric-deadzone path as all-faces, no longer the legacy `emaSmooth`).
41
+ import { selectSubjectSet, selectSingleSubjectBoxes } from './vcam/subjectSet';
42
+ import { buildRequiredRegions } from './vcam/requiredRegion';
43
+ import { cameraPath } from './vcam/cameraPath';
44
+ import { fitZoomPerShot } from './vcam/framing';
45
+ import { segmentShots } from './vcam/shots';
46
+ /**
47
+ * Normalized area of a face detection — used to rank faces largest-first
48
+ * (largest ≈ closest to camera = `face-0` by convention). Mirrors
49
+ * reframe_bake.py `_face_area` (width/height path; negatives clamp to 0).
50
+ */
51
+ export function faceArea(face) {
52
+ return Math.max(0, face.width) * Math.max(0, face.height);
53
+ }
54
+ /**
55
+ * Filter the detector's face list by the segment's subject pick:
56
+ * - `all-faces` → all faces (cropper fits the union bbox).
57
+ * - `frame-center` → [] (cropper centers on the source geometric center).
58
+ * - `face` faceId=`face-N` → the face with that STABLE tracker id this frame.
59
+ * The roster the agent authors against carries the tracker's stable ids, so
60
+ * `face-2` means "that tracked person," NOT "the 3rd-largest face this frame."
61
+ * Absent this frame → [] (caller emits no center; EMA forward-fills) rather
62
+ * than silently snapping to a DIFFERENT person — the old area-rank +
63
+ * out-of-range→largest behavior is exactly what made the crop ping-pong
64
+ * between speakers (brain Issue crop-subject-resolved-by-area-rank).
65
+ * - The EMPTY-string faceId is a sentinel (the active-speaker degrade, see
66
+ * deriveSegment) meaning "no specific subject this frame → largest face."
67
+ * Throws on an unknown kind.
68
+ *
69
+ * NB: the retired Python `reframe_bake._resolve_subject_faces` did area-rank;
70
+ * that path is dead (TS is the only live derivation), so there is no drift.
71
+ */
72
+ export function resolveSubjectFaces(faces, subject) {
73
+ if (faces.length === 0)
74
+ return faces;
75
+ if (subject.kind === 'all-faces')
76
+ return faces;
77
+ if (subject.kind === 'frame-center')
78
+ return [];
79
+ // `point` is detection-free — it never selects a face. deriveSegment
80
+ // short-circuits before this is reached; kept exhaustive for safety.
81
+ if (subject.kind === 'point')
82
+ return [];
83
+ if (subject.kind === 'face') {
84
+ const faceId = subject.faceId;
85
+ // Sentinel: empty / non-`face-` id → "no specific subject → largest face"
86
+ // (the active-speaker degrade and legacy callers rely on this).
87
+ if (typeof faceId !== 'string' || faceId === '' || !faceId.startsWith('face-')) {
88
+ const ranked = [...faces].sort((a, b) => faceArea(b) - faceArea(a));
89
+ return ranked.slice(0, 1);
90
+ }
91
+ // Match the authored STABLE identity; absent this frame → [].
92
+ const match = faces.find((f) => f.faceId === faceId);
93
+ return match ? [match] : [];
94
+ }
95
+ throw new Error(`unknown_subject_kind: ${subject.kind}`);
96
+ }
97
+ /**
98
+ * The target crop center from face dets + subject pick. Mirrors
99
+ * reframe_bake.py `_selected_face_center`: `frame-center` (and no usable
100
+ * selection) → null (caller centers on source); otherwise the area-weighted
101
+ * centroid of the selected faces (degenerates to a single face's center).
102
+ */
103
+ export function selectedFaceCenter(faces, subject) {
104
+ if (subject.kind === 'frame-center')
105
+ return null;
106
+ // `point` centers on a fixed authored location, independent of detection.
107
+ if (subject.kind === 'point')
108
+ return [subject.x, subject.y];
109
+ if (faces.length === 0)
110
+ return null;
111
+ const selected = resolveSubjectFaces(faces, subject);
112
+ if (selected.length === 0)
113
+ return null;
114
+ let totalArea = 0;
115
+ let cxAcc = 0;
116
+ let cyAcc = 0;
117
+ for (const f of selected) {
118
+ const area = faceArea(f) || 1e-6;
119
+ cxAcc += (f.x + f.width / 2) * area;
120
+ cyAcc += (f.y + f.height / 2) * area;
121
+ totalArea += area;
122
+ }
123
+ return [cxAcc / totalArea, cyAcc / totalArea];
124
+ }
125
+ /** Normalized distance beyond which adjacent centers are treated as a shot
126
+ * change (hard cut / new angle) and smoothing snaps instead of blending —
127
+ * mirror of reframe_bake.py `JUMP_THRESHOLD`. */
128
+ export const JUMP_THRESHOLD = 0.15;
129
+ /** Minimum fraction of a segment's frames in which an authored `face` subject
130
+ * must actually be tracked. Below this, deriveTrajectory FAILS LOUD instead of
131
+ * silently centering the crop — the authored identity isn't really in the clip
132
+ * (tracker ID fragmentation). A genuine subject is present for the large
133
+ * majority of frames it's framed over; 40% is a generous floor. */
134
+ export const MIN_SUBJECT_RESOLUTION = 0.4;
135
+ export function isJump(a, b) {
136
+ return Math.abs(a[0] - b[0]) > JUMP_THRESHOLD || Math.abs(a[1] - b[1]) > JUMP_THRESHOLD;
137
+ }
138
+ /**
139
+ * Shot-aware EMA on per-frame centers. Forward-fill nulls with the last-known
140
+ * position, then a forward + backward EMA pass, where BOTH passes snap (no
141
+ * blend) ONLY across a detector-reported shot cut (`cutFrames`).
142
+ *
143
+ * Phase 1 (vcam): the `isJump`/`JUMP_THRESHOLD` inference is GONE as a cut
144
+ * signal. A center jump is NEVER inferred to be a cut — that inference was the
145
+ * false-cut snap (a ByteTrack detection-lag jiggle read as a new shot →
146
+ * teleport). Cuts come ONLY from `shotBoundaries`. `isJump`/`JUMP_THRESHOLD`
147
+ * remain exported (legacy consumers) but no longer drive smoothing here.
148
+ *
149
+ * Phase 3 (vcam): the `all-faces` CAMERA-CENTER smoothing is now the deadzone-
150
+ * inclusion + Hamming-window stage in `cameraPath` (the camera TRACKS a moving
151
+ * group). `emaSmooth` stays for the SEPARABLE non-center use — the per-subject
152
+ * `face_box_series` the floor reads (`perSubjectSeries`) — and for the
153
+ * UNCHANGED face/active-speaker/frame-center center path (byte-identical to the
154
+ * pre-Phase-3 behavior, the mode-isolation invariant). It is NOT used for the
155
+ * all-faces centers any more.
156
+ */
157
+ export function emaSmooth(centers, alpha = 0.4, cutFrames) {
158
+ const n = centers.length;
159
+ if (n === 0)
160
+ return [];
161
+ // A frame is a hard reset boundary ONLY when it STARTS a new shot per the
162
+ // detector (`cutFrames`, frame-exact). No jump inference.
163
+ const isCut = (i) => cutFrames?.has(i) ?? false;
164
+ // Fill nulls. A gap is normally forward-filled with the prior known position
165
+ // (a brief occlusion — the subject hasn't moved). When a SHOT CUT falls inside
166
+ // the gap, split it AT the cut: frames before the cut belong to the old shot
167
+ // (prior position), frames from the cut on belong to the new shot (next known
168
+ // position) — so the crop snaps at the cut, not frames late. With no detector
169
+ // cut in the gap, forward-fill (hold the old position) — no jump back-fill.
170
+ const fillFirst = centers.find((c) => c !== null) ?? [0.5, 0.5];
171
+ const filled = new Array(n);
172
+ let lastVal = fillFirst;
173
+ let i = 0;
174
+ while (i < n) {
175
+ if (centers[i] !== null) {
176
+ lastVal = centers[i];
177
+ filled[i] = lastVal;
178
+ i++;
179
+ continue;
180
+ }
181
+ let j = i;
182
+ while (j < n && centers[j] === null)
183
+ j++;
184
+ const nextVal = j < n ? centers[j] : lastVal;
185
+ // First detector cut at or after i, within the gap [i, j].
186
+ let cut = -1;
187
+ if (cutFrames) {
188
+ for (let k = i; k <= j; k++) {
189
+ if (isCut(k)) {
190
+ cut = k;
191
+ break;
192
+ }
193
+ }
194
+ }
195
+ if (cut >= 0) {
196
+ for (let k = i; k < j; k++)
197
+ filled[k] = k < cut ? lastVal : nextVal;
198
+ }
199
+ else {
200
+ for (let k = i; k < j; k++)
201
+ filled[k] = lastVal;
202
+ }
203
+ i = j;
204
+ }
205
+ // Forward EMA — reset (snap) ONLY at a detector shot cut.
206
+ const forward = [filled[0]];
207
+ for (let i = 1; i < n; i++) {
208
+ const prev = forward[i - 1];
209
+ const curr = filled[i];
210
+ if (isCut(i)) {
211
+ forward.push(curr);
212
+ }
213
+ else {
214
+ forward.push([
215
+ alpha * curr[0] + (1 - alpha) * prev[0],
216
+ alpha * curr[1] + (1 - alpha) * prev[1],
217
+ ]);
218
+ }
219
+ }
220
+ // Backward EMA — reset ONLY when the i→i+1 transition crosses a detector cut.
221
+ const final = new Array(n);
222
+ final[n - 1] = forward[n - 1];
223
+ for (let i = n - 2; i >= 0; i--) {
224
+ const nxt = final[i + 1];
225
+ const curr = forward[i];
226
+ if (isCut(i + 1)) {
227
+ final[i] = curr;
228
+ }
229
+ else {
230
+ final[i] = [
231
+ alpha * curr[0] + (1 - alpha) * nxt[0],
232
+ alpha * curr[1] + (1 - alpha) * nxt[1],
233
+ ];
234
+ }
235
+ }
236
+ return final;
237
+ }
238
+ /** Clamp to [0,1] — mirror of reframe_bake.py `_clip01`. */
239
+ export function clip01(v) {
240
+ return Math.max(0, Math.min(1, v));
241
+ }
242
+ /** Bottom-band fraction the render keeps clear for captions per aspect.
243
+ * CAPTION_BAND_RESERVE is the SSOT in @cueframe/composition (imported above). */
244
+ export function captionBandReserve(aspect) {
245
+ return CAPTION_BAND_RESERVE[aspect] ?? 0.0;
246
+ }
247
+ /** Output aspect as width/height (e.g. '9:16' → 0.5625). FAILS LOUD on a
248
+ * malformed aspect — a silent 9/16 default frames every non-vertical render
249
+ * vertically (no-fallbacks rule). Callers pass `composition.format.aspectRatio`,
250
+ * which the Composition validator constrains to a known enum, so a throw here
251
+ * is a genuine drift/bug, never a user-reachable path. */
252
+ export function aspectWhRatio(aspect) {
253
+ const parts = aspect.split(':');
254
+ const w = Number(parts[0]);
255
+ const h = Number(parts[1]);
256
+ if (parts.length !== 2 || !Number.isFinite(w) || !Number.isFinite(h) || w <= 0 || h === 0) {
257
+ throw new Error(`aspectWhRatio: invalid aspect ratio '${aspect}' (expected 'W:H')`);
258
+ }
259
+ return w / h;
260
+ }
261
+ /**
262
+ * The crop window size (source-normalized) for a given `zoom_scale` + output
263
+ * aspect — the bake half of the renderer's `computeCropTransform`: the largest
264
+ * output-aspect rect that fits the source, scaled by the zoom (clamped to
265
+ * [0.4,1.0] like `bakedZoom`). Shared so the cameraPath deadzone (output-crop
266
+ * units) can convert to the source-normalized geometry the regions live in.
267
+ */
268
+ export function cropWindowSizeFor(srcW, srcH, zoomScale, aspect) {
269
+ if (srcW <= 0 || srcH <= 0)
270
+ return { w: 1, h: 1 };
271
+ const outAR = aspectWhRatio(aspect);
272
+ const srcAR = srcW / srcH;
273
+ let cropW;
274
+ let cropH;
275
+ if (srcAR > outAR) {
276
+ cropH = srcH;
277
+ cropW = srcH * outAR;
278
+ }
279
+ else {
280
+ cropW = srcW;
281
+ cropH = srcW / outAR;
282
+ }
283
+ const bakedZoom = Math.max(0.4, Math.min(1.0, zoomScale));
284
+ cropW *= bakedZoom;
285
+ cropH *= bakedZoom;
286
+ return { w: cropW / srcW, h: cropH / srcH };
287
+ }
288
+ /** Return the value at the largest key ≤ `key` (fallback to the smallest key
289
+ * when none precedes; null when empty) — mirror of `_nearest_kp_value`.
290
+ * per-keyframe-speaker is a Map<frameOffset, faceId>. */
291
+ export function nearestKpValue(d, key) {
292
+ if (d.size === 0)
293
+ return null;
294
+ const keys = [...d.keys()];
295
+ const preceding = keys.filter((k) => k <= key);
296
+ if (preceding.length > 0)
297
+ return d.get(Math.max(...preceding)) ?? null;
298
+ return d.get(Math.min(...keys)) ?? null;
299
+ }
300
+ /** Contiguous [startFrame, endFrame) ranges where `faceId` is the active
301
+ * speaker; adjacent same-speaker spans merge — mirror of `_active_windows_for`.
302
+ * Each keyframe pick holds until the next keyframe (last → frameCount). */
303
+ export function activeWindowsFor(faceId, perKeyframeSpeaker, frameCount) {
304
+ if (perKeyframeSpeaker.size === 0)
305
+ return [];
306
+ const kfs = [...perKeyframeSpeaker.keys()].sort((a, b) => a - b);
307
+ const windows = [];
308
+ for (let j = 0; j < kfs.length; j++) {
309
+ const kf = kfs[j];
310
+ if (perKeyframeSpeaker.get(kf) !== faceId)
311
+ continue;
312
+ const start = kf;
313
+ const end = j + 1 < kfs.length ? kfs[j + 1] : frameCount;
314
+ const last = windows[windows.length - 1];
315
+ if (last && last[1] === start)
316
+ last[1] = end;
317
+ else
318
+ windows.push([start, end]);
319
+ }
320
+ return windows;
321
+ }
322
+ /**
323
+ * Build smoothed per-subject normalized face-box series + active windows from
324
+ * the tracker's per-frame `{faceId: [x1,y1,x2,y2]}` (pixel) output. Mirror of
325
+ * reframe_bake.py `_per_subject_series`: stable subject order = first
326
+ * appearance; centers + sizes EMA-smoothed (alpha 0.35) with the same shot-aware
327
+ * reset as the crop centers; frames with no tracked face stay null.
328
+ */
329
+ export function perSubjectSeries(perFrameTracked, srcW, srcH, perKeyframeSpeaker, frameCount, cutFrames) {
330
+ if (srcW <= 0 || srcH <= 0)
331
+ return [];
332
+ // Stable subject order = first appearance across the segment.
333
+ const faceIds = [];
334
+ const seen = new Set();
335
+ for (const tracked of perFrameTracked) {
336
+ for (const fid of Object.keys(tracked)) {
337
+ if (!seen.has(fid)) {
338
+ seen.add(fid);
339
+ faceIds.push(fid);
340
+ }
341
+ }
342
+ }
343
+ const subjects = [];
344
+ for (const fid of faceIds) {
345
+ const centers = new Array(frameCount).fill(null);
346
+ const sizes = new Array(frameCount).fill(null);
347
+ for (let i = 0; i < frameCount; i++) {
348
+ const tracked = i < perFrameTracked.length ? perFrameTracked[i] : {};
349
+ const bbox = tracked[fid];
350
+ if (!bbox || bbox.length < 4)
351
+ continue;
352
+ const [x1, y1, x2, y2] = bbox;
353
+ centers[i] = [(x1 + x2) / 2 / srcW, (y1 + y2) / 2 / srcH];
354
+ sizes[i] = [Math.max(0, x2 - x1) / srcW, Math.max(0, y2 - y1) / srcH];
355
+ }
356
+ const smCenters = emaSmooth(centers, 0.35, cutFrames);
357
+ const smSizes = emaSmooth(sizes, 0.35, cutFrames);
358
+ const boxSeries = [];
359
+ for (let i = 0; i < frameCount; i++) {
360
+ if (centers[i] === null) {
361
+ boxSeries.push(null);
362
+ continue;
363
+ }
364
+ const [cx, cy] = smCenters[i];
365
+ const [w, h] = smSizes[i];
366
+ boxSeries.push([clip01(cx - w / 2), clip01(cy - h / 2), clip01(w), clip01(h)]);
367
+ }
368
+ subjects.push({
369
+ face_id: fid,
370
+ face_box_series: boxSeries,
371
+ active_windows: activeWindowsFor(fid, perKeyframeSpeaker, frameCount),
372
+ });
373
+ }
374
+ return subjects;
375
+ }
376
+ /** §22.1 target face-height fraction of the OUTPUT per editorial shot scale
377
+ * (mirror of reframe_bake.py `_SHOT_SCALE_TARGET`). */
378
+ /**
379
+ * §22.1 (Phase 4): calibrate ZOOM to the DETECTED face for an editorial shot
380
+ * scale. zoom = median(face_h_px)/fit_h / target, clamped [ZOOM_MIN, ZOOM_MAX].
381
+ * shotScale seeds ZOOM ONLY — verticalBias (headroom) is the agent's AUTHORED
382
+ * value, passed through verbatim; it is NEVER overridden here (the floor-vision
383
+ * fix). When the authored fields are omitted: zoom defaults to 1.0 (frame as-is)
384
+ * and headroom to 0 (dead-center, never auto-applied). Falls back to the authored
385
+ * zoom/bias when shotScale is unset or no face was detected.
386
+ *
387
+ * The target table + the clamp live in @cueframe/composition/reframe/shotScale —
388
+ * the SAME module the plan-time punch-in guard reads, so a shotScale the guard
389
+ * admitted and the zoom this bakes can never disagree. Do NOT re-declare them here.
390
+ *
391
+ * NOTE this honors whatever shotScale reaches it. Whether the punch-in was EARNED
392
+ * (is there room around the face? pixels to magnify?) is decided at the plan, by
393
+ * `punchInWarrant` in that same module. A shotScale arriving here that the warrant
394
+ * would refuse is a bug in the guard, not something to re-check.
395
+ */
396
+ export function calibrateShotScale(shotScale, subjects, srcW, srcH, aspect, fallbackZoom, fallbackVbias, authoredSubject) {
397
+ const target = shotScale ? SHOT_SCALE_TARGET[shotScale] : undefined;
398
+ if (target === undefined || srcH <= 0)
399
+ return [fallbackZoom ?? 1.0, fallbackVbias ?? 0];
400
+ const outAr = aspectWhRatio(aspect);
401
+ const srcAr = srcW / srcH;
402
+ const fitH = srcAr > outAr ? srcH : srcW / outAr;
403
+ if (fitH <= 0)
404
+ return [fallbackZoom ?? 1.0, fallbackVbias ?? 0];
405
+ // Pool face heights from the AUTHORED subject only. Pooling every tracked
406
+ // person (the old `for (const s of subjects)`) let the OTHER speaker in a
407
+ // wide two-shot — small, far from camera — drag the median down, flooring
408
+ // `zoom` at 0.4 and over-tightening the crop until the subject's head was
409
+ // clipped (the R3 "head-cropped close-up" bug). The zoom must size to the
410
+ // subject the segment actually frames, not to whoever else is on screen.
411
+ // Non-`face` picks (all-faces / active-speaker / frame-center) have no single
412
+ // authored id, so they keep the full pool. Defensive: if the authored id is
413
+ // absent from the series (shouldn't happen — deriveTrajectory fails loud
414
+ // below MIN_SUBJECT_RESOLUTION first), fall back to all subjects.
415
+ const authoredPool = authoredSubject?.kind === 'face' && authoredSubject.faceId.startsWith('face-')
416
+ ? subjects.filter((s) => s.face_id === authoredSubject.faceId)
417
+ : subjects;
418
+ const pool = authoredPool.some((s) => (s.face_box_series ?? []).some((b) => b !== null))
419
+ ? authoredPool
420
+ : subjects;
421
+ const heights = [];
422
+ for (const s of pool) {
423
+ for (const b of s.face_box_series ?? []) {
424
+ if (b !== null && b.length >= 4)
425
+ heights.push(b[3] * srcH);
426
+ }
427
+ }
428
+ if (heights.length === 0)
429
+ return [fallbackZoom ?? 1.0, fallbackVbias ?? 0];
430
+ heights.sort((a, b) => a - b);
431
+ const medianH = heights[Math.floor(heights.length / 2)];
432
+ const baseFaceFrac = medianH / fitH;
433
+ if (baseFaceFrac <= 0)
434
+ return [fallbackZoom ?? 1.0, fallbackVbias ?? 0];
435
+ const zoom = shotScaleZoom(baseFaceFrac, shotScale);
436
+ // shotScale seeds zoom; headroom is the AUTHORED verticalBias (0 when omitted),
437
+ // never the old hardcoded -0.15 (the floor-vision fix). Phase 4.
438
+ return [zoom, fallbackVbias ?? 0];
439
+ }
440
+ // ── Contract: STAGE A output (the cached source-level subjectTrack) ──────────
441
+ // TrajectorySubject / TrajectorySegment / TrajectoryData are imported + re-exported
442
+ // from @cueframe/composition/reframe/trajectory at the top of this file (the SSOT).
443
+ /**
444
+ * Derive ONE segment's per-frame crop centers + per-subject series from a
445
+ * segment-local slice of the cached track. Mirror of the STAGE B half of
446
+ * reframe_bake.py `_bake_segment` (steps 4–7): per-frame subject filter
447
+ * (active-speaker uses the nearest keyframe pick; otherwise largest/face-N) →
448
+ * shot-aware EMA (alpha 0.35) → holes land at [0.5,0.5] → per-subject series.
449
+ */
450
+ export function deriveSegment(perFrameTracked, srcW, srcH, perKeyframeSpeaker, subject, cutFrames, fps,
451
+ // Output aspect + the segment's zoom — used ONLY by the all-faces cameraPath
452
+ // to size the crop window the deadzone-inclusion gate must keep the subject
453
+ // inside. Optional + trailing so the existing face/point/active-speaker/
454
+ // frame-center callers (and the parity test) are unaffected; the all-faces
455
+ // path falls back to a 9:16 / zoom-1.0 window when omitted (a conservative,
456
+ // wide window — the gate still tracks, just with a slightly larger hold band).
457
+ aspect, zoomScale) {
458
+ const frameCount = perFrameTracked.length;
459
+ // `point` is detection-free: the crop sits at the authored normalized
460
+ // location for every frame of the segment. Screen recordings carry no faces,
461
+ // so the face-resolution loop below would leave every center null and fill
462
+ // [0.5,0.5]; short-circuit to the authored point instead. resolvedFrames =
463
+ // frameCount because the subject is, by construction, present every frame.
464
+ if (subject.kind === 'point') {
465
+ const centers = new Array(frameCount)
466
+ .fill(null)
467
+ .map(() => [subject.x, subject.y]);
468
+ return { centers, subjects: [], resolvedFrames: frameCount };
469
+ }
470
+ // `all-faces` — the CHASE-KILLER (Phase 2) + DEADZONE-GLIDE TRACKING (Phase 3)
471
+ // path. Select a STABLE subject set (per-shot size-aware locked set → segment
472
+ // pool → dominance top-K → per-frame membership hysteresis); subjectSet now
473
+ // emits the per-frame framed-group UNION BOX, which we lower to a per-frame
474
+ // RequiredRegion (the padded box the crop must contain) and feed to cameraPath
475
+ // — the single deadzone-inclusion + Hamming-window stability stage. The camera
476
+ // HOLDS while the group stays inside the safe region of the crop, then GLIDES
477
+ // to re-contain it when it moves (a walking subject is TRACKED, not lost), and
478
+ // never chases per-frame transient micro-motion (the gate's hold band).
479
+ // Mode-isolated: only `all-faces` routes here; every other mode keeps the
480
+ // existing per-frame selectedFaceCenter → emaSmooth path below verbatim. The
481
+ // per-subject `subjects` series the floor reads is still produced by
482
+ // `perSubjectSeries` (unchanged), so this only changes WHERE the camera points.
483
+ // An empty locked set (faceless / crowd-only clip) → center-hold (a defined
484
+ // outcome, not a throw) — selectSubjectSet returns [0.5,0.5] every frame and a
485
+ // null region every frame, which cameraPath turns into a held center.
486
+ if (subject.kind === 'all-faces') {
487
+ const sel = selectSubjectSet(perFrameTracked, srcW, srcH, fps ?? 30, perKeyframeSpeaker, cutFrames ?? new Set());
488
+ // Build the canonical per-frame RequiredRegions (pad + per-shot outlier
489
+ // reject) — THE region the camera must contain — then run the single
490
+ // stability stage. The crop window the deadzone gate must keep the region
491
+ // inside is sized from the segment's authored zoom + output aspect (all-faces
492
+ // has no per-frame eased zoom, so one window per shot is exact).
493
+ const regions = buildRequiredRegions(sel.perFrameBoxes, fps ?? 30, cutFrames ?? new Set());
494
+ // PHASE 5 — automatic zoom-to-fit (ALL modes; all-faces is the headline). Size
495
+ // the crop PER SHOT to CONTAIN the shot-wide padded union of the locked group:
496
+ // a group that fits 9:16 is framed TIGHT (zoom < 1.0), an over-wide group
497
+ // pads-and-holds at zoom 1.0 + emits `overframed`. The min-shot-length floor
498
+ // (framing.ts) holds the zoom across a sub-second montage so it can't strobe.
499
+ // The deadzone-inclusion gate then operates inside this FITTED window (a
500
+ // tighter window has a proportionally tighter hold band — DEADZONE is a
501
+ // fraction of the crop), so the camera frames the zoom-fit group, not a
502
+ // stale wide window.
503
+ const effAspect = aspect ?? '9:16';
504
+ const shotFits = fitZoomPerShot(sel.perFrameBoxes, cutFrames ?? new Set(), srcW, srcH, effAspect, fps ?? 30, frameCount);
505
+ // Map each frame → its shot's fitted crop window (the window the deadzone gate
506
+ // must keep the region inside). Per-shot constant; cameraPath reads it per
507
+ // frame. The shot order matches `fitZoomPerShot` (both use `segmentShots`).
508
+ const shotRanges = segmentShots(cutFrames ?? new Set(), frameCount);
509
+ const winByFrame = new Array(frameCount);
510
+ const fallbackWin = cropWindowSizeFor(srcW, srcH, zoomScale ?? 1.0, effAspect);
511
+ for (let s = 0; s < shotRanges.length; s++) {
512
+ const fit = shotFits[s];
513
+ const win = fit
514
+ ? cropWindowSizeFor(srcW, srcH, fit.zoom, effAspect)
515
+ : fallbackWin;
516
+ for (let i = shotRanges[s].start; i < shotRanges[s].end; i++)
517
+ winByFrame[i] = win;
518
+ }
519
+ const cropFor = (frame) => winByFrame[frame] ?? fallbackWin;
520
+ const centers = cameraPath(regions, cropFor, fps ?? 30, cutFrames ?? new Set(), [0.5, 0.5]);
521
+ const subjects = perSubjectSeries(perFrameTracked, srcW, srcH, perKeyframeSpeaker, frameCount, cutFrames);
522
+ return { centers, subjects, resolvedFrames: sel.resolvedFrames, shotFits };
523
+ }
524
+ // `face` / `active-speaker` — the P4 MIGRATION. These were a per-frame
525
+ // `selectedFaceCenter` → `emaSmooth(0.35)` over a bare CENTROID. They now run the
526
+ // SAME geometric-deadzone path as `all-faces` (a DELIBERATE, re-eval'd behavior
527
+ // change — NOT byte-equivalent): the `topK=1` subjects adapter resolves the
528
+ // single chosen subject's per-frame BOX (its real extent), lowers it to a padded
529
+ // + outlier-rejected RequiredRegion (`buildRequiredRegions`, the same builder
530
+ // all-faces uses), and feeds it to `cameraPath` (the sealed geometric-deadzone
531
+ // stabilizer). The win, characterized in the P4 eval: a moving subject is TRACKED
532
+ // with a tighter intra-shot hold and a real box to contain (smoother + better
533
+ // inclusion than the old point-EMA chase). `frame-center` is the ONLY mode left
534
+ // on the bare centroid path below — it carries NO subject (selectedFaceCenter →
535
+ // null → [0.5,0.5]), so it is pure Lowering with an empty selection, byte-
536
+ // identical to before. `point` short-circuited above.
537
+ if (subject.kind === 'face' || subject.kind === 'active-speaker') {
538
+ const pick = subject.kind === 'face'
539
+ ? { kind: 'face', authoredFaceId: subject.faceId }
540
+ : { kind: 'active-speaker' };
541
+ const single = selectSingleSubjectBoxes(perFrameTracked, srcW, srcH, perKeyframeSpeaker, pick, (frame) => nearestKpValue(perKeyframeSpeaker, frame));
542
+ // Lower the per-frame chosen-subject box → the padded, outlier-rejected
543
+ // RequiredRegion the crop must contain, then run the single deadzone-inclusion
544
+ // + Hamming stability stage. A shot with NO resolved subject center-holds (the
545
+ // documented no-subject outcome; the old emaSmooth instead carried the last
546
+ // face position across an empty shot — a silent hold-last that framed an absent
547
+ // subject; the deadzone path is correct, `feedback_never_add_fallbacks`).
548
+ const regions = buildRequiredRegions(single.perFrameBoxes, fps ?? 30, cutFrames ?? new Set());
549
+ const effAspect = aspect ?? '9:16';
550
+ const win = cropWindowSizeFor(srcW, srcH, zoomScale ?? 1.0, effAspect);
551
+ const centers = cameraPath(regions, () => win, fps ?? 30, cutFrames ?? new Set(), [0.5, 0.5]);
552
+ const subjects = perSubjectSeries(perFrameTracked, srcW, srcH, perKeyframeSpeaker, frameCount, cutFrames);
553
+ return { centers, subjects, resolvedFrames: single.resolvedFrames };
554
+ }
555
+ // `frame-center` — the bare-centroid path (the ONLY remaining EMA caller). It
556
+ // carries no subject: `selectedFaceCenter` returns null every frame, so
557
+ // `emaSmooth` forward-fills [0.5,0.5] — the documented frame-center behavior,
558
+ // byte-identical to before P4.
559
+ const rawCenters = new Array(frameCount).fill(null);
560
+ for (let i = 0; i < frameCount; i++) {
561
+ const tracked = perFrameTracked[i];
562
+ if (!tracked || Object.keys(tracked).length === 0)
563
+ continue;
564
+ const faceDicts = Object.entries(tracked).map(([faceId, b]) => ({
565
+ faceId,
566
+ x: b[0] / srcW,
567
+ y: b[1] / srcH,
568
+ width: (b[2] - b[0]) / srcW,
569
+ height: (b[3] - b[1]) / srcH,
570
+ }));
571
+ rawCenters[i] = selectedFaceCenter(faceDicts, subject);
572
+ }
573
+ // How many frames a subject was ACTUALLY found in (a non-null center). For
574
+ // frame-center this is 0 (no subject) — the resolution gate exempts frame-center.
575
+ const resolvedFrames = rawCenters.reduce((n, c) => (c !== null ? n + 1 : n), 0);
576
+ const smoothed = emaSmooth(rawCenters, 0.35, cutFrames);
577
+ const centers = [];
578
+ for (let i = 0; i < frameCount; i++) {
579
+ const c = i < smoothed.length ? smoothed[i] : null;
580
+ // All-null for frame-center → [0.5,0.5] (the intended center).
581
+ centers.push(c === null ? [0.5, 0.5] : [c[0], c[1]]);
582
+ }
583
+ const subjects = perSubjectSeries(perFrameTracked, srcW, srcH, perKeyframeSpeaker, frameCount, cutFrames);
584
+ return { centers, subjects, resolvedFrames };
585
+ }
586
+ /**
587
+ * Derive the full crop trajectory for a set of authored reframe segments over a
588
+ * cached source-level `subjectTrack` — the cheap per-candidate STAGE B run
589
+ * in-loop before perception. Mirror of reframe_bake.py `_bake_reframe_impl`'s
590
+ * segment loop: per segment, slice the window-local track to the segment's
591
+ * frame range, rebase the keyframe picks, derive centers + subjects, then
592
+ * calibrate zoom/vbias (§22.1) — emitting the `TrajectoryData` the render reads.
593
+ *
594
+ * Segment times are CLIP-RELATIVE and index the subjectTrack directly (the track
595
+ * is detected over the clip's source window, frame 0 = window start). FAILS LOUD
596
+ * when a specific-face segment resolves in too few frames — the symptom of
597
+ * tracker ID fragmentation, which used to be hidden by a silent frame-center
598
+ * fallback (the R3 "crop on nothing" bug).
599
+ */
600
+ /**
601
+ * Map a reframe `Focus` → the internal `Subject` the derive math consumes
602
+ * (mode→kind, same variants). `shotScale` lives ONLY on the `face` focus
603
+ * variant in the reframe model; the loop reads it off the focus separately
604
+ * (it is NOT part of `Subject`). Pure rename — no behavior change.
605
+ */
606
+ function focusToSubject(focus) {
607
+ switch (focus.mode) {
608
+ case 'face':
609
+ return { kind: 'face', faceId: focus.faceId };
610
+ case 'point':
611
+ return { kind: 'point', x: focus.x, y: focus.y };
612
+ case 'all-faces':
613
+ return { kind: 'all-faces' };
614
+ case 'frame-center':
615
+ return { kind: 'frame-center' };
616
+ case 'active-speaker':
617
+ return { kind: 'active-speaker' };
618
+ }
619
+ }
620
+ /** Frame-rounding tolerance for the sub-shot tiling assertion. Sub-shot bounds
621
+ * are integer frame indices into the segment slice, so a legitimate tiling has
622
+ * ZERO gap; the tolerance (< 1 frame) only absorbs a future float-bound rounding
623
+ * drift, never a real dropped sub-shot (which is ≥ 1 frame). NOT a float `==`
624
+ * (the first-draft bug that would false-throw on rounding). */
625
+ const FRAME_ROUNDING_TOLERANCE = 0.5;
626
+ /** Build the `trajectory_internal_gap` fail-loud error (registered, category
627
+ * `internal`) for a sub-shot non-tiling within one authored segment. */
628
+ function internalGap(seg, segIdx, detail) {
629
+ return new Error(encodeError(new CueframeError('trajectory_internal_gap', `authored segment ${segIdx} [${seg.startSec}–${seg.endSec}s]: sub-shots do not tile the segment — ${detail}. ` +
630
+ `A dropped sub-shot leaves an internal coverage gap the render would only catch downstream.`, { segment: [seg.startSec, seg.endSec], segIdx, detail })));
631
+ }
632
+ export function deriveTrajectory(track, segments, aspect, bakeVersion,
633
+ // D10 (P5 4b): true when the source is AI-GENERATED media
634
+ // (`mediaItems.mediaSource === "generated"`). PURE param — the function never
635
+ // reads Convex / the row; the activity resolves the flag and threads it here.
636
+ // It changes ONLY which error a subject-mode resolution failure throws: a
637
+ // generated clip emits the DISTINCT `subject_detection_failed_on_generated`
638
+ // (the agent should use a GEOMETRIC reframe on faceless b-roll) instead of the
639
+ // generic `subject_not_tracked`. The non-generated path is byte-for-byte
640
+ // unchanged (the flag defaults false). Subject modes are face /
641
+ // active-speaker / all-faces; frame-center / point are geometric and exempt.
642
+ isGenerated = false) {
643
+ const fps = track.srcFps;
644
+ const perKf = new Map(Object.entries(track.perKeyframeSpeaker).map(([k, v]) => [Number(k), v]));
645
+ const out = [];
646
+ const trackLen = track.perFrameTracked.length;
647
+ // Window-local frame indices where a new shot begins (detector cuts). Absent
648
+ // on tracks from the pre-shots detector — the derivation then degrades to the
649
+ // jump-threshold inference (unchanged behavior).
650
+ const winCuts = track.shotBoundaries ?? [];
651
+ for (let idx = 0; idx < segments.length; idx++) {
652
+ const seg = segments[idx];
653
+ // Map the reframe segment onto the internal derive inputs — pure rename,
654
+ // identical math. focus→Subject; shotScale rides the `face` focus variant;
655
+ // zoom→fallbackZoom (default 1 = frame as-is); bias.y→verticalBias,
656
+ // bias.x→lateralBias (both default 0 when bias is absent).
657
+ const subject = focusToSubject(seg.focus);
658
+ const shotScale = seg.focus.mode === 'face' ? seg.focus.shotScale : undefined;
659
+ const zoomScale = seg.zoom;
660
+ // A `point`-focus segment with BOTH `ease` and `bias` is a Ken-Burns PAN
661
+ // (kenBurnsToReframe): `bias` is the pan ORIGIN offset and the motion is
662
+ // expressed as a per-frame CENTER ramp (buildPannedCenters), NOT a constant
663
+ // crop-window bias. So zero the crop bias for a pan — otherwise the pan would
664
+ // ALSO carry a static lateral shift. All other segments map bias verbatim.
665
+ const isEasedPan = seg.focus.mode === 'point' && !!seg.ease && !!seg.bias;
666
+ const verticalBias = isEasedPan ? 0 : seg.bias?.y;
667
+ const lateralBias = isEasedPan ? 0 : seg.bias?.x ?? 0;
668
+ // Clamp the segment's frame range to the cached track's extent. The detect
669
+ // window is meant to cover the whole clip, but a rounding overrun or a
670
+ // tail-shot read-failure can push segEnd past the track; without the clamp
671
+ // an over-range slice silently truncates and the render holds the last
672
+ // center for the uncovered tail. A fully-past segment (segStart ≥ trackLen)
673
+ // clamps to zero length and is skipped explicitly (review finding #5).
674
+ const segStart = Math.min(Math.round(seg.startSec * fps), trackLen);
675
+ const segEnd = Math.min(Math.round(seg.endSec * fps), trackLen);
676
+ if (segEnd - segStart <= 0)
677
+ continue;
678
+ const segPerFrame = track.perFrameTracked.slice(segStart, segEnd);
679
+ // Rebase the window-local keyframe picks into segment-local offsets.
680
+ const segKf = new Map();
681
+ for (const [k, v] of perKf) {
682
+ if (k >= segStart && k < segEnd)
683
+ segKf.set(k - segStart, v);
684
+ }
685
+ // Rebase the window-local shot cuts into segment-local offsets. Only cuts
686
+ // STRICTLY inside the segment are interior resets; a cut at segStart is the
687
+ // segment's own fresh start (frame 0 has no prior to blend), and a cut at
688
+ // segEnd belongs to the next segment.
689
+ const segCuts = new Set();
690
+ for (const b of winCuts) {
691
+ if (b > segStart && b < segEnd)
692
+ segCuts.add(b - segStart);
693
+ }
694
+ const { centers, subjects, resolvedFrames, shotFits } = deriveSegment(segPerFrame, track.srcW, track.srcH, segKf, subject, segCuts, fps,
695
+ // The all-faces cameraPath sizes its deadzone-inclusion crop window from
696
+ // the output aspect + the segment's authored zoom (default 1.0). Other
697
+ // modes ignore these. Per-shot zoom calibration (below) is `face`-only, so
698
+ // the all-faces window matches the emitted `zoom_scale` for every sub-shot.
699
+ aspect, zoomScale);
700
+ if (centers.length === 0)
701
+ continue;
702
+ // D10 (P5 4b) — GENERATED footage fails loud on ANY under-resolved SUBJECT
703
+ // mode (face / active-speaker / all-faces). AI-generated b-roll often carries
704
+ // no detectable faces; a subject-mode reframe on it would silently center-hold
705
+ // on nobody. Throw a DISTINCT `subject_detection_failed_on_generated` (vs the
706
+ // generic `subject_not_tracked`) so the driving agent learns the corrective
707
+ // action is a GEOMETRIC reframe (frame-center / point — exempt below), not a
708
+ // re-detect. This branch is ONLY taken when `isGenerated` is true, so the
709
+ // uploaded path is untouched. `point`/`frame-center` are detection-free
710
+ // (resolvedFrames is geometric) and never enter this block.
711
+ if (isGenerated &&
712
+ (subject.kind === 'face' ||
713
+ subject.kind === 'active-speaker' ||
714
+ subject.kind === 'all-faces')) {
715
+ const rate = resolvedFrames / (segEnd - segStart);
716
+ if (rate < MIN_SUBJECT_RESOLUTION) {
717
+ throw new Error(encodeError(new CueframeError('subject_detection_failed_on_generated', `segment [${seg.startSec}–${seg.endSec}s] authored subject mode '${subject.kind}'` +
718
+ (subject.kind === 'face' ? ` (face '${subject.faceId}')` : '') +
719
+ ` resolved in only ${resolvedFrames}/${segEnd - segStart} frames ` +
720
+ `(${(rate * 100).toFixed(0)}%) on AI-GENERATED media — generated b-roll carries ` +
721
+ `no detectable subject for this reframe. Use a GEOMETRIC reframe (frame-center or ` +
722
+ `point) on generated footage instead of a subject-tracking mode.`, {
723
+ mode: subject.kind,
724
+ ...(subject.kind === 'face' ? { faceId: subject.faceId } : {}),
725
+ resolvedFrames,
726
+ totalFrames: segEnd - segStart,
727
+ segment: [seg.startSec, seg.endSec],
728
+ })));
729
+ }
730
+ }
731
+ // FAIL LOUD on an unresolvable authored face (no silent frame-center
732
+ // fallback). When the agent authors `subject: {faceId}` but that id is
733
+ // tracked in < MIN_SUBJECT_RESOLUTION of the segment's frames, the crop
734
+ // would silently sit at frame-center on nobody — the R3 bug. A real subject
735
+ // is present for most of the segment it's authored over; <40% means the
736
+ // per-frame tracker isn't carrying that identity (ID fragmentation), which
737
+ // must surface, not ship. frame-center / all-faces / active-speaker don't
738
+ // require a persistent specific id and are exempt. (The generated path above
739
+ // already short-circuited for `isGenerated`; this is the UNCHANGED uploaded
740
+ // gate.)
741
+ if (subject.kind === 'face') {
742
+ const rate = resolvedFrames / (segEnd - segStart);
743
+ if (rate < MIN_SUBJECT_RESOLUTION) {
744
+ throw new Error(encodeError(new CueframeError('subject_not_tracked', `segment [${seg.startSec}–${seg.endSec}s] authored subject face ` +
745
+ `'${subject.faceId}' resolved in only ${resolvedFrames}/${segEnd - segStart} frames ` +
746
+ `(${(rate * 100).toFixed(0)}%) — the per-frame tracker does not carry this identity ` +
747
+ `across the segment (ID fragmentation). Refusing to ship a frame-centered crop on no subject.`, {
748
+ faceId: subject.faceId,
749
+ resolvedFrames,
750
+ totalFrames: segEnd - segStart,
751
+ segment: [seg.startSec, seg.endSec],
752
+ })));
753
+ }
754
+ }
755
+ // PER-SHOT zoom: split the authored segment at EVERY interior shot cut and
756
+ // calibrate zoom independently per sub-shot. The agent authors ONE shotScale
757
+ // across a segment that may MIX a close-up and a wide two-shot; a single
758
+ // segment-wide zoom is then too loose for the wide shot, so the subject sits
759
+ // small against the couch/backdrop (the R3 "couch frames"). Per-shot zoom
760
+ // sizes the subject to target in EVERY shot — a deliberate punch-in at the
761
+ // cut. Splitting at every detected cut (no minimum-length filter) also makes
762
+ // a cut that lands a few frames inside a segment — e.g. when the agent's
763
+ // authored boundary sits just before the real visual cut — fall on its own
764
+ // sub-shot with the correct (wide) zoom, instead of wearing the next shot's
765
+ // zoom for those frames (the cut "flash"). `segCuts` already excludes the
766
+ // segment's own start/end (b>segStart && b<segEnd), so every interior cut is a
767
+ // real within-segment shot change; zero-length spans are dropped below.
768
+ // Centers + each subject's face-box series are sliced and re-based to the
769
+ // sub-shot's frame 0 so the render's resolveSegmentAt (which indexes by
770
+ // `srcFrame - round(start_sec*fps)`) lands on the right frame.
771
+ const segLen = segEnd - segStart;
772
+ const interior = [...segCuts].sort((a, b) => a - b);
773
+ const bounds = [0, ...interior, segLen];
774
+ // Collect the EMITTED (non-skipped) sub-shot frame-spans for this authored
775
+ // segment, so we can assert (after the loop) that they TILE [0, segLen) — a
776
+ // sub-shot silently dropped (a future regression) would leave an internal gap
777
+ // the render's coverage guard only catches downstream. See the tiling
778
+ // assertion below (`trajectory_internal_gap`).
779
+ const emittedSpans = [];
780
+ // The per-sub-shot index (incremented only on a NON-skipped span) aligns 1:1
781
+ // with `shotFits` — both the bounds loop here and `framing.fitZoomPerShot`
782
+ // enumerate the SAME `segmentShots(segCuts, segLen)` ranges (same cut set,
783
+ // same zero-length drop, same order), so `shotFits[shotIdx]` is THIS sub-shot's
784
+ // automatic fit (Phase 5). `shotFits` is emitted ONLY for all-faces.
785
+ let shotIdx = 0;
786
+ for (let k = 0; k < bounds.length - 1; k++) {
787
+ const a = bounds[k];
788
+ const b = bounds[k + 1];
789
+ // EXEMPT skip-path: a zero-length sub-shot span (a cut landing on a segment
790
+ // boundary, or two coincident cuts) emits nothing — a legitimate drop, not
791
+ // an internal gap. Not recorded in emittedSpans (the tiling assertion treats
792
+ // these as measure-zero, per the spec's skip-path exemption).
793
+ if (b - a <= 0)
794
+ continue;
795
+ emittedSpans.push([a, b]);
796
+ const thisShot = shotIdx;
797
+ shotIdx++;
798
+ const subSubjects = subjects.map((s) => ({
799
+ face_id: s.face_id,
800
+ face_box_series: s.face_box_series.slice(a, b),
801
+ active_windows: s.active_windows
802
+ .map(([ws, we]) => [Math.max(ws, a) - a, Math.min(we, b) - a])
803
+ .filter(([ws, we]) => we > ws),
804
+ }));
805
+ // ZOOM source: `all-faces` uses the automatic zoom-to-fit (Phase 5) — size
806
+ // the crop to CONTAIN the shot-wide locked-group union (zoom < 1.0 when it
807
+ // fits) or pad-and-hold at 1.0 + flag `overframed` when the group is wider
808
+ // than the aspect. Every OTHER mode keeps `calibrateShotScale` (the
809
+ // editorial `shotScale` zoom for `face`/`active-speaker`, the authored
810
+ // fallback elsewhere) — byte-identical to before Phase 5.
811
+ const allFacesFit = subject.kind === 'all-faces' ? shotFits?.[thisShot] : undefined;
812
+ const [zoom, vbias] = allFacesFit
813
+ ? [allFacesFit.zoom, verticalBias ?? 0]
814
+ : calibrateShotScale(shotScale, subSubjects, track.srcW, track.srcH, aspect, zoomScale, verticalBias, subject);
815
+ const overframed = allFacesFit?.overframed === true;
816
+ const subLen = b - a;
817
+ // Eased centers (Ken-Burns PAN): ramp the per-frame center from the pan
818
+ // origin (point + bias) to the authored point over this sub-shot's ease-in.
819
+ const subCenters = isEasedPan && seg.focus.mode === 'point'
820
+ ? buildPannedCenters(subLen, fps, [seg.focus.x, seg.focus.y], [seg.bias?.x ?? 0, seg.bias?.y ?? 0], seg.ease?.in ?? 0)
821
+ : centers.slice(a, b);
822
+ // Per-frame `zooms` — ADDITIVE, emitted ONLY for an eased segment (the
823
+ // Ken-Burns / image ramp). The ramp holds at the calibrated `zoom` and
824
+ // sweeps to/from full-frame (1.0) at the eased edges. A segment with no
825
+ // `ease` omits this entirely → scalar `zoom_scale` path → byte-identical
826
+ // face/video parity.
827
+ const zooms = seg.ease
828
+ ? buildEasedZooms(subLen, fps, zoom, seg.ease.in, seg.ease.out)
829
+ : undefined;
830
+ out.push({
831
+ idx: out.length,
832
+ // Frame-based off the SNAPPED segStart (not the authored seg.startSec) so
833
+ // the segment times line up with the cut-aligned slice the render reads.
834
+ start_sec: (segStart + a) / fps,
835
+ end_sec: (segStart + b) / fps,
836
+ zoom_scale: zoom,
837
+ vertical_bias: vbias,
838
+ lateral_bias: lateralBias,
839
+ centers: subCenters,
840
+ subjects: subSubjects,
841
+ caption_band_reserve: captionBandReserve(aspect),
842
+ ...(zooms ? { zooms } : {}),
843
+ // Emit the DERIVED `overframed` outcome ONLY when true (an all-faces
844
+ // sub-shot whose group is wider than the aspect). Omitted (undefined) on
845
+ // a fitting group and every other mode, so the field never appears unless
846
+ // it is the documented widest-honest-frame case — keeps the trajectory
847
+ // JSON minimal and the golden diff scoped to real over-wide shots.
848
+ ...(overframed ? { overframed: true } : {}),
849
+ });
850
+ }
851
+ // ── trajectory_internal_gap: the sub-shots of THIS authored segment must
852
+ // TILE [0, segLen) (reframe spec Phase 6). A sub-shot silently dropped (a
853
+ // future regression in the bounds/skip logic) would leave an internal gap the
854
+ // render's coverage guard only catches downstream at render. Frame-rounding
855
+ // tolerance (NOT float ==): assert each emitted span's end meets the next
856
+ // span's start within FRAME_ROUNDING_TOLERANCE, and that the spans span
857
+ // [0, segLen). Skip-path-exempt: zero-length sub-shots are never recorded
858
+ // (measure zero); a segment that emitted NOTHING (every sub-shot skipped —
859
+ // e.g. all-zero-length, or the `centers.length===0`/`segLen<=0` upstream
860
+ // continues) is also exempt (no sub-shot to gap against). Cross-AUTHORED-
861
+ // segment gaps (real excludedRanges between segments) are out of scope — this
862
+ // asserts ONLY within one authored segment's sub-shots.
863
+ if (emittedSpans.length > 0) {
864
+ const sorted = [...emittedSpans].sort((x, y) => x[0] - y[0]);
865
+ // Leading coverage: the first sub-shot starts at frame 0 of the segment.
866
+ if (Math.abs(sorted[0][0]) > FRAME_ROUNDING_TOLERANCE) {
867
+ throw internalGap(seg, idx, `first sub-shot starts at frame ${sorted[0][0]}, not 0`);
868
+ }
869
+ // Trailing coverage: the last sub-shot ends at segLen.
870
+ if (Math.abs(sorted[sorted.length - 1][1] - segLen) > FRAME_ROUNDING_TOLERANCE) {
871
+ throw internalGap(seg, idx, `last sub-shot ends at frame ${sorted[sorted.length - 1][1]}, not ${segLen}`);
872
+ }
873
+ // Interior coverage: each span's end meets the next span's start.
874
+ for (let s = 0; s < sorted.length - 1; s++) {
875
+ if (sorted[s + 1][0] - sorted[s][1] > FRAME_ROUNDING_TOLERANCE) {
876
+ throw internalGap(seg, idx, `gap between sub-shot ending at frame ${sorted[s][1]} and next starting at ${sorted[s + 1][0]}`);
877
+ }
878
+ }
879
+ }
880
+ }
881
+ return {
882
+ bake_version: bakeVersion,
883
+ aspect,
884
+ src_w: track.srcW,
885
+ src_h: track.srcH,
886
+ src_fps: fps,
887
+ segments: out,
888
+ };
889
+ }