@cueframe/kernel 0.1.1 → 0.1.3

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 (506) hide show
  1. package/dist/_members/account-model/testing/conversationStoreContract.d.ts +0 -59
  2. package/dist/_members/account-model/testing/index.d.ts +0 -5
  3. package/dist/_members/account-model/testing/restorePointStoreContract.d.ts +0 -24
  4. package/dist/_members/account-model/validators/contextFile.d.ts +0 -6
  5. package/dist/_members/account-model/validators/conversation.d.ts +0 -96
  6. package/dist/_members/account-model/validators/dashboardInsight.d.ts +0 -6
  7. package/dist/_members/account-model/validators/sessionToken.d.ts +0 -29
  8. package/dist/_members/account-model/validators/uploadToken.d.ts +0 -4
  9. package/dist/_members/account-model/validators/userSettings.d.ts +0 -4
  10. package/dist/_members/account-model/validators/workingComposition.d.ts +0 -7
  11. package/dist/_members/animate/animations/Create.d.ts +0 -19
  12. package/dist/_members/animate/animations/FadeIn.d.ts +0 -17
  13. package/dist/_members/animate/animations/GrowArrow.d.ts +0 -19
  14. package/dist/_members/animate/animations/GrowFromCenter.d.ts +0 -12
  15. package/dist/_members/animate/animations/Indicate.d.ts +0 -17
  16. package/dist/_members/animate/animations/MoveAlongPath.d.ts +0 -18
  17. package/dist/_members/animate/animations/Transform.d.ts +0 -28
  18. package/dist/_members/animate/animations/Wiggle.d.ts +0 -18
  19. package/dist/_members/animate/animations/Write.d.ts +0 -20
  20. package/dist/_members/animate/composition/AnimationGroup.d.ts +0 -21
  21. package/dist/_members/animate/composition/LaggedStart.d.ts +0 -22
  22. package/dist/_members/animate/composition/Succession.d.ts +0 -17
  23. package/dist/_members/animate/easing/rush.d.ts +0 -14
  24. package/dist/_members/animate/easing/smooth.d.ts +0 -7
  25. package/dist/_members/animate/easing/smootherstep.d.ts +0 -6
  26. package/dist/_members/animate/index.d.ts +0 -2
  27. package/dist/_members/animate/mobjects/Arrow.d.ts +0 -25
  28. package/dist/_members/animate/mobjects/BrandBox.d.ts +0 -25
  29. package/dist/_members/animate/mobjects/DiGraph.d.ts +0 -18
  30. package/dist/_members/animate/mobjects/Graph.d.ts +0 -38
  31. package/dist/_members/animate/three/ThreeCanvas.d.ts +0 -23
  32. package/dist/_members/animate/three/drei.d.ts +0 -7
  33. package/dist/_members/authoring/agent/buildTools.d.ts +0 -37
  34. package/dist/_members/authoring/agent/contextManagement.d.ts +0 -65
  35. package/dist/_members/authoring/agent/errors.d.ts +0 -9
  36. package/dist/_members/authoring/agent/memoryTool.d.ts +0 -2
  37. package/dist/_members/authoring/agent/promptCache.d.ts +0 -31
  38. package/dist/_members/authoring/agent.d.ts +0 -34
  39. package/dist/_members/authoring/capabilities.d.ts +0 -145
  40. package/dist/_members/authoring/composer/scopes.d.ts +0 -19
  41. package/dist/_members/authoring/context/brand.d.ts +0 -4
  42. package/dist/_members/authoring/context/brandTokens.d.ts +0 -4
  43. package/dist/_members/authoring/context/index.d.ts +0 -1
  44. package/dist/_members/authoring/context/timeline.d.ts +0 -15
  45. package/dist/_members/authoring/context/transcript.d.ts +0 -11
  46. package/dist/_members/authoring/context/types.d.ts +0 -4
  47. package/dist/_members/authoring/decomposer.d.ts +0 -12
  48. package/dist/_members/authoring/evaluate.d.ts +0 -26
  49. package/dist/_members/authoring/evaluator.d.ts +0 -16
  50. package/dist/_members/authoring/index.d.ts +1 -1
  51. package/dist/_members/authoring/models/modelFactory.d.ts +0 -77
  52. package/dist/_members/authoring/motion/applyMotionPreset.d.ts +0 -12
  53. package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +0 -7
  54. package/dist/_members/authoring/motion/shell.d.ts +0 -20
  55. package/dist/_members/authoring/pipelineTrace.d.ts +0 -19
  56. package/dist/_members/authoring/prompts/decomposerPrompt.d.ts +0 -4
  57. package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +0 -16
  58. package/dist/_members/authoring/prompts/evaluatorPrompt.d.ts +0 -4
  59. package/dist/_members/authoring/prompts/graphics.d.ts +0 -5
  60. package/dist/_members/authoring/prompts/index.d.ts +0 -1
  61. package/dist/_members/authoring/prompts/plannerPrompt.d.ts +0 -30
  62. package/dist/_members/authoring/providers/resourceApi.d.ts +1 -20
  63. package/dist/_members/authoring/resource-routing.d.ts +0 -121
  64. package/dist/_members/authoring/resources.d.ts +0 -34
  65. package/dist/_members/authoring/scope.d.ts +0 -24
  66. package/dist/_members/authoring/tools/brandTokens.d.ts +0 -22
  67. package/dist/_members/authoring/tools/composeRoleTools.d.ts +0 -79
  68. package/dist/_members/authoring/tools/index.d.ts +0 -1
  69. package/dist/_members/authoring/tools/toolSets.d.ts +0 -50
  70. package/dist/_members/authoring/transpileComponent.d.ts +0 -34
  71. package/dist/_members/authoring/transpileHelper.d.ts +0 -18
  72. package/dist/_members/authoring/types.d.ts +0 -149
  73. package/dist/_members/brand-derivation/constants.d.ts +0 -17
  74. package/dist/_members/brand-derivation/contrastSafe.d.ts +0 -23
  75. package/dist/_members/cloud-import/CloudImportService.d.ts +0 -15
  76. package/dist/_members/cloud-import/ImportProvider.d.ts +0 -45
  77. package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +0 -9
  78. package/dist/_members/cloud-import/cloudConfig.d.ts +0 -15
  79. package/dist/_members/compose/CompositionRenderer.d.ts +0 -6
  80. package/dist/_members/compose/primitiveRegistry.d.ts +0 -64
  81. package/dist/_members/compose/sceneToRenderInput.d.ts +0 -26
  82. package/dist/_members/compose/schema.d.ts +0 -15
  83. package/dist/_members/compose/tokenResolver.d.ts +0 -11
  84. package/dist/_members/composition/audio/audioMix.d.ts +0 -34
  85. package/dist/_members/composition/audio/mixStaging.d.ts +0 -81
  86. package/dist/_members/composition/audio/musicPack.d.ts +0 -35
  87. package/dist/_members/composition/audio/musicPack.generated.d.ts +0 -6
  88. package/dist/_members/composition/audio/pack.d.ts +0 -43
  89. package/dist/_members/composition/audio/pack.generated.d.ts +0 -6
  90. package/dist/_members/composition/audio/palette.d.ts +0 -36
  91. package/dist/_members/composition/autozoom/index.d.ts +0 -32
  92. package/dist/_members/composition/brand-kit.d.ts +0 -8
  93. package/dist/_members/composition/brief/contract.d.ts +0 -90
  94. package/dist/_members/composition/color-grade.d.ts +0 -11
  95. package/dist/_members/composition/depth.d.ts +0 -19
  96. package/dist/_members/composition/fixtures/agentErrored.d.ts +0 -23
  97. package/dist/_members/composition/fonts.d.ts +0 -62
  98. package/dist/_members/composition/graphics-plan/compile.d.ts +0 -29
  99. package/dist/_members/composition/graphics-plan/index.d.ts +0 -5
  100. package/dist/_members/composition/graphics-plan/instantiateMotif.d.ts +0 -17
  101. package/dist/_members/composition/graphics-plan/motion.d.ts +0 -17
  102. package/dist/_members/composition/graphics-plan/schemas.d.ts +0 -171
  103. package/dist/_members/composition/graphics-plan/solve.d.ts +0 -19
  104. package/dist/_members/composition/invariants/clipPlacement.d.ts +0 -59
  105. package/dist/_members/composition/invariants/composition.d.ts +0 -5
  106. package/dist/_members/composition/invariants/etag.d.ts +0 -7
  107. package/dist/_members/composition/invariants/ids.d.ts +0 -6
  108. package/dist/_members/composition/invariants/keyframes.d.ts +0 -19
  109. package/dist/_members/composition/invariants/markers.d.ts +0 -6
  110. package/dist/_members/composition/invariants/time.d.ts +0 -8
  111. package/dist/_members/composition/invariants/tracks.d.ts +0 -48
  112. package/dist/_members/composition/ops/compositionOps.d.ts +4 -71
  113. package/dist/_members/composition/ops/compositionOps.shared.d.ts +30 -0
  114. package/dist/_members/composition/ops/headlessStore.d.ts +0 -24
  115. package/dist/_members/composition/ops/selectors.d.ts +0 -66
  116. package/dist/_members/composition/ops/timeline-word.d.ts +0 -5
  117. package/dist/_members/composition/ops/transcript.d.ts +0 -27
  118. package/dist/_members/composition/ops/types.d.ts +0 -51
  119. package/dist/_members/composition/primitive-catalog/catalogQuery.d.ts +0 -32
  120. package/dist/_members/composition/primitive-catalog/disabled.d.ts +0 -1
  121. package/dist/_members/composition/primitive-catalog/index.d.ts +0 -11
  122. package/dist/_members/composition/primitive-catalog/paramValidation.d.ts +0 -50
  123. package/dist/_members/composition/primitive-catalog/projection.d.ts +0 -39
  124. package/dist/_members/composition/primitive-catalog/types.d.ts +0 -78
  125. package/dist/_members/composition/projection/behind-placement.d.ts +0 -40
  126. package/dist/_members/composition/projection/behind-readiness.d.ts +14 -89
  127. package/dist/_members/composition/projection/brandKit.d.ts +0 -142
  128. package/dist/_members/composition/projection/cardTokens.d.ts +0 -65
  129. package/dist/_members/composition/projection/composition-floor.d.ts +0 -179
  130. package/dist/_members/composition/projection/cropProjection.d.ts +0 -75
  131. package/dist/_members/composition/projection/occlusion-budget.d.ts +0 -37
  132. package/dist/_members/composition/projection/reframe-readiness.d.ts +4 -111
  133. package/dist/_members/composition/projection/safe-zones.d.ts +0 -29
  134. package/dist/_members/composition/reframe/aspectLoss.d.ts +12 -35
  135. package/dist/_members/composition/reframe/coverage.d.ts +0 -40
  136. package/dist/_members/composition/reframe/derive.d.ts +0 -21
  137. package/dist/_members/composition/reframe/index.d.ts +0 -60
  138. package/dist/_members/composition/reframe/kenBurns.d.ts +0 -37
  139. package/dist/_members/composition/reframe/shotScale.d.ts +0 -75
  140. package/dist/_members/composition/reframe/trajectory.d.ts +0 -65
  141. package/dist/_members/composition/timeline/compound.d.ts +0 -31
  142. package/dist/_members/composition/timeline/intent.d.ts +0 -29
  143. package/dist/_members/composition/timeline/keyframes.d.ts +0 -43
  144. package/dist/_members/composition/timeline/link.d.ts +0 -27
  145. package/dist/_members/composition/timeline/occupancy.d.ts +1 -42
  146. package/dist/_members/composition/timeline/placement.d.ts +5 -52
  147. package/dist/_members/composition/timeline/plan.d.ts +5 -53
  148. package/dist/_members/composition/timeline/resolve.d.ts +0 -36
  149. package/dist/_members/composition/timeline/trims.d.ts +0 -49
  150. package/dist/_members/composition/validators/brandKit.d.ts +0 -29
  151. package/dist/_members/composition/validators/composePlan.d.ts +0 -39
  152. package/dist/_members/composition/validators/composition.d.ts +30 -513
  153. package/dist/_members/composition/validators/graphicKinds.d.ts +0 -28
  154. package/dist/_members/composition/validators/render.d.ts +23 -23
  155. package/dist/_members/composition-ops/alphaLayers.d.ts +0 -56
  156. package/dist/_members/composition-ops/index.d.ts +27 -148
  157. package/dist/_members/composition-ops/materializeGrid.d.ts +0 -28
  158. package/dist/_members/composition-ops/opRecorder.d.ts +0 -34
  159. package/dist/_members/composition-ops/recordingStore.d.ts +0 -16
  160. package/dist/_members/composition-ops/replaceRegion.d.ts +0 -48
  161. package/dist/_members/composition-ops/testFixtures.d.ts +0 -14
  162. package/dist/_members/convex-api/api.generated.d.ts +1444 -0
  163. package/dist/_members/convex-api/dataModel.d.ts +1 -1
  164. package/dist/_members/core/index.d.ts +1 -1
  165. package/dist/_members/core/render/bookends.d.ts +0 -44
  166. package/dist/_members/core/render/captions.d.ts +0 -42
  167. package/dist/_members/core/render/compositionRender.d.ts +1 -180
  168. package/dist/_members/core/render/deriveTrajectory.d.ts +0 -140
  169. package/dist/_members/core/render/emphasis.d.ts +0 -6
  170. package/dist/_members/core/render/eval/cropBox.d.ts +0 -69
  171. package/dist/_members/core/render/eval/inclusion.d.ts +0 -39
  172. package/dist/_members/core/render/eval/index.d.ts +0 -58
  173. package/dist/_members/core/render/eval/metrics.d.ts +0 -36
  174. package/dist/_members/core/render/exportSettings.d.ts +4 -12
  175. package/dist/_members/core/render/index.d.ts +1 -1
  176. package/dist/_members/core/render/mapFaceToPerson.d.ts +0 -27
  177. package/dist/_members/core/render/types.d.ts +1 -184
  178. package/dist/_members/core/render/variantKeys.d.ts +1 -0
  179. package/dist/_members/core/render/vcam/cameraPath.d.ts +0 -44
  180. package/dist/_members/core/render/vcam/constants.d.ts +0 -93
  181. package/dist/_members/core/render/vcam/errorCodes.d.ts +0 -28
  182. package/dist/_members/core/render/vcam/framing.d.ts +0 -76
  183. package/dist/_members/core/render/vcam/requiredRegion.d.ts +0 -71
  184. package/dist/_members/core/render/vcam/shots.d.ts +0 -40
  185. package/dist/_members/core/render/vcam/subjectSet.d.ts +0 -85
  186. package/dist/_members/core/select/errorCodes.d.ts +0 -25
  187. package/dist/_members/core/select/index.d.ts +0 -20
  188. package/dist/_members/core/select/model.d.ts +0 -79
  189. package/dist/_members/core/select/select.d.ts +0 -49
  190. package/dist/_members/core/select/stabilize.d.ts +0 -102
  191. package/dist/_members/core/types.d.ts +0 -1
  192. package/dist/_members/director/ai-sdk/chunks.d.ts +14 -0
  193. package/dist/_members/director/ai-sdk/context.d.ts +6 -0
  194. package/dist/_members/director/ai-sdk/generationTool.d.ts +8 -0
  195. package/dist/_members/director/ai-sdk/index.d.ts +4 -0
  196. package/dist/_members/director/ai-sdk/messages.d.ts +292 -0
  197. package/dist/_members/director/domain/chat.d.ts +357 -0
  198. package/dist/_members/director/domain/generation.d.ts +1 -0
  199. package/dist/_members/director/domain/index.d.ts +3 -0
  200. package/dist/_members/director/domain/ports.d.ts +32 -0
  201. package/dist/_members/director/index.d.ts +2 -0
  202. package/dist/_members/director/testing/contract.d.ts +52 -0
  203. package/dist/_members/director/testing/index.d.ts +1 -0
  204. package/dist/_members/errors/registry.d.ts +103 -33
  205. package/dist/_members/foundation/codes/index.d.ts +0 -21
  206. package/dist/_members/mcp/adapter.d.ts +1 -84
  207. package/dist/_members/mcp/burnedNames.d.ts +0 -16
  208. package/dist/_members/mcp/core.d.ts +2 -82
  209. package/dist/_members/mcp/curation.d.ts +0 -112
  210. package/dist/_members/mcp/executor.d.ts +0 -49
  211. package/dist/_members/mcp/format.d.ts +0 -6
  212. package/dist/_members/mcp/generated/catalogPreviews.d.ts +0 -1
  213. package/dist/_members/mcp/generated/harness.d.ts +1 -1
  214. package/dist/_members/mcp/generated/operations.d.ts +1 -12
  215. package/dist/_members/mcp/internalLoopTools.d.ts +0 -23
  216. package/dist/_members/mcp/prompts.d.ts +0 -16
  217. package/dist/_members/mcp/resources.d.ts +0 -13
  218. package/dist/_members/mcp/server.d.ts +0 -61
  219. package/dist/_members/mcp/wait.d.ts +1 -23
  220. package/dist/_members/mcp/x402Meta.d.ts +0 -44
  221. package/dist/_members/media-model/generation.d.ts +314 -0
  222. package/dist/_members/media-model/index.d.ts +1 -0
  223. package/dist/_members/media-model/media-kind.d.ts +0 -27
  224. package/dist/_members/media-model/transcriptSearch.d.ts +0 -42
  225. package/dist/_members/nle-export/fcpxml.d.ts +0 -13
  226. package/dist/_members/nle-export/index.d.ts +0 -6
  227. package/dist/_members/nle-export/types.d.ts +0 -26
  228. package/dist/_members/nle-export/xml/index.d.ts +0 -8
  229. package/dist/_members/nle-export/xml-utils.d.ts +0 -12
  230. package/dist/_members/perception/activeSpeaker.d.ts +0 -94
  231. package/dist/_members/perception/audioQuality.d.ts +0 -64
  232. package/dist/_members/perception/energyBeat.d.ts +0 -81
  233. package/dist/_members/perception/identityMatch.d.ts +0 -66
  234. package/dist/_members/perception/index.d.ts +0 -52
  235. package/dist/_members/perception/visualQuality.d.ts +0 -73
  236. package/dist/_members/plane/conformance.d.ts +0 -59
  237. package/dist/_members/plane/contract.d.ts +0 -29
  238. package/dist/_members/plane/index.d.ts +0 -15
  239. package/dist/_members/primitives/backgrounds/animated-bar-chart/index.d.ts +0 -13
  240. package/dist/_members/primitives/backgrounds/animated-line-chart/index.d.ts +0 -14
  241. package/dist/_members/primitives/backgrounds/dither-gradient-bg/index.d.ts +0 -14
  242. package/dist/_members/primitives/backgrounds/dynamic-grid/index.d.ts +0 -8
  243. package/dist/_members/primitives/backgrounds/ecosystem-constellation/index.d.ts +0 -8
  244. package/dist/_members/primitives/backgrounds/infinite-marquee/index.d.ts +0 -8
  245. package/dist/_members/primitives/backgrounds/mesh-gradient-bg/index.d.ts +0 -8
  246. package/dist/_members/primitives/backgrounds/perspective-marquee/index.d.ts +0 -8
  247. package/dist/_members/primitives/backgrounds/silk-flow-bg/index.d.ts +0 -17
  248. package/dist/_members/primitives/backgrounds/vector-field/index.d.ts +0 -14
  249. package/dist/_members/primitives/backgrounds/volumetric-rays/index.d.ts +0 -18
  250. package/dist/_members/primitives/captions/Captions.d.ts +0 -24
  251. package/dist/_members/primitives/captions/index.d.ts +0 -15
  252. package/dist/_members/primitives/captions/paginate.d.ts +0 -21
  253. package/dist/_members/primitives/captions/placement.d.ts +0 -30
  254. package/dist/_members/primitives/effects/blur/index.d.ts +0 -16
  255. package/dist/_members/primitives/effects/color-grade/index.d.ts +0 -20
  256. package/dist/_members/primitives/effects/grain/index.d.ts +0 -12
  257. package/dist/_members/primitives/effects/parallax/index.d.ts +0 -13
  258. package/dist/_members/primitives/effects/particles/index.d.ts +0 -16
  259. package/dist/_members/primitives/effects/pulsing-indicator/index.d.ts +0 -10
  260. package/dist/_members/primitives/effects/spotlight-card/index.d.ts +0 -8
  261. package/dist/_members/primitives/effects/spring-pop-in/index.d.ts +0 -10
  262. package/dist/_members/primitives/effects/success-confetti/index.d.ts +0 -8
  263. package/dist/_members/primitives/effects/vignette/index.d.ts +0 -12
  264. package/dist/_members/primitives/hero-text/HeroText.d.ts +0 -17
  265. package/dist/_members/primitives/hero-text/config.d.ts +0 -10
  266. package/dist/_members/primitives/hero-text/index.d.ts +0 -14
  267. package/dist/_members/primitives/index.d.ts +0 -8
  268. package/dist/_members/primitives/layouts/chat-to-preview-layout/index.d.ts +0 -8
  269. package/dist/_members/primitives/layouts/infinite-bento-pan/index.d.ts +0 -8
  270. package/dist/_members/primitives/layouts/letterbox/index.d.ts +0 -15
  271. package/dist/_members/primitives/layouts/photo-grid/index.d.ts +0 -17
  272. package/dist/_members/primitives/layouts/picture-in-picture/index.d.ts +0 -21
  273. package/dist/_members/primitives/layouts/split-screen/index.d.ts +0 -15
  274. package/dist/_members/primitives/layouts/staggered-bento-grid/index.d.ts +0 -8
  275. package/dist/_members/primitives/lib/easings.d.ts +0 -27
  276. package/dist/_members/primitives/lib/palette.d.ts +0 -22
  277. package/dist/_members/primitives/lib/preview.d.ts +0 -22
  278. package/dist/_members/primitives/lib/schema.d.ts +0 -36
  279. package/dist/_members/primitives/lib/seeded-random.d.ts +0 -23
  280. package/dist/_members/primitives/lib/text/contrast.d.ts +0 -17
  281. package/dist/_members/primitives/lib/text/fill.d.ts +0 -5
  282. package/dist/_members/primitives/lib/text/fitText.d.ts +0 -37
  283. package/dist/_members/primitives/lib/text/marker.d.ts +0 -10
  284. package/dist/_members/primitives/lib/text/motion.d.ts +0 -46
  285. package/dist/_members/primitives/lib/text/recolor.d.ts +0 -11
  286. package/dist/_members/primitives/lib/text/spec.d.ts +0 -39
  287. package/dist/_members/primitives/lib/text/stage.d.ts +0 -17
  288. package/dist/_members/primitives/lib/text/typeface.d.ts +0 -11
  289. package/dist/_members/primitives/lib/tokens.d.ts +0 -87
  290. package/dist/_members/primitives/lib/types.d.ts +0 -141
  291. package/dist/_members/primitives/scenes/changelog-bite/index.d.ts +0 -12
  292. package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +0 -8
  293. package/dist/_members/primitives/scenes/landing-code-showcase/index.d.ts +0 -8
  294. package/dist/_members/primitives/scenes/live-code-compilation/index.d.ts +0 -8
  295. package/dist/_members/primitives/scenes/pricing-tier-focus/index.d.ts +0 -8
  296. package/dist/_members/primitives/scenes/product-launch-trailer/index.d.ts +0 -8
  297. package/dist/_members/primitives/scenes/terminal-to-browser-deploy/index.d.ts +0 -8
  298. package/dist/_members/primitives/subject-foreground/SubjectForeground.d.ts +0 -38
  299. package/dist/_members/primitives/subject-foreground/index.d.ts +0 -21
  300. package/dist/_members/primitives/text/blur-reveal/index.d.ts +0 -9
  301. package/dist/_members/primitives/text/cinematic-title/index.d.ts +0 -14
  302. package/dist/_members/primitives/text/inline-highlight/index.d.ts +0 -11
  303. package/dist/_members/primitives/text/karaoke/index.d.ts +0 -13
  304. package/dist/_members/primitives/text/kinetic-type/index.d.ts +0 -15
  305. package/dist/_members/primitives/text/lower-third/index.d.ts +0 -14
  306. package/dist/_members/primitives/text/marker-highlight/index.d.ts +0 -10
  307. package/dist/_members/primitives/text/masked-slide-reveal/index.d.ts +0 -8
  308. package/dist/_members/primitives/text/matrix-decode/index.d.ts +0 -9
  309. package/dist/_members/primitives/text/quote-card/index.d.ts +0 -9
  310. package/dist/_members/primitives/text/rgb-glitch-text/index.d.ts +0 -13
  311. package/dist/_members/primitives/text/shimmer-sweep/index.d.ts +0 -10
  312. package/dist/_members/primitives/text/slot-machine-roll/index.d.ts +0 -8
  313. package/dist/_members/primitives/text/staggered-fade-up/index.d.ts +0 -12
  314. package/dist/_members/primitives/text/stat-counter/index.d.ts +0 -13
  315. package/dist/_members/primitives/text/strikethrough-replace/index.d.ts +0 -9
  316. package/dist/_members/primitives/text/text-effect/index.d.ts +0 -17
  317. package/dist/_members/primitives/text/text-fade-replace/index.d.ts +0 -8
  318. package/dist/_members/primitives/text/token-stream/index.d.ts +0 -11
  319. package/dist/_members/primitives/text/tracking-in/index.d.ts +0 -8
  320. package/dist/_members/primitives/text/typewriter/index.d.ts +0 -12
  321. package/dist/_members/primitives/transitions/chromatic-aberration-wipe/index.d.ts +0 -11
  322. package/dist/_members/primitives/transitions/code-diff-wipe/index.d.ts +0 -8
  323. package/dist/_members/primitives/transitions/directional-wipe/index.d.ts +0 -10
  324. package/dist/_members/primitives/transitions/frosted-glass-wipe/index.d.ts +0 -10
  325. package/dist/_members/primitives/transitions/glitch-cut/index.d.ts +0 -3
  326. package/dist/_members/primitives/transitions/grid-pixelate-wipe/index.d.ts +0 -14
  327. package/dist/_members/primitives/transitions/ink-wipe/index.d.ts +0 -3
  328. package/dist/_members/primitives/transitions/kinetic-type-mask/index.d.ts +0 -12
  329. package/dist/_members/primitives/transitions/light-leak/index.d.ts +0 -3
  330. package/dist/_members/primitives/transitions/luma-matte/index.d.ts +0 -2
  331. package/dist/_members/primitives/transitions/morph/index.d.ts +0 -2
  332. package/dist/_members/primitives/transitions/spatial-push/index.d.ts +0 -10
  333. package/dist/_members/primitives/transitions/swipe-transition-wipe/index.d.ts +0 -13
  334. package/dist/_members/primitives/transitions/zoom-through/index.d.ts +0 -2
  335. package/dist/_members/primitives/transitions/zoom-through-transition/index.d.ts +0 -9
  336. package/dist/_members/primitives/ui-blocks/ai-generate-overlay/index.d.ts +0 -8
  337. package/dist/_members/primitives/ui-blocks/ai-generation-canvas/index.d.ts +0 -8
  338. package/dist/_members/primitives/ui-blocks/badge-pop/index.d.ts +0 -11
  339. package/dist/_members/primitives/ui-blocks/before-after-slider/index.d.ts +0 -11
  340. package/dist/_members/primitives/ui-blocks/benchmark-bars/index.d.ts +0 -11
  341. package/dist/_members/primitives/ui-blocks/bounding-box-selector/index.d.ts +0 -8
  342. package/dist/_members/primitives/ui-blocks/browser-flow/index.d.ts +0 -8
  343. package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/index.d.ts +0 -18
  344. package/dist/_members/primitives/ui-blocks/chat-exchange/index.d.ts +0 -10
  345. package/dist/_members/primitives/ui-blocks/code-accordion/index.d.ts +0 -8
  346. package/dist/_members/primitives/ui-blocks/context-meter/index.d.ts +0 -11
  347. package/dist/_members/primitives/ui-blocks/cursor-flow/index.d.ts +0 -11
  348. package/dist/_members/primitives/ui-blocks/dashboard-populate/index.d.ts +0 -8
  349. package/dist/_members/primitives/ui-blocks/data-flow-pipes/index.d.ts +0 -9
  350. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +0 -8
  351. package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/index.d.ts +0 -8
  352. package/dist/_members/primitives/ui-blocks/eval-scorecard/index.d.ts +0 -11
  353. package/dist/_members/primitives/ui-blocks/glass-code-block/index.d.ts +0 -8
  354. package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/index.d.ts +0 -8
  355. package/dist/_members/primitives/ui-blocks/metric-gauge/index.d.ts +0 -12
  356. package/dist/_members/primitives/ui-blocks/morphing-modal/index.d.ts +0 -8
  357. package/dist/_members/primitives/ui-blocks/pipeline-journey/index.d.ts +0 -8
  358. package/dist/_members/primitives/ui-blocks/progress-steps/index.d.ts +0 -8
  359. package/dist/_members/primitives/ui-blocks/reasoning-trace/index.d.ts +0 -10
  360. package/dist/_members/primitives/ui-blocks/simulated-cursor/index.d.ts +0 -8
  361. package/dist/_members/primitives/ui-blocks/terminal-simulator/index.d.ts +0 -19
  362. package/dist/_members/primitives/ui-blocks/toast-notification/index.d.ts +0 -8
  363. package/dist/_members/primitives/ui-blocks/tool-call-stack/index.d.ts +0 -8
  364. package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/index.d.ts +0 -8
  365. package/dist/_members/primitives/ui-blocks/visual-docs-snippet/index.d.ts +0 -8
  366. package/dist/_members/primitives/ui-blocks/voice-waveform/index.d.ts +0 -11
  367. package/dist/_members/primitives/workspace.d.ts +0 -29
  368. package/dist/_members/render-harness/browserOptions.d.ts +11 -0
  369. package/dist/_members/render-harness/browserOptions.d.ts.map +1 -0
  370. package/dist/_members/render-harness/cardRender.d.ts +0 -40
  371. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  372. package/dist/_members/render-harness/contractRender.d.ts +0 -16
  373. package/dist/_members/render-harness/contractRender.d.ts.map +1 -1
  374. package/dist/_members/render-harness/extractSegments.d.ts +0 -37
  375. package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
  376. package/dist/_members/render-harness/index.d.ts +0 -12
  377. package/dist/_members/render-harness/index.d.ts.map +1 -1
  378. package/dist/_members/render-harness/localRender.d.ts +1 -110
  379. package/dist/_members/render-harness/localRender.d.ts.map +1 -1
  380. package/dist/_members/render-harness/materializeSources.d.ts +0 -22
  381. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  382. package/dist/_members/render-harness/mediaServer.d.ts +0 -16
  383. package/dist/_members/render-harness/mediaServer.d.ts.map +1 -1
  384. package/dist/_members/render-harness/remotion-runtime.d.ts +53 -0
  385. package/dist/_members/render-harness/renderInputAssets.d.ts +0 -45
  386. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  387. package/dist/_members/render-harness/resolveAssets.d.ts +0 -24
  388. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  389. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +0 -14
  390. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +1 -1
  391. package/dist/account-model/validators.js +1 -1
  392. package/dist/account-model.js +1 -1
  393. package/dist/animate.js +0 -15
  394. package/dist/authoring/build-tools.js +8 -8
  395. package/dist/authoring/composer.js +0 -20
  396. package/dist/authoring/context.js +6 -6
  397. package/dist/authoring/pipelineTrace.js +1 -1
  398. package/dist/authoring/prompts.js +1 -5
  399. package/dist/authoring/resource-routing.js +1 -1
  400. package/dist/authoring/resources.js +1 -1
  401. package/dist/authoring/tools.js +7 -7
  402. package/dist/authoring.js +14 -84
  403. package/dist/{chunk-TWQOKKAF.js → chunk-23HFEKV7.js} +0 -6
  404. package/dist/{chunk-EA6MYCYW.js → chunk-2B5VJZHL.js} +14 -25
  405. package/dist/chunk-73DQTUWY.js +131 -0
  406. package/dist/chunk-AW57IWNW.js +272 -0
  407. package/dist/chunk-BADZHXLR.js +0 -0
  408. package/dist/{chunk-GA23TRNR.js → chunk-BKHGL4MB.js} +5 -13
  409. package/dist/{chunk-PDYO3DOJ.js → chunk-BZZTVOGG.js} +6 -55
  410. package/dist/{chunk-7FO3ZJ43.js → chunk-DCVJWGIA.js} +1 -9
  411. package/dist/{chunk-HI4UTTPS.js → chunk-DJW3UGBH.js} +41 -72
  412. package/dist/{chunk-SIGGQRY2.js → chunk-DL7WYISQ.js} +5291 -4419
  413. package/dist/{chunk-AQBREB5O.js → chunk-DWLNPNC4.js} +1 -4
  414. package/dist/{chunk-SW336CJP.js → chunk-DYZE7JZA.js} +3 -26
  415. package/dist/{chunk-HCCBDJLW.js → chunk-EP2Y6M2J.js} +0 -4
  416. package/dist/{chunk-ZE76SSRT.js → chunk-FMODQD5P.js} +0 -6
  417. package/dist/chunk-FTVZF4GO.js +0 -0
  418. package/dist/{chunk-PMY24FUD.js → chunk-G5BFI32U.js} +1 -1
  419. package/dist/{chunk-LD5ZOUFT.js → chunk-GF52TW4I.js} +0 -4
  420. package/dist/{chunk-JJ6XD7NG.js → chunk-GIA2SVVB.js} +70 -2
  421. package/dist/{chunk-ABL557OT.js → chunk-GMD33ZD7.js} +1 -8
  422. package/dist/{chunk-AP6ZIVAV.js → chunk-HBVAZXYO.js} +17 -17
  423. package/dist/{chunk-UY4SWJVE.js → chunk-HFC3MKXA.js} +0 -63
  424. package/dist/{chunk-ZWMV6DD2.js → chunk-ICSZF37W.js} +10 -162
  425. package/dist/chunk-IEXAKOEX.js +113 -0
  426. package/dist/{chunk-RF7U3SCL.js → chunk-KFECIHED.js} +29 -26
  427. package/dist/{chunk-DK2ODBNT.js → chunk-NQSMEUJ6.js} +16 -98
  428. package/dist/{chunk-YX2GSJK7.js → chunk-RP4SXXLJ.js} +1 -1
  429. package/dist/{chunk-P727GZVO.js → chunk-SAMQUUO5.js} +3 -5
  430. package/dist/{chunk-MMEJ3Y7E.js → chunk-SDCEJAO2.js} +97 -23
  431. package/dist/{chunk-TOJEXFXL.js → chunk-TFGKUWHY.js} +1 -88
  432. package/dist/chunk-TMB5AY6Q.js +146 -0
  433. package/dist/chunk-TO4BFNLJ.js +93 -0
  434. package/dist/{chunk-UHGSZZDI.js → chunk-TPA6PYN2.js} +1 -11
  435. package/dist/{chunk-MBCXCJOE.js → chunk-TXSFYUZH.js} +1 -1
  436. package/dist/{chunk-OLFOPQCA.js → chunk-UQSOS726.js} +4 -18
  437. package/dist/{chunk-GBRNYH7W.js → chunk-V24L35GM.js} +0 -11
  438. package/dist/{chunk-JMURQODM.js → chunk-VZ7TYX6Z.js} +0 -1
  439. package/dist/{chunk-W35ZMOXB.js → chunk-WPZKOVYF.js} +0 -5
  440. package/dist/chunk-WZH57M53.js +494 -0
  441. package/dist/{chunk-AYVJXDLB.js → chunk-XHGZ2E77.js} +0 -2
  442. package/dist/{chunk-7DHP4ESU.js → chunk-YLDMAZZE.js} +0 -10
  443. package/dist/{chunk-FYZVH3MC.js → chunk-YQ7FFW3G.js} +0 -11
  444. package/dist/{chunk-HY3RIEZW.js → chunk-ZPRBGW4Y.js} +1 -1
  445. package/dist/cloud-import/multipart.js +1 -1
  446. package/dist/cloud-import.js +9 -16
  447. package/dist/compose/renderer.js +18 -18
  448. package/dist/compose.js +21 -21
  449. package/dist/composition/audio.js +1 -1
  450. package/dist/composition/brand-kit.js +0 -5
  451. package/dist/composition/graphics-plan.js +4 -4
  452. package/dist/composition/ops.js +5 -5
  453. package/dist/composition/primitive-catalog.js +1 -1
  454. package/dist/composition/projection.js +11 -3
  455. package/dist/composition/reframe/kenBurns.js +0 -4
  456. package/dist/composition/reframe.js +4 -2
  457. package/dist/composition/timeline.js +1 -1
  458. package/dist/composition/validators/graphic-kinds.js +1 -1
  459. package/dist/composition/validators.js +4 -4
  460. package/dist/composition-ops.js +16 -135
  461. package/dist/composition.js +15 -7
  462. package/dist/context-JLLU3MYD.js +14 -0
  463. package/dist/core/render.js +9 -7
  464. package/dist/core/select.js +2 -6
  465. package/dist/core.js +5 -7
  466. package/dist/director/ai-sdk.d.ts +1 -0
  467. package/dist/director/ai-sdk.js +33 -0
  468. package/dist/director/domain.d.ts +1 -0
  469. package/dist/director/domain.js +62 -0
  470. package/dist/director/testing.d.ts +1 -0
  471. package/dist/director/testing.js +22 -0
  472. package/dist/director.d.ts +1 -0
  473. package/dist/director.js +86 -0
  474. package/dist/errors.js +1 -1
  475. package/dist/foundation.js +1 -0
  476. package/dist/mcp/adapter.js +45 -75
  477. package/dist/mcp/core.js +1 -1
  478. package/dist/mcp/curation.js +1 -1
  479. package/dist/mcp/server.js +4 -4
  480. package/dist/mcp.js +4 -4
  481. package/dist/media-model/generation.d.ts +1 -0
  482. package/dist/media-model/generation.js +40 -0
  483. package/dist/media-model/testing.js +6 -6
  484. package/dist/media-model.js +38 -6
  485. package/dist/nle-export.js +21 -21
  486. package/dist/plane/contract.js +0 -3
  487. package/dist/primitives/backgrounds.js +2 -2
  488. package/dist/primitives/captions.js +0 -5
  489. package/dist/primitives/effects.js +2 -2
  490. package/dist/primitives/hero-text.js +2 -2
  491. package/dist/primitives/layouts.js +2 -2
  492. package/dist/primitives/lib/index.js +17 -17
  493. package/dist/primitives/lib/text/fitText.js +1 -1
  494. package/dist/primitives/lib/tokens.js +1 -1
  495. package/dist/primitives/lib.js +17 -17
  496. package/dist/primitives/scenes.js +2 -2
  497. package/dist/primitives/text.js +2 -2
  498. package/dist/primitives/ui-blocks.js +4 -4
  499. package/dist/primitives.js +21 -21
  500. package/dist/render-harness/sandboxGlobalSpecs.js +1 -1
  501. package/dist/render-harness.js +24 -41
  502. package/package.json +38 -21
  503. package/dist/chunk-6EQXLEP6.js +0 -194
  504. package/dist/chunk-OCFDUCF4.js +0 -504
  505. package/dist/chunk-PODIYN2K.js +0 -742
  506. package/dist/context-YWUZDG5X.js +0 -14
@@ -2,5 +2,5 @@ import type { GenericId } from "convex/values";
2
2
  import type { SystemTableNames } from "convex/server";
3
3
  /** Table NAMES only — the vendored surface deliberately omits document
4
4
  * shapes (Doc/DataModel). Public consumers use exclusively `Id<...>`. */
5
- export type TableNames = "agentMessages" | "agentThreads" | "apiAuditLog" | "billingPlanState" | "brandKits" | "briefs" | "checkpoints" | "clips" | "clipSuggestionRuns" | "componentVersions" | "composeJobs" | "compositionEvents" | "compositionRuns" | "compositions" | "compositionVersions" | "contextFiles" | "conversations" | "corrections" | "critics" | "dashboardInsights" | "directorProfiles" | "directorWorkflows" | "enrichmentCandidates" | "exports" | "idempotencyKeys" | "installedComponents" | "jobs" | "markers" | "mediaItems" | "mediaUnderstanding" | "overlays" | "pricingPolicy" | "processingEvents" | "projects" | "providerStates" | "renderJobs" | "resourceQueryCache" | "resourceRateBuckets" | "restorePoints" | "runs" | "searchQueries" | "sessions" | "sessionTokens" | "settings" | "socialAccounts" | "socialInsights" | "socialMediaItems" | "templateEmbeddings" | "templates" | "timelineClips" | "tracks" | "transcripts" | "uploadTokens" | "usageEvents" | "userSettings" | "videoChunkEmbeddings" | "webhookDeliveries" | "webhookProjectUpdateDebounce" | "webhooks" | "x402Payments";
5
+ export type TableNames = "agentMessages" | "agentThreads" | "apiAuditLog" | "billingPlanState" | "brandKits" | "briefs" | "checkpoints" | "clips" | "clipSuggestionRuns" | "componentVersions" | "composeJobs" | "compositionEvents" | "compositionRuns" | "compositions" | "compositionVersions" | "contextFiles" | "conversations" | "corrections" | "critics" | "dashboardInsights" | "directorProfiles" | "directorWorkflows" | "enrichmentCandidates" | "exports" | "idempotencyKeys" | "installedComponents" | "jobs" | "markers" | "mediaFactRequests" | "mediaFacts" | "mediaItems" | "mediaUnderstanding" | "orgGatewayKeys" | "overlays" | "pricingPolicy" | "processingEvents" | "projects" | "providerStates" | "renderJobs" | "sightedJobSnapshots" | "resourceQueryCache" | "resourceRateBuckets" | "restorePoints" | "runs" | "searchQueries" | "sessions" | "sessionTokens" | "settings" | "socialAccounts" | "socialInsights" | "socialMediaItems" | "templateEmbeddings" | "templates" | "timelineClips" | "tracks" | "transcripts" | "uploadTokens" | "usageEvents" | "userSettings" | "videoChunkEmbeddings" | "webhookDeliveries" | "webhookProjectUpdateDebounce" | "webhooks" | "x402Payments";
6
6
  export type Id<TableName extends TableNames | SystemTableNames> = GenericId<TableName>;
@@ -1,3 +1,3 @@
1
1
  export * from './types.js';
2
- export { buildEmphasisSet, isEmphasized, extractCaptionWordsFromDoc, DEFAULT_FPS, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_RENDER_SETTINGS, FORMAT_PRESETS, RESOLUTION_PRESETS, bppToCrf, computeExportDimensions, ensureEven, } from './render/index.js';
2
+ export { buildEmphasisSet, isEmphasized, extractCaptionWordsFromDoc, DEFAULT_FPS, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_RENDER_SETTINGS, FORMAT_PRESETS, RESOLUTION_PRESETS, bppToCrf, ensureEven, } from './render/index.js';
3
3
  export type { RenderInput, CompositionClip, CompositionOverlay, CompositionAudioTrack, CaptionWord, CaptionStyle, EmphasisWord, DocNode, ExportFormat, ExportQuality, ExportResolution, FormatPreset, RenderSettings, } from './render/index.js';
@@ -1,60 +1,16 @@
1
- /**
2
- * Brand intro/outro BOOKEND timeline math — pure, fps-driven, never throws.
3
- *
4
- * Phase 2 of the brand-consistent demo pipeline: when the resolved brand kit
5
- * carries an `intro`/`outro` bumper, the render prepends the intro and appends
6
- * the outro to the body composition. This module owns the ONE timeline
7
- * calculation both sides of the render share:
8
- *
9
- * - `compositionToRenderInput` (this package) reads it FORWARD — body duration
10
- * in, extended total out — to size the Remotion composition's
11
- * `durationInFrames`.
12
- * - `MainComposition` (cueframe renderer) reads `bookendFrames` to place the
13
- * intro at frame 0, shift the body forward by the intro, and append the
14
- * outro — so the math can't diverge between "how long is the video" and
15
- * "where does each piece sit."
16
- *
17
- * SOFT by construction (mirrors the brand cascade's "never crash the render"
18
- * rule): a missing/odd bumper, a video bumper with no source, or a non-positive
19
- * fps yields 0 reserved frames — no bookend, never a throw, never negative.
20
- * Fail-loud belongs at BrandKit PUT-time validation, not render-time placement.
21
- */
22
1
  import type { ResolvedBrandKit } from "../../composition/projection/index.js";
23
- /** Card bumper default length when the kit didn't set one (mirrors the resolver). */
24
2
  export declare const CARD_BOOKEND_DEFAULT_MS = 1500;
25
- /**
26
- * Video bumper fallback length when the kit set no `durationMs`. The resolver
27
- * forces no default for `kind:'video'` ("clip length governs"), but the pure
28
- * timeline math can't probe the clip's intrinsic length, so the renderer
29
- * reserves this deterministic window. A kit that sets `durationMs` overrides it.
30
- */
31
3
  export declare const VIDEO_BOOKEND_DEFAULT_MS = 3000;
32
4
  type Bumper = NonNullable<ResolvedBrandKit["intro"]>;
33
- /**
34
- * Frames a single intro/outro bumper reserves on the timeline, or 0 when it is
35
- * absent/odd (soft). `card` always reserves (defaults to 1.5s); `video` reserves
36
- * only with a usable `src` (else there is nothing to play).
37
- */
38
5
  export declare function bookendFrames(bumper: ResolvedBrandKit["intro"] | undefined, fps: number): number;
39
6
  export interface BookendTimeline {
40
- /** Frames the intro reserves at the head (0 = no intro). */
41
7
  introFrames: number;
42
- /** Frames the outro reserves at the tail (0 = no outro). */
43
8
  outroFrames: number;
44
- /** First body frame on the extended timeline (= introFrames). */
45
9
  bodyStartFrames: number;
46
- /** Body length in frames — unchanged from the un-bookended timeline. */
47
10
  bodyFrames: number;
48
- /** First outro frame (= introFrames + bodyFrames). */
49
11
  outroStartFrames: number;
50
- /** Extended composition total: intro + body + outro. */
51
12
  totalFrames: number;
52
13
  }
53
- /**
54
- * Forward timeline math: given the resolved kit's bumpers and the body's frame
55
- * length, place the bookends and compute the extended total. fps-driven; a
56
- * non-positive body folds to 0 (the total is then just the bookends).
57
- */
58
14
  export declare function resolveBookendTimeline(brandKit: {
59
15
  intro?: ResolvedBrandKit["intro"];
60
16
  outro?: ResolvedBrandKit["outro"];
@@ -1,11 +1,5 @@
1
1
  import type { CaptionWord } from './types.js';
2
2
  import type { EmphasisWord } from './emphasis.js';
3
- /**
4
- * Word-timed transcript utterance — minimal shape covering Deepgram /
5
- * AssemblyAI / legacy-Whisper outputs. Times are seconds (provider
6
- * convention); the slicer rebases to milliseconds for the Captions
7
- * primitive.
8
- */
9
3
  export interface TranscriptUtterance {
10
4
  speaker?: string | null;
11
5
  text?: string;
@@ -18,48 +12,12 @@ export interface TranscriptUtterance {
18
12
  confidence?: number;
19
13
  }>;
20
14
  }
21
- /**
22
- * Slice a transcript's word stream to a clip window.
23
- *
24
- * Source: `utterances[].words[]` with second-precision `start` / `end`.
25
- * Output: `CaptionWord[]` with millisecond timings rebased so the
26
- * first word's `startMs` is 0 (relative to the clip, not the source).
27
- * Words wholly outside `[fromSec, toSec)` are dropped; words that
28
- * straddle either edge are clamped to the boundary.
29
- *
30
- * Pure function — no I/O, no DB. Caller fetches the transcript blob
31
- * (typically from R2) and feeds the parsed `utterances` here.
32
- */
33
15
  export declare function sliceTranscriptWords(utterances: TranscriptUtterance[], fromSec: number, toSec: number): CaptionWord[];
34
- /** ProseMirror/TipTap document node — generic to avoid @tiptap/core dependency. */
35
16
  export interface DocNode {
36
17
  type?: string;
37
18
  text?: string;
38
19
  attrs?: Record<string, unknown>;
39
20
  content?: DocNode[];
40
21
  }
41
- /**
42
- * Walk a TipTap doc JSONContent and extract non-deleted timedWord nodes
43
- * as CaptionWord[].
44
- *
45
- * In v2 the wire-shape composition encodes cuts physically (clip
46
- * startTime/duration), so caption timings are taken straight off the
47
- * timedWord attrs without any deletion-range shift.
48
- *
49
- * This makes the ProseMirror doc the single source of truth for caption text,
50
- * instead of re-reading raw Whisper transcripts.
51
- */
52
22
  export declare function extractCaptionWordsFromDoc(doc: DocNode, emphasisWords: EmphasisWord[]): CaptionWord[];
53
- /**
54
- * Group a flat word stream into sentence-bounded segments — start a new segment
55
- * after any word that ends a sentence (`isSentenceEnd`). Caption words carry
56
- * punctuation from Deepgram's `punctuated_word`, so the trailing-character test
57
- * is reliable; abbreviations and initialisms are guarded so they don't
58
- * false-split mid-sentence.
59
- *
60
- * This is how a raw transcript slice becomes `composition.captions.segments`:
61
- * the renderer treats each segment as a hard caption-page boundary, so
62
- * sentence-bounded segments make captions cut at sentence ends. A stream with
63
- * no terminal punctuation yields a single segment; an empty stream yields none.
64
- */
65
23
  export declare function splitIntoSentences(words: CaptionWord[]): CaptionWord[][];
@@ -1,88 +1,12 @@
1
- /**
2
- * Wire-shape `Composition` → `RenderInput` translator.
3
- *
4
- * `Composition` is the canonical multi-track wire shape from
5
- * `@cueframe/composition`. It crosses the API boundary
6
- * (PUT /v1/projects/:id/composition), gets snapshotted onto
7
- * `renderJobs.composition`, and is what the Remotion worker reads
8
- * before kicking off a render.
9
- *
10
- * This module is the single bridge from that wire shape to the
11
- * frame-based `RenderInput` Remotion consumes:
12
- *
13
- * {format, tracks[]: [{kind, contents[]: TimelineClip[]}]}
14
- * ↓
15
- * compositionToRenderInput(composition, srcUrls)
16
- * ↓
17
- * { clips, overlays, audioTracks, effects, width, height, fps,
18
- * durationInFrames }
19
- *
20
- * Track-kind handling:
21
- * - `video` → `CompositionClip[]`. Each clip's wire startTime/duration
22
- * map to timelineStartFrames/durationInFrames; `source.trim`'s
23
- * source-relative seconds map to sourceInFrames/sourceOutFrames.
24
- * Clips on multiple video tracks layer in track order (z-order
25
- * follows the wire array).
26
- * - `audio` → `CompositionAudioTrack[]`. `source.volumeDb` (if set)
27
- * converts to linear gain via `10^(dB/20)`; `source.fadeInMs` /
28
- * `source.fadeOutMs` convert to frames.
29
- * - `image` → `CompositionClip[]` with `mediaType: 'image'`. Stills
30
- * have no source timeline (sourceIn/Out are zero); `source.kenBurns`
31
- * flows through as a convenience that the renderer's <StillCrop> lowers
32
- * to a `reframe` (kenBurnsToReframe) and runs through the UNIFIED crop
33
- * renderer, so a still gets the same per-frame point-zoom video does.
34
- * Sub-frame durations are dropped (would crash Remotion's <Sequence>).
35
- * - `overlay` → `CompositionOverlay[]`. Wire `source.primitiveId`
36
- * becomes `template`; `source.params` flow through to the renderer.
37
- * - `effect` → `CompositionEffect[]` with `target.kind: 'global'`,
38
- * scoped to the effect clip's wire start/duration.
39
- *
40
- * `srcUrls` is a `mediaId → presigned URL` map. The caller (Temporal
41
- * activity) pre-signs every unique mediaId before calling this. A
42
- * referenced mediaId missing from `srcUrls` throws — silent fallbacks
43
- * are forbidden (the v0 path's silent-fallback bug class).
44
- */
45
1
  import type { Composition, Format } from "../../composition/validators/index.js";
46
2
  import type { RenderInput } from "./types.js";
47
3
  import type { TrajectoryData } from "../../composition/reframe/trajectory.js";
48
- /**
49
- * Resolve `Format` (`aspectRatio`, optional `fps` + `resolution`) to
50
- * concrete pixel dimensions. Mirrors the public-composition path's
51
- * `publicFormatDimensions` so a Composition with `format: { aspectRatio:
52
- * "9:16", fps: 30, resolution: "fhd" }` lands at the same 1080×1920
53
- * regardless of which translator the worker traversed.
54
- */
55
4
  export declare function compositionFormatDimensions(format: Format): {
56
5
  width: number;
57
6
  height: number;
58
7
  fps: number;
59
8
  };
60
- /**
61
- * Runtime-validate an untrusted value as a `Composition`. The Temporal
62
- * activity reads `renderJobs.composition` which is stored as
63
- * `v.optional(v.any())` — Convex doesn't enforce shape at read time. A
64
- * schema drift or a manual DB edit could leave a malformed value here,
65
- * and the renderer would crash later in the pipeline with a less
66
- * actionable error.
67
- *
68
- * Returns the validated composition or throws with a specific error
69
- * message. Call this at the activity boundary before passing the
70
- * composition to `compositionToRenderInput`. Pure JS validation — no
71
- * Zod runtime — so this module ships into the Temporal worker without
72
- * dragging the package's Zod surface along.
73
- */
74
9
  export declare function validateComposition(raw: unknown): Composition;
75
- /**
76
- * Given a clip's effective trim window [trimStart, trimEnd] and an
77
- * optional sorted+non-overlapping list of excluded ranges (all in source
78
- * coordinates), return the playable spans in order. Each span is a
79
- * contiguous source range that should render as a sub-clip.
80
- *
81
- * Invariant (enforced upstream): Σ(span.end - span.start) === clip.duration.
82
- */
83
- /** The clip's playable spans (seconds) = [trimStart, trimEnd] minus
84
- * excludedRanges. SSOT for section splitting — exported so the Director derives
85
- * the SAME sections the render uses when it builds structure-first keep-outs. */
86
10
  export declare function playableSpans(trimStart: number, trimEnd: number, excluded: Array<{
87
11
  start: number;
88
12
  end: number;
@@ -90,117 +14,14 @@ export declare function playableSpans(trimStart: number, trimEnd: number, exclud
90
14
  start: number;
91
15
  end: number;
92
16
  }>;
93
- /**
94
- * Every unique mediaId the composition references — the SAME references
95
- * `compositionToRenderInput` resolves through `srcUrls` (any clip whose
96
- * `source.kind === 'media'`, on any track family). Interactive hosts (the
97
- * editor preview) gate on this BEFORE converting: a referenced id without a
98
- * URL yet is a LOADING state there, while the converter's fail-loud throw
99
- * stays correct for export/server paths where every URL must already exist.
100
- * Living next to the converter keeps the two walks from drifting.
101
- */
102
17
  export declare function referencedMediaIds(composition: Composition): string[];
103
- /**
104
- * Every component-REFERENCE `custom` overlay clip, as `clipId → componentId` —
105
- * the SAME references `compositionToRenderInput` resolves through
106
- * `jsSourceByClipId` (bakeless live lane). Clips carrying their own inline
107
- * `params.sourceCode` (desktop-authored customs) need no materialization and
108
- * are excluded. Interactive hosts (the editor preview) gate on this BEFORE
109
- * converting and feed the fetched live `jsSource`s in — the converter's
110
- * fail-loud `custom_missing_sourcecode` throw stays correct for export/server
111
- * paths. Living next to the converter keeps the walks from drifting.
112
- */
113
18
  export declare function componentRefsByClipId(composition: Composition): Record<string, string>;
114
- /**
115
- * Translate a wire-shape `Composition` to a frame-based `RenderInput`.
116
- *
117
- * The output's `durationInFrames` is the max content end across all
118
- * tracks (clips + overlays + effects). An empty composition produces
119
- * an empty RenderInput with duration 0 — caller decides whether that
120
- * should error or render a black frame; we don't make a policy call
121
- * here.
122
- */
123
- export declare function compositionToRenderInput(composition: Composition, srcUrls: Record<string, string>,
124
- /**
125
- * Optional parallel map: `clipId → presigned crop-trajectory JSON URL`
126
- * (keyed PER CLIP since Phase 2 — two clips of one media with different
127
- * framing each carry their own trajectory). Populated by the caller
128
- * (Temporal activity) when the mediaItem has a baked variant for the
129
- * clip's window-qualified (intentHash, aspect). The renderer fetches the
130
- * JSON at composition time and applies a per-frame CSS transform on the
131
- * raw video to produce the cropped output. When unset for a given clipId,
132
- * the renderer plays the raw source un-cropped.
133
- */
134
- trajectoryUrls?: Record<string, string>,
135
- /**
136
- * Optional parallel map: `mediaId → presigned frame-packed co-view URL`
137
- * (scene over matte, one opaque H.264). Populated by the caller for any clip
138
- * whose timeline range overlaps a behind-subject caption window and whose
139
- * matte the gate baked (content-driven, Phase 6). Matte PRESENCE is the gate —
140
- * the render splits it into scene background + subject cut-out for the z-split.
141
- */
142
- coViewUrls?: Record<string, string>,
143
- /**
144
- * Optional parallel map: `clipId → baked-alpha file URL/path` for alpha-layer
145
- * clips (2.6b). The box bake (renderComponentAlpha) writes the transparent
146
- * video; the caller (session daemon / director) threads the path here. The
147
- * renderer mounts it as an alpha overlay at the clip's zPlane.
148
- */
149
- alphaUrls?: Record<string, string>,
150
- /**
151
- * Optional parallel map: `clipId → FRESH transpiled jsSource` for
152
- * component-backed `custom` overlays (bakeless live lane). Materialized per
153
- * render from `installedComponents` (renders.ts) — the live-lane peer of
154
- * `alphaUrls`. The overlay projection prefers it over any stored
155
- * `params.sourceCode`, so a component edit is reflected on the next render
156
- * with no composition re-save.
157
- */
158
- jsSourceByClipId?: Record<string, string>,
159
- /**
160
- * Compound-clip resolution: `compositionId → Composition` for every
161
- * `{kind:'composition'}` source the composition (transitively) embeds.
162
- * Flattening happens HERE, at the one translator every render lane flows
163
- * through, so an embedded sequence renders identically on desktop, cloud
164
- * and still lanes. A compound clip with no entry FAILS LOUD
165
- * (`compound_unresolved`) rather than rendering a deliverable that is
166
- * silently missing a sequence.
167
- */
168
- subCompositions?: Record<string, Composition>,
169
- /**
170
- * Optional parallel map: `clipId → an ALREADY-DERIVED crop trajectory`, the
171
- * in-memory peer of `trajectoryUrls`.
172
- *
173
- * The editor supplies this. `deriveTrajectory` is pure and the subject track
174
- * it reads arrives presigned on the media row, so a preview surface can
175
- * derive exactly what the render will derive — same function, same track,
176
- * same authored reframe — with no round trip and nothing to store. That is
177
- * what lets a follow-the-speaker clip move in the preview instead of only in
178
- * an output someone has already paid for.
179
- *
180
- * Server renders keep using `trajectoryUrls`: their trajectory is written to
181
- * R2 by an action, and inlining a per-frame series would bloat the snapshot.
182
- */
183
- trajectories?: Record<string, TrajectoryData>): RenderInput;
184
- /**
185
- * Assemble a RenderInput from an ALREADY-validated (and brand-ref-resolved)
186
- * composition plus PRE-RESOLVED asset URL maps. This is the pure core shared by
187
- * the director's `resolveRenderEnvironment` (which resolves the URLs with R2/S3
188
- * creds, host-side) AND the in-container session daemon (which is handed the URLs
189
- * and holds no creds). One builder ⇒ render and capture cannot diverge on the
190
- * composition→RenderInput translation.
191
- *
192
- * `fontAssets` (when present) are the host-presigned brand font faces; they are
193
- * attached to the RenderInput's brandKit so the renderer can `@font-face` them.
194
- * The caller does the cred-bound URL/font resolution; this only assembles.
195
- */
19
+ export declare function compositionToRenderInput(composition: Composition, srcUrls: Record<string, string>, trajectoryUrls?: Record<string, string>, coViewUrls?: Record<string, string>, alphaUrls?: Record<string, string>, jsSourceByClipId?: Record<string, string>, subCompositions?: Record<string, Composition>, trajectories?: Record<string, TrajectoryData>): RenderInput;
196
20
  export declare function assembleRenderInput(composition: Composition, resolved: {
197
21
  srcUrls: Record<string, string>;
198
22
  trajectoryUrls?: Record<string, string>;
199
23
  coViewUrls?: Record<string, string>;
200
- /** clipId → baked-alpha file URL/path for alpha-layer clips (2.6b). */
201
24
  alphaUrls?: Record<string, string>;
202
- /** clipId → FRESH transpiled jsSource for component-backed `custom` overlays
203
- * (bakeless live lane; live-lane peer of `alphaUrls`). */
204
25
  jsSourceByClipId?: Record<string, string>;
205
26
  fontAssets?: NonNullable<RenderInput["brandKit"]>["fontAssets"];
206
27
  }): RenderInput;
@@ -1,28 +1,3 @@
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
1
  import type { Face, FaceBox, SubjectTrack } from '../../perception/index.js';
27
2
  export type { Face, FaceBox, SubjectTrack } from '../../perception/index.js';
28
3
  import type { ReframeSegment } from '../../composition/reframe/index.js';
@@ -31,15 +6,7 @@ export { buildEasedZooms, buildPannedCenters, easeOutCubic } from '../../composi
31
6
  import type { TrajectorySubject, TrajectoryData } from '../../composition/reframe/trajectory.js';
32
7
  export type { TrajectorySubject, TrajectorySegment, TrajectoryData } from '../../composition/reframe/trajectory.js';
33
8
  import { type ShotFit } from './vcam/framing.js';
34
- /**
35
- * Normalized area of a face detection — used to rank faces largest-first
36
- * (largest ≈ closest to camera = `face-0` by convention). Mirrors
37
- * reframe_bake.py `_face_area` (width/height path; negatives clamp to 0).
38
- */
39
9
  export declare function faceArea(face: Face): number;
40
- /** The crop subject pick the agent authors on a segment (mirror of the wire
41
- * `cropIntents[].subject`). `active-speaker` is resolved upstream (per
42
- * keyframe) into a concrete `face` before this is consulted. */
43
10
  export type Subject = {
44
11
  kind: 'face';
45
12
  faceId: string;
@@ -54,131 +21,24 @@ export type Subject = {
54
21
  x: number;
55
22
  y: number;
56
23
  };
57
- /**
58
- * Filter the detector's face list by the segment's subject pick:
59
- * - `all-faces` → all faces (cropper fits the union bbox).
60
- * - `frame-center` → [] (cropper centers on the source geometric center).
61
- * - `face` faceId=`face-N` → the face with that STABLE tracker id this frame.
62
- * The roster the agent authors against carries the tracker's stable ids, so
63
- * `face-2` means "that tracked person," NOT "the 3rd-largest face this frame."
64
- * Absent this frame → [] (caller emits no center; EMA forward-fills) rather
65
- * than silently snapping to a DIFFERENT person — the old area-rank +
66
- * out-of-range→largest behavior is exactly what made the crop ping-pong
67
- * between speakers (brain Issue crop-subject-resolved-by-area-rank).
68
- * - The EMPTY-string faceId is a sentinel (the active-speaker degrade, see
69
- * deriveSegment) meaning "no specific subject this frame → largest face."
70
- * Throws on an unknown kind.
71
- *
72
- * NB: the retired Python `reframe_bake._resolve_subject_faces` did area-rank;
73
- * that path is dead (TS is the only live derivation), so there is no drift.
74
- */
75
24
  export declare function resolveSubjectFaces(faces: Face[], subject: Subject): Face[];
76
- /** A normalized crop center `[cx, cy]` in [0,1] vs source dims. */
77
25
  export type Center = [number, number];
78
- /**
79
- * The target crop center from face dets + subject pick. Mirrors
80
- * reframe_bake.py `_selected_face_center`: `frame-center` (and no usable
81
- * selection) → null (caller centers on source); otherwise the area-weighted
82
- * centroid of the selected faces (degenerates to a single face's center).
83
- */
84
26
  export declare function selectedFaceCenter(faces: Face[], subject: Subject): Center | null;
85
- /** Normalized distance beyond which adjacent centers are treated as a shot
86
- * change (hard cut / new angle) and smoothing snaps instead of blending —
87
- * mirror of reframe_bake.py `JUMP_THRESHOLD`. */
88
27
  export declare const JUMP_THRESHOLD = 0.15;
89
- /** Minimum fraction of a segment's frames in which an authored `face` subject
90
- * must actually be tracked. Below this, deriveTrajectory FAILS LOUD instead of
91
- * silently centering the crop — the authored identity isn't really in the clip
92
- * (tracker ID fragmentation). A genuine subject is present for the large
93
- * majority of frames it's framed over; 40% is a generous floor. */
94
28
  export declare const MIN_SUBJECT_RESOLUTION = 0.4;
95
29
  export declare function isJump(a: Center, b: Center): boolean;
96
- /**
97
- * Shot-aware EMA on per-frame centers. Forward-fill nulls with the last-known
98
- * position, then a forward + backward EMA pass, where BOTH passes snap (no
99
- * blend) ONLY across a detector-reported shot cut (`cutFrames`).
100
- *
101
- * Phase 1 (vcam): the `isJump`/`JUMP_THRESHOLD` inference is GONE as a cut
102
- * signal. A center jump is NEVER inferred to be a cut — that inference was the
103
- * false-cut snap (a ByteTrack detection-lag jiggle read as a new shot →
104
- * teleport). Cuts come ONLY from `shotBoundaries`. `isJump`/`JUMP_THRESHOLD`
105
- * remain exported (legacy consumers) but no longer drive smoothing here.
106
- *
107
- * Phase 3 (vcam): the `all-faces` CAMERA-CENTER smoothing is now the deadzone-
108
- * inclusion + Hamming-window stage in `cameraPath` (the camera TRACKS a moving
109
- * group). `emaSmooth` stays for the SEPARABLE non-center use — the per-subject
110
- * `face_box_series` the floor reads (`perSubjectSeries`) — and for the
111
- * UNCHANGED face/active-speaker/frame-center center path (byte-identical to the
112
- * pre-Phase-3 behavior, the mode-isolation invariant). It is NOT used for the
113
- * all-faces centers any more.
114
- */
115
30
  export declare function emaSmooth(centers: (Center | null)[], alpha?: number, cutFrames?: ReadonlySet<number>): Center[];
116
- /** Clamp to [0,1] — mirror of reframe_bake.py `_clip01`. */
117
31
  export declare function clip01(v: number): number;
118
- /** Bottom-band fraction the render keeps clear for captions per aspect.
119
- * CAPTION_BAND_RESERVE is the SSOT in @cueframe/composition (imported above). */
120
32
  export declare function captionBandReserve(aspect: string): number;
121
- /** Output aspect as width/height (e.g. '9:16' → 0.5625). FAILS LOUD on a
122
- * malformed aspect — a silent 9/16 default frames every non-vertical render
123
- * vertically (no-fallbacks rule). Callers pass `composition.format.aspectRatio`,
124
- * which the Composition validator constrains to a known enum, so a throw here
125
- * is a genuine drift/bug, never a user-reachable path. */
126
33
  export declare function aspectWhRatio(aspect: string): number;
127
- /**
128
- * The crop window size (source-normalized) for a given `zoom_scale` + output
129
- * aspect — the bake half of the renderer's `computeCropTransform`: the largest
130
- * output-aspect rect that fits the source, scaled by the zoom (clamped to
131
- * [0.4,1.0] like `bakedZoom`). Shared so the cameraPath deadzone (output-crop
132
- * units) can convert to the source-normalized geometry the regions live in.
133
- */
134
34
  export declare function cropWindowSizeFor(srcW: number, srcH: number, zoomScale: number, aspect: string): {
135
35
  w: number;
136
36
  h: number;
137
37
  };
138
- /** Return the value at the largest key ≤ `key` (fallback to the smallest key
139
- * when none precedes; null when empty) — mirror of `_nearest_kp_value`.
140
- * per-keyframe-speaker is a Map<frameOffset, faceId>. */
141
38
  export declare function nearestKpValue(d: Map<number, string>, key: number): string | null;
142
- /** Contiguous [startFrame, endFrame) ranges where `faceId` is the active
143
- * speaker; adjacent same-speaker spans merge — mirror of `_active_windows_for`.
144
- * Each keyframe pick holds until the next keyframe (last → frameCount). */
145
39
  export declare function activeWindowsFor(faceId: string, perKeyframeSpeaker: Map<number, string>, frameCount: number): Array<[number, number]>;
146
- /**
147
- * Build smoothed per-subject normalized face-box series + active windows from
148
- * the tracker's per-frame `{faceId: [x1,y1,x2,y2]}` (pixel) output. Mirror of
149
- * reframe_bake.py `_per_subject_series`: stable subject order = first
150
- * appearance; centers + sizes EMA-smoothed (alpha 0.35) with the same shot-aware
151
- * reset as the crop centers; frames with no tracked face stay null.
152
- */
153
40
  export declare function perSubjectSeries(perFrameTracked: Array<Record<string, FaceBox>>, srcW: number, srcH: number, perKeyframeSpeaker: Map<number, string>, frameCount: number, cutFrames?: ReadonlySet<number>): TrajectorySubject[];
154
- /** §22.1 target face-height fraction of the OUTPUT per editorial shot scale
155
- * (mirror of reframe_bake.py `_SHOT_SCALE_TARGET`). */
156
- /**
157
- * §22.1 (Phase 4): calibrate ZOOM to the DETECTED face for an editorial shot
158
- * scale. zoom = median(face_h_px)/fit_h / target, clamped [ZOOM_MIN, ZOOM_MAX].
159
- * shotScale seeds ZOOM ONLY — verticalBias (headroom) is the agent's AUTHORED
160
- * value, passed through verbatim; it is NEVER overridden here (the floor-vision
161
- * fix). When the authored fields are omitted: zoom defaults to 1.0 (frame as-is)
162
- * and headroom to 0 (dead-center, never auto-applied). Falls back to the authored
163
- * zoom/bias when shotScale is unset or no face was detected.
164
- *
165
- * The target table + the clamp live in @cueframe/composition/reframe/shotScale —
166
- * the SAME module the plan-time punch-in guard reads, so a shotScale the guard
167
- * admitted and the zoom this bakes can never disagree. Do NOT re-declare them here.
168
- *
169
- * NOTE this honors whatever shotScale reaches it. Whether the punch-in was EARNED
170
- * (is there room around the face? pixels to magnify?) is decided at the plan, by
171
- * `punchInWarrant` in that same module. A shotScale arriving here that the warrant
172
- * would refuse is a bug in the guard, not something to re-check.
173
- */
174
41
  export declare function calibrateShotScale(shotScale: string | undefined | null, subjects: TrajectorySubject[], srcW: number, srcH: number, aspect: string, fallbackZoom: number | undefined, fallbackVbias: number | undefined, authoredSubject?: Subject): [number, number];
175
- /**
176
- * Derive ONE segment's per-frame crop centers + per-subject series from a
177
- * segment-local slice of the cached track. Mirror of the STAGE B half of
178
- * reframe_bake.py `_bake_segment` (steps 4–7): per-frame subject filter
179
- * (active-speaker uses the nearest keyframe pick; otherwise largest/face-N) →
180
- * shot-aware EMA (alpha 0.35) → holes land at [0.5,0.5] → per-subject series.
181
- */
182
42
  export declare function deriveSegment(perFrameTracked: Array<Record<string, FaceBox>>, srcW: number, srcH: number, perKeyframeSpeaker: Map<number, string>, subject: Subject, cutFrames?: ReadonlySet<number>, fps?: number, aspect?: string, zoomScale?: number): {
183
43
  centers: Center[];
184
44
  subjects: TrajectorySubject[];
@@ -3,11 +3,5 @@ export interface EmphasisWord {
3
3
  sourceStart: number;
4
4
  sourceEnd: number;
5
5
  }
6
- /**
7
- * Build a Set keyed by "poolItemId:sourceStart" for O(1) emphasis lookups.
8
- * sourceStart is rounded to 3 decimal places to handle floating-point drift
9
- * between transcript sources and stored emphasis data.
10
- */
11
6
  export declare function buildEmphasisSet(emphasisWords: EmphasisWord[]): Set<string>;
12
- /** Check if a word (by poolItemId + sourceStart) is in the emphasis set. */
13
7
  export declare function isEmphasized(set: Set<string>, poolItemId: string, sourceStart: number): boolean;
@@ -1,87 +1,18 @@
1
- /**
2
- * Reframe eval — the COMPOSED crop box per output frame.
3
- *
4
- * The eval target is the crop box the camera ACTUALLY lands on, in
5
- * output-crop-normalized space — NOT the raw `centers`/`zoom_scale` of the
6
- * trajectory JSON. Per the virtual-camera spec ("the composed (post-floor) crop
7
- * is the eval target … zoom is two-layer"), the jitter / center-crop metrics
8
- * sample the box `computeCropTransform` produces, so they measure what ships.
9
- *
10
- * Phase 0 samples the BASE camera path (the trajectory) — the floor yield is a
11
- * separate, caption-driven layer with its own golden (Phase 4). The geometry
12
- * below is the bake half of `computeCropTransform`
13
- * (packages/execution/render-entry/src/CropFromTrajectory.tsx): crop-window size from
14
- * `zoom_scale`, center from the per-frame `centers`, coverage-clamped so the
15
- * window never runs past the source edge. We replicate it here (rather than
16
- * import the renderer — execution must not depend on the Remotion bundle) and a
17
- * test pins this replica against the renderer's published clamp behavior.
18
- *
19
- * Coordinate system: the crop box is expressed in SOURCE-NORMALIZED units —
20
- * `cx,cy` ∈ [0,1] (window center vs source dims) and `w,h` ∈ [0,1] (window size
21
- * as a fraction of the source). Frame-to-frame motion of THIS box is the camera
22
- * motion; normalizing the per-component delta by the box's own size converts it
23
- * to output-crop-normalized units (a half-window pan is the same number at any
24
- * zoom — the zoom-invariant "held feel" the spec requires).
25
- */
26
1
  import type { TrajectoryData, TrajectorySegment } from '../../../composition/reframe/trajectory.js';
27
- /** The composed crop window for one output frame, source-normalized. */
28
2
  export interface CropBox {
29
- /** Window center x ∈ [0,1] vs source width (after the coverage clamp). */
30
3
  cx: number;
31
- /** Window center y ∈ [0,1] vs source height (after the coverage clamp). */
32
4
  cy: number;
33
- /** Window width as a fraction of the source width ∈ (0,1]. */
34
5
  w: number;
35
- /** Window height as a fraction of the source height ∈ (0,1]. */
36
6
  h: number;
37
7
  }
38
- /**
39
- * Crop-window dimensions (source-normalized) for a given `zoom_scale` + output
40
- * aspect — the bake half of `computeCropTransform`. The largest output-aspect
41
- * rect that fits the source, scaled by the clamped zoom. No `faceScale` (the
42
- * floor's caption-band yield) is applied here — Phase 0 samples the base path.
43
- */
44
8
  export declare function cropWindowSize(srcW: number, srcH: number, zoomScale: number, aspect: string): {
45
9
  w: number;
46
10
  h: number;
47
11
  };
48
- /** The composed crop box for one frame of one segment. */
49
12
  export declare function cropBoxForFrame(seg: TrajectorySegment, frameInSeg: number, srcW: number, srcH: number, aspect: string): CropBox;
50
- /**
51
- * Flatten a `TrajectoryData` to the per-output-frame composed crop-box series
52
- * over all its segments, in order. This is the series the jitter metric walks.
53
- */
54
13
  export declare function cropBoxSeries(traj: TrajectoryData): CropBox[];
55
- /**
56
- * The STATIC center-crop baseline a content-aware reframe MUST beat on
57
- * smoothness: the same per-segment `zoom_scale` (so the only variable is WHERE
58
- * the camera points), but the center pinned to source-center every frame
59
- * (coverage-clamped, which for a centered window is a no-op). A static crop has
60
- * zero pan jitter by construction — its only frame-to-frame motion is the
61
- * per-shot `zoom_scale` steps the algorithm itself authors. The reframe is
62
- * "adding jitter for nothing" if it cannot beat THIS.
63
- */
64
14
  export declare function centerCropBoxSeries(traj: TrajectoryData): CropBox[];
65
- /**
66
- * The RAW subject-centroid path baseline (the research bar): the per-frame
67
- * `centers` the algorithm computed, BEFORE any smoothing/deadzone, composed into
68
- * a crop box at the same per-segment zoom. A reframe must be SMOOTHER than the
69
- * path it is smoothing. Phase 0 cannot reconstruct the pre-EMA centroid from the
70
- * shipped trajectory (it only carries the smoothed `centers`), so this is a
71
- * scaffold that returns the shipped centers; Phase 3 wires the true raw path via
72
- * `eval/inclusion` + `eval/index` (keeping `emaSmooth` importable, per the
73
- * spec's characterization gate).
74
- */
75
15
  export declare function rawCentroidBoxSeries(traj: TrajectoryData): CropBox[];
76
- /**
77
- * Compose an arbitrary per-frame `centers` series (e.g. the raw tracking
78
- * centroid, or the same centroid through the OLD `emaSmooth`) into a crop-box
79
- * series at a fixed per-frame crop window — the Phase-3 "smoother than EMA"
80
- * characterization baseline. `cropFor(frame)` gives the source-normalized window
81
- * for that output frame (the same the shipping path uses), so the ONLY variable
82
- * between ours and the baseline is the smoother. Centers are coverage-clamped
83
- * exactly as the renderer clamps them.
84
- */
85
16
  export declare function cropBoxSeriesFromCenters(centers: Array<[number, number]>, cropFor: (frame: number) => {
86
17
  w: number;
87
18
  h: number;